summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@gitlab.com>2019-06-24 10:42:07 +0000
committerBob Van Landuyt <bob@gitlab.com>2019-06-24 10:42:07 +0000
commitaae391a9654cca687890619823e5735276fba783 (patch)
tree60d0504cce25d3e43a78bcfbae27bdc32aacbc28
parente64031af07adc5f484b52f22dc3a5b6cad581a5f (diff)
parentd9242f206be0f7d9b62d754b42576f89f78990b0 (diff)
downloadgitlab-ce-aae391a9654cca687890619823e5735276fba783.tar.gz
Merge branch 'show-confidential-merge-request-button' into 'master'
Show create merge request button on confidential issues See merge request gitlab-org/gitlab-ce!29688
-rw-r--r--app/helpers/issues_helper.rb14
-rw-r--r--app/views/projects/issues/_new_branch.html.haml8
-rw-r--r--app/views/projects/issues/show.html.haml2
-rw-r--r--locale/gitlab.pot6
-rw-r--r--spec/features/issues/user_creates_branch_and_merge_request_spec.rb13
5 files changed, 39 insertions, 4 deletions
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 957ab06b0ca..59332c0b100 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -135,6 +135,20 @@ module IssuesHelper
can?(current_user, :create_issue, project)
end
+ def create_confidential_merge_request_enabled?
+ Feature.enabled?(:create_confidential_merge_request, @project)
+ end
+
+ def show_new_branch_button?
+ can_create_confidential_merge_request? || !@issue.confidential?
+ end
+
+ def can_create_confidential_merge_request?
+ @issue.confidential? && !@project.private? &&
+ create_confidential_merge_request_enabled? &&
+ can?(current_user, :create_merge_request_in, @project)
+ end
+
# Required for Banzai::Filter::IssueReferenceFilter
module_function :url_for_issue
module_function :url_for_internal_issue
diff --git a/app/views/projects/issues/_new_branch.html.haml b/app/views/projects/issues/_new_branch.html.haml
index 457b2936278..52bb797b5b3 100644
--- a/app/views/projects/issues/_new_branch.html.haml
+++ b/app/views/projects/issues/_new_branch.html.haml
@@ -2,6 +2,7 @@
- can_create_merge_request = can?(current_user, :create_merge_request_in, @project)
- data_action = can_create_merge_request ? 'create-mr' : 'create-branch'
- value = can_create_merge_request ? 'Create merge request' : 'Create branch'
+ - value = can_create_confidential_merge_request? ? _('Create confidential merge request') : value
- can_create_path = can_create_branch_project_issue_path(@project, @issue)
- create_mr_path = create_merge_request_project_issue_path(@project, @issue, branch_name: @issue.to_branch_name, ref: @project.default_branch)
@@ -23,12 +24,15 @@
= icon('caret-down')
.droplab-dropdown
- %ul#create-merge-request-dropdown.create-merge-request-dropdown-menu.dropdown-menu.dropdown-menu-right.gl-show-field-errors{ data: { dropdown: true } }
+ %ul#create-merge-request-dropdown.create-merge-request-dropdown-menu.dropdown-menu.dropdown-menu-right.gl-show-field-errors{ class: ("create-confidential-merge-request-dropdown-menu" if can_create_confidential_merge_request?), data: { dropdown: true } }
- if can_create_merge_request
%li.droplab-item-selected{ role: 'button', data: { value: 'create-mr', text: _('Create merge request') } }
.menu-item
= icon('check', class: 'icon')
- = _('Create merge request and branch')
+ - if can_create_confidential_merge_request?
+ = _('Create confidential merge request and branch')
+ - else
+ = _('Create merge request and branch')
%li{ class: [!can_create_merge_request && 'droplab-item-selected'], role: 'button', data: { value: 'create-branch', text: _('Create branch') } }
.menu-item
diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml
index d55afee4523..8ec07dc3bb4 100644
--- a/app/views/projects/issues/show.html.haml
+++ b/app/views/projects/issues/show.html.haml
@@ -91,7 +91,7 @@
= render 'award_emoji/awards_block', awardable: @issue, inline: true
.col-md-12.col-lg-6.new-branch-col
#js-vue-discussion-filter{ data: { default_filter: current_user&.notes_filter_for(@issue), notes_filters: UserPreference.notes_filters.to_json } }
- = render 'new_branch' unless @issue.confidential?
+ = render 'new_branch' if show_new_branch_button?
= render_if_exists 'projects/issues/discussion'
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index b04cb999dc3..379f9f88316 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -3056,6 +3056,12 @@ msgstr ""
msgid "Create commit"
msgstr ""
+msgid "Create confidential merge request"
+msgstr ""
+
+msgid "Create confidential merge request and branch"
+msgstr ""
+
msgid "Create directory"
msgstr ""
diff --git a/spec/features/issues/user_creates_branch_and_merge_request_spec.rb b/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
index b69fba0db00..f9103d83ba0 100644
--- a/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
+++ b/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
describe 'User creates branch and merge request on issue page', :js do
let(:membership_level) { :developer }
let(:user) { create(:user) }
- let!(:project) { create(:project, :repository) }
+ let!(:project) { create(:project, :repository, :public) }
let(:issue) { create(:issue, project: project, title: 'Cherry-Coloured Funk') }
context 'when signed out' do
@@ -163,10 +163,21 @@ describe 'User creates branch and merge request on issue page', :js do
let(:issue) { create(:issue, :confidential, project: project) }
it 'disables the create branch button' do
+ stub_feature_flags(create_confidential_merge_request: false)
+
visit project_issue_path(project, issue)
expect(page).not_to have_css('.create-mr-dropdown-wrap')
end
+
+ it 'enables the create branch button when feature flag is enabled' do
+ stub_feature_flags(create_confidential_merge_request: true)
+
+ visit project_issue_path(project, issue)
+
+ expect(page).to have_css('.create-mr-dropdown-wrap')
+ expect(page).to have_button('Create confidential merge request')
+ end
end
context 'when related branch exists' do