summaryrefslogtreecommitdiff
path: root/app/views/projects
diff options
context:
space:
mode:
Diffstat (limited to 'app/views/projects')
-rw-r--r--app/views/projects/_deletion_failed.html.haml4
-rw-r--r--app/views/projects/_files.html.haml2
-rw-r--r--app/views/projects/_home_panel.html.haml5
-rw-r--r--app/views/projects/_last_push.html.haml6
-rw-r--r--app/views/projects/_merge_request_merge_checks_settings.html.haml29
-rw-r--r--app/views/projects/_merge_request_merge_method_settings.html.haml2
-rw-r--r--app/views/projects/_merge_request_merge_options_settings.html.haml21
-rw-r--r--app/views/projects/_new_project_fields.html.haml4
-rw-r--r--app/views/projects/blame/show.html.haml3
-rw-r--r--app/views/projects/blob/_blob.html.haml2
-rw-r--r--app/views/projects/blob/_breadcrumb.html.haml2
-rw-r--r--app/views/projects/blob/_editor.html.haml2
-rw-r--r--app/views/projects/blob/edit.html.haml5
-rw-r--r--app/views/projects/branches/index.html.haml2
-rw-r--r--app/views/projects/branches/new.html.haml4
-rw-r--r--app/views/projects/buttons/_clone.html.haml14
-rw-r--r--app/views/projects/ci/pipeline_editor/show.html.haml1
-rw-r--r--app/views/projects/ci/secure_files/show.html.haml4
-rw-r--r--app/views/projects/commits/_commits.html.haml8
-rw-r--r--app/views/projects/default_branch/_show.html.haml14
-rw-r--r--app/views/projects/deployments/_deployment.html.haml1
-rw-r--r--app/views/projects/diffs/_diffs.html.haml3
-rw-r--r--app/views/projects/diffs/_text_file.html.haml2
-rw-r--r--app/views/projects/feature_flags/edit.html.haml2
-rw-r--r--app/views/projects/forks/error.html.haml8
-rw-r--r--app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml5
-rw-r--r--app/views/projects/graphs/charts.html.haml2
-rw-r--r--app/views/projects/issues/_alert_moved_from_service_desk.html.haml4
-rw-r--r--app/views/projects/issues/_discussion.html.haml2
-rw-r--r--app/views/projects/issues/index.html.haml2
-rw-r--r--app/views/projects/issues/show.html.haml1
-rw-r--r--app/views/projects/jobs/index.html.haml2
-rw-r--r--app/views/projects/mattermosts/_no_teams.html.haml6
-rw-r--r--app/views/projects/mattermosts/new.html.haml26
-rw-r--r--app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml76
-rw-r--r--app/views/projects/merge_requests/_code_dropdown.html.haml39
-rw-r--r--app/views/projects/merge_requests/_mr_box.html.haml8
-rw-r--r--app/views/projects/merge_requests/_mr_title.html.haml61
-rw-r--r--app/views/projects/merge_requests/creations/_new_compare.html.haml4
-rw-r--r--app/views/projects/merge_requests/invalid.html.haml4
-rw-r--r--app/views/projects/merge_requests/show.html.haml16
-rw-r--r--app/views/projects/milestones/index.html.haml2
-rw-r--r--app/views/projects/milestones/show.html.haml4
-rw-r--r--app/views/projects/mirrors/_mirror_repos.html.haml4
-rw-r--r--app/views/projects/pages/_access.html.haml2
-rw-r--r--app/views/projects/pages/_destroy.haml2
-rw-r--r--app/views/projects/pages/_list.html.haml2
-rw-r--r--app/views/projects/pages_domains/_certificate.html.haml3
-rw-r--r--app/views/projects/pages_domains/_form.html.haml7
-rw-r--r--app/views/projects/pipelines/_with_tabs.html.haml71
-rw-r--r--app/views/projects/pipelines/show.html.haml2
-rw-r--r--app/views/projects/runners/_group_runners.html.haml5
-rw-r--r--app/views/projects/serverless/functions/index.html.haml17
-rw-r--r--app/views/projects/serverless/functions/show.html.haml19
-rw-r--r--app/views/projects/services/_form.html.haml12
-rw-r--r--app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml98
-rw-r--r--app/views/projects/services/mattermost_slash_commands/_help.html.haml17
-rw-r--r--app/views/projects/services/mattermost_slash_commands/_installation_info.html.haml7
-rw-r--r--app/views/projects/services/prometheus/_custom_metrics.html.haml28
-rw-r--r--app/views/projects/services/prometheus/_external_alerts.html.haml8
-rw-r--r--app/views/projects/services/prometheus/_help.html.haml8
-rw-r--r--app/views/projects/services/prometheus/_metrics.html.haml38
-rw-r--r--app/views/projects/services/prometheus/_show.html.haml9
-rw-r--r--app/views/projects/services/prometheus/_top.html.haml9
-rw-r--r--app/views/projects/services/slack/_help.haml4
-rw-r--r--app/views/projects/services/slack_slash_commands/_help.html.haml93
-rw-r--r--app/views/projects/settings/ci_cd/_form.html.haml22
-rw-r--r--app/views/projects/settings/ci_cd/show.html.haml16
-rw-r--r--app/views/projects/settings/operations/_prometheus.html.haml17
-rw-r--r--app/views/projects/settings/operations/show.html.haml7
-rw-r--r--app/views/projects/tree/_tree_header.html.haml6
-rw-r--r--app/views/projects/work_items/index.html.haml2
72 files changed, 320 insertions, 629 deletions
diff --git a/app/views/projects/_deletion_failed.html.haml b/app/views/projects/_deletion_failed.html.haml
index f9d8a2d2989..85a7b9eb22b 100644
--- a/app/views/projects/_deletion_failed.html.haml
+++ b/app/views/projects/_deletion_failed.html.haml
@@ -3,7 +3,7 @@
= render Pajamas::AlertComponent.new(variant: :warning,
dismissible: false,
- alert_class: 'project-deletion-failed-message') do
- .gl-alert-body
+ alert_class: 'project-deletion-failed-message') do |c|
+ = c.body do
This project was scheduled for deletion, but failed with the following message:
= project.delete_error
diff --git a/app/views/projects/_files.html.haml b/app/views/projects/_files.html.haml
index 74ace549bb1..bea5d548e03 100644
--- a/app/views/projects/_files.html.haml
+++ b/app/views/projects/_files.html.haml
@@ -8,7 +8,7 @@
#tree-holder.tree-holder.clearfix
.nav-block.gl-display-flex.gl-xs-flex-direction-column.gl-align-items-stretch
- = render 'projects/tree/tree_header', tree: @tree
+ = render 'projects/tree/tree_header', tree: @tree, is_project_overview: is_project_overview
.info-well.gl-display-none.gl-sm-display-flex.project-last-commit.gl-flex-direction-column
#js-last-commit.gl-m-auto
diff --git a/app/views/projects/_home_panel.html.haml b/app/views/projects/_home_panel.html.haml
index 8e6cc6da65d..eee9cfe0618 100644
--- a/app/views/projects/_home_panel.html.haml
+++ b/app/views/projects/_home_panel.html.haml
@@ -1,7 +1,7 @@
- empty_repo = @project.empty_repo?
- show_auto_devops_callout = show_auto_devops_callout?(@project)
- emails_disabled = @project.emails_disabled?
-- cache_enabled = Feature.enabled?(:cache_home_panel, @project, type: :development, default_enabled: :yaml)
+- cache_enabled = Feature.enabled?(:cache_home_panel, @project, type: :development)
.project-home-panel.js-show-on-project-root.gl-my-5{ class: [("empty-project" if empty_repo)] }
.gl-display-flex.gl-justify-content-space-between.gl-flex-wrap.gl-sm-flex-direction-column.gl-mb-3
@@ -19,8 +19,7 @@
- if can?(current_user, :read_project, @project)
%span.gl-display-inline-block.gl-vertical-align-middle
= s_('ProjectPage|Project ID: %{project_id}') % { project_id: @project.id }
- - button_class = "btn gl-button btn-sm btn-tertiary btn-default-tertiary home-panel-metadata"
- = clipboard_button(title: s_('ProjectPage|Copy project ID'), text: @project.id, class: button_class)
+ = clipboard_button(title: s_('ProjectPage|Copy project ID'), text: @project.id)
- if current_user
%span.gl-ml-3.gl-mb-3
= render 'shared/members/access_request_links', source: @project
diff --git a/app/views/projects/_last_push.html.haml b/app/views/projects/_last_push.html.haml
index 66857dadb65..5a2add9de1e 100644
--- a/app/views/projects/_last_push.html.haml
+++ b/app/views/projects/_last_push.html.haml
@@ -2,8 +2,8 @@
- if event && show_last_push_widget?(event)
= render Pajamas::AlertComponent.new(variant: :success,
alert_class: 'gl-mt-3',
- close_button_class: 'js-close-banner') do
- .gl-alert-body
+ close_button_class: 'js-close-banner') do |c|
+ = c.body do
%span= s_("LastPushEvent|You pushed to")
%strong.gl-display-inline-flex.gl-max-w-50p{ data: { toggle: 'tooltip' }, title: event.ref_name }
= link_to event.ref_name, project_commits_path(event.project, event.ref_name), class: 'ref-name gl-text-truncate'
@@ -15,6 +15,6 @@
#{time_ago_with_tooltip(event.created_at)}
- if can?(current_user, :create_merge_request_in, event.project.default_merge_request_target)
- .gl-alert-actions
+ = c.actions do
= link_to new_mr_path_from_push_event(event), title: _("New merge request"), class: "btn gl-button btn-confirm qa-create-merge-request" do
#{ _('Create merge request') }
diff --git a/app/views/projects/_merge_request_merge_checks_settings.html.haml b/app/views/projects/_merge_request_merge_checks_settings.html.haml
index 4f9af40f711..3345b3043b8 100644
--- a/app/views/projects/_merge_request_merge_checks_settings.html.haml
+++ b/app/views/projects/_merge_request_merge_checks_settings.html.haml
@@ -3,21 +3,16 @@
.form-group
%b= s_('ProjectSettings|Merge checks')
%p.text-secondary= s_('ProjectSettings|These checks must pass before merge requests can be merged.')
- .form-check.mb-2.builds-feature
- = form.check_box :only_allow_merge_if_pipeline_succeeds, class: 'form-check-input'
- = form.label :only_allow_merge_if_pipeline_succeeds, class: 'form-check-label' do
- = s_('ProjectSettings|Pipelines must succeed')
- .text-secondary
- = s_("ProjectSettings|Merge requests can't be merged if the latest pipeline did not succeed or is still running.")
- .form-check.mb-2
- .gl-pl-6
- = form.check_box :allow_merge_on_skipped_pipeline, class: 'form-check-input'
- = form.label :allow_merge_on_skipped_pipeline, class: 'form-check-label' do
- = s_('ProjectSettings|Skipped pipelines are considered successful')
- .text-secondary
- = s_('ProjectSettings|Introduces the risk of merging changes that do not pass the pipeline.')
- .form-check.mb-2
- = form.check_box :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-input', data: { qa_selector: 'allow_merge_if_all_discussions_are_resolved_checkbox' }
- = form.label :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-label' do
- = s_('ProjectSettings|All discussions must be resolved')
+ .builds-feature
+ = form.gitlab_ui_checkbox_component :only_allow_merge_if_pipeline_succeeds,
+ s_('ProjectSettings|Pipelines must succeed'),
+ help_text: s_("ProjectSettings|Merge requests can't be merged if the latest pipeline did not succeed or is still running.")
+ .gl-pl-6
+ = form.gitlab_ui_checkbox_component :allow_merge_on_skipped_pipeline,
+ s_('ProjectSettings|Skipped pipelines are considered successful'),
+ help_text: s_('ProjectSettings|Introduces the risk of merging changes that do not pass the pipeline.'),
+ checkbox_options: { class: 'gl-pl-6' }
+ = form.gitlab_ui_checkbox_component :only_allow_merge_if_all_discussions_are_resolved,
+ s_('ProjectSettings|All threads must be resolved'),
+ checkbox_options: { data: { qa_selector: 'allow_merge_if_all_discussions_are_resolved_checkbox' } }
= render_if_exists 'projects/merge_request_merge_checks_jira_enforcement', form: form, project: @project
diff --git a/app/views/projects/_merge_request_merge_method_settings.html.haml b/app/views/projects/_merge_request_merge_method_settings.html.haml
index 250f7e94e84..cb660750632 100644
--- a/app/views/projects/_merge_request_merge_method_settings.html.haml
+++ b/app/views/projects/_merge_request_merge_method_settings.html.haml
@@ -4,7 +4,7 @@
%b= s_('ProjectSettings|Merge method')
%p.text-secondary
= s_('ProjectSettings|Determine what happens to the commit history when you merge a merge request.')
- = link_to s_('ProjectSettings|Learn about commit history.'), help_page_path('user/project/merge_requests/commits.md'), target: '_blank', rel: 'noopener noreferrer'
+ = link_to s_('ProjectSettings|How do they differ?'), help_page_path('user/project/merge_requests/methods/index.md'), target: '_blank', rel: 'noopener noreferrer'
.form-check.mb-2
= form.radio_button :merge_method, :merge, class: "js-merge-method-radio form-check-input"
= label_tag :project_merge_method_merge, class: 'form-check-label' do
diff --git a/app/views/projects/_merge_request_merge_options_settings.html.haml b/app/views/projects/_merge_request_merge_options_settings.html.haml
index 20f3933d0a8..e91c001ea3d 100644
--- a/app/views/projects/_merge_request_merge_options_settings.html.haml
+++ b/app/views/projects/_merge_request_merge_options_settings.html.haml
@@ -5,17 +5,10 @@
%p.text-secondary= s_('ProjectSettings|Additional settings that influence how and when merges are done.')
= render_if_exists 'projects/merge_pipelines_settings', form: form
= render_if_exists 'projects/merge_trains_settings', form: form
- .form-check.mb-2
- = form.check_box :resolve_outdated_diff_discussions, class: 'form-check-input'
- = form.label :resolve_outdated_diff_discussions, class: 'form-check-label' do
- = s_('ProjectSettings|Automatically resolve merge request diff discussions when they become outdated')
- .form-check.mb-2
- = form.check_box :printing_merge_request_link_enabled, class: 'form-check-input'
- = form.label :printing_merge_request_link_enabled, class: 'form-check-label' do
- = s_('ProjectSettings|Show link to create or view a merge request when pushing from the command line')
- .form-check.mb-2
- = form.check_box :remove_source_branch_after_merge, class: 'form-check-input'
- = form.label :remove_source_branch_after_merge, class: 'form-check-label' do
- = s_('ProjectSettings|Enable "Delete source branch" option by default')
- .descr.text-secondary
- = s_('ProjectSettings|Existing merge requests and protected branches are not affected.')
+ = form.gitlab_ui_checkbox_component :resolve_outdated_diff_discussions,
+ s_('ProjectSettings|Automatically resolve merge request diff threads when they become outdated')
+ = form.gitlab_ui_checkbox_component :printing_merge_request_link_enabled,
+ s_('ProjectSettings|Show link to create or view a merge request when pushing from the command line')
+ = form.gitlab_ui_checkbox_component :remove_source_branch_after_merge,
+ s_('ProjectSettings|Enable "Delete source branch" option by default'),
+ help_text: s_('ProjectSettings|Existing merge requests and protected branches are not affected.')
diff --git a/app/views/projects/_new_project_fields.html.haml b/app/views/projects/_new_project_fields.html.haml
index e79825bdfc4..66fa1a69ef9 100644
--- a/app/views/projects/_new_project_fields.html.haml
+++ b/app/views/projects/_new_project_fields.html.haml
@@ -39,8 +39,8 @@
= project_tip.html_safe
= render Pajamas::AlertComponent.new(alert_class: "gl-mb-4 gl-display-none js-user-readme-repo",
dismissible: false,
- variant: :success) do
- .gl-alert-body
+ variant: :success) do |c|
+ = c.body do
- help_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: help_page_path('user/profile/index', anchor: 'add-details-to-your-profile-with-a-readme') }
= html_escape(_('%{project_path} is a project that you can use to add a README to your GitLab profile. Create a public project and initialize the repository with a README to get started. %{help_link_start}Learn more.%{help_link_end}')) % { project_path: "<strong>#{current_user.username} / #{current_user.username}</strong>".html_safe, help_link_start: help_link_start, help_link_end: '</a>'.html_safe }
diff --git a/app/views/projects/blame/show.html.haml b/app/views/projects/blame/show.html.haml
index 7f72438c3f9..bc1e62a8980 100644
--- a/app/views/projects/blame/show.html.haml
+++ b/app/views/projects/blame/show.html.haml
@@ -58,3 +58,6 @@
#{line}
- current_line += line_count
+
+ - if blame_pagination
+ = paginate(blame_pagination, theme: "gitlab")
diff --git a/app/views/projects/blob/_blob.html.haml b/app/views/projects/blob/_blob.html.haml
index 85b9a69ab4c..2c3aade1068 100644
--- a/app/views/projects/blob/_blob.html.haml
+++ b/app/views/projects/blob/_blob.html.haml
@@ -14,7 +14,7 @@
#blob-content-holder.blob-content-holder
- if @code_navigation_path
#js-code-navigation{ data: { code_navigation_path: @code_navigation_path, blob_path: blob.path, definition_path_prefix: project_blob_path(@project, @ref) } }
- - if Feature.enabled?(:refactor_blob_viewer, @project, default_enabled: :yaml) && !expanded
+ - if Feature.enabled?(:refactor_blob_viewer, @project) && !expanded
-# Data info will be removed once we migrate this to use GraphQL
-# Follow-up issue: https://gitlab.com/gitlab-org/gitlab/-/issues/330406
#js-view-blob-app{ data: { blob_path: blob.path,
diff --git a/app/views/projects/blob/_breadcrumb.html.haml b/app/views/projects/blob/_breadcrumb.html.haml
index e666bb237bd..7c2caf34fd1 100644
--- a/app/views/projects/blob/_breadcrumb.html.haml
+++ b/app/views/projects/blob/_breadcrumb.html.haml
@@ -2,7 +2,7 @@
.nav-block
.tree-ref-container
.tree-ref-holder
- = render 'shared/ref_switcher', destination: 'blob', path: @path
+ = render 'shared/ref_switcher', destination: 'blob'
%ul.breadcrumb.repo-breadcrumb
%li.breadcrumb-item
diff --git a/app/views/projects/blob/_editor.html.haml b/app/views/projects/blob/_editor.html.haml
index c9303e19d5d..09a275c24a1 100644
--- a/app/views/projects/blob/_editor.html.haml
+++ b/app/views/projects/blob/_editor.html.haml
@@ -40,6 +40,8 @@
Soft wrap
.file-editor.code
+ - if Feature.enabled?(:source_editor_toolbar, current_user)
+ #editor-toolbar
.js-edit-mode-pane.qa-editor#editor{ data: { 'editor-loading': true } }<
%pre.editor-loading-content= params[:content] || local_assigns[:blob_data]
- if local_assigns[:path]
diff --git a/app/views/projects/blob/edit.html.haml b/app/views/projects/blob/edit.html.haml
index aefa4a41ab5..f80601ef221 100644
--- a/app/views/projects/blob/edit.html.haml
+++ b/app/views/projects/blob/edit.html.haml
@@ -6,12 +6,13 @@
- if @conflict
= render Pajamas::AlertComponent.new(alert_class: 'gl-mb-5 gl-mt-5',
variant: :danger,
- dismissible: false) do
+ dismissible: false) do |c|
- blob_url = project_blob_path(@project, @id)
- external_link_icon = content_tag 'span', { aria: { label: _('Opens new window') }} do
- sprite_icon('external-link', css_class: 'gl-icon').html_safe
- blob_link_start = '<a href="%{url}" class="gl-link" target="_blank" rel="noopener noreferrer">'.html_safe % { url: blob_url }
- = _('Someone edited the file the same time you did. Please check out %{link_start}the file %{icon}%{link_end} and make sure your changes will not unintentionally remove theirs.').html_safe % { link_start: blob_link_start, link_end: '</a>'.html_safe , icon: external_link_icon }
+ = c.body do
+ = _('Someone edited the file the same time you did. Please check out %{link_start}the file %{icon}%{link_end} and make sure your changes will not unintentionally remove theirs.').html_safe % { link_start: blob_link_start, link_end: '</a>'.html_safe , icon: external_link_icon }
%h3.page-title.blob-edit-page-title
diff --git a/app/views/projects/branches/index.html.haml b/app/views/projects/branches/index.html.haml
index 85a0346e691..295b2de9bd2 100644
--- a/app/views/projects/branches/index.html.haml
+++ b/app/views/projects/branches/index.html.haml
@@ -39,7 +39,7 @@
%ul.content-list.all-branches
- @branches.each do |branch|
= render "projects/branches/branch", branch: branch, merged: @merged_branch_names.include?(branch.name), commit_status: @branch_pipeline_statuses[branch.name], show_commit_status: @branch_pipeline_statuses.any?
- - if Feature.enabled?(:branch_list_keyset_pagination, @project, default_enabled: :yaml)
+ - if Feature.enabled?(:branch_list_keyset_pagination, @project)
= render('kaminari/gitlab/without_count', previous_path: @prev_path, next_path: @next_path)
- else
= paginate @branches, theme: 'gitlab'
diff --git a/app/views/projects/branches/new.html.haml b/app/views/projects/branches/new.html.haml
index 07bae7819a4..c06f60bd05d 100644
--- a/app/views/projects/branches/new.html.haml
+++ b/app/views/projects/branches/new.html.haml
@@ -2,8 +2,8 @@
- default_ref = params[:ref] || @project.default_branch
- if @error
- = render Pajamas::AlertComponent.new(variant: :danger) do
- .gl-alert-body
+ = render Pajamas::AlertComponent.new(variant: :danger) do |c|
+ = c.body do
= @error
%h3.page-title
= _('New Branch')
diff --git a/app/views/projects/buttons/_clone.html.haml b/app/views/projects/buttons/_clone.html.haml
index 74d10f11898..5fd1c5cd403 100644
--- a/app/views/projects/buttons/_clone.html.haml
+++ b/app/views/projects/buttons/_clone.html.haml
@@ -30,13 +30,23 @@
%label.label-bold{ class: 'gl-px-4!' }
= _('Open in your IDE')
- if ssh_enabled?
- %a.dropdown-item.open-with-link{ href: 'vscode://vscode.git/clone?url=' + CGI.escape(project.ssh_url_to_repo) }
+ - escaped_ssh_url_to_repo = CGI.escape(project.ssh_url_to_repo)
+ %a.dropdown-item.open-with-link{ href: 'vscode://vscode.git/clone?url=' + escaped_ssh_url_to_repo }
.gl-new-dropdown-item-text-wrapper
= _('Visual Studio Code (SSH)')
- if http_enabled?
- %a.dropdown-item.open-with-link{ href: 'vscode://vscode.git/clone?url=' + CGI.escape(project.http_url_to_repo) }
+ - escaped_http_url_to_repo = CGI.escape(project.http_url_to_repo)
+ %a.dropdown-item.open-with-link{ href: 'vscode://vscode.git/clone?url=' + escaped_http_url_to_repo }
.gl-new-dropdown-item-text-wrapper
= _('Visual Studio Code (HTTPS)')
+ - if ssh_enabled?
+ %a.dropdown-item.open-with-link{ href: 'jetbrains://idea/checkout/git?idea.required.plugins.id=Git4Idea&checkout.repo=' + escaped_ssh_url_to_repo }
+ .gl-new-dropdown-item-text-wrapper
+ = _('IntelliJ IDEA (SSH)')
+ - if http_enabled?
+ %a.dropdown-item.open-with-link{ href: 'jetbrains://idea/checkout/git?idea.required.plugins.id=Git4Idea&checkout.repo=' + escaped_http_url_to_repo }
+ .gl-new-dropdown-item-text-wrapper
+ = _('IntelliJ IDEA (HTTPS)')
- if show_xcode_link?(@project)
%a.dropdown-item.open-with-link{ href: xcode_uri_to_repo(@project) }
.gl-new-dropdown-item-text-wrapper
diff --git a/app/views/projects/ci/pipeline_editor/show.html.haml b/app/views/projects/ci/pipeline_editor/show.html.haml
index c4757ea9c26..18eac48d42a 100644
--- a/app/views/projects/ci/pipeline_editor/show.html.haml
+++ b/app/views/projects/ci/pipeline_editor/show.html.haml
@@ -1,5 +1,6 @@
- @force_fluid_layout = true
- add_page_specific_style 'page_bundles/pipelines'
+- add_page_specific_style 'page_bundles/pipeline_editor'
- page_title s_('Pipelines|Pipeline Editor')
- content_for :prefetch_asset_tags do
diff --git a/app/views/projects/ci/secure_files/show.html.haml b/app/views/projects/ci/secure_files/show.html.haml
index db0734be6bd..1a87ccd753c 100644
--- a/app/views/projects/ci/secure_files/show.html.haml
+++ b/app/views/projects/ci/secure_files/show.html.haml
@@ -1,5 +1,3 @@
-- @content_class = "limit-container-width"
-
- page_title s_('Secure Files')
-#js-ci-secure-files{ data: { project_id: @project.id } }
+#js-ci-secure-files{ data: { project_id: @project.id, admin: can?(current_user, :admin_secure_files, @project).to_s, file_size_limit: Ci::SecureFile::FILE_SIZE_LIMIT.to_mb } }
diff --git a/app/views/projects/commits/_commits.html.haml b/app/views/projects/commits/_commits.html.haml
index 82d3bfbcfe6..c6fb3bcd559 100644
--- a/app/views/projects/commits/_commits.html.haml
+++ b/app/views/projects/commits/_commits.html.haml
@@ -14,7 +14,7 @@
%li.commits-row{ data: { day: day } }
%ul.content-list.commit-list.flex-list
- - if Feature.enabled?(:cached_commits, project, default_enabled: :yaml)
+ - if Feature.enabled?(:cached_commits, project)
= render partial: 'projects/commits/commit', collection: daily_commits, locals: { project: project, ref: ref, merge_request: merge_request }, cached: -> (commit) { commit_partial_cache_key(commit, ref: ref, merge_request: merge_request, request: request) }
- else
= render partial: 'projects/commits/commit', collection: daily_commits, locals: { project: project, ref: ref, merge_request: merge_request }
@@ -28,7 +28,7 @@
%li.commits-row
%ul.content-list.commit-list.flex-list
- - if Feature.enabled?(:cached_commits, project, default_enabled: :yaml)
+ - if Feature.enabled?(:cached_commits, project)
= render partial: 'projects/commits/commit', collection: context_commits, locals: { project: project, ref: ref, merge_request: merge_request }, cached: -> (commit) { commit_partial_cache_key(commit, ref: ref, merge_request: merge_request, request: request) }
- else
= render partial: 'projects/commits/commit', collection: context_commits, locals: { project: project, ref: ref, merge_request: merge_request }
@@ -36,8 +36,8 @@
- if hidden > 0
%li
= render Pajamas::AlertComponent.new(variant: :warning,
- dismissible: false) do
- .gl-alert-body
+ dismissible: false) do |c|
+ = c.body do
= n_('%s additional commit has been omitted to prevent performance issues.', '%s additional commits have been omitted to prevent performance issues.', hidden) % number_with_delimiter(hidden)
- if can_update_merge_request && context_commits&.empty?
diff --git a/app/views/projects/default_branch/_show.html.haml b/app/views/projects/default_branch/_show.html.haml
index f9d3af7aa36..2d3d36a9157 100644
--- a/app/views/projects/default_branch/_show.html.haml
+++ b/app/views/projects/default_branch/_show.html.haml
@@ -9,7 +9,7 @@
= _('Set the default branch for this project. All merge requests and commits are made against this branch unless you specify a different one.')
.settings-content
- = form_for @project, remote: true, html: { multipart: true, anchor: 'default-branch-settings' }, authenticity_token: true do |f|
+ = gitlab_ui_form_for @project, remote: true, html: { multipart: true, anchor: 'default-branch-settings' }, authenticity_token: true do |f|
%fieldset
- if @project.empty_repo?
.text-secondary
@@ -20,12 +20,10 @@
= f.select(:default_branch, @project.repository.branch_names, {}, {class: 'select2 select-wide', data: { qa_selector: 'default_branch_dropdown' }})
.form-group
- .form-check
- = f.check_box :autoclose_referenced_issues, class: 'form-check-input'
- = f.label :autoclose_referenced_issues, class: 'form-check-label' do
- %strong= _("Auto-close referenced issues on default branch")
- .form-text.text-muted
- = _("When merge requests and commits in the default branch close, any issues they reference also close.")
- = link_to sprite_icon('question-o'), help_page_path('user/project/issues/managing_issues.md', anchor: 'closing-issues-automatically'), target: '_blank', rel: 'noopener noreferrer'
+ - help_text = _("When merge requests and commits in the default branch close, any issues they reference also close.")
+ - help_icon = link_to sprite_icon('question-o'), help_page_path('user/project/issues/managing_issues.md', anchor: 'closing-issues-automatically'), target: '_blank', rel: 'noopener noreferrer'
+ = f.gitlab_ui_checkbox_component :autoclose_referenced_issues,
+ _("Auto-close referenced issues on default branch"),
+ help_text: (help_text + "&nbsp;" + help_icon).html_safe
= f.submit _('Save changes'), class: "gl-button btn btn-confirm", data: { qa_selector: 'save_changes_button' }
diff --git a/app/views/projects/deployments/_deployment.html.haml b/app/views/projects/deployments/_deployment.html.haml
index 504bbf3a304..e92297a5a6a 100644
--- a/app/views/projects/deployments/_deployment.html.haml
+++ b/app/views/projects/deployments/_deployment.html.haml
@@ -46,3 +46,4 @@
.btn-group.table-action-buttons
= render 'projects/deployments/actions', deployment: deployment
= render 'projects/deployments/rollback', deployment: deployment
+ = render_if_exists 'projects/deployments/approvals', deployment: deployment
diff --git a/app/views/projects/diffs/_diffs.html.haml b/app/views/projects/diffs/_diffs.html.haml
index 6f4ffecd5e0..d596199f816 100644
--- a/app/views/projects/diffs/_diffs.html.haml
+++ b/app/views/projects/diffs/_diffs.html.haml
@@ -34,8 +34,7 @@
- if load_diff_files_async
- url = url_for(safe_params.merge(action: 'diff_files'))
.js-diffs-batch{ data: { diff_files_path: url } }
- .text-center
- %span.gl-spinner.gl-spinner-md
+ = gl_loading_icon( size: "md", css_class: "gl-mt-4" )
- else
= render partial: 'projects/diffs/file', collection: diff_files, as: :diff_file, locals: { project: diffs.project, environment: environment, diff_page_context: diff_page_context }
diff --git a/app/views/projects/diffs/_text_file.html.haml b/app/views/projects/diffs/_text_file.html.haml
index 2cd215c5518..9b64afa8c60 100644
--- a/app/views/projects/diffs/_text_file.html.haml
+++ b/app/views/projects/diffs/_text_file.html.haml
@@ -4,7 +4,7 @@
%a.show-suppressed-diff.cursor-pointer.js-show-suppressed-diff= _("Changes suppressed. Click to show.")
%table.text-file.diff-wrap-lines.code.code-commit.js-syntax-highlight.commit-diff{ data: diff_view_data, class: too_big ? 'hide' : '' }
- - if Feature.enabled?(:inline_haml_diff_line_rendering, @project, default_enabled: :yaml)
+ - if Feature.enabled?(:inline_haml_diff_line_rendering, @project)
- diff_file.highlighted_diff_lines.each do |line|
- line_code = diff_file.line_code(line)
diff --git a/app/views/projects/feature_flags/edit.html.haml b/app/views/projects/feature_flags/edit.html.haml
index ac8c0575077..121dcd31a13 100644
--- a/app/views/projects/feature_flags/edit.html.haml
+++ b/app/views/projects/feature_flags/edit.html.haml
@@ -2,6 +2,6 @@
- add_to_breadcrumbs s_('FeatureFlags|Feature Flags'), project_feature_flags_path(@project)
- breadcrumb_title @feature_flag.name
-- page_title s_('FeatureFlags|Edit Feature Flag')
+- page_title s_('FeatureFlags|Edit Feature Flag'), @feature_flag.name
#js-edit-feature-flag{ data: edit_feature_flag_data }
diff --git a/app/views/projects/forks/error.html.haml b/app/views/projects/forks/error.html.haml
index 9b64f158a1b..13fd4cee0cc 100644
--- a/app/views/projects/forks/error.html.haml
+++ b/app/views/projects/forks/error.html.haml
@@ -3,8 +3,8 @@
= render Pajamas::AlertComponent.new(title: _('Fork Error!'),
variant: :danger,
alert_class: 'gl-mt-5',
- dismissible: false) do
- .gl-alert-body
+ dismissible: false) do |c|
+ = c.body do
%p
= _("You tried to fork %{link_to_the_project} but it failed for the following reason:").html_safe % { link_to_the_project: link_to_project(@project) }
@@ -17,5 +17,5 @@
- else
= error
- .gl-alert-actions
- = link_to _('Try to fork again'), new_project_fork_path(@project), title: _("Fork"), class: "btn gl-alert-action btn-info btn-md gl-button"
+ = c.actions do
+ = link_to _('Try to fork again'), new_project_fork_path(@project), title: _("Fork"), class: "btn gl-alert-action btn-info btn-md gl-button"
diff --git a/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml b/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
index 9e3d9b4258a..a3569d41714 100644
--- a/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
+++ b/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
@@ -39,10 +39,9 @@
.label-container
- if generic_commit_status.tags.any?
- generic_commit_status.tags.each do |tag|
- %span.badge.badge-primary
- = tag
+ = gl_badge_tag tag, variant: :info, size: :sm
- if retried
- %span.badge.badge-warning retried
+ = gl_badge_tag retried, variant: :warning, size: :sm
- if pipeline_link
%td
diff --git a/app/views/projects/graphs/charts.html.haml b/app/views/projects/graphs/charts.html.haml
index 40280e0787f..ca0307aed60 100644
--- a/app/views/projects/graphs/charts.html.haml
+++ b/app/views/projects/graphs/charts.html.haml
@@ -46,7 +46,7 @@
.col-md-6
.tree-ref-container
.tree-ref-holder
- = render 'shared/ref_switcher', destination: 'graphs_commits'
+ = render 'shared/ref_switcher', destination: 'graphs_commits', path: @path
%ul.breadcrumb.repo-breadcrumb
= commits_breadcrumbs
diff --git a/app/views/projects/issues/_alert_moved_from_service_desk.html.haml b/app/views/projects/issues/_alert_moved_from_service_desk.html.haml
index f28b951ad62..291edf014c3 100644
--- a/app/views/projects/issues/_alert_moved_from_service_desk.html.haml
+++ b/app/views/projects/issues/_alert_moved_from_service_desk.html.haml
@@ -3,6 +3,6 @@
- service_desk_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: service_desk_link_url }
= render Pajamas::AlertComponent.new(variant: :warning,
- alert_class: 'hide js-alert-moved-from-service-desk-warning gl-mt-5') do
- .gl-alert-body.gl-mr-3
+ alert_class: 'hide js-alert-moved-from-service-desk-warning gl-mt-5') do |c|
+ = c.body do
= s_('This project does not have %{service_desk_link_start}Service Desk%{service_desk_link_end} enabled, so the user who created the issue will no longer receive email notifications about new activity.').html_safe % { service_desk_link_start: service_desk_link_start, service_desk_link_end: '</a>'.html_safe }
diff --git a/app/views/projects/issues/_discussion.html.haml b/app/views/projects/issues/_discussion.html.haml
index f1c19756474..a904b53515c 100644
--- a/app/views/projects/issues/_discussion.html.haml
+++ b/app/views/projects/issues/_discussion.html.haml
@@ -1,4 +1,4 @@
-- add_page_startup_api_call Feature.enabled?(:paginated_issue_discussions, @project, default_enabled: :yaml) ? discussions_path(@issue, per_page: 20) : discussions_path(@issue)
+- add_page_startup_api_call Feature.enabled?(:paginated_issue_discussions, @project) ? discussions_path(@issue, per_page: 20) : discussions_path(@issue)
- @gfm_form = true
diff --git a/app/views/projects/issues/index.html.haml b/app/views/projects/issues/index.html.haml
index d74b6c0639c..fe2be0f73c9 100644
--- a/app/views/projects/issues/index.html.haml
+++ b/app/views/projects/issues/index.html.haml
@@ -13,7 +13,7 @@
issues_path: project_issues_path(@project),
project_path: @project.full_path } }
-- if Feature.enabled?(:vue_issues_list, @project&.group, default_enabled: :yaml)
+- if Feature.enabled?(:vue_issues_list, @project&.group)
.js-issues-list{ data: project_issues_list_data(@project, current_user) }
- if @can_bulk_update
= render 'shared/issuable/bulk_update_sidebar', type: :issues
diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml
index 6c6f98e0b20..3572d1d6556 100644
--- a/app/views/projects/issues/show.html.haml
+++ b/app/views/projects/issues/show.html.haml
@@ -2,6 +2,7 @@
- add_to_breadcrumbs _("Issues"), project_issues_path(@project)
- breadcrumb_title @issue.to_reference
- page_title "#{@issue.title} (#{@issue.to_reference})", _("Issues")
+- add_page_specific_style 'page_bundles/issues_show'
= render 'projects/issuable/show', issuable: @issue, api_awards_path: award_emoji_issue_api_path(@issue)
= render 'projects/invite_members_modal', project: @project
diff --git a/app/views/projects/jobs/index.html.haml b/app/views/projects/jobs/index.html.haml
index 9a2a1e57165..e725e8e6889 100644
--- a/app/views/projects/jobs/index.html.haml
+++ b/app/views/projects/jobs/index.html.haml
@@ -4,7 +4,7 @@
- add_page_specific_style 'page_bundles/ci_status'
- admin = local_assigns.fetch(:admin, false)
-- if Feature.enabled?(:jobs_table_vue, @project, default_enabled: :yaml)
+- if Feature.enabled?(:jobs_table_vue, @project)
#js-jobs-table{ data: { admin: admin, full_path: @project.full_path, job_statuses: job_statuses.to_json, pipeline_editor_path: project_ci_pipeline_editor_path(@project), empty_state_svg_path: image_path('jobs-empty-state.svg') } }
- else
.top-area
diff --git a/app/views/projects/mattermosts/_no_teams.html.haml b/app/views/projects/mattermosts/_no_teams.html.haml
index 3d901c6f59b..1f008496a34 100644
--- a/app/views/projects/mattermosts/_no_teams.html.haml
+++ b/app/views/projects/mattermosts/_no_teams.html.haml
@@ -1,9 +1,3 @@
-- if @teams_error_message
- = content_for :flash_message do
- = render Pajamas::AlertComponent.new(variant: :danger) do
- .gl-alert-body
- = @teams_error_message
-
%p
You aren’t a member of any team on the Mattermost instance at
%strong= Gitlab.config.mattermost.host
diff --git a/app/views/projects/mattermosts/new.html.haml b/app/views/projects/mattermosts/new.html.haml
index 9e293d07cb7..8254198bd41 100644
--- a/app/views/projects/mattermosts/new.html.haml
+++ b/app/views/projects/mattermosts/new.html.haml
@@ -1,10 +1,20 @@
-- @body_class = 'card-content'
+- add_to_breadcrumbs _('Integrations'), scoped_integrations_path(project: @project, group: @group)
+- add_to_breadcrumbs @integration.title, scoped_edit_integration_path(@integration, project: @project, group: @group)
+- breadcrumb_title _('New')
+- page_title @integration.title, _('Integrations')
+- @content_class = 'limit-container-width' unless fluid_layout
-.service-installation
- .inline.float-right
+- if @teams_error_message
+ = render Pajamas::AlertComponent.new(variant: :danger) do |c|
+ = c.body do
+ = @teams_error_message
+
+%h3
+ Install Mattermost Command
+ .gl-float-right
= custom_icon('mattermost_logo', size: 48)
- %h3 Install Mattermost Command
- - if @teams.empty?
- = render 'no_teams'
- - else
- = render 'team_selection'
+
+- if @teams.empty?
+ = render 'no_teams'
+- else
+ = render 'team_selection'
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
index f6afac493d5..282faf7714e 100644
--- 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
@@ -1,36 +1,46 @@
- display_issuable_type = issuable_display_type(@merge_request)
-- 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-md-display-flex
- = link_to @merge_request.closed? ? reopen_issuable_path(@merge_request) : toggle_draft_merge_request_path(@merge_request), method: :put, class: "#{button_class} btn-confirm-secondary" do
- - if @merge_request.closed?
- = _('Reopen')
- = display_issuable_type
- - else
- = @merge_request.work_in_progress? ? _('Mark as ready') : _('Mark as draft')
+.float-left.btn-group.gl-md-ml-3.gl-display-flex.dropdown.gl-new-dropdown.gl-md-w-auto.gl-w-full
+ = button_tag type: 'button', class: "btn dropdown-toggle btn-default btn-md gl-button gl-dropdown-toggle btn-default-tertiary dropdown-icon-only dropdown-toggle-no-caret gl-display-none! gl-md-display-inline-flex!", data: { 'toggle' => 'dropdown' } do
+ %span.gl-sr-only= _('Toggle dropdown')
+ = sprite_icon "ellipsis_v", size: 16, css_class: "dropdown-icon gl-icon"
+ = button_tag type: 'button', class: "btn dropdown-toggle btn-default btn-md btn-block gl-button gl-dropdown-toggle gl-md-display-none!", data: { 'toggle' => 'dropdown' } do
+ %span.gl-new-dropdown-button-text= _('Merge request actions')
+ = sprite_icon "chevron-down", size: 16, css_class: "dropdown-icon gl-icon"
+ .dropdown-menu.dropdown-menu-right
+ .gl-new-dropdown-inner
+ .gl-new-dropdown-contents
+ %ul
+ - if can?(current_user, :update_merge_request, @merge_request)
+ %li.gl-new-dropdown-item{ class: "gl-md-display-none!" }
+ = link_to edit_project_merge_request_path(@project, @merge_request), class: 'dropdown-item' do
+ .gl-new-dropdown-item-text-wrapper
+ = _('Edit')
+ - if @merge_request.open?
+ %li.gl-new-dropdown-item
+ = link_to toggle_draft_merge_request_path(@merge_request), method: :put, class: 'dropdown-item js-draft-toggle-button' do
+ .gl-new-dropdown-item-text-wrapper
+ = @merge_request.work_in_progress? ? _('Mark as ready') : _('Mark as draft')
+ %li.gl-new-dropdown-item.js-close-item
+ = link_to close_issuable_path(@merge_request), method: :put, class: 'dropdown-item' do
+ .gl-new-dropdown-item-text-wrapper
+ = _('Close')
+ = display_issuable_type
+ - elsif !@merge_request.source_project_missing?
+ %li.gl-new-dropdown-item
+ = link_to reopen_issuable_path(@merge_request), method: :put, class: 'dropdown-item' do
+ .gl-new-dropdown-item-text-wrapper
+ = _('Reopen')
+ = display_issuable_type
- - if !@merge_request.closed? || !issuable_author_is_current_user(@merge_request)
- = button_tag type: 'button', class: "#{toggle_class} btn-confirm-secondary btn-icon", data: { 'toggle' => 'dropdown' } do
- %span.gl-sr-only= _('Toggle dropdown')
- = sprite_icon "chevron-down", size: 12, css_class: "gl-button-icon"
-
- %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 }
+ - if current_user && moved_mr_sidebar_enabled?
+ %li.gl-new-dropdown-divider
+ %hr.dropdown-divider
+ %li.gl-new-dropdown-item.js-sidebar-subscriptions-entry-point
+ - unless issuable_author_is_current_user(@merge_request)
+ %li.gl-new-dropdown-item
+ = link_to new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)), class: 'dropdown-item' do
+ .gl-new-dropdown-item-text-wrapper
+ = _('Report abuse')
+ - if moved_mr_sidebar_enabled?
+ %li.gl-new-dropdown-item#js-lock-entry-point
diff --git a/app/views/projects/merge_requests/_code_dropdown.html.haml b/app/views/projects/merge_requests/_code_dropdown.html.haml
new file mode 100644
index 00000000000..0bd28e315d9
--- /dev/null
+++ b/app/views/projects/merge_requests/_code_dropdown.html.haml
@@ -0,0 +1,39 @@
+.float-left.gl-md-ml-3.dropdown.gl-new-dropdown{ class: "gl-display-none! gl-md-display-flex!" }
+ #js-check-out-modal{ data: how_merge_modal_data(@merge_request) }
+ = button_tag type: 'button', class: "btn dropdown-toggle btn-confirm gl-button gl-dropdown-toggle", data: { toggle: 'dropdown', qa_selector: 'mr_code_dropdown' } do
+ %span.gl-new-dropdown-button-text= _('Code')
+ = sprite_icon "chevron-down", size: 16, css_class: "dropdown-icon gl-icon gl-ml-2 gl-mr-0!"
+ .dropdown-menu.dropdown-menu-right
+ .gl-new-dropdown-inner
+ .gl-new-dropdown-contents
+ %ul
+ %li.gl-new-dropdown-section-header
+ %header.dropdown-header
+ = _('Review changes')
+ %li.gl-new-dropdown-item
+ %button.dropdown-item.js-check-out-modal-trigger{ type: 'button' }
+ .gl-new-dropdown-item-text-wrapper
+ = _('Check out branch')
+ - if current_user
+ %li.gl-new-dropdown-item
+ = link_to ide_merge_request_path(@merge_request), class: 'dropdown-item', data: { qa_selector: 'open_in_web_ide_button' } do
+ .gl-new-dropdown-item-text-wrapper
+ = _('Open in Web IDE')
+ - if Gitlab::CurrentSettings.gitpod_enabled && current_user&.gitpod_enabled
+ %li.gl-new-dropdown-item
+ = link_to "#{Gitlab::CurrentSettings.gitpod_url}##{merge_request_url(@merge_request)}", class: 'dropdown-item' do
+ .gl-new-dropdown-item-text-wrapper
+ = _('Open in Gitpod')
+ %li.gl-new-dropdown-divider
+ %hr.dropdown-divider
+ %li.gl-new-dropdown-section-header
+ %header.dropdown-header
+ = _('Download')
+ %li.gl-new-dropdown-item
+ = link_to merge_request_path(@merge_request, format: :patch), class: 'dropdown-item', download: '', data: { qa_selector: 'download_email_patches_menu_item' } do
+ .gl-new-dropdown-item-text-wrapper
+ = _('Email patches')
+ %li.gl-new-dropdown-item
+ = link_to merge_request_path(@merge_request, format: :diff), class: 'dropdown-item', data: { qa_selector: 'download_plain_diff_menu_item' } do
+ .gl-new-dropdown-item-text-wrapper
+ = _('Plain diff')
diff --git a/app/views/projects/merge_requests/_mr_box.html.haml b/app/views/projects/merge_requests/_mr_box.html.haml
index 916b841e350..e16631b4943 100644
--- a/app/views/projects/merge_requests/_mr_box.html.haml
+++ b/app/views/projects/merge_requests/_mr_box.html.haml
@@ -1,3 +1,7 @@
.detail-page-description.py-2
- %h2.title.mb-0{ data: { qa_selector: 'title_content' } }
- = markdown_field(@merge_request, :title)
+ - if Feature.enabled?(:updated_mr_header, @project)
+ = render 'shared/issuable/status_box', issuable: @merge_request
+ = merge_request_header(@project, @merge_request)
+ - else
+ %h2.title.mb-0{ data: { qa_selector: 'title_content' } }
+ = markdown_field(@merge_request, :title)
diff --git a/app/views/projects/merge_requests/_mr_title.html.haml b/app/views/projects/merge_requests/_mr_title.html.haml
index 49b7320d630..638c520e210 100644
--- a/app/views/projects/merge_requests/_mr_title.html.haml
+++ b/app/views/projects/merge_requests/_mr_title.html.haml
@@ -2,51 +2,40 @@
- can_update_merge_request = can?(current_user, :update_merge_request, @merge_request)
- can_reopen_merge_request = can?(current_user, :reopen_merge_request, @merge_request)
- are_close_and_open_buttons_hidden = merge_request_button_hidden?(@merge_request, true) && merge_request_button_hidden?(@merge_request, false)
-- cache_key = [@project, @merge_request, can_update_merge_request, can_reopen_merge_request, are_close_and_open_buttons_hidden, current_user&.preferred_language]
+- updated_mr_header_enabled = Feature.enabled?(:updated_mr_header, @project)
+- cache_key = [@project, @merge_request, can_update_merge_request, can_reopen_merge_request, are_close_and_open_buttons_hidden, current_user&.preferred_language, updated_mr_header_enabled]
= cache(cache_key, expires_in: 1.day) do
- if @merge_request.closed_or_merged_without_fork?
= render Pajamas::AlertComponent.new(alert_class: 'gl-mb-5',
variant: :danger,
- dismissible: false) do
- .gl-alert-body
+ dismissible: false) do |c|
+ = c.body do
= _('The source project of this merge request has been removed.')
- .detail-page-header.border-bottom-0.pt-0.pb-0
+ .detail-page-header.border-bottom-0.pt-0.pb-0{ class: "#{'gl-display-block gl-md-display-flex!' if updated_mr_header_enabled}" }
.detail-page-header-body
- = render "shared/issuable/status_box", issuable: @merge_request
+ - unless updated_mr_header_enabled
+ = render "shared/issuable/status_box", issuable: @merge_request
+ .issuable-meta{ class: "#{'gl-display-flex' if updated_mr_header_enabled}" }
+ - if updated_mr_header_enabled
+ #js-issuable-header-warnings
+ %h2.title.gl-my-0.gl-display-inline-block{ data: { qa_selector: 'title_content' } }
+ = markdown_field(@merge_request, :title)
+ - else
+ #js-issuable-header-warnings
+ = issuable_meta(@merge_request, @project)
- .issuable-meta
- #js-issuable-header-warnings
- = issuable_meta(@merge_request, @project)
+ %div
+ %button.gl-button.btn.btn-default.btn-icon.float-right.gl-display-block.gutter-toggle.issuable-gutter-toggle.js-sidebar-toggle{ type: 'button', class: "#{'gl-md-display-none!' if moved_mr_sidebar_enabled? } #{'gl-sm-display-none!' unless moved_mr_sidebar_enabled?}" }
+ = sprite_icon('chevron-double-lg-left')
- %a.gl-button.btn.btn-default.btn-icon.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{ class: "#{'gl-align-self-start is-merge-request' if updated_mr_header_enabled}" }
+ - if can_update_merge_request
+ = link_to _('Edit'), edit_project_merge_request_path(@project, @merge_request), class: "gl-display-none gl-md-display-block btn gl-button btn-default btn-grouped js-issuable-edit", data: { qa_selector: "edit_button" }
- .detail-page-header-actions.js-issuable-actions
- .clearfix.dropdown
- %button.gl-button.btn.btn-default.float-left.gl-md-display-none.gl-w-full{ type: "button", data: { toggle: "dropdown" } }
- Options
- = 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 @merge_request.opened?
- %li
- = 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, 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 @merge_request.source_project
+ = render 'projects/merge_requests/code_dropdown'
- - if can_update_merge_request
- = link_to _('Edit'), edit_project_merge_request_path(@project, @merge_request), class: "gl-display-none gl-md-display-block btn gl-button btn-default btn-grouped js-issuable-edit", data: { qa_selector: "edit_button" }
-
- - 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-md-display-block gl-button btn btn-default gl-float-right gl-ml-3', title: _('Report abuse')
+ - if current_user
+ = render 'projects/merge_requests/close_reopen_draft_report_toggle'
diff --git a/app/views/projects/merge_requests/creations/_new_compare.html.haml b/app/views/projects/merge_requests/creations/_new_compare.html.haml
index e2ac8ef5abc..811b45ef8af 100644
--- a/app/views/projects/merge_requests/creations/_new_compare.html.haml
+++ b/app/views/projects/merge_requests/creations/_new_compare.html.haml
@@ -22,7 +22,7 @@
selected: f.object.source_project_id
.merge-request-select.dropdown
= f.hidden_field :source_branch
- = dropdown_toggle f.object.source_branch.presence || _("Select source branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[source_branch]", 'refs-url': refs_project_path(@source_project), selected: f.object.source_branch }, { toggle_class: "js-compare-dropdown js-source-branch monospace" }
+ = dropdown_toggle f.object.source_branch.presence || _("Select source branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[source_branch]", 'refs-url': refs_project_path(@source_project), selected: f.object.source_branch, qa_selector: "source_branch_dropdown" }, { toggle_class: "js-compare-dropdown js-source-branch monospace" }
.dropdown-menu.dropdown-menu-selectable.js-source-branch-dropdown.git-revision-dropdown
= dropdown_title(_("Select source branch"))
= dropdown_filter(_("Search branches"))
@@ -62,4 +62,4 @@
- if @merge_request.errors.any?
= form_errors(@merge_request)
- = f.submit 'Compare branches and continue', class: "gl-button btn btn-confirm mr-compare-btn"
+ = f.submit 'Compare branches and continue', class: "gl-button btn btn-confirm mr-compare-btn", data: { qa_selector: "compare_branches_button" }
diff --git a/app/views/projects/merge_requests/invalid.html.haml b/app/views/projects/merge_requests/invalid.html.haml
index ce5a042fbf8..4596fcd280d 100644
--- a/app/views/projects/merge_requests/invalid.html.haml
+++ b/app/views/projects/merge_requests/invalid.html.haml
@@ -10,8 +10,8 @@
= render "projects/merge_requests/mr_box"
= render Pajamas::AlertComponent.new(variant: :danger,
- dismissible: false) do
- .gl-alert-body
+ dismissible: false) do |c|
+ = c.body do
- if @merge_request.for_fork? && !@merge_request.source_project
= err_fork_project_removed
- elsif !@merge_request.source_branch_exists?
diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml
index 008f2588dbd..13e5451df98 100644
--- a/app/views/projects/merge_requests/show.html.haml
+++ b/app/views/projects/merge_requests/show.html.haml
@@ -1,5 +1,6 @@
- @gfm_form = true
-- @content_class = "merge-request-container#{' limit-container-width' unless fluid_layout}"
+- unless moved_mr_sidebar_enabled?
+ - @content_class = "merge-request-container#{' limit-container-width' unless fluid_layout}"
- add_to_breadcrumbs _("Merge requests"), project_merge_requests_path(@project)
- breadcrumb_title @merge_request.to_reference
- page_title "#{@merge_request.title} (#{@merge_request.to_reference})", _("Merge requests")
@@ -41,14 +42,14 @@
= _("Changes")
= gl_badge_tag @diffs_count, { size: :sm }
.d-flex.flex-wrap.align-items-center.justify-content-lg-end
- #js-vue-discussion-counter
+ #js-vue-discussion-counter{ data: { blocks_merge: @project.only_allow_merge_if_all_discussions_are_resolved?.to_s } }
.tab-content#diff-notes-app
#js-diff-file-finder
#js-code-navigation
= render "projects/merge_requests/tabs/pane", id: "notes", class: "notes voting_notes" do
- .row
- %section.col-md-12
+ %div{ class: "#{'merge-request-overview' if moved_mr_sidebar_enabled?}" }
+ %section
.issuable-discussion.js-vue-notes-event
- if @merge_request.description.present?
.detail-page-description
@@ -70,6 +71,8 @@
help_page_path: suggest_changes_help_path,
current_user_data: @current_user_data,
is_locked: @merge_request.discussion_locked.to_s } }
+ - if moved_mr_sidebar_enabled?
+ = render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, reviewers: @merge_request.reviewers, source_branch: @merge_request.source_branch
= render "projects/merge_requests/tabs/pane", name: "commits", id: "commits", class: "commits" do
-# This tab is always loaded via AJAX
@@ -83,7 +86,8 @@
.loading.hide
= gl_loading_icon(size: 'lg')
-= render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, reviewers: @merge_request.reviewers, source_branch: @merge_request.source_branch
+- unless moved_mr_sidebar_enabled?
+ = render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, reviewers: @merge_request.reviewers, source_branch: @merge_request.source_branch
- if @merge_request.can_be_reverted?(current_user)
= render "projects/commit/change", type: 'revert', commit: @merge_request.merge_commit
@@ -92,7 +96,7 @@
#js-review-bar
-- if Feature.enabled?(:mr_attention_requests, default_enabled: :yaml)
+- if current_user&.mr_attention_requests_enabled?
#js-need-attention-sidebar-onboarding
= render 'projects/invite_members_modal', project: @project
diff --git a/app/views/projects/milestones/index.html.haml b/app/views/projects/milestones/index.html.haml
index 154a92e6ec8..326a7c4027f 100644
--- a/app/views/projects/milestones/index.html.haml
+++ b/app/views/projects/milestones/index.html.haml
@@ -9,7 +9,7 @@
= render 'shared/milestones/search_form'
= render 'shared/milestones_sort_dropdown'
- if can?(current_user, :admin_milestone, @project)
- = link_to new_project_milestone_path(@project), class: 'gl-button btn btn-confirm', data: { qa_selector: "new_project_milestone_link" }, title: _('New milestone') do
+ = link_to new_project_milestone_path(@project), class: 'gl-button btn btn-confirm gl-ml-3', data: { qa_selector: "new_project_milestone_link" }, title: _('New milestone') do
= _('New milestone')
- if @milestones.blank?
diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml
index 13aa8f56d20..4ec72176202 100644
--- a/app/views/projects/milestones/show.html.haml
+++ b/app/views/projects/milestones/show.html.haml
@@ -14,8 +14,8 @@
- if can?(current_user, :read_issue, @project) && @milestone.total_issues_count == 0
= render Pajamas::AlertComponent.new(dismissible: false,
alert_data: { testid: 'no-issues-alert' },
- alert_class: 'gl-mt-3 gl-mb-5') do
- .gl-alert-body
+ alert_class: 'gl-mt-3 gl-mb-5') do |c|
+ = c.body do
= _('Assign some issues to this milestone.')
- else
= render 'shared/milestones/milestone_complete_alert', milestone: @milestone do
diff --git a/app/views/projects/mirrors/_mirror_repos.html.haml b/app/views/projects/mirrors/_mirror_repos.html.haml
index bc8400a63f9..d689b54678e 100644
--- a/app/views/projects/mirrors/_mirror_repos.html.haml
+++ b/app/views/projects/mirrors/_mirror_repos.html.haml
@@ -37,8 +37,8 @@
.panel-footer
= f.submit _('Mirror repository'), class: 'gl-button btn btn-confirm js-mirror-submit qa-mirror-repository-button', name: :update_remote_mirror
- else
- = render Pajamas::AlertComponent.new(dismissible: false) do
- .gl-alert-body
+ = render Pajamas::AlertComponent.new(dismissible: false) do |c|
+ = c.body do
= _('Mirror settings are only available to GitLab administrators.')
.panel.panel-default
diff --git a/app/views/projects/pages/_access.html.haml b/app/views/projects/pages/_access.html.haml
index 67a2eeb7e7b..c5efacb21af 100644
--- a/app/views/projects/pages/_access.html.haml
+++ b/app/views/projects/pages/_access.html.haml
@@ -15,7 +15,7 @@
= external_link(domain.url, domain.url)
- unless @project.public_pages?
.card-footer.gl-alert-warning
- - help_page = help_page_path('/user/project/pages/pages_access_control')
+ - help_page = help_page_path('user/project/pages/pages_access_control')
- link_start = '<a href="%{url}" target="_blank" class="gl-alert-link" rel="noopener noreferrer">'.html_safe % { url: help_page }
- link_end = '</a>'.html_safe
= html_escape_once(s_('GitLabPages|Access Control is enabled for this Pages website; only authorized users will be able to access it. To make your website publicly available, navigate to your project\'s %{strong_start}Settings &gt; General &gt; Visibility%{strong_end} and select %{strong_start}Everyone%{strong_end} in pages section. Read the %{link_start}documentation%{link_end} for more information.')).html_safe % { link_start: link_start, link_end: link_end, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe }
diff --git a/app/views/projects/pages/_destroy.haml b/app/views/projects/pages/_destroy.haml
index 99efb0b98c6..993026d2884 100644
--- a/app/views/projects/pages/_destroy.haml
+++ b/app/views/projects/pages/_destroy.haml
@@ -8,7 +8,7 @@
%p.gl-mb-0
= s_('GitLabPages|Removing pages will prevent them from being exposed to the outside world.')
.card-footer
- = link_to s_('GitLabPages|Remove pages'), project_pages_path(@project), data: { confirm: s_('GitLabPages|Are you sure?')}, method: :delete, class: "btn gl-button btn-danger"
+ = link_to s_('GitLabPages|Remove pages'), project_pages_path(@project), data: { confirm: s_('GitLabPages|Are you sure?'), 'confirm-btn-variant': 'danger'}, method: :delete, class: "btn gl-button btn-danger", "aria-label": s_('GitLabPages|Remove pages')
- else
.nothing-here-block
= s_('GitLabPages|Only project maintainers can remove pages')
diff --git a/app/views/projects/pages/_list.html.haml b/app/views/projects/pages/_list.html.haml
index 4e9c77564da..04178804de4 100644
--- a/app/views/projects/pages/_list.html.haml
+++ b/app/views/projects/pages/_list.html.haml
@@ -20,7 +20,7 @@
= gl_badge_tag s_('GitLabPages|Expired'), variant: :danger
%div
= link_to s_('GitLabPages|Edit'), project_pages_domain_path(@project, domain), class: "btn gl-button btn-sm btn-grouped btn-confirm btn-inverted"
- = link_to s_('GitLabPages|Remove'), project_pages_domain_path(@project, domain), data: { confirm: s_('GitLabPages|Are you sure?')}, method: :delete, class: "btn gl-button btn-danger btn-sm btn-grouped"
+ = link_to s_('GitLabPages|Remove'), project_pages_domain_path(@project, domain), data: { confirm: s_('GitLabPages|Are you sure?'), 'confirm-btn-variant': 'danger'}, "aria-label": s_("GitLabPages|Remove domain"), method: :delete, class: "btn gl-button btn-danger btn-sm btn-grouped"
- if domain.needs_verification?
%li.list-group-item.bs-callout-warning
- details_link_start = "<a href='#{project_pages_domain_path(@project, domain)}'>".html_safe
diff --git a/app/views/projects/pages_domains/_certificate.html.haml b/app/views/projects/pages_domains/_certificate.html.haml
index 861305dc93b..4ba3e084dc4 100644
--- a/app/views/projects/pages_domains/_certificate.html.haml
+++ b/app/views/projects/pages_domains/_certificate.html.haml
@@ -38,7 +38,8 @@
= domain_presenter.pages_domain.subject || _('missing')
= link_to _('Remove'),
clean_certificate_project_pages_domain_path(@project, domain_presenter),
- data: { confirm: _('Are you sure?') },
+ data: { confirm: _('Are you sure?'), 'confirm-btn-variant': 'danger' },
+ 'aria-label': s_("GitLabPages|Remove certificate"),
class: 'gl-button btn btn-danger btn-sm',
method: :delete
- else
diff --git a/app/views/projects/pages_domains/_form.html.haml b/app/views/projects/pages_domains/_form.html.haml
index d3e2854ff19..9d9603b0947 100644
--- a/app/views/projects/pages_domains/_form.html.haml
+++ b/app/views/projects/pages_domains/_form.html.haml
@@ -1,7 +1,8 @@
- if domain_presenter.errors.any?
- = render Pajamas::AlertComponent.new(variant: :danger, dismissible: false) do
- - domain_presenter.errors.full_messages.each do |msg|
- = msg
+ = render Pajamas::AlertComponent.new(variant: :danger, dismissible: false) do |c|
+ = c.body do
+ - domain_presenter.errors.full_messages.each do |msg|
+ = msg
.form-group.border-section
.row
diff --git a/app/views/projects/pipelines/_with_tabs.html.haml b/app/views/projects/pipelines/_with_tabs.html.haml
index 88e6b98b115..6b26c9f3f00 100644
--- a/app/views/projects/pipelines/_with_tabs.html.haml
+++ b/app/views/projects/pipelines/_with_tabs.html.haml
@@ -32,40 +32,45 @@
#js-pipeline-jobs-vue{ data: { full_path: @project.full_path, pipeline_iid: @pipeline.iid } }
- if @pipeline.failed_builds.present?
- #js-tab-failures.build-failures.tab-pane.build-page
- %table.table.responsive-table.ci-table.responsive-table-sm-rounded
- %thead
- %th.table-th-transparent
- %th.table-th-transparent= _('Name')
- %th.table-th-transparent= _('Stage')
- %th.table-th-transparent= _('Failure')
+ #js-tab-failures.tab-pane
+ - if Feature.enabled?(:failed_jobs_tab_vue, @project)
+ #js-pipeline-failed-jobs-vue{ data: { full_path: @project.full_path, pipeline_iid: @pipeline.iid, failed_jobs_summary_data: prepare_failed_jobs_summary_data(@pipeline.failed_builds) } }
+ - else
+ .build-failures.build-page
+ %table.table.gl-table.responsive-table.ci-table.responsive-table-sm-rounded
+ %thead
+ %th
+ %th= _('Name')
+ %th= _('Stage')
+ %th= _('Failure')
+ %th
- %tbody
- - @pipeline.failed_builds.each_with_index do |build, index|
- - job = build.present(current_user: current_user)
- %tr.build-state.responsive-table-border-start
- %td.responsive-table-cell.ci-status-icon-failed{ data: { column: _('Status')} }
- .d-none.d-md-block.build-icon
- = sprite_icon("status_#{build.status}")
- .d-md-none.build-badge
- = render "ci/status/badge", link: false, status: job.detailed_status(current_user)
- %td.responsive-table-cell.build-name{ data: { column: _('Name')} }
- = link_to build.name, pipeline_job_url(pipeline, build)
- %td.responsive-table-cell.build-stage{ data: { column: _('Stage')} }
- = build.stage.titleize
- %td.responsive-table-cell.build-failure{ data: { column: _('Failure')} }
- = build.present.callout_failure_message
- %td.responsive-table-cell.build-actions
- - if can?(current_user, :update_build, job) && job.retryable?
- = link_to retry_project_job_path(build.project, build, return_to: request.original_url), method: :post, title: _('Retry'), class: 'gl-button btn btn-default btn-icon' do
- = sprite_icon('repeat', css_class: 'gl-icon')
- - if can?(current_user, :read_build, job)
- %tr.build-log-row.responsive-table-border-end
- %td
- %td.responsive-table-cell.build-log-container{ colspan: 4 }
- %pre.build-log.build-log-rounded
- %code.bash.js-build-output
- = build_summary(build)
+ %tbody
+ - @pipeline.failed_builds.each_with_index do |build, index|
+ - job = build.present(current_user: current_user)
+ %tr.build-state.responsive-table-border-start
+ %td.responsive-table-cell.ci-status-icon-failed{ data: { column: _('Status')} }
+ .d-none.d-md-block.build-icon
+ = sprite_icon("status_#{build.status}")
+ .d-md-none.build-badge
+ = render "ci/status/badge", link: false, status: job.detailed_status(current_user)
+ %td.responsive-table-cell.build-name{ data: { column: _('Name')} }
+ = link_to build.name, pipeline_job_url(pipeline, build)
+ %td.responsive-table-cell.build-stage{ data: { column: _('Stage')} }
+ = build.stage.titleize
+ %td.responsive-table-cell.build-failure{ data: { column: _('Failure')} }
+ = build.present.callout_failure_message
+ %td.responsive-table-cell.build-actions
+ - if can?(current_user, :update_build, job) && job.retryable?
+ = link_to retry_project_job_path(build.project, build, return_to: request.original_url), method: :post, title: _('Retry'), class: 'gl-button btn btn-default btn-icon' do
+ = sprite_icon('repeat', css_class: 'gl-icon')
+ - if can?(current_user, :read_build, job)
+ %tr.build-log-row.responsive-table-border-end
+ %td
+ %td.responsive-table-cell.build-log-container{ colspan: 4 }
+ %pre.build-log.build-log-rounded
+ %code.bash.js-build-output
+ = build_summary(build)
#js-tab-dag.tab-pane
#js-pipeline-dag-vue{ data: { pipeline_project_path: @project.full_path, pipeline_iid: @pipeline.iid, empty_svg_path: image_path('illustrations/empty-state/empty-dag-md.svg'), about_dag_doc_path: help_page_path('ci/directed_acyclic_graph/index.md'), dag_doc_path: help_page_path('ci/yaml/index.md', anchor: 'needs')} }
diff --git a/app/views/projects/pipelines/show.html.haml b/app/views/projects/pipelines/show.html.haml
index 2b0a0fc1253..30b224a60da 100644
--- a/app/views/projects/pipelines/show.html.haml
+++ b/app/views/projects/pipelines/show.html.haml
@@ -27,7 +27,7 @@
= s_('You can also test your %{gitlab_ci_yml} in %{lint_link_start}CI Lint%{lint_link_end}').html_safe % { gitlab_ci_yml: '.gitlab-ci.yml', lint_link_start: lint_link_start, lint_link_end: '</a>'.html_safe }
#js-pipeline-notification{ data: { deprecated_keywords_doc_path: help_page_path('ci/yaml/index.md', anchor: 'deprecated-keywords'), full_path: @project.full_path, pipeline_iid: @pipeline.iid } }
- - if Feature.enabled?(:pipeline_tabs_vue, @project, default_enabled: :yaml)
+ - if Feature.enabled?(:pipeline_tabs_vue, @project)
#js-pipeline-tabs{ data: js_pipeline_tabs_data(@project, @pipeline) }
- else
= render "projects/pipelines/with_tabs", pipeline: @pipeline, stages: @stages, pipeline_has_errors: pipeline_has_errors
diff --git a/app/views/projects/runners/_group_runners.html.haml b/app/views/projects/runners/_group_runners.html.haml
index 8134ee8f417..449b6c25f50 100644
--- a/app/views/projects/runners/_group_runners.html.haml
+++ b/app/views/projects/runners/_group_runners.html.haml
@@ -28,10 +28,7 @@
= _('This group does not have any group runners yet.')
- if can?(current_user, :admin_group_runners, @project.group)
- - if Feature.enabled?(:runner_list_group_view_vue_ui, @group, default_enabled: :yaml)
- - register_runners_path = group_runners_path(@project.group)
- - else
- - register_runners_path = group_settings_ci_cd_path(@project.group)
+ - register_runners_path = group_runners_path(@project.group)
- group_link = link_to _("group's CI/CD settings."), register_runners_path
= _('Group owners can register group runners in the %{link}').html_safe % { link: group_link }
- else
diff --git a/app/views/projects/serverless/functions/index.html.haml b/app/views/projects/serverless/functions/index.html.haml
deleted file mode 100644
index 03a1b0ee7bb..00000000000
--- a/app/views/projects/serverless/functions/index.html.haml
+++ /dev/null
@@ -1,17 +0,0 @@
-- @content_class = "limit-container-width" unless fluid_layout
-- breadcrumb_title _('Serverless')
-- page_title _('Serverless')
-- status_path = project_serverless_functions_path(@project, format: :json)
-- clusters_path = project_clusters_path(@project)
-
-.serverless-functions-page.js-serverless-functions-page{ data: { status_path: status_path,
- installed: @installed,
- clusters_path: clusters_path,
- help_path: help_page_path('user/project/clusters/serverless/index'),
- empty_image_path: image_path('illustrations/empty-state/empty-serverless-lg.svg') } }
-
-.js-serverless-functions-notice
- .flash-container
-
-.top-area.adjust.d-flex.justify-content-center.gl-border-none
- .serverless-functions-table#js-serverless-functions
diff --git a/app/views/projects/serverless/functions/show.html.haml b/app/views/projects/serverless/functions/show.html.haml
deleted file mode 100644
index dd81d957e51..00000000000
--- a/app/views/projects/serverless/functions/show.html.haml
+++ /dev/null
@@ -1,19 +0,0 @@
-- @content_class = "limit-container-width" unless fluid_layout
-- clusters_path = project_clusters_path(@project)
-- help_path = help_page_path('user/project/clusters/serverless/index')
-
-- add_to_breadcrumbs('Serverless', project_serverless_functions_path(@project))
-
-- page_title @service[:name]
-
-.serverless-function-details-page.js-serverless-function-details-page{ data: { service: @service.as_json,
- prometheus: @prometheus,
- clusters_path: clusters_path,
- help_path: help_path } }
-
-.serverless-function-details#js-serverless-function-details
-
-.js-serverless-function-notice
- .flash-container
-
-.function-holder.js-function-holder.input-group
diff --git a/app/views/projects/services/_form.html.haml b/app/views/projects/services/_form.html.haml
index d1d9a220068..9d74f99bb19 100644
--- a/app/views/projects/services/_form.html.haml
+++ b/app/views/projects/services/_form.html.haml
@@ -1,5 +1,5 @@
-- if lookup_context.template_exists?('top', "projects/services/#{integration.to_param}", true)
- = render "projects/services/#{integration.to_param}/top", integration: integration
+- if lookup_context.template_exists?('top', "shared/integrations/#{integration.to_param}", true)
+ = render "shared/integrations/#{integration.to_param}/top", integration: integration
- if integration.activate_disabled_reason.present? && integration.activate_disabled_reason[:trackers].any?
-# When using integration.activate_disabled_reason[:trackers], it's potentially insecure to use the raw records
@@ -7,8 +7,8 @@
-# For example, we can get the link to each tracker with scoped_edit_integration_path(tracker, tracker.project)
= render Pajamas::AlertComponent.new(title: s_('ExternalIssueIntegration|Another issue tracker is already in use'),
variant: :warning,
- dismissible: false) do
- .gl-alert-body
+ dismissible: false) do |c|
+ = c.body do
= s_('ExternalIssueIntegration|Only one issue tracker integration can be active at a time. Please disable the active tracker first and try again.')
%h2.gl-mb-4
@@ -17,6 +17,6 @@
= sprite_icon('check', css_class: 'gl-text-green-500')
= render 'shared/integration_settings', integration: integration
-- if lookup_context.template_exists?('show', "projects/services/#{integration.to_param}", true)
+- if lookup_context.template_exists?('show', "shared/integrations/#{integration.to_param}", true)
%hr
- = render "projects/services/#{integration.to_param}/show", integration: integration
+ = render "shared/integrations/#{integration.to_param}/show", integration: integration
diff --git a/app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml b/app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml
deleted file mode 100644
index 9d8ce186232..00000000000
--- a/app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml
+++ /dev/null
@@ -1,98 +0,0 @@
-- pretty_name = @project&.full_name ? html_escape(@project&.full_name) : '<' + _('project name') + '>'
-- run_actions_text = html_escape(s_("ProjectService|Perform common operations on GitLab project: %{project_name}")) % { project_name: pretty_name }
-
-%p= s_("ProjectService|To configure this integration, you should:")
-%ul.list-unstyled.indent-list
- %li
- 1.
- = link_to 'https://docs.gitlab.com/ee/user/project/integrations/mattermost_slash_commands.html#enable-custom-slash-commands', target: '_blank', rel: 'noopener noreferrer nofollow' do
- Enable custom slash commands
- = sprite_icon('external-link')
- on your Mattermost installation.
- %li
- 2.
- = link_to 'https://docs.gitlab.com/ee/user/project/integrations/mattermost_slash_commands.html#create-a-slash-command', target: '_blank', rel: 'noopener noreferrer nofollow' do
- Add a slash command
- = sprite_icon('external-link')
- in your Mattermost team with the options listed below.
- %li
- 3. Paste the token into the
- %strong Token
- field.
- %li
- 4. Select the
- %strong Active
- check box, then select
- %strong Save changes
- to start using GitLab inside Mattermost!
-
-%hr
-
-.help-form
- .form-group
- = label_tag :display_name, _('Display name'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :display_name, "GitLab / #{pretty_name}".html_safe, class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#display_name', class: 'input-group-text')
-
- .form-group
- = label_tag :description, _('Description'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :description, run_actions_text, class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#description', class: 'input-group-text')
-
- .form-group
- = label_tag nil, s_('MattermostService|Command trigger word'), class: 'col-12 col-form-label label-bold'
- .col-12
- %p= s_('MattermostService|Fill in the word that works best for your team.')
- %p
- = s_('MattermostService|Suggestions:')
- %code= 'gitlab'
- - if @project
- %code= @project.path # Path contains no spaces, but dashes
- %code= @project.full_path
-
- .form-group
- = label_tag :request_url, s_('MattermostService|Request URL'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :request_url, service_trigger_url(integration), class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#request_url', class: 'input-group-text')
-
- .form-group
- = label_tag nil, s_('MattermostService|Request method'), class: 'col-12 col-form-label label-bold'
- .col-12 POST
-
- .form-group
- = label_tag :response_username, s_('MattermostService|Response username'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :response_username, 'GitLab', class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#response_username', class: 'input-group-text')
-
- .form-group
- = label_tag :response_icon, s_('MattermostService|Response icon'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :response_icon, asset_url('gitlab_logo.png'), class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#response_icon', class: 'input-group-text')
-
- .form-group
- = label_tag nil, _('Autocomplete'), class: 'col-12 col-form-label label-bold'
- .col-12 Yes
-
- .form-group
- = label_tag :autocomplete_hint, _('Autocomplete hint'), class: 'col-12 col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :autocomplete_hint, '[help]', class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#autocomplete_hint', class: 'input-group-text')
-
- .form-group
- = label_tag :autocomplete_description, _('Autocomplete description'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :autocomplete_description, run_actions_text, class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#autocomplete_description', class: 'input-group-text')
diff --git a/app/views/projects/services/mattermost_slash_commands/_help.html.haml b/app/views/projects/services/mattermost_slash_commands/_help.html.haml
deleted file mode 100644
index 993df389fb0..00000000000
--- a/app/views/projects/services/mattermost_slash_commands/_help.html.haml
+++ /dev/null
@@ -1,17 +0,0 @@
-- enabled = Gitlab.config.mattermost.enabled
-
-.info-well
- .well-segment
- %p
- = s_("MattermostService|Use this service to perform common tasks in your project by entering slash commands in Mattermost.")
- = link_to help_page_path('user/project/integrations/mattermost_slash_commands.md'), target: '_blank' do
- = _("How do I configure this integration?")
- = sprite_icon('external-link')
- %p.inline
- = s_("MattermostService|After you configure the integration, view your new Mattermost commands by entering")
- %kbd.inline /&lt;trigger&gt; help
- - if !enabled && integration.project_level?
- = render 'projects/services/mattermost_slash_commands/detailed_help', integration: integration
-
-- if enabled && integration.project_level?
- = render 'projects/services/mattermost_slash_commands/installation_info', integration: integration
diff --git a/app/views/projects/services/mattermost_slash_commands/_installation_info.html.haml b/app/views/projects/services/mattermost_slash_commands/_installation_info.html.haml
deleted file mode 100644
index 38adc69dd5e..00000000000
--- a/app/views/projects/services/mattermost_slash_commands/_installation_info.html.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-.services-installation-info
- - unless integration.activated?
- .row
- .col-sm-9.offset-sm-3
- = link_to new_project_mattermost_path(@project), class: 'btn gl-button btn-lg' do
- = custom_icon('mattermost_logo', size: 15)
- = s_("MattermostService|Add to Mattermost")
diff --git a/app/views/projects/services/prometheus/_custom_metrics.html.haml b/app/views/projects/services/prometheus/_custom_metrics.html.haml
deleted file mode 100644
index 896249c6163..00000000000
--- a/app/views/projects/services/prometheus/_custom_metrics.html.haml
+++ /dev/null
@@ -1,28 +0,0 @@
-- project = local_assigns.fetch(:project)
-
-.col-lg-3
- %p
- = s_('PrometheusService|Custom metrics require Prometheus installed on a cluster with environment scope "*" OR a manually configured Prometheus to be available.')
- = link_to s_('PrometheusService|More information'), help_page_path('operations/metrics/index.md', anchor: 'adding-custom-metrics'), target: '_blank', rel: "noopener noreferrer"
-
-.col-lg-9
- .card.custom-monitored-metrics.js-panel-custom-monitored-metrics{ data: { qa_selector: 'custom_metrics_container', active_custom_metrics: project_prometheus_metrics_path(project), environments_data: environments_list_data, service_active: "#{integration.active}" } }
- .card-header
- %strong
- = s_('PrometheusService|Custom metrics')
- = gl_badge_tag 0, nil, class: 'js-custom-monitored-count'
- = link_to s_('PrometheusService|New metric'), new_project_prometheus_metric_path(project), class: 'btn gl-button btn-confirm gl-ml-auto js-new-metric-button hidden', data: { qa_selector: 'new_metric_button' }
- .card-body
- .flash-container.hidden
- .flash-warning
- .flash-text
- .loading-metrics.js-loading-custom-metrics
- %p.m-3
- = gl_loading_icon(inline: true, css_class: 'metrics-load-spinner')
- = s_('PrometheusService|Finding custom metrics...')
- .empty-metrics.hidden.js-empty-custom-metrics
- %p.text-tertiary.m-3.js-no-active-integration-text.hidden
- = s_('PrometheusService|Enable Prometheus to define custom metrics, using either option above')
- %p.text-tertiary.m-3.js-new-metric-text.hidden
- = s_('PrometheusService|No custom metrics have been created. Create one using the button above')
- %ul.list-unstyled.metrics-list.hidden.js-custom-metrics-list
diff --git a/app/views/projects/services/prometheus/_external_alerts.html.haml b/app/views/projects/services/prometheus/_external_alerts.html.haml
deleted file mode 100644
index 168b4853a9a..00000000000
--- a/app/views/projects/services/prometheus/_external_alerts.html.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-- return unless can?(current_user, :read_prometheus_alerts, @project)
-- return unless integration.manual_configuration?
-
-- notify_url = notify_project_prometheus_alerts_url(@project, format: :json)
-- authorization_key = @project.alerting_setting.try(:token)
-- learn_more_url = help_page_path('operations/metrics/alerts.md', anchor: 'external-prometheus-instances')
-
-#js-settings-prometheus-alerts{ data: { notify_url: notify_url, authorization_key: authorization_key, change_key_url: reset_alerting_token_project_settings_operations_path(@project), learn_more_url: learn_more_url, disabled: true } }
diff --git a/app/views/projects/services/prometheus/_help.html.haml b/app/views/projects/services/prometheus/_help.html.haml
deleted file mode 100644
index f40d8638845..00000000000
--- a/app/views/projects/services/prometheus/_help.html.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-- if @project
- = render 'shared/prometheus_configuration_banner', project: @project, integration: integration, header_tag: :h4
- %hr
-
-%h4.gl-mb-3
- = s_('PrometheusService|Manual configuration')
-%p
- = s_('PrometheusService|Auto configuration settings are used unless you override their values here.')
diff --git a/app/views/projects/services/prometheus/_metrics.html.haml b/app/views/projects/services/prometheus/_metrics.html.haml
deleted file mode 100644
index 8794f3e24da..00000000000
--- a/app/views/projects/services/prometheus/_metrics.html.haml
+++ /dev/null
@@ -1,38 +0,0 @@
-- project = local_assigns.fetch(:project)
-
-= render 'projects/services/prometheus/custom_metrics', project: project, integration: integration
-
-.col-lg-3
- %p
- = s_('PrometheusService|Common metrics are automatically monitored based on a library of metrics from popular exporters.')
- = link_to s_('PrometheusService|More information'), help_page_path('user/project/integrations/prometheus'), target: '_blank', rel: "noopener noreferrer"
-
-.col-lg-9
- .card.js-panel-monitored-metrics{ data: { active_metrics: active_common_project_prometheus_metrics_path(project, :json), metrics_help_path: help_page_path('user/project/integrations/prometheus_library/index') } }
- .card-header
- %strong
- = s_('PrometheusService|Common metrics')
- = gl_badge_tag 0, nil, class: 'js-monitored-count'
- .card-body
- .loading-metrics.js-loading-metrics
- %p.m-3
- = gl_loading_icon(inline: true, css_class: 'metrics-load-spinner')
- = s_('PrometheusService|Finding and configuring metrics...')
- .empty-metrics.hidden.js-empty-metrics
- %p.text-tertiary.m-3
- = s_('PrometheusService|Waiting for your first deployment to an environment to find common metrics')
- %ul.list-unstyled.metrics-list.hidden.js-metrics-list
-
- .card.hidden.js-panel-missing-env-vars
- .card-header
- = sprite_icon('chevron-lg-right', css_class: 'panel-toggle js-panel-toggle-right' )
- = sprite_icon('chevron-lg-down', css_class: 'panel-toggle js-panel-toggle-down hidden' )
- = s_('PrometheusService|Missing environment variable')
- = gl_badge_tag 0, nil, class: 'js-env-var-count'
- .card-body.hidden
- .flash-container
- .flash-notice
- .flash-text
- = s_("PrometheusService|To set up automatic monitoring, add the environment variable %{variable} to exporter's queries." % { variable: "<code>$CI_ENVIRONMENT_SLUG</code>" }).html_safe
- = link_to s_('PrometheusService|More information'), help_page_path('operations/metrics/dashboards/variables.md', anchor: 'query-variables')
- %ul.list-unstyled.metrics-list.js-missing-var-metrics-list
diff --git a/app/views/projects/services/prometheus/_show.html.haml b/app/views/projects/services/prometheus/_show.html.haml
deleted file mode 100644
index 3350ac8a6c5..00000000000
--- a/app/views/projects/services/prometheus/_show.html.haml
+++ /dev/null
@@ -1,9 +0,0 @@
-.row
- .col-lg-3
- %h4.gl-mt-0
- = s_('PrometheusService|Metrics')
-
-.row.gl-mb-3.prometheus-metrics-monitoring.js-prometheus-metrics-monitoring
- = render 'projects/services/prometheus/metrics', project: @project, integration: integration
-
-= render 'projects/services/prometheus/external_alerts', project: @project, integration: integration
diff --git a/app/views/projects/services/prometheus/_top.html.haml b/app/views/projects/services/prometheus/_top.html.haml
deleted file mode 100644
index 52b29ea2e8f..00000000000
--- a/app/views/projects/services/prometheus/_top.html.haml
+++ /dev/null
@@ -1,9 +0,0 @@
-- return unless integration.manual_configuration?
-
-.row
- .col-lg-12
- = render Pajamas::AlertComponent.new(dismissible: false) do
- .gl-alert-body
- = s_('AlertSettings|You can now set up alert endpoints for manually configured Prometheus instances in the Alerts section on the Operations settings page. Alert endpoint fields on this page have been deprecated.')
- .gl-alert-actions
- = link_to _('Visit settings page'), project_settings_operations_path(@project, anchor: 'js-alert-management-settings'), class: 'gl-button btn gl-alert-action btn-info'
diff --git a/app/views/projects/services/slack/_help.haml b/app/views/projects/services/slack/_help.haml
deleted file mode 100644
index c5fcd5ca5fe..00000000000
--- a/app/views/projects/services/slack/_help.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-.info-well
- .well-segment
- %p= s_('SlackIntegration|Sends notifications about project events to Slack channels.')
- = link_to _('How do I set up this service?'), help_page_path('user/project/integrations/slack')
diff --git a/app/views/projects/services/slack_slash_commands/_help.html.haml b/app/views/projects/services/slack_slash_commands/_help.html.haml
deleted file mode 100644
index fee0ca15808..00000000000
--- a/app/views/projects/services/slack_slash_commands/_help.html.haml
+++ /dev/null
@@ -1,93 +0,0 @@
-- pretty_name = @project&.full_name ? html_escape(@project&.full_name) : '<' + _('project name') + '>'
-- run_actions_text = html_escape_once(s_("ProjectService|Perform common operations on GitLab project: %{project_name}") % { project_name: pretty_name })
-
-.info-well
- .well-segment
- %p
- = s_("SlackService|Perform common operations in this project by entering slash commands in Slack.")
- = link_to help_page_path('user/project/integrations/slack_slash_commands.md'), target: '_blank' do
- = _("Learn more.")
- = sprite_icon('external-link')
- %p.inline
- = s_("SlackService|After setup, get a list of available Slack slash commands by entering")
- %kbd.inline /&lt;command&gt; help
- - if integration.project_level?
- %p= _("To set up this integration:")
- %ul.list-unstyled.indent-list
- %li
- - slash_command_link_url = 'https://my.slack.com/services/new/slash-commands'
- - slash_command_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: slash_command_link_url }
- - slash_command_link_end = ' %{external_link_icon}</a>'.html_safe % { external_link_icon: sprite_icon('external-link') }
- = html_escape(s_('SlackService|1. %{slash_command_link_start}Add a slash command%{slash_command_link_end} in your Slack team using this information:')) % { slash_command_link_start: slash_command_link_start, slash_command_link_end: slash_command_link_end }
-
- %hr
-
- .help-form
- .form-group
- = label_tag nil, _('Command'), class: 'col-12 col-form-label label-bold'
- .col-12
- %p= s_('SlackService|Fill in the word that works best for your team.')
- %p
- = _("Suggestions:")
- %code= 'gitlab'
- %code= 'project'
- - if @project
- %code= @project.path # Path contains no spaces, but dashes
- %code= @project.full_path
-
- .form-group
- = label_tag :url, 'URL', class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :url, service_trigger_url(integration), class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#url', class: 'input-group-text')
-
- .form-group
- = label_tag nil, _('Method'), class: 'col-12 col-form-label label-bold'
- .col-12 POST
-
- .form-group
- = label_tag :customize_name, _('Customize name'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :customize_name, 'GitLab', class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#customize_name', class: 'input-group-text')
-
- .form-group
- = label_tag nil, _('Customize icon'), class: 'col-12 col-form-label label-bold'
- .col-12
- = image_tag(asset_url('slash-command-logo.png', skip_pipeline: true), width: 36, height: 36, class: 'mr-3')
- = link_to(_('Download image'), asset_url('gitlab_logo.png'), class: 'gl-button btn btn-default btn-sm', target: '_blank', rel: 'noopener noreferrer')
-
- .form-group
- = label_tag nil, _('Autocomplete'), class: 'col-12 col-form-label label-bold'
- .col-12 Show this command in the autocomplete list
-
- .form-group
- = label_tag :autocomplete_description, _('Autocomplete description'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :autocomplete_description, run_actions_text.html_safe, class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#autocomplete_description', class: 'input-group-text')
-
- .form-group
- = label_tag :autocomplete_usage_hint, _('Autocomplete usage hint'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :autocomplete_usage_hint, '[help]', class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#autocomplete_usage_hint', class: 'input-group-text')
-
- .form-group
- = label_tag :descriptive_label, _('Descriptive label'), class: 'col-12 col-form-label label-bold'
- .col-12.input-group
- = text_field_tag :descriptive_label, _('Perform common operations on GitLab project'), class: 'form-control form-control-sm', readonly: 'readonly'
- .input-group-append
- = clipboard_button(target: '#descriptive_label', class: 'input-group-text')
-
- %hr
-
- %ul.list-unstyled.indent-list
- %li
- = html_escape(s_("SlackService|2. Paste the token from Slack in the %{strong_open}Token%{strong_close} field below.")) % { strong_open: '<strong>'.html_safe, strong_close: '</strong>'.html_safe }
- %li
- = html_escape(s_("SlackService|3. Select the %{strong_open}Active%{strong_close} checkbox, select %{strong_open}Save changes%{strong_close}, and start using slash commands in Slack!")) % { strong_open: '<strong>'.html_safe, strong_close: '</strong>'.html_safe }
diff --git a/app/views/projects/settings/ci_cd/_form.html.haml b/app/views/projects/settings/ci_cd/_form.html.haml
index 5ef56cda6d2..508e63f77d8 100644
--- a/app/views/projects/settings/ci_cd/_form.html.haml
+++ b/app/views/projects/settings/ci_cd/_form.html.haml
@@ -1,6 +1,7 @@
- help_link_public_pipelines = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'change-which-users-can-view-your-pipelines'), target: '_blank', rel: 'noopener noreferrer'
- help_link_auto_canceling = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'auto-cancel-redundant-pipelines'), target: '_blank', rel: 'noopener noreferrer'
-- help_link_skip_outdated =link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'skip-outdated-deployment-jobs'), target: '_blank', rel: 'noopener noreferrer'
+- help_link_skip_outdated = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'skip-outdated-deployment-jobs'), target: '_blank', rel: 'noopener noreferrer'
+- help_link_separated_caches = link_to sprite_icon('question-o'), help_page_path('ci/caching/index', anchor: 'cache-key-names'), target: '_blank', rel: 'noopener noreferrer'
.row.gl-mt-3
.col-lg-12
@@ -25,6 +26,11 @@
help_text: (_('When a deployment job is successful, skip older deployment jobs that are still pending.') + ' ' + help_link_skip_outdated).html_safe
.form-group
+ = f.gitlab_ui_checkbox_component :ci_separated_caches,
+ s_("CICD|Use separate caches for protected branches"),
+ help_text: (s_('CICD|Unprotected branches will not have access to the cache from protected branches.') + ' ' + help_link_separated_caches).html_safe
+
+ .form-group
= f.label :ci_config_path, _('CI/CD configuration file'), class: 'label-bold'
= f.text_field :ci_config_path, class: 'form-control', placeholder: '.gitlab-ci.yml'
%p.form-text.text-muted
@@ -77,19 +83,7 @@
= _("The maximum file size in megabytes for individual job artifacts.")
= link_to sprite_icon('question-o'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'maximum-artifacts-size'), target: '_blank', rel: 'noopener noreferrer'
- .form-group
- = f.label :build_coverage_regex, _("Test coverage parsing"), class: 'label-bold'
- .input-group
- %span.input-group-prepend
- .input-group-text /
- = f.text_field :build_coverage_regex, class: 'form-control gl-form-input', placeholder: 'Regular expression', data: { qa_selector: 'build_coverage_regex_field' }
- %span.input-group-append
- .input-group-text /
- %p.form-text.text-muted
- = html_escape(_('The regular expression used to find test coverage output in the job log. For example, use %{regex} for Simplecov (Ruby). Leave blank to disable.')) % { regex: '<code>\(\d+.\d+%\)</code>'.html_safe }
- = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'add-test-coverage-results-using-project-settings-deprecated'), target: '_blank', rel: 'noopener noreferrer'
-
- = f.submit _('Save changes'), class: "btn gl-button btn-confirm", data: { qa_selector: 'save_general_pipelines_changes_button' }
+ = f.submit _('Save changes'), class: "btn gl-button btn-confirm"
%hr
diff --git a/app/views/projects/settings/ci_cd/show.html.haml b/app/views/projects/settings/ci_cd/show.html.haml
index 28cde994d00..87ca13a7bd6 100644
--- a/app/views/projects/settings/ci_cd/show.html.haml
+++ b/app/views/projects/settings/ci_cd/show.html.haml
@@ -7,14 +7,14 @@
- expanded = expanded_by_default?
- general_expanded = @project.errors.empty? ? expanded : true
-%section.settings#js-general-pipeline-settings.no-animate{ class: ('expanded' if general_expanded), data: { qa_selector: 'general_pipelines_settings_content' } }
+%section.settings#js-general-pipeline-settings.no-animate{ class: ('expanded' if general_expanded) }
.settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
= _("General pipelines")
%button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' }
= expanded ? _('Collapse') : _('Expand')
%p
- = _("Customize your pipeline configuration and coverage report.")
+ = _("Customize your pipeline configuration.")
.settings-content
= render 'form'
@@ -109,3 +109,15 @@
= link_to _('Learn more'), help_page_path('ci/jobs/ci_job_token'), target: '_blank', rel: 'noopener noreferrer'
.settings-content
= render 'ci/token_access/index'
+
+- if show_secure_files_setting(@project, current_user)
+ %section.settings
+ .settings-header
+ %h4.settings-title
+ = _("Secure Files")
+ = button_to project_ci_secure_files_path(@project), method: :get, class: 'btn gl-button btn-default' do
+ = _('Manage')
+ %p
+ = _("Use Secure Files to store files used by your pipelines such as Android keystores, or Apple provisioning profiles and signing certificates.")
+ = link_to _('Learn more'), help_page_path('ci/secure_files/index'), target: '_blank', rel: 'noopener noreferrer'
+
diff --git a/app/views/projects/settings/operations/_prometheus.html.haml b/app/views/projects/settings/operations/_prometheus.html.haml
deleted file mode 100644
index 93281cc225b..00000000000
--- a/app/views/projects/settings/operations/_prometheus.html.haml
+++ /dev/null
@@ -1,17 +0,0 @@
-%section.settings.no-animate.js-prometheus-settings
- .settings-header
- %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
- = _('Prometheus')
- %button.gl-button.btn.btn-default.js-settings-toggle{ type: 'button' }
- = _('Expand')
- %p
- = _('Link Prometheus monitoring to GitLab.')
- = link_to _('More information'), help_page_path('user/project/integrations/prometheus'), target: '_blank', rel: 'noopener noreferrer'
- .settings-content
- - if @project
- = render 'shared/prometheus_configuration_banner', project: @project, integration: service, header_tag: :b, info_well_classes: 'gl-p-3 gl-mt-3'
-
- %b.gl-mb-3
- = s_('PrometheusService|Manual configuration')
- %p
- = s_('PrometheusService|Auto configuration settings are used unless you override their values here.')
diff --git a/app/views/projects/settings/operations/show.html.haml b/app/views/projects/settings/operations/show.html.haml
index 9a31666c316..80c22604e49 100644
--- a/app/views/projects/settings/operations/show.html.haml
+++ b/app/views/projects/settings/operations/show.html.haml
@@ -15,13 +15,14 @@
= s_('Deprecations|Feature deprecation and removal')
.gl-alert-body
%p
- = html_escape(s_('Deprecations|The metrics feature was deprecated in GitLab 14.7. The logs and tracing features were also deprecated in GitLab 14.7, and are %{removal_link_start} scheduled for removal %{link_end} in GitLab 15.0. For information on a possible replacement, %{opstrace_link_start} learn more about Opstrace %{link_end}.')) % {removal_link_start: removal_epic_link_start, opstrace_link_start: opstrace_link_start, link_end: link_end }
+ = html_escape(s_('Deprecations|The metrics feature was deprecated in GitLab 14.7.'))
+ = html_escape(s_('Deprecations|The logs and tracing features were also deprecated in GitLab 14.7, and are %{removal_link_start} scheduled for removal %{link_end} in GitLab 15.0.')) % {removal_link_start: removal_epic_link_start, link_end: link_end } if Feature.enabled?(:monitor_tracing, @project)
+ = html_escape(s_('Deprecations|For information on a possible replacement, %{opstrace_link_start} learn more about Opstrace %{link_end}.')) % {opstrace_link_start: opstrace_link_start, link_end: link_end }
= render 'projects/settings/operations/metrics_dashboard'
-= render 'projects/settings/operations/tracing'
+= render 'projects/settings/operations/tracing' if Feature.enabled?(:monitor_tracing, @project)
= render 'projects/settings/operations/error_tracking'
= render 'projects/settings/operations/alert_management'
= render 'projects/settings/operations/incidents'
= render 'projects/settings/operations/grafana_integration'
= render_if_exists 'projects/settings/operations/status_page'
-= render 'projects/settings/operations/prometheus', service: prometheus_integration if Feature.enabled?(:settings_operations_prometheus_service)
diff --git a/app/views/projects/tree/_tree_header.html.haml b/app/views/projects/tree/_tree_header.html.haml
index 202c0f22420..29bdca1c876 100644
--- a/app/views/projects/tree/_tree_header.html.haml
+++ b/app/views/projects/tree/_tree_header.html.haml
@@ -1,6 +1,8 @@
+- is_project_overview = local_assigns.fetch(:is_project_overview, false)
+
.tree-ref-container.gl-display-flex.mb-2.mb-md-0
.tree-ref-holder
- = render 'shared/ref_switcher', destination: 'tree', path: @path, show_create: true
+ = render 'shared/ref_switcher', destination: 'tree', show_create: true
#js-repo-breadcrumb{ data: breadcrumb_data_attributes }
@@ -8,7 +10,7 @@
.tree-controls
.d-block.d-sm-flex.flex-wrap.align-items-start.gl-children-ml-sm-3.gl-first-child-ml-sm-0<
= render_if_exists 'projects/tree/lock_link'
- #js-tree-history-link{ data: { history_link: project_commits_path(@project, @ref) } }
+ #js-tree-history-link{ data: { history_link: project_commits_path(@project, @ref), is_project_overview: is_project_overview.to_s } }
= render 'projects/find_file_link'
= render 'shared/web_ide_button', blob: nil
diff --git a/app/views/projects/work_items/index.html.haml b/app/views/projects/work_items/index.html.haml
index 0efd7a740d3..356f93c6ed5 100644
--- a/app/views/projects/work_items/index.html.haml
+++ b/app/views/projects/work_items/index.html.haml
@@ -1,3 +1,3 @@
- page_title s_('WorkItem|Work Items')
-#js-work-items{ data: { full_path: @project.full_path } }
+#js-work-items{ data: { full_path: @project.full_path, issues_list_path: project_issues_path(@project) } }