From f9eda9b33a72cae91e51c5733fdf2c0d7b37d149 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 2 Oct 2012 19:37:53 +0300 Subject: [PATCH] Group filtering on dashboard --- app/controllers/dashboard_controller.rb | 20 ++++++++++++++++++-- app/views/admin/groups/index.html.haml | 4 ++-- app/views/dashboard/_groups.html.haml | 15 +++++++++++++++ app/views/dashboard/_projects.html.haml | 21 +++++++++++++++++++++ app/views/dashboard/index.html.haml | 25 +++---------------------- app/views/layouts/group.html.haml | 24 ++++++++++++++++++++++++ 6 files changed, 83 insertions(+), 26 deletions(-) create mode 100644 app/views/dashboard/_groups.html.haml create mode 100644 app/views/dashboard/_projects.html.haml create mode 100644 app/views/layouts/group.html.haml diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 7696e97..75cf726 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -2,12 +2,22 @@ class DashboardController < ApplicationController respond_to :html def index - @projects = current_user.projects_with_events.page(params[:page]).per(40) + @groups = Group.where(id: current_user.projects.pluck(:group_id)) + + @projects = current_user.projects_with_events + + if params[:group].present? + @group = Group.find_by_code(params[:group]) + @projects = @projects.where(group_id: @group.id) + end + + @projects = @projects.page(params[:page]).per(40) + @events = Event.recent_for_user(current_user).limit(20).offset(params[:offset] || 0) @last_push = current_user.recent_push respond_to do |format| - format.html + format.html { render 'index', layout: determine_layout } format.js format.atom { render layout: false } end @@ -31,4 +41,10 @@ class DashboardController < ApplicationController format.atom { render layout: false } end end + + protected + + def determine_layout + @group ? 'group' : 'application' + end end diff --git a/app/views/admin/groups/index.html.haml b/app/views/admin/groups/index.html.haml index b90efc8..6952c4c 100644 --- a/app/views/admin/groups/index.html.haml +++ b/app/views/admin/groups/index.html.haml @@ -9,7 +9,7 @@ %table %thead %th Name - %th Path + %th Code %th Projects %th Edit %th.cred Danger Zone! @@ -17,7 +17,7 @@ - @groups.each do |group| %tr %td= link_to group.name, [:admin, group] - %td= group.path + %td= group.code %td= group.projects.count %td= link_to 'Edit', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small" %td.bgred= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger" diff --git a/app/views/dashboard/_groups.html.haml b/app/views/dashboard/_groups.html.haml new file mode 100644 index 0000000..b46f675 --- /dev/null +++ b/app/views/dashboard/_groups.html.haml @@ -0,0 +1,15 @@ +.projects_box + %h5 + Groups + %small + (#{groups.count}) + %ul.unstyled + - groups.each do |group| + %li.wll + = link_to dashboard_path(group: group), class: dom_class(group) do + %strong.group_name= truncate(group.name, length: 25) + %span.arrow + → + %span.last_activity + %strong Projects: + %span= group.projects.count diff --git a/app/views/dashboard/_projects.html.haml b/app/views/dashboard/_projects.html.haml new file mode 100644 index 0000000..00f19cc --- /dev/null +++ b/app/views/dashboard/_projects.html.haml @@ -0,0 +1,21 @@ +.projects_box + %h5 + Projects + %small + (#{projects.total_count}) + - if current_user.can_create_project? + %span.right + = link_to new_project_path, class: "btn very_small info" do + %i.icon-plus + New Project + %ul.unstyled + - projects.each do |project| + %li.wll + = link_to project_path(project), class: dom_class(project) do + %strong.project_name= truncate(project.name, length: 25) + %span.arrow + → + %span.last_activity + %strong Last activity: + %span= project_last_activity(project) + .bottom= paginate projects, theme: "gitlab" diff --git a/app/views/dashboard/index.html.haml b/app/views/dashboard/index.html.haml index 791c18e..aa53ebf 100644 --- a/app/views/dashboard/index.html.haml +++ b/app/views/dashboard/index.html.haml @@ -9,28 +9,9 @@ .loading.hide .side = render "events/event_last_push", event: @last_push - .projects_box - %h5 - Projects - %small - (#{@projects.total_count}) - - if current_user.can_create_project? - %span.right - = link_to new_project_path, class: "btn very_small info" do - %i.icon-plus - New Project - %ul.unstyled - - @projects.each do |project| - %li.wll - = link_to project_path(project), class: dom_class(project) do - %strong.project_name= truncate(project.name, length: 25) - %span.arrow - → - %span.last_activity - %strong Last activity: - %span= project_last_activity(project) - .bottom= paginate @projects, theme: "gitlab" - + - unless @group + = render "groups", groups: @groups + = render "projects", projects: @projects %div %span.rss-icon = link_to dashboard_path(:atom, { private_token: current_user.private_token }) do diff --git a/app/views/layouts/group.html.haml b/app/views/layouts/group.html.haml new file mode 100644 index 0000000..810c296 --- /dev/null +++ b/app/views/layouts/group.html.haml @@ -0,0 +1,24 @@ +!!! 5 +%html{ lang: "en"} + = render "layouts/head" + %body{class: "#{app_theme} application"} + = render "layouts/flash" + = render "layouts/head_panel", title: "#{@group.name}:Dashboard" + .container + %ul.main_menu + = nav_link(path: 'dashboard#index', html_options: {class: 'home'}) do + = link_to "Home", root_path, title: "Home" + = nav_link(path: 'dashboard#issues') do + = link_to dashboard_issues_path(group: @group) do + Issues + %span.count= current_user.assigned_issues.opened.count + = nav_link(path: 'dashboard#merge_requests') do + = link_to dashboard_merge_requests_path(group: @group) do + Merge Requests + %span.count= current_user.cared_merge_requests.count + = nav_link(path: 'search#show') do + = link_to "People", "#" + = nav_link(path: 'help#index') do + = link_to "Help", help_path + + .content= yield -- libgit2 0.21.2