Commit f17ddeb394ced4322f9b29eada92d5086bdef03b

Authored by Dmitriy Zaporozhets
1 parent 552b3105

Make admin project list more useful

app/assets/stylesheets/gitlab_bootstrap/typography.scss
... ... @@ -77,3 +77,7 @@ a {
77 77 a:focus {
78 78 outline: none;
79 79 }
  80 +
  81 +.monospace {
  82 + font-family: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono','lucida console',monospace;
  83 +}
... ...
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"
... ...