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| |