summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorZeger-Jan van de Weg <mail@zjvandeweg.nl>2015-10-13 09:41:46 +0200
committerZeger-Jan van de Weg <mail@zjvandeweg.nl>2015-10-16 09:59:32 +0200
commit94a788f66dfcc13ad02855b05c38826f958038af (patch)
treee99ed267a2e646607f05a7632feefd3a776b5d0b /app
parent9f9f0c35ecd9f7a5a057030253791d051f832f6d (diff)
downloadgitlab-ce-94a788f66dfcc13ad02855b05c38826f958038af.tar.gz
Only accept open issues and merge requests
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects/issues_controller.rb2
-rw-r--r--app/helpers/issues_helper.rb2
-rw-r--r--app/models/concerns/issuable.rb4
-rw-r--r--app/models/issue.rb10
-rw-r--r--app/models/merge_request.rb4
-rw-r--r--app/views/projects/issues/_closed_by_box.html.haml9
-rw-r--r--app/views/projects/issues/show.html.haml2
7 files changed, 15 insertions, 18 deletions
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index eaf14009242..cc8321d97ad 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -116,7 +116,7 @@ class Projects::IssuesController < Projects::ApplicationController
end
def closed_by_merge_requests
- @closed_by_mr = @issue.closed_by_merge_requests(current_user)
+ @closed_by_merge_requests ||= @issue.closed_by_merge_requests(current_user)
end
protected
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 1adbf3a79b1..fda18e7b316 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -84,7 +84,7 @@ module IssuesHelper
end
def merge_requests_sentence(merge_requests)
- merge_requests.map(&:to_reference).to_sentence
+ merge_requests.map(&:to_reference).to_sentence(last_word_connector: ', or ')
end
# Required for Gitlab::Markdown::IssueReferenceFilter
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 0e8bcc1a4ec..efa6a269992 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -86,6 +86,10 @@ module Issuable
assignee_id_changed?
end
+ def open?
+ opened? || reopened?
+ end
+
#
# Votes
#
diff --git a/app/models/issue.rb b/app/models/issue.rb
index c24a329847c..72183108033 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -98,11 +98,11 @@ class Issue < ActiveRecord::Base
# From all notes on this issue, we'll select the system notes about linked
# merge requests. Of those, the MRs closing `self` are returned.
- def closed_by_merge_requests(current_user)
+ def closed_by_merge_requests(current_user = nil)
+ return [] unless open?
+
notes.system.flat_map do |note|
- ext = Gitlab::ReferenceExtractor.new(self.project, current_user)
- ext.analyze(note.note)
- ext.merge_requests
- end.uniq.select { |mr| mr.closes_issue?(self) }
+ note.all_references(current_user).merge_requests
+ end.uniq.select { |mr| mr.open? && mr.closes_issue?(self) }
end
end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 3ae74ceac68..0042b95c4f1 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -222,10 +222,6 @@ class MergeRequest < ActiveRecord::Base
self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::CLOSED).last
end
- def open?
- opened? || reopened?
- end
-
def work_in_progress?
!!(title =~ /\A\[?WIP\]?:? /i)
end
diff --git a/app/views/projects/issues/_closed_by_box.html.haml b/app/views/projects/issues/_closed_by_box.html.haml
index fe886b6d7d7..aef352029d0 100644
--- a/app/views/projects/issues/_closed_by_box.html.haml
+++ b/app/views/projects/issues/_closed_by_box.html.haml
@@ -1,6 +1,3 @@
-.issue-closed-by-widget
- %i.fa.fa-check
- - if @closed_by_mr.count == 1
- This issue will be closed when #{gfm(@closed_by_mr.first.to_reference)} is accepted.
- -else
- This issue will be closed when any of merge requests #{gfm(merge_requests_sentence(@closed_by_mr.sort))} is accepted.
+.issue-closed-by-widget
+ = icon('check')
+ This issue will be closed automatically when merge request #{gfm(merge_requests_sentence(@closed_by_merge_requests.sort))} is accepted.
diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml
index 309f276882d..f01bf2505da 100644
--- a/app/views/projects/issues/show.html.haml
+++ b/app/views/projects/issues/show.html.haml
@@ -46,7 +46,7 @@
= markdown(@issue.description)
%textarea.hidden.js-task-list-field
= @issue.description
- - if @closed_by_mr.present?
+ - if @closed_by_merge_requests.present?
= render 'projects/issues/closed_by_box'
.issue-discussion
= render 'projects/issues/discussion'