diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-13 06:09:37 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-13 06:09:37 +0000 |
commit | 0301a0cad0063d76b1607358dc6c711ea043fdda (patch) | |
tree | 894ac424a6fb370ad8dc5de4294cdc87f0ae164e /app | |
parent | dcce066c5059c4df112dce4a9edf288d74aec48b (diff) | |
download | gitlab-ce-0301a0cad0063d76b1607358dc6c711ea043fdda.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/models/project.rb | 4 | ||||
-rw-r--r-- | app/models/project_services/issue_tracker_service.rb | 8 | ||||
-rw-r--r-- | app/models/project_services/jira_service.rb | 11 | ||||
-rw-r--r-- | app/services/issues/close_service.rb | 13 | ||||
-rw-r--r-- | app/services/system_notes/issuables_service.rb | 2 |
5 files changed, 34 insertions, 4 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 890768ccf58..6d9a0e5e813 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1190,6 +1190,10 @@ class Project < ApplicationRecord update_column(:has_external_issue_tracker, services.external_issue_trackers.any?) if Gitlab::Database.read_write? end + def external_references_supported? + external_issue_tracker&.support_cross_reference? + end + def has_wiki? wiki_enabled? || has_external_wiki? end diff --git a/app/models/project_services/issue_tracker_service.rb b/app/models/project_services/issue_tracker_service.rb index 2bf14a6ed25..3f7e8a720aa 100644 --- a/app/models/project_services/issue_tracker_service.rb +++ b/app/models/project_services/issue_tracker_service.rb @@ -151,6 +151,14 @@ class IssueTrackerService < Service result end + def support_close_issue? + false + end + + def support_cross_reference? + false + end + private def enabled_in_gitlab_config diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb index e3cd345d065..2766ba11c97 100644 --- a/app/models/project_services/jira_service.rb +++ b/app/models/project_services/jira_service.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class JiraService < IssueTrackerService + extend ::Gitlab::Utils::Override include Gitlab::Routing include ApplicationHelper include ActionView::Helpers::AssetUrlHelper @@ -205,6 +206,16 @@ class JiraService < IssueTrackerService nil end + override :support_close_issue? + def support_close_issue? + true + end + + override :support_cross_reference? + def support_cross_reference? + true + end + private def test_settings diff --git a/app/services/issues/close_service.rb b/app/services/issues/close_service.rb index d5a542a418d..2cf4bbcd590 100644 --- a/app/services/issues/close_service.rb +++ b/app/services/issues/close_service.rb @@ -18,9 +18,9 @@ module Issues # The code calling this method is responsible for ensuring that a user is # allowed to close the given issue. def close_issue(issue, closed_via: nil, notifications: true, system_note: true) - if project.jira_tracker_active? && issue.is_a?(ExternalIssue) - project.jira_service.close_issue(closed_via, issue) - todo_service.close_issue(issue, current_user) + if issue.is_a?(ExternalIssue) + close_external_issue(issue, closed_via) + return issue end @@ -47,6 +47,13 @@ module Issues private + def close_external_issue(issue, closed_via) + return unless project.external_issue_tracker&.support_close_issue? + + project.external_issue_tracker.close_issue(closed_via, issue) + todo_service.close_issue(issue, current_user) + end + def create_note(issue, current_commit) SystemNoteService.change_status(issue, issue.project, current_user, issue.state, current_commit) end diff --git a/app/services/system_notes/issuables_service.rb b/app/services/system_notes/issuables_service.rb index d7787dac4b8..b555760f88e 100644 --- a/app/services/system_notes/issuables_service.rb +++ b/app/services/system_notes/issuables_service.rb @@ -144,7 +144,7 @@ module SystemNotes # # Returns Boolean def cross_reference_disallowed?(mentioner) - return true if noteable.is_a?(ExternalIssue) && !noteable.project.jira_tracker_active? + return true if noteable.is_a?(ExternalIssue) && !noteable.project&.external_references_supported? return false unless mentioner.is_a?(MergeRequest) return false unless noteable.is_a?(Commit) |