Commit c5ef0c60bff41f53b98091fefb24517a4abc038a
Exists in
spb-stable
and in
2 other branches
Merge branch 'improve-admin-projects-page' into 'master'
Improve admin projects page Add dropdown for project sorting
Showing
3 changed files
with
25 additions
and
0 deletions
Show diff stats
app/controllers/admin/projects_controller.rb
@@ -12,6 +12,7 @@ class Admin::ProjectsController < Admin::ApplicationController | @@ -12,6 +12,7 @@ class Admin::ProjectsController < Admin::ApplicationController | ||
12 | @projects = @projects.with_push if params[:with_push].present? | 12 | @projects = @projects.with_push if params[:with_push].present? |
13 | @projects = @projects.abandoned if params[:abandoned].present? | 13 | @projects = @projects.abandoned if params[:abandoned].present? |
14 | @projects = @projects.search(params[:name]) if params[:name].present? | 14 | @projects = @projects.search(params[:name]) if params[:name].present? |
15 | + @projects = @projects.sort(@sort = params[:sort]) | ||
15 | @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20) | 16 | @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20) |
16 | end | 17 | end |
17 | 18 |
app/models/project.rb
@@ -203,6 +203,7 @@ class Project < ActiveRecord::Base | @@ -203,6 +203,7 @@ class Project < ActiveRecord::Base | ||
203 | when 'oldest' then reorder('projects.created_at ASC') | 203 | when 'oldest' then reorder('projects.created_at ASC') |
204 | when 'recently_updated' then reorder('projects.updated_at DESC') | 204 | when 'recently_updated' then reorder('projects.updated_at DESC') |
205 | when 'last_updated' then reorder('projects.updated_at ASC') | 205 | when 'last_updated' then reorder('projects.updated_at ASC') |
206 | + when 'largest_repository' then reorder('projects.repository_size DESC') | ||
206 | else reorder("namespaces.path, projects.name ASC") | 207 | else reorder("namespaces.path, projects.name ASC") |
207 | end | 208 | end |
208 | end | 209 | end |
app/views/admin/projects/index.html.haml
@@ -32,6 +32,7 @@ | @@ -32,6 +32,7 @@ | ||
32 | = visibility_level_icon(level) | 32 | = visibility_level_icon(level) |
33 | = label | 33 | = label |
34 | .form-actions | 34 | .form-actions |
35 | + = hidden_field_tag :sort, params[:sort] | ||
35 | = submit_tag "Search", class: "btn submit btn-primary" | 36 | = submit_tag "Search", class: "btn submit btn-primary" |
36 | = link_to "Reset", admin_projects_path, class: "btn" | 37 | = link_to "Reset", admin_projects_path, class: "btn" |
37 | 38 | ||
@@ -40,6 +41,28 @@ | @@ -40,6 +41,28 @@ | ||
40 | .title | 41 | .title |
41 | Projects (#{@projects.total_count}) | 42 | Projects (#{@projects.total_count}) |
42 | .pull-right | 43 | .pull-right |
44 | + .dropdown.inline | ||
45 | + %a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"} | ||
46 | + %span.light sort: | ||
47 | + - if @sort.present? | ||
48 | + = @sort.humanize | ||
49 | + - else | ||
50 | + Name | ||
51 | + %b.caret | ||
52 | + %ul.dropdown-menu | ||
53 | + %li | ||
54 | + = link_to admin_projects_path(sort: nil) do | ||
55 | + Name | ||
56 | + = link_to admin_projects_path(sort: 'newest') do | ||
57 | + Newest | ||
58 | + = link_to admin_projects_path(sort: 'oldest') do | ||
59 | + Oldest | ||
60 | + = link_to admin_projects_path(sort: 'recently_updated') do | ||
61 | + Recently updated | ||
62 | + = link_to admin_projects_path(sort: 'last_updated') do | ||
63 | + Last updated | ||
64 | + = link_to admin_projects_path(sort: 'largest_repository') do | ||
65 | + Largest repository | ||
43 | = link_to 'New Project', new_project_path, class: "btn btn-new" | 66 | = link_to 'New Project', new_project_path, class: "btn btn-new" |
44 | %ul.well-list | 67 | %ul.well-list |
45 | - @projects.each do |project| | 68 | - @projects.each do |project| |