Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 16:49:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 16:49:51 +0300
commit71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e (patch)
tree6a2d93ef3fb2d353bb7739e4b57e6541f51cdd71 /app/views/projects
parenta7253423e3403b8c08f8a161e5937e1488f5f407 (diff)
Add latest changes from gitlab-org/gitlab@15-9-stable-eev15.9.0-rc42
Diffstat (limited to 'app/views/projects')
-rw-r--r--app/views/projects/_files.html.haml4
-rw-r--r--app/views/projects/_merge_request_pipelines_and_threads_options.html.haml12
-rw-r--r--app/views/projects/_new_project_fields.html.haml6
-rw-r--r--app/views/projects/airflow/dags/index.html.haml11
-rw-r--r--app/views/projects/artifacts/browse.html.haml1
-rw-r--r--app/views/projects/artifacts/index.html.haml10
-rw-r--r--app/views/projects/blame/_page.html.haml34
-rw-r--r--app/views/projects/blame/show.html.haml46
-rw-r--r--app/views/projects/branches/index.html.haml12
-rw-r--r--app/views/projects/buttons/_clone.html.haml99
-rw-r--r--app/views/projects/commit/_ajax_signature.html.haml2
-rw-r--r--app/views/projects/commit/_multiple_signatures_signature_badge.html.haml2
-rw-r--r--app/views/projects/commit/_other_user_signature_badge.html.haml2
-rw-r--r--app/views/projects/commit/_revoked_key_signature_badge.html.haml5
-rw-r--r--app/views/projects/commit/_same_user_different_email_signature_badge.html.haml2
-rw-r--r--app/views/projects/commit/_signature_badge.html.haml10
-rw-r--r--app/views/projects/commit/_unverified_signature_badge.html.haml2
-rw-r--r--app/views/projects/commit/_verified_signature_badge.html.haml2
-rw-r--r--app/views/projects/commit/x509/_unverified_signature_badge.html.haml2
-rw-r--r--app/views/projects/commit/x509/_verified_signature_badge.html.haml2
-rw-r--r--app/views/projects/commits/show.html.haml2
-rw-r--r--app/views/projects/edit.html.haml5
-rw-r--r--app/views/projects/environments/edit.html.haml1
-rw-r--r--app/views/projects/find_file/show.html.haml2
-rw-r--r--app/views/projects/forks/index.html.haml3
-rw-r--r--app/views/projects/graphs/charts.html.haml2
-rw-r--r--app/views/projects/graphs/show.html.haml15
-rw-r--r--app/views/projects/issues/_discussion.html.haml3
-rw-r--r--app/views/projects/issues/_issue.html.haml2
-rw-r--r--app/views/projects/learn_gitlab/index.html.haml8
-rw-r--r--app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml2
-rw-r--r--app/views/projects/merge_requests/_page.html.haml8
-rw-r--r--app/views/projects/merge_requests/creations/_new_compare.html.haml60
-rw-r--r--app/views/projects/mirrors/_branch_filter.html.haml6
-rw-r--r--app/views/projects/mirrors/_mirror_repos.html.haml7
-rw-r--r--app/views/projects/mirrors/_mirror_repos_list.html.haml4
-rw-r--r--app/views/projects/mirrors/_mirror_repos_push.html.haml1
-rw-r--r--app/views/projects/ml/candidates/show.html.haml3
-rw-r--r--app/views/projects/ml/experiments/index.html.haml16
-rw-r--r--app/views/projects/ml/experiments/show.html.haml3
-rw-r--r--app/views/projects/network/_head.html.haml4
-rw-r--r--app/views/projects/network/show.html.haml2
-rw-r--r--app/views/projects/notes/_more_actions_dropdown.html.haml5
-rw-r--r--app/views/projects/runners/_project_runners.html.haml (renamed from app/views/projects/runners/_specific_runners.html.haml)16
-rw-r--r--app/views/projects/runners/_settings.html.haml2
-rw-r--r--app/views/projects/settings/packages_and_registries/cleanup_tags.html.haml4
-rw-r--r--app/views/projects/settings/packages_and_registries/show.html.haml4
-rw-r--r--app/views/projects/settings/repository/show.html.haml2
-rw-r--r--app/views/projects/starrers/index.html.haml2
-rw-r--r--app/views/projects/tree/_tree_header.html.haml4
50 files changed, 209 insertions, 255 deletions
diff --git a/app/views/projects/_files.html.haml b/app/views/projects/_files.html.haml
index e4eed63f45a..e2d1a50ae5e 100644
--- a/app/views/projects/_files.html.haml
+++ b/app/views/projects/_files.html.haml
@@ -4,7 +4,6 @@
- ref = local_assigns.fetch(:ref) { current_ref }
- project = local_assigns.fetch(:project) { @project }
- add_page_startup_api_call logs_file_project_ref_path(@project, ref, @path, format: "json", offset: 0)
-- source = visible_fork_source(@project)
- if readme_path = @project.repository.readme_path
- add_page_startup_api_call project_blob_path(@project, tree_join(@ref, readme_path), viewer: "rich", format: "json")
@@ -18,7 +17,8 @@
= render 'projects/tree/tree_header', tree: @tree, is_project_overview: is_project_overview
- if project.forked? && Feature.enabled?(:fork_divergence_counts, @project.fork_source)
- #js-fork-info{ data: { source_name: source ? source.full_name : '', source_path: source ? project_path(source) : '' } }
+
+ #js-fork-info{ data: vue_fork_divergence_data(project, ref), project_id: @project.id }
- if is_project_overview
.project-buttons.gl-mb-5.js-show-on-project-root{ data: { qa_selector: 'project_buttons' } }
diff --git a/app/views/projects/_merge_request_pipelines_and_threads_options.html.haml b/app/views/projects/_merge_request_pipelines_and_threads_options.html.haml
index 94f8d3cc4a3..a9609434f15 100644
--- a/app/views/projects/_merge_request_pipelines_and_threads_options.html.haml
+++ b/app/views/projects/_merge_request_pipelines_and_threads_options.html.haml
@@ -1,13 +1,13 @@
- form = local_assigns.fetch(:form)
= 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.")
+ s_('MergeChecks|Pipelines must succeed'),
+ help_text: s_("MergeChecks|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.'),
+ s_('MergeChecks|Skipped pipelines are considered successful'),
+ help_text: s_('MergeChecks|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' } }
+ s_('MergeChecks|All threads must be resolved'),
+ checkbox_options: { data: { qa_selector: 'only_allow_merge_if_all_discussions_are_resolved_checkbox' } }
diff --git a/app/views/projects/_new_project_fields.html.haml b/app/views/projects/_new_project_fields.html.haml
index ec83782985b..53a1abdff33 100644
--- a/app/views/projects/_new_project_fields.html.haml
+++ b/app/views/projects/_new_project_fields.html.haml
@@ -6,11 +6,13 @@
.row{ id: project_name_id }
= f.hidden_field :ci_cd_only, value: ci_cd_only
- .form-group.project-name.col-sm-12
+ .form-group.gl-form-group.project-name.col-sm-12
= f.label :name, class: 'label-bold' do
%span= _("Project name")
= f.text_field :name, placeholder: "My awesome project", class: "form-control gl-form-input input-lg", data: { qa_selector: 'project_name', track_label: "#{track_label}", track_action: "activate_form_input", track_property: "project_name", track_value: "" }, required: true, aria: { required: true }
- #project_name_error.gl-field-error.hidden
+ %small#js-project-name-description.form-text.text-gl-muted
+ = s_("ProjectsNew|Must start with a lowercase or uppercase letter, digit, emoji, or underscore. Can also contain dots, pluses, dashes, or spaces.")
+ #js-project-name-error.gl-field-error.gl-mt-2.gl-display-none
.form-group.project-path.col-sm-6.gl-pr-0
= f.label :namespace_id, class: 'label-bold' do
%span= _('Project URL')
diff --git a/app/views/projects/airflow/dags/index.html.haml b/app/views/projects/airflow/dags/index.html.haml
new file mode 100644
index 00000000000..d631d084db1
--- /dev/null
+++ b/app/views/projects/airflow/dags/index.html.haml
@@ -0,0 +1,11 @@
+- breadcrumb_title s_('Airflow|Airflow DAGs')
+- page_title s_('Airflow|Airflow DAGs')
+
+.page-title-holder
+ %h1.page-title.gl-font-size-h-display= s_('Airflow|Airflow DAGs')
+
+#js-show-airflow-dags{ data: {
+ dags: @dags.to_json,
+ pagination: @pagination.to_json
+ }
+}
diff --git a/app/views/projects/artifacts/browse.html.haml b/app/views/projects/artifacts/browse.html.haml
index c91dfe6d28e..3359ea5f63b 100644
--- a/app/views/projects/artifacts/browse.html.haml
+++ b/app/views/projects/artifacts/browse.html.haml
@@ -1,6 +1,7 @@
- breadcrumb_title _('Artifacts')
- page_title @path.presence, _('Artifacts'), "#{@build.name} (##{@build.id})", _('Jobs')
- add_page_specific_style 'page_bundles/tree'
+- add_page_specific_style 'page_bundles/ci_status'
= render "projects/jobs/header"
diff --git a/app/views/projects/artifacts/index.html.haml b/app/views/projects/artifacts/index.html.haml
index 7fa47aed7c6..09970f7b12c 100644
--- a/app/views/projects/artifacts/index.html.haml
+++ b/app/views/projects/artifacts/index.html.haml
@@ -1,11 +1,3 @@
- page_title _('Artifacts')
-%div{ class: container_class }
- %h1.page-title.gl-font-size-h-display.gl-mb-0
- = s_('Artifacts|Artifacts')
- .gl-mb-6
- %strong= s_('Artifacts|Total artifacts size')
- = number_to_human_size(@total_size, precicion: 2)
- #js-artifact-management{ data: { "project-path": @project.full_path,
- "can-destroy-artifacts" => can?(current_user, :destroy_artifacts, @project).to_s,
- "artifacts-management-feedback-image-path": image_path('illustrations/chat-bubble-sm.svg') } }
+#js-artifact-management{ data: artifacts_app_data(@project) }
diff --git a/app/views/projects/blame/_page.html.haml b/app/views/projects/blame/_page.html.haml
new file mode 100644
index 00000000000..92fb99c30a6
--- /dev/null
+++ b/app/views/projects/blame/_page.html.haml
@@ -0,0 +1,34 @@
+- current_line = @blame.first_line
+
+.file-content.blame.code{ class: user_color_scheme }
+ - groups_length = @blame.groups.size - 1
+ - @blame.groups.each_with_index do |blame_group, index|
+ - commit_data = @blame.commit_data(blame_group[:commit])
+ - line_count = blame_group[:lines].count
+
+ .tr{ class: ('last-row' if groups_length == index) }
+ .td.blame-commit.commit{ class: commit_data.age_map_class }
+ = commit_data.author_avatar
+
+ .commit-row-title
+ %span.item-title.str-truncated-100
+ = commit_data.commit_link
+ = commit_data.project_blame_link
+
+ .light
+ = commit_data.commit_author_link
+ = _('committed')
+ #{commit_data.time_ago_tooltip}
+
+ .td.line-numbers
+ - (current_line...(current_line + line_count)).each do |i|
+ %a.diff-line-num.file-line-num.no-link{ href: "#L#{i}", id: "L#{i}", 'data-line-number' => i }
+ = i
+
+ .td.lines
+ %pre.code.highlight
+ %code
+ - blame_group[:lines].each do |line|
+ #{line}
+
+ - current_line += line_count
diff --git a/app/views/projects/blame/show.html.haml b/app/views/projects/blame/show.html.haml
index dd041377b49..827aa86d61a 100644
--- a/app/views/projects/blame/show.html.haml
+++ b/app/views/projects/blame/show.html.haml
@@ -1,10 +1,11 @@
- page_title _("Blame"), @blob.path, @ref
- add_page_specific_style 'page_bundles/tree'
+- dataset = { testid: 'blob-content-holder', qa_selector: 'blame_file_content', per_page: @blame_per_page }
-#blob-content-holder.tree-holder.js-per-page{ data: { testid: 'blob-content-holder', per_page: @blame_per_page } }
+#blob-content-holder.tree-holder.js-per-page{ data: dataset }
= render "projects/blob/breadcrumb", blob: @blob, blame: true
- .file-holder.gl-overflow-hidden
+ .file-holder
= render "projects/blob/header", blob: @blob, blame: true
.file-blame-legend
@@ -21,44 +22,9 @@
%span.legend-box.legend-box-9
%span.right-label Older
- .table-responsive.file-content.blame.code{ class: "#{user_color_scheme} gl-rounded-0!", data: { qa_selector: 'blame_file_content' } }
- %table
- - current_line = @blame.first_line
- - @blame.groups.each do |blame_group|
- - commit_data = @blame.commit_data(blame_group[:commit])
- - line_count = blame_group[:lines].count
-
- %tr{ style: intrinsic_row_css(line_count) }
- %td.blame-commit{ class: commit_data.age_map_class }
- .commit
- = commit_data.author_avatar
-
- .commit-row-title
- %span.item-title.str-truncated-100
- = commit_data.commit_link
- %span
- = commit_data.project_blame_link
- &nbsp;
-
- .light
- = commit_data.commit_author_link
- = _('committed')
- #{commit_data.time_ago_tooltip}
-
- %td.line-numbers
- - (current_line...(current_line + line_count)).each do |i|
- %a.diff-line-num.gl-justify-content-end{ href: "#L#{i}", id: "L#{i}", 'data-line-number' => i, class: "gl-display-flex!" }
- .file-line-num
- = i
- \
-
- %td.lines.gl-w-full
- %pre.code.highlight
- %code
- - blame_group[:lines].each do |line|
- #{line}
-
- - current_line += line_count
+ .table-responsive.blame-table{ data: { qa_selector: 'blame_file_content' } }
+ .blame-table-wrapper
+ = render partial: 'page'
- if @blame_pagination && @blame_pagination.total_pages > 1
.gl-display-flex.gl-justify-content-center.gl-flex-direction-column.gl-align-items-center.gl-p-3.gl-bg-gray-50.gl-border-t-solid.gl-border-t-1.gl-border-gray-100
diff --git a/app/views/projects/branches/index.html.haml b/app/views/projects/branches/index.html.haml
index 475bc9e1c20..f43d19e2542 100644
--- a/app/views/projects/branches/index.html.haml
+++ b/app/views/projects/branches/index.html.haml
@@ -2,6 +2,11 @@
- page_title _('Branches')
- add_to_breadcrumbs(_('Repository'), project_tree_path(@project))
+-# Possible values for variables passed down from the projects/branches_controller.rb
+-#
+-# @mode - overview|active|stale|all (default:overview)
+-# @sort - name_asc|updated_asc|updated_desc
+
.top-area.gl-border-0
= gl_tabs_nav({ class: 'gl-flex-grow-1 gl-border-b-0' }) do
= gl_tab_link_to s_('Branches|Overview'), project_branches_path(@project), { item_active: @mode == 'overview', title: s_('Branches|Show overview of the branches') }
@@ -10,7 +15,12 @@
= gl_tab_link_to s_('Branches|All'), project_branches_filtered_path(@project, state: 'all'), { item_active: %w[overview active stale].exclude?(@mode), title: s_('Branches|Show all branches') }
.nav-controls
- #js-branches-sort-dropdown{ data: { project_branches_filtered_path: project_branches_path(@project, state: 'all'), sort_options: branches_sort_options_hash.to_json, mode: @mode } }
+ #js-branches-sort-dropdown{ data: {
+ project_branches_filtered_path: project_branches_path(@project, state: 'all'),
+ sort_options: branches_sort_options_hash.to_json,
+ show_dropdown: @mode == 'overview' ? 'false' : 'true',
+ sorted_by: @sort }
+ }
- if can? current_user, :push_code, @project
.js-delete-merged-branches{ data: {
diff --git a/app/views/projects/buttons/_clone.html.haml b/app/views/projects/buttons/_clone.html.haml
index a755cb9f5b0..a8a911adb7d 100644
--- a/app/views/projects/buttons/_clone.html.haml
+++ b/app/views/projects/buttons/_clone.html.haml
@@ -1,54 +1,55 @@
- project = project || @project
- dropdown_class = local_assigns.fetch(:dropdown_class, '')
-.git-clone-holder.js-git-clone-holder
- %a#clone-dropdown.gl-button.btn.btn-confirm.clone-dropdown-btn{ href: '#', data: { toggle: 'dropdown', qa_selector: 'clone_dropdown' } }
- %span.gl-mr-2.js-clone-dropdown-label
- = _('Clone')
- = sprite_icon("chevron-down", css_class: "icon")
- %ul.dropdown-menu.dropdown-menu-large.dropdown-menu-selectable.clone-options-dropdown{ class: dropdown_class, data: { qa_selector: 'clone_dropdown_content' } }
- - if ssh_enabled?
- %li{ class: 'gl-px-4!' }
- %label.label-bold
- = _('Clone with SSH')
- .input-group.btn-group
- = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') }, data: { qa_selector: 'ssh_clone_url_content' }
- .input-group-append
- = clipboard_button(target: '#ssh_project_clone', title: _("Copy URL"), class: "input-group-text gl-button btn btn-icon btn-default")
- = render_if_exists 'projects/buttons/geo'
- - if http_enabled?
- %li.pt-2{ class: 'gl-px-4!' }
- %label.label-bold
- = _('Clone with %{http_label}') % { http_label: gitlab_config.protocol.upcase }
- .input-group.btn-group
- = text_field_tag :http_project_clone, project.http_url_to_repo, class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') }, data: { qa_selector: 'http_clone_url_content' }
- .input-group-append
- = clipboard_button(target: '#http_project_clone', title: _("Copy URL"), class: "input-group-text gl-button btn btn-icon btn-default")
- = render_if_exists 'projects/buttons/geo'
- = render_if_exists 'projects/buttons/kerberos_clone_field'
- %li.divider.mt-2
- %li.pt-2.gl-dropdown-item
- %label.label-bold{ class: 'gl-px-4!' }
- = _('Open in your IDE')
+- if can?(current_user, :download_code, @project)
+ .git-clone-holder.js-git-clone-holder
+ %a#clone-dropdown.gl-button.btn.btn-confirm.clone-dropdown-btn{ href: '#', data: { toggle: 'dropdown', qa_selector: 'clone_dropdown' } }
+ %span.gl-mr-2.js-clone-dropdown-label
+ = _('Clone')
+ = sprite_icon("chevron-down", css_class: "icon")
+ %ul.dropdown-menu.dropdown-menu-large.dropdown-menu-selectable.clone-options-dropdown{ class: dropdown_class, data: { qa_selector: 'clone_dropdown_content' } }
- if ssh_enabled?
- - 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-dropdown-item-text-wrapper
- = _('Visual Studio Code (SSH)')
+ %li{ class: 'gl-px-4!' }
+ %label.label-bold
+ = _('Clone with SSH')
+ .input-group.btn-group
+ = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') }, data: { qa_selector: 'ssh_clone_url_content' }
+ .input-group-append
+ = clipboard_button(target: '#ssh_project_clone', title: _("Copy URL"), class: "input-group-text gl-button btn btn-icon btn-default")
+ = render_if_exists 'projects/buttons/geo'
- if http_enabled?
- - 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-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-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-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-dropdown-item-text-wrapper
- = _("Xcode")
+ %li.pt-2{ class: 'gl-px-4!' }
+ %label.label-bold
+ = _('Clone with %{http_label}') % { http_label: gitlab_config.protocol.upcase }
+ .input-group.btn-group
+ = text_field_tag :http_project_clone, project.http_url_to_repo, class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') }, data: { qa_selector: 'http_clone_url_content' }
+ .input-group-append
+ = clipboard_button(target: '#http_project_clone', title: _("Copy URL"), class: "input-group-text gl-button btn btn-icon btn-default")
+ = render_if_exists 'projects/buttons/geo'
+ = render_if_exists 'projects/buttons/kerberos_clone_field'
+ %li.divider.mt-2
+ %li.pt-2.gl-dropdown-item
+ %label.label-bold{ class: 'gl-px-4!' }
+ = _('Open in your IDE')
+ - if ssh_enabled?
+ - 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-dropdown-item-text-wrapper
+ = _('Visual Studio Code (SSH)')
+ - if http_enabled?
+ - 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-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-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-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-dropdown-item-text-wrapper
+ = _("Xcode")
diff --git a/app/views/projects/commit/_ajax_signature.html.haml b/app/views/projects/commit/_ajax_signature.html.haml
index e1bf0940f59..87ccf01c011 100644
--- a/app/views/projects/commit/_ajax_signature.html.haml
+++ b/app/views/projects/commit/_ajax_signature.html.haml
@@ -1,2 +1,2 @@
- if commit.has_signature?
- %button{ tabindex: 0, class: commit_signature_badge_classes('js-loading-gpg-badge'), data: { toggle: 'tooltip', placement: 'top', title: _('GPG signature (loading...)'), 'commit-sha' => commit.sha } }
+ %a.js-loading-signature-badge{ tabindex: 0, role: 'button', data: { toggle: 'tooltip', placement: 'top', title: _('GPG signature (loading...)'), 'commit-sha' => commit.sha } }
diff --git a/app/views/projects/commit/_multiple_signatures_signature_badge.html.haml b/app/views/projects/commit/_multiple_signatures_signature_badge.html.haml
index 2568a69cc2c..f80f194bd4d 100644
--- a/app/views/projects/commit/_multiple_signatures_signature_badge.html.haml
+++ b/app/views/projects/commit/_multiple_signatures_signature_badge.html.haml
@@ -1,5 +1,5 @@
- title = _('Multiple signatures')
- description = _('This commit was signed with multiple signatures.')
-- locals = { signature: signature, title: title, description: description, label: _('Unverified'), css_class: 'invalid' }
+- locals = { signature: signature, title: title, description: description, label: _('Unverified'), variant: 'muted' }
= render partial: 'projects/commit/signature_badge', locals: locals
diff --git a/app/views/projects/commit/_other_user_signature_badge.html.haml b/app/views/projects/commit/_other_user_signature_badge.html.haml
index ffc4b25dc21..345a1964259 100644
--- a/app/views/projects/commit/_other_user_signature_badge.html.haml
+++ b/app/views/projects/commit/_other_user_signature_badge.html.haml
@@ -1,5 +1,5 @@
- title = _("Different user's signature")
- description = _("This commit was signed with a different user's verified signature.")
-- locals = { signature: signature, title: title, description: description, label: _('Unverified'), css_class: 'invalid' }
+- locals = { signature: signature, title: title, description: description, label: _('Unverified'), variant: 'muted' }
= render partial: 'projects/commit/signature_badge', locals: locals
diff --git a/app/views/projects/commit/_revoked_key_signature_badge.html.haml b/app/views/projects/commit/_revoked_key_signature_badge.html.haml
new file mode 100644
index 00000000000..cbcc39249ce
--- /dev/null
+++ b/app/views/projects/commit/_revoked_key_signature_badge.html.haml
@@ -0,0 +1,5 @@
+- title = s_('CommitSignature|Unverified signature')
+- description = s_('CommitSignature|This commit was signed with a key that was revoked.')
+- locals = { signature: signature, title: title, description: description, label: s_('CommitSignature|Unverified'), variant: 'muted' }
+
+= render partial: 'projects/commit/signature_badge', locals: locals
diff --git a/app/views/projects/commit/_same_user_different_email_signature_badge.html.haml b/app/views/projects/commit/_same_user_different_email_signature_badge.html.haml
index 61fdf6fc87a..afce5c10065 100644
--- a/app/views/projects/commit/_same_user_different_email_signature_badge.html.haml
+++ b/app/views/projects/commit/_same_user_different_email_signature_badge.html.haml
@@ -1,5 +1,5 @@
- title = _('GPG key mismatch')
- description = _('This commit was signed with a verified signature, but the committer email is not associated with the GPG Key.')
-- locals = { signature: signature, title: title, description: description, label: _('Unverified'), css_class: ['invalid'] }
+- locals = { signature: signature, title: title, description: description, label: _('Unverified'), variant: 'muted' }
= render partial: 'projects/commit/signature_badge', locals: locals
diff --git a/app/views/projects/commit/_signature_badge.html.haml b/app/views/projects/commit/_signature_badge.html.haml
index 41ba581b9d9..88631f14e56 100644
--- a/app/views/projects/commit/_signature_badge.html.haml
+++ b/app/views/projects/commit/_signature_badge.html.haml
@@ -2,12 +2,10 @@
- title = local_assigns.fetch(:title)
- description = local_assigns.fetch(:description, nil)
- label = local_assigns.fetch(:label)
-- css_class = local_assigns.fetch(:css_class)
-
-- css_classes = commit_signature_badge_classes(css_class)
+- variant = local_assigns.fetch(:variant)
- title = capture do
- .gpg-popover-status
+ .signature-popover
%div
%strong
= title
@@ -31,5 +29,5 @@
= link_to(_('Learn about signing commits'), help_page_path('user/project/repository/gpg_signed_commits/index.md'), class: 'gl-link gl-display-block gl-mt-3')
-%a{ role: 'button', tabindex: 0, class: css_classes, data: { toggle: 'popover', html: 'true', placement: 'top', title: title, content: content } }
- = label
+%a.signature-badge.gl-display-flex{ role: 'button', tabindex: 0, data: { toggle: 'popover', html: 'true', placement: 'top', title: title, content: content } }
+ = gl_badge_tag label, variant: variant
diff --git a/app/views/projects/commit/_unverified_signature_badge.html.haml b/app/views/projects/commit/_unverified_signature_badge.html.haml
index 0eae8d5564d..62a27aea60e 100644
--- a/app/views/projects/commit/_unverified_signature_badge.html.haml
+++ b/app/views/projects/commit/_unverified_signature_badge.html.haml
@@ -1,5 +1,5 @@
- title = _('Unverified signature')
- description = _('This commit was signed with an unverified signature.')
-- locals = { signature: signature, title: title, description: description, label: _('Unverified'), css_class: 'invalid' }
+- locals = { signature: signature, title: title, description: description, label: _('Unverified'), variant: 'muted' }
= render partial: 'projects/commit/signature_badge', locals: locals
diff --git a/app/views/projects/commit/_verified_signature_badge.html.haml b/app/views/projects/commit/_verified_signature_badge.html.haml
index 417d816c711..dd5d0d7d6eb 100644
--- a/app/views/projects/commit/_verified_signature_badge.html.haml
+++ b/app/views/projects/commit/_verified_signature_badge.html.haml
@@ -1,5 +1,5 @@
- title = _('Verified commit')
- description = _('This commit was signed with a verified signature and the committer email was verified to belong to the same user.')
-- locals = { signature: signature, title: title, description: description, label: _('Verified'), css_class: 'valid' }
+- locals = { signature: signature, title: title, description: description, label: _('Verified'), variant: 'success' }
= render partial: 'projects/commit/signature_badge', locals: locals
diff --git a/app/views/projects/commit/x509/_unverified_signature_badge.html.haml b/app/views/projects/commit/x509/_unverified_signature_badge.html.haml
index 6204a6977c0..94b9abda69e 100644
--- a/app/views/projects/commit/x509/_unverified_signature_badge.html.haml
+++ b/app/views/projects/commit/x509/_unverified_signature_badge.html.haml
@@ -1,6 +1,6 @@
- title = capture do
= html_escape(_('This commit was signed with an %{strong_open}unverified%{strong_close} signature.')) % { strong_open: '<strong>'.html_safe, strong_close: '</strong>'.html_safe }
-- locals = { signature: signature, title: title, label: _('Unverified'), css_class: 'invalid', icon: 'status_notfound_borderless', show_user: true }
+- locals = { signature: signature, title: title, label: _('Unverified'), variant: 'muted', icon: 'status_notfound_borderless', show_user: true }
= render partial: 'projects/commit/signature_badge', locals: locals
diff --git a/app/views/projects/commit/x509/_verified_signature_badge.html.haml b/app/views/projects/commit/x509/_verified_signature_badge.html.haml
index 357ad467539..a10516d275a 100644
--- a/app/views/projects/commit/x509/_verified_signature_badge.html.haml
+++ b/app/views/projects/commit/x509/_verified_signature_badge.html.haml
@@ -1,6 +1,6 @@
- title = capture do
= html_escape(_('This commit was signed with a %{strong_open}verified%{strong_close} signature and the committer email is verified to belong to the same user.')) % { strong_open: '<strong>'.html_safe, strong_close: '</strong>'.html_safe }
-- locals = { signature: signature, title: title, label: _('Verified'), css_class: 'valid', icon: 'status_success_borderless', show_user: true }
+- locals = { signature: signature, title: title, label: _('Verified'), variant: 'success', icon: 'status_success_borderless', show_user: true }
= render partial: 'projects/commit/signature_badge', locals: locals
diff --git a/app/views/projects/commits/show.html.haml b/app/views/projects/commits/show.html.haml
index 8f802792e6a..689862eae8a 100644
--- a/app/views/projects/commits/show.html.haml
+++ b/app/views/projects/commits/show.html.haml
@@ -9,7 +9,7 @@
.tree-holder
.nav-block
.tree-ref-container
- .tree-ref-holder
+ .tree-ref-holder.gl-max-w-26
#js-project-commits-ref-switcher{ data: { "project-id" => @project.id, "ref" => @ref, "commits_path": project_commits_path(@project), "ref_type": @ref_type.to_s } }
%ul.breadcrumb.repo-breadcrumb
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index f6e3c15c08b..e87005434e4 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -36,6 +36,8 @@
= c.body do
= _('On the left sidebar, select %{merge_requests_link} to view them.').html_safe % { merge_requests_link: link_to('Settings > Merge requests', project_settings_merge_requests_path(@project)).html_safe }
+= render_if_exists 'projects/settings/analytics_dashboards', expanded: expanded
+
%section.settings.no-animate{ class: ('expanded' if expanded), data: { qa_selector: 'badges_settings_content' } }
.settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
@@ -72,6 +74,9 @@
= link_to _('Run housekeeping'), housekeeping_project_path(@project),
method: :post, class: "btn gl-button btn-default"
+ .gl-display-inline-flex
+ #js-project-prune-unreachable-objects-button{ data: { prune_objects_path: housekeeping_project_path(@project, prune: true), prune_objects_doc_path: help_page_path('administration/housekeeping', anchor: 'prune-unreachable-objects') } }
+
= render 'export', project: @project
= render_if_exists 'projects/settings/archive'
diff --git a/app/views/projects/environments/edit.html.haml b/app/views/projects/environments/edit.html.haml
index dcd5fb2574e..7a275b51c74 100644
--- a/app/views/projects/environments/edit.html.haml
+++ b/app/views/projects/environments/edit.html.haml
@@ -3,4 +3,5 @@
#js-edit-environment{ data: { project_environments_path: project_environments_path(@project),
update_environment_path: project_environment_path(@project, @environment),
+ protected_environment_settings_path: (project_settings_ci_cd_path(@project, anchor: 'js-protected-environments-settings') if @project.licensed_feature_available?(:protected_environments)),
environment: environment_data(@environment)} }
diff --git a/app/views/projects/find_file/show.html.haml b/app/views/projects/find_file/show.html.haml
index 7cd4ab08680..1d4e907dd61 100644
--- a/app/views/projects/find_file/show.html.haml
+++ b/app/views/projects/find_file/show.html.haml
@@ -4,7 +4,7 @@
.file-finder-holder.tree-holder.clearfix.js-file-finder{ 'data-file-find-url': "#{escape_javascript(project_files_path(@project, @ref, format: :json))}", 'data-find-tree-url': escape_javascript(project_tree_path(@project, @ref)), 'data-blob-url-template': escape_javascript(project_blob_path(@project, @ref)) }
.nav-block
.tree-ref-holder
- = render 'shared/ref_switcher', destination: 'find_file', path: @path
+ #js-blob-ref-switcher{ data: { project_id: @project.id, ref: @ref, namespace: "/-/find_file" } }
%ul.breadcrumb.repo-breadcrumb
%li.breadcrumb-item
= link_to project_tree_path(@project, @ref) do
diff --git a/app/views/projects/forks/index.html.haml b/app/views/projects/forks/index.html.haml
index 905c5779c7d..d28ee30b6f9 100644
--- a/app/views/projects/forks/index.html.haml
+++ b/app/views/projects/forks/index.html.haml
@@ -15,8 +15,7 @@
.dropdown.gl-display-inline.gl-md-ml-3.issue-sort-dropdown.gl-mt-3.gl-md-mt-0
.btn-group{ role: 'group' }
- .btn-group{ role: 'group' }
- = gl_redirect_listbox_tag [created_at, activity], @sort
+ = gl_redirect_listbox_tag [created_at, activity], @sort
= forks_sort_direction_button(sort_value)
- if current_user && can?(current_user, :fork_project, @project)
diff --git a/app/views/projects/graphs/charts.html.haml b/app/views/projects/graphs/charts.html.haml
index edf8f71c673..f026a6158cb 100644
--- a/app/views/projects/graphs/charts.html.haml
+++ b/app/views/projects/graphs/charts.html.haml
@@ -34,7 +34,7 @@
.col-md-6
.tree-ref-container
.tree-ref-holder
- = render 'shared/ref_switcher', destination: 'graphs_commits', path: @path
+ #js-project-graph-ref-switcher{ data: { project_id: @project.id, graph_path: project_graph_path(@project, @id), project_branch: current_ref } }
%ul.breadcrumb.repo-breadcrumb
= commits_breadcrumbs
diff --git a/app/views/projects/graphs/show.html.haml b/app/views/projects/graphs/show.html.haml
index a27f076d5dd..754de2db8f3 100644
--- a/app/views/projects/graphs/show.html.haml
+++ b/app/views/projects/graphs/show.html.haml
@@ -1,14 +1,5 @@
- page_title _('Contributors')
-- if Feature.enabled?(:use_ref_type_parameter, @project)
- - graph_path = project_graph_path(@project, current_ref, ref_type: @ref_type, format: :json)
- - commits_path = project_commits_path(@project, current_ref, ref_type: @ref_type)
-- else
- - graph_path = project_graph_path(@project, current_ref, format: :json)
- - commits_path = project_commits_path(@project, current_ref)
+- graph_path = project_graph_path(@project, current_ref, ref_type: @ref_type, format: :json)
+- commits_path = project_commits_path(@project, current_ref, ref_type: @ref_type)
-.sub-header-block.gl-bg-gray-10.gl-p-5
- .tree-ref-holder.gl-display-inline-block.gl-vertical-align-middle.gl-mr-3>
- = render 'shared/ref_switcher', destination: 'graphs'
- = link_to s_('Commits|History'), commits_path, class: 'btn gl-button btn-default'
-
-.js-contributors-graph{ class: container_class, data: { project_graph_path: graph_path, project_branch: current_ref, default_branch: @project.default_branch } }
+.js-contributors-graph{ class: container_class, data: { project_graph_path: graph_path, project_branch: current_ref, default_branch: @project.default_branch, project_id: @project.id, commits_path: commits_path } }
diff --git a/app/views/projects/issues/_discussion.html.haml b/app/views/projects/issues/_discussion.html.haml
index 40935ab6f70..c86f9c79912 100644
--- a/app/views/projects/issues/_discussion.html.haml
+++ b/app/views/projects/issues/_discussion.html.haml
@@ -11,4 +11,5 @@
target_type: 'issue',
show_timeline_view_toggle: show_timeline_view_toggle?(@issue).to_s,
current_user_data: UserSerializer.new.represent(current_user, {only_path: true}, CurrentUserEntity).to_json,
- can_add_timeline_events: "#{can?(current_user, :admin_incident_management_timeline_event, @issue)}" } }
+ can_add_timeline_events: "#{can?(current_user, :admin_incident_management_timeline_event, @issue)}",
+ report_abuse_path: add_category_abuse_reports_path } }
diff --git a/app/views/projects/issues/_issue.html.haml b/app/views/projects/issues/_issue.html.haml
index 1d3320e4f82..18975bc3db6 100644
--- a/app/views/projects/issues/_issue.html.haml
+++ b/app/views/projects/issues/_issue.html.haml
@@ -20,7 +20,7 @@
%span.issuable-authored.d-none.d-sm-inline-block
&middot;
- if issue.service_desk_reply_to
- #{_('created %{timeAgoString} by %{email} via %{user}').html_safe % { timeAgoString: time_ago_with_tooltip(issue.created_at, placement: 'bottom'), email: issue.service_desk_reply_to, user: link_to_member(@project, issue.author, avatar: false) }}
+ #{_('created %{timeAgoString} by %{email} via %{user}').html_safe % { timeAgoString: time_ago_with_tooltip(issue.created_at, placement: 'bottom'), email: issue.present(current_user: current_user).service_desk_reply_to, user: link_to_member(@project, issue.author, avatar: false) }}
- else
#{s_('IssueList|created %{timeAgoString} by %{user}').html_safe % { timeAgoString: time_ago_with_tooltip(issue.created_at, placement: 'bottom'), user: link_to_member(@project, issue.author, avatar: false) }}
= render_if_exists 'shared/issuable/gitlab_team_member_badge', author: issue.author
diff --git a/app/views/projects/learn_gitlab/index.html.haml b/app/views/projects/learn_gitlab/index.html.haml
deleted file mode 100644
index 0e950c26d34..00000000000
--- a/app/views/projects/learn_gitlab/index.html.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-- breadcrumb_title _("Learn GitLab")
-- page_title _("Learn GitLab")
-- add_page_specific_style 'page_bundles/learn_gitlab'
-- data = learn_gitlab_data(@project)
-
-= render 'projects/invite_members_modal', project: @project
-
-#js-learn-gitlab-app{ data: data }
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 0123c5efd3d..92b0a5a0b90 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
@@ -47,6 +47,6 @@
- if moved_mr_sidebar_enabled?
%li.gl-dropdown-divider
%hr.dropdown-divider
- #js-report-abuse-dropdown-item{ data: { report_abuse_path: add_category_abuse_reports_path, reported_user_id: @merge_request.author.id, reported_from_url: merge_request_url(@merge_request) } }
+ .js-report-abuse-dropdown-item{ data: { report_abuse_path: add_category_abuse_reports_path, reported_user_id: @merge_request.author.id, reported_from_url: merge_request_url(@merge_request) } }
#js-report-abuse-drawer
diff --git a/app/views/projects/merge_requests/_page.html.haml b/app/views/projects/merge_requests/_page.html.haml
index 47eb3e016d3..880bffc43ab 100644
--- a/app/views/projects/merge_requests/_page.html.haml
+++ b/app/views/projects/merge_requests/_page.html.haml
@@ -19,11 +19,10 @@
- if mr_action == 'diffs'
- add_page_startup_api_call @endpoint_diff_batch_url
-.merge-request{ data: { mr_action: mr_action, url: merge_request_path(@merge_request, format: :json), project_path: project_path(@merge_request.project), lock_version: @merge_request.lock_version } }
+.merge-request{ data: { mr_action: mr_action, url: merge_request_path(@merge_request, format: :json), project_path: project_path(@merge_request.project), lock_version: @merge_request.lock_version, diffs_batch_cache_key: @diffs_batch_cache_key } }
+ = render "projects/merge_requests/mr_title"
- if moved_mr_sidebar_enabled?
#js-merge-sticky-header{ data: { data: sticky_header_data.to_json } }
- = render "projects/merge_requests/mr_title"
-
.merge-request-details.issuable-details{ data: { id: @merge_request.project.id } }
= render "projects/merge_requests/mr_box"
.merge-request-tabs-holder{ class: "#{'js-tabs-affix' unless ENV['RAILS_ENV'] == 'test'} #{'gl-static' if moved_mr_sidebar_enabled?}" }
@@ -81,7 +80,8 @@
target_type: 'merge_request',
help_page_path: suggest_changes_help_path,
current_user_data: @current_user_data,
- is_locked: @merge_request.discussion_locked.to_s } }
+ is_locked: @merge_request.discussion_locked.to_s,
+ report_abuse_path: add_category_abuse_reports_path } }
- 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
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 48334023cf0..0570d22529b 100644
--- a/app/views/projects/merge_requests/creations/_new_compare.html.haml
+++ b/app/views/projects/merge_requests/creations/_new_compare.html.haml
@@ -9,66 +9,16 @@
.card-new-merge-request
%h2.gl-font-size-h2
= _('Source branch')
- .clearfix
- .merge-request-select.dropdown
- = f.hidden_field :source_project_id
- = dropdown_toggle @merge_request.source_project_path, { toggle: "dropdown", 'field-name': "#{f.object_name}[source_project_id]", disabled: @merge_request.persisted?, default_text: _("Select source project") }, { toggle_class: "js-compare-dropdown js-source-project" }
- .dropdown-menu.dropdown-menu-selectable.dropdown-source-project
- = dropdown_title(_("Select source project"))
- = dropdown_filter(_("Search projects"))
- = dropdown_content do
- = render 'projects/merge_requests/dropdowns/project',
- projects: [@merge_request.source_project],
- 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, default_text: _("Select target 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"))
- = dropdown_content
- = dropdown_loading
- .gl-bg-gray-50.gl-rounded-base.gl-mx-2.gl-my-4
- .compare-commit-empty.js-source-commit-empty.gl-display-flex.gl-align-items-center.gl-p-5{ style: 'display: none;' }
- = sprite_icon('branch', size: 16, css_class: 'gl-mr-3')
- = _('Select a branch to compare')
- = gl_loading_icon(css_class: 'js-source-loading gl-py-3')
- %ul.list-unstyled.mr_source_commit
+ #js-source-project-dropdown{ data: { current_project: { value: f.object.source_project_id.to_s, text: f.object.source_project.full_path, refsUrl: refs_project_path(f.object.source_project) }.to_json, current_branch: { value: f.object.source_branch.presence, text: f.object.source_branch.presence }.to_json } }
.col-lg-6
.card-new-merge-request
%h2.gl-font-size-h2
= _('Target branch')
- .clearfix
- .merge-request-select.dropdown
- - if Feature.enabled?(:mr_compare_dropdowns, @project)
- #js-target-project-dropdown{ data: { target_projects_path: project_new_merge_request_json_target_projects_path(@project), current_project: { value: f.object.target_project_id.to_s, text: f.object.target_project.full_path }.to_json } }
- - else
- - projects = target_projects(@project)
- = f.hidden_field :target_project_id
- = dropdown_toggle f.object.target_project.full_path, { toggle: "dropdown", 'field-name': "#{f.object_name}[target_project_id]", disabled: @merge_request.persisted?, default_text: _("Select target project") }, { toggle_class: "js-compare-dropdown js-target-project" }
- .dropdown-menu.dropdown-menu-selectable.dropdown-target-project
- = dropdown_title(_("Select target project"))
- = dropdown_filter(_("Search projects"))
- = dropdown_content do
- = render 'projects/merge_requests/dropdowns/project',
- projects: projects,
- selected: f.object.target_project_id
- .merge-request-select.dropdown
- = f.hidden_field :target_branch
- = dropdown_toggle f.object.target_branch.presence || _("Select target branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[target_branch]", 'refs-url': refs_project_path(f.object.target_project), selected: f.object.target_branch, default_text: _("Select target branch") }, { toggle_class: "js-compare-dropdown js-target-branch monospace" }
- .dropdown-menu.dropdown-menu-selectable.js-target-branch-dropdown.git-revision-dropdown
- = dropdown_title(_("Select target branch"))
- = dropdown_filter(_("Search branches"))
- = dropdown_content
- = dropdown_loading
- .gl-bg-gray-50.gl-rounded-base.gl-mx-2.gl-my-4
- .compare-commit-empty.js-target-commit-empty.gl-display-flex.gl-align-items-center.gl-p-5{ style: 'display: none;' }
- = sprite_icon('branch', size: 16, css_class: 'gl-mr-3')
- = _('Select a branch to compare')
- = gl_loading_icon(css_class: 'js-target-loading gl-py-3')
- %ul.list-unstyled.mr_target_commit
+ #js-target-project-dropdown{ data: { target_projects_path: project_new_merge_request_json_target_projects_path(@project), current_project: { value: f.object.target_project_id.to_s, text: f.object.target_project.full_path, refsUrl: refs_project_path(f.object.target_project) }.to_json, current_branch: { value: f.object.target_branch.presence, text: f.object.target_branch.presence }.to_json } }
- if @merge_request.errors.any?
= form_errors(@merge_request)
- = f.submit _('Compare branches and continue'), data: { qa_selector: 'compare_branches_button' }, pajamas_button: true
+ .row
+ .col-12
+ = f.submit _('Compare branches and continue'), data: { qa_selector: 'compare_branches_button' }, pajamas_button: true
diff --git a/app/views/projects/mirrors/_branch_filter.html.haml b/app/views/projects/mirrors/_branch_filter.html.haml
new file mode 100644
index 00000000000..b9db9898d49
--- /dev/null
+++ b/app/views/projects/mirrors/_branch_filter.html.haml
@@ -0,0 +1,6 @@
+.form-check.gl-mb-3
+ = check_box_tag :only_protected_branches, '1', false, class: 'js-mirror-protected form-check-input'
+ = label_tag :only_protected_branches, _('Mirror only protected branches'), class: 'form-check-label'
+ .form-text.text-muted
+ = _('If enabled, only protected branches will be mirrored.')
+ = link_to _('Learn more.'), help_page_path('user/project/repository/mirror/index.md', anchor: 'mirror-only-protected-branches'), target: '_blank', rel: 'noopener noreferrer'
diff --git a/app/views/projects/mirrors/_mirror_repos.html.haml b/app/views/projects/mirrors/_mirror_repos.html.haml
index f4e57450aa1..4cfe463fa38 100644
--- a/app/views/projects/mirrors/_mirror_repos.html.haml
+++ b/app/views/projects/mirrors/_mirror_repos.html.haml
@@ -27,12 +27,7 @@
= render 'projects/mirrors/mirror_repos_form', f: f
- .form-check.gl-mb-3
- = check_box_tag :only_protected_branches, '1', false, class: 'js-mirror-protected form-check-input'
- = label_tag :only_protected_branches, _('Mirror only protected branches'), class: 'form-check-label'
- .form-text.text-muted
- = _('If enabled, only protected branches will be mirrored.')
- = link_to _('Learn more.'), help_page_path('user/project/repository/mirror/index.md', anchor: 'mirror-only-protected-branches'), target: '_blank', rel: 'noopener noreferrer'
+ = render 'projects/mirrors/branch_filter'
.panel-footer
= f.submit _('Mirror repository'), class: 'js-mirror-submit', name: :update_remote_mirror, pajamas_button: true, data: { qa_selector: 'mirror_repository_button' }
diff --git a/app/views/projects/mirrors/_mirror_repos_list.html.haml b/app/views/projects/mirrors/_mirror_repos_list.html.haml
index fb8133e6de8..46833b5986b 100644
--- a/app/views/projects/mirrors/_mirror_repos_list.html.haml
+++ b/app/views/projects/mirrors/_mirror_repos_list.html.haml
@@ -26,7 +26,9 @@
- @project.remote_mirrors.each_with_index do |mirror, index|
- next if mirror.new_record?
%tr.rspec-mirrored-repository-row{ class: ('bg-secondary' if mirror.disabled?), data: { qa_selector: 'mirrored_repository_row_container' } }
- %td{ data: { qa_selector: 'mirror_repository_url_content' } }= mirror.safe_url || _('Invalid URL')
+ %td{ data: { qa_selector: 'mirror_repository_url_content' } }
+ = mirror.safe_url || _('Invalid URL')
+ = render_if_exists 'projects/mirrors/mirror_branches_setting_badge', record: mirror
%td= _('Push')
%td
= mirror.last_update_started_at.present? ? time_ago_with_tooltip(mirror.last_update_started_at) : _('Never')
diff --git a/app/views/projects/mirrors/_mirror_repos_push.html.haml b/app/views/projects/mirrors/_mirror_repos_push.html.haml
index 339c5d82919..136f504084e 100644
--- a/app/views/projects/mirrors/_mirror_repos_push.html.haml
+++ b/app/views/projects/mirrors/_mirror_repos_push.html.haml
@@ -4,6 +4,7 @@
= rm_f.hidden_field :enabled, value: '1'
= rm_f.hidden_field :url, class: 'js-mirror-url-hidden', required: true, pattern: "(#{protocols}):\/\/.+"
= rm_f.hidden_field :only_protected_branches, class: 'js-mirror-protected-hidden'
+ = render_if_exists partial: 'projects/mirrors/branch_name_regex', locals: { f: rm_f }
= rm_f.hidden_field :keep_divergent_refs, class: 'js-mirror-keep-divergent-refs-hidden'
= render partial: 'projects/mirrors/ssh_host_keys', locals: { f: rm_f }
= render partial: 'projects/mirrors/authentication_method', locals: { f: rm_f }
diff --git a/app/views/projects/ml/candidates/show.html.haml b/app/views/projects/ml/candidates/show.html.haml
index 7fa98f69edf..77262243efb 100644
--- a/app/views/projects/ml/candidates/show.html.haml
+++ b/app/views/projects/ml/candidates/show.html.haml
@@ -2,6 +2,5 @@
- add_to_breadcrumbs _("Experiments"), project_ml_experiments_path(@project)
- add_to_breadcrumbs experiment.name, project_ml_experiment_path(@project, experiment.iid)
- breadcrumb_title "Candidate #{@candidate.iid}"
-- data = candidate_as_data(@candidate)
-#js-show-ml-candidate{ data: { candidate: data } }
+#js-show-ml-candidate{ data: { view_model: show_candidate_view_model(@candidate) } }
diff --git a/app/views/projects/ml/experiments/index.html.haml b/app/views/projects/ml/experiments/index.html.haml
index a84cb15d940..dd064239e36 100644
--- a/app/views/projects/ml/experiments/index.html.haml
+++ b/app/views/projects/ml/experiments/index.html.haml
@@ -1,11 +1,7 @@
-- breadcrumb_title _('ML Experiments')
-- page_title _('ML Experiments')
+- breadcrumb_title s_('MlExperimentTracking|Model experiments')
+- page_title s_('MlExperimentTracking|Model experiments')
-.page-title-holder.d-flex.align-items-center
- %h1.page-title.gl-font-size-h-display= _('Machine Learning Experiments')
-
-= render "incubation_banner"
-
-%div{ class: container_class }
- .content-list.builds-content-list
- = render "experiment_list", experiments: @experiments, project: @project
+#js-project-ml-experiments-index{ data: {
+ experiments: experiments_as_data(@project, @experiments),
+ page_info: formatted_page_info(@page_info)
+} }
diff --git a/app/views/projects/ml/experiments/show.html.haml b/app/views/projects/ml/experiments/show.html.haml
index 143981eebe6..4433d1fafe9 100644
--- a/app/views/projects/ml/experiments/show.html.haml
+++ b/app/views/projects/ml/experiments/show.html.haml
@@ -4,6 +4,7 @@
- items = candidates_table_items(@candidates)
- metrics = unique_logged_names(@candidates, &:latest_metrics)
- params = unique_logged_names(@candidates, &:params)
+- page_info = formatted_page_info(@page_info)
.page-title-holder.d-flex.align-items-center
%h1.page-title.gl-font-size-h-display= @experiment.name
@@ -12,5 +13,5 @@
candidates: items,
metrics: metrics,
params: params,
- pagination: @pagination.to_json
+ page_info: page_info
} }
diff --git a/app/views/projects/network/_head.html.haml b/app/views/projects/network/_head.html.haml
index e430dc2f372..097ffb0b7fe 100644
--- a/app/views/projects/network/_head.html.haml
+++ b/app/views/projects/network/_head.html.haml
@@ -1,6 +1,6 @@
.row-content-block.second-block.content-component-block.gl-px-0.gl-py-3
- .tree-ref-holder
- = render partial: 'shared/ref_switcher', locals: {destination: 'graph'}
+ .gl-w-20
+ #js-graph-ref-switcher{ data: { project_id: @project.id, ref: @ref, network_path: project_network_path(@project) } }
.oneline
= _("You can move around the graph by using the arrow keys.")
diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml
index 70bb97b7625..c8d4f02274b 100644
--- a/app/views/projects/network/show.html.haml
+++ b/app/views/projects/network/show.html.haml
@@ -1,6 +1,6 @@
- breadcrumb_title _("Graph")
- page_title _("Graph"), @ref
-- network_path = Feature.enabled?(:use_ref_type_parameter) ? project_network_path(@project, @id, ref_type: @ref_type) : project_network_path(@project, @id)
+- network_path = project_network_path(@project, @id, ref_type: @ref_type)
= render "head"
.gl-mt-5
.project-network.gl-border-1.gl-border-solid.gl-border-gray-300
diff --git a/app/views/projects/notes/_more_actions_dropdown.html.haml b/app/views/projects/notes/_more_actions_dropdown.html.haml
index 2351bd209a7..8c94a18e1b0 100644
--- a/app/views/projects/notes/_more_actions_dropdown.html.haml
+++ b/app/views/projects/notes/_more_actions_dropdown.html.haml
@@ -8,9 +8,8 @@
%li
= clipboard_button(text: noteable_note_url(note), title: _('Copy reference'), button_text: _('Copy link'), class: 'btn-clipboard', hide_tooltip: true, hide_button_icon: true)
- unless is_current_user
- %li
- = link_to new_abuse_report_path(user_id: note.author.id, ref_url: noteable_note_url(note)) do
- = _('Report abuse to administrator')
+ .gl-ml-n2
+ .js-report-abuse-dropdown-item{ data: { report_abuse_path: add_category_abuse_reports_path, reported_user_id: note.author.id, reported_from_url: noteable_note_url(note) } }
- if note_editable
%li
= link_to note_url(note), method: :delete, data: { confirm: _('Are you sure you want to delete this comment?'), confirm_btn_variant: 'danger', qa_selector: 'delete_comment_button' }, aria: { label: _('Delete comment') }, remote: true, class: 'js-note-delete' do
diff --git a/app/views/projects/runners/_specific_runners.html.haml b/app/views/projects/runners/_project_runners.html.haml
index f3a7037bdab..543a564568b 100644
--- a/app/views/projects/runners/_specific_runners.html.haml
+++ b/app/views/projects/runners/_project_runners.html.haml
@@ -1,17 +1,13 @@
%h4
- = _('Specific runners')
+ = s_('Runners|Project runners')
.bs-callout.help-callout
- if can?(current_user, :register_project_runners, @project)
- = _('These runners are specific to this project.')
- - if params[:ci_runner_templates]
- %hr
- = render partial: 'ci/runner/setup_runner_in_aws',
- locals: { registration_token: @project.runners_token }
+ = s_('Runners|These runners are assigned to this project.')
%hr
= render partial: 'ci/runner/how_to_setup_runner',
locals: { registration_token: @project.runners_token,
- type: s_('Runners|specific'),
+ type: _('project'),
reset_token_url: reset_registration_token_namespace_project_settings_ci_cd_path,
project_path: @project.path_with_namespace,
group_path: '' }
@@ -22,13 +18,13 @@
%hr
- if @project_runners.any?
- %h4.underlined-title= _('Available specific runners')
- %ul.bordered-list.activated-specific-runners
+ %h4.underlined-title= s_('Runners|Assigned project runners')
+ %ul.bordered-list{ data: { testid: 'assigned_project_runners' } }
= render partial: 'projects/runners/runner', collection: @project_runners, as: :runner
= paginate @project_runners, theme: "gitlab", param_name: "project_page", params: { expand_runners: true, anchor: 'js-runners-settings' }
- if @assignable_runners.any?
%h4.underlined-title= _('Other available runners')
- %ul.bordered-list.available-specific-runners
+ %ul.bordered-list{ data: { testid: 'available_project_runners' } }
= render partial: 'projects/runners/runner', collection: @assignable_runners, as: :runner
= paginate @assignable_runners, theme: "gitlab", param_name: "specific_page", :params => { :anchor => 'js-runners-settings'}
diff --git a/app/views/projects/runners/_settings.html.haml b/app/views/projects/runners/_settings.html.haml
index a02bdac442b..f85b5fd9866 100644
--- a/app/views/projects/runners/_settings.html.haml
+++ b/app/views/projects/runners/_settings.html.haml
@@ -2,7 +2,7 @@
.row
.col-sm-6
- = render 'projects/runners/specific_runners'
+ = render 'projects/runners/project_runners'
.col-sm-6
= render 'projects/runners/shared_runners'
= render 'projects/runners/group_runners'
diff --git a/app/views/projects/settings/packages_and_registries/cleanup_tags.html.haml b/app/views/projects/settings/packages_and_registries/cleanup_tags.html.haml
index 5244587c16d..d27d268d65e 100644
--- a/app/views/projects/settings/packages_and_registries/cleanup_tags.html.haml
+++ b/app/views/projects/settings/packages_and_registries/cleanup_tags.html.haml
@@ -1,6 +1,6 @@
-- add_to_breadcrumbs _('Package and registry settings'), project_settings_packages_and_registries_path(@project)
+- add_to_breadcrumbs _('Packages and registries settings'), project_settings_packages_and_registries_path(@project)
- breadcrumb_title s_('ContainerRegistry|Clean up image tags')
-- page_title s_('ContainerRegistry|Clean up image tags'), _('Package and registry settings')
+- page_title s_('ContainerRegistry|Clean up image tags'), _('Packages and registries settings')
- @content_class = 'limit-container-width' unless fluid_layout
#js-registry-settings-cleanup-image-tags{ data: cleanup_settings_data }
diff --git a/app/views/projects/settings/packages_and_registries/show.html.haml b/app/views/projects/settings/packages_and_registries/show.html.haml
index e0ac07f5f31..c81b38f44dd 100644
--- a/app/views/projects/settings/packages_and_registries/show.html.haml
+++ b/app/views/projects/settings/packages_and_registries/show.html.haml
@@ -1,5 +1,5 @@
-- breadcrumb_title _('Package and registry settings')
-- page_title _('Package and registry settings')
+- breadcrumb_title _('Packages and registries settings')
+- page_title _('Packages and registries settings')
- @content_class = 'limit-container-width' unless fluid_layout
#js-registry-settings{ data: settings_data }
diff --git a/app/views/projects/settings/repository/show.html.haml b/app/views/projects/settings/repository/show.html.haml
index 953bfcf71ab..de171a25e8d 100644
--- a/app/views/projects/settings/repository/show.html.haml
+++ b/app/views/projects/settings/repository/show.html.haml
@@ -15,7 +15,7 @@
-# reused in EE.
= render "projects/settings/repository/protected_branches", protected_branch_entity: @project
= render "shared/deploy_tokens/index", group_or_project: @project, description: deploy_token_description
-= render @deploy_keys
+= render 'shared/deploy_keys/index'
= render "projects/cleanup/show"
= render_if_exists 'shared/promotions/promote_repository_features'
diff --git a/app/views/projects/starrers/index.html.haml b/app/views/projects/starrers/index.html.haml
index 23578652862..2d5581fc1c5 100644
--- a/app/views/projects/starrers/index.html.haml
+++ b/app/views/projects/starrers/index.html.haml
@@ -14,7 +14,7 @@
%button.user-search-btn{ type: "submit", "aria-label" => _("Submit search") }
= sprite_icon('search')
- starrers_sort_options = starrers_sort_options_hash.map { |value, text| { value: value, text: text, href: filter_starrer_path(sort: value) } }
- = gl_redirect_listbox_tag starrers_sort_options, @sort, class: 'gl-ml-3', data: { right: true }
+ = gl_redirect_listbox_tag starrers_sort_options, @sort, class: 'gl-ml-3', data: { placement: 'right' }
- if @starrers.size > 0
.row.gl-mt-3
= render partial: 'starrer', collection: @starrers, as: :starrer
diff --git a/app/views/projects/tree/_tree_header.html.haml b/app/views/projects/tree/_tree_header.html.haml
index fd807350245..6cd3c584f2a 100644
--- a/app/views/projects/tree/_tree_header.html.haml
+++ b/app/views/projects/tree/_tree_header.html.haml
@@ -1,7 +1,7 @@
- is_project_overview = local_assigns.fetch(:is_project_overview, false)
-.tree-ref-container.gl-display-flex.mb-2.mb-md-0
- .tree-ref-holder
+.tree-ref-container.gl-display-flex.gl-flex-wrap.gl-gap-2.mb-2.mb-md-0
+ .tree-ref-holder.gl-max-w-26
#js-tree-ref-switcher{ data: { project_id: @project.id, project_root_path: project_path(@project) } }
#js-repo-breadcrumb{ data: breadcrumb_data_attributes }