Commit 6eb045fc98f02a54b5db37ff2a43b008fe971158

Authored by Dmitriy Zaporozhets
1 parent 52f312a8

Prevent Project.all & User.all in selectboxes

app/assets/stylesheets/selects.scss
... ... @@ -10,6 +10,10 @@
10 10  
11 11 .ajax-users-select {
12 12 width: 400px;
  13 +
  14 + &.input-large {
  15 + width: 210px;
  16 + }
13 17 }
14 18  
15 19 .user-result {
... ...
app/controllers/admin/projects_controller.rb
... ... @@ -2,8 +2,10 @@ class Admin::ProjectsController < Admin::ApplicationController
2 2 before_filter :project, only: [:edit, :show, :update, :destroy, :team_update]
3 3  
4 4 def index
5   - @projects = Project.scoped
6   - @projects = @projects.where(namespace_id: params[:namespace_id]) if params[:namespace_id].present?
  5 + owner_id = params[:owner_id]
  6 + user = User.find_by_id(owner_id)
  7 +
  8 + @projects = user ? user.owned_projects : Project.scoped
7 9 @projects = @projects.where(public: true) if params[:public_only].present?
8 10 @projects = @projects.with_push if params[:with_push].present?
9 11 @projects = @projects.abandoned if params[:abandoned].present?
... ...
app/helpers/application_helper.rb
... ... @@ -192,9 +192,12 @@ module ApplicationHelper
192 192 alias_method :url_to_image, :image_url
193 193  
194 194 def users_select_tag(id, opts = {})
195   - css_class = "ajax-users-select"
196   - css_class << " multiselect" if opts[:multiple]
197   - hidden_field_tag(id, '', class: css_class)
  195 + css_class = "ajax-users-select "
  196 + css_class << "multiselect " if opts[:multiple]
  197 + css_class << opts[:class] || ''
  198 + value = opts[:selected] || ''
  199 +
  200 + hidden_field_tag(id, value, class: css_class)
198 201 end
199 202  
200 203 def body_data_page
... ...
app/helpers/namespaces_helper.rb
1 1 module NamespacesHelper
2 2 def namespaces_options(selected = :current_user, scope = :default)
3   - if current_user.admin
4   - groups = Group.all
5   - users = Namespace.root
6   - else
7   - groups = current_user.owned_groups.select {|n| n.type == 'Group'}
8   - users = current_user.namespaces.reject {|n| n.type == 'Group'}
9   - end
10   -
  3 + groups = current_user.owned_groups.select {|n| n.type == 'Group'}
  4 + users = current_user.namespaces.reject {|n| n.type == 'Group'}
11 5  
12 6 global_opts = ["Global", [['/', Namespace.global_id]] ]
13 7 group_opts = ["Groups", groups.sort_by(&:human_name).map {|g| [g.human_name, g.id]} ]
... ...
app/views/admin/projects/index.html.haml
... ... @@ -14,9 +14,9 @@
14 14 = text_field_tag :name, params[:name], class: "span2"
15 15  
16 16 .control-group
17   - = label_tag :namespace_id, 'Namespace:', class: 'control-label'
  17 + = label_tag :owner_id, 'Owner:', class: 'control-label'
18 18 .controls
19   - = select_tag :namespace_id, namespaces_options(params[:namespace_id], :all), class: "chosen span2", prompt: "Any"
  19 + = users_select_tag :owner_id, selected: params[:owner_id], class: 'input-large'
20 20 .control-group
21 21 = label_tag :public_only, 'Public Only', class: 'control-label'
22 22 .controls
... ...