From c608a5dceab0a5fa2df8286d5808091f2517d4ab Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 2 May 2014 17:02:57 +0300 Subject: [PATCH] Add sort dropdown for admin projects page --- app/controllers/admin/projects_controller.rb | 1 + app/models/project.rb | 1 + app/views/admin/projects/index.html.haml | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+), 0 deletions(-) diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index 13a7bdc..92ef596 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -12,6 +12,7 @@ class Admin::ProjectsController < Admin::ApplicationController @projects = @projects.with_push if params[:with_push].present? @projects = @projects.abandoned if params[:abandoned].present? @projects = @projects.search(params[:name]) if params[:name].present? + @projects = @projects.sort(@sort = params[:sort]) @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20) end diff --git a/app/models/project.rb b/app/models/project.rb index 45aeace..7ddcc73 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -203,6 +203,7 @@ class Project < ActiveRecord::Base when 'oldest' then reorder('projects.created_at ASC') when 'recently_updated' then reorder('projects.updated_at DESC') when 'last_updated' then reorder('projects.updated_at ASC') + when 'largest_repository' then reorder('projects.repository_size DESC') else reorder("namespaces.path, projects.name ASC") end end diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml index 296094a..51ad702 100644 --- a/app/views/admin/projects/index.html.haml +++ b/app/views/admin/projects/index.html.haml @@ -32,6 +32,7 @@ = visibility_level_icon(level) = label .form-actions + = hidden_field_tag :sort, params[:sort] = submit_tag "Search", class: "btn submit btn-primary" = link_to "Reset", admin_projects_path, class: "btn" @@ -40,6 +41,28 @@ .title Projects (#{@projects.total_count}) .pull-right + .dropdown.inline + %a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"} + %span.light sort: + - if @sort.present? + = @sort.humanize + - else + Name + %b.caret + %ul.dropdown-menu + %li + = link_to admin_projects_path(sort: nil) do + Name + = link_to admin_projects_path(sort: 'newest') do + Newest + = link_to admin_projects_path(sort: 'oldest') do + Oldest + = link_to admin_projects_path(sort: 'recently_updated') do + Recently updated + = link_to admin_projects_path(sort: 'last_updated') do + Last updated + = link_to admin_projects_path(sort: 'largest_repository') do + Largest repository = link_to 'New Project', new_project_path, class: "btn btn-new" %ul.well-list - @projects.each do |project| -- libgit2 0.21.2