Commit c5ef0c60bff41f53b98091fefb24517a4abc038a

Authored by Dmitriy Zaporozhets
2 parents 9dfc4fe6 c608a5dc

Merge branch 'improve-admin-projects-page' into 'master'

Improve admin projects page

Add dropdown for project sorting
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|