diff options
author | Robert Speicher <robert@gitlab.com> | 2015-12-11 18:25:43 +0000 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2015-12-11 18:25:43 +0000 |
commit | 2bc821301dc89094c7858b262b5f463e7c2f0fde (patch) | |
tree | 3e14b9554a18e502d3fc347a58dd7db44eeb843c | |
parent | 29181c04205112f01033a13d96aae7c8692febc9 (diff) | |
parent | 0272f27401d25faed97419611a78a968f801a42f (diff) | |
download | gitlab-ce-2bc821301dc89094c7858b262b5f463e7c2f0fde.tar.gz |
Merge branch 'mr-statuses' into 'master'
Display referenced merge request statuses in the issue description
See gitlab-org/gitlab-ce#3180 for original issue.
Previously discussed in !1941 and in !1771 before that.
* [x] Show a "Related Merge Requests" list on the issue page under the Description as given by the UI mockup
* [x] Display `all_references.merge_requests` and `note.all_references.merge_requests`
* [x] Consider displaying the merge request status in addition to the CI status to enable complete merge request status understanding.
See merge request !1991
-rw-r--r-- | app/assets/stylesheets/pages/issues.scss | 20 | ||||
-rw-r--r-- | app/controllers/projects/issues_controller.rb | 1 | ||||
-rw-r--r-- | app/helpers/ci_status_helper.rb | 2 | ||||
-rw-r--r-- | app/models/issue.rb | 8 | ||||
-rw-r--r-- | app/views/projects/issues/_merge_requests.html.haml | 25 | ||||
-rw-r--r-- | app/views/projects/issues/show.html.haml | 4 |
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 |