summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Smethells <smethells@icloud.com>2015-12-04 13:00:07 -0600
committerGreg Smethells <smethells@icloud.com>2015-12-11 10:14:55 -0600
commit0272f27401d25faed97419611a78a968f801a42f (patch)
tree0141c7f7fbc2565fc3689bf84f60524ca8f02481
parenta2a68858c88151ce0d77f602dbae59d595495ac6 (diff)
downloadgitlab-ce-gsmethells/gitlab-ce-mr-statuses.tar.gz
display referenced merge requests in issue description with CI statusgsmethells/gitlab-ce-mr-statuses
-rw-r--r--app/assets/stylesheets/pages/issues.scss20
-rw-r--r--app/controllers/projects/issues_controller.rb1
-rw-r--r--app/helpers/ci_status_helper.rb2
-rw-r--r--app/models/issue.rb8
-rw-r--r--app/views/projects/issues/_merge_requests.html.haml25
-rw-r--r--app/views/projects/issues/show.html.haml4
6 files changed, 59 insertions, 1 deletions
diff --git a/app/assets/stylesheets/pages/issues.scss b/app/assets/stylesheets/pages/issues.scss
index f5548c5b88b..a652b65502f 100644
--- a/app/assets/stylesheets/pages/issues.scss
+++ b/app/assets/stylesheets/pages/issues.scss
@@ -60,6 +60,26 @@ form.edit-issue {
margin: 0;
}
+.merge-requests-title {
+ font-size: 16px;
+ font-weight: 600;
+}
+
+.merge-request-id {
+ display: inline-block;
+ width: 3em;
+}
+
+.merge-request-info {
+ padding-left: 5px;
+}
+
+.merge-request-status {
+ color: $gl-gray;
+ font-size: 15px;
+ font-weight: bold;
+}
+
.merge-request,
.issue {
&.today {
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index ae474cf8d68..cf617d53ed6 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -62,6 +62,7 @@ class Projects::IssuesController < Projects::ApplicationController
@note = @project.notes.new(noteable: @issue)
@notes = @issue.notes.nonawards.with_associations.fresh
@noteable = @issue
+ @merge_requests = @issue.referenced_merge_requests
respond_with(@issue)
end
diff --git a/app/helpers/ci_status_helper.rb b/app/helpers/ci_status_helper.rb
index 8e1f8f9ba6d..f8f2cbf1319 100644
--- a/app/helpers/ci_status_helper.rb
+++ b/app/helpers/ci_status_helper.rb
@@ -52,7 +52,7 @@ module CiStatusHelper
'circle'
end
- icon(icon_name)
+ icon(icon_name + ' fw')
end
def render_ci_status(ci_commit)
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 187b6482b6c..e04035b3af8 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -83,6 +83,14 @@ class Issue < ActiveRecord::Base
reference
end
+ def referenced_merge_requests
+ references = [self, *notes].flat_map do |note|
+ note.all_references(load_lazy_references: false).merge_requests
+ end.uniq
+
+ Gitlab::Markdown::ReferenceFilter::LazyReference.load(references).uniq.sort_by(&:iid)
+ end
+
# Reset issue events cache
#
# Since we do cache @event we need to reset cache in special cases:
diff --git a/app/views/projects/issues/_merge_requests.html.haml b/app/views/projects/issues/_merge_requests.html.haml
new file mode 100644
index 00000000000..fe856ac991e
--- /dev/null
+++ b/app/views/projects/issues/_merge_requests.html.haml
@@ -0,0 +1,25 @@
+-if @merge_requests.any?
+ %h2.merge-requests-title
+ = pluralize(@merge_requests.count, 'Related Merge Request')
+ %ul.bordered-list
+ - has_any_ci = @merge_requests.any?(&:ci_commit)
+ - @merge_requests.each do |merge_request|
+ %li
+ %span.merge-request-ci-status
+ - if merge_request.ci_commit
+ = render_ci_status(merge_request.ci_commit)
+ - elsif has_any_ci
+ = icon('blank fw')
+ %span.merge-request-id
+ \##{merge_request.iid}
+ %span.merge-request-info
+ %strong
+ = link_to_gfm merge_request.title, merge_request_path(merge_request), class: "row_title"
+ in
+ - project = merge_request.target_project
+ = link_to project.name_with_namespace, namespace_project_path(project.namespace, project)
+ %span.merge-request-status.prepend-left-10
+ - if merge_request.merged?
+ MERGED
+ - elsif merge_request.closed?
+ CLOSED
diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml
index a78d20cc07e..38254403fa6 100644
--- a/app/views/projects/issues/show.html.haml
+++ b/app/views/projects/issues/show.html.haml
@@ -47,6 +47,10 @@
= markdown(@issue.description, cache_key: [@issue, "description"])
%textarea.hidden.js-task-list-field
= @issue.description
+
+ .merge-requests
+ = render 'merge_requests'
+
- if @closed_by_merge_requests.present?
= render 'projects/issues/closed_by_box'
.issue-discussion