diff options
Diffstat (limited to 'app/views/projects/merge_requests')
11 files changed, 74 insertions, 95 deletions
diff --git a/app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml b/app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml new file mode 100644 index 00000000000..3a8629b3b6e --- /dev/null +++ b/app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml @@ -0,0 +1,37 @@ +- display_issuable_type = issuable_display_type(@merge_request) +- button_action_class = @merge_request.closed? ? 'btn-default' : 'btn-warning btn-warning-secondary' +- button_class = "btn gl-button #{!@merge_request.closed? && 'js-draft-toggle-button'}" +- toggle_class = "btn gl-button dropdown-toggle" + +.float-left.btn-group.gl-ml-3.gl-display-none.gl-display-md-flex + = link_to @merge_request.closed? ? reopen_issuable_path(@merge_request) : toggle_draft_merge_request_path(@merge_request), method: :put, class: "#{button_class} #{button_action_class}" do + - if @merge_request.closed? + = _('Reopen') + = display_issuable_type + - else + = @merge_request.work_in_progress? ? _('Mark as ready') : _('Mark as draft') + + - if !@merge_request.closed? || !issuable_author_is_current_user(@merge_request) + = button_tag type: 'button', class: "#{toggle_class} #{button_action_class}", data: { 'toggle' => 'dropdown' } do + %span.gl-sr-only= _('Toggle dropdown') + = sprite_icon "angle-down", size: 12 + + %ul.dropdown-menu.dropdown-menu-right + - if @merge_request.open? + %li + = link_to close_issuable_path(@merge_request), method: :put do + .description + %strong.title + = _('Close') + = display_issuable_type + + - unless issuable_author_is_current_user(@merge_request) + - unless @merge_request.closed? + %li.divider.droplab-item-ignore + + %li + %a{ href: new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)) } + .description + %strong.title= _('Report abuse') + %p.text.gl-mb-0 + = _('Report %{display_issuable_type} that are abusive, inappropriate or spam.') % { display_issuable_type: display_issuable_type.pluralize } diff --git a/app/views/projects/merge_requests/_how_to_merge.html.haml b/app/views/projects/merge_requests/_how_to_merge.html.haml deleted file mode 100644 index a831972a823..00000000000 --- a/app/views/projects/merge_requests/_how_to_merge.html.haml +++ /dev/null @@ -1,56 +0,0 @@ -#modal_merge_info.modal{ tabindex: '-1' } - .modal-dialog.modal-lg - .modal-content - .modal-header - %h3.modal-title Check out, review, and merge locally - %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') } - %span{ "aria-hidden": true } × - .modal-body - %p - %strong Step 1. - Fetch and check out the branch for this merge request - = clipboard_button(target: "pre#merge-info-1", title: _("Copy commands")) - %pre.dark#merge-info-1 - - if @merge_request.for_fork? - -# All repo/branch refs have been quoted to allow support for special characters (such as #my-branch) - :preserve - git fetch "#{h default_url_to_repo(@merge_request.source_project)}" "#{h @merge_request.source_branch}" - git checkout -b "#{h @merge_request.source_project_path}-#{h @merge_request.source_branch}" FETCH_HEAD - - else - :preserve - git fetch origin - git checkout -b "#{h @merge_request.source_branch}" "origin/#{h @merge_request.source_branch}" - %p - %strong Step 2. - Review the changes locally - - %p - %strong Step 3. - Merge the branch and fix any conflicts that come up - = clipboard_button(target: "pre#merge-info-3", title: _("Copy commands")) - %pre.dark#merge-info-3 - - if @merge_request.for_fork? - :preserve - git fetch origin - git checkout "#{h @merge_request.target_branch}" - git merge --no-ff "#{h @merge_request.source_project_path}-#{h @merge_request.source_branch}" - - else - :preserve - git fetch origin - git checkout "#{h @merge_request.target_branch}" - git merge --no-ff "#{h @merge_request.source_branch}" - %p - %strong Step 4. - Push the result of the merge to GitLab - = clipboard_button(target: "pre#merge-info-4", title: _("Copy commands")) - %pre.dark#merge-info-4 - :preserve - git push origin "#{h @merge_request.target_branch}" - - unless @merge_request.can_be_merged_by?(current_user) - %p - Note that pushing to GitLab requires write access to this repository. - %p - %strong Tip: - = succeed '.' do - You can also checkout merge requests locally by - = link_to 'following these guidelines', help_page_path('user/project/merge_requests/reviewing_and_managing_merge_requests.md', anchor: "checkout-merge-requests-locally-through-the-head-ref"), target: '_blank', rel: 'noopener noreferrer' diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml index 092055a5f85..4711143c900 100644 --- a/app/views/projects/merge_requests/_merge_request.html.haml +++ b/app/views/projects/merge_requests/_merge_request.html.haml @@ -20,7 +20,7 @@ · opened #{time_ago_with_tooltip(merge_request.created_at, placement: 'bottom')} by #{link_to_member(@project, merge_request.author, avatar: false)} - = render_if_exists 'shared/issuable/gitlab_team_member_badge', {author: merge_request.author} + = render_if_exists 'shared/issuable/gitlab_team_member_badge', author: merge_request.author - if merge_request.milestone %span.issuable-milestone.d-none.d-sm-inline-block @@ -55,7 +55,7 @@ - if merge_request.assignees.any? %li.gl-display-flex.gl-align-items-center = render 'shared/issuable/assignees', project: merge_request.project, issuable: merge_request - - if Feature.enabled?(:merge_request_reviewers, @project) && merge_request.reviewers.any? + - if Feature.enabled?(:merge_request_reviewers, @project, default_enabled: true) && merge_request.reviewers.any? %li.gl-display-flex.issuable-reviewers = render 'shared/issuable/reviewers', project: merge_request.project, issuable: merge_request = render 'projects/merge_requests/approvals_count', merge_request: merge_request diff --git a/app/views/projects/merge_requests/_mr_title.html.haml b/app/views/projects/merge_requests/_mr_title.html.haml index cd4ffa8602e..1691a304e8b 100644 --- a/app/views/projects/merge_requests/_mr_title.html.haml +++ b/app/views/projects/merge_requests/_mr_title.html.haml @@ -2,8 +2,9 @@ - can_update_merge_request = can?(current_user, :update_merge_request, @merge_request) - can_reopen_merge_request = can?(current_user, :reopen_merge_request, @merge_request) - state_human_name, state_icon_name = state_name_with_icon(@merge_request) +- are_close_and_open_buttons_hidden = merge_request_button_hidden?(@merge_request, true) && merge_request_button_hidden?(@merge_request, false) -- if @merge_request.closed_without_fork? +- if @merge_request.closed_or_merged_without_fork? .gl-alert.gl-alert-danger.gl-mb-5 = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') .gl-alert-body @@ -18,33 +19,35 @@ .issuable-meta #js-issuable-header-warnings - = issuable_meta(@merge_request, @project, "Merge request") + = issuable_meta(@merge_request, @project) %a.btn.btn-default.float-right.d-block.d-sm-none.gutter-toggle.issuable-gutter-toggle.js-sidebar-toggle{ href: "#" } = sprite_icon('chevron-double-lg-left') .detail-page-header-actions.js-issuable-actions - .clearfix.issue-btn-group.dropdown - %button.btn.btn-default.float-left.d-md-none{ type: "button", data: { toggle: "dropdown" } } + .clearfix.dropdown + %button.gl-button.btn.btn-default.float-left.gl-display-md-none.gl-w-full{ type: "button", data: { toggle: "dropdown" } } Options - = icon('caret-down') + = sprite_icon('chevron-down', css_class: 'gl-text-gray-500') .dropdown-menu.dropdown-menu-right %ul - if can_update_merge_request %li= link_to 'Edit', edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request) - - if can_update_merge_request - - unless @merge_request.closed? + - if @merge_request.opened? %li - = link_to @merge_request.work_in_progress? ? _('Mark as ready') : _('Mark as draft'), toggle_draft_issuable_path(@merge_request), method: :put, class: "js-draft-toggle-button" + = link_to @merge_request.work_in_progress? ? _('Mark as ready') : _('Mark as draft'), toggle_draft_merge_request_path(@merge_request), method: :put, class: "js-draft-toggle-button" %li{ class: [merge_request_button_visibility(@merge_request, true), 'js-close-item'] } = link_to 'Close', merge_request_path(@merge_request, merge_request: { state_event: :close }), method: :put, title: 'Close merge request' - if can_reopen_merge_request %li{ class: merge_request_button_visibility(@merge_request, false) } - = link_to 'Reopen', merge_request_path(@merge_request, merge_request: { state_event: :reopen }), method: :put, class: 'reopen-mr-link', title: 'Reopen merge request' + = link_to 'Reopen', merge_request_path(@merge_request, merge_request: { state_event: :reopen }), method: :put, title: 'Reopen merge request' - unless @merge_request.merged? || current_user == @merge_request.author %li= link_to 'Report abuse', new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)) - if can_update_merge_request = link_to 'Edit', edit_project_merge_request_path(@project, @merge_request), class: "d-none d-md-block btn gl-button btn-grouped js-issuable-edit qa-edit-button" - = render 'shared/issuable/close_reopen_button', issuable: @merge_request, can_update: can_update_merge_request, can_reopen: can_reopen_merge_request + - if can_update_merge_request && !are_close_and_open_buttons_hidden + = render 'projects/merge_requests/close_reopen_draft_report_toggle' + - elsif !@merge_request.merged? + = link_to _('Report abuse'), new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)), class: 'gl-display-none gl-display-md-block gl-button btn btn-warning-secondary float-right gl-ml-3', title: _('Report abuse') diff --git a/app/views/projects/merge_requests/_widget.html.haml b/app/views/projects/merge_requests/_widget.html.haml index 9736071b03f..123affeb5d6 100644 --- a/app/views/projects/merge_requests/_widget.html.haml +++ b/app/views/projects/merge_requests/_widget.html.haml @@ -1,4 +1,4 @@ -= javascript_tag nonce: true do += javascript_tag do :plain window.gl = window.gl || {}; window.gl.mrWidgetData = #{serialize_issuable(@merge_request, serializer: 'widget', issues_links: true)} diff --git a/app/views/projects/merge_requests/conflicts/_commit_stats.html.haml b/app/views/projects/merge_requests/conflicts/_commit_stats.html.haml index e6205f24ae6..cb1cb41eb71 100644 --- a/app/views/projects/merge_requests/conflicts/_commit_stats.html.haml +++ b/app/views/projects/merge_requests/conflicts/_commit_stats.html.haml @@ -1,16 +1,11 @@ .content-block.oneline-block.files-changed{ "v-if" => "!isLoading && !hasError" } .inline-parallel-buttons{ "v-if" => "showDiffViewTypeSwitcher" } .btn-group - %button.btn{ ":class" => "{'active': !isParallel}", "@click" => "handleViewTypeChange('inline')" } - Inline - %button.btn{ ":class" => "{'active': isParallel}", "@click" => "handleViewTypeChange('parallel')" } - Side-by-side + %button.btn.gl-button{ ":class" => "{'active': !isParallel}", "@click" => "handleViewTypeChange('inline')" } + = _('Inline') + %button.btn.gl-button{ ":class" => "{'active': isParallel}", "@click" => "handleViewTypeChange('parallel')" } + = _('Side-by-side') .js-toggle-container .commit-stat-summary - Showing - %strong.cred {{conflictsCountText}} - between - %strong.ref-name {{conflictsData.sourceBranch}} - and - %strong.ref-name {{conflictsData.targetBranch}} + = _('Showing %{conflict_start}%{conflicts_text}%{strong_end} between %{ref_start}%{source_branch}%{strong_end} and %{ref_start}%{target_branch}%{strong_end}').html_safe % { conflict_start: '<strong class="cred">'.html_safe, ref_start: '<strong class="ref-name">'.html_safe, strong_end: '</strong>'.html_safe, conflicts_text: '{{conflictsCountText}}', source_branch: '{{conflictsData.sourceBranch}}', target_branch: '{{conflictsData.targetBranch}}' } diff --git a/app/views/projects/merge_requests/conflicts/_file_actions.html.haml b/app/views/projects/merge_requests/conflicts/_file_actions.html.haml index 0839880713f..220ddf1bad3 100644 --- a/app/views/projects/merge_requests/conflicts/_file_actions.html.haml +++ b/app/views/projects/merge_requests/conflicts/_file_actions.html.haml @@ -1,12 +1,12 @@ -.file-actions - .btn-group{ "v-if" => "file.type === 'text'" } - %button.btn{ ":class" => "{ 'active': file.resolveMode == 'interactive' }", +.file-actions.d-flex.align-items-center.gl-ml-auto.gl-align-self-start + .btn-group.gl-mr-3{ "v-if" => "file.type === 'text'" } + %button.btn.gl-button{ ":class" => "{ 'active': file.resolveMode == 'interactive' }", '@click' => "onClickResolveModeButton(file, 'interactive')", type: 'button' } - Interactive mode - %button.btn{ ':class' => "{ 'active': file.resolveMode == 'edit' }", + = _('Interactive mode') + %button.btn.gl-button{ ':class' => "{ 'active': file.resolveMode == 'edit' }", '@click' => "onClickResolveModeButton(file, 'edit')", type: 'button' } - Edit inline - %a.btn.view-file{ ":href" => "file.blobPath" } - View file @{{conflictsData.shortCommitSha}} + = _('Edit inline') + %a.btn.gl-button.view-file{ ":href" => "file.blobPath" } + = _('View file @%{commit_sha}') % { commit_sha: '{{conflictsData.shortCommitSha}}' } diff --git a/app/views/projects/merge_requests/conflicts/_submit_form.html.haml b/app/views/projects/merge_requests/conflicts/_submit_form.html.haml index 94c262d300e..15655e2b162 100644 --- a/app/views/projects/merge_requests/conflicts/_submit_form.html.haml +++ b/app/views/projects/merge_requests/conflicts/_submit_form.html.haml @@ -18,7 +18,7 @@ .offset-md-4.col-md-8 .row .col-6 - %button.btn.btn-success.js-submit-button{ type: "button", "@click" => "commit()", ":disabled" => "!readyToCommit" } + %button.btn.gl-button.btn-success.js-submit-button{ type: "button", "@click" => "commit()", ":disabled" => "!readyToCommit" } %span {{commitButtonText}} .col-6.text-right = link_to "Cancel", project_merge_request_path(@merge_request.project, @merge_request), class: "gl-button btn btn-cancel" diff --git a/app/views/projects/merge_requests/conflicts/show.html.haml b/app/views/projects/merge_requests/conflicts/show.html.haml index decdbce3fa7..827df540629 100644 --- a/app/views/projects/merge_requests/conflicts/show.html.haml +++ b/app/views/projects/merge_requests/conflicts/show.html.haml @@ -20,9 +20,10 @@ .files-wrapper{ "v-if" => "!isLoading && !hasError" } .files .diff-file.file-holder.conflict{ "v-for" => "file in conflictsData.files" } - .js-file-title.file-title - %i.fa.fa-fw{ ":class" => "file.iconClass" } - %strong {{file.filePath}} + .js-file-title.file-title.file-title-flex-parent.cursor-default + .file-header-content + %file-icon{ ':file-name': 'file.filePath', ':size': '18', 'css-classes': 'gl-mr-2' } + %strong.file-title-name {{file.filePath}} = render partial: 'projects/merge_requests/conflicts/file_actions' .diff-content.diff-wrap-lines .file-content{ "v-show" => "!isParallel && file.resolveMode === 'interactive' && file.type === 'text'" } diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml index 6b506c38795..c70fc624dde 100644 --- a/app/views/projects/merge_requests/show.html.haml +++ b/app/views/projects/merge_requests/show.html.haml @@ -16,9 +16,6 @@ .merge-request{ data: { mr_action: mr_action, url: merge_request_path(@merge_request, format: :json), project_path: project_path(@merge_request.project), lock_version: @merge_request.lock_version } } = render "projects/merge_requests/mr_title" - - if @merge_request.source_branch_exists? - = render "projects/merge_requests/how_to_merge" - .merge-request-details.issuable-details{ data: { id: @merge_request.project.id } } = render "projects/merge_requests/mr_box" .merge-request-tabs-holder{ class: ("js-tabs-affix" unless ENV['RAILS_ENV'] == 'test') } @@ -58,6 +55,8 @@ = render "projects/merge_requests/description" = render "projects/merge_requests/widget" = render "projects/merge_requests/awards_block" + - if mr_action === "show" + - add_page_startup_api_call discussions_path(@merge_request) #js-vue-mr-discussions{ data: { notes_data: notes_data(@merge_request).to_json, noteable_data: serialize_issuable(@merge_request, serializer: 'noteable'), noteable_type: 'MergeRequest', diff --git a/app/views/projects/merge_requests/widget/open/_error.html.haml b/app/views/projects/merge_requests/widget/open/_error.html.haml index bbdc053609f..31efa64c672 100644 --- a/app/views/projects/merge_requests/widget/open/_error.html.haml +++ b/app/views/projects/merge_requests/widget/open/_error.html.haml @@ -1,5 +1,5 @@ %h4 - = icon('exclamation-triangle') + = sprite_icon('warning-solid') This merge request failed to be merged automatically %p |