summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Andrinopoulos <geoandri@gmail.com>2017-02-08 22:57:23 +0200
committerGeorge Andrinopoulos <geoandri@gmail.com>2017-03-02 16:37:04 +0200
commit9cc7d93641fd261c1d337aeebad7dca69a779b6c (patch)
tree5e4e7f6eced1735e852db3d8e5fa8a4e478295f1
parentc5b29ed6f36779dbb96f4cdc7b1b0bce8bb8dc5e (diff)
downloadgitlab-ce-9cc7d93641fd261c1d337aeebad7dca69a779b6c.tar.gz
Hide issue info when project issues are disabled
-rw-r--r--app/views/projects/milestones/show.html.haml2
-rw-r--r--app/views/shared/milestones/_summary.html.haml27
-rw-r--r--app/views/shared/milestones/_tabs.html.haml34
-rw-r--r--changelogs/unreleased/19497-hide-relevant-info-when-project-issues-are-disabled.yml4
-rw-r--r--spec/features/projects/milestones/milestone_spec.rb64
5 files changed, 106 insertions, 25 deletions
diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml
index 06a31698ee6..212ca61a095 100644
--- a/app/views/projects/milestones/show.html.haml
+++ b/app/views/projects/milestones/show.html.haml
@@ -47,7 +47,7 @@
= preserve do
= markdown_field(@milestone, :description)
- - if @milestone.total_items_count(current_user).zero?
+ - if can?(current_user, :read_issue, @project) && @milestone.total_items_count(current_user).zero?
.alert.alert-success.prepend-top-default
%span Assign some issues to this milestone.
- elsif @milestone.complete?(current_user) && @milestone.active?
diff --git a/app/views/shared/milestones/_summary.html.haml b/app/views/shared/milestones/_summary.html.haml
index d27fba805a3..78079f633d5 100644
--- a/app/views/shared/milestones/_summary.html.haml
+++ b/app/views/shared/milestones/_summary.html.haml
@@ -6,14 +6,15 @@
.milestone-stats-and-buttons
.milestone-stats
- %span.milestone-stat.with-drilldown
- %strong= milestone.issues_visible_to_user(current_user).size
- issues:
- %span.milestone-stat
- %strong= milestone.issues_visible_to_user(current_user).opened.size
- open and
- %strong= milestone.issues_visible_to_user(current_user).closed.size
- closed
+ - if !project || can?(current_user, :read_issue, project)
+ %span.milestone-stat.with-drilldown
+ %strong= milestone.issues_visible_to_user(current_user).size
+ issues:
+ %span.milestone-stat
+ %strong= milestone.issues_visible_to_user(current_user).opened.size
+ open and
+ %strong= milestone.issues_visible_to_user(current_user).closed.size
+ closed
%span.milestone-stat.with-drilldown
%strong= milestone.merge_requests.size
merge requests:
@@ -32,10 +33,12 @@
.milestone-progress-buttons
%span.tab-issues-buttons
- - if project && can?(current_user, :create_issue, project)
- = link_to new_namespace_project_issue_path(project.namespace, project, issue: { milestone_id: milestone.id }), class: "btn", title: "New Issue" do
- New Issue
- = link_to 'Browse Issues', milestones_browse_issuables_path(milestone, type: :issues), class: "btn"
+ - if project
+ - if can?(current_user, :create_issue, project)
+ = link_to new_namespace_project_issue_path(project.namespace, project, issue: { milestone_id: milestone.id }), class: "btn", title: "New Issue" do
+ New Issue
+ - if can?(current_user, :read_issue, project)
+ = link_to 'Browse Issues', milestones_browse_issuables_path(milestone, type: :issues), class: "btn"
%span.tab-merge-requests-buttons.hidden
= link_to 'Browse Merge Requests', milestones_browse_issuables_path(milestone, type: :merge_requests), class: "btn"
diff --git a/app/views/shared/milestones/_tabs.html.haml b/app/views/shared/milestones/_tabs.html.haml
index c8f2319d95a..a0e9ec46220 100644
--- a/app/views/shared/milestones/_tabs.html.haml
+++ b/app/views/shared/milestones/_tabs.html.haml
@@ -1,12 +1,18 @@
%ul.nav-links.no-top.no-bottom
- %li.active
- = link_to '#tab-issues', 'data-toggle' => 'tab', 'data-show' => '.tab-issues-buttons' do
- Issues
- %span.badge= milestone.issues_visible_to_user(current_user).size
- %li
- = link_to '#tab-merge-requests', 'data-toggle' => 'tab', 'data-show' => '.tab-merge-requests-buttons' do
- Merge Requests
- %span.badge= milestone.merge_requests.size
+ - if milestone.is_a?(GlobalMilestone) || can?(current_user, :read_issue, @project)
+ %li.active
+ = link_to '#tab-issues', 'data-toggle' => 'tab', 'data-show' => '.tab-issues-buttons' do
+ Issues
+ %span.badge= milestone.issues_visible_to_user(current_user).size
+ %li
+ = link_to '#tab-merge-requests', 'data-toggle' => 'tab', 'data-show' => '.tab-merge-requests-buttons' do
+ Merge Requests
+ %span.badge= milestone.merge_requests.size
+ - else
+ %li.active
+ = link_to '#tab-merge-requests', 'data-toggle' => 'tab', 'data-show' => '.tab-merge-requests-buttons' do
+ Merge Requests
+ %span.badge= milestone.merge_requests.size
%li
= link_to '#tab-participants', 'data-toggle' => 'tab' do
Participants
@@ -20,10 +26,14 @@
- show_full_project_name = local_assigns.fetch(:show_full_project_name, false)
.tab-content.milestone-content
- .tab-pane.active#tab-issues
- = render 'shared/milestones/issues_tab', issues: milestone.issues_visible_to_user(current_user).include_associations, show_project_name: show_project_name, show_full_project_name: show_full_project_name
- .tab-pane#tab-merge-requests
- = render 'shared/milestones/merge_requests_tab', merge_requests: milestone.merge_requests, show_project_name: show_project_name, show_full_project_name: show_full_project_name
+ - if milestone.is_a?(GlobalMilestone) || can?(current_user, :read_issue, @project)
+ .tab-pane.active#tab-issues
+ = render 'shared/milestones/issues_tab', issues: milestone.issues_visible_to_user(current_user).include_associations, show_project_name: show_project_name, show_full_project_name: show_full_project_name
+ .tab-pane#tab-merge-requests
+ = render 'shared/milestones/merge_requests_tab', merge_requests: milestone.merge_requests, show_project_name: show_project_name, show_full_project_name: show_full_project_name
+ - else
+ .tab-pane.active#tab-merge-requests
+ = render 'shared/milestones/merge_requests_tab', merge_requests: milestone.merge_requests, show_project_name: show_project_name, show_full_project_name: show_full_project_name
.tab-pane#tab-participants
= render 'shared/milestones/participants_tab', users: milestone.participants
.tab-pane#tab-labels
diff --git a/changelogs/unreleased/19497-hide-relevant-info-when-project-issues-are-disabled.yml b/changelogs/unreleased/19497-hide-relevant-info-when-project-issues-are-disabled.yml
new file mode 100644
index 00000000000..eceb2b9fac6
--- /dev/null
+++ b/changelogs/unreleased/19497-hide-relevant-info-when-project-issues-are-disabled.yml
@@ -0,0 +1,4 @@
+---
+title: Hide issue info when project issues are disabled
+merge_request:
+author: George Andrinopoulos
diff --git a/spec/features/projects/milestones/milestone_spec.rb b/spec/features/projects/milestones/milestone_spec.rb
new file mode 100644
index 00000000000..df229d0aa78
--- /dev/null
+++ b/spec/features/projects/milestones/milestone_spec.rb
@@ -0,0 +1,64 @@
+require 'spec_helper'
+
+feature 'Project milestone', :feature do
+ let(:user) { create(:user) }
+ let(:project) { create(:empty_project, name: 'test', namespace: user.namespace) }
+ let(:milestone) { create(:milestone, project: project) }
+
+ before do
+ login_as(user)
+ end
+
+ context 'when project has enabled issues' do
+ before do
+ visit namespace_project_milestone_path(project.namespace, project, milestone)
+ end
+
+ it 'shows issues tab' do
+ within('#content-body') do
+ expect(page).to have_link 'Issues', href: '#tab-issues'
+ expect(page).to have_selector '.nav-links li.active', count: 1
+ expect(find('.nav-links li.active')).to have_content 'Issues'
+ end
+ end
+
+ it 'shows issues stats' do
+ expect(page).to have_content 'issues:'
+ end
+
+ it 'shows Browse Issues button' do
+ within('#content-body') do
+ expect(page).to have_link 'Browse Issues'
+ end
+ end
+ end
+
+ context 'when project has disabled issues' do
+ before do
+ project.project_feature.update_attribute(:issues_access_level, ProjectFeature::DISABLED)
+ visit namespace_project_milestone_path(project.namespace, project, milestone)
+ end
+
+ it 'hides issues tab' do
+ within('#content-body') do
+ expect(page).not_to have_link 'Issues', href: '#tab-issues'
+ expect(page).to have_selector '.nav-links li.active', count: 1
+ expect(find('.nav-links li.active')).to have_content 'Merge Requests'
+ end
+ end
+
+ it 'hides issues stats' do
+ expect(page).to have_no_content 'issues:'
+ end
+
+ it 'hides Browse Issues button' do
+ within('#content-body') do
+ expect(page).not_to have_link 'Browse Issues'
+ end
+ end
+
+ it 'does not show an informative message' do
+ expect(page).not_to have_content('Assign some issues to this milestone.')
+ end
+ end
+end