Commit f17ddeb394ced4322f9b29eada92d5086bdef03b
1 parent
552b3105
Exists in
master
and in
4 other branches
Make admin project list more useful
Showing
6 changed files
with
30 additions
and
8 deletions
Show diff stats
app/assets/stylesheets/gitlab_bootstrap/typography.scss
app/controllers/admin/projects_controller.rb
| ... | ... | @@ -3,8 +3,9 @@ class Admin::ProjectsController < AdminController |
| 3 | 3 | |
| 4 | 4 | def index |
| 5 | 5 | @projects = Project.scoped |
| 6 | + @projects = @projects.where(namespace_id: params[:namespace_id]) if params[:namespace_id].present? | |
| 6 | 7 | @projects = @projects.search(params[:name]) if params[:name].present? |
| 7 | - @projects = @projects.order("name ASC").page(params[:page]).per(20) | |
| 8 | + @projects = @projects.includes(:namespace).order("namespaces.code, projects.name ASC").page(params[:page]).per(20) | |
| 8 | 9 | end |
| 9 | 10 | |
| 10 | 11 | def show | ... | ... |
app/helpers/application_helper.rb
| ... | ... | @@ -74,16 +74,25 @@ module ApplicationHelper |
| 74 | 74 | grouped_options_for_select(options, @ref || @project.default_branch) |
| 75 | 75 | end |
| 76 | 76 | |
| 77 | - def namespaces_options | |
| 77 | + def namespaces_options(selected = :current_user, scope = :default) | |
| 78 | 78 | groups = current_user.namespaces.select {|n| n.type == 'Group'} |
| 79 | - users = current_user.namespaces.reject {|n| n.type == 'Group'} | |
| 79 | + | |
| 80 | + users = if scope == :all | |
| 81 | + Namespace.root | |
| 82 | + else | |
| 83 | + current_user.namespaces.reject {|n| n.type == 'Group'} | |
| 84 | + end | |
| 80 | 85 | |
| 81 | 86 | options = [ |
| 82 | 87 | ["Groups", groups.map {|g| [g.human_name, g.id]} ], |
| 83 | 88 | [ "Users", users.map {|u| [u.human_name, u.id]} ] |
| 84 | 89 | ] |
| 85 | 90 | |
| 86 | - grouped_options_for_select(options, current_user.namespace.id) | |
| 91 | + if selected == :current_user | |
| 92 | + selected = current_user.namespace.id | |
| 93 | + end | |
| 94 | + | |
| 95 | + grouped_options_for_select(options, selected) | |
| 87 | 96 | end |
| 88 | 97 | |
| 89 | 98 | def search_autocomplete_source | ... | ... |
app/models/namespace.rb
| ... | ... | @@ -10,6 +10,8 @@ class Namespace < ActiveRecord::Base |
| 10 | 10 | |
| 11 | 11 | delegate :name, to: :owner, allow_nil: true, prefix: true |
| 12 | 12 | |
| 13 | + scope :root, where('type IS NULL') | |
| 14 | + | |
| 13 | 15 | def self.search query |
| 14 | 16 | where("name LIKE :query OR code LIKE :query", query: "%#{query}%") |
| 15 | 17 | end | ... | ... |
app/models/project.rb
| ... | ... | @@ -80,7 +80,7 @@ class Project < ActiveRecord::Base |
| 80 | 80 | end |
| 81 | 81 | |
| 82 | 82 | def search query |
| 83 | - where("name LIKE :query OR code LIKE :query OR path LIKE :query", query: "%#{query}%") | |
| 83 | + where("projects.name LIKE :query OR projects.code LIKE :query OR projects.path LIKE :query", query: "%#{query}%") | |
| 84 | 84 | end |
| 85 | 85 | |
| 86 | 86 | def create_by_user(params, user) | ... | ... |
app/views/admin/projects/index.html.haml
| ... | ... | @@ -4,13 +4,14 @@ |
| 4 | 4 | = link_to 'New Project', new_project_path, class: "btn small right" |
| 5 | 5 | %br |
| 6 | 6 | = form_tag admin_projects_path, method: :get, class: 'form-inline' do |
| 7 | + = select_tag :namespace_id, namespaces_options(params[:namespace_id], :all), class: "chosen xlarge", include_blank: true | |
| 7 | 8 | = text_field_tag :name, params[:name], class: "xlarge" |
| 8 | 9 | = submit_tag "Search", class: "btn submit primary" |
| 9 | 10 | |
| 10 | 11 | %table |
| 11 | 12 | %thead |
| 12 | 13 | %th Name |
| 13 | - %th Path | |
| 14 | + %th Project | |
| 14 | 15 | %th Team Members |
| 15 | 16 | %th Last Commit |
| 16 | 17 | %th Edit |
| ... | ... | @@ -18,8 +19,13 @@ |
| 18 | 19 | |
| 19 | 20 | - @projects.each do |project| |
| 20 | 21 | %tr |
| 21 | - %td= link_to project.name, [:admin, project] | |
| 22 | - %td= project.path | |
| 22 | + %td | |
| 23 | + - if project.namespace | |
| 24 | + = link_to project.namespace.human_name, [:admin, project] | |
| 25 | + → | |
| 26 | + = link_to project.name, [:admin, project] | |
| 27 | + %td | |
| 28 | + %span.monospace= project.path_with_namespace + ".git" | |
| 23 | 29 | %td= project.users_projects.count |
| 24 | 30 | %td= last_commit(project) |
| 25 | 31 | %td= link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn small" | ... | ... |