Commit 6eb045fc98f02a54b5db37ff2a43b008fe971158
1 parent
52f312a8
Exists in
master
and in
4 other branches
Prevent Project.all & User.all in selectboxes
Showing
5 changed files
with
18 additions
and
15 deletions
Show diff stats
app/assets/stylesheets/selects.scss
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 | ... | ... |