From 0ea3fcec397b69815975647f5e2aa5fe944a8486 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 20 Jun 2022 11:10:13 +0000 Subject: Add latest changes from gitlab-org/gitlab@15-1-stable-ee --- .../projects/_clusters_deprecation_alert.html.haml | 2 + app/views/projects/_commit_button.html.haml | 7 +-- app/views/projects/_deletion_failed.html.haml | 2 +- app/views/projects/_errors.html.haml | 2 +- app/views/projects/_import_project_pane.html.haml | 8 +-- app/views/projects/_invite_members_modal.html.haml | 2 +- .../_invite_members_side_nav_link.html.haml | 3 +- app/views/projects/_last_push.html.haml | 4 +- .../_merge_request_merge_method_settings.html.haml | 58 ++++++++++------------ ...merge_request_squash_options_settings.html.haml | 47 ++++++------------ ...merge_request_target_project_settings.html.haml | 21 +++----- app/views/projects/_new_project_fields.html.haml | 2 +- .../projects/_service_desk_settings.html.haml | 2 +- app/views/projects/_visibility_modal.html.haml | 2 +- app/views/projects/activity.html.haml | 1 + app/views/projects/blob/_new_dir.html.haml | 2 +- app/views/projects/blob/_remove.html.haml | 2 +- app/views/projects/blob/_upload.html.haml | 30 ----------- app/views/projects/blob/edit.html.haml | 4 +- app/views/projects/blob/new.html.haml | 2 +- app/views/projects/blob/show.html.haml | 3 -- app/views/projects/branch_rules/_show.html.haml | 12 +++++ app/views/projects/branches/new.html.haml | 5 +- app/views/projects/buttons/_remove_tag.html.haml | 9 +++- app/views/projects/cleanup/_show.html.haml | 2 +- app/views/projects/commit/show.html.haml | 2 +- app/views/projects/commits/_commits.html.haml | 4 +- app/views/projects/compare/index.html.haml | 4 +- app/views/projects/compare/show.html.haml | 2 +- app/views/projects/confluences/show.html.haml | 2 +- app/views/projects/default_branch/_show.html.haml | 2 +- app/views/projects/deploy_keys/edit.html.haml | 2 +- app/views/projects/edit.html.haml | 14 ++++-- app/views/projects/empty.html.haml | 7 ++- app/views/projects/environments/terminal.html.haml | 2 +- app/views/projects/forks/error.html.haml | 2 +- app/views/projects/graphs/show.html.haml | 4 +- app/views/projects/hook_logs/show.html.haml | 7 ++- app/views/projects/import/jira/show.html.haml | 2 +- app/views/projects/imports/new.html.haml | 2 +- app/views/projects/issuable/_show.html.haml | 2 +- .../_alert_moved_from_service_desk.html.haml | 8 --- .../issues/_by_email_description.html.haml | 6 --- app/views/projects/issues/_nav_btns.html.haml | 20 -------- .../issues/_service_desk_empty_state.html.haml | 37 -------------- .../issues/_service_desk_info_content.html.haml | 24 --------- .../projects/issues/_work_item_links.html.haml | 2 + app/views/projects/issues/edit.html.haml | 2 +- app/views/projects/issues/index.html.haml | 31 ++---------- app/views/projects/issues/new.html.haml | 4 +- app/views/projects/issues/service_desk.html.haml | 8 +-- .../_alert_moved_from_service_desk.html.haml | 8 +++ .../issues/service_desk/_nav_btns.html.haml | 20 ++++++++ .../_service_desk_empty_state.html.haml | 37 ++++++++++++++ .../_service_desk_info_content.html.haml | 24 +++++++++ app/views/projects/jobs/index.html.haml | 2 - app/views/projects/labels/edit.html.haml | 4 +- app/views/projects/labels/index.html.haml | 13 ++--- app/views/projects/labels/new.html.haml | 4 +- app/views/projects/mattermosts/_no_teams.html.haml | 2 +- .../projects/mattermosts/_team_selection.html.haml | 4 +- .../_close_reopen_draft_report_toggle.html.haml | 25 +++++----- .../merge_requests/_code_dropdown.html.haml | 2 +- .../projects/merge_requests/_mr_box.html.haml | 10 ++-- .../projects/merge_requests/_mr_title.html.haml | 31 +++++------- .../merge_requests/conflicts/show.html.haml | 4 +- .../creations/_new_compare.html.haml | 46 +++++++++-------- .../merge_requests/creations/_new_submit.html.haml | 6 +-- app/views/projects/merge_requests/edit.html.haml | 2 +- app/views/projects/merge_requests/show.html.haml | 17 ++++--- app/views/projects/milestones/edit.html.haml | 2 +- app/views/projects/milestones/new.html.haml | 2 +- app/views/projects/milestones/show.html.haml | 4 +- app/views/projects/mirrors/_mirror_repos.html.haml | 8 +-- .../projects/mirrors/_ssh_host_keys.html.haml | 4 +- app/views/projects/new.html.haml | 6 +-- app/views/projects/no_repo.html.haml | 2 +- app/views/projects/notes/_actions.html.haml | 13 +++-- .../notes/_more_actions_dropdown.html.haml | 4 +- app/views/projects/pages/_list.html.haml | 27 +++++----- app/views/projects/pages/show.html.haml | 2 +- app/views/projects/pages_domains/_dns.html.haml | 4 +- app/views/projects/pages_domains/new.html.haml | 2 +- app/views/projects/pages_domains/show.html.haml | 9 ++-- .../projects/pipeline_schedules/_form.html.haml | 6 +-- .../projects/pipeline_schedules/edit.html.haml | 2 +- .../projects/pipeline_schedules/index.html.haml | 2 - .../projects/pipeline_schedules/new.html.haml | 3 +- app/views/projects/pipelines/_with_tabs.html.haml | 42 ++-------------- app/views/projects/pipelines/index.html.haml | 2 - app/views/projects/pipelines/new.html.haml | 2 +- app/views/projects/pipelines/show.html.haml | 1 - app/views/projects/project_members/index.html.haml | 13 +++-- .../projects/prometheus/metrics/edit.html.haml | 2 +- .../projects/prometheus/metrics/new.html.haml | 2 +- .../protected_branches/shared/_index.html.haml | 4 +- .../protected_tags/shared/_index.html.haml | 4 +- app/views/projects/readme_templates/default.md.tt | 2 +- app/views/projects/releases/edit.html.haml | 2 + app/views/projects/runners/edit.html.haml | 2 +- app/views/projects/services/_form.html.haml | 22 -------- app/views/projects/services/edit.html.haml | 9 ---- app/views/projects/settings/_archive.html.haml | 4 +- .../settings/access_tokens/index.html.haml | 2 +- .../projects/settings/branch_rules/index.html.haml | 6 +++ .../settings/ci_cd/_autodevops_form.html.haml | 24 +++------ app/views/projects/settings/ci_cd/_form.html.haml | 26 ++++------ app/views/projects/settings/ci_cd/show.html.haml | 16 +++--- .../projects/settings/integrations/_form.html.haml | 22 ++++++++ .../projects/settings/integrations/edit.html.haml | 9 ++++ .../projects/settings/integrations/index.html.haml | 9 ++++ .../projects/settings/integrations/show.html.haml | 9 ---- .../operations/_alert_management.html.haml | 2 +- .../settings/operations/_error_tracking.html.haml | 2 +- .../settings/operations/_tracing.html.haml | 2 +- .../projects/settings/repository/show.html.haml | 2 + app/views/projects/show.html.haml | 3 +- app/views/projects/snippets/edit.html.haml | 2 +- app/views/projects/snippets/new.html.haml | 2 +- .../projects/static_site_editor/show.html.haml | 1 - app/views/projects/tags/_tag.html.haml | 2 +- app/views/projects/tags/index.html.haml | 3 ++ app/views/projects/tags/new.html.haml | 16 +++--- app/views/projects/tags/show.html.haml | 3 ++ app/views/projects/tracings/show.html.haml | 2 +- app/views/projects/usage_quotas/index.html.haml | 10 +++- app/views/projects/work_items/index.html.haml | 2 +- 127 files changed, 499 insertions(+), 590 deletions(-) create mode 100644 app/views/projects/_clusters_deprecation_alert.html.haml delete mode 100644 app/views/projects/blob/_upload.html.haml create mode 100644 app/views/projects/branch_rules/_show.html.haml delete mode 100644 app/views/projects/issues/_alert_moved_from_service_desk.html.haml delete mode 100644 app/views/projects/issues/_by_email_description.html.haml delete mode 100644 app/views/projects/issues/_nav_btns.html.haml delete mode 100644 app/views/projects/issues/_service_desk_empty_state.html.haml delete mode 100644 app/views/projects/issues/_service_desk_info_content.html.haml create mode 100644 app/views/projects/issues/_work_item_links.html.haml create mode 100644 app/views/projects/issues/service_desk/_alert_moved_from_service_desk.html.haml create mode 100644 app/views/projects/issues/service_desk/_nav_btns.html.haml create mode 100644 app/views/projects/issues/service_desk/_service_desk_empty_state.html.haml create mode 100644 app/views/projects/issues/service_desk/_service_desk_info_content.html.haml delete mode 100644 app/views/projects/services/_form.html.haml delete mode 100644 app/views/projects/services/edit.html.haml create mode 100644 app/views/projects/settings/branch_rules/index.html.haml create mode 100644 app/views/projects/settings/integrations/_form.html.haml create mode 100644 app/views/projects/settings/integrations/edit.html.haml create mode 100644 app/views/projects/settings/integrations/index.html.haml delete mode 100644 app/views/projects/settings/integrations/show.html.haml delete mode 100644 app/views/projects/static_site_editor/show.html.haml (limited to 'app/views/projects') diff --git a/app/views/projects/_clusters_deprecation_alert.html.haml b/app/views/projects/_clusters_deprecation_alert.html.haml new file mode 100644 index 00000000000..67e65b0e81b --- /dev/null +++ b/app/views/projects/_clusters_deprecation_alert.html.haml @@ -0,0 +1,2 @@ +- if show_clusters_alert?(@project) + .js-clusters-deprecation-alert{ data: { message: clusters_deprecation_alert_message } } diff --git a/app/views/projects/_commit_button.html.haml b/app/views/projects/_commit_button.html.haml index d987c4b1033..659bca25533 100644 --- a/app/views/projects/_commit_button.html.haml +++ b/app/views/projects/_commit_button.html.haml @@ -1,7 +1,8 @@ .form-actions.gl-display-flex - = button_tag 'Commit changes', id: 'commit-changes', class: 'gl-button btn btn-confirm js-commit-button qa-commit-button' + = render Pajamas::ButtonComponent.new(type: :submit, variant: :confirm, button_options: { id: 'commit-changes', class: 'js-commit-button qa-commit-button' }) do + = _('Commit changes') - = link_to _('Cancel'), cancel_path, - id: 'cancel-changes', class: 'gl-button btn btn-default gl-ml-3', data: {confirm: leave_edit_message, confirm_btn_variant: "danger"}, aria: { label: _('Discard changes') } + = render Pajamas::ButtonComponent.new(href: cancel_path, button_options: { class: 'gl-ml-3', id: 'cancel-changes', aria: { label: _('Discard changes') }, data: { confirm: leave_edit_message, confirm_btn_variant: "danger" } }) do + = _('Cancel') = render 'shared/projects/edit_information' diff --git a/app/views/projects/_deletion_failed.html.haml b/app/views/projects/_deletion_failed.html.haml index 85a7b9eb22b..489d303c5b9 100644 --- a/app/views/projects/_deletion_failed.html.haml +++ b/app/views/projects/_deletion_failed.html.haml @@ -3,7 +3,7 @@ = render Pajamas::AlertComponent.new(variant: :warning, dismissible: false, - alert_class: 'project-deletion-failed-message') do |c| + alert_options: { class: 'project-deletion-failed-message' }) do |c| = c.body do This project was scheduled for deletion, but failed with the following message: = project.delete_error diff --git a/app/views/projects/_errors.html.haml b/app/views/projects/_errors.html.haml index 2dba22d3be6..5982aaf3622 100644 --- a/app/views/projects/_errors.html.haml +++ b/app/views/projects/_errors.html.haml @@ -1 +1 @@ -= form_errors(@project) += form_errors(@project, pajamas_alert: true) diff --git a/app/views/projects/_import_project_pane.html.haml b/app/views/projects/_import_project_pane.html.haml index 6dfb338a916..cb15858a935 100644 --- a/app/views/projects/_import_project_pane.html.haml +++ b/app/views/projects/_import_project_pane.html.haml @@ -53,7 +53,7 @@ - if gitea_import_enabled? %div - = link_to new_import_gitea_path, class: 'gl-button btn-default btn import_gitea js-import-project-btn', data: { platform: 'gitea', **tracking_attrs_data(track_label, 'click_button', 'gitea') } do + = link_to new_import_gitea_path(namespace_id: namespace_id), class: 'gl-button btn-default btn import_gitea js-import-project-btn', data: { platform: 'gitea', **tracking_attrs_data(track_label, 'click_button', 'gitea') } do .gl-button-icon = custom_icon('gitea_logo') Gitea @@ -63,18 +63,18 @@ %button.gl-button.btn-default.btn.btn-svg.js-toggle-button.js-import-git-toggle-button.js-import-project-btn{ type: "button", data: { platform: 'repo_url', toggle_open_class: 'active', **tracking_attrs_data(track_label, 'click_button', 'repo_url') } } .gl-button-icon = sprite_icon('link', css_class: 'gl-icon') - = _('Repo by URL') + = _('Repository by URL') - if manifest_import_enabled? %div - = link_to new_import_manifest_path, class: 'gl-button btn-default btn import_manifest js-import-project-btn', data: { platform: 'manifest_file', **tracking_attrs_data(track_label, 'click_button', 'manifest_file') } do + = link_to new_import_manifest_path(namespace_id: namespace_id), class: 'gl-button btn-default btn import_manifest js-import-project-btn', data: { platform: 'manifest_file', **tracking_attrs_data(track_label, 'click_button', 'manifest_file') } do .gl-button-icon = sprite_icon('doc-text') Manifest file - if phabricator_import_enabled? %div - = link_to new_import_phabricator_path, class: 'gl-button btn-default btn import_phabricator js-import-project-btn', data: { platform: 'phabricator', track_label: "#{track_label}", track_action: "click_button", track_property: "phabricator" } do + = link_to new_import_phabricator_path(namespace_id: namespace_id), class: 'gl-button btn-default btn import_phabricator js-import-project-btn', data: { platform: 'phabricator', track_label: "#{track_label}", track_action: "click_button", track_property: "phabricator" } do .gl-button-icon = custom_icon('issues') = _("Phabricator Tasks") diff --git a/app/views/projects/_invite_members_modal.html.haml b/app/views/projects/_invite_members_modal.html.haml index 6375a56bf5d..16288f4357a 100644 --- a/app/views/projects/_invite_members_modal.html.haml +++ b/app/views/projects/_invite_members_modal.html.haml @@ -1,5 +1,5 @@ - return unless can_admin_project_member?(project) .js-invite-members-modal{ data: { is_project: 'true', - access_levels: ProjectMember.access_level_roles.to_json, + access_levels: ProjectMember.permissible_access_level_roles(current_user, project).to_json, help_link: help_page_url('user/permissions') }.merge(common_invite_modal_dataset(project)).merge(users_filter_data(project.group)) } diff --git a/app/views/projects/_invite_members_side_nav_link.html.haml b/app/views/projects/_invite_members_side_nav_link.html.haml index fae681b1a71..b96a7608ce2 100644 --- a/app/views/projects/_invite_members_side_nav_link.html.haml +++ b/app/views/projects/_invite_members_side_nav_link.html.haml @@ -1,7 +1,8 @@ .js-invite-members-trigger{ data: { trigger_source: 'project-side-nav', icon: 'users', display_text: title, - trigger_element: 'side-nav'} } + trigger_element: 'side-nav', + qa_selector: 'invite_members_sidebar_button' } } = render partial: 'shared/nav/sidebar_submenu', locals: { sidebar_menu: sidebar_menu } = render 'projects/invite_members_modal', project: project diff --git a/app/views/projects/_last_push.html.haml b/app/views/projects/_last_push.html.haml index 5a2add9de1e..9845de17a11 100644 --- a/app/views/projects/_last_push.html.haml +++ b/app/views/projects/_last_push.html.haml @@ -1,8 +1,8 @@ - event = last_push_event - if event && show_last_push_widget?(event) = render Pajamas::AlertComponent.new(variant: :success, - alert_class: 'gl-mt-3', - close_button_class: 'js-close-banner') do |c| + alert_options: { class: 'gl-mt-3' }, + close_button_options: { class: 'js-close-banner' }) do |c| = c.body do %span= s_("LastPushEvent|You pushed to") %strong.gl-display-inline-flex.gl-max-w-50p{ data: { toggle: 'tooltip' }, title: event.ref_name } diff --git a/app/views/projects/_merge_request_merge_method_settings.html.haml b/app/views/projects/_merge_request_merge_method_settings.html.haml index cb660750632..f205fe2b9bf 100644 --- a/app/views/projects/_merge_request_merge_method_settings.html.haml +++ b/app/views/projects/_merge_request_merge_method_settings.html.haml @@ -1,38 +1,34 @@ - form = local_assigns.fetch(:form) +- labelMerge = s_('ProjectSettings|Merge commit') +- everyMergeCommit = s_('ProjectSettings|Every merge creates a merge commit.') + +- labelRebase = s_('ProjectSettings|Merge commit with semi-linear history') +- rebaseUpToDate = s_('ProjectSettings|Merging is only allowed when the source branch is up-to-date with its target.') +- rebaseSemiLinear = s_('ProjectSettings|When semi-linear merge is not possible, the user is given the option to rebase.') + +- labelFastForward = s_('ProjectSettings|Fast-forward merge') +- noMergeCommit = s_('ProjectSettings|No merge commits are created.') +- ffOnly = s_('ProjectSettings|Fast-forward merges only.') +- ffConflictRebase = s_('ProjectSettings|When there is a merge conflict, the user is given the option to rebase.') +- ffTrains = s_('ProjectSettings|If merge trains are enabled, merging is only possible if the branch can be rebased without conflicts.') +- ffTrainsHelp = link_to s_('ProjectSettings|What are merge trains?'), help_page_path('ci/pipelines/merge_trains.md', anchor: 'enable-merge-trains'), target: '_blank', rel: 'noopener noreferrer' + .form-group %b= s_('ProjectSettings|Merge method') %p.text-secondary = s_('ProjectSettings|Determine what happens to the commit history when you merge a merge request.') = link_to s_('ProjectSettings|How do they differ?'), help_page_path('user/project/merge_requests/methods/index.md'), target: '_blank', rel: 'noopener noreferrer' - .form-check.mb-2 - = form.radio_button :merge_method, :merge, class: "js-merge-method-radio form-check-input" - = label_tag :project_merge_method_merge, class: 'form-check-label' do - = s_('ProjectSettings|Merge commit') - .text-secondary - = s_('ProjectSettings|Every merge creates a merge commit.') - - .form-check.mb-2 - = form.radio_button :merge_method, :rebase_merge, class: "js-merge-method-radio form-check-input" - = label_tag :project_merge_method_rebase_merge, class: 'form-check-label' do - = s_('ProjectSettings|Merge commit with semi-linear history') - .text-secondary - = s_('ProjectSettings|Every merge creates a merge commit.') - %br - = s_('ProjectSettings|Merging is only allowed when the source branch is up-to-date with its target.') - %br - = s_('ProjectSettings|When semi-linear merge is not possible, the user is given the option to rebase.') - - .form-check.mb-2 - = form.radio_button :merge_method, :ff, class: "js-merge-method-radio form-check-input", data: { qa_selector: 'merge_ff_radio' } - = label_tag :project_merge_method_ff, class: 'form-check-label' do - = s_('ProjectSettings|Fast-forward merge') - .text-secondary - = s_('ProjectSettings|No merge commits are created.') - %br - = s_('ProjectSettings|Fast-forward merges only.') - %br - = s_('ProjectSettings|When there is a merge conflict, the user is given the option to rebase.') - %div - = s_('ProjectSettings|If merge trains are enabled, merging is only possible if the branch can be rebased without conflicts.') - = link_to s_('ProjectSettings|What are merge trains?'), help_page_path('ci/pipelines/merge_trains.md', anchor: 'enable-merge-trains'), target: '_blank', rel: 'noopener noreferrer' + = form.gitlab_ui_radio_component :merge_method, + :merge, + labelMerge, + help_text: everyMergeCommit + = form.gitlab_ui_radio_component :merge_method, + :rebase_merge, + labelRebase, + help_text: (everyMergeCommit + "
" + rebaseUpToDate + "
" + rebaseSemiLinear).html_safe + = form.gitlab_ui_radio_component :merge_method, + :ff, + labelFastForward, + help_text: (noMergeCommit + "
" + ffOnly + "
" + ffConflictRebase + "
" + ffTrains + " " + ffTrainsHelp).html_safe, + radio_options: { data: { qa_selector: 'merge_ff_radio' } } diff --git a/app/views/projects/_merge_request_squash_options_settings.html.haml b/app/views/projects/_merge_request_squash_options_settings.html.haml index bf3000f2b5e..4b428363646 100644 --- a/app/views/projects/_merge_request_squash_options_settings.html.haml +++ b/app/views/projects/_merge_request_squash_options_settings.html.haml @@ -7,34 +7,19 @@ = s_('ProjectSettings|Set the default behavior of this option in merge requests. Changes to this are also applied to existing merge requests.') = link_to "What is squashing?", help_page_path('user/project/merge_requests/squash_and_merge.md'), target: '_blank', rel: 'noopener noreferrer' - .form-check.gl-mb-2 - = settings.radio_button :squash_option, :never, class: "form-check-input" - = label_tag :project_project_setting_attributes_squash_option_never, class: 'form-check-label' do - .gl-font-weight-bold - = s_('ProjectSettings|Do not allow') - .text-secondary - = s_('ProjectSettings|Squashing is never performed and the checkbox is hidden.') - - .form-check.gl-mb-2 - = settings.radio_button :squash_option, :default_off, class: "form-check-input" - = label_tag :project_project_setting_attributes_squash_option_default_off, class: 'form-check-label' do - .gl-font-weight-bold - = s_('ProjectSettings|Allow') - .text-secondary - = s_('ProjectSettings|Checkbox is visible and unselected by default.') - - .form-check.gl-mb-2 - = settings.radio_button :squash_option, :default_on, class: "form-check-input" - = label_tag :project_project_setting_attributes_squash_option_default_on, class: 'form-check-label' do - .gl-font-weight-bold - = s_('ProjectSettings|Encourage') - .text-secondary - = s_('ProjectSettings|Checkbox is visible and selected by default.') - - .form-check.gl-mb-2 - = settings.radio_button :squash_option, :always, class: "form-check-input" - = label_tag :project_project_setting_attributes_squash_option_always, class: 'form-check-label' do - .gl-font-weight-bold - = s_('ProjectSettings|Require') - .text-secondary - = s_('ProjectSettings|Squashing is always performed. Checkbox is visible and selected, and users cannot change it.') + = settings.gitlab_ui_radio_component :squash_option, + :never, + s_('ProjectSettings|Do not allow'), + help_text: s_('ProjectSettings|Squashing is never performed and the checkbox is hidden.') + = settings.gitlab_ui_radio_component :squash_option, + :default_off, + s_('ProjectSettings|Allow'), + help_text: s_('ProjectSettings|Checkbox is visible and unselected by default.') + = settings.gitlab_ui_radio_component :squash_option, + :default_on, + s_('ProjectSettings|Encourage'), + help_text: s_('ProjectSettings|Checkbox is visible and selected by default.') + = settings.gitlab_ui_radio_component :squash_option, + :always, + s_('ProjectSettings|Require'), + help_text: s_('ProjectSettings|Squashing is always performed. Checkbox is visible and selected, and users cannot change it.') diff --git a/app/views/projects/_merge_request_target_project_settings.html.haml b/app/views/projects/_merge_request_target_project_settings.html.haml index 41d37884ac9..6f2917f24e0 100644 --- a/app/views/projects/_merge_request_target_project_settings.html.haml +++ b/app/views/projects/_merge_request_target_project_settings.html.haml @@ -8,16 +8,11 @@ %p.text-secondary = s_('ProjectSettings|The default target project for merge requests created in this fork project.') - .form-check.gl-mb-2 - = settings.radio_button :mr_default_target_self, false, class: "form-check-input" - = label_tag :project_project_setting_attributes_mr_default_target_self_false, class: 'form-check-label' do - .gl-font-weight-bold - = s_('ProjectSettings|Upstream project') - = @project.forked_from_project.full_name - - .form-check.gl-mb-2 - = settings.radio_button :mr_default_target_self, true, class: "form-check-input" - = label_tag :project_project_setting_attributes_mr_default_target_self_true, class: 'form-check-label' do - .gl-font-weight-bold - = s_('ProjectSettings|This project') - = @project.full_name + = settings.gitlab_ui_radio_component :mr_default_target_self, + false, + s_('ProjectSettings|Upstream project'), + help_text: @project.forked_from_project.full_name + = settings.gitlab_ui_radio_component :mr_default_target_self, + true, + s_('ProjectSettings|This project'), + help_text: @project.full_name diff --git a/app/views/projects/_new_project_fields.html.haml b/app/views/projects/_new_project_fields.html.haml index 66fa1a69ef9..2cbb9758703 100644 --- a/app/views/projects/_new_project_fields.html.haml +++ b/app/views/projects/_new_project_fields.html.haml @@ -37,7 +37,7 @@ - link_start_group_path = '' % { path: new_group_path } - project_tip = s_('ProjectsNew|Want to house several dependent projects under the same namespace? %{link_start}Create a group.%{link_end}') % { link_start: link_start_group_path, link_end: '' } = project_tip.html_safe -= render Pajamas::AlertComponent.new(alert_class: "gl-mb-4 gl-display-none js-user-readme-repo", += render Pajamas::AlertComponent.new(alert_options: { class: "gl-mb-4 gl-display-none js-user-readme-repo" }, dismissible: false, variant: :success) do |c| = c.body do diff --git a/app/views/projects/_service_desk_settings.html.haml b/app/views/projects/_service_desk_settings.html.haml index 63cf4dfe0ab..cee3d9071b6 100644 --- a/app/views/projects/_service_desk_settings.html.haml +++ b/app/views/projects/_service_desk_settings.html.haml @@ -2,7 +2,7 @@ %section.settings.js-service-desk-setting-wrapper.no-animate#js-service-desk{ class: ('expanded' if expanded), data: { qa_selector: 'service_desk_settings_content' } } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Service Desk') - %button.btn.gl-button.btn-default.js-settings-toggle + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') - link_start = "".html_safe %p= _('Enable and disable Service Desk. Some additional configuration might be required. %{link_start}Learn more%{link_end}.').html_safe % { link_start: link_start, link_end: ''.html_safe } diff --git a/app/views/projects/_visibility_modal.html.haml b/app/views/projects/_visibility_modal.html.haml index db98b978f04..66066ceb5b2 100644 --- a/app/views/projects/_visibility_modal.html.haml +++ b/app/views/projects/_visibility_modal.html.haml @@ -5,7 +5,7 @@ .modal-dialog .modal-content .modal-header - %h3.page-title= _('Reduce this project’s visibility?') + %h1.page-title.gl-font-size-h-display= _('Reduce this project’s visibility?') %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') } %span{ "aria-hidden": "true" }= sprite_icon("close") .modal-body diff --git a/app/views/projects/activity.html.haml b/app/views/projects/activity.html.haml index 6a4760c3954..e69c4f51ec4 100644 --- a/app/views/projects/activity.html.haml +++ b/app/views/projects/activity.html.haml @@ -1,4 +1,5 @@ - page_title _("Activity") += render_if_exists 'shared/minute_limit_banner', namespace: @project = render 'projects/last_push' = render 'projects/activity' diff --git a/app/views/projects/blob/_new_dir.html.haml b/app/views/projects/blob/_new_dir.html.haml index 3cc9fea56e2..3ae7741d24d 100644 --- a/app/views/projects/blob/_new_dir.html.haml +++ b/app/views/projects/blob/_new_dir.html.haml @@ -2,7 +2,7 @@ .modal-dialog.modal-lg .modal-content .modal-header - %h3.page-title= _('Create New Directory') + %h1.page-title.gl-font-size-h-display= _('Create New Directory') %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') } %span{ "aria-hidden": "true" } × .modal-body diff --git a/app/views/projects/blob/_remove.html.haml b/app/views/projects/blob/_remove.html.haml index 1463fcf8052..7511de76223 100644 --- a/app/views/projects/blob/_remove.html.haml +++ b/app/views/projects/blob/_remove.html.haml @@ -2,7 +2,7 @@ .modal-dialog .modal-content .modal-header - %h3.page-title Delete #{@blob.name} + %h1.page-title.gl-font-size-h-display Delete #{@blob.name} %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') } %span{ "aria-hidden": "true" } × diff --git a/app/views/projects/blob/_upload.html.haml b/app/views/projects/blob/_upload.html.haml deleted file mode 100644 index 629fa9c0e8a..00000000000 --- a/app/views/projects/blob/_upload.html.haml +++ /dev/null @@ -1,30 +0,0 @@ -#modal-upload-blob.modal - .modal-dialog.modal-lg - .modal-content - .modal-header - %h3.page-title= title - %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') } - %span{ "aria-hidden": "true" } × - .modal-body - = form_tag form_path, method: method, class: 'js-quick-submit js-upload-blob-form', data: { method: method } do - .dropzone - .dropzone-previews.blob-upload-dropzone-previews - %p.dz-message.light - - upload_link = link_to s_('UploadLink|click to upload'), '#', class: "markdown-selector" - - dropzone_text = _('Attach a file by drag & drop or %{upload_link}') % { upload_link: upload_link } - #{ dropzone_text.html_safe } - - %br - = render Pajamas::AlertComponent.new(variant: :danger, - alert_class: 'dropzone-alerts gl-alert gl-alert-danger gl-mb-5 data gl-display-none', - dismissible: false) - - = render 'shared/new_commit_form', placeholder: placeholder, ref: local_assigns[:ref] - - .form-actions - = button_tag class: 'btn gl-button btn-confirm btn-upload-file gl-mr-2', id: 'submit-all', type: 'button' do - = gl_loading_icon(inline: true, css_class: 'gl-mr-2 js-loading-icon hidden') - = button_title - = link_to _("Cancel"), '#', class: "btn gl-button btn-default btn-cancel", "data-dismiss" => "modal" - - = render 'shared/projects/edit_information' diff --git a/app/views/projects/blob/edit.html.haml b/app/views/projects/blob/edit.html.haml index f80601ef221..220319d31b5 100644 --- a/app/views/projects/blob/edit.html.haml +++ b/app/views/projects/blob/edit.html.haml @@ -4,7 +4,7 @@ - webpack_preload_asset_tag('monaco') - if @conflict - = render Pajamas::AlertComponent.new(alert_class: 'gl-mb-5 gl-mt-5', + = render Pajamas::AlertComponent.new(alert_options: { class: 'gl-mb-5 gl-mt-5' }, variant: :danger, dismissible: false) do |c| - blob_url = project_blob_path(@project, @id) @@ -15,7 +15,7 @@ = _('Someone edited the file the same time you did. Please check out %{link_start}the file %{icon}%{link_end} and make sure your changes will not unintentionally remove theirs.').html_safe % { link_start: blob_link_start, link_end: ''.html_safe , icon: external_link_icon } -%h3.page-title.blob-edit-page-title +%h1.page-title.gl-font-size-h-display.blob-edit-page-title Edit file .file-editor = gl_tabs_nav({ class: 'js-edit-mode nav-links gl-border-0'}) do diff --git a/app/views/projects/blob/new.html.haml b/app/views/projects/blob/new.html.haml index 60877db581f..27f64104cf4 100644 --- a/app/views/projects/blob/new.html.haml +++ b/app/views/projects/blob/new.html.haml @@ -1,7 +1,7 @@ - breadcrumb_title _("Repository") - page_title _("New File"), @path.presence, @ref -%h3.page-title.blob-new-page-title +%h1.page-title.blob-new-page-title.gl-font-size-h-display = _('New file') .file-editor = form_tag(project_create_blob_path(@project, @id), method: :post, class: 'js-edit-blob-form js-new-blob-form js-quick-submit js-requires-input', data: blob_editor_paths(@project)) do diff --git a/app/views/projects/blob/show.html.haml b/app/views/projects/blob/show.html.haml index d4e7ee90a84..a91c0d63b00 100644 --- a/app/views/projects/blob/show.html.haml +++ b/app/views/projects/blob/show.html.haml @@ -14,8 +14,5 @@ - if can_modify_blob?(@blob) = render 'projects/blob/remove' - - title = _("Replace %{blob_name}") % { blob_name: @blob.name } - = render 'projects/blob/upload', title: title, placeholder: title, button_title: _('Replace file'), form_path: project_update_blob_path(@project, @id), method: :put - = render partial: 'pipeline_tour_success' if show_suggest_pipeline_creation_celebration? = render 'shared/web_ide_path' diff --git a/app/views/projects/branch_rules/_show.html.haml b/app/views/projects/branch_rules/_show.html.haml new file mode 100644 index 00000000000..af0e656d301 --- /dev/null +++ b/app/views/projects/branch_rules/_show.html.haml @@ -0,0 +1,12 @@ +- expanded = expanded_by_default? + +%section.settings.no-animate#branch-rules{ class: ('expanded' if expanded) } + .settings-header + %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Branch rules') + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do + = expanded ? _('Collapse') : _('Expand') + %p + = _('Define rules for who can push, merge, and the required approvals for each branch.') + + .settings-content.gl-pr-0 + #js-branch-rules diff --git a/app/views/projects/branches/new.html.haml b/app/views/projects/branches/new.html.haml index c06f60bd05d..f8bee5a69e9 100644 --- a/app/views/projects/branches/new.html.haml +++ b/app/views/projects/branches/new.html.haml @@ -5,7 +5,7 @@ = render Pajamas::AlertComponent.new(variant: :danger) do |c| = c.body do = @error -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('New Branch') %hr @@ -26,7 +26,8 @@ = render 'shared/ref_dropdown', dropdown_class: 'wide' .form-text.text-muted Existing branch name, tag, or commit SHA .form-actions - = button_tag 'Create branch', class: 'gl-button btn btn-confirm' + = render Pajamas::ButtonComponent.new(variant: :confirm, button_options: { type: 'submit', class: 'gl-mr-3' }) do + = _('Create branch') = link_to _('Cancel'), project_branches_path(@project), class: 'gl-button btn btn-default btn-cancel' -# haml-lint:disable InlineJavaScript %script#availableRefs{ type: "application/json" }= @project.repository.ref_names.to_json.html_safe diff --git a/app/views/projects/buttons/_remove_tag.html.haml b/app/views/projects/buttons/_remove_tag.html.haml index 58af0d91f30..060a854d4e4 100644 --- a/app/views/projects/buttons/_remove_tag.html.haml +++ b/app/views/projects/buttons/_remove_tag.html.haml @@ -1,6 +1,11 @@ - project = local_assigns.fetch(:project, nil) - tag = local_assigns.fetch(:tag, nil) - return unless project && tag +- title = s_('TagsPage|Delete tag') +- if protected_tag?(project, tag) + - title = s_('TagsPage|Delete protected tag') + - if !can?(current_user, :maintainer_access, project) + - title = s_('TagsPage|Only a project maintainer or owner can delete a protected tag') + - disabled = true -%button{ type: "button", class: "js-remove-tag js-confirm-modal-button gl-button btn btn-default btn-icon has-tooltip gl-ml-3\! #{protected_tag?(project, tag) ? 'disabled' : ''}", title: s_('TagsPage|Delete tag'), data: { container: 'body', path: project_tag_path(@project, tag.name), modal_attributes: delete_tag_modal_attributes(tag.name) } } - = sprite_icon('remove', css_class: 'gl-icon') += render Pajamas::ButtonComponent.new(variant: :default, icon: 'remove', button_options: { class: "js-delete-tag-button gl-ml-3\!", 'aria-label': s_('TagsPage|Delete tag'), title: title, disabled: disabled, data: { toggle: 'tooltip', container: 'body', path: project_tag_path(@project, tag.name), tag_name: tag.name, is_protected: protected_tag?(project, tag).to_s } }) diff --git a/app/views/projects/cleanup/_show.html.haml b/app/views/projects/cleanup/_show.html.haml index 5e14b6dacfd..c53205b6c58 100644 --- a/app/views/projects/cleanup/_show.html.haml +++ b/app/views/projects/cleanup/_show.html.haml @@ -3,7 +3,7 @@ %section.settings.no-animate#cleanup{ class: ('expanded' if expanded) } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Repository cleanup') - %button.btn.gl-button.btn-default.js-settings-toggle + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p - link_url = 'https://github.com/newren/git-filter-repo' diff --git a/app/views/projects/commit/show.html.haml b/app/views/projects/commit/show.html.haml index c26f24dd52c..feaac255d8c 100644 --- a/app/views/projects/commit/show.html.haml +++ b/app/views/projects/commit/show.html.haml @@ -9,7 +9,7 @@ - page_description @commit.description - add_page_specific_style 'page_bundles/pipelines' -.container-fluid.commits-container{ class: [limited_container_width, container_class] } +.container-fluid{ class: [limited_container_width, container_class] } = render "commit_box" = render "ci_menu" = render "projects/diffs/diffs", diff --git a/app/views/projects/commits/_commits.html.haml b/app/views/projects/commits/_commits.html.haml index c6fb3bcd559..764ddace0ad 100644 --- a/app/views/projects/commits/_commits.html.haml +++ b/app/views/projects/commits/_commits.html.haml @@ -23,7 +23,7 @@ %li.commit-header.js-commit-header %span.font-weight-bold= n_("%d previously merged commit", "%d previously merged commits", context_commits.count) % context_commits.count - if can_update_merge_request - %button.gl-button.btn.btn-default.ml-3.add-review-item-modal-trigger{ type: "button", data: { context_commits_empty: 'false' } } + = render Pajamas::ButtonComponent.new(button_options: { class: 'gl-ml-3 add-review-item-modal-trigger', data: { context_commits_empty: 'false' } }) do = _('Add/remove') %li.commits-row @@ -41,7 +41,7 @@ = n_('%s additional commit has been omitted to prevent performance issues.', '%s additional commits have been omitted to prevent performance issues.', hidden) % number_with_delimiter(hidden) - if can_update_merge_request && context_commits&.empty? - %button.gl-button.btn.btn-default.mt-3.add-review-item-modal-trigger{ type: "button", data: { context_commits_empty: 'true' } } + = render Pajamas::ButtonComponent.new(button_options: { class: 'gl-mt-5', data: { context_commits_empty: 'true' } }) do = _('Add previously merged commits') - if commits.size == 0 && context_commits.nil? diff --git a/app/views/projects/compare/index.html.haml b/app/views/projects/compare/index.html.haml index 12d3f28dc20..b3590eea631 100644 --- a/app/views/projects/compare/index.html.haml +++ b/app/views/projects/compare/index.html.haml @@ -1,9 +1,9 @@ - breadcrumb_title _("Compare Revisions") - page_title _("Compare") -%h3.page-title +%h1.page-title.gl-font-size-h-display = _("Compare Git revisions") -.sub-header-block +%div - example_branch = capture do %code.ref-name= @project.default_branch_or_main - example_sha = capture do diff --git a/app/views/projects/compare/show.html.haml b/app/views/projects/compare/show.html.haml index cb2c2d488e8..a6be6695b75 100644 --- a/app/views/projects/compare/show.html.haml +++ b/app/views/projects/compare/show.html.haml @@ -17,7 +17,7 @@ paginate_diffs: true, paginate_diffs_per_page: Projects::CompareController::COMMIT_DIFFS_PER_PAGE - else - .card.bg-light + .card.gl-bg-gray-50.gl-border-none.gl-p-2 .center %h4 = s_("CompareBranches|There isn't anything to compare.") diff --git a/app/views/projects/confluences/show.html.haml b/app/views/projects/confluences/show.html.haml index 413de90b67b..6fec9b501ea 100644 --- a/app/views/projects/confluences/show.html.haml +++ b/app/views/projects/confluences/show.html.haml @@ -8,6 +8,6 @@ - wiki_confluence_epic_link_url = 'https://gitlab.com/groups/gitlab-org/-/epics/3629' - wiki_confluence_epic_link_start = ''.html_safe % { url: wiki_confluence_epic_link_url } = html_escape(s_("WikiEmpty|You've enabled the Confluence Workspace integration. Your wiki will be viewable directly within Confluence. We are hard at work integrating Confluence more seamlessly into GitLab. If you'd like to stay up to date, follow our %{wiki_confluence_epic_link_start}Confluence epic%{wiki_confluence_epic_link_end}.")) % { wiki_confluence_epic_link_start: wiki_confluence_epic_link_start, wiki_confluence_epic_link_end: ''.html_safe } - = link_to @project.confluence_integration.confluence_url, target: '_blank', rel: 'noopener noreferrer', class: 'gl-button btn btn-success external-url', title: s_('WikiEmpty|Go to Confluence') do + = link_to @project.confluence_integration.confluence_url, target: '_blank', rel: 'noopener noreferrer', class: 'gl-button btn btn-confirm external-url', title: s_('WikiEmpty|Go to Confluence') do = s_('WikiEmpty|Go to Confluence') = sprite_icon('external-link') diff --git a/app/views/projects/default_branch/_show.html.haml b/app/views/projects/default_branch/_show.html.haml index 2d3d36a9157..b1fb9c70a54 100644 --- a/app/views/projects/default_branch/_show.html.haml +++ b/app/views/projects/default_branch/_show.html.haml @@ -3,7 +3,7 @@ %section.settings.no-animate#default-branch-settings{ class: ('expanded' if expanded) } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Default branch') - %button.btn.gl-button.btn-default.js-settings-toggle + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p = _('Set the default branch for this project. All merge requests and commits are made against this branch unless you specify a different one.') diff --git a/app/views/projects/deploy_keys/edit.html.haml b/app/views/projects/deploy_keys/edit.html.haml index 263b0025fe8..04e364d6b15 100644 --- a/app/views/projects/deploy_keys/edit.html.haml +++ b/app/views/projects/deploy_keys/edit.html.haml @@ -1,5 +1,5 @@ - page_title _('Edit Deploy Key') -%h3.page-title= _('Edit Deploy Key') +%h1.page-title.gl-font-size-h-display= _('Edit Deploy Key') %hr %div diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index 92dbde07709..41d6b7086c1 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -10,14 +10,16 @@ %section.settings.general-settings.no-animate.expanded#js-general-settings .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Naming, topics, avatar') - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' }= _('Collapse') + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do + = _('Collapse') %p= _('Update your project name, topics, description, and avatar.') .settings-content= render 'projects/settings/general' %section.settings.sharing-permissions.no-animate#js-shared-permissions{ class: ('expanded' if expanded), data: { qa_selector: 'visibility_features_permissions_content' } } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Visibility, project features, permissions') - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand') + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do + = expanded ? _('Collapse') : _('Expand') %p= _('Choose visibility level, enable/disable project features and their permissions, disable email notifications, and show default award emoji.') .settings-content @@ -29,7 +31,8 @@ %section.rspec-merge-request-settings.settings.merge-requests-feature.no-animate#js-merge-request-settings{ class: [('expanded' if expanded), ('hidden' if @project.project_feature.send(:merge_requests_access_level) == 0)], data: { qa_selector: 'merge_request_settings_content' } } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Merge requests') - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand') + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do + = expanded ? _('Collapse') : _('Expand') = render_if_exists 'projects/merge_request_settings_description_text' .settings-content @@ -47,7 +50,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = s_('ProjectSettings|Badges') - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p = s_('ProjectSettings|Customize this project\'s badges.') @@ -64,7 +67,8 @@ %section.settings.advanced-settings.no-animate#js-project-advanced-settings{ class: ('expanded' if expanded), data: { qa_selector: 'advanced_settings_content' } } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Advanced') - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand') + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do + = expanded ? _('Collapse') : _('Expand') %p= s_('ProjectSettings|Housekeeping, export, archive, change path, transfer, and delete.') .settings-content diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index b2338fa6c55..ce6d021ce2f 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -3,8 +3,10 @@ - escaped_default_branch_name = default_branch_name.shellescape - @skip_current_level_breadcrumb = true -= render_if_exists 'shared/user_over_limit_free_plan_alert', source: @project += render_if_exists 'projects/free_user_cap_alert', project: @project + = render partial: 'flash_messages', locals: { project: @project } += render 'clusters_deprecation_alert' = render "home_panel" = render "archived_notice", project: @project @@ -74,6 +76,3 @@ %span>< git push -u origin --all git push -u origin --tags - -- if @project.upload_anchor_data.present? - = render 'projects/blob/upload', title: _('Upload New File'), placeholder: _('Upload New File'), button_title: _('Upload file'), form_path: project_create_blob_path(@project, default_branch_name), ref: default_branch_name, method: :post diff --git a/app/views/projects/environments/terminal.html.haml b/app/views/projects/environments/terminal.html.haml index ee31985eaf0..7c837d4ded0 100644 --- a/app/views/projects/environments/terminal.html.haml +++ b/app/views/projects/environments/terminal.html.haml @@ -6,7 +6,7 @@ .top-area .row .col-sm-6 - %h3.page-title + %h1.page-title.gl-font-size-h-display = _("Terminal for environment") = @environment.name diff --git a/app/views/projects/forks/error.html.haml b/app/views/projects/forks/error.html.haml index 13fd4cee0cc..022a96b15a7 100644 --- a/app/views/projects/forks/error.html.haml +++ b/app/views/projects/forks/error.html.haml @@ -2,7 +2,7 @@ - if @forked_project && !@forked_project.saved? = render Pajamas::AlertComponent.new(title: _('Fork Error!'), variant: :danger, - alert_class: 'gl-mt-5', + alert_options: { class: 'gl-mt-5' }, dismissible: false) do |c| = c.body do %p diff --git a/app/views/projects/graphs/show.html.haml b/app/views/projects/graphs/show.html.haml index 1973b23a062..c7639eec75d 100644 --- a/app/views/projects/graphs/show.html.haml +++ b/app/views/projects/graphs/show.html.haml @@ -1,7 +1,7 @@ - page_title _('Contributors') -.sub-header-block.bg-gray-light.gl-p-5 - .tree-ref-holder.inline.vertical-align-middle +.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'), project_commits_path(@project, current_ref), class: 'btn gl-button btn-default' diff --git a/app/views/projects/hook_logs/show.html.haml b/app/views/projects/hook_logs/show.html.haml index f6861e4119e..d610ef21400 100644 --- a/app/views/projects/hook_logs/show.html.haml +++ b/app/views/projects/hook_logs/show.html.haml @@ -2,11 +2,14 @@ - add_to_breadcrumbs _('Webhook Settings'), namespace_project_hooks_path - page_title _('Webhook Logs') -%h3.page-title +%h1.page-title.gl-font-size-h-display = _("Request details") %hr -= link_to _("Resend Request"), @hook_log.present.retry_path, method: :post, class: "btn gl-button btn-default float-right gl-ml-3" +- if @hook_log.oversize? + = button_tag _("Resend Request"), class: "btn gl-button btn-default float-right gl-ml-3 has-tooltip", disabled: true, title: _("Request data is too large") +- else + = link_to _("Resend Request"), @hook_log.present.retry_path, method: :post, class: "btn gl-button btn-default float-right gl-ml-3" = render partial: 'shared/hook_logs/content', locals: { hook_log: @hook_log } diff --git a/app/views/projects/import/jira/show.html.haml b/app/views/projects/import/jira/show.html.haml index 1feae7baa02..2605ebc544f 100644 --- a/app/views/projects/import/jira/show.html.haml +++ b/app/views/projects/import/jira/show.html.haml @@ -1,6 +1,6 @@ .js-jira-import-root{ data: { project_path: @project.full_path, issues_path: project_issues_path(@project), - jira_integration_path: edit_project_integration_path(@project, :jira), + jira_integration_path: edit_project_settings_integration_path(@project, :jira), is_jira_configured: @project.jira_integration&.configured?.to_s, in_progress_illustration: image_path('illustrations/export-import.svg'), project_id: @project.id, diff --git a/app/views/projects/imports/new.html.haml b/app/views/projects/imports/new.html.haml index dc2bcfa33bb..bcfa32566fb 100644 --- a/app/views/projects/imports/new.html.haml +++ b/app/views/projects/imports/new.html.haml @@ -1,5 +1,5 @@ - page_title _("Import repository") -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('Import repository') %hr diff --git a/app/views/projects/issuable/_show.html.haml b/app/views/projects/issuable/_show.html.haml index f311ed2d8ae..0898e0ae52d 100644 --- a/app/views/projects/issuable/_show.html.haml +++ b/app/views/projects/issuable/_show.html.haml @@ -4,7 +4,7 @@ - if issuable.relocation_target - page_canonical_link issuable.relocation_target.present(current_user: current_user).web_url -= render "projects/issues/alert_moved_from_service_desk", issue: issuable += render "projects/issues/service_desk/alert_moved_from_service_desk", issue: issuable = render 'shared/issue_type/details_header', issuable: issuable = render 'shared/issue_type/details_content', issuable: issuable, api_awards_path: api_awards_path 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 deleted file mode 100644 index 291edf014c3..00000000000 --- a/app/views/projects/issues/_alert_moved_from_service_desk.html.haml +++ /dev/null @@ -1,8 +0,0 @@ -- return unless show_moved_service_desk_issue_warning?(issue) -- service_desk_link_url = help_page_path('user/project/service_desk') -- service_desk_link_start = ''.html_safe % { url: service_desk_link_url } - -= render Pajamas::AlertComponent.new(variant: :warning, - alert_class: 'hide js-alert-moved-from-service-desk-warning gl-mt-5') do |c| - = c.body do - = s_('This project does not have %{service_desk_link_start}Service Desk%{service_desk_link_end} enabled, so the user who created the issue will no longer receive email notifications about new activity.').html_safe % { service_desk_link_start: service_desk_link_start, service_desk_link_end: ''.html_safe } diff --git a/app/views/projects/issues/_by_email_description.html.haml b/app/views/projects/issues/_by_email_description.html.haml deleted file mode 100644 index aeed5fb69c9..00000000000 --- a/app/views/projects/issues/_by_email_description.html.haml +++ /dev/null @@ -1,6 +0,0 @@ -The subject will be used as the title of the new issue, and the message will be the description. - -= link_to 'Quick actions', help_page_path('user/project/quick_actions'), target: '_blank', rel: 'noopener noreferrer' -and styling with -= link_to 'Markdown', help_page_path('user/markdown'), target: '_blank', rel: 'noopener noreferrer' -are supported. diff --git a/app/views/projects/issues/_nav_btns.html.haml b/app/views/projects/issues/_nav_btns.html.haml deleted file mode 100644 index 8d16c3d978f..00000000000 --- a/app/views/projects/issues/_nav_btns.html.haml +++ /dev/null @@ -1,20 +0,0 @@ -- show_feed_buttons = local_assigns.fetch(:show_feed_buttons, true) -- show_import_button = local_assigns.fetch(:show_import_button, true) && can?(current_user, :import_issues, @project) -- show_export_button = local_assigns.fetch(:show_export_button, true) -- issuable_type = 'issues' -- can_edit = can?(current_user, :admin_project, @project) -- notification_email = @current_user.present? ? @current_user.notification_email_or_default : nil - -.nav-controls.issues-nav-controls.gl-font-size-0 - - if show_feed_buttons - = render 'shared/issuable/feed_buttons' - - .js-csv-import-export-buttons{ data: { show_export_button: show_export_button.to_s, show_import_button: show_import_button.to_s, issuable_type: issuable_type, issuable_count: issuables_count_for_state(issuable_type.to_sym, params[:state]), email: notification_email, export_csv_path: export_csv_project_issues_path(@project, request.query_parameters), import_csv_issues_path: import_csv_namespace_project_issues_path, container_class: 'gl-mr-3', can_edit: can_edit.to_s, project_import_jira_path: project_import_jira_path(@project), max_attachment_size: number_to_human_size(Gitlab::CurrentSettings.max_attachment_size.megabytes) } } - - - if @can_bulk_update - = button_tag _("Edit issues"), class: "gl-button btn btn-default gl-mr-3 js-bulk-update-toggle" - - if show_new_issue_link?(@project) - = link_to _("New issue"), new_project_issue_path(@project, - issue: { milestone_id: finder.milestones.first.try(:id) }), - class: "gl-button btn btn-confirm", - id: "new_issue_link" diff --git a/app/views/projects/issues/_service_desk_empty_state.html.haml b/app/views/projects/issues/_service_desk_empty_state.html.haml deleted file mode 100644 index efc319ed8df..00000000000 --- a/app/views/projects/issues/_service_desk_empty_state.html.haml +++ /dev/null @@ -1,37 +0,0 @@ -- service_desk_enabled = @project.service_desk_enabled? - -- can_edit_project_settings = can?(current_user, :admin_project, @project) -- title_text = s_("ServiceDesk|Use Service Desk to connect with your users and offer customer support through email right inside GitLab") - -- if Gitlab::ServiceDesk.supported? - .empty-state - .svg-content - = render partial: 'shared/empty_states/icons/service_desk_empty_state', formats: :svg - - .text-content - %h4= title_text - - - if can_edit_project_settings && service_desk_enabled - %p - = s_("ServiceDesk|Your users can send emails to this address:") - %code= @project.service_desk_address - - %span= s_("ServiceDesk|Issues created from Service Desk emails will appear here. Each comment becomes part of the email conversation.") - = link_to _('Learn more.'), help_page_path('user/project/service_desk') - - - if can_edit_project_settings && !service_desk_enabled - .text-center - = link_to s_("ServiceDesk|Enable Service Desk"), edit_project_path(@project), class: 'gl-button btn btn-success' -- else - .empty-state - .svg-content - = render partial: 'shared/empty_states/icons/service_desk_setup', formats: :svg - .text-content - - if can_edit_project_settings - %h4= s_('ServiceDesk|Service Desk is not supported') - %p - = s_("ServiceDesk|To enable Service Desk on this instance, an instance administrator must first set up incoming email.") - = link_to _('Learn more.'), help_page_path('administration/incoming_email', anchor: 'set-it-up') - - else - %h4= s_('ServiceDesk|Service Desk is not enabled') - %p= s_("ServiceDesk|For help setting up the Service Desk for your instance, please contact an administrator.") diff --git a/app/views/projects/issues/_service_desk_info_content.html.haml b/app/views/projects/issues/_service_desk_info_content.html.haml deleted file mode 100644 index f0ec68ba54b..00000000000 --- a/app/views/projects/issues/_service_desk_info_content.html.haml +++ /dev/null @@ -1,24 +0,0 @@ -- service_desk_enabled = @project.service_desk_enabled? - -- can_edit_project_settings = can?(current_user, :admin_project, @project) -- can_admin_issues = can?(current_user, :admin_issue, @project) -- title_text = s_("ServiceDesk|Use Service Desk to connect with your users and offer customer support through email right inside GitLab") - -.non-empty-state.media - .svg-content - = render partial: 'shared/empty_states/icons/service_desk_callout', formats: :svg - - .gl-mt-3.gl-ml-3 - %h5= title_text - - - if can_admin_issues && service_desk_enabled - %p - = s_("ServiceDesk|Your users can send emails to this address:") - %code= @project.service_desk_address - - %span= s_("ServiceDesk|Issues created from Service Desk emails will appear here. Each comment becomes part of the email conversation.") - = link_to _('Learn more.'), help_page_path('user/project/service_desk') - - - if can_edit_project_settings && !service_desk_enabled - .gl-mt-3 - = link_to s_("ServiceDesk|Enable Service Desk"), edit_project_path(@project), class: 'gl-button btn btn-success' diff --git a/app/views/projects/issues/_work_item_links.html.haml b/app/views/projects/issues/_work_item_links.html.haml new file mode 100644 index 00000000000..55a8eb720b6 --- /dev/null +++ b/app/views/projects/issues/_work_item_links.html.haml @@ -0,0 +1,2 @@ +- if Feature.enabled?(:work_items_hierarchy, @project) + .js-work-item-links-root{ data: { issuable_id: @issue.id } } diff --git a/app/views/projects/issues/edit.html.haml b/app/views/projects/issues/edit.html.haml index 353ff9c1cc2..c2b620280d8 100644 --- a/app/views/projects/issues/edit.html.haml +++ b/app/views/projects/issues/edit.html.haml @@ -1,6 +1,6 @@ - page_title _("Edit"), "#{@issue.title} (#{@issue.to_reference})", _("Issues") -%h3.page-title +%h1.page-title.gl-font-size-h-display Edit Issue ##{@issue.iid} %hr diff --git a/app/views/projects/issues/index.html.haml b/app/views/projects/issues/index.html.haml index fe2be0f73c9..b730eb5072e 100644 --- a/app/views/projects/issues/index.html.haml +++ b/app/views/projects/issues/index.html.haml @@ -1,10 +1,5 @@ -- @can_bulk_update = can?(current_user, :admin_issue, @project) - -- page_title _("Issues") -- new_issue_email = @project.new_issuable_address(current_user, 'issue') +- page_title _('Issues') - add_page_specific_style 'page_bundles/issues_list' -- issuable_type = 'issue' - = content_for :meta_tags do = auto_discovery_link_tag(:atom, safe_params.merge(rss_url_options).to_h, title: "#{@project.name} issues") @@ -13,24 +8,6 @@ issues_path: project_issues_path(@project), project_path: @project.full_path } } -- if Feature.enabled?(:vue_issues_list, @project&.group) - .js-issues-list{ data: project_issues_list_data(@project, current_user) } - - if @can_bulk_update - = render 'shared/issuable/bulk_update_sidebar', type: :issues -- elsif project_issues(@project).exists? - .top-area - = render 'shared/issuable/nav', type: :issues - = render "projects/issues/nav_btns" - = render 'shared/issuable/search_bar', type: :issues - - - if @can_bulk_update - = render 'shared/issuable/bulk_update_sidebar', type: :issues - - .issues-holder - = render 'issues' - - if new_issue_email - .gl-text-center.gl-pt-5.gl-pb-7 - .js-issuable-by-email{ data: { initial_email: new_issue_email, issuable_type: issuable_type, emails_help_page_path: help_page_path('development/emails', anchor: 'email-namespace'), quick_actions_help_path: help_page_path('user/project/quick_actions'), markdown_help_path: help_page_path('user/markdown'), reset_path: new_issuable_address_project_path(@project, issuable_type: issuable_type) } } -- else - - new_project_issue_button_path = @project.archived? ? false : new_project_issue_path(@project) - = render 'shared/empty_states/issues', new_project_issue_button_path: new_project_issue_button_path, show_import_button: true +.js-issues-list{ data: project_issues_list_data(@project, current_user) } +- if can?(current_user, :admin_issue, @project) + = render 'shared/issuable/bulk_update_sidebar', type: :issues diff --git a/app/views/projects/issues/new.html.haml b/app/views/projects/issues/new.html.haml index b18027f0f25..617579cdd6f 100644 --- a/app/views/projects/issues/new.html.haml +++ b/app/views/projects/issues/new.html.haml @@ -2,7 +2,7 @@ - breadcrumb_title _("New") - page_title _("New Issue") -.top-area.flex-lg-row - %h3.page-title= _("New Issue") +.top-area.gl-lg-flex-direction-row.gl-border-bottom-0 + %h1.page-title.gl-font-size-h-display= _("New Issue") = render "form" diff --git a/app/views/projects/issues/service_desk.html.haml b/app/views/projects/issues/service_desk.html.haml index fb5880f633a..93cb5ddd7e2 100644 --- a/app/views/projects/issues/service_desk.html.haml +++ b/app/views/projects/issues/service_desk.html.haml @@ -3,7 +3,7 @@ - page_title _("Service Desk") - add_page_specific_style 'page_bundles/issues_list' - content_for :breadcrumbs_extra do - = render "projects/issues/nav_btns", show_export_button: false, show_rss_button: false + = render "projects/issues/service_desk/nav_btns", show_export_button: false, show_rss_button: false - support_bot_attrs = { service_desk_enabled: @project.service_desk_enabled?, **UserSerializer.new.represent(User.support_bot) }.to_json @@ -11,12 +11,12 @@ .top-area = render 'shared/issuable/nav', type: :issues .nav-controls.d-block.d-sm-none - = render "projects/issues/nav_btns", show_feed_buttons: false, show_import_button: false, show_export_button: false + = render "projects/issues/service_desk/nav_btns", show_feed_buttons: false, show_import_button: false, show_export_button: false - if @issues.present? = render 'shared/issuable/search_bar', type: :issues - if Gitlab::ServiceDesk.supported? - = render 'service_desk_info_content' + = render 'projects/issues/service_desk/service_desk_info_content' .issues-holder - = render 'projects/issues/issues', empty_state_path: 'service_desk_empty_state' + = render 'projects/issues/issues', empty_state_path: 'projects/issues/service_desk/service_desk_empty_state' diff --git a/app/views/projects/issues/service_desk/_alert_moved_from_service_desk.html.haml b/app/views/projects/issues/service_desk/_alert_moved_from_service_desk.html.haml new file mode 100644 index 00000000000..cc8d5bdaeec --- /dev/null +++ b/app/views/projects/issues/service_desk/_alert_moved_from_service_desk.html.haml @@ -0,0 +1,8 @@ +- return unless show_moved_service_desk_issue_warning?(issue) +- service_desk_link_url = help_page_path('user/project/service_desk') +- service_desk_link_start = ''.html_safe % { url: service_desk_link_url } + += render Pajamas::AlertComponent.new(variant: :warning, + alert_options: { class: 'hide js-alert-moved-from-service-desk-warning gl-mt-5' }) do |c| + = c.body do + = s_('This project does not have %{service_desk_link_start}Service Desk%{service_desk_link_end} enabled, so the user who created the issue will no longer receive email notifications about new activity.').html_safe % { service_desk_link_start: service_desk_link_start, service_desk_link_end: ''.html_safe } diff --git a/app/views/projects/issues/service_desk/_nav_btns.html.haml b/app/views/projects/issues/service_desk/_nav_btns.html.haml new file mode 100644 index 00000000000..8d16c3d978f --- /dev/null +++ b/app/views/projects/issues/service_desk/_nav_btns.html.haml @@ -0,0 +1,20 @@ +- show_feed_buttons = local_assigns.fetch(:show_feed_buttons, true) +- show_import_button = local_assigns.fetch(:show_import_button, true) && can?(current_user, :import_issues, @project) +- show_export_button = local_assigns.fetch(:show_export_button, true) +- issuable_type = 'issues' +- can_edit = can?(current_user, :admin_project, @project) +- notification_email = @current_user.present? ? @current_user.notification_email_or_default : nil + +.nav-controls.issues-nav-controls.gl-font-size-0 + - if show_feed_buttons + = render 'shared/issuable/feed_buttons' + + .js-csv-import-export-buttons{ data: { show_export_button: show_export_button.to_s, show_import_button: show_import_button.to_s, issuable_type: issuable_type, issuable_count: issuables_count_for_state(issuable_type.to_sym, params[:state]), email: notification_email, export_csv_path: export_csv_project_issues_path(@project, request.query_parameters), import_csv_issues_path: import_csv_namespace_project_issues_path, container_class: 'gl-mr-3', can_edit: can_edit.to_s, project_import_jira_path: project_import_jira_path(@project), max_attachment_size: number_to_human_size(Gitlab::CurrentSettings.max_attachment_size.megabytes) } } + + - if @can_bulk_update + = button_tag _("Edit issues"), class: "gl-button btn btn-default gl-mr-3 js-bulk-update-toggle" + - if show_new_issue_link?(@project) + = link_to _("New issue"), new_project_issue_path(@project, + issue: { milestone_id: finder.milestones.first.try(:id) }), + class: "gl-button btn btn-confirm", + id: "new_issue_link" diff --git a/app/views/projects/issues/service_desk/_service_desk_empty_state.html.haml b/app/views/projects/issues/service_desk/_service_desk_empty_state.html.haml new file mode 100644 index 00000000000..1c9143c633d --- /dev/null +++ b/app/views/projects/issues/service_desk/_service_desk_empty_state.html.haml @@ -0,0 +1,37 @@ +- service_desk_enabled = @project.service_desk_enabled? + +- can_edit_project_settings = can?(current_user, :admin_project, @project) +- title_text = s_("ServiceDesk|Use Service Desk to connect with your users and offer customer support through email right inside GitLab") + +- if Gitlab::ServiceDesk.supported? + .empty-state + .svg-content + = render partial: 'shared/empty_states/icons/service_desk_empty_state', formats: :svg + + .text-content + %h4= title_text + + - if can_edit_project_settings && service_desk_enabled + %p + = s_("ServiceDesk|Your users can send emails to this address:") + %code= @project.service_desk_address + + %span= s_("ServiceDesk|Issues created from Service Desk emails will appear here. Each comment becomes part of the email conversation.") + = link_to _('Learn more.'), help_page_path('user/project/service_desk') + + - if can_edit_project_settings && !service_desk_enabled + .text-center + = link_to s_("ServiceDesk|Enable Service Desk"), edit_project_path(@project), class: 'gl-button btn btn-confirm' +- else + .empty-state + .svg-content + = render partial: 'shared/empty_states/icons/service_desk_setup', formats: :svg + .text-content + - if can_edit_project_settings + %h4= s_('ServiceDesk|Service Desk is not supported') + %p + = s_("ServiceDesk|To enable Service Desk on this instance, an instance administrator must first set up incoming email.") + = link_to _('Learn more.'), help_page_path('administration/incoming_email', anchor: 'set-it-up') + - else + %h4= s_('ServiceDesk|Service Desk is not enabled') + %p= s_("ServiceDesk|For help setting up the Service Desk for your instance, please contact an administrator.") diff --git a/app/views/projects/issues/service_desk/_service_desk_info_content.html.haml b/app/views/projects/issues/service_desk/_service_desk_info_content.html.haml new file mode 100644 index 00000000000..bad75ac2cd9 --- /dev/null +++ b/app/views/projects/issues/service_desk/_service_desk_info_content.html.haml @@ -0,0 +1,24 @@ +- service_desk_enabled = @project.service_desk_enabled? + +- can_edit_project_settings = can?(current_user, :admin_project, @project) +- can_admin_issues = can?(current_user, :admin_issue, @project) +- title_text = s_("ServiceDesk|Use Service Desk to connect with your users and offer customer support through email right inside GitLab") + +.non-empty-state.media + .svg-content + = render partial: 'shared/empty_states/icons/service_desk_callout', formats: :svg + + .gl-mt-3.gl-ml-3 + %h5= title_text + + - if can_admin_issues && service_desk_enabled + %p + = s_("ServiceDesk|Your users can send emails to this address:") + %code= @project.service_desk_address + + %span= s_("ServiceDesk|Issues created from Service Desk emails will appear here. Each comment becomes part of the email conversation.") + = link_to _('Learn more.'), help_page_path('user/project/service_desk') + + - if can_edit_project_settings && !service_desk_enabled + .gl-mt-3 + = link_to s_("ServiceDesk|Enable Service Desk"), edit_project_path(@project), class: 'gl-button btn btn-confirm' diff --git a/app/views/projects/jobs/index.html.haml b/app/views/projects/jobs/index.html.haml index e725e8e6889..dfea4db4d07 100644 --- a/app/views/projects/jobs/index.html.haml +++ b/app/views/projects/jobs/index.html.haml @@ -1,5 +1,3 @@ -= render_if_exists 'shared/minute_limit_banner', namespace: @project - - page_title _("Jobs") - add_page_specific_style 'page_bundles/ci_status' - admin = local_assigns.fetch(:admin, false) diff --git a/app/views/projects/labels/edit.html.haml b/app/views/projects/labels/edit.html.haml index 8023fb93c64..4f4609e6016 100644 --- a/app/views/projects/labels/edit.html.haml +++ b/app/views/projects/labels/edit.html.haml @@ -2,7 +2,7 @@ - breadcrumb_title _("Edit") - page_title _("Edit"), @label.name, _("Labels") -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('Edit Label') -%hr + = render 'shared/labels/form', url: project_label_path(@project, @label), back_path: project_labels_path(@project) diff --git a/app/views/projects/labels/index.html.haml b/app/views/projects/labels/index.html.haml index e034e9c71ab..dd63e854a36 100644 --- a/app/views/projects/labels/index.html.haml +++ b/app/views/projects/labels/index.html.haml @@ -4,11 +4,12 @@ - subscribed = params[:subscribed] - labels_or_filters = @labels.exists? || @prioritized_labels.exists? || search.present? || subscribed.present? += render_if_exists 'shared/minute_limit_banner', namespace: @project - if labels_or_filters #js-promote-label-modal = render 'shared/labels/nav', labels_or_filters: labels_or_filters, can_admin_label: can_admin_label - .labels-container.gl-mt-3.gl-bg-gray-10.gl-border-solid.gl-border-1.gl-border-gray-100 + .labels-container.gl-mt-5 - if can_admin_label && search.blank? %p.text-muted = _('Labels can be applied to issues and merge requests.') @@ -18,8 +19,8 @@ -# Only show it in the first page - hide = @available_labels.empty? || (params[:page].present? && params[:page] != '1') .prioritized-labels.gl-mb-7{ class: [('hide' if hide), ('is-not-draggable' unless can_admin_label)] } - %h5.gl-mt-3= _('Prioritized Labels') - .content-list.manage-labels-list.js-prioritized-labels{ data: { url: set_priorities_project_labels_path(@project), sortable: can_admin_label } } + %h4.gl-mt-3= _('Prioritized Labels') + .manage-labels-list.js-prioritized-labels{ data: { url: set_priorities_project_labels_path(@project), sortable: can_admin_label } } #js-priority-labels-empty-state.priority-labels-empty-state{ class: "#{'hidden' unless @prioritized_labels.empty? && search.blank?}" } = render 'shared/empty_states/priority_labels' - if @prioritized_labels.any? @@ -30,14 +31,14 @@ - if @labels.any? .other-labels - %h5{ class: ('hide' if hide) }= _('Other Labels') - .content-list.manage-labels-list.js-other-labels + %h4{ class: ('hide' if hide) }= _('Other Labels') + .manage-labels-list.js-other-labels = render partial: 'shared/label', collection: @labels, as: :label, locals: { subject: @project } = paginate @labels, theme: 'gitlab' - elsif search.present? .other-labels - if @available_labels.any? - %h5 + %h4 = _('Other Labels') .nothing-here-block = _('No other labels with such name or description') diff --git a/app/views/projects/labels/new.html.haml b/app/views/projects/labels/new.html.haml index 1ae87bf93d1..7002da0b76a 100644 --- a/app/views/projects/labels/new.html.haml +++ b/app/views/projects/labels/new.html.haml @@ -2,7 +2,7 @@ - breadcrumb_title _("New") - page_title _("New Label") -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('New Label') -%hr + = render 'shared/labels/form', url: project_labels_path(@project), back_path: project_labels_path(@project) diff --git a/app/views/projects/mattermosts/_no_teams.html.haml b/app/views/projects/mattermosts/_no_teams.html.haml index 1f008496a34..5886c0565b1 100644 --- a/app/views/projects/mattermosts/_no_teams.html.haml +++ b/app/views/projects/mattermosts/_no_teams.html.haml @@ -9,4 +9,4 @@ and try again. %hr .clearfix - = link_to 'Go back', edit_project_integration_path(@project, @integration), class: 'gl-button btn btn-lg float-right' + = link_to 'Go back', edit_project_settings_integration_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 d52d980c364..98221125443 100644 --- a/app/views/projects/mattermosts/_team_selection.html.haml +++ b/app/views/projects/mattermosts/_team_selection.html.haml @@ -42,5 +42,5 @@ %hr .clearfix .float-right - = link_to _('Cancel'), edit_project_integration_path(@project, @integration), class: 'gl-button btn btn-lg' - = f.submit 'Install', class: 'gl-button btn btn-success btn-lg' + = link_to _('Cancel'), edit_project_settings_integration_path(@project, @integration), class: 'gl-button btn btn-lg' + = f.submit 'Install', class: 'gl-button btn btn-confirm btn-lg' 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 282faf7714e..a0810cfe37d 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 @@ -20,7 +20,7 @@ %li.gl-new-dropdown-item = link_to toggle_draft_merge_request_path(@merge_request), method: :put, class: 'dropdown-item js-draft-toggle-button' do .gl-new-dropdown-item-text-wrapper - = @merge_request.work_in_progress? ? _('Mark as ready') : _('Mark as draft') + = @merge_request.draft? ? _('Mark as ready') : _('Mark as draft') %li.gl-new-dropdown-item.js-close-item = link_to close_issuable_path(@merge_request), method: :put, class: 'dropdown-item' do .gl-new-dropdown-item-text-wrapper @@ -33,14 +33,15 @@ = _('Reopen') = display_issuable_type - - if current_user && moved_mr_sidebar_enabled? - %li.gl-new-dropdown-divider - %hr.dropdown-divider - %li.gl-new-dropdown-item.js-sidebar-subscriptions-entry-point - - unless issuable_author_is_current_user(@merge_request) - %li.gl-new-dropdown-item - = link_to new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)), class: 'dropdown-item' do - .gl-new-dropdown-item-text-wrapper - = _('Report abuse') - - if moved_mr_sidebar_enabled? - %li.gl-new-dropdown-item#js-lock-entry-point + - unless current_controller?('conflicts') + - if current_user && moved_mr_sidebar_enabled? + %li.gl-new-dropdown-divider + %hr.dropdown-divider + %li.gl-new-dropdown-item.js-sidebar-subscriptions-entry-point + - unless issuable_author_is_current_user(@merge_request) + %li.gl-new-dropdown-item + = link_to new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)), class: 'dropdown-item' do + .gl-new-dropdown-item-text-wrapper + = _('Report abuse') + - if moved_mr_sidebar_enabled? + %li.gl-new-dropdown-item#js-lock-entry-point diff --git a/app/views/projects/merge_requests/_code_dropdown.html.haml b/app/views/projects/merge_requests/_code_dropdown.html.haml index 0bd28e315d9..bb42c3067d9 100644 --- a/app/views/projects/merge_requests/_code_dropdown.html.haml +++ b/app/views/projects/merge_requests/_code_dropdown.html.haml @@ -34,6 +34,6 @@ .gl-new-dropdown-item-text-wrapper = _('Email patches') %li.gl-new-dropdown-item - = link_to merge_request_path(@merge_request, format: :diff), class: 'dropdown-item', data: { qa_selector: 'download_plain_diff_menu_item' } do + = link_to merge_request_path(@merge_request, format: :diff), class: 'dropdown-item', download: '', data: { qa_selector: 'download_plain_diff_menu_item' } do .gl-new-dropdown-item-text-wrapper = _('Plain diff') diff --git a/app/views/projects/merge_requests/_mr_box.html.haml b/app/views/projects/merge_requests/_mr_box.html.haml index e16631b4943..4fc405c63ff 100644 --- a/app/views/projects/merge_requests/_mr_box.html.haml +++ b/app/views/projects/merge_requests/_mr_box.html.haml @@ -1,7 +1,3 @@ -.detail-page-description.py-2 - - if Feature.enabled?(:updated_mr_header, @project) - = render 'shared/issuable/status_box', issuable: @merge_request - = merge_request_header(@project, @merge_request) - - else - %h2.title.mb-0{ data: { qa_selector: 'title_content' } } - = markdown_field(@merge_request, :title) +.detail-page-description.py-2{ class: "#{'is-merge-request' if moved_mr_sidebar_enabled? && !fluid_layout}" } + = render 'shared/issuable/status_box', issuable: @merge_request + = merge_request_header(@project, @merge_request) diff --git a/app/views/projects/merge_requests/_mr_title.html.haml b/app/views/projects/merge_requests/_mr_title.html.haml index 638c520e210..4f4acb6103f 100644 --- a/app/views/projects/merge_requests/_mr_title.html.haml +++ b/app/views/projects/merge_requests/_mr_title.html.haml @@ -2,35 +2,30 @@ - can_update_merge_request = can?(current_user, :update_merge_request, @merge_request) - can_reopen_merge_request = can?(current_user, :reopen_merge_request, @merge_request) - are_close_and_open_buttons_hidden = merge_request_button_hidden?(@merge_request, true) && merge_request_button_hidden?(@merge_request, false) -- updated_mr_header_enabled = Feature.enabled?(:updated_mr_header, @project) -- cache_key = [@project, @merge_request, can_update_merge_request, can_reopen_merge_request, are_close_and_open_buttons_hidden, current_user&.preferred_language, updated_mr_header_enabled] +- hide_gutter_toggle = local_assigns.fetch(:hide_gutter_toggle, false) +- cache_key = [@project, @merge_request, can_update_merge_request, can_reopen_merge_request, are_close_and_open_buttons_hidden, current_user&.preferred_language, "1.1-updated_header", moved_mr_sidebar_enabled?, hide_gutter_toggle] = cache(cache_key, expires_in: 1.day) do - if @merge_request.closed_or_merged_without_fork? - = render Pajamas::AlertComponent.new(alert_class: 'gl-mb-5', + = render Pajamas::AlertComponent.new(alert_options: { class: 'gl-mb-5' }, variant: :danger, dismissible: false) do |c| = c.body do = _('The source project of this merge request has been removed.') - .detail-page-header.border-bottom-0.pt-0.pb-0{ class: "#{'gl-display-block gl-md-display-flex!' if updated_mr_header_enabled}" } + .detail-page-header.border-bottom-0.pt-0.pb-0.gl-display-block{ class: "gl-md-display-flex! #{'is-merge-request' if moved_mr_sidebar_enabled? && !fluid_layout}" } .detail-page-header-body - - unless updated_mr_header_enabled - = render "shared/issuable/status_box", issuable: @merge_request - .issuable-meta{ class: "#{'gl-display-flex' if updated_mr_header_enabled}" } - - if updated_mr_header_enabled - #js-issuable-header-warnings - %h2.title.gl-my-0.gl-display-inline-block{ data: { qa_selector: 'title_content' } } - = markdown_field(@merge_request, :title) - - else - #js-issuable-header-warnings - = issuable_meta(@merge_request, @project) + .issuable-meta.gl-display-flex + #js-issuable-header-warnings + %h1.title.page-title.gl-font-size-h-display.gl-my-0.gl-display-inline-block{ data: { qa_selector: 'title_content' } } + = markdown_field(@merge_request, :title) - %div - %button.gl-button.btn.btn-default.btn-icon.float-right.gl-display-block.gutter-toggle.issuable-gutter-toggle.js-sidebar-toggle{ type: 'button', class: "#{'gl-md-display-none!' if moved_mr_sidebar_enabled? } #{'gl-sm-display-none!' unless moved_mr_sidebar_enabled?}" } - = sprite_icon('chevron-double-lg-left') + - unless hide_gutter_toggle + %div + - display_class = moved_mr_sidebar_enabled? ? 'gl-md-display-none!' : 'gl-sm-display-none!' + = render Pajamas::ButtonComponent.new(icon: "chevron-double-lg-left", button_options: { class: "btn-icon float-right gl-display-block gutter-toggle issuable-gutter-toggle js-sidebar-toggle #{display_class}" }) - .detail-page-header-actions.js-issuable-actions{ class: "#{'gl-align-self-start is-merge-request' if updated_mr_header_enabled}" } + .detail-page-header-actions.gl-align-self-start.is-merge-request.js-issuable-actions - if can_update_merge_request = link_to _('Edit'), edit_project_merge_request_path(@project, @merge_request), class: "gl-display-none gl-md-display-block btn gl-button btn-default btn-grouped js-issuable-edit", data: { qa_selector: "edit_button" } diff --git a/app/views/projects/merge_requests/conflicts/show.html.haml b/app/views/projects/merge_requests/conflicts/show.html.haml index 5ba42ca7610..a882196ffa2 100644 --- a/app/views/projects/merge_requests/conflicts/show.html.haml +++ b/app/views/projects/merge_requests/conflicts/show.html.haml @@ -1,13 +1,11 @@ - page_title _("Merge Conflicts"), "#{@merge_request.title} (#{@merge_request.to_reference}", _("Merge requests") - add_page_specific_style 'page_bundles/merge_conflicts' -= render "projects/merge_requests/mr_title" += render "projects/merge_requests/mr_title", hide_gutter_toggle: true .merge-request-details.issuable-details = render "projects/merge_requests/mr_box" -= render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, reviewers: @merge_request.reviewers, source_branch: @merge_request.source_branch - #conflicts{ data: { conflicts_path: conflicts_project_merge_request_path(@merge_request.project, @merge_request, format: :json), resolve_conflicts_path: resolve_conflicts_project_merge_request_path(@merge_request.project, @merge_request), source_branch_path: project_tree_path(@merge_request.project, @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 811b45ef8af..8cd0d2f9e32 100644 --- a/app/views/projects/merge_requests/creations/_new_compare.html.haml +++ b/app/views/projects/merge_requests/creations/_new_compare.html.haml @@ -1,4 +1,4 @@ -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('New merge request') = form_for [@project, @merge_request], url: project_new_merge_request_path(@project), method: :get, html: { class: "merge-request-form js-requires-input" } do |f| @@ -6,60 +6,66 @@ = hidden_field_tag(:nav_source, params[:nav_source]) .js-merge-request-new-compare.row{ 'data-source-branch-url': project_new_merge_request_branch_from_path(@source_project), 'data-target-branch-url': project_new_merge_request_branch_to_path(@source_project) } .col-lg-6 - .card.card-new-merge-request - .card-header + .card-new-merge-request + %h2.gl-font-size-h2 Source branch - .card-body.clearfix + .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? }, { toggle_class: "js-compare-dropdown js-source-project" } + = 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_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, qa_selector: "source_branch_dropdown" }, { toggle_class: "js-compare-dropdown js-source-branch monospace" } + = dropdown_toggle f.object.source_branch.presence || _("Select source branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[source_branch]", 'refs-url': refs_project_path(@source_project), selected: f.object.source_branch, 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 - .card-footer - = gl_loading_icon(css_class: 'js-source-loading gl-my-3') + .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 .col-lg-6 - .card.card-new-merge-request - .card-header + .card-new-merge-request + %h2.gl-font-size-h2 Target branch - .card-body.clearfix + .clearfix - projects = target_projects(@project) .merge-request-select.dropdown = 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? }, { toggle_class: "js-compare-dropdown js-target-project" } + = 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_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 }, { toggle_class: "js-compare-dropdown js-target-branch monospace" } + = 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 - .card-footer - = gl_loading_icon(css_class: 'js-target-loading gl-my-3') + .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 - if @merge_request.errors.any? = form_errors(@merge_request) - = f.submit 'Compare branches and continue', class: "gl-button btn btn-confirm mr-compare-btn", data: { qa_selector: "compare_branches_button" } + = f.submit 'Compare branches and continue', class: "gl-button btn btn-confirm mr-compare-btn gl-mt-4", data: { qa_selector: "compare_branches_button" } diff --git a/app/views/projects/merge_requests/creations/_new_submit.html.haml b/app/views/projects/merge_requests/creations/_new_submit.html.haml index ef6e930bf23..ef3174efcc7 100644 --- a/app/views/projects/merge_requests/creations/_new_submit.html.haml +++ b/app/views/projects/merge_requests/creations/_new_submit.html.haml @@ -1,4 +1,4 @@ -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('New merge request') = gitlab_ui_form_for [@project, @merge_request], html: { class: 'merge-request-form common-note-form js-requires-input js-quick-submit' } do |f| = render 'shared/issuable/form', f: f, issuable: @merge_request, commits: @commits, presenter: @mr_presenter @@ -18,11 +18,11 @@ = custom_icon ('illustration_no_commits') - else .merge-request-tabs-holder{ class: ("js-tabs-affix" unless ENV['RAILS_ENV'] == 'test') } - .merge-request-tabs-container + .merge-request-tabs-container.gl-display-flex.gl-justify-content-space-between .scrolling-tabs-container.inner-page-scroll-tabs.is-smaller .fade-left= sprite_icon('chevron-lg-left', size: 12) .fade-right= sprite_icon('chevron-lg-right', size: 12) - %ul.merge-request-tabs.nav.nav-tabs.nav-links.no-top.no-bottom.js-tabs-affix + %ul.merge-request-tabs.nav.nav-tabs.nav-links.no-top.no-bottom.gl-display-flex.gl-flex-nowrap.gl-m-0.gl-p-0.js-tabs-affix %li.commits-tab.new-tab = link_to url_for(safe_params), data: {target: 'div#commits', action: 'new', toggle: 'tabvue'} do Commits diff --git a/app/views/projects/merge_requests/edit.html.haml b/app/views/projects/merge_requests/edit.html.haml index 5fcb5d3f876..77cc69f32ab 100644 --- a/app/views/projects/merge_requests/edit.html.haml +++ b/app/views/projects/merge_requests/edit.html.haml @@ -2,6 +2,6 @@ - breadcrumb_title @merge_request.to_reference - page_title _("Edit"), "#{@merge_request.title} (#{@merge_request.to_reference}", _("Merge requests") -%h3.page-title +%h1.page-title.gl-font-size-h-display Edit merge request #{@merge_request.to_reference} = render 'form' diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml index 13e5451df98..99b84339058 100644 --- a/app/views/projects/merge_requests/show.html.haml +++ b/app/views/projects/merge_requests/show.html.haml @@ -21,8 +21,8 @@ .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') } - .merge-request-tabs-container - %ul.merge-request-tabs.nav-tabs.nav.nav-links + .merge-request-tabs-container.gl-display-flex.gl-justify-content-space-between{ class: "#{'is-merge-request' if Feature.enabled?(:moved_mr_sidebar, @project) && !fluid_layout}" } + %ul.merge-request-tabs.nav-tabs.nav.nav-links.gl-display-flex.gl-flex-nowrap.gl-m-0.gl-p-0{ class: "#{'gl-w-full gl-lg-w-auto!' if Feature.enabled?(:moved_mr_sidebar, @project)}" } = render "projects/merge_requests/tabs/tab", class: "notes-tab", qa_selector: "notes_tab" do = tab_link_for @merge_request, :show, force_link: @commit.present? do = _("Overview") @@ -41,6 +41,12 @@ = tab_link_for @merge_request, :diffs do = _("Changes") = gl_badge_tag @diffs_count, { size: :sm } + - if Feature.enabled?(:moved_mr_sidebar, @project) + .gl-ml-auto.gl-align-items-center.gl-display-none.gl-md-display-flex.js-expand-sidebar{ class: "gl-lg-display-none!" } + = render Pajamas::ButtonComponent.new(size: 'small', + icon: 'angle-double-left', + button_options: { class: 'js-sidebar-toggle' }) do + = _('Expand') .d-flex.flex-wrap.align-items-center.justify-content-lg-end #js-vue-discussion-counter{ data: { blocks_merge: @project.only_allow_merge_if_all_discussions_are_resolved?.to_s } } @@ -57,13 +63,10 @@ = render "projects/merge_requests/widget" = render "projects/merge_requests/awards_block" - if mr_action === "show" - - if Feature.enabled?(:paginated_notes, @project) - - add_page_startup_api_call notes_url - - else - - add_page_startup_api_call discussions_path(@merge_request) + - add_page_startup_api_call Feature.enabled?(:paginated_mr_discussions, @project) ? discussions_path(@merge_request, per_page: 20) : discussions_path(@merge_request) - add_page_startup_api_call widget_project_json_merge_request_path(@project, @merge_request, format: :json) - add_page_startup_api_call cached_widget_project_json_merge_request_path(@project, @merge_request, format: :json) - #js-vue-mr-discussions{ data: { notes_data: notes_data(@merge_request, Feature.enabled?(:paginated_notes, @project)).to_json, + #js-vue-mr-discussions{ data: { notes_data: notes_data(@merge_request).to_json, endpoint_metadata: @endpoint_metadata_url, noteable_data: serialize_issuable(@merge_request, serializer: 'noteable'), noteable_type: 'MergeRequest', diff --git a/app/views/projects/milestones/edit.html.haml b/app/views/projects/milestones/edit.html.haml index 0d040a5cdb3..8d4ea2c3c21 100644 --- a/app/views/projects/milestones/edit.html.haml +++ b/app/views/projects/milestones/edit.html.haml @@ -2,7 +2,7 @@ - add_to_breadcrumbs _('Milestones'), project_milestones_path(@project) - page_title _('Edit'), @milestone.title, _('Milestones') -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('Edit Milestone') %hr diff --git a/app/views/projects/milestones/new.html.haml b/app/views/projects/milestones/new.html.haml index 721506a2201..70ec1b0008a 100644 --- a/app/views/projects/milestones/new.html.haml +++ b/app/views/projects/milestones/new.html.haml @@ -2,7 +2,7 @@ - breadcrumb_title _('New') - page_title _('New Milestone') -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('New Milestone') %hr diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml index 4ec72176202..8ff7fe6da71 100644 --- a/app/views/projects/milestones/show.html.haml +++ b/app/views/projects/milestones/show.html.haml @@ -13,8 +13,8 @@ - if can?(current_user, :read_issue, @project) && @milestone.total_issues_count == 0 = render Pajamas::AlertComponent.new(dismissible: false, - alert_data: { testid: 'no-issues-alert' }, - alert_class: 'gl-mt-3 gl-mb-5') do |c| + alert_options: { class: 'gl-mt-3 gl-mb-5', + data: { testid: 'no-issues-alert' }}) do |c| = c.body do = _('Assign some issues to this milestone.') - else diff --git a/app/views/projects/mirrors/_mirror_repos.html.haml b/app/views/projects/mirrors/_mirror_repos.html.haml index d689b54678e..339042eb703 100644 --- a/app/views/projects/mirrors/_mirror_repos.html.haml +++ b/app/views/projects/mirrors/_mirror_repos.html.haml @@ -6,7 +6,7 @@ %section.settings.project-mirror-settings.no-animate#js-push-remote-settings{ class: mirror_settings_class, data: { qa_selector: 'mirroring_repositories_settings_content' } } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Mirroring repositories') - %button.btn.gl-button.btn-default.js-settings-toggle + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p = _('Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically.') @@ -71,8 +71,10 @@ = gl_badge_tag _('Error'), { variant: :danger }, { data: { toggle: 'tooltip', html: 'true', qa_selector: 'mirror_error_badge' }, title: html_escape(mirror.last_error.try(:strip)) } %td.gl-display-flex - if mirror_settings_enabled - %button.js-delete-mirror.qa-delete-mirror.rspec-delete-mirror.btn.btn-icon.gl-button.btn-danger.gl-mr-3{ type: 'button', data: { mirror_id: mirror.id, toggle: 'tooltip', container: 'body' }, title: _('Remove') }= sprite_icon('remove') .btn-group.mirror-actions-group{ role: 'group' } - if mirror.ssh_key_auth? - = clipboard_button(text: mirror.ssh_public_key, class: 'gl-button btn btn-default', title: _('Copy SSH public key'), qa_selector: 'copy_public_key_button') + = clipboard_button(text: mirror.ssh_public_key, class: 'gl-button btn btn-default btn-icon', title: _('Copy SSH public key'), qa_selector: 'copy_public_key_button') = render 'shared/remote_mirror_update_button', remote_mirror: mirror + = render Pajamas::ButtonComponent.new(variant: :danger, + icon: 'remove', + button_options: { class: 'js-delete-mirror qa-delete-mirror rspec-delete-mirror', title: _('Remove'), data: { mirror_id: mirror.id, toggle: 'tooltip', container: 'body' } }) diff --git a/app/views/projects/mirrors/_ssh_host_keys.html.haml b/app/views/projects/mirrors/_ssh_host_keys.html.haml index 3abab0281a0..e3fe098c807 100644 --- a/app/views/projects/mirrors/_ssh_host_keys.html.haml +++ b/app/views/projects/mirrors/_ssh_host_keys.html.haml @@ -3,7 +3,7 @@ - verified_at = mirror.ssh_known_hosts_verified_at .form-group.js-ssh-host-keys-section{ class: ('collapse' unless mirror.ssh_mirror_url?) } - %button.btn.gl-button.btn-inverted.btn-secondary.inline.js-detect-host-keys.gl-mr-3{ type: 'button', data: { qa_selector: 'detect_host_keys' } } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-detect-host-keys gl-mr-3', data: { qa_selector: 'detect_host_keys' } }) do = gl_loading_icon(inline: true, css_class: 'js-spinner gl-display-none gl-mr-2') = _('Detect host keys') .fingerprint-ssh-info.js-fingerprint-ssh-info.gl-mt-3.gl-mb-3{ class: ('collapse' unless mirror.ssh_mirror_url?) } @@ -23,7 +23,7 @@ #{time_ago_in_words(verified_at)} ago .js-ssh-hosts-advanced.inline - %button.btn.gl-button.btn-default.btn-show-advanced.show-advanced{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'btn-show-advanced show-advanced' }) do %span.label-show = _('Input host keys manually') %span.label-hide diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml index 4e4738ebd25..511adf37b39 100644 --- a/app/views/projects/new.html.haml +++ b/app/views/projects/new.html.haml @@ -16,8 +16,8 @@ = render 'new_project_fields', f: f, project_name_id: "blank-project-name" #create-from-template-pane.tab-pane - .gl-card.gl-my-5 - .gl-card-body + = render Pajamas::CardComponent.new(card_options: { class: 'gl-my-5' }) do |c| + = c.body do %div - contributing_templates_url = 'https://gitlab.com/gitlab-org/project-templates/contributing' - link_start = ''.html_safe % { url: contributing_templates_url } @@ -30,7 +30,7 @@ #import-project-pane.tab-pane.js-toggle-container - if import_sources_enabled? - = render 'import_project_pane' + = render 'import_project_pane', destination_namespace_id: @namespace&.id - else .nothing-here-block %h4= s_('ProjectsNew|No import options available') diff --git a/app/views/projects/no_repo.html.haml b/app/views/projects/no_repo.html.haml index 1331ed24307..a8a30d73000 100644 --- a/app/views/projects/no_repo.html.haml +++ b/app/views/projects/no_repo.html.haml @@ -1,7 +1,7 @@ - page_title _('No repository') - @skip_current_level_breadcrumb = true -= render_if_exists 'shared/user_over_limit_free_plan_alert', source: @project += render_if_exists 'projects/free_user_cap_alert', project: @project %h2.gl-display-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center diff --git a/app/views/projects/notes/_actions.html.haml b/app/views/projects/notes/_actions.html.haml index 31c14aaad50..9a8b83649de 100644 --- a/app/views/projects/notes/_actions.html.haml +++ b/app/views/projects/notes/_actions.html.haml @@ -9,15 +9,14 @@ - if can?(current_user, :award_emoji, note) - if note.emoji_awardable? .note-actions-item - = button_tag title: 'Add reaction', class: "note-action-button note-emoji-button js-add-award js-note-emoji has-tooltip btn gl-button btn-icon btn-default-tertiary btn-transparent", data: { position: 'right', container: 'body' } do - = sprite_icon('slight-smile', css_class: 'link-highlight award-control-icon-neutral gl-button-icon gl-icon gl-text-gray-400') - = sprite_icon('smiley', css_class: 'link-highlight award-control-icon-positive gl-button-icon gl-icon gl-left-3!') - = sprite_icon('smile', css_class: 'link-highlight award-control-icon-super-positive gl-button-icon gl-icon gl-left-3! ') + = button_tag title: 'Add reaction', class: "note-action-button note-emoji-button js-add-award js-note-emoji has-tooltip btn gl-button btn-icon btn-default-tertiary", data: { position: 'right', container: 'body' } do + = sprite_icon('slight-smile', css_class: 'award-control-icon-neutral gl-button-icon gl-icon') + = sprite_icon('smiley', css_class: 'award-control-icon-positive gl-button-icon gl-icon gl-left-3!') + = sprite_icon('smile', css_class: 'award-control-icon-super-positive gl-button-icon gl-icon gl-left-3! ') - if note_editable .note-actions-item.gl-ml-0 - = button_tag title: 'Edit comment', class: 'note-action-button js-note-edit has-tooltip btn gl-button btn-default-tertiary btn-transparent gl-px-2!', data: { container: 'body', qa_selector: 'edit_comment_button' } do - %span.link-highlight - = sprite_icon('pencil', css_class: 'gl-button-icon gl-icon gl-text-gray-400 s16') + = button_tag title: 'Edit comment', class: 'note-action-button js-note-edit has-tooltip btn gl-button btn-default-tertiary btn-icon', data: { container: 'body', qa_selector: 'edit_comment_button' } do + = sprite_icon('pencil', css_class: 'gl-button-icon gl-icon') = render 'projects/notes/more_actions_dropdown', note: note, note_editable: note_editable diff --git a/app/views/projects/notes/_more_actions_dropdown.html.haml b/app/views/projects/notes/_more_actions_dropdown.html.haml index 5385c6a4cc6..5f70e25f802 100644 --- a/app/views/projects/notes/_more_actions_dropdown.html.haml +++ b/app/views/projects/notes/_more_actions_dropdown.html.haml @@ -2,8 +2,8 @@ - if note_editable || !is_current_user %div{ class: "dropdown more-actions note-actions-item gl-ml-0!" } - = button_tag title: 'More actions', class: 'note-action-button more-actions-toggle has-tooltip btn gl-button btn-default-tertiary btn-transparent gl-pl-2! gl-pr-0!', data: { toggle: 'dropdown', container: 'body', qa_selector: 'more_actions_dropdown' } do - = sprite_icon('ellipsis_v', css_class: 'gl-button-icon gl-icon gl-text-gray-400') + = button_tag title: 'More actions', class: 'note-action-button more-actions-toggle has-tooltip btn gl-button btn-default-tertiary btn-icon', data: { toggle: 'dropdown', container: 'body', qa_selector: 'more_actions_dropdown' } do + = sprite_icon('ellipsis_v', css_class: 'gl-button-icon gl-icon') %ul.dropdown-menu.more-actions-dropdown.dropdown-open-left %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) diff --git a/app/views/projects/pages/_list.html.haml b/app/views/projects/pages/_list.html.haml index 04178804de4..0ddf105ef60 100644 --- a/app/views/projects/pages/_list.html.haml +++ b/app/views/projects/pages/_list.html.haml @@ -4,20 +4,21 @@ .card .card-header Domains (#{@domains.size}) - %ul.list-group.list-group-flush.pages-domain-list{ class: ("has-verification-status" if verification_enabled) } + %ul.list-group.list-group-flush - @domains.each do |domain| - %li.pages-domain-list-item.list-group-item.d-flex.justify-content-between - - if verification_enabled - - tooltip, status = domain.unverified? ? [s_('GitLabPages|Unverified'), 'failed'] : [s_('GitLabPages|Verified'), 'success'] - .domain-status.ci-status-icon.has-tooltip{ class: "ci-status-icon-#{status}", title: tooltip } - = sprite_icon("status_#{status}" ) - .domain-name - = external_link(domain.url, domain.url) - - if domain.certificate - %div - = gl_badge_tag(s_('GitLabPages|Certificate: %{subject}') % { subject: domain.pages_domain.subject }) - - if domain.expired? - = gl_badge_tag s_('GitLabPages|Expired'), variant: :danger + %li.list-group-item.gl-display-flex.gl-justify-content-space-between.gl-align-items-center + .gl-display-flex.gl-align-items-center + - if verification_enabled + - tooltip, status = domain.unverified? ? [s_('GitLabPages|Unverified'), 'failed'] : [s_('GitLabPages|Verified'), 'success'] + .domain-status.ci-status-icon.has-tooltip{ class: "gl-mr-5 ci-status-icon-#{status}", title: tooltip } + = sprite_icon("status_#{status}" ) + .domain-name + = external_link(domain.url, domain.url) + - if domain.certificate + %div + = gl_badge_tag(s_('GitLabPages|Certificate: %{subject}') % { subject: domain.pages_domain.subject }) + - if domain.expired? + = gl_badge_tag s_('GitLabPages|Expired'), variant: :danger %div = link_to s_('GitLabPages|Edit'), project_pages_domain_path(@project, domain), class: "btn gl-button btn-sm btn-grouped btn-confirm btn-inverted" = link_to s_('GitLabPages|Remove'), project_pages_domain_path(@project, domain), data: { confirm: s_('GitLabPages|Are you sure?'), 'confirm-btn-variant': 'danger'}, "aria-label": s_("GitLabPages|Remove domain"), method: :delete, class: "btn gl-button btn-danger btn-sm btn-grouped" diff --git a/app/views/projects/pages/show.html.haml b/app/views/projects/pages/show.html.haml index 64760d8972f..3fea9f9ff1b 100644 --- a/app/views/projects/pages/show.html.haml +++ b/app/views/projects/pages/show.html.haml @@ -1,7 +1,7 @@ - page_title _('Pages') - if @project.pages_enabled? - %h3.page-title.with-button + %h1.page-title.gl-font-size-h-display.with-button = s_('GitLabPages|Pages') - if can?(current_user, :update_pages, @project) && (Gitlab.config.pages.external_http || Gitlab.config.pages.external_https) diff --git a/app/views/projects/pages_domains/_dns.html.haml b/app/views/projects/pages_domains/_dns.html.haml index 6943469aaac..2c6b808eb1c 100644 --- a/app/views/projects/pages_domains/_dns.html.haml +++ b/app/views/projects/pages_domains/_dns.html.haml @@ -19,10 +19,10 @@ .col-sm-2 = _("Verification status") .col-sm-10 - .status-badge + .gl-mb-3 - text, status = domain_presenter.unverified? ? [_('Unverified'), :danger] : [_('Verified'), :success] = gl_badge_tag text, variant: status - = link_to sprite_icon("redo"), verify_project_pages_domain_path(@project, domain_presenter), method: :post, class: "gl-ml-2 gl-button btn btn-default has-tooltip", title: _("Retry verification") + = link_to sprite_icon("redo"), verify_project_pages_domain_path(@project, domain_presenter), method: :post, class: "gl-ml-2 gl-button btn btn-sm btn-default has-tooltip", title: _("Retry verification") .input-group = text_field_tag :domain_verification, verification_record, class: "monospace js-select-on-focus form-control", readonly: true .input-group-append diff --git a/app/views/projects/pages_domains/new.html.haml b/app/views/projects/pages_domains/new.html.haml index 0b794226c7f..6de8117df6b 100644 --- a/app/views/projects/pages_domains/new.html.haml +++ b/app/views/projects/pages_domains/new.html.haml @@ -1,6 +1,6 @@ - add_to_breadcrumbs _("Pages"), project_pages_path(@project) - page_title _('New Pages Domain') -%h3.page-title +%h1.page-title.gl-font-size-h-display = _("New Pages Domain") = render 'projects/pages_domains/helper_text' %div diff --git a/app/views/projects/pages_domains/show.html.haml b/app/views/projects/pages_domains/show.html.haml index d16821c3940..0edf75c9abc 100644 --- a/app/views/projects/pages_domains/show.html.haml +++ b/app/views/projects/pages_domains/show.html.haml @@ -6,11 +6,12 @@ - if verification_enabled && domain_presenter.unverified? = content_for :flash_message do - .gl-alert.gl-alert-warning - .container-fluid.container-limited - = _("This domain is not verified. You will need to verify ownership before access is enabled.") + = render Pajamas::AlertComponent.new(variant: :warning, dismissible: false) do |c| + = c.body do + .container-fluid.container-limited + = _("This domain is not verified. You will need to verify ownership before access is enabled.") -%h3.page-title +%h1.page-title.gl-font-size-h-display = _('Pages Domain') = render 'projects/pages_domains/helper_text' %div diff --git a/app/views/projects/pipeline_schedules/_form.html.haml b/app/views/projects/pipeline_schedules/_form.html.haml index 5ff0e2ccac3..d29030f992f 100644 --- a/app/views/projects/pipeline_schedules/_form.html.haml +++ b/app/views/projects/pipeline_schedules/_form.html.haml @@ -1,5 +1,5 @@ = gitlab_ui_form_for [@project, @schedule], as: :schedule, html: { id: "new-pipeline-schedule-form", class: "js-pipeline-schedule-form pipeline-schedule-form" } do |f| - = form_errors(@schedule) + = form_errors(@schedule, pajamas_alert: true) .form-group.row .col-md-9 = f.label :description, _('Description'), class: 'label-bold' @@ -28,7 +28,7 @@ = render 'ci/variables/variable_row', form_field: 'schedule', variable: variable = render 'ci/variables/variable_row', form_field: 'schedule' - if @schedule.variables.size > 0 - %button.gl-button.btn.btn-confirm-secondary.gl-mt-3.js-secret-value-reveal-button{ type: 'button', data: { secret_reveal_status: "#{@schedule.variables.size == 0}" } } + = render Pajamas::ButtonComponent.new(category: :secondary, variant: :confirm, button_options: { class: 'gl-mt-3 js-secret-value-reveal-button', data: { secret_reveal_status: "#{@schedule.variables.size == 0}" }}) do - if @schedule.variables.size == 0 = n_('Hide value', 'Hide values', @schedule.variables.size) - else @@ -38,6 +38,6 @@ = f.label :active, s_('PipelineSchedules|Activated'), class: 'label-bold' %div = f.gitlab_ui_checkbox_component :active, _('Active'), checkbox_options: { value: @schedule.active, required: false } - .footer-block.row-content-block + .footer-block = f.submit _('Save pipeline schedule'), class: 'btn gl-button btn-confirm' = link_to _('Cancel'), pipeline_schedules_path(@project), class: 'btn gl-button btn-default btn-cancel' diff --git a/app/views/projects/pipeline_schedules/edit.html.haml b/app/views/projects/pipeline_schedules/edit.html.haml index 51f0c58330d..642b458eea6 100644 --- a/app/views/projects/pipeline_schedules/edit.html.haml +++ b/app/views/projects/pipeline_schedules/edit.html.haml @@ -3,7 +3,7 @@ - page_title _("Edit"), @schedule.description, _("Pipeline Schedule") - add_page_specific_style 'page_bundles/pipeline_schedules' -%h3.page-title +%h1.page-title.gl-font-size-h-display = _("Edit Pipeline Schedule") %hr diff --git a/app/views/projects/pipeline_schedules/index.html.haml b/app/views/projects/pipeline_schedules/index.html.haml index 10a49fbd779..a56e8f7f5c7 100644 --- a/app/views/projects/pipeline_schedules/index.html.haml +++ b/app/views/projects/pipeline_schedules/index.html.haml @@ -1,5 +1,3 @@ -= render_if_exists 'shared/minute_limit_banner', namespace: @project - - breadcrumb_title _("Schedules") - page_title _("Pipeline Schedules") - add_page_specific_style 'page_bundles/pipeline_schedules' diff --git a/app/views/projects/pipeline_schedules/new.html.haml b/app/views/projects/pipeline_schedules/new.html.haml index 1b50090e445..3b4acf5b8c5 100644 --- a/app/views/projects/pipeline_schedules/new.html.haml +++ b/app/views/projects/pipeline_schedules/new.html.haml @@ -5,8 +5,7 @@ - add_to_breadcrumbs("Pipelines", project_pipelines_path(@project)) -%h3.page-title +%h1.page-title.gl-font-size-h-display = _("Schedule a new pipeline") -%hr = render "form" diff --git a/app/views/projects/pipelines/_with_tabs.html.haml b/app/views/projects/pipelines/_with_tabs.html.haml index 6b26c9f3f00..a8ad53db8c2 100644 --- a/app/views/projects/pipelines/_with_tabs.html.haml +++ b/app/views/projects/pipelines/_with_tabs.html.haml @@ -33,44 +33,7 @@ - if @pipeline.failed_builds.present? #js-tab-failures.tab-pane - - if Feature.enabled?(:failed_jobs_tab_vue, @project) - #js-pipeline-failed-jobs-vue{ data: { full_path: @project.full_path, pipeline_iid: @pipeline.iid, failed_jobs_summary_data: prepare_failed_jobs_summary_data(@pipeline.failed_builds) } } - - else - .build-failures.build-page - %table.table.gl-table.responsive-table.ci-table.responsive-table-sm-rounded - %thead - %th - %th= _('Name') - %th= _('Stage') - %th= _('Failure') - %th - - %tbody - - @pipeline.failed_builds.each_with_index do |build, index| - - job = build.present(current_user: current_user) - %tr.build-state.responsive-table-border-start - %td.responsive-table-cell.ci-status-icon-failed{ data: { column: _('Status')} } - .d-none.d-md-block.build-icon - = sprite_icon("status_#{build.status}") - .d-md-none.build-badge - = render "ci/status/badge", link: false, status: job.detailed_status(current_user) - %td.responsive-table-cell.build-name{ data: { column: _('Name')} } - = link_to build.name, pipeline_job_url(pipeline, build) - %td.responsive-table-cell.build-stage{ data: { column: _('Stage')} } - = build.stage.titleize - %td.responsive-table-cell.build-failure{ data: { column: _('Failure')} } - = build.present.callout_failure_message - %td.responsive-table-cell.build-actions - - if can?(current_user, :update_build, job) && job.retryable? - = link_to retry_project_job_path(build.project, build, return_to: request.original_url), method: :post, title: _('Retry'), class: 'gl-button btn btn-default btn-icon' do - = sprite_icon('repeat', css_class: 'gl-icon') - - if can?(current_user, :read_build, job) - %tr.build-log-row.responsive-table-border-end - %td - %td.responsive-table-cell.build-log-container{ colspan: 4 } - %pre.build-log.build-log-rounded - %code.bash.js-build-output - = build_summary(build) + #js-pipeline-failed-jobs-vue{ data: { full_path: @project.full_path, pipeline_iid: @pipeline.iid, failed_jobs_summary_data: prepare_failed_jobs_summary_data(@pipeline.failed_builds) } } #js-tab-dag.tab-pane #js-pipeline-dag-vue{ data: { pipeline_project_path: @project.full_path, pipeline_iid: @pipeline.iid, empty_svg_path: image_path('illustrations/empty-state/empty-dag-md.svg'), about_dag_doc_path: help_page_path('ci/directed_acyclic_graph/index.md'), dag_doc_path: help_page_path('ci/yaml/index.md', anchor: 'needs')} } @@ -80,5 +43,6 @@ suite_endpoint: project_pipeline_test_path(@project, @pipeline, suite_name: 'suite', format: :json), blob_path: project_blob_path(@project, @pipeline.sha), has_test_report: @pipeline.has_reports?(Ci::JobArtifact.test_reports).to_s, - empty_state_image_path: image_path('illustrations/empty-state/empty-test-cases-lg.svg') } } + empty_state_image_path: image_path('illustrations/empty-state/empty-test-cases-lg.svg'), + artifacts_expired_image_path: image_path('illustrations/pipeline.svg') } } = render_if_exists "projects/pipelines/tabs_content", pipeline: @pipeline, project: @project diff --git a/app/views/projects/pipelines/index.html.haml b/app/views/projects/pipelines/index.html.haml index 817cc6d6e6c..f4b242ffc40 100644 --- a/app/views/projects/pipelines/index.html.haml +++ b/app/views/projects/pipelines/index.html.haml @@ -1,5 +1,3 @@ -= render_if_exists 'shared/minute_limit_banner', namespace: @project - - page_title _('Pipelines') - add_page_specific_style 'page_bundles/pipelines' - add_page_specific_style 'page_bundles/ci_status' diff --git a/app/views/projects/pipelines/new.html.haml b/app/views/projects/pipelines/new.html.haml index e92f14fcc63..a4144f8ab0d 100644 --- a/app/views/projects/pipelines/new.html.haml +++ b/app/views/projects/pipelines/new.html.haml @@ -1,7 +1,7 @@ - breadcrumb_title _('Pipelines') - page_title s_('Pipeline|Run pipeline') -%h3.page-title +%h1.page-title.gl-font-size-h-display = s_('Pipeline|Run pipeline') %hr diff --git a/app/views/projects/pipelines/show.html.haml b/app/views/projects/pipelines/show.html.haml index 30b224a60da..10ff9c31c3e 100644 --- a/app/views/projects/pipelines/show.html.haml +++ b/app/views/projects/pipelines/show.html.haml @@ -26,7 +26,6 @@ - lint_link_start = ''.html_safe % { url: lint_link_url } = s_('You can also test your %{gitlab_ci_yml} in %{lint_link_start}CI Lint%{lint_link_end}').html_safe % { gitlab_ci_yml: '.gitlab-ci.yml', lint_link_start: lint_link_start, lint_link_end: ''.html_safe } - #js-pipeline-notification{ data: { deprecated_keywords_doc_path: help_page_path('ci/yaml/index.md', anchor: 'deprecated-keywords'), full_path: @project.full_path, pipeline_iid: @pipeline.iid } } - if Feature.enabled?(:pipeline_tabs_vue, @project) #js-pipeline-tabs{ data: js_pipeline_tabs_data(@project, @pipeline) } - else diff --git a/app/views/projects/project_members/index.html.haml b/app/views/projects/project_members/index.html.haml index 298c2074062..8c616b89658 100644 --- a/app/views/projects/project_members/index.html.haml +++ b/app/views/projects/project_members/index.html.haml @@ -1,7 +1,8 @@ - add_page_specific_style 'page_bundles/members' - page_title _("Members") -= render_if_exists 'shared/user_over_limit_free_plan_alert', source: @project += render_if_exists 'projects/free_user_cap_alert', project: @project += render_if_exists 'shared/minute_limit_banner', namespace: @project .row.gl-mt-3 .col-lg-12 @@ -12,11 +13,8 @@ %h4 = _("Project members") .gl-justify-content-bottom.gl-display-flex.align-items-center - - if can?(current_user, :admin_project_member, @project) - %p= share_project_description(@project) - - else - %p - = html_escape(_("Members can be added by project %{i_open}Maintainers%{i_close} or %{i_open}Owners%{i_close}")) % { i_open: ''.html_safe, i_close: ''.html_safe } + %p + = project_member_header_subtext(@project) .col-md-12.col-lg-6 .gl-display-flex.gl-flex-wrap.gl-justify-content-end - if can_admin_project_member?(@project) @@ -36,7 +34,8 @@ %h4 = _("Project members") - if can?(current_user, :admin_project_member, @project) - %p= share_project_description(@project) + %p + = project_member_header_subtext(@project) - else %p = html_escape(_("Members can be added by project %{i_open}Maintainers%{i_close} or %{i_open}Owners%{i_close}")) % { i_open: ''.html_safe, i_close: ''.html_safe } diff --git a/app/views/projects/prometheus/metrics/edit.html.haml b/app/views/projects/prometheus/metrics/edit.html.haml index 146bf6b6853..212d625d292 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_integration_path(@project, ::Integrations::Prometheus) +- add_to_breadcrumbs "Prometheus", edit_project_settings_integration_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 ad8463d1804..c04e5f385d9 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_integration_path(@project, ::Integrations::Prometheus) +- add_to_breadcrumbs "Prometheus", edit_project_settings_integration_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/_index.html.haml b/app/views/projects/protected_branches/shared/_index.html.haml index 2e9a9357fb0..1d60791eae2 100644 --- a/app/views/projects/protected_branches/shared/_index.html.haml +++ b/app/views/projects/protected_branches/shared/_index.html.haml @@ -4,8 +4,8 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = s_("ProtectedBranch|Protected branches") - %button.btn.gl-button.btn-default.js-settings-toggle.qa-expand-protected-branches{ type: 'button' } - = expanded ? 'Collapse' : 'Expand' + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle qa-expand-protected-branches' }) do + = expanded ? _('Collapse') : _('Expand') %p = 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") diff --git a/app/views/projects/protected_tags/shared/_index.html.haml b/app/views/projects/protected_tags/shared/_index.html.haml index 8f5ce798dc7..11e09d843e0 100644 --- a/app/views/projects/protected_tags/shared/_index.html.haml +++ b/app/views/projects/protected_tags/shared/_index.html.haml @@ -4,8 +4,8 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = s_("ProtectedTag|Protected tags") - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } - = expanded ? 'Collapse' : 'Expand' + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do + = expanded ? _('Collapse') : _('Expand') %p = s_("ProtectedTag|Limit access to creating and updating tags.") = link_to s_("ProtectedTag|What are protected tags?"), help_page_path("user/project/protected_tags") diff --git a/app/views/projects/readme_templates/default.md.tt b/app/views/projects/readme_templates/default.md.tt index d5fef29b290..cd0b2db1d31 100644 --- a/app/views/projects/readme_templates/default.md.tt +++ b/app/views/projects/readme_templates/default.md.tt @@ -47,7 +47,7 @@ Use the built-in continuous integration in GitLab. # Editing this README -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. ## Suggestions for a good README Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. diff --git a/app/views/projects/releases/edit.html.haml b/app/views/projects/releases/edit.html.haml index 88ca64f2af0..1d53726e25c 100644 --- a/app/views/projects/releases/edit.html.haml +++ b/app/views/projects/releases/edit.html.haml @@ -1,3 +1,5 @@ - page_title _('Edit Release') +- add_to_breadcrumbs _('Releases'), project_releases_path(@project) +- add_to_breadcrumbs @release.name, project_release_path(@project, @release) #js-edit-release-page{ data: data_for_edit_release_page } diff --git a/app/views/projects/runners/edit.html.haml b/app/views/projects/runners/edit.html.haml index e87c52ff1a8..ce56b160187 100644 --- a/app/views/projects/runners/edit.html.haml +++ b/app/views/projects/runners/edit.html.haml @@ -3,7 +3,7 @@ - add_to_breadcrumbs _('CI/CD Settings'), project_settings_ci_cd_path(@project) - add_to_breadcrumbs "#{@runner.short_sha}", project_runner_path(@project, @runner) -%h2.page-title +%h1.page-title.gl-font-size-h-display = s_('Runners|Runner #%{runner_id}' % { runner_id: @runner.id }) = render 'shared/runners/runner_type_badge', runner: @runner diff --git a/app/views/projects/services/_form.html.haml b/app/views/projects/services/_form.html.haml deleted file mode 100644 index 9d74f99bb19..00000000000 --- a/app/views/projects/services/_form.html.haml +++ /dev/null @@ -1,22 +0,0 @@ -- if lookup_context.template_exists?('top', "shared/integrations/#{integration.to_param}", true) - = render "shared/integrations/#{integration.to_param}/top", integration: integration - -- if integration.activate_disabled_reason.present? && integration.activate_disabled_reason[:trackers].any? - -# When using integration.activate_disabled_reason[:trackers], it's potentially insecure to use the raw records - -# when passed directly to the frontend. Only use specific fields that are needed for render. - -# For example, we can get the link to each tracker with scoped_edit_integration_path(tracker, tracker.project) - = render Pajamas::AlertComponent.new(title: s_('ExternalIssueIntegration|Another issue tracker is already in use'), - variant: :warning, - dismissible: false) do |c| - = c.body do - = s_('ExternalIssueIntegration|Only one issue tracker integration can be active at a time. Please disable the active tracker first and try again.') - -%h2.gl-mb-4 - = integration.title - - if integration.operating? - = sprite_icon('check', css_class: 'gl-text-green-500') - -= render 'shared/integration_settings', integration: integration -- if lookup_context.template_exists?('show', "shared/integrations/#{integration.to_param}", true) - %hr - = render "shared/integrations/#{integration.to_param}/show", integration: integration diff --git a/app/views/projects/services/edit.html.haml b/app/views/projects/services/edit.html.haml deleted file mode 100644 index a250daafdbb..00000000000 --- a/app/views/projects/services/edit.html.haml +++ /dev/null @@ -1,9 +0,0 @@ -- breadcrumb_title @integration.title -- add_to_breadcrumbs _('Integration Settings'), project_settings_integrations_path(@project) -- page_title @integration.title, _('Integrations') -- @content_class = 'limit-container-width' unless fluid_layout - -= render 'form', integration: @integration - -- if @web_hook_logs - = render partial: 'projects/hook_logs/index', locals: { hook: @integration.service_hook, hook_logs: @web_hook_logs, project: @project } diff --git a/app/views/projects/settings/_archive.html.haml b/app/views/projects/settings/_archive.html.haml index 1b0294bc967..8a080241513 100644 --- a/app/views/projects/settings/_archive.html.haml +++ b/app/views/projects/settings/_archive.html.haml @@ -8,14 +8,14 @@ = _('Archive project') - if @project.archived? - link_start = ''.html_safe % { url: help_page_path('user/project/settings/index', anchor: 'unarchiving-a-project') } - %p= _("Unarchiving the project will restore its members' ability to make changes to it. The repository can be committed to, and issues, comments, and other entities can be created. %{strong_start}Once active, this project shows up in the search and on the dashboard.%{strong_end} %{link_start}Learn more.%{link_end}").html_safe % { strong_start: ''.html_safe, strong_end: ''.html_safe, link_start: link_start, link_end: ''.html_safe } + %p= _("Unarchiving the project restores its members' ability to make commits, and create issues, comments, and other entities. %{strong_start}After you unarchive the project, it displays in the search and on the dashboard.%{strong_end} %{link_start}Learn more.%{link_end}").html_safe % { strong_start: ''.html_safe, strong_end: ''.html_safe, link_start: link_start, link_end: ''.html_safe } = link_to _('Unarchive project'), unarchive_project_path(@project), aria: { label: _('Unarchive project') }, data: { confirm: _("Are you sure that you want to unarchive this project?"), qa_selector: 'unarchive_project_link' }, method: :post, class: "gl-button btn btn-confirm" - else - link_start = ''.html_safe % { url: help_page_path('user/project/settings/index', anchor: 'archiving-a-project') } - %p= _("Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. %{strong_start}The repository cannot be committed to, and no issues, comments, or other entities can be created.%{strong_end} %{link_start}Learn more.%{link_end}").html_safe % { strong_start: ''.html_safe, strong_end: ''.html_safe, link_start: link_start, link_end: ''.html_safe } + %p= _("Archiving the project makes it entirely read-only. It is hidden from the dashboard and doesn't display in searches. %{strong_start}The repository cannot be committed to, and no issues, comments, or other entities can be created.%{strong_end} %{link_start}Learn more.%{link_end}").html_safe % { strong_start: ''.html_safe, strong_end: ''.html_safe, link_start: link_start, link_end: ''.html_safe } = link_to _('Archive project'), archive_project_path(@project), aria: { label: _('Archive project') }, data: { confirm: _("Are you sure that you want to archive this project?"), qa_selector: 'archive_project_link', 'confirm-btn-variant': 'confirm' }, diff --git a/app/views/projects/settings/access_tokens/index.html.haml b/app/views/projects/settings/access_tokens/index.html.haml index e4b027fcc44..359e34d8918 100644 --- a/app/views/projects/settings/access_tokens/index.html.haml +++ b/app/views/projects/settings/access_tokens/index.html.haml @@ -36,7 +36,7 @@ resource: @project, token: @resource_access_token, scopes: @scopes, - access_levels: ProjectMember.access_level_roles, + access_levels: ProjectMember.permissible_access_level_roles(current_user, @project), default_access_level: Gitlab::Access::MAINTAINER, prefix: :resource_access_token, help_path: help_page_path('user/project/settings/project_access_tokens', anchor: 'scopes-for-a-project-access-token') diff --git a/app/views/projects/settings/branch_rules/index.html.haml b/app/views/projects/settings/branch_rules/index.html.haml new file mode 100644 index 00000000000..384d504e51f --- /dev/null +++ b/app/views/projects/settings/branch_rules/index.html.haml @@ -0,0 +1,6 @@ +- add_to_breadcrumbs _('Repository Settings'), project_settings_repository_path(@project) +- page_title _('Branch rules') + +%h3= _('Branch rules') + +#js-branch-rules{ data: { project_path: @project.full_path } } 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 7783e83b88f..96564e44cf2 100644 --- a/app/views/projects/settings/ci_cd/_autodevops_form.html.haml +++ b/app/views/projects/settings/ci_cd/_autodevops_form.html.haml @@ -9,6 +9,10 @@ - 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 } +- help_link_continouos = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/stages.md', anchor: 'auto-deploy'), target: '_blank', rel: 'noopener noreferrer' +- help_link_timed = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/customize.md', anchor: 'timed-incremental-rollout-to-production'), target: '_blank', rel: 'noopener noreferrer' +- help_link_incremental = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/customize.md', anchor: 'incremental-rollout-to-production'), target: '_blank', rel: 'noopener noreferrer' + .row .col-lg-12 = gitlab_ui_form_for @project, url: project_settings_ci_cd_path(@project, anchor: 'autodevops-settings') do |f| @@ -33,22 +37,8 @@ = s_('CICD|Add a %{base_domain_link_start}base domain%{link_end} to your %{kubernetes_cluster_link_start}Kubernetes cluster%{link_end} for your deployment strategy to work.').html_safe % { base_domain_link_start: base_domain_link_start, kubernetes_cluster_link_start: kubernetes_cluster_link_start, link_end: link_end } %label.gl-mt-3 %strong= s_('CICD|Deployment strategy') - .form-check - = form.radio_button :deploy_strategy, 'continuous', class: 'form-check-input' - = form.label :deploy_strategy_continuous, class: 'form-check-label' do - = s_('CICD|Continuous deployment to production') - = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/stages.md', anchor: 'auto-deploy'), target: '_blank', rel: 'noopener noreferrer' - - .form-check - = form.radio_button :deploy_strategy, 'timed_incremental', class: 'form-check-input' - = form.label :deploy_strategy_timed_incremental, class: 'form-check-label' do - = s_('CICD|Continuous deployment to production using timed incremental rollout') - = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/customize.md', anchor: 'timed-incremental-rollout-to-production'), target: '_blank', rel: 'noopener noreferrer' - - .form-check - = form.radio_button :deploy_strategy, 'manual', class: 'form-check-input' - = form.label :deploy_strategy_manual, class: 'form-check-label' do - = s_('CICD|Automatic deployment to staging, manual deployment to production') - = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/customize.md', anchor: 'incremental-rollout-to-production'), target: '_blank', rel: 'noopener noreferrer' + = form.gitlab_ui_radio_component :deploy_strategy, 'continuous', (s_('CICD|Continuous deployment to production') + ' ' + help_link_continouos).html_safe + = form.gitlab_ui_radio_component :deploy_strategy, 'timed_incremental', (s_('CICD|Continuous deployment to production using timed incremental rollout') + ' ' + help_link_timed).html_safe + = form.gitlab_ui_radio_component :deploy_strategy, 'manual', (s_('CICD|Automatic deployment to staging, manual deployment to production') + ' ' + help_link_incremental).html_safe = f.submit _('Save changes'), class: "btn gl-button btn-confirm gl-mt-5", data: { qa_selector: 'save_changes_button' } diff --git a/app/views/projects/settings/ci_cd/_form.html.haml b/app/views/projects/settings/ci_cd/_form.html.haml index 508e63f77d8..9419dacc16f 100644 --- a/app/views/projects/settings/ci_cd/_form.html.haml +++ b/app/views/projects/settings/ci_cd/_form.html.haml @@ -39,25 +39,19 @@ %hr .form-group - %h5.gl-mt-0 + %h5.gl-mt-0.gl-mb-3 = _("Git strategy") - %p + .gl-mb-3 = _("Choose which Git strategy to use when fetching the project.") = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'choose-the-default-git-strategy'), target: '_blank', rel: 'noopener noreferrer' - .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 - %strong git clone - %br - %span - = _("For each job, clone the repository.") - .form-check - = f.radio_button :build_allow_git_fetch, 'true', { class: 'form-check-input' } - = f.label :build_allow_git_fetch_true, class: 'form-check-label' do - %strong git fetch - %br - %span - = html_escape(_("For each job, re-use the project workspace. If the workspace doesn't exist, use %{code_open}git clone%{code_close}.")) % { code_open: ''.html_safe, code_close: ''.html_safe } + = f.gitlab_ui_radio_component :build_allow_git_fetch, + false, + "git clone", + help_text: _("For each job, clone the repository.") + = f.gitlab_ui_radio_component :build_allow_git_fetch, + true, + "git fetch", + help_text: html_escape(_("For each job, re-use the project workspace. If the workspace doesn't exist, use %{code_open}git clone%{code_close}.")) % { code_open: ''.html_safe, code_close: ''.html_safe } .form-group = f.fields_for :ci_cd_settings_attributes, @project.ci_cd_settings do |form| diff --git a/app/views/projects/settings/ci_cd/show.html.haml b/app/views/projects/settings/ci_cd/show.html.haml index 87ca13a7bd6..5da3d2b891c 100644 --- a/app/views/projects/settings/ci_cd/show.html.haml +++ b/app/views/projects/settings/ci_cd/show.html.haml @@ -1,5 +1,3 @@ -= render_if_exists 'shared/minute_limit_banner', namespace: @project - - @content_class = "limit-container-width" unless fluid_layout - page_title _("CI/CD Settings") - page_title _("CI/CD") @@ -11,7 +9,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _("General pipelines") - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p = _("Customize your pipeline configuration.") @@ -22,7 +20,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = s_('CICD|Auto DevOps') - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p - auto_devops_url = help_page_path('topics/autodevops/index') @@ -39,7 +37,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _("Runners") - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p = _("Runners are processes that pick up and execute CI/CD jobs for GitLab.") @@ -52,7 +50,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _("Artifacts") - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p = _("A job artifact is an archive of files and directories saved by a job when it finishes.") @@ -69,7 +67,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _("Pipeline triggers") - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = 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.") @@ -84,7 +82,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _("Deploy freezes") - %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = expanded ? _('Collapse') : _('Expand') %p - freeze_period_docs = help_page_path('user/project/releases/index', anchor: 'prevent-unintentional-releases-by-setting-a-deploy-freeze') @@ -102,7 +100,7 @@ .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' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = 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.") diff --git a/app/views/projects/settings/integrations/_form.html.haml b/app/views/projects/settings/integrations/_form.html.haml new file mode 100644 index 00000000000..9d74f99bb19 --- /dev/null +++ b/app/views/projects/settings/integrations/_form.html.haml @@ -0,0 +1,22 @@ +- if lookup_context.template_exists?('top', "shared/integrations/#{integration.to_param}", true) + = render "shared/integrations/#{integration.to_param}/top", integration: integration + +- if integration.activate_disabled_reason.present? && integration.activate_disabled_reason[:trackers].any? + -# When using integration.activate_disabled_reason[:trackers], it's potentially insecure to use the raw records + -# when passed directly to the frontend. Only use specific fields that are needed for render. + -# For example, we can get the link to each tracker with scoped_edit_integration_path(tracker, tracker.project) + = render Pajamas::AlertComponent.new(title: s_('ExternalIssueIntegration|Another issue tracker is already in use'), + variant: :warning, + dismissible: false) do |c| + = c.body do + = s_('ExternalIssueIntegration|Only one issue tracker integration can be active at a time. Please disable the active tracker first and try again.') + +%h2.gl-mb-4 + = integration.title + - if integration.operating? + = sprite_icon('check', css_class: 'gl-text-green-500') + += render 'shared/integration_settings', integration: integration +- if lookup_context.template_exists?('show', "shared/integrations/#{integration.to_param}", true) + %hr + = render "shared/integrations/#{integration.to_param}/show", integration: integration diff --git a/app/views/projects/settings/integrations/edit.html.haml b/app/views/projects/settings/integrations/edit.html.haml new file mode 100644 index 00000000000..a250daafdbb --- /dev/null +++ b/app/views/projects/settings/integrations/edit.html.haml @@ -0,0 +1,9 @@ +- breadcrumb_title @integration.title +- add_to_breadcrumbs _('Integration Settings'), project_settings_integrations_path(@project) +- page_title @integration.title, _('Integrations') +- @content_class = 'limit-container-width' unless fluid_layout + += render 'form', integration: @integration + +- if @web_hook_logs + = render partial: 'projects/hook_logs/index', locals: { hook: @integration.service_hook, hook_logs: @web_hook_logs, project: @project } diff --git a/app/views/projects/settings/integrations/index.html.haml b/app/views/projects/settings/integrations/index.html.haml new file mode 100644 index 00000000000..84635941436 --- /dev/null +++ b/app/views/projects/settings/integrations/index.html.haml @@ -0,0 +1,9 @@ +- @content_class = "limit-container-width" unless fluid_layout +- breadcrumb_title _('Integration Settings') +- page_title _('Integrations') + +%h3= _('Integrations') +- integrations_link_start = ''.html_safe % { url: help_page_url('user/project/integrations/overview') } +- webhooks_link_start = ''.html_safe % { url: project_hooks_path(@project) } +%p= _("%{integrations_link_start}Integrations%{link_end} enable you to make third-party applications part of your GitLab workflow. If the available integrations don't meet your needs, consider using a %{webhooks_link_start}webhook%{link_end}.").html_safe % { integrations_link_start: integrations_link_start, webhooks_link_start: webhooks_link_start, link_end: ''.html_safe } += render 'shared/integrations/index', integrations: @integrations diff --git a/app/views/projects/settings/integrations/show.html.haml b/app/views/projects/settings/integrations/show.html.haml deleted file mode 100644 index 84635941436..00000000000 --- a/app/views/projects/settings/integrations/show.html.haml +++ /dev/null @@ -1,9 +0,0 @@ -- @content_class = "limit-container-width" unless fluid_layout -- breadcrumb_title _('Integration Settings') -- page_title _('Integrations') - -%h3= _('Integrations') -- integrations_link_start = ''.html_safe % { url: help_page_url('user/project/integrations/overview') } -- webhooks_link_start = ''.html_safe % { url: project_hooks_path(@project) } -%p= _("%{integrations_link_start}Integrations%{link_end} enable you to make third-party applications part of your GitLab workflow. If the available integrations don't meet your needs, consider using a %{webhooks_link_start}webhook%{link_end}.").html_safe % { integrations_link_start: integrations_link_start, webhooks_link_start: webhooks_link_start, link_end: ''.html_safe } -= render 'shared/integrations/index', integrations: @integrations diff --git a/app/views/projects/settings/operations/_alert_management.html.haml b/app/views/projects/settings/operations/_alert_management.html.haml index 34255af9cc6..d80f1e4597c 100644 --- a/app/views/projects/settings/operations/_alert_management.html.haml +++ b/app/views/projects/settings/operations/_alert_management.html.haml @@ -7,7 +7,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _('Alerts') - %button.gl-button.btn.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = _('Expand') %p = _('Display alerts from all configured monitoring tools.') diff --git a/app/views/projects/settings/operations/_error_tracking.html.haml b/app/views/projects/settings/operations/_error_tracking.html.haml index 23b1ec4dea3..5d89790ef9f 100644 --- a/app/views/projects/settings/operations/_error_tracking.html.haml +++ b/app/views/projects/settings/operations/_error_tracking.html.haml @@ -6,7 +6,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _('Error tracking') - %button.gl-button.btn.btn-default.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = _('Expand') %p = _('Link Sentry to GitLab to discover and view the errors your application generates.') diff --git a/app/views/projects/settings/operations/_tracing.html.haml b/app/views/projects/settings/operations/_tracing.html.haml index 343fd22c051..3c8ebe3fb20 100644 --- a/app/views/projects/settings/operations/_tracing.html.haml +++ b/app/views/projects/settings/operations/_tracing.html.haml @@ -4,7 +4,7 @@ .settings-header{ :class => 'border-top' } %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _('Tracing') - %button.btn.btn-default.gl-button.js-settings-toggle{ type: 'button' } + = render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do = _('Expand') %p = _('Embed an image of your existing Jaeger server in GitLab.') diff --git a/app/views/projects/settings/repository/show.html.haml b/app/views/projects/settings/repository/show.html.haml index 24fc137fd29..500cfdcb62b 100644 --- a/app/views/projects/settings/repository/show.html.haml +++ b/app/views/projects/settings/repository/show.html.haml @@ -4,6 +4,8 @@ - deploy_token_description = s_('DeployTokens|Deploy tokens allow access to packages, your repository, and registry images.') = render "projects/default_branch/show" +- if Feature.enabled?(:branch_rules, @project) + = render "projects/branch_rules/show" = render_if_exists "projects/push_rules/index" = render "projects/mirrors/mirror_repos" diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 1934f293b0f..290ef79f261 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -6,9 +6,10 @@ = content_for :meta_tags do = auto_discovery_link_tag(:atom, project_path(@project, rss_url_options), title: "#{@project.name} activity") -= render_if_exists 'shared/user_over_limit_free_plan_alert', source: @project += render_if_exists 'projects/free_user_cap_alert', project: @project = render_if_exists 'shared/minute_limit_banner', namespace: @project = render partial: 'flash_messages', locals: { project: @project } += render 'clusters_deprecation_alert' = render "projects/last_push" diff --git a/app/views/projects/snippets/edit.html.haml b/app/views/projects/snippets/edit.html.haml index 9f5af1cfe1e..d9bf064ad24 100644 --- a/app/views/projects/snippets/edit.html.haml +++ b/app/views/projects/snippets/edit.html.haml @@ -3,7 +3,7 @@ - page_title _("Edit"), "#{@snippet.title} (#{@snippet.to_reference})", _("Snippets") - @content_class = "limit-container-width" unless fluid_layout -%h3.page-title +%h1.page-title.gl-font-size-h-display = _("Edit Snippet") %hr = render "shared/snippets/form", url: project_snippet_path(@project, @snippet) diff --git a/app/views/projects/snippets/new.html.haml b/app/views/projects/snippets/new.html.haml index d55a1160d48..5086b5eaa3d 100644 --- a/app/views/projects/snippets/new.html.haml +++ b/app/views/projects/snippets/new.html.haml @@ -3,7 +3,7 @@ - page_title _("New Snippet") - @content_class = "limit-container-width" unless fluid_layout -%h3.page-title +%h1.page-title.gl-font-size-h-display = _("New Snippet") %hr = render "shared/snippets/form", url: project_snippets_path(@project, @snippet) diff --git a/app/views/projects/static_site_editor/show.html.haml b/app/views/projects/static_site_editor/show.html.haml deleted file mode 100644 index cbe27cefba3..00000000000 --- a/app/views/projects/static_site_editor/show.html.haml +++ /dev/null @@ -1 +0,0 @@ -#static-site-editor{ data: @data } diff --git a/app/views/projects/tags/_tag.html.haml b/app/views/projects/tags/_tag.html.haml index 0ee3b89b629..7654150509e 100644 --- a/app/views/projects/tags/_tag.html.haml +++ b/app/views/projects/tags/_tag.html.haml @@ -21,7 +21,7 @@ .text-secondary = sprite_icon("rocket", size: 12) = _("Release") - = link_to release.name, project_releases_path(@project, anchor: release.tag), class: 'gl-text-blue-600!' + = link_to release.name, project_release_path(@project, release), class: 'gl-text-blue-600!' - if tag.message.present? %pre.wrap diff --git a/app/views/projects/tags/index.html.haml b/app/views/projects/tags/index.html.haml index a654d0a8863..2721f94134c 100644 --- a/app/views/projects/tags/index.html.haml +++ b/app/views/projects/tags/index.html.haml @@ -38,3 +38,6 @@ = s_('TagsPage|Use git tag command to add a new one:') %br %span.monospace git tag -a v1.4 -m 'version 1.4' + +- if can?(current_user, :admin_tag, @project) + .js-delete-tag-modal diff --git a/app/views/projects/tags/new.html.haml b/app/views/projects/tags/new.html.haml index 4281152225a..3b546888375 100644 --- a/app/views/projects/tags/new.html.haml +++ b/app/views/projects/tags/new.html.haml @@ -2,13 +2,11 @@ - default_ref = params[:ref] || @project.default_branch - if @error - .gl-alert.gl-alert-danger - = sprite_icon('error', 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') - = @error + = render Pajamas::AlertComponent.new(variant: :danger, dismissible: true, close_button_options: { class: 'gl-alert-dismiss' }) do |c| + = c.body do + = @error -%h3.page-title +%h1.page-title.gl-font-size-h-display = s_('TagsPage|New Tag') %hr @@ -52,7 +50,9 @@ = render 'shared/zen', attr: :release_description, classes: 'note-textarea', placeholder: s_('TagsPage|Write your release notes or drag files here…'), current_text: @release_description, qa_selector: 'release_notes_field' = render 'shared/notes/hints' .form-actions.gl-display-flex - = button_tag s_('TagsPage|Create tag'), class: 'gl-button btn btn-confirm gl-mr-3', data: { qa_selector: "create_tag_button" } - = link_to s_('TagsPage|Cancel'), project_tags_path(@project), class: 'gl-button btn btn-default btn-cancel' + = render Pajamas::ButtonComponent.new(variant: :confirm, button_options: { class: 'gl-mr-3', data: { qa_selector: "create_tag_button" }, type: 'submit' }) do + = s_('TagsPage|Create tag') + = render Pajamas::ButtonComponent.new(href: project_tags_path(@project)) do + = s_('TagsPage|Cancel') -# haml-lint:disable InlineJavaScript %script#availableRefs{ type: "application/json" }= @project.repository.ref_names.to_json.html_safe diff --git a/app/views/projects/tags/show.html.haml b/app/views/projects/tags/show.html.haml index c1b78d3258d..2a68ad37c1e 100644 --- a/app/views/projects/tags/show.html.haml +++ b/app/views/projects/tags/show.html.haml @@ -63,3 +63,6 @@ = markdown_field(@release, :description) - else = s_('TagsPage|This tag has no release notes.') + +- if can?(current_user, :admin_tag, @project) + .js-delete-tag-modal diff --git a/app/views/projects/tracings/show.html.haml b/app/views/projects/tracings/show.html.haml index c9aac68b19d..61f2cd8ac7f 100644 --- a/app/views/projects/tracings/show.html.haml +++ b/app/views/projects/tracings/show.html.haml @@ -17,7 +17,7 @@ = html_escape(s_('Deprecations|The logs and tracing features were deprecated in GitLab 14.7, and are %{removal_link_start} scheduled for removal %{link_end} in GitLab 15.0. For information on a possible replacement, %{opstrace_link_start} learn more about Opstrace %{link_end}.')) % {removal_link_start: removal_epic_link_start, opstrace_link_start: opstrace_link_start, link_end: link_end } - if @project.tracing_external_url.present? - %h3.page-title= _('Tracing') + %h1.page-title.gl-font-size-h-display= _('Tracing') .gl-alert.gl-alert-info.gl-mb-5 .gl-alert-container = sprite_icon('information-o', css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') diff --git a/app/views/projects/usage_quotas/index.html.haml b/app/views/projects/usage_quotas/index.html.haml index 5b4edc92d1d..3de9bce14d4 100644 --- a/app/views/projects/usage_quotas/index.html.haml +++ b/app/views/projects/usage_quotas/index.html.haml @@ -1,6 +1,14 @@ - page_title s_("UsageQuota|Usage") -%h3.page-title += render_if_exists 'namespaces/free_user_cap/projects/usage_quota_limitations_banner' + += render Pajamas::AlertComponent.new(title: _('Repository usage recalculation started'), + variant: :info, + alert_options: { class: 'js-recalculation-started-alert gl-mt-4 gl-mb-5 gl-display-none' }) do |c| + = c.body do + = _('To view usage, refresh this page in a few minutes.') + +%h1.page-title.gl-font-size-h-display = s_('UsageQuota|Usage Quotas') .row diff --git a/app/views/projects/work_items/index.html.haml b/app/views/projects/work_items/index.html.haml index 356f93c6ed5..1f36afc48aa 100644 --- a/app/views/projects/work_items/index.html.haml +++ b/app/views/projects/work_items/index.html.haml @@ -1,3 +1,3 @@ - page_title s_('WorkItem|Work Items') -#js-work-items{ data: { full_path: @project.full_path, issues_list_path: project_issues_path(@project) } } +#js-work-items{ data: work_items_index_data(@project) } -- cgit v1.2.1