Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/dashboard_controller.rb8
-rw-r--r--app/controllers/public/projects_controller.rb9
-rw-r--r--app/helpers/dashboard_helper.rb14
-rw-r--r--app/helpers/tab_helper.rb7
-rw-r--r--app/models/project.rb10
-rw-r--r--app/views/dashboard/projects.html.haml38
6 files changed, 65 insertions, 21 deletions
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index 78456995b3b..27955c62488 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -41,13 +41,13 @@ class DashboardController < ApplicationController
@projects = @projects.where(namespace_id: Group.find_by_name(params[:group])) if params[:group].present?
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
- @projects = @projects.includes(:namespace).sorted_by_activity
+ @projects = @projects.includes(:namespace)
+ @projects = @projects.tagged_with(params[:label]) if params[:label].present?
+ @projects = @projects.sort(@sort = params[:sort])
+ @projects = @projects.page(params[:page]).per(30)
@labels = current_user.authorized_projects.tags_on(:labels)
@groups = current_user.authorized_groups
-
- @projects = @projects.tagged_with(params[:label]) if params[:label].present?
- @projects = @projects.page(params[:page]).per(30)
end
def merge_requests
diff --git a/app/controllers/public/projects_controller.rb b/app/controllers/public/projects_controller.rb
index e00cd8c7f84..d7297161c22 100644
--- a/app/controllers/public/projects_controller.rb
+++ b/app/controllers/public/projects_controller.rb
@@ -8,14 +8,7 @@ class Public::ProjectsController < ApplicationController
def index
@projects = Project.public_or_internal_only(current_user)
@projects = @projects.search(params[:search]) if params[:search].present?
- @sort = params[:sort]
- @projects = case @sort
- when 'newest' then @projects.order('created_at DESC')
- when 'oldest' then @projects.order('created_at ASC')
- when 'recently_updated' then @projects.order('updated_at DESC')
- when 'last_updated' then @projects.order('updated_at ASC')
- else @projects.order("namespaces.path, projects.name ASC")
- end
+ @projects = @projects.sort(@sort = params[:sort])
@projects = @projects.includes(:namespace).page(params[:page]).per(20)
end
end
diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb
index d93eac407b7..7f86a833cb0 100644
--- a/app/helpers/dashboard_helper.rb
+++ b/app/helpers/dashboard_helper.rb
@@ -21,4 +21,18 @@ module DashboardHelper
[]
end.count
end
+
+ def projects_dashboard_filter_path(options={})
+ exist_opts = {
+ sort: params[:sort],
+ scope: params[:scope],
+ group: params[:group],
+ }
+
+ options = exist_opts.merge(options)
+
+ path = request.path
+ path << "?#{options.to_param}"
+ path
+ end
end
diff --git a/app/helpers/tab_helper.rb b/app/helpers/tab_helper.rb
index ce675872264..bd373c5f3cf 100644
--- a/app/helpers/tab_helper.rb
+++ b/app/helpers/tab_helper.rb
@@ -92,7 +92,12 @@ module TabHelper
def nav_tab key, value, &block
o = {}
o[:class] = ""
- o[:class] << " active" if params[key] == value
+
+ if value.nil?
+ o[:class] << " active" if params[key].blank?
+ else
+ o[:class] << " active" if params[key] == value
+ end
if block_given?
content_tag(:li, capture(&block), o)
diff --git a/app/models/project.rb b/app/models/project.rb
index 93aac1abf6d..a55f7a65b0b 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -153,6 +153,16 @@ class Project < ActiveRecord::Base
def visibility_levels
Gitlab::VisibilityLevel.options
end
+
+ def sort(method)
+ case method.to_s
+ when 'newest' then reorder('projects.created_at DESC')
+ 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')
+ else reorder("namespaces.path, projects.name ASC")
+ end
+ end
end
def team
diff --git a/app/views/dashboard/projects.html.haml b/app/views/dashboard/projects.html.haml
index 96917c39b55..c59d5aee0ac 100644
--- a/app/views/dashboard/projects.html.haml
+++ b/app/views/dashboard/projects.html.haml
@@ -1,4 +1,26 @@
-%h3.page-title My Projects
+%h3.page-title
+ My Projects
+.pull-right
+ .dropdown.inline
+ %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
+ %span.light sort:
+ - if @sort.present?
+ = @sort.humanize
+ - else
+ Name
+ %b.caret
+ %ul.dropdown-menu
+ %li
+ = link_to projects_dashboard_filter_path(sort: nil) do
+ Name
+ = link_to projects_dashboard_filter_path(sort: 'newest') do
+ Newest
+ = link_to projects_dashboard_filter_path(sort: 'oldest') do
+ Oldest
+ = link_to projects_dashboard_filter_path(sort: 'recently_updated') do
+ Recently updated
+ = link_to projects_dashboard_filter_path(sort: 'last_updated') do
+ Last updated
%p.light
All projects you have access to are listed here. Public projects are not included here unless you are a member
%hr
@@ -6,22 +28,22 @@
.span3
%ul.nav.nav-pills.nav-stacked
= nav_tab :scope, nil do
- = link_to projects_dashboard_path do
+ = link_to projects_dashboard_filter_path(scope: nil) do
All
%span.pull-right
= current_user.authorized_projects.count
= nav_tab :scope, 'personal' do
- = link_to projects_dashboard_path(scope: 'personal') do
+ = link_to projects_dashboard_filter_path(scope: 'personal') do
Personal
%span.pull-right
= current_user.personal_projects.count
= nav_tab :scope, 'joined' do
- = link_to projects_dashboard_path(scope: 'joined') do
+ = link_to projects_dashboard_filter_path(scope: 'joined') do
Joined
%span.pull-right
= current_user.authorized_projects.joined(current_user).count
= nav_tab :scope, 'owned' do
- = link_to projects_dashboard_path(scope: 'owned') do
+ = link_to projects_dashboard_filter_path(scope: 'owned') do
Owned
%span.pull-right
= current_user.owned_projects.count
@@ -31,7 +53,7 @@
%ul.bordered-list.visibility-filter
- Gitlab::VisibilityLevel.values.each do |level|
%li{ class: (level.to_s == params[:visibility_level]) ? 'active' : 'light' }
- = link_to projects_dashboard_path(visibility_level: level) do
+ = link_to projects_dashboard_filter_path(visibility_level: level) do
= visibility_level_icon(level)
= visibility_level_label(level)
@@ -41,7 +63,7 @@
%ul.bordered-list
- @groups.each do |group|
%li{ class: (group.name == params[:group]) ? 'active' : 'light' }
- = link_to projects_dashboard_path(group: group.name) do
+ = link_to projects_dashboard_filter_path(group: group.name) do
%i.icon-folder-close-alt
= group.name
%small.pull-right
@@ -55,7 +77,7 @@
%ul.bordered-list
- @labels.each do |label|
%li{ class: (label.name == params[:label]) ? 'active' : 'light' }
- = link_to projects_dashboard_path(scope: params[:scope], label: label.name) do
+ = link_to projects_dashboard_filter_path(scope: params[:scope], label: label.name) do
%i.icon-tag
= label.name