From 7dc16346bba174d6075cf438adcd70a5596ba935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Tue, 22 Mar 2016 19:19:53 +0100 Subject: [PATCH 1/4] Fix an issue causing the Dashboard/Milestones page to be blank --- app/controllers/concerns/global_milestones.rb | 5 +++- .../dashboard/application_controller.rb | 6 ++++ .../dashboard/milestones_controller.rb | 12 ++++---- app/controllers/dashboard_controller.rb | 29 +------------------ app/helpers/labels_helper.rb | 2 +- app/helpers/milestones_helper.rb | 2 +- config/routes.rb | 3 +- 7 files changed, 20 insertions(+), 39 deletions(-) diff --git a/app/controllers/concerns/global_milestones.rb b/app/controllers/concerns/global_milestones.rb index 54ea1e454f..f5eace47df 100644 --- a/app/controllers/concerns/global_milestones.rb +++ b/app/controllers/concerns/global_milestones.rb @@ -6,7 +6,10 @@ module GlobalMilestones @milestones = MilestonesFinder.new.execute(@projects, params) @milestones = GlobalMilestone.build_collection(@milestones) @milestones = @milestones.sort_by { |x| x.due_date.nil? ? epoch : x.due_date } - @milestones = Kaminari.paginate_array(@milestones).page(params[:page]) + + if request.format == :html + @milestones = Kaminari.paginate_array(@milestones).page(params[:page]) + end end def milestone diff --git a/app/controllers/dashboard/application_controller.rb b/app/controllers/dashboard/application_controller.rb index 962ea38d6c..9d3d1c23c2 100644 --- a/app/controllers/dashboard/application_controller.rb +++ b/app/controllers/dashboard/application_controller.rb @@ -1,3 +1,9 @@ class Dashboard::ApplicationController < ApplicationController layout 'dashboard' + + private + + def projects + @projects ||= current_user.authorized_projects.sorted_by_activity.non_archived + end end diff --git a/app/controllers/dashboard/milestones_controller.rb b/app/controllers/dashboard/milestones_controller.rb index 2bdce0f8a0..0a4a408840 100644 --- a/app/controllers/dashboard/milestones_controller.rb +++ b/app/controllers/dashboard/milestones_controller.rb @@ -6,14 +6,14 @@ class Dashboard::MilestonesController < Dashboard::ApplicationController before_action :milestone, only: [:show] def index + respond_to do |format| + format.html + format.json do + render json: @milestones + end + end end def show end - - private - - def projects - @projects ||= current_user.authorized_projects.sorted_by_activity.non_archived - end end diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index b538c7d160..1dce4a2172 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -3,7 +3,7 @@ class DashboardController < Dashboard::ApplicationController include MergeRequestsAction before_action :event_filter, only: :activity - before_action :projects, only: [:issues, :merge_requests, :labels, :milestones] + before_action :projects, only: [:issues, :merge_requests] respond_to :html @@ -20,29 +20,6 @@ class DashboardController < Dashboard::ApplicationController end end - def labels - labels = Label.where(project_id: @projects).select(:title, :color).uniq(:title) - - respond_to do |format| - format.json do - render json: labels - end - end - end - - def milestones - milestones = Milestone.where(project_id: @projects).active - epoch = DateTime.parse('1970-01-01') - grouped_milestones = GlobalMilestone.build_collection(milestones) - grouped_milestones = grouped_milestones.sort_by { |x| x.due_date.nil? ? epoch : x.due_date } - - respond_to do |format| - format.json do - render json: grouped_milestones - end - end - end - protected def load_events @@ -57,8 +34,4 @@ class DashboardController < Dashboard::ApplicationController @events = @event_filter.apply_filter(@events).with_associations @events = @events.limit(20).offset(params[:offset] || 0) end - - def projects - @projects ||= current_user.authorized_projects.sorted_by_activity.non_archived - end end diff --git a/app/helpers/labels_helper.rb b/app/helpers/labels_helper.rb index e0a8552dfa..3dded7c2f2 100644 --- a/app/helpers/labels_helper.rb +++ b/app/helpers/labels_helper.rb @@ -114,7 +114,7 @@ module LabelsHelper if @project namespace_project_labels_path(@project.namespace, @project, :json) else - labels_dashboard_path(:json) + dashboard_labels_path(:json) end end diff --git a/app/helpers/milestones_helper.rb b/app/helpers/milestones_helper.rb index c9d8787bd1..87fc2db690 100644 --- a/app/helpers/milestones_helper.rb +++ b/app/helpers/milestones_helper.rb @@ -50,7 +50,7 @@ module MilestonesHelper if @project namespace_project_milestones_path(@project.namespace, @project, :json) else - milestones_dashboard_path(:json) + dashboard_milestones_path(:json) end end diff --git a/config/routes.rb b/config/routes.rb index 90d858d7fc..4a3c23b7c1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -351,11 +351,10 @@ Rails.application.routes.draw do get :issues get :merge_requests get :activity - get :labels - get :milestones scope module: :dashboard do resources :milestones, only: [:index, :show] + resources :labels, only: [:index] resources :groups, only: [:index] resources :snippets, only: [:index] From e989d12b0768f0caa7ea1a429a2182e26bbf225a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Wed, 23 Mar 2016 09:09:58 +0100 Subject: [PATCH 2/4] Use respond_to instead of a conditional to paginate milestones --- app/controllers/concerns/global_milestones.rb | 4 ---- app/controllers/dashboard/milestones_controller.rb | 7 ++++--- app/controllers/groups/milestones_controller.rb | 6 +++++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/controllers/concerns/global_milestones.rb b/app/controllers/concerns/global_milestones.rb index f5eace47df..5c503c5b69 100644 --- a/app/controllers/concerns/global_milestones.rb +++ b/app/controllers/concerns/global_milestones.rb @@ -6,10 +6,6 @@ module GlobalMilestones @milestones = MilestonesFinder.new.execute(@projects, params) @milestones = GlobalMilestone.build_collection(@milestones) @milestones = @milestones.sort_by { |x| x.due_date.nil? ? epoch : x.due_date } - - if request.format == :html - @milestones = Kaminari.paginate_array(@milestones).page(params[:page]) - end end def milestone diff --git a/app/controllers/dashboard/milestones_controller.rb b/app/controllers/dashboard/milestones_controller.rb index 0a4a408840..fa9c6c054f 100644 --- a/app/controllers/dashboard/milestones_controller.rb +++ b/app/controllers/dashboard/milestones_controller.rb @@ -2,14 +2,15 @@ class Dashboard::MilestonesController < Dashboard::ApplicationController include GlobalMilestones before_action :projects - before_action :milestones, only: [:index] before_action :milestone, only: [:show] def index respond_to do |format| - format.html + format.html do + @milestones = Kaminari.paginate_array(milestones).page(params[:page]) + end format.json do - render json: @milestones + render json: milestones end end end diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb index 0028f072d5..b23c3022fb 100644 --- a/app/controllers/groups/milestones_controller.rb +++ b/app/controllers/groups/milestones_controller.rb @@ -2,11 +2,15 @@ class Groups::MilestonesController < Groups::ApplicationController include GlobalMilestones before_action :group_projects - before_action :milestones, only: [:index] before_action :milestone, only: [:show, :update] before_action :authorize_admin_milestones!, only: [:new, :create, :update] def index + respond_to do |format| + format.html do + @milestones = Kaminari.paginate_array(milestones).page(params[:page]) + end + end end def new From ce44e5a787482e4d02cee007d35ab30ab651f6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Wed, 23 Mar 2016 11:39:58 +0100 Subject: [PATCH 3/4] Add missing Dashboard::LabelsController --- .../dashboard/labels_controller.rb | 9 ++++++ spec/features/dashboard_milestones_spec.rb | 29 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 app/controllers/dashboard/labels_controller.rb create mode 100644 spec/features/dashboard_milestones_spec.rb diff --git a/app/controllers/dashboard/labels_controller.rb b/app/controllers/dashboard/labels_controller.rb new file mode 100644 index 0000000000..23a4ef21ea --- /dev/null +++ b/app/controllers/dashboard/labels_controller.rb @@ -0,0 +1,9 @@ +class Dashboard::LabelsController < Dashboard::ApplicationController + def index + labels = Label.where(project_id: projects).select(:title, :color).uniq(:title) + + respond_to do |format| + format.json { render json: labels } + end + end +end diff --git a/spec/features/dashboard_milestones_spec.rb b/spec/features/dashboard_milestones_spec.rb new file mode 100644 index 0000000000..f32fddbc9f --- /dev/null +++ b/spec/features/dashboard_milestones_spec.rb @@ -0,0 +1,29 @@ +require 'spec_helper' + +feature 'Dashboard > Milestones', feature: true do + describe 'as anonymous user' do + before do + visit dashboard_milestones_path + end + + it 'is redirected to sign-in page' do + expect(current_path).to eq new_user_session_path + end + end + + describe 'as logged-in user' do + let(:user) { create(:user) } + let(:project) { create(:empty_project, namespace: user.namespace) } + let!(:milestone) { create(:milestone, project: project) } + before do + project.team << [user, :master] + login_with(user) + visit dashboard_milestones_path + end + + it 'sees milestones' do + expect(current_path).to eq dashboard_milestones_path + expect(page).to have_content(milestone.title) + end + end +end From 260b9415dff29758df109d7840c995de9170f39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Wed, 23 Mar 2016 11:52:23 +0100 Subject: [PATCH 4/4] Add CHANGELOG item --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 924358a4f0..2a52c42827 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ v 8.7.0 (unreleased) v 8.6.1 (unreleased) - Do not allow to move issue if it has not been persisted + - Fix an issue causing the Dashboard/Milestones page to be blank v 8.6.0 - Add ability to move issue to another project