Set of UI changes mostly for issue and merge request
* return edit/close buttons to old position (right of title) * make 'Issue #1' header smaller * move mr commits to separate tab * change inline/side diff switcher to buttons from tabs * make issue sidebar start with dicsussion block Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
fe104386b1
commit
5140a4cd13
11 changed files with 179 additions and 140 deletions
|
@ -89,6 +89,9 @@ class @MergeRequest
|
|||
this.$('.merge-request-tabs .diffs-tab').addClass 'active'
|
||||
this.loadDiff() unless @diffs_loaded
|
||||
this.$('.diffs').show()
|
||||
when 'commits'
|
||||
this.$('.merge-request-tabs .commits-tab').addClass 'active'
|
||||
this.$('.commits').show()
|
||||
else
|
||||
this.$('.merge-request-tabs .notes-tab').addClass 'active'
|
||||
this.$('.notes').show()
|
||||
|
|
|
@ -6,7 +6,9 @@
|
|||
|
||||
.issue-box {
|
||||
display: inline-block;
|
||||
padding: 0 10px;
|
||||
padding: 7px 13px;
|
||||
font-weight: normal;
|
||||
margin-right: 5px;
|
||||
|
||||
&.issue-box-closed {
|
||||
background-color: $bg_danger;
|
||||
|
|
|
@ -102,6 +102,7 @@
|
|||
.mr-state-widget {
|
||||
background: $box_bg;
|
||||
margin-bottom: 20px;
|
||||
color: #666;
|
||||
@include box-shadow(0 1px 1px rgba(0, 0, 0, 0.09));
|
||||
|
||||
.ci_widget {
|
||||
|
|
|
@ -117,4 +117,22 @@ module DiffHelper
|
|||
|
||||
[comments_left, comments_right]
|
||||
end
|
||||
|
||||
def inline_diff_btn
|
||||
params_copy = params.dup
|
||||
params_copy[:view] = 'inline'
|
||||
|
||||
link_to url_for(params_copy), id: "commit-diff-viewtype", class: (params[:view] != 'parallel' ? 'btn active' : 'btn') do
|
||||
'Inline'
|
||||
end
|
||||
end
|
||||
|
||||
def parallel_diff_btn
|
||||
params_copy = params.dup
|
||||
params_copy[:view] = 'parallel'
|
||||
|
||||
link_to url_for(params_copy), id: "commit-diff-viewtype", class: (params[:view] == 'parallel' ? 'btn active' : 'btn') do
|
||||
'Side-by-side'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,15 +2,9 @@
|
|||
.col-md-8
|
||||
= render 'projects/diffs/stats', diffs: diffs
|
||||
.col-md-4
|
||||
%ul.nav.nav-tabs
|
||||
%li.pull-right{class: params[:view] == 'parallel' ? 'active' : ''}
|
||||
- params_copy = params.dup
|
||||
- params_copy[:view] = 'parallel'
|
||||
= link_to "Side-by-side Diff", url_for(params_copy), {id: "commit-diff-viewtype"}
|
||||
%li.pull-right{class: params[:view] != 'parallel' ? 'active' : ''}
|
||||
- params_copy[:view] = 'inline'
|
||||
= link_to "Inline Diff", url_for(params_copy), {id: "commit-diff-viewtype"}
|
||||
|
||||
.btn-group.pull-right
|
||||
= inline_diff_btn
|
||||
= parallel_diff_btn
|
||||
|
||||
- if show_diff_size_warning?(diffs)
|
||||
= render 'projects/diffs/warning', diffs: diffs
|
||||
|
|
37
app/views/projects/issues/_discussion.html.haml
Normal file
37
app/views/projects/issues/_discussion.html.haml
Normal file
|
@ -0,0 +1,37 @@
|
|||
- content_for :note_actions do
|
||||
- if can?(current_user, :modify_issue, @issue)
|
||||
- if @issue.closed?
|
||||
= link_to 'Reopen Issue', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-grouped btn-reopen js-note-target-reopen", title: 'Reopen Issue'
|
||||
- else
|
||||
= link_to 'Close Issue', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-grouped btn-close js-note-target-close", title: "Close Issue"
|
||||
.row
|
||||
.col-sm-9
|
||||
.participants
|
||||
%cite.cgray
|
||||
= pluralize(@issue.participants.count, 'participant')
|
||||
- @issue.participants.each do |participant|
|
||||
= link_to_member(@project, participant, name: false, size: 24)
|
||||
|
||||
.voting_notes#notes= render "projects/notes/notes_with_form"
|
||||
.col-sm-3
|
||||
%div
|
||||
.clearfix
|
||||
%span.slead.has_tooltip{:"data-original-title" => 'Cross-project reference'}
|
||||
= cross_project_reference(@project, @issue)
|
||||
%hr
|
||||
.clearfix
|
||||
.votes-holder
|
||||
%h6 Votes
|
||||
#votes= render 'votes/votes_block', votable: @issue
|
||||
%hr
|
||||
.context
|
||||
%cite.cgray
|
||||
= render partial: 'issue_context', locals: { issue: @issue }
|
||||
|
||||
- if @issue.labels.any?
|
||||
%hr
|
||||
%h6 Labels
|
||||
.issue-show-labels
|
||||
- @issue.labels.each do |label|
|
||||
= link_to project_issues_path(@project, label_name: label.name) do
|
||||
%p= render_colored_label(label)
|
|
@ -1,65 +1,37 @@
|
|||
%h3.page-title
|
||||
%h4.page-title
|
||||
.issue-box{ class: issue_box_class(@issue) }
|
||||
- if @issue.closed?
|
||||
Closed
|
||||
- else
|
||||
Open
|
||||
Issue ##{@issue.iid}
|
||||
.pull-right.creator
|
||||
%small Created by #{link_to_member(@project, @issue.author)} #{issue_timestamp(@issue)}
|
||||
%small.creator
|
||||
· created by #{link_to_member(@project, @issue.author)} #{issue_timestamp(@issue)}
|
||||
|
||||
.pull-right
|
||||
- if can?(current_user, :write_issue, @project)
|
||||
= link_to new_project_issue_path(@project), class: "btn btn-grouped", title: "New Issue", id: "new_issue_link" do
|
||||
%i.fa.fa-plus
|
||||
New Issue
|
||||
- if can?(current_user, :modify_issue, @issue)
|
||||
- if @issue.closed?
|
||||
= link_to 'Reopen', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-grouped btn-reopen"
|
||||
- else
|
||||
= link_to 'Close', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-grouped btn-close", title: "Close Issue"
|
||||
|
||||
= link_to edit_project_issue_path(@project, @issue), class: "btn btn-grouped issuable-edit" do
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
|
||||
%hr
|
||||
.row
|
||||
.col-sm-9
|
||||
%h3.issue-title
|
||||
= gfm escape_once(@issue.title)
|
||||
%div
|
||||
- if @issue.description.present?
|
||||
.description
|
||||
.wiki
|
||||
= preserve do
|
||||
= markdown(@issue.description, parse_tasks: true)
|
||||
%hr
|
||||
- content_for :note_actions do
|
||||
- if can?(current_user, :modify_issue, @issue)
|
||||
- if @issue.closed?
|
||||
= link_to 'Reopen Issue', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-grouped btn-reopen js-note-target-reopen", title: 'Reopen Issue'
|
||||
- else
|
||||
= link_to 'Close Issue', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-grouped btn-close js-note-target-close", title: "Close Issue"
|
||||
.participants
|
||||
%cite.cgray
|
||||
= pluralize(@issue.participants.count, 'participant')
|
||||
- @issue.participants.each do |participant|
|
||||
= link_to_member(@project, participant, name: false, size: 24)
|
||||
.issue-show-labels.pull-right
|
||||
- @issue.labels.each do |label|
|
||||
= link_to project_issues_path(@project, label_name: label.name) do
|
||||
= render_colored_label(label)
|
||||
%h3.issue-title
|
||||
= gfm escape_once(@issue.title)
|
||||
%div
|
||||
- if @issue.description.present?
|
||||
.description
|
||||
.wiki
|
||||
= preserve do
|
||||
= markdown(@issue.description, parse_tasks: true)
|
||||
|
||||
.voting_notes#notes= render "projects/notes/notes_with_form"
|
||||
.col-sm-3
|
||||
%div
|
||||
- if can?(current_user, :write_issue, @project)
|
||||
= link_to new_project_issue_path(@project), class: "btn btn-block", title: "New Issue", id: "new_issue_link" do
|
||||
%i.fa.fa-plus
|
||||
New Issue
|
||||
- if can?(current_user, :modify_issue, @issue)
|
||||
- if @issue.closed?
|
||||
= link_to 'Reopen', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-block btn-reopen"
|
||||
- else
|
||||
= link_to 'Close', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-block btn-close", title: "Close Issue"
|
||||
|
||||
= link_to edit_project_issue_path(@project, @issue), class: "btn btn-block issuable-edit" do
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
.clearfix
|
||||
%span.slead.has_tooltip{:"data-original-title" => 'Cross-project reference'}
|
||||
= cross_project_reference(@project, @issue)
|
||||
%hr
|
||||
.clearfix
|
||||
.votes-holder
|
||||
%h6 Votes
|
||||
#votes= render 'votes/votes_block', votable: @issue
|
||||
%hr
|
||||
.context
|
||||
%cite.cgray
|
||||
= render partial: 'issue_context', locals: { issue: @issue }
|
||||
%hr
|
||||
= render "projects/issues/discussion"
|
||||
|
|
31
app/views/projects/merge_requests/_discussion.html.haml
Normal file
31
app/views/projects/merge_requests/_discussion.html.haml
Normal file
|
@ -0,0 +1,31 @@
|
|||
- content_for :note_actions do
|
||||
- if can?(current_user, :modify_merge_request, @merge_request)
|
||||
- if @merge_request.open?
|
||||
= link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :close }), method: :put, class: "btn btn-grouped btn-close close-mr-link js-note-target-close", title: "Close merge request"
|
||||
- if @merge_request.closed?
|
||||
= link_to 'Reopen', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link js-note-target-reopen", title: "Reopen merge request"
|
||||
|
||||
.row
|
||||
.col-sm-9
|
||||
= render "projects/merge_requests/show/participants"
|
||||
= render "projects/notes/notes_with_form"
|
||||
.col-sm-3
|
||||
.clearfix
|
||||
%span.slead.has_tooltip{:"data-original-title" => 'Cross-project reference'}
|
||||
= cross_project_reference(@project, @merge_request)
|
||||
%hr
|
||||
.votes-holder.hidden-sm.hidden-xs
|
||||
%h6 Votes
|
||||
#votes= render 'votes/votes_block', votable: @merge_request
|
||||
%hr
|
||||
.context
|
||||
%cite.cgray
|
||||
= render partial: 'projects/merge_requests/show/context', locals: { merge_request: @merge_request }
|
||||
|
||||
- if @merge_request.labels.any?
|
||||
%hr
|
||||
%h6 Labels
|
||||
.merge-request-show-labels
|
||||
- @merge_request.labels.each do |label|
|
||||
= link_to project_merge_requests_path(@project, label_name: label.name) do
|
||||
%p= render_colored_label(label)
|
|
@ -1,89 +1,64 @@
|
|||
.merge-request
|
||||
= render "projects/merge_requests/show/mr_title"
|
||||
%hr
|
||||
.row
|
||||
.col-sm-9
|
||||
= render "projects/merge_requests/show/how_to_merge"
|
||||
= render "projects/merge_requests/show/mr_box"
|
||||
%hr
|
||||
.append-bottom-20
|
||||
%p.slead
|
||||
%span From
|
||||
- if @merge_request.for_fork?
|
||||
%strong.label-branch<
|
||||
- if @merge_request.source_project
|
||||
= link_to @merge_request.source_project_namespace, project_path(@merge_request.source_project)
|
||||
- else
|
||||
\ #{@merge_request.source_project_namespace}
|
||||
\:#{@merge_request.source_branch}
|
||||
%span into
|
||||
%strong.label-branch #{@merge_request.target_project_namespace}:#{@merge_request.target_branch}
|
||||
= render "projects/merge_requests/show/mr_box"
|
||||
%hr
|
||||
.append-bottom-20
|
||||
.slead
|
||||
%span From
|
||||
- if @merge_request.for_fork?
|
||||
%strong.label-branch<
|
||||
- if @merge_request.source_project
|
||||
= link_to @merge_request.source_project_namespace, project_path(@merge_request.source_project)
|
||||
- else
|
||||
%strong.label-branch #{@merge_request.source_branch}
|
||||
%span into
|
||||
%strong.label-branch #{@merge_request.target_branch}
|
||||
= render "projects/merge_requests/show/state_widget"
|
||||
= render "projects/merge_requests/show/commits"
|
||||
= render "projects/merge_requests/show/participants"
|
||||
\ #{@merge_request.source_project_namespace}
|
||||
\:#{@merge_request.source_branch}
|
||||
%span into
|
||||
%strong.label-branch #{@merge_request.target_project_namespace}:#{@merge_request.target_branch}
|
||||
- else
|
||||
%strong.label-branch #{@merge_request.source_branch}
|
||||
%span into
|
||||
%strong.label-branch #{@merge_request.target_branch}
|
||||
- if @merge_request.open?
|
||||
%span.pull-right
|
||||
.btn-group
|
||||
%a.btn.dropdown-toggle{ data: {toggle: :dropdown} }
|
||||
%i.fa.fa-download
|
||||
Download as
|
||||
%span.caret
|
||||
%ul.dropdown-menu
|
||||
%li= link_to "Email Patches", project_merge_request_path(@project, @merge_request, format: :patch)
|
||||
%li= link_to "Plain Diff", project_merge_request_path(@project, @merge_request, format: :diff)
|
||||
|
||||
.col-sm-3
|
||||
.issue-btn-group
|
||||
- if can?(current_user, :modify_merge_request, @merge_request)
|
||||
- if @merge_request.open?
|
||||
.btn-group-justified.append-bottom-20
|
||||
.btn-group
|
||||
%a.btn.dropdown-toggle{ data: {toggle: :dropdown} }
|
||||
%i.fa.fa-download
|
||||
Download as
|
||||
%span.caret
|
||||
%ul.dropdown-menu
|
||||
%li= link_to "Email Patches", project_merge_request_path(@project, @merge_request, format: :patch)
|
||||
%li= link_to "Plain Diff", project_merge_request_path(@project, @merge_request, format: :diff)
|
||||
= link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: { state_event: :close }), method: :put, class: "btn btn-block btn-close", title: "Close merge request"
|
||||
= link_to edit_project_merge_request_path(@project, @merge_request), class: "btn btn-block issuable-edit", id: "edit_merge_request" do
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
- if @merge_request.closed?
|
||||
= link_to 'Reopen', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-block btn-reopen reopen-mr-link", title: "Close merge request"
|
||||
.clearfix
|
||||
%span.slead.has_tooltip{:"data-original-title" => 'Cross-project reference'}
|
||||
= cross_project_reference(@project, @merge_request)
|
||||
%hr
|
||||
.votes-holder.hidden-sm.hidden-xs
|
||||
%h6 Votes
|
||||
#votes= render 'votes/votes_block', votable: @merge_request
|
||||
%hr
|
||||
.context
|
||||
%cite.cgray
|
||||
= render partial: 'projects/merge_requests/show/context', locals: { merge_request: @merge_request }
|
||||
= render "projects/merge_requests/show/how_to_merge"
|
||||
= render "projects/merge_requests/show/state_widget"
|
||||
|
||||
- if @commits.present?
|
||||
%ul.nav.nav-tabs.merge-request-tabs
|
||||
%li.notes-tab{data: {action: 'notes'}}
|
||||
= link_to project_merge_request_path(@project, @merge_request) do
|
||||
%i.fa.fa-comment
|
||||
%i.fa.fa-comments
|
||||
Discussion
|
||||
%span.badge= @merge_request.mr_and_commit_notes.count
|
||||
%li.commits-tab{data: {action: 'commits'}}
|
||||
= link_to project_merge_request_path(@project, @merge_request) do
|
||||
%i.fa.fa-database
|
||||
Commits
|
||||
%span.badge= @commits.size
|
||||
%li.diffs-tab{data: {action: 'diffs'}}
|
||||
= link_to diffs_project_merge_request_path(@project, @merge_request) do
|
||||
%i.fa.fa-list-alt
|
||||
Changes
|
||||
%span.badge= @merge_request.diffs.size
|
||||
|
||||
- content_for :note_actions do
|
||||
- if can?(current_user, :modify_merge_request, @merge_request)
|
||||
- if @merge_request.open?
|
||||
= link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :close }), method: :put, class: "btn btn-grouped btn-close close-mr-link js-note-target-close", title: "Close merge request"
|
||||
- if @merge_request.closed?
|
||||
= link_to 'Reopen', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link js-note-target-reopen", title: "Reopen merge request"
|
||||
|
||||
.notes.tab-content.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" }
|
||||
= render "projects/merge_requests/discussion"
|
||||
.commits.tab-content
|
||||
= render "projects/merge_requests/show/commits"
|
||||
.diffs.tab-content
|
||||
- if current_page?(action: 'diffs')
|
||||
= render "projects/merge_requests/show/diffs"
|
||||
.notes.tab-content.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" }
|
||||
.row
|
||||
.col-sm-9
|
||||
= render "projects/notes/notes_with_form"
|
||||
|
||||
.mr-loading-status
|
||||
= spinner
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
%h3.page-title
|
||||
%h4.page-title
|
||||
.issue-box{ class: issue_box_class(@merge_request) }
|
||||
- if @merge_request.merged?
|
||||
Merged
|
||||
|
@ -7,5 +7,16 @@
|
|||
- else
|
||||
Open
|
||||
= "Merge Request ##{@merge_request.iid}"
|
||||
.pull-right.creator
|
||||
%small Created by #{link_to_member(@project, @merge_request.author)} #{time_ago_with_tooltip(@merge_request.created_at)}
|
||||
%small.creator
|
||||
·
|
||||
created by #{link_to_member(@project, @merge_request.author)} #{time_ago_with_tooltip(@merge_request.created_at)}
|
||||
|
||||
.issue-btn-group.pull-right
|
||||
- if can?(current_user, :modify_merge_request, @merge_request)
|
||||
- if @merge_request.open?
|
||||
= link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: { state_event: :close }), method: :put, class: "btn btn-grouped btn-close", title: "Close merge request"
|
||||
= link_to edit_project_merge_request_path(@project, @merge_request), class: "btn btn-grouped issuable-edit", id: "edit_merge_request" do
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
- if @merge_request.closed?
|
||||
= link_to 'Reopen', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link", title: "Close merge request"
|
||||
|
|
|
@ -2,8 +2,3 @@
|
|||
%cite.cgray #{@merge_request.participants.count} participants
|
||||
- @merge_request.participants.each do |participant|
|
||||
= link_to_member(@project, participant, name: false, size: 24)
|
||||
|
||||
.merge-request-show-labels.pull-right
|
||||
- @merge_request.labels.each do |label|
|
||||
= link_to project_merge_requests_path(@project, label_name: label.name) do
|
||||
= render_colored_label(label)
|
||||
|
|
Loading…
Reference in a new issue