diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 09:55:51 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 09:55:51 +0000 |
commit | e8d2c2579383897a1dd7f9debd359abe8ae8373d (patch) | |
tree | c42be41678c2586d49a75cabce89322082698334 /app/views/projects | |
parent | fc845b37ec3a90aaa719975f607740c22ba6a113 (diff) | |
download | gitlab-ce-e8d2c2579383897a1dd7f9debd359abe8ae8373d.tar.gz |
Add latest changes from gitlab-org/gitlab@14-1-stable-eev14.1.0-rc42
Diffstat (limited to 'app/views/projects')
48 files changed, 172 insertions, 171 deletions
diff --git a/app/views/projects/_flash_messages.html.haml b/app/views/projects/_flash_messages.html.haml index f9222387e97..7395495b537 100644 --- a/app/views/projects/_flash_messages.html.haml +++ b/app/views/projects/_flash_messages.html.haml @@ -9,3 +9,4 @@ = render 'shared/auto_devops_implicitly_enabled_banner', project: project = render_if_exists 'projects/above_size_limit_warning', project: project = render_if_exists 'shared/shared_runners_minutes_limit', project: project, classes: [container_class, ("limit-container-width" unless fluid_layout)] + = render_if_exists 'projects/terraform_banner', project: project diff --git a/app/views/projects/_home_panel.html.haml b/app/views/projects/_home_panel.html.haml index 26291c0358e..86172499118 100644 --- a/app/views/projects/_home_panel.html.haml +++ b/app/views/projects/_home_panel.html.haml @@ -47,6 +47,10 @@ = cache_if(cache_enabled, [@project, :buttons, current_user, @notification_setting], expires_in: 1.day) do .project-repo-buttons.gl-display-flex.gl-justify-content-md-end.gl-align-items-start.gl-flex-wrap.gl-mt-5 - if current_user + - if current_user.admin? + = link_to [:admin, @project], class: 'btn gl-button btn-icon gl-align-self-start gl-py-2! gl-mr-3', title: s_('View project in admin area'), + data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do + = sprite_icon('admin') .gl-display-flex.gl-align-items-start.gl-mr-3 - if @notification_setting .js-vue-notification-dropdown{ data: { button_size: "small", disabled: emails_disabled.to_s, dropdown_items: notification_dropdown_items(@notification_setting).to_json, notification_level: @notification_setting.level, help_page_path: help_page_path('user/profile/notifications'), project_id: @project.id } } diff --git a/app/views/projects/_import_project_pane.html.haml b/app/views/projects/_import_project_pane.html.haml index e6ded3ad912..2055f1c7f60 100644 --- a/app/views/projects/_import_project_pane.html.haml +++ b/app/views/projects/_import_project_pane.html.haml @@ -7,7 +7,7 @@ = _("Import project from") .import-buttons - if gitlab_project_import_enabled? - .import_gitlab_project.has-tooltip{ data: { container: 'body' } } + .import_gitlab_project.has-tooltip{ data: { container: 'body', qa_selector: 'gitlab_import_button' } } = link_to new_import_gitlab_project_path, class: 'gl-button btn-default btn btn_import_gitlab_project', **tracking_attrs(track_label, 'click_button', 'gitlab_export') do .gl-button-icon = sprite_icon('tanuki') diff --git a/app/views/projects/_invite_members.html.haml b/app/views/projects/_invite_members_empty_project.html.haml index ab630d34501..ee2215b0fbb 100644 --- a/app/views/projects/_invite_members.html.haml +++ b/app/views/projects/_invite_members_empty_project.html.haml @@ -6,7 +6,8 @@ .js-invite-members-trigger{ data: { variant: 'confirm', classes: 'gl-mb-8 gl-xs-w-full', display_text: s_('InviteMember|Invite members'), + trigger_source: 'project-empty-page', event: 'click_button', label: 'invite_members_empty_project' } } -= render 'shared/issuable/invite_members_trigger', project: @project += render 'projects/invite_members_modal', project: @project diff --git a/app/views/projects/_invite_members_modal.html.haml b/app/views/projects/_invite_members_modal.html.haml index 00f823b9016..5dd6ec0addf 100644 --- a/app/views/projects/_invite_members_modal.html.haml +++ b/app/views/projects/_invite_members_modal.html.haml @@ -1,7 +1,8 @@ -- if can_invite_members_for_project?(project) - .js-invite-members-modal{ data: { id: project.id, - name: project.name, - is_project: 'true', - access_levels: ProjectMember.access_level_roles.to_json, - default_access_level: Gitlab::Access::GUEST, - help_link: help_page_url('user/permissions') } } +- return unless can_import_members? + +.js-invite-members-modal{ data: { id: project.id, + name: project.name, + is_project: 'true', + access_levels: ProjectMember.access_level_roles.to_json, + default_access_level: Gitlab::Access::GUEST, + help_link: help_page_url('user/permissions') } } 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 694d192d079..fbc58283cbf 100644 --- a/app/views/projects/_merge_request_merge_checks_settings.html.haml +++ b/app/views/projects/_merge_request_merge_checks_settings.html.haml @@ -8,7 +8,7 @@ = form.label :only_allow_merge_if_pipeline_succeeds, class: 'form-check-label' do = s_('ProjectSettings|Pipelines must succeed') .text-secondary - - configuring_pipelines_for_merge_requests_help_link_url = help_page_path('ci/merge_request_pipelines/index.md', anchor: 'configuring-pipelines-for-merge-requests') + - configuring_pipelines_for_merge_requests_help_link_url = help_page_path('ci/pipelines/merge_request_pipelines.md', anchor: 'configure-pipelines-for-merge-requests') - configuring_pipelines_for_merge_requests_help_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: configuring_pipelines_for_merge_requests_help_link_url } = s_('ProjectSettings|To enable this feature, configure pipelines. %{link_start}How to configure pipelines for merge requests?%{link_end}').html_safe % { link_start: configuring_pipelines_for_merge_requests_help_link_start, link_end: '</a>'.html_safe } .form-check.mb-2 diff --git a/app/views/projects/_new_project_fields.html.haml b/app/views/projects/_new_project_fields.html.haml index 66fc313213a..55696337bc1 100644 --- a/app/views/projects/_new_project_fields.html.haml +++ b/app/views/projects/_new_project_fields.html.haml @@ -23,7 +23,7 @@ display_path: true, extra_group: namespace_id), {}, - { class: 'select2 js-select-namespace qa-project-namespace-select block-truncated', data: { track_label: "#{track_label}", track_event: "activate_form_input", track_property: "project_path", track_value: "" }}) + { class: 'select2 js-select-namespace qa-project-namespace-select block-truncated', data: { track_label: "#{track_label}", track_event: "activate_form_input", track_property: "project_path", track_value: "", qa_selector: "select_namespace_dropdown" }}) - else .input-group-prepend.static-namespace.flex-shrink-0.has-tooltip{ title: user_url(current_user.username) + '/' } diff --git a/app/views/projects/_remove.html.haml b/app/views/projects/_remove.html.haml index e991a9b0ec7..cb0ec9f19c8 100644 --- a/app/views/projects/_remove.html.haml +++ b/app/views/projects/_remove.html.haml @@ -3,7 +3,7 @@ .sub-section %h4.danger-title= _('Delete project') %p - %strong= _('Deleting the project will delete its repository and all related resources including issues, merge requests, etc.') + %strong= _('Deleting the project will delete its repository and all related resources, including issues and merge requests.') = link_to _('Learn more.'), help_page_path('user/project/settings/index', anchor: 'removing-a-fork-relationship'), target: '_blank', rel: 'noopener noreferrer' %p %strong= _('Deleted projects cannot be restored!') diff --git a/app/views/projects/_terraform_banner.html.haml b/app/views/projects/_terraform_banner.html.haml new file mode 100644 index 00000000000..a30c4a2d624 --- /dev/null +++ b/app/views/projects/_terraform_banner.html.haml @@ -0,0 +1,5 @@ +- @content_class = "container-limited limit-container-width" unless fluid_layout + +- if show_terraform_banner?(project) + .container-fluid{ class: @content_class } + .js-terraform-notification{ data: { project_id: project.id } } diff --git a/app/views/projects/blame/show.html.haml b/app/views/projects/blame/show.html.haml index cba63d5e6d6..8fe9c9e5c52 100644 --- a/app/views/projects/blame/show.html.haml +++ b/app/views/projects/blame/show.html.haml @@ -1,5 +1,4 @@ - page_title _("Blame"), @blob.path, @ref -- link_icon = sprite_icon("link", size: 12) #blob-content-holder.tree-holder = render "projects/blob/breadcrumb", blob: @blob, blame: true @@ -48,8 +47,8 @@ %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!" } - = link_icon - = i + .file-line-num + = i \ %td.lines diff --git a/app/views/projects/blob/_pipeline_tour_success.html.haml b/app/views/projects/blob/_pipeline_tour_success.html.haml index ef1fe25ba1b..8f1c2f93162 100644 --- a/app/views/projects/blob/_pipeline_tour_success.html.haml +++ b/app/views/projects/blob/_pipeline_tour_success.html.haml @@ -1,6 +1,6 @@ .js-success-pipeline-modal{ data: { 'commit-cookie': suggest_pipeline_commit_cookie_name, 'go-to-pipelines-path': project_pipelines_path(@project), 'project-merge-requests-path': project_merge_requests_path(@project), - 'example-link': help_page_path('ci/examples/README.md', anchor: 'gitlab-cicd-examples'), + 'example-link': help_page_path('ci/examples/index.md', anchor: 'gitlab-cicd-examples'), 'code-quality-link': help_page_path('user/project/merge_requests/code_quality'), 'human-access': @project.team.human_max_access(current_user&.id) } } diff --git a/app/views/projects/blob/viewers/_csv.html.haml b/app/views/projects/blob/viewers/_csv.html.haml new file mode 100644 index 00000000000..3a58bc9902c --- /dev/null +++ b/app/views/projects/blob/viewers/_csv.html.haml @@ -0,0 +1 @@ +.file-content#js-csv-viewer{ data: { data: viewer.blob.data } } diff --git a/app/views/projects/branches/new.html.haml b/app/views/projects/branches/new.html.haml index 6cb2c435a30..6de50d48721 100644 --- a/app/views/projects/branches/new.html.haml +++ b/app/views/projects/branches/new.html.haml @@ -2,10 +2,10 @@ - default_ref = params[:ref] || @project.default_branch - if @error - .gl-alert.gl-alert-danger - = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') - %button.js-close.gl-alert-dismiss{ type: 'button', 'aria-label' => _('Dismiss') } - = sprite_icon('close', size: 16, css_class: 'gl-icon') + = render 'shared/global_alert', + variant: :danger, + close_button_class: 'js-close', + is_contained: true do .gl-alert-body = @error %h3.page-title diff --git a/app/views/projects/cycle_analytics/show.html.haml b/app/views/projects/cycle_analytics/show.html.haml index c1f6cfc40c3..3c9762e200a 100644 --- a/app/views/projects/cycle_analytics/show.html.haml +++ b/app/views/projects/cycle_analytics/show.html.haml @@ -1,6 +1,6 @@ - page_title _("Value Stream Analytics") - add_page_specific_style 'page_bundles/cycle_analytics' - svgs = { empty_state_svg_path: image_path("illustrations/analytics/cycle-analytics-empty-chart.svg"), no_data_svg_path: image_path("illustrations/analytics/cycle-analytics-empty-chart.svg"), no_access_svg_path: image_path("illustrations/analytics/no-access.svg") } -- initial_data = { request_path: project_cycle_analytics_path(@project), full_path: @project.full_path }.merge!(svgs) +- initial_data = { project_id: @project.id, group_path: @project.group&.path, request_path: project_cycle_analytics_path(@project), full_path: @project.full_path }.merge!(svgs) #js-cycle-analytics{ data: initial_data } diff --git a/app/views/projects/default_branch/_show.html.haml b/app/views/projects/default_branch/_show.html.haml index 9e9fc08dac0..68ca318e88c 100644 --- a/app/views/projects/default_branch/_show.html.haml +++ b/app/views/projects/default_branch/_show.html.haml @@ -17,7 +17,7 @@ - else .form-group = f.label :default_branch, "Default branch", class: 'label-bold' - = f.select(:default_branch, @project.repository.branch_names, {}, {class: 'select2 select-wide'}) + = f.select(:default_branch, @project.repository.branch_names, {}, {class: 'select2 select-wide', data: { qa_selector: 'default_branch_dropdown' }}) .form-group .form-check @@ -28,4 +28,4 @@ = _("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: 'disabling-automatic-issue-closing'), target: '_blank' - = f.submit _('Save changes'), class: "gl-button btn btn-confirm" + = f.submit _('Save changes'), class: "gl-button btn btn-confirm", data: { qa_selector: 'save_changes_button' } diff --git a/app/views/projects/diffs/_warning.html.haml b/app/views/projects/diffs/_warning.html.haml index 30b0631b465..1d9b1b13d5c 100644 --- a/app/views/projects/diffs/_warning.html.haml +++ b/app/views/projects/diffs/_warning.html.haml @@ -1,9 +1,8 @@ -.gl-alert.gl-alert-warning.gl-mb-5 - %button.js-close.gl-alert-dismiss{ type: 'button', 'aria-label' => _('Dismiss') } - = sprite_icon('close', size: 16, css_class: 'gl-icon') - = sprite_icon('warning', size: 16, css_class: 'gl-icon gl-alert-icon') - %h4.gl-alert-title - = _("Too many changes to show.") += render 'shared/global_alert', + title: _('Too many changes to show.'), + variant: :warning, + is_contained: true, + alert_class: 'gl-mb-5' do .gl-alert-body = html_escape(_("To preserve performance only %{strong_open}%{display_size} of %{real_size}%{strong_close} files are displayed.")) % { display_size: diff_files.size, real_size: diff_files.real_size, strong_open: '<strong>'.html_safe, strong_close: '</strong>'.html_safe } .gl-alert-actions diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index 027b81d6c68..0fda74a3be5 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -7,7 +7,7 @@ = render "home_panel" = render "archived_notice", project: @project -= render "invite_members" if can_import_members? += render 'invite_members_empty_project' if can_import_members? %h4.gl-mt-0.gl-mb-3 = _('The repository for this project is empty') diff --git a/app/views/projects/feature_flags/edit.html.haml b/app/views/projects/feature_flags/edit.html.haml index 1549f5cf6d6..f71c97c2a8f 100644 --- a/app/views/projects/feature_flags/edit.html.haml +++ b/app/views/projects/feature_flags/edit.html.haml @@ -8,9 +8,6 @@ project_id: @project.id, feature_flags_path: project_feature_flags_path(@project), environments_endpoint: search_project_environments_path(@project, format: :json), - user_callouts_path: user_callouts_path, - user_callout_id: UserCalloutsHelper::FEATURE_FLAGS_NEW_VERSION, - show_user_callout: show_feature_flags_new_version?.to_s, strategy_type_docs_page_path: help_page_path('operations/feature_flags', anchor: 'feature-flag-strategies'), environments_scope_docs_path: help_page_path('ci/environments/index.md', anchor: 'scoping-environments-with-specs'), feature_flag_issues_endpoint: feature_flag_issues_links_endpoint(@project, @feature_flag, current_user) } } diff --git a/app/views/projects/forks/error.html.haml b/app/views/projects/forks/error.html.haml index 0c15796b667..30e2e9f19d9 100644 --- a/app/views/projects/forks/error.html.haml +++ b/app/views/projects/forks/error.html.haml @@ -1,10 +1,11 @@ - page_title _("Fork project") - if @forked_project && !@forked_project.saved? - .gl-alert.gl-alert-danger.gl-mt-5 - = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon') - %h4.gl-alert-title - = sprite_icon('fork') - = _("Fork Error!") + = render 'shared/global_alert', + title: _('Fork Error!'), + variant: :danger, + alert_class: 'gl-mt-5', + is_contained: true, + dismissible: false do .gl-alert-body %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) } @@ -14,9 +15,9 @@ – - error = @forked_project.errors.full_messages.first - if error.include?("already been taken") - = _("Name has already been taken") + = _('Name has already been taken') - 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" + = 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/forks/new.html.haml b/app/views/projects/forks/new.html.haml index 0716eda79a8..8848fbae9cb 100644 --- a/app/views/projects/forks/new.html.haml +++ b/app/views/projects/forks/new.html.haml @@ -1,6 +1,6 @@ - page_title s_("ForkProject|Fork project") -- if Feature.enabled?(:fork_project_form) +- if Feature.enabled?(:fork_project_form, @project, default_enabled: :yaml) #fork-groups-mount-element{ data: { fork_illustration: image_path('illustrations/project-create-new-sm.svg'), endpoint: new_project_fork_path(@project, format: :json), new_group_path: new_group_path, diff --git a/app/views/projects/import/jira/show.html.haml b/app/views/projects/import/jira/show.html.haml index 3c0664e4d5f..29296ce23c9 100644 --- a/app/views/projects/import/jira/show.html.haml +++ b/app/views/projects/import/jira/show.html.haml @@ -1,7 +1,7 @@ .js-jira-import-root{ data: { project_path: @project.full_path, issues_path: project_issues_path(@project), jira_integration_path: edit_project_service_path(@project, :jira), - is_jira_configured: @project.jira_service&.active? && @project.jira_service&.valid_connection?.to_s, + is_jira_configured: @project.jira_integration&.configured?.to_s, in_progress_illustration: image_path('illustrations/export-import.svg'), project_id: @project.id, setup_illustration: image_path('illustrations/manual_action.svg') } } 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 9b142b08574..662270fb8e1 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 @@ -2,9 +2,10 @@ - service_desk_link_url = help_page_path('user/project/service_desk') - service_desk_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: service_desk_link_url } -.hide.gl-alert.gl-alert-warning.js-alert-moved-from-service-desk-warning.gl-mt-5{ role: 'alert' } - = sprite_icon('warning', css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') - %button.js-close.gl-alert-dismiss{ type: 'button', 'aria-label' => _('Dismiss') } - = sprite_icon('close', css_class: 'gl-icon') += render 'shared/global_alert', + variant: :warning, + is_contained: true, + close_button_class: 'js-close', + alert_class: 'hide js-alert-moved-from-service-desk-warning gl-mt-5' do .gl-alert-body.gl-mr-3 = 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/index.html.haml b/app/views/projects/issues/index.html.haml index 3e8442eee86..ecf10cd4821 100644 --- a/app/views/projects/issues/index.html.haml +++ b/app/views/projects/issues/index.html.haml @@ -9,7 +9,7 @@ = auto_discovery_link_tag(:atom, safe_params.merge(rss_url_options).to_h, title: "#{@project.name} issues") .js-jira-issues-import-status{ data: { can_edit: can?(current_user, :admin_project, @project).to_s, - is_jira_configured: @project.jira_service.present?.to_s, + is_jira_configured: @project.jira_integration.present?.to_s, issues_path: project_issues_path(@project), project_path: @project.full_path } } diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml index a465f59c559..6c6f98e0b20 100644 --- a/app/views/projects/issues/show.html.haml +++ b/app/views/projects/issues/show.html.haml @@ -4,4 +4,4 @@ - page_title "#{@issue.title} (#{@issue.to_reference})", _("Issues") = render 'projects/issuable/show', issuable: @issue, api_awards_path: award_emoji_issue_api_path(@issue) -= render 'shared/issuable/invite_members_trigger', project: @project += render 'projects/invite_members_modal', project: @project diff --git a/app/views/projects/mattermosts/_no_teams.html.haml b/app/views/projects/mattermosts/_no_teams.html.haml index f375222e311..adef11f315a 100644 --- a/app/views/projects/mattermosts/_no_teams.html.haml +++ b/app/views/projects/mattermosts/_no_teams.html.haml @@ -15,4 +15,4 @@ and try again. %hr .clearfix - = link_to 'Go back', edit_project_service_path(@project, @service), class: 'gl-button btn btn-lg float-right' + = link_to 'Go back', edit_project_service_path(@project, @integration), class: 'gl-button btn btn-lg float-right' diff --git a/app/views/projects/mattermosts/_team_selection.html.haml b/app/views/projects/mattermosts/_team_selection.html.haml index ea04a55a77c..4109fdfc13b 100644 --- a/app/views/projects/mattermosts/_team_selection.html.haml +++ b/app/views/projects/mattermosts/_team_selection.html.haml @@ -2,7 +2,7 @@ This service will be installed on the Mattermost instance at %strong= link_to Gitlab.config.mattermost.host, Gitlab.config.mattermost.host %hr -= form_for(:mattermost, method: :post, url: project_mattermost_path(@project), html: { class: 'js-requires-input'} ) do |f| += form_for(:mattermost, method: :post, url: project_mattermost_path(@project), html: { class: 'js-requires-input' }) do |f| %h4 Team %p = @teams.one? ? 'The team' : 'Select the team' @@ -42,5 +42,5 @@ %hr .clearfix .float-right - = link_to 'Cancel', edit_project_service_path(@project, @service), class: 'gl-button btn btn-lg' + = link_to 'Cancel', edit_project_service_path(@project, @integration), class: 'gl-button btn btn-lg' = f.submit 'Install', class: 'gl-button btn btn-success btn-lg' diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml index 691ce8dc5fc..c4ee522bfa7 100644 --- a/app/views/projects/merge_requests/show.html.haml +++ b/app/views/projects/merge_requests/show.html.haml @@ -96,5 +96,5 @@ #js-review-bar -= render 'shared/issuable/invite_members_trigger', project: @project += render 'projects/invite_members_modal', project: @project diff --git a/app/views/projects/milestones/_form.html.haml b/app/views/projects/milestones/_form.html.haml index dfb9defb91c..5f2057df4aa 100644 --- a/app/views/projects/milestones/_form.html.haml +++ b/app/views/projects/milestones/_form.html.haml @@ -1,27 +1,25 @@ = form_for [@project, @milestone], html: { class: 'milestone-form common-note-form js-quick-submit js-requires-input' } do |f| = form_errors(@milestone) - .row - .col-md-6 - .form-group.row - .col-form-label.col-sm-2 - = f.label :title, _('Title') - .col-sm-10 - = f.text_field :title, maxlength: 255, class: 'form-control gl-form-input', data: { qa_selector: 'milestone_title_field' }, required: true, autofocus: true - .form-group.row.milestone-description - .col-form-label.col-sm-2 - = f.label :description, _('Description') - .col-sm-10 - = render layout: 'shared/md_preview', locals: { url: preview_markdown_path(@project) } do - = render 'shared/zen', f: f, attr: :description, - classes: 'note-textarea', - qa_selector: 'milestone_description_field', - supports_autocomplete: true, - placeholder: _('Write milestone description...') - = render 'shared/notes/hints' - .clearfix - .error-alert - = render 'shared/milestones/form_dates', f: f + .form-group.row + .col-form-label.col-sm-2 + = f.label :title, _('Title') + .col-sm-10 + = f.text_field :title, maxlength: 255, class: 'form-control gl-form-input', data: { qa_selector: 'milestone_title_field' }, required: true, autofocus: true + = render 'shared/milestones/form_dates', f: f + .form-group.row.milestone-description + .col-form-label.col-sm-2 + = f.label :description, _('Description') + .col-sm-10 + = render layout: 'shared/md_preview', locals: { url: preview_markdown_path(@project) } do + = render 'shared/zen', f: f, attr: :description, + classes: 'note-textarea', + qa_selector: 'milestone_description_field', + supports_autocomplete: true, + placeholder: _('Write milestone description...') + = render 'shared/notes/hints' + .clearfix + .error-alert .form-actions - if @milestone.new_record? diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml index 99fe64723d9..dbde3346b81 100644 --- a/app/views/projects/milestones/show.html.haml +++ b/app/views/projects/milestones/show.html.haml @@ -12,19 +12,17 @@ = render_if_exists 'shared/milestones/burndown', milestone: @milestone, project: @project - if can?(current_user, :read_issue, @project) && @milestone.total_issues_count == 0 - .gl-alert.gl-alert-info.gl-mt-3.gl-mb-5{ data: { testid: 'no-issues-alert' } } - .gl-alert-container - = sprite_icon('information-o', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') - .gl-alert-content - .gl-alert-body - %span= _('Assign some issues to this milestone.') -- elsif @milestone.complete? && @milestone.active? - .gl-alert.gl-alert-success.gl-mt-3.gl-mb-5{ data: { testid: 'all-issues-closed-alert' } } - .gl-alert-container - = sprite_icon('check-circle', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') - .gl-alert-content - .gl-alert-body - %span= _('All issues for this milestone are closed. You may close this milestone now.') + = render 'shared/global_alert', + variant: :info, + dismissible: false, + is_contained: true, + alert_data: { testid: 'no-issues-alert' }, + alert_class: 'gl-mt-3 gl-mb-5' do + .gl-alert-body + = _('Assign some issues to this milestone.') +- else + = render 'shared/milestones/milestone_complete_alert', milestone: @milestone do + = _('All issues for this milestone are closed. You may close this milestone now.') = render 'shared/milestones/tabs', milestone: @milestone = render 'shared/milestones/sidebar', milestone: @milestone, project: @project, affix_offset: 153 diff --git a/app/views/projects/packages/packages/show.html.haml b/app/views/projects/packages/packages/show.html.haml index aeca3f5b3e3..76eb22109a4 100644 --- a/app/views/projects/packages/packages/show.html.haml +++ b/app/views/projects/packages/packages/show.html.haml @@ -6,23 +6,7 @@ .row .col-12 - #js-vue-packages-detail{ data: { package: package_from_presenter(@package), - can_delete: can?(current_user, :destroy_package, @project).to_s, - svg_path: image_path('illustrations/no-packages.svg'), - npm_path: package_registry_instance_url(:npm), - npm_help_path: help_page_path('user/packages/npm_registry/index'), - maven_path: package_registry_project_url(@project.id, :maven), - maven_help_path: help_page_path('user/packages/maven_repository/index'), - conan_path: package_registry_project_url(@project.id, :conan), - conan_help_path: help_page_path('user/packages/conan_repository/index'), - nuget_path: nuget_package_registry_url(@project.id), - nuget_help_path: help_page_path('user/packages/nuget_repository/index'), - pypi_path: pypi_registry_url(@project.id), - pypi_setup_path: package_registry_project_url(@project.id, :pypi), - pypi_help_path: help_page_path('user/packages/pypi_repository/index'), - composer_path: composer_registry_url(@project&.group&.id), - composer_help_path: help_page_path('user/packages/composer_repository/index'), - project_name: @project.name, - project_list_url: project_packages_path(@project), - group_list_url: @project.group ? group_packages_path(@project.group) : '', - composer_config_repository_name: composer_config_repository_name(@project.group&.id)} } + - if Feature.enabled?(:package_details_apollo) + #js-vue-packages-detail-new{ data: package_details_data(@project) } + - else + #js-vue-packages-detail{ data: package_details_data(@project, @package) } diff --git a/app/views/projects/pages/_pages_settings.html.haml b/app/views/projects/pages/_pages_settings.html.haml index 483f192109b..2db44528d51 100644 --- a/app/views/projects/pages/_pages_settings.html.haml +++ b/app/views/projects/pages/_pages_settings.html.haml @@ -1,5 +1,8 @@ = form_for @project, url: project_pages_path(@project), html: { class: 'inline', title: pages_https_only_title } do |f| - = render_if_exists 'shared/pages/max_pages_size_input', form: f + - if can?(current_user, :update_max_pages_size) + = render_if_exists 'shared/pages/max_pages_size_input', form: f + .gl-mt-3 + = f.submit s_('GitLabPages|Save changes'), class: 'btn btn-confirm gl-button' - if Gitlab.config.pages.external_http || Gitlab.config.pages.external_https @@ -15,4 +18,4 @@ = s_("GitLabPages|When enabled, all attempts to visit your website through HTTP are automatically redirected to HTTPS using a response with status code 301. Requires a valid certificate for all domains. %{docs_link_start}Learn more.%{link_end}").html_safe % { docs_link_start: docs_link_start, link_end: link_end } .gl-mt-3 - = f.submit s_('GitLabPages|Save'), class: 'btn btn-confirm gl-button' + = f.submit s_('GitLabPages|Save changes'), class: 'btn btn-confirm gl-button' diff --git a/app/views/projects/pipelines/_with_tabs.html.haml b/app/views/projects/pipelines/_with_tabs.html.haml index e56a240c487..c1d48992500 100644 --- a/app/views/projects/pipelines/_with_tabs.html.haml +++ b/app/views/projects/pipelines/_with_tabs.html.haml @@ -78,7 +78,7 @@ = 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/README.md', anchor: 'needs')} } + #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')} } #js-tab-tests.tab-pane #js-pipeline-tests-detail{ data: { summary_endpoint: summary_project_pipeline_tests_path(@project, @pipeline, format: :json), diff --git a/app/views/projects/pipelines/index.html.haml b/app/views/projects/pipelines/index.html.haml index 9669b2e72dc..ae76d4905e0 100644 --- a/app/views/projects/pipelines/index.html.haml +++ b/app/views/projects/pipelines/index.html.haml @@ -22,7 +22,7 @@ "ci-lint-path" => can?(current_user, :create_pipeline, @project) && project_ci_lint_path(@project), "reset-cache-path" => can?(current_user, :admin_pipeline, @project) && reset_cache_project_settings_ci_cd_path(@project), "has-gitlab-ci" => has_gitlab_ci?(@project).to_s, - "add-ci-yml-path" => can?(current_user, :create_pipeline, @project) && @project.present(current_user: current_user).add_ci_yml_path, - "suggested-ci-templates" => experiment_suggested_ci_templates.to_json, + "pipeline-editor-path" => can?(current_user, :create_pipeline, @project) && project_ci_pipeline_editor_path(@project), + "suggested-ci-templates" => suggested_ci_templates.to_json, "code-quality-page-path" => @project.present(current_user: current_user).add_code_quality_ci_yml_path, "ci-runner-settings-path" => project_settings_ci_cd_path(@project, ci_runner_templates: true, anchor: 'js-runners-settings') } } diff --git a/app/views/projects/prometheus/metrics/edit.html.haml b/app/views/projects/prometheus/metrics/edit.html.haml index 15a9c922ca6..d308824571e 100644 --- a/app/views/projects/prometheus/metrics/edit.html.haml +++ b/app/views/projects/prometheus/metrics/edit.html.haml @@ -1,6 +1,6 @@ - add_to_breadcrumbs _("Settings"), edit_project_path(@project) - add_to_breadcrumbs _("Integrations"), project_settings_integrations_path(@project) -- add_to_breadcrumbs "Prometheus", edit_project_service_path(@project, PrometheusService) +- add_to_breadcrumbs "Prometheus", edit_project_service_path(@project, ::Integrations::Prometheus) - breadcrumb_title s_('Metrics|Edit metric') - page_title @metric.title, s_('Metrics|Edit metric') = render 'form', project: @project, metric: @metric diff --git a/app/views/projects/prometheus/metrics/new.html.haml b/app/views/projects/prometheus/metrics/new.html.haml index fa925d090cb..8415ec9ee41 100644 --- a/app/views/projects/prometheus/metrics/new.html.haml +++ b/app/views/projects/prometheus/metrics/new.html.haml @@ -1,6 +1,6 @@ - add_to_breadcrumbs _("Settings"), edit_project_path(@project) - add_to_breadcrumbs _("Integrations"), project_settings_integrations_path(@project) -- add_to_breadcrumbs "Prometheus", edit_project_service_path(@project, PrometheusService) +- add_to_breadcrumbs "Prometheus", edit_project_service_path(@project, ::Integrations::Prometheus) - breadcrumb_title s_('Metrics|New metric') - page_title s_('Metrics|New metric') = render 'form', project: @project, metric: @metric diff --git a/app/views/projects/protected_branches/shared/_create_protected_branch.html.haml b/app/views/projects/protected_branches/shared/_create_protected_branch.html.haml index ad131b22924..57fc9a16c0a 100644 --- a/app/views/projects/protected_branches/shared/_create_protected_branch.html.haml +++ b/app/views/projects/protected_branches/shared/_create_protected_branch.html.haml @@ -10,7 +10,7 @@ .col-md-10 = render partial: "projects/protected_branches/shared/dropdown", locals: { f: f } .form-text.text-muted - - wildcards_url = help_page_url('user/project/protected_branches', anchor: 'wildcard-protected-branches') + - wildcards_url = help_page_url('user/project/protected_branches', anchor: 'configure-multiple-protected-branches-by-using-a-wildcard') - wildcards_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: wildcards_url } = (s_("ProtectedBranch|%{wildcards_link_start}Wildcards%{wildcards_link_end} such as %{code_tag_start}*-stable%{code_tag_end} or %{code_tag_start}production/*%{code_tag_end} are supported.") % { wildcards_link_start: wildcards_link_start, wildcards_link_end: '</a>', code_tag_start: '<code>', code_tag_end: '</code>' }).html_safe .form-group.row diff --git a/app/views/projects/protected_branches/shared/_index.html.haml b/app/views/projects/protected_branches/shared/_index.html.haml index 08246a173d8..2e9a9357fb0 100644 --- a/app/views/projects/protected_branches/shared/_index.html.haml +++ b/app/views/projects/protected_branches/shared/_index.html.haml @@ -3,19 +3,16 @@ %section.settings.no-animate#js-protected-branches-settings{ class: ('expanded' if expanded), data: { qa_selector: 'protected_branches_settings_content' } } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only - Protected branches + = s_("ProtectedBranch|Protected branches") %button.btn.gl-button.btn-default.js-settings-toggle.qa-expand-protected-branches{ type: 'button' } = expanded ? 'Collapse' : 'Expand' %p - Keep stable branches secure, and force developers to use merge requests. #{link_to "What are protected branches?", help_page_path("user/project/protected_branches")} + = s_("ProtectedBranch|Keep stable branches secure and force developers to use merge requests.") + = link_to s_("ProtectedBranch|What are protected branches?"), help_page_path("user/project/protected_branches") .settings-content %p - By default, protected branches protect your code and: - %ul - %li Allow only users with Maintainer #{link_to "permissions", help_page_path("user/permissions")} to create new protected branches. - %li Allow only users with Maintainer permissions to push code. - %li Prevent <strong>anyone</strong> from #{link_to "force-pushing", help_page_path('topics/git/git_rebase', anchor: 'force-push')} to the branch. - %li Prevent <strong>anyone</strong> from deleting the branch. + = s_("ProtectedBranch|By default, protected branches restrict who can modify the branch.") + = link_to s_("ProtectedBranch|Learn more."), help_page_path("user/project/protected_branches", anchor: "who-can-modify-a-protected-branch") - if can? current_user, :admin_project, @project = content_for :create_protected_branch diff --git a/app/views/projects/protected_tags/shared/_index.html.haml b/app/views/projects/protected_tags/shared/_index.html.haml index aab4d366605..fe63f921780 100644 --- a/app/views/projects/protected_tags/shared/_index.html.haml +++ b/app/views/projects/protected_tags/shared/_index.html.haml @@ -3,18 +3,16 @@ %section.settings.no-animate#js-protected-tags-settings{ class: ('expanded' if expanded), data: { qa_selector: 'protected_tag_settings_content' } } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only - Protected tags + = s_("ProtectedTag|Protected tags") %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded ? 'Collapse' : 'Expand' %p - Limit access to creating and updating tags. #{link_to "What are protected tags?", help_page_path("user/project/protected_tags")} + = s_("ProtectedTag|Limit access to creating and updating tags.") + = link_to s_("ProtectedTag|What are protected tags?"), help_page_path("user/project/protected_tags") .settings-content %p - By default, protected tags protect your code and: - %ul - %li Allow only users with Maintainer #{link_to "permissions", help_page_path("user/permissions")} to create tags. - %li Prevent <strong>anyone</strong> from updating tags. - %li Prevent <strong>anyone</strong> from deleting tags. + = s_("ProtectedTag|By default, protected branches restrict who can modify the tag.") + = link_to s_("ProtectedTag|Learn more."), help_page_path("user/project/protected_tags", anchor: "who-can-modify-a-protected-tag") - if can? current_user, :admin_project, @project = yield :create_protected_tag diff --git a/app/views/projects/registry/settings/_index.haml b/app/views/projects/registry/settings/_index.haml deleted file mode 100644 index a4d4a1bb2dd..00000000000 --- a/app/views/projects/registry/settings/_index.haml +++ /dev/null @@ -1,9 +0,0 @@ -#js-registry-settings{ data: { project_id: @project.id, - project_path: @project.full_path, - cadence_options: cadence_options.to_json, - keep_n_options: keep_n_options.to_json, - older_than_options: older_than_options.to_json, - is_admin: current_user&.admin.to_s, - admin_settings_path: ci_cd_admin_application_settings_path(anchor: 'js-registry-settings'), - enable_historic_entries: container_expiration_policies_historic_entry_enabled?(@project).to_s, - tags_regex_help_page_path: help_page_path('user/packages/container_registry/index', anchor: 'regex-pattern-examples') } } diff --git a/app/views/projects/releases/index.html.haml b/app/views/projects/releases/index.html.haml index 4d5b8cc80f7..9ddf2201fad 100644 --- a/app/views/projects/releases/index.html.haml +++ b/app/views/projects/releases/index.html.haml @@ -1,3 +1,5 @@ - page_title _('Releases') +- if use_startup_query_for_index_page? + - add_page_startup_graphql_call('releases/all_releases', index_page_startup_query_variables) #js-releases-page{ data: data_for_releases_page } diff --git a/app/views/projects/runners/_index.html.haml b/app/views/projects/runners/_settings.html.haml index a02bdac442b..a02bdac442b 100644 --- a/app/views/projects/runners/_index.html.haml +++ b/app/views/projects/runners/_settings.html.haml diff --git a/app/views/projects/runners/_specific_runners.html.haml b/app/views/projects/runners/_specific_runners.html.haml index 210cc414007..eb376ff7960 100644 --- a/app/views/projects/runners/_specific_runners.html.haml +++ b/app/views/projects/runners/_specific_runners.html.haml @@ -2,22 +2,26 @@ = _('Specific runners') .bs-callout.help-callout - = _('These runners are specific to this project.') - %hr - = render partial: 'ci/runner/how_to_setup_runner_automatically', - locals: { type: 'specific', - clusters_path: project_clusters_path(@project) } - - if params[:ci_runner_templates] + - if valid_runner_registrars.include?('project') + = _('These runners are specific to this project.') %hr - = render partial: 'ci/runner/setup_runner_in_aws', - locals: { registration_token: @project.runners_token } - %hr - = render partial: 'ci/runner/how_to_setup_runner', - locals: { registration_token: @project.runners_token, - type: 'specific', - reset_token_url: reset_registration_token_namespace_project_settings_ci_cd_path, - project_path: @project.path_with_namespace, - group_path: '' } + = render partial: 'ci/runner/how_to_setup_runner_automatically', + locals: { type: s_('Runners|specific'), + clusters_path: project_clusters_path(@project) } + - if params[:ci_runner_templates] + %hr + = render partial: 'ci/runner/setup_runner_in_aws', + locals: { registration_token: @project.runners_token } + %hr + = render partial: 'ci/runner/how_to_setup_runner', + locals: { registration_token: @project.runners_token, + type: s_('Runners|specific'), + reset_token_url: reset_registration_token_namespace_project_settings_ci_cd_path, + project_path: @project.path_with_namespace, + group_path: '' } + - else + = _('Please contact an admin to register runners.') + = link_to _('Learn more.'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'runner-registration'), target: '_blank', rel: 'noopener noreferrer' %hr diff --git a/app/views/projects/security/configuration/show.html.haml b/app/views/projects/security/configuration/show.html.haml index 4d6feb9de6d..d4a85893fa4 100644 --- a/app/views/projects/security/configuration/show.html.haml +++ b/app/views/projects/security/configuration/show.html.haml @@ -1,4 +1,6 @@ - breadcrumb_title _("Security Configuration") - page_title _("Security Configuration") +- redesign_enabled = ::Feature.enabled?(:security_configuration_redesign, @project, default_enabled: :yaml) +- @content_class = "limit-container-width" unless fluid_layout || !redesign_enabled #js-security-configuration-static{ data: { project_path: @project.full_path, upgrade_path: security_upgrade_path } } diff --git a/app/views/projects/settings/access_tokens/index.html.haml b/app/views/projects/settings/access_tokens/index.html.haml index 1bf252b6282..52ef2e7d1ee 100644 --- a/app/views/projects/settings/access_tokens/index.html.haml +++ b/app/views/projects/settings/access_tokens/index.html.haml @@ -33,12 +33,17 @@ = render 'shared/access_tokens/form', type: type, path: project_settings_access_tokens_path(@project), + project: @project, token: @project_access_token, scopes: @scopes, - prefix: :project_access_token + access_levels: ProjectMember.access_level_roles, + default_access_level: Gitlab::Access::MAINTAINER, + prefix: :project_access_token, + help_path: help_page_path('user/project/settings/project_access_tokens', anchor: 'limiting-scopes-of-a-project-access-token') = render 'shared/access_tokens/table', active_tokens: @active_project_access_tokens, + project: @project, type: type, type_plural: type_plural, revoke_route_helper: ->(token) { revoke_namespace_project_settings_access_token_path(id: token) }, diff --git a/app/views/projects/settings/ci_cd/_autodevops_form.html.haml b/app/views/projects/settings/ci_cd/_autodevops_form.html.haml index 68e4bed8b9a..8563f28eb33 100644 --- a/app/views/projects/settings/ci_cd/_autodevops_form.html.haml +++ b/app/views/projects/settings/ci_cd/_autodevops_form.html.haml @@ -6,7 +6,7 @@ - kubernetes_cluster_path = help_page_path('user/project/clusters/index') - kubernetes_cluster_link_start = link_start % { url: kubernetes_cluster_path } -- base_domain_path = help_page_path('user/project/clusters/index', anchor: 'base-domain') +- base_domain_path = help_page_path('user/project/clusters/gitlab_managed_clusters', anchor: 'base-domain') - base_domain_link_start = link_start % { url: base_domain_path } .row diff --git a/app/views/projects/settings/ci_cd/_form.html.haml b/app/views/projects/settings/ci_cd/_form.html.haml index c89c9879f4b..a91c12d01ad 100644 --- a/app/views/projects/settings/ci_cd/_form.html.haml +++ b/app/views/projects/settings/ci_cd/_form.html.haml @@ -10,7 +10,7 @@ %strong= _("Public pipelines") .form-text.text-muted = _("Allow public access to pipelines and job details, including output logs and artifacts.") - = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'visibility-of-pipelines'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'change-which-users-can-view-your-pipelines'), target: '_blank' .form-group .form-check @@ -36,7 +36,7 @@ = f.text_field :ci_config_path, class: 'form-control', placeholder: '.gitlab-ci.yml' %p.form-text.text-muted = html_escape(_("The name of the CI/CD configuration file. A path relative to the root directory is optional (for example %{code_open}my/path/.myfile.yml%{code_close}).")) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe } - = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'custom-cicd-configuration-file'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'specify-a-custom-cicd-configuration-file'), target: '_blank' %hr .form-group @@ -44,7 +44,7 @@ = _("Git strategy") %p = _("Choose which Git strategy to use when fetching the project.") - = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'git-strategy'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'choose-the-default-git-strategy'), target: '_blank' .form-check = f.radio_button :build_allow_git_fetch, 'false', { class: 'form-check-input' } = f.label :build_allow_git_fetch_false, class: 'form-check-label' do @@ -66,7 +66,7 @@ = form.number_field :default_git_depth, { class: 'form-control gl-form-input', min: 0, max: 1000 } %p.form-text.text-muted = html_escape(_('The number of changes to fetch from GitLab when cloning a repository. Lower values can speed up pipeline execution. Set to %{code_open}0%{code_close} or blank to fetch all branches and tags for each job')) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe } - = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'git-shallow-clone'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'limit-the-number-of-changes-fetched-during-clone'), target: '_blank' %hr .form-group @@ -74,7 +74,7 @@ = f.text_field :build_timeout_human_readable, class: 'form-control gl-form-input' %p.form-text.text-muted = html_escape(_('Jobs fail if they run longer than the timeout time. Input value is in seconds by default. Human readable input is also accepted, for example %{code_open}1 hour%{code_close}.')) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe } - = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'timeout'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'set-a-limit-for-how-long-jobs-can-run'), target: '_blank' - if can?(current_user, :update_max_artifacts_size, @project) .form-group @@ -94,7 +94,7 @@ .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: 'test-coverage-parsing'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'add-test-coverage-results-to-a-merge-request'), target: '_blank' = f.submit _('Save changes'), class: "btn gl-button btn-confirm", data: { qa_selector: 'save_general_pipelines_changes_button' } diff --git a/app/views/projects/settings/ci_cd/show.html.haml b/app/views/projects/settings/ci_cd/show.html.haml index ade3d40a8df..70626636ac0 100644 --- a/app/views/projects/settings/ci_cd/show.html.haml +++ b/app/views/projects/settings/ci_cd/show.html.haml @@ -41,9 +41,9 @@ = expanded ? _('Collapse') : _('Expand') %p = _("Runners are processes that pick up and execute CI/CD jobs for GitLab.") - = link_to s_('How do I configure runners?'), help_page_path('ci/runners/README'), target: '_blank', rel: 'noopener noreferrer' + = link_to s_('How do I configure runners?'), help_page_path('ci/runners/index'), target: '_blank', rel: 'noopener noreferrer' .settings-content - = render 'projects/runners/index' + = render 'projects/runners/settings' - if Gitlab::CurrentSettings.current_application_settings.keep_latest_artifact? %section.settings.no-animate#js-artifacts-settings{ class: ('expanded' if expanded) } @@ -71,13 +71,10 @@ = expanded ? _('Collapse') : _('Expand') %p = _("Trigger a pipeline for a branch or tag by generating a trigger token and using it with an API call. The token impersonates a user's project access and permissions.") - = link_to _('Learn more.'), help_page_path('ci/triggers/README'), target: '_blank', rel: 'noopener noreferrer' + = link_to _('Learn more.'), help_page_path('ci/triggers/index'), target: '_blank', rel: 'noopener noreferrer' .settings-content = render 'projects/triggers/index' -- if settings_container_registry_expiration_policy_available?(@project) - = render 'projects/registry/settings/index' - = render_if_exists 'projects/settings/ci_cd/auto_rollback', expanded: expanded - if can?(current_user, :create_freeze_period, @project) @@ -98,3 +95,16 @@ .settings-content = render 'ci/deploy_freeze/index' + +- if Feature.enabled?(:ci_scoped_job_token, @project, default_enabled: :yaml) + %section.settings.no-animate#js-token-access{ class: ('expanded' if expanded) } + .settings-header + %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only + = _("Token Access") + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } + = expanded ? _('Collapse') : _('Expand') + %p + = _("Control which projects can be accessed by API requests authenticated with this project's CI_JOB_TOKEN CI/CD variable. It is a security risk to disable this feature, because unauthorized projects might attempt to retrieve an active token and access the API.") + = link_to _('Learn more'), help_page_path('api/index', anchor: 'limit-gitlab-cicd-job-token-access'), target: '_blank', rel: 'noopener noreferrer' + .settings-content + = render 'ci/token_access/index' diff --git a/app/views/projects/settings/operations/show.html.haml b/app/views/projects/settings/operations/show.html.haml index e2c1a00a587..215448be3d6 100644 --- a/app/views/projects/settings/operations/show.html.haml +++ b/app/views/projects/settings/operations/show.html.haml @@ -1,7 +1,6 @@ - @content_class = 'limit-container-width' unless fluid_layout -- title = Feature.enabled?(:sidebar_refactor, current_user, default_enabled: :yaml) ? _('Monitor Settings') : _('Operations Settings') -- page_title title -- breadcrumb_title title +- page_title _('Monitor Settings') +- breadcrumb_title _('Monitor Settings') = render 'projects/settings/operations/metrics_dashboard' = render 'projects/settings/operations/tracing' @@ -10,4 +9,4 @@ = 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_service if Feature.enabled?(:settings_operations_prometheus_service) += render 'projects/settings/operations/prometheus', service: prometheus_integration if Feature.enabled?(:settings_operations_prometheus_service) |