diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-31 18:09:02 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-31 18:09:02 +0300 |
commit | eb6b17504921dc3b8c22715b9ec7790a34b4abe0 (patch) | |
tree | b4ca44c1e2028cfa6864cecad568b12b04d4a024 /app | |
parent | 8243505178033432b7fc6834eef425c9dcdfd7bc (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
115 files changed, 233 insertions, 192 deletions
diff --git a/app/assets/javascripts/authentication/two_factor_auth/components/recovery_codes.vue b/app/assets/javascripts/authentication/two_factor_auth/components/recovery_codes.vue index fe801cd460f..6a2e5f5c2c5 100644 --- a/app/assets/javascripts/authentication/two_factor_auth/components/recovery_codes.vue +++ b/app/assets/javascripts/authentication/two_factor_auth/components/recovery_codes.vue @@ -101,9 +101,9 @@ export default { <template> <div> - <h3 class="page-title"> + <h1 class="page-title"> {{ $options.i18n.pageTitle }} - </h3> + </h1> <hr /> <gl-alert variant="info" :dismissible="false"> {{ $options.i18n.alertTitle }} diff --git a/app/assets/javascripts/environments/components/environment_form.vue b/app/assets/javascripts/environments/components/environment_form.vue index 1d1d8d61b66..681036e4ba2 100644 --- a/app/assets/javascripts/environments/components/environment_form.vue +++ b/app/assets/javascripts/environments/components/environment_form.vue @@ -81,9 +81,9 @@ export default { </script> <template> <div> - <h3 class="page-title"> + <h1 class="page-title"> {{ title }} - </h3> + </h1> <hr /> <div class="row gl-mt-3 gl-mb-3"> <div class="col-lg-3"> diff --git a/app/assets/javascripts/environments/components/environments_detail_header.vue b/app/assets/javascripts/environments/components/environments_detail_header.vue index d71b553a878..7acb453b58b 100644 --- a/app/assets/javascripts/environments/components/environments_detail_header.vue +++ b/app/assets/javascripts/environments/components/environments_detail_header.vue @@ -94,9 +94,9 @@ export default { <template> <header class="top-area gl-justify-content-between"> <div class="gl-display-flex gl-flex-grow-1 gl-align-items-center"> - <h3 class="page-title"> + <h1 class="page-title"> {{ environment.name }} - </h3> + </h1> <p v-if="shouldShowCancelAutoStopButton" class="gl-mb-0 gl-ml-3" data-testid="auto-stops-at"> <gl-sprintf :message="$options.i18n.autoStopAtText"> <template #autoStopAt> diff --git a/app/assets/javascripts/error_tracking/components/error_details.vue b/app/assets/javascripts/error_tracking/components/error_details.vue index ad139f81079..c369d879739 100644 --- a/app/assets/javascripts/error_tracking/components/error_details.vue +++ b/app/assets/javascripts/error_tracking/components/error_details.vue @@ -364,7 +364,6 @@ export default { v-if="error.gitlabIssuePath" data-qa-selector="view_issue_button" :href="error.gitlabIssuePath" - variant="success" >{{ __('View issue') }}</gl-dropdown-item > <gl-dropdown-item diff --git a/app/assets/javascripts/feature_flags/components/new_feature_flag.vue b/app/assets/javascripts/feature_flags/components/new_feature_flag.vue index 865c1e677cd..041c9e5cd14 100644 --- a/app/assets/javascripts/feature_flags/components/new_feature_flag.vue +++ b/app/assets/javascripts/feature_flags/components/new_feature_flag.vue @@ -24,7 +24,7 @@ export default { </script> <template> <div> - <h3 class="page-title">{{ s__('FeatureFlags|New feature flag') }}</h3> + <h1 class="page-title">{{ s__('FeatureFlags|New feature flag') }}</h1> <gl-alert v-if="error.length" variant="warning" class="gl-mb-5" :dismissible="false"> <p v-for="(message, index) in error" :key="index" class="gl-mb-0">{{ message }}</p> diff --git a/app/assets/javascripts/jira_import/components/jira_import_form.vue b/app/assets/javascripts/jira_import/components/jira_import_form.vue index 4e5e9f4ade7..6f49aad1b77 100644 --- a/app/assets/javascripts/jira_import/components/jira_import_form.vue +++ b/app/assets/javascripts/jira_import/components/jira_import_form.vue @@ -254,7 +254,7 @@ export default { </gl-sprintf> </gl-alert> - <h3 class="page-title">{{ __('New Jira import') }}</h3> + <h1 class="page-title">{{ __('New Jira import') }}</h1> <hr /> diff --git a/app/assets/javascripts/jobs/components/stuck_block.vue b/app/assets/javascripts/jobs/components/stuck_block.vue index f9cde61e917..d7a26d22406 100644 --- a/app/assets/javascripts/jobs/components/stuck_block.vue +++ b/app/assets/javascripts/jobs/components/stuck_block.vue @@ -1,5 +1,5 @@ <script> -import { GlAlert, GlBadge, GlLink } from '@gitlab/ui'; +import { GlAlert, GlBadge, GlLink, GlSprintf } from '@gitlab/ui'; import { s__ } from '~/locale'; /** * Renders Stuck Runners block for job's view. @@ -9,6 +9,7 @@ export default { GlAlert, GlBadge, GlLink, + GlSprintf, }, props: { hasOfflineRunnersForProject: { @@ -29,11 +30,15 @@ export default { hasNoRunnersWithCorrespondingTags() { return this.tags.length > 0; }, + protectedBranchSettingsDocsLink() { + return 'https://docs.gitlab.com/runner/security/index.html#reduce-the-security-risk-of-using-privileged-containers'; + }, stuckData() { if (this.hasNoRunnersWithCorrespondingTags) { return { - text: s__(`Job|This job is stuck because you don't have - any active runners online or available with any of these tags assigned to them:`), + text: s__( + `Job|This job is stuck because of one of the following problems. There are no active runners online, no runners for the %{linkStart}protected branch%{linkEnd}, or no runners that match all of the job's tags:`, + ), dataTestId: 'job-stuck-with-tags', showTags: true, }; @@ -59,7 +64,17 @@ export default { <template> <gl-alert variant="warning" :dismissible="false"> <p class="gl-mb-0" :data-testid="stuckData.dataTestId"> - {{ stuckData.text }} + <gl-sprintf :message="stuckData.text"> + <template #link="{ content }"> + <a + class="gl-display-inline-block" + :href="protectedBranchSettingsDocsLink" + target="_blank" + > + {{ content }} + </a> + </template> + </gl-sprintf> <template v-if="stuckData.showTags"> <gl-badge v-for="tag in tags" :key="tag" variant="info"> {{ tag }} diff --git a/app/assets/javascripts/performance_bar/components/add_request.vue b/app/assets/javascripts/performance_bar/components/add_request.vue index 8396f00810d..9ac6b0e6403 100644 --- a/app/assets/javascripts/performance_bar/components/add_request.vue +++ b/app/assets/javascripts/performance_bar/components/add_request.vue @@ -1,7 +1,12 @@ -import { __ } from '~/locale'; - <script> +import { GlForm, GlFormInput, GlButton } from '@gitlab/ui'; + export default { + components: { + GlForm, + GlButton, + GlFormInput, + }, data() { return { inputEnabled: false, @@ -24,25 +29,26 @@ export default { }; </script> <template> - <div id="peek-view-add-request" class="view"> - <form class="form-inline" @submit.prevent> - <button - class="btn-link bold gl-text-blue-300 gl-button" - type="button" - :title="__(`Add request manually`)" + <div id="peek-view-add-request" class="view gl-display-flex"> + <gl-form class="gl-display-flex gl-align-items-center" @submit.prevent> + <gl-button + class="gl-text-blue-300! gl-mr-2" + category="tertiary" + variant="link" + icon="plus" + size="small" + :title="__('Add request manually')" @click="toggleInput" - > - + - </button> - <input + /> + <gl-form-input v-if="inputEnabled" v-model="urlOrRequestId" type="text" :placeholder="__(`URL or request ID`)" - class="form-control form-control-sm d-inline-block ml-1" + class="gl-ml-2" @keyup.enter="addRequest" @keyup.esc="clearForm" /> - </form> + </gl-form> </div> </template> diff --git a/app/assets/javascripts/runner/components/runner_jobs.vue b/app/assets/javascripts/runner/components/runner_jobs.vue index 4eb1312b204..57afdc4b9be 100644 --- a/app/assets/javascripts/runner/components/runner_jobs.vue +++ b/app/assets/javascripts/runner/components/runner_jobs.vue @@ -1,5 +1,5 @@ <script> -import { GlDeprecatedSkeletonLoading as GlSkeletonLoading } from '@gitlab/ui'; +import { GlSkeletonLoader } from '@gitlab/ui'; import { createAlert } from '~/flash'; import runnerJobsQuery from '../graphql/show/runner_jobs.query.graphql'; import { I18N_FETCH_ERROR, I18N_NO_JOBS_FOUND, RUNNER_DETAILS_JOBS_PAGE_SIZE } from '../constants'; @@ -11,7 +11,7 @@ import RunnerPagination from './runner_pagination.vue'; export default { name: 'RunnerJobs', components: { - GlSkeletonLoading, + GlSkeletonLoader, RunnerJobsTable, RunnerPagination, }, @@ -68,7 +68,9 @@ export default { <template> <div class="gl-pt-3"> - <gl-skeleton-loading v-if="loading" class="gl-py-5" /> + <div v-if="loading" class="gl-py-5"> + <gl-skeleton-loader /> + </div> <runner-jobs-table v-else-if="jobs.items.length" :jobs="jobs.items" /> <p v-else>{{ $options.I18N_NO_JOBS_FOUND }}</p> diff --git a/app/assets/javascripts/vue_shared/components/notes/system_note.vue b/app/assets/javascripts/vue_shared/components/notes/system_note.vue index 7c660121b1a..3593ea16968 100644 --- a/app/assets/javascripts/vue_shared/components/notes/system_note.vue +++ b/app/assets/javascripts/vue_shared/components/notes/system_note.vue @@ -18,7 +18,7 @@ */ import { GlButton, - GlDeprecatedSkeletonLoading as GlSkeletonLoading, + GlSkeletonLoader, GlTooltipDirective, GlIcon, GlSafeHtmlDirective as SafeHtml, @@ -46,7 +46,7 @@ export default { noteHeader, TimelineEntryItem, GlButton, - GlSkeletonLoading, + GlSkeletonLoader, }, directives: { GlTooltip: GlTooltipDirective, @@ -172,7 +172,7 @@ export default { </div> <div v-if="shouldShowDescriptionVersion" class="description-version pt-2"> <pre v-if="isLoadingDescriptionVersion" class="loading-state"> - <gl-skeleton-loading /> + <gl-skeleton-loader /> </pre> <pre v-else v-safe-html="descriptionVersion" class="wrapper mt-2"></pre> <gl-button @@ -218,7 +218,9 @@ export default { </tr> </table> </div> - <gl-skeleton-loading v-else-if="showLines" class="gl-mt-4" /> + <div v-else-if="showLines" class="mt-4"> + <gl-skeleton-loader /> + </div> </div> </div> </timeline-entry-item> diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_contents_labels_view.vue b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_contents_labels_view.vue index 134575b7a27..7c11b895323 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_contents_labels_view.vue +++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/dropdown_contents_labels_view.vue @@ -193,6 +193,7 @@ export default { :key="label.id" :label="label" :is-label-set="label.set" + :is-label-indeterminate="label.indeterminate" :highlight="index === currentHighlightItem" @clickLabel="handleLabelClick(label)" /> diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/label_item.vue b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/label_item.vue index dd40add6376..1f52f4c064f 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/label_item.vue +++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/label_item.vue @@ -1,5 +1,6 @@ <script> import { GlLink, GlIcon } from '@gitlab/ui'; +import { __ } from '~/locale'; export default { functional: true, @@ -12,6 +13,11 @@ export default { type: Boolean, required: true, }, + isLabelIndeterminate: { + type: Boolean, + required: false, + default: false, + }, highlight: { type: Boolean, required: false, @@ -19,7 +25,7 @@ export default { }, }, render(h, { props, listeners }) { - const { label, highlight, isLabelSet } = props; + const { label, highlight, isLabelSet, isLabelIndeterminate } = props; const labelColorBox = h('span', { class: 'dropdown-label-box gl-flex-shrink-0 gl-top-0 gl-mr-3', @@ -33,18 +39,36 @@ export default { const checkedIcon = h(GlIcon, { class: { - 'gl-mr-3 gl-flex-shrink-0': true, + 'gl-mr-3 gl-flex-shrink-0 has-tooltip': true, hidden: !isLabelSet, }, + attrs: { + title: __('Selected for all items.'), + 'data-testid': 'checked-icon', + }, props: { name: 'mobile-issue-close', }, }); + const indeterminateIcon = h(GlIcon, { + class: { + 'gl-mr-3 gl-flex-shrink-0 has-tooltip': true, + hidden: !isLabelIndeterminate, + }, + attrs: { + title: __('Selected for some items.'), + 'data-testid': 'indeterminate-icon', + }, + props: { + name: 'dash', + }, + }); + const noIcon = h('span', { class: { 'gl-mr-5 gl-pr-3': true, - hidden: isLabelSet, + hidden: isLabelSet || isLabelIndeterminate, }, attrs: { 'data-testid': 'no-icon', @@ -63,7 +87,7 @@ export default { }, }, }, - [noIcon, checkedIcon, labelColorBox, labelTitle], + [noIcon, checkedIcon, indeterminateIcon, labelColorBox, labelTitle], ); return h( diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/labels_select_root.vue b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/labels_select_root.vue index 7e259cb8b96..b514e4a27af 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/labels_select_root.vue +++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/labels_select_root.vue @@ -198,11 +198,12 @@ export default { !state.showDropdownButton && !state.showDropdownContents ) { - let filterFn = (label) => label.touched; - if (this.isDropdownVariantEmbedded) { - filterFn = (label) => label.set; - } - this.handleDropdownClose(state.labels.filter(filterFn)); + const filterTouchedLabelsFn = (label) => label.touched; + const filterSetLabelsFn = (label) => label.set; + const labels = this.isDropdownVariantEmbedded + ? state.labels.filter(filterSetLabelsFn) + : state.labels.filter(filterTouchedLabelsFn); + this.handleDropdownClose(labels, state.labels.filter(filterTouchedLabelsFn)); } }, /** @@ -265,11 +266,11 @@ export default { isInDropdownContents ); }, - handleDropdownClose(labels) { - // Only emit label updates if there are any labels to update - // on UI. + handleDropdownClose(labels, touchedLabels) { + // Only emit label updates if there are any + // labels to update on UI. if (labels.length) this.$emit('updateSelectedLabels', labels); - this.$emit('onDropdownClose'); + this.$emit('onDropdownClose', touchedLabels); }, handleCollapsedValueClick() { this.$emit('toggleCollapse'); diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/store/getters.js b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/store/getters.js index d14f96720b7..ef3eedd9bb2 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/store/getters.js +++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/store/getters.js @@ -8,9 +8,10 @@ import { DropdownVariant } from '../constants'; * @param {object} state */ export const dropdownButtonText = (state, getters) => { - const selectedLabels = getters.isDropdownVariantSidebar - ? state.labels.filter((label) => label.set) - : state.selectedLabels; + const selectedLabels = + getters.isDropdownVariantSidebar || getters.isDropdownVariantEmbedded + ? state.labels.filter((label) => label.set || label.indeterminate) + : state.selectedLabels; if (!selectedLabels.length) { return state.dropdownButtonText || __('Label'); diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/store/mutations.js b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/store/mutations.js index 9e64f03fe84..43b23994cdf 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/store/mutations.js +++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_vue/store/mutations.js @@ -2,8 +2,39 @@ import { isScopedLabel, scopedLabelKey } from '~/lib/utils/common_utils'; import { DropdownVariant } from '../constants'; import * as types from './mutation_types'; +const transformLabels = (labels, selectedLabels) => + labels.map((label) => { + const selectedLabel = selectedLabels.find(({ id }) => id === label.id); + + return { + ...label, + set: Boolean(selectedLabel?.set), + indeterminate: Boolean(selectedLabel?.indeterminate), + }; + }); + export default { [types.SET_INITIAL_STATE](state, props) { + // We need to ensure that selectedLabels have + // `set` & `indeterminate` properties defined. + if (props.selectedLabels?.length) { + props.selectedLabels.forEach((label) => { + /* eslint-disable no-param-reassign */ + if (label.set === undefined && label.indeterminate === undefined) { + label.set = true; + label.indeterminate = false; + } else if (label.set === undefined && label.indeterminate !== undefined) { + label.set = false; + } else if (label.set !== undefined && label.indeterminate === undefined) { + label.indeterminate = false; + } else { + label.set = false; + label.indeterminate = false; + } + /* eslint-enable no-param-reassign */ + }); + } + Object.assign(state, { ...props }); }, @@ -36,10 +67,7 @@ export default { // selectedLabels array. state.labelsFetchInProgress = false; state.labelsFetched = true; - state.labels = labels.map((label) => ({ - ...label, - set: state.selectedLabels.some((selectedLabel) => selectedLabel.id === label.id), - })); + state.labels = transformLabels(labels, state.selectedLabels); }, [types.RECEIVE_SET_LABELS_FAILURE](state) { state.labelsFetchInProgress = false; @@ -62,7 +90,8 @@ export default { const candidateLabel = state.labels.find((label) => labelId === label.id); if (candidateLabel) { candidateLabel.touched = true; - candidateLabel.set = !candidateLabel.set; + candidateLabel.set = candidateLabel.indeterminate ? true : !candidateLabel.set; + candidateLabel.indeterminate = false; } if (isScopedLabel(candidateLabel)) { @@ -80,9 +109,6 @@ export default { }, [types.UPDATE_LABELS_SET_STATE](state) { - state.labels = state.labels.map((label) => ({ - ...label, - set: state.selectedLabels.some((selectedLabel) => selectedLabel.id === label.id), - })); + state.labels = transformLabels(state.labels, state.selectedLabels); }, }; diff --git a/app/models/concerns/storage/legacy_namespace.rb b/app/models/concerns/storage/legacy_namespace.rb index 948190dfadf..e418842a30b 100644 --- a/app/models/concerns/storage/legacy_namespace.rb +++ b/app/models/concerns/storage/legacy_namespace.rb @@ -23,22 +23,8 @@ module Storage former_parent_full_path = parent_was&.full_path parent_full_path = parent&.full_path Gitlab::UploadsTransfer.new.move_namespace(path, former_parent_full_path, parent_full_path) - - if any_project_with_pages_deployed? - run_after_commit do - Gitlab::PagesTransfer.new.async.move_namespace(path, former_parent_full_path, parent_full_path) - end - end else Gitlab::UploadsTransfer.new.rename_namespace(full_path_before_last_save, full_path) - - if any_project_with_pages_deployed? - full_path_was = full_path_before_last_save - - run_after_commit do - Gitlab::PagesTransfer.new.async.rename_namespace(full_path_was, full_path) - end - end end # If repositories moved successfully we need to diff --git a/app/services/projects/after_rename_service.rb b/app/services/projects/after_rename_service.rb index a3d54bc6b58..2ed4346e5ca 100644 --- a/app/services/projects/after_rename_service.rb +++ b/app/services/projects/after_rename_service.rb @@ -95,20 +95,6 @@ module Projects .new .rename_project(path_before, project_path, namespace_full_path) end - - if project.pages_deployed? - # Block will be evaluated in the context of project so we need - # to bind to a local variable to capture it, as the instance - # variable and method aren't available on Project - path_before_local = @path_before - - project.run_after_commit_or_now do - Gitlab::PagesTransfer - .new - .async - .rename_project(path_before_local, path, namespace.full_path) - end - end end def log_completion diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 2ad5c303be2..666227951c6 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -120,7 +120,6 @@ module Projects # Overridden in EE def post_update_hooks(project) - move_pages(project) ensure_personal_project_owner_membership(project) end @@ -232,13 +231,6 @@ module Projects ) end - def move_pages(project) - return unless project.pages_deployed? - - transfer = Gitlab::PagesTransfer.new.async - transfer.move_project(project.path, @old_namespace.full_path, @new_namespace.full_path) - end - def old_wiki_repo_path "#{old_path}#{::Gitlab::GlRepository::WIKI.path_suffix}" end diff --git a/app/views/abuse_reports/new.html.haml b/app/views/abuse_reports/new.html.haml index 78fa16c13a5..3d85c203603 100644 --- a/app/views/abuse_reports/new.html.haml +++ b/app/views/abuse_reports/new.html.haml @@ -1,5 +1,5 @@ - page_title _("Report abuse to admin") -%h3.page-title +%h1.page-title = _("Report abuse to admin") %p = _("Please use this form to report to the admin users who create spam issues, comments or behave inappropriately.") diff --git a/app/views/admin/abuse_reports/index.html.haml b/app/views/admin/abuse_reports/index.html.haml index 8b1bbbc17c7..731683e55ef 100644 --- a/app/views/admin/abuse_reports/index.html.haml +++ b/app/views/admin/abuse_reports/index.html.haml @@ -1,6 +1,6 @@ - page_title _('Abuse Reports') -%h3.page-title= _('Abuse Reports') +%h1.page-title= _('Abuse Reports') .row-content-block.second-block = form_tag admin_abuse_reports_path, method: :get, class: 'filter-form' do diff --git a/app/views/admin/applications/edit.html.haml b/app/views/admin/applications/edit.html.haml index 42f7f6c3d66..189bbc5894e 100644 --- a/app/views/admin/applications/edit.html.haml +++ b/app/views/admin/applications/edit.html.haml @@ -2,7 +2,7 @@ - breadcrumb_title @application.name - page_title _("Edit"), @application.name, _("Applications") -%h3.page-title +%h1.page-title = _('Edit application') - @url = admin_application_path(@application) = render 'form', application: @application diff --git a/app/views/admin/applications/index.html.haml b/app/views/admin/applications/index.html.haml index 890155ee604..7c6d1d75e96 100644 --- a/app/views/admin/applications/index.html.haml +++ b/app/views/admin/applications/index.html.haml @@ -1,6 +1,6 @@ - page_title s_('AdminArea|Instance OAuth applications') -%h3.page-title +%h1.page-title = s_('AdminArea|Instance OAuth applications') %p.light - docs_link_path = help_page_path('integration/oauth_provider') diff --git a/app/views/admin/applications/new.html.haml b/app/views/admin/applications/new.html.haml index 731cb51e2e4..6dba2406330 100644 --- a/app/views/admin/applications/new.html.haml +++ b/app/views/admin/applications/new.html.haml @@ -1,7 +1,7 @@ - breadcrumb_title _("Add new application") - page_title _("Add new application") -%h3.page-title +%h1.page-title = _("Add new application") - @url = admin_applications_path = render 'form', application: @application diff --git a/app/views/admin/applications/show.html.haml b/app/views/admin/applications/show.html.haml index d9c683cbcc3..7884b9fd89e 100644 --- a/app/views/admin/applications/show.html.haml +++ b/app/views/admin/applications/show.html.haml @@ -1,6 +1,6 @@ - page_title @application.name, _("Applications") -%h3.page-title +%h1.page-title Application: #{@application.name} = render 'shared/doorkeeper/applications/show', diff --git a/app/views/admin/background_jobs/show.html.haml b/app/views/admin/background_jobs/show.html.haml index bab9fa02928..6ad4ab74ba2 100644 --- a/app/views/admin/background_jobs/show.html.haml +++ b/app/views/admin/background_jobs/show.html.haml @@ -1,6 +1,6 @@ - page_title _("Background Jobs") -%h3.page-title= _('Background Jobs') +%h1.page-title= _('Background Jobs') %p.light - sidekiq_link_url = 'http://sidekiq.org/' - sidekiq_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: sidekiq_link_url } diff --git a/app/views/admin/broadcast_messages/index.html.haml b/app/views/admin/broadcast_messages/index.html.haml index 8b657eda0c0..6a60d5418f4 100644 --- a/app/views/admin/broadcast_messages/index.html.haml +++ b/app/views/admin/broadcast_messages/index.html.haml @@ -2,7 +2,7 @@ - page_title _("Broadcast Messages") - targeted_broadcast_messages_enabled = Feature.enabled?(:role_targeted_broadcast_messages) -%h3.page-title +%h1.page-title = _('Broadcast Messages') %p.light = _('Use banners and notifications to notify your users about scheduled maintenance, recent upgrades, and more.') diff --git a/app/views/admin/deploy_keys/edit.html.haml b/app/views/admin/deploy_keys/edit.html.haml index f85b37b3640..87de176245e 100644 --- a/app/views/admin/deploy_keys/edit.html.haml +++ b/app/views/admin/deploy_keys/edit.html.haml @@ -1,5 +1,5 @@ - page_title _('Edit Deploy Key') -%h3.page-title= _('Edit public deploy key') +%h1.page-title= _('Edit public deploy key') %hr %div diff --git a/app/views/admin/deploy_keys/new.html.haml b/app/views/admin/deploy_keys/new.html.haml index fe2bc8530f7..e3053001dd7 100644 --- a/app/views/admin/deploy_keys/new.html.haml +++ b/app/views/admin/deploy_keys/new.html.haml @@ -1,5 +1,5 @@ - page_title _('New Deploy Key') -%h3.page-title= _('New public deploy key') +%h1.page-title= _('New public deploy key') %hr %div diff --git a/app/views/admin/gitaly_servers/index.html.haml b/app/views/admin/gitaly_servers/index.html.haml index 0b06f145687..b9134c7670e 100644 --- a/app/views/admin/gitaly_servers/index.html.haml +++ b/app/views/admin/gitaly_servers/index.html.haml @@ -1,7 +1,7 @@ - breadcrumb_title _("Gitaly Servers") - page_title _("Gitaly Servers") -%h3.page-title= _("Gitaly Servers") +%h1.page-title= _("Gitaly Servers") %hr .gitaly_servers - if @gitaly_servers.any? diff --git a/app/views/admin/groups/edit.html.haml b/app/views/admin/groups/edit.html.haml index 8e9e1a58a17..e18f757bfd9 100644 --- a/app/views/admin/groups/edit.html.haml +++ b/app/views/admin/groups/edit.html.haml @@ -1,4 +1,4 @@ - page_title _("Edit"), @group.name, _("Groups") -%h3.page-title= _('Edit group: %{group_name}') % { group_name: @group.name } +%h1.page-title= _('Edit group: %{group_name}') % { group_name: @group.name } %hr = render 'form', visibility_level: @group.visibility_level diff --git a/app/views/admin/groups/new.html.haml b/app/views/admin/groups/new.html.haml index 553e8638e52..781a7c15df4 100644 --- a/app/views/admin/groups/new.html.haml +++ b/app/views/admin/groups/new.html.haml @@ -1,4 +1,4 @@ - page_title _("New Group") -%h3.page-title= _('New group') +%h1.page-title= _('New group') %hr = render 'form', visibility_level: default_group_visibility diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml index 39b2fa41c80..3419b234710 100644 --- a/app/views/admin/groups/show.html.haml +++ b/app/views/admin/groups/show.html.haml @@ -4,7 +4,7 @@ - page_title @group.name, _("Groups") - current_user_is_group_owner = @group && @group.has_owner?(current_user) -%h3.page-title +%h1.page-title = _('Group: %{group_name}') % { group_name: @group.full_name } = link_to admin_group_edit_path(@group), class: "btn btn-default gl-button float-right", data: { qa_selector: 'edit_group_link' } do diff --git a/app/views/admin/health_check/show.html.haml b/app/views/admin/health_check/show.html.haml index a289cea0d5a..9cafefc023a 100644 --- a/app/views/admin/health_check/show.html.haml +++ b/app/views/admin/health_check/show.html.haml @@ -1,7 +1,7 @@ - page_title _('Health Check') - no_errors = @errors.blank? -%h3.page-title= page_title +%h1.page-title= page_title .bs-callout.clearfix .float-left %p diff --git a/app/views/admin/hook_logs/show.html.haml b/app/views/admin/hook_logs/show.html.haml index ca2737ca56f..abfabbb5eb6 100644 --- a/app/views/admin/hook_logs/show.html.haml +++ b/app/views/admin/hook_logs/show.html.haml @@ -1,5 +1,5 @@ - page_title _('Request details') -%h3.page-title +%h1.page-title = _("Request details") %hr diff --git a/app/views/admin/identities/edit.html.haml b/app/views/admin/identities/edit.html.haml index 0fd1f2f547f..28466658aff 100644 --- a/app/views/admin/identities/edit.html.haml +++ b/app/views/admin/identities/edit.html.haml @@ -2,7 +2,7 @@ - add_to_breadcrumbs @user.name, admin_user_identities_path(@user) - breadcrumb_title _('Edit Identity') - page_title _("Edit"), @identity.provider, _("Identities"), @user.name, _("Users") -%h3.page-title +%h1.page-title = _('Edit identity for %{user_name}') % { user_name: @user.name } %hr diff --git a/app/views/admin/identities/new.html.haml b/app/views/admin/identities/new.html.haml index b4f37057c51..8ca27581693 100644 --- a/app/views/admin/identities/new.html.haml +++ b/app/views/admin/identities/new.html.haml @@ -2,6 +2,6 @@ - add_to_breadcrumbs @user.name, admin_user_identities_path(@user) - breadcrumb_title _('New Identity') - page_title _('New Identity') -%h3.page-title= _('New identity') +%h1.page-title= _('New identity') %hr = render 'form' diff --git a/app/views/admin/labels/edit.html.haml b/app/views/admin/labels/edit.html.haml index 44dd2b6a646..bd9db7530a6 100644 --- a/app/views/admin/labels/edit.html.haml +++ b/app/views/admin/labels/edit.html.haml @@ -1,7 +1,7 @@ - add_to_breadcrumbs _("Labels"), admin_labels_path - breadcrumb_title _("Edit Label") - page_title _("Edit"), @label.name, _("Labels") -%h3.page-title +%h1.page-title = _('Edit Label') %hr = render 'shared/labels/form', url: admin_label_path(@label), back_path: admin_labels_path diff --git a/app/views/admin/labels/index.html.haml b/app/views/admin/labels/index.html.haml index 66fd18e1b76..fb278f19185 100644 --- a/app/views/admin/labels/index.html.haml +++ b/app/views/admin/labels/index.html.haml @@ -3,7 +3,7 @@ %div = link_to new_admin_label_path, class: "float-right btn gl-button btn-confirm" do = _('New label') - %h3.page-title + %h1.page-title = _('Labels') %hr - if @labels.present? diff --git a/app/views/admin/labels/new.html.haml b/app/views/admin/labels/new.html.haml index 5166bdb4d20..0976416b592 100644 --- a/app/views/admin/labels/new.html.haml +++ b/app/views/admin/labels/new.html.haml @@ -1,5 +1,5 @@ - page_title _("New Label") -%h3.page-title +%h1.page-title = _('New Label') %hr = render 'shared/labels/form', url: admin_labels_path, back_path: admin_labels_path diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml index 16f6e71d79b..3fb3f1f5e54 100644 --- a/app/views/admin/projects/show.html.haml +++ b/app/views/admin/projects/show.html.haml @@ -5,7 +5,7 @@ - @content_class = "admin-projects" - current_user_is_group_owner = @group && @group.has_owner?(current_user) -%h3.page-title +%h1.page-title = _('Project: %{name}') % { name: @project.full_name } = link_to edit_project_path(@project), class: "btn btn-default gl-button float-right" do = sprite_icon('pencil-square', css_class: 'gl-icon') diff --git a/app/views/admin/spam_logs/index.html.haml b/app/views/admin/spam_logs/index.html.haml index 2a36c991ed2..d6f5f5a17da 100644 --- a/app/views/admin/spam_logs/index.html.haml +++ b/app/views/admin/spam_logs/index.html.haml @@ -1,5 +1,5 @@ - page_title _("Spam Logs") -%h3.page-title= _('Spam Logs') +%h1.page-title= _('Spam Logs') %hr - if @spam_logs.present? .table-holder diff --git a/app/views/admin/topics/edit.html.haml b/app/views/admin/topics/edit.html.haml index 4416bb0fe18..a242a3d6eea 100644 --- a/app/views/admin/topics/edit.html.haml +++ b/app/views/admin/topics/edit.html.haml @@ -1,4 +1,4 @@ - page_title _("Edit"), @topic.name, _("Topics") -%h3.page-title= _('Edit topic: %{topic_name}') % { topic_name: @topic.name } +%h1.page-title= _('Edit topic: %{topic_name}') % { topic_name: @topic.name } %hr = render 'form', url: admin_topic_path(@topic) diff --git a/app/views/admin/topics/new.html.haml b/app/views/admin/topics/new.html.haml index 8b4a8ac269e..428e46efed7 100644 --- a/app/views/admin/topics/new.html.haml +++ b/app/views/admin/topics/new.html.haml @@ -1,4 +1,4 @@ - page_title _("New topic") -%h3.page-title= _('New topic') +%h1.page-title= _('New topic') %hr = render 'form', url: admin_topics_path(@topic) diff --git a/app/views/admin/users/_head.html.haml b/app/views/admin/users/_head.html.haml index 9007a36f19f..17a97bbdc66 100644 --- a/app/views/admin/users/_head.html.haml +++ b/app/views/admin/users/_head.html.haml @@ -1,6 +1,6 @@ .gl-display-flex.gl-flex-wrap.gl-justify-content-space-between.gl-align-items-center.gl-py-3.gl-mb-5.gl-border-b-solid.gl-border-gray-100.gl-border-b-1 .gl-my-3 - %h3.page-title.gl-m-0 + %h1.page-title.gl-m-0 = @user.name - if @user.blocked_pending_approval? %span.gl-text-red-500 diff --git a/app/views/admin/users/edit.html.haml b/app/views/admin/users/edit.html.haml index e3ebb691ba9..d6c65741422 100644 --- a/app/views/admin/users/edit.html.haml +++ b/app/views/admin/users/edit.html.haml @@ -1,5 +1,5 @@ - page_title _("Edit"), @user.name, _("Users") -%h3.page-title +%h1.page-title = _("Edit user: %{user_name}") % { user_name: @user.name } %hr = render 'form' diff --git a/app/views/admin/users/new.html.haml b/app/views/admin/users/new.html.haml index 08aa7c3c9d2..ad11f797b2c 100644 --- a/app/views/admin/users/new.html.haml +++ b/app/views/admin/users/new.html.haml @@ -1,5 +1,5 @@ - page_title _("New User") -%h3.page-title +%h1.page-title = s_('AdminUsers|New user') %hr = render 'form' diff --git a/app/views/doorkeeper/applications/edit.html.haml b/app/views/doorkeeper/applications/edit.html.haml index 99e6a5eca19..2d00760a7d1 100644 --- a/app/views/doorkeeper/applications/edit.html.haml +++ b/app/views/doorkeeper/applications/edit.html.haml @@ -1,5 +1,5 @@ - page_title _("Edit"), @application.name, _("Applications") - @content_class = "limit-container-width" unless fluid_layout -%h3.page-title= _('Edit application') +%h1.page-title= _('Edit application') = render 'shared/doorkeeper/applications/form', url: doorkeeper_submit_path(@application) diff --git a/app/views/doorkeeper/applications/new.html.haml b/app/views/doorkeeper/applications/new.html.haml index a66fab20d7c..15f3700e077 100644 --- a/app/views/doorkeeper/applications/new.html.haml +++ b/app/views/doorkeeper/applications/new.html.haml @@ -1,6 +1,6 @@ - page_title _("New Application") -%h3.page-title= _("New Application") +%h1.page-title= _("New Application") %hr diff --git a/app/views/doorkeeper/applications/show.html.haml b/app/views/doorkeeper/applications/show.html.haml index 3a568421ce9..1fb843e95b0 100644 --- a/app/views/doorkeeper/applications/show.html.haml +++ b/app/views/doorkeeper/applications/show.html.haml @@ -3,7 +3,7 @@ - page_title @application.name, _("Applications") - @content_class = "limit-container-width" unless fluid_layout -%h3.page-title +%h1.page-title = _("Application: %{name}") % { name: @application.name } = render 'shared/doorkeeper/applications/show', diff --git a/app/views/doorkeeper/authorizations/error.html.haml b/app/views/doorkeeper/authorizations/error.html.haml index 32b4ccb0fe6..aa4f8b892ad 100644 --- a/app/views/doorkeeper/authorizations/error.html.haml +++ b/app/views/doorkeeper/authorizations/error.html.haml @@ -1,3 +1,3 @@ -%h3.page-title= _("An error has occurred") +%h1.page-title= _("An error has occurred") %main{ :role => "main" } %pre= @pre_auth.error_response.body[:error_description] diff --git a/app/views/doorkeeper/authorizations/redirect.html.haml b/app/views/doorkeeper/authorizations/redirect.html.haml index a9ac92fd087..f32fb3181c6 100644 --- a/app/views/doorkeeper/authorizations/redirect.html.haml +++ b/app/views/doorkeeper/authorizations/redirect.html.haml @@ -1,4 +1,4 @@ -%h3.page-title= _("Redirecting") +%h1.page-title= _("Redirecting") %div %a{ :href => redirect_uri } Click here to redirect to #{redirect_uri} diff --git a/app/views/doorkeeper/authorizations/show.html.haml b/app/views/doorkeeper/authorizations/show.html.haml index e4bfd69e7f8..f4f937fe14d 100644 --- a/app/views/doorkeeper/authorizations/show.html.haml +++ b/app/views/doorkeeper/authorizations/show.html.haml @@ -1,3 +1,3 @@ -%h3.page-title= _("Authorization code:") +%h1.page-title= _("Authorization code:") %main{ :role => "main" } %code#authorization_code= params[:code] diff --git a/app/views/groups/labels/edit.html.haml b/app/views/groups/labels/edit.html.haml index d9b8f99ea0c..bd0efa9d778 100644 --- a/app/views/groups/labels/edit.html.haml +++ b/app/views/groups/labels/edit.html.haml @@ -2,7 +2,7 @@ - breadcrumb_title _("Edit") - page_title _("Edit"), @label.name, _("Labels") -%h3.page-title +%h1.page-title = _('Edit Label') %hr diff --git a/app/views/groups/labels/new.html.haml b/app/views/groups/labels/new.html.haml index 75b4ad5c795..07e45cc05fb 100644 --- a/app/views/groups/labels/new.html.haml +++ b/app/views/groups/labels/new.html.haml @@ -2,7 +2,7 @@ - breadcrumb_title _("New") - page_title _("New Label") -%h3.page-title +%h1.page-title = _('New Label') %hr diff --git a/app/views/groups/milestones/edit.html.haml b/app/views/groups/milestones/edit.html.haml index 187c2d24b56..1e7d38b3dac 100644 --- a/app/views/groups/milestones/edit.html.haml +++ b/app/views/groups/milestones/edit.html.haml @@ -3,7 +3,7 @@ - render "header_title" -%h3.page-title +%h1.page-title = _('Edit Milestone') %hr diff --git a/app/views/groups/milestones/new.html.haml b/app/views/groups/milestones/new.html.haml index 0d4565706d4..9df6d656f82 100644 --- a/app/views/groups/milestones/new.html.haml +++ b/app/views/groups/milestones/new.html.haml @@ -2,7 +2,7 @@ - breadcrumb_title _("New") - page_title _("Milestones"), @milestone.name, _("Milestones") -%h3.page-title +%h1.page-title = _("New Milestone") %hr diff --git a/app/views/groups/settings/applications/edit.html.haml b/app/views/groups/settings/applications/edit.html.haml index cba4892eef9..7967586d312 100644 --- a/app/views/groups/settings/applications/edit.html.haml +++ b/app/views/groups/settings/applications/edit.html.haml @@ -1,5 +1,5 @@ - page_title _("Edit"), @application.name, _("Group applications") - @content_class = "limit-container-width" unless fluid_layout -%h3.page-title= _('Edit group application') +%h1.page-title= _('Edit group application') = render 'shared/doorkeeper/applications/form', url: group_settings_application_path(@group, @application) diff --git a/app/views/groups/settings/applications/show.html.haml b/app/views/groups/settings/applications/show.html.haml index 6e7f6ce4df0..a2f079a7215 100644 --- a/app/views/groups/settings/applications/show.html.haml +++ b/app/views/groups/settings/applications/show.html.haml @@ -3,7 +3,7 @@ - page_title @application.name, _("Group applications") - @content_class = "limit-container-width" unless fluid_layout -%h3.page-title +%h1.page-title = _("Group application: %{name}") % { name: @application.name } = render 'shared/doorkeeper/applications/show', diff --git a/app/views/import/bitbucket/status.html.haml b/app/views/import/bitbucket/status.html.haml index 8946ab898e0..52cb60db749 100644 --- a/app/views/import/bitbucket/status.html.haml +++ b/app/views/import/bitbucket/status.html.haml @@ -1,7 +1,7 @@ - page_title _('Bitbucket import') - header_title _('Projects'), root_path -%h3.page-title.d-flex +%h1.page-title.d-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('bitbucket', css_class: 'gl-mr-2') = _('Import projects from Bitbucket') diff --git a/app/views/import/bitbucket_server/new.html.haml b/app/views/import/bitbucket_server/new.html.haml index 721447186a6..718832b0a1b 100644 --- a/app/views/import/bitbucket_server/new.html.haml +++ b/app/views/import/bitbucket_server/new.html.haml @@ -2,7 +2,7 @@ - header_title _("New project"), new_project_path - add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project') -%h3.page-title.d-flex +%h1.page-title.d-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('bitbucket', css_class: 'gl-mr-2') = _('Import repositories from Bitbucket Server') diff --git a/app/views/import/bitbucket_server/status.html.haml b/app/views/import/bitbucket_server/status.html.haml index 79b2810e06d..4cdef031036 100644 --- a/app/views/import/bitbucket_server/status.html.haml +++ b/app/views/import/bitbucket_server/status.html.haml @@ -1,6 +1,6 @@ - page_title _('Bitbucket Server import') -%h3.page-title.d-flex +%h1.page-title.d-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('bitbucket', css_class: 'gl-mr-2') = _('Import projects from Bitbucket Server') diff --git a/app/views/import/fogbugz/new.html.haml b/app/views/import/fogbugz/new.html.haml index d716d08529c..ef4bff678a6 100644 --- a/app/views/import/fogbugz/new.html.haml +++ b/app/views/import/fogbugz/new.html.haml @@ -2,7 +2,7 @@ - header_title _("New project"), new_project_path - add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project') -%h3.page-title.d-flex +%h1.page-title.d-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('bug', css_class: 'gl-mr-2') = _('Import projects from FogBugz') diff --git a/app/views/import/fogbugz/new_user_map.html.haml b/app/views/import/fogbugz/new_user_map.html.haml index 93572e14a65..330cd8d3f36 100644 --- a/app/views/import/fogbugz/new_user_map.html.haml +++ b/app/views/import/fogbugz/new_user_map.html.haml @@ -2,7 +2,7 @@ - header_title _("New project"), new_project_path - add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project') -%h3.page-title.d-flex +%h1.page-title.d-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('bug', css_class: 'gl-mr-2') = _('Import projects from FogBugz') diff --git a/app/views/import/fogbugz/status.html.haml b/app/views/import/fogbugz/status.html.haml index dcc0e94441c..e858b9f1c4b 100644 --- a/app/views/import/fogbugz/status.html.haml +++ b/app/views/import/fogbugz/status.html.haml @@ -1,5 +1,5 @@ - page_title _("FogBugz import") -%h3.page-title.d-flex +%h1.page-title.d-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('bug', css_class: 'gl-mr-2') = _('Import projects from FogBugz') diff --git a/app/views/import/gitea/new.html.haml b/app/views/import/gitea/new.html.haml index de717ce87eb..6dfa78cbcd2 100644 --- a/app/views/import/gitea/new.html.haml +++ b/app/views/import/gitea/new.html.haml @@ -2,7 +2,7 @@ - header_title _("New project"), new_project_path - add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project') -%h3.page-title +%h1.page-title = custom_icon('gitea_logo') = _('Import Projects from Gitea') diff --git a/app/views/import/gitea/status.html.haml b/app/views/import/gitea/status.html.haml index 1bdcec0c574..c34c3ffaa3b 100644 --- a/app/views/import/gitea/status.html.haml +++ b/app/views/import/gitea/status.html.haml @@ -1,5 +1,5 @@ - page_title _("Gitea Import") -%h3.page-title +%h1.page-title = custom_icon('gitea_logo') = _('Import Projects from Gitea') diff --git a/app/views/import/github/new.html.haml b/app/views/import/github/new.html.haml index fbb27ba620a..cfd65e116c5 100644 --- a/app/views/import/github/new.html.haml +++ b/app/views/import/github/new.html.haml @@ -3,7 +3,7 @@ - header_title _("New project"), new_project_path - add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project') -%h3.page-title +%h1.page-title = title %p diff --git a/app/views/import/github/status.html.haml b/app/views/import/github/status.html.haml index 26b048c8195..b79c5c3092f 100644 --- a/app/views/import/github/status.html.haml +++ b/app/views/import/github/status.html.haml @@ -1,6 +1,6 @@ - title = has_ci_cd_only_params? ? _('Connect repositories from GitHub') : _('GitHub import') - page_title title -%h3.page-title.mb-0.gl-display-flex +%h1.page-title.mb-0.gl-display-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('github', css_class: 'gl-mr-2') = _('Import repositories from GitHub') diff --git a/app/views/import/gitlab/status.html.haml b/app/views/import/gitlab/status.html.haml index b7b1fae1b73..6ec8eb0eff8 100644 --- a/app/views/import/gitlab/status.html.haml +++ b/app/views/import/gitlab/status.html.haml @@ -1,5 +1,5 @@ - page_title _("GitLab.com import") -%h3.page-title +%h1.page-title = sprite_icon('heart', css_class: 'gl-vertical-align-middle') = _('Import projects from GitLab.com') diff --git a/app/views/import/gitlab_projects/new.html.haml b/app/views/import/gitlab_projects/new.html.haml index 533d0d13be3..4c4ca33926d 100644 --- a/app/views/import/gitlab_projects/new.html.haml +++ b/app/views/import/gitlab_projects/new.html.haml @@ -2,7 +2,7 @@ - header_title _("New project"), new_project_path - add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project') -%h3.page-title.d-flex +%h1.page-title.d-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('tanuki', css_class: 'gl-mr-2') = _('Import an exported GitLab project') diff --git a/app/views/import/manifest/new.html.haml b/app/views/import/manifest/new.html.haml index a949e14e273..5415dbcbea6 100644 --- a/app/views/import/manifest/new.html.haml +++ b/app/views/import/manifest/new.html.haml @@ -3,7 +3,7 @@ - add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project') -%h3.page-title +%h1.page-title = _('Manifest file import') = render 'import/shared/errors' diff --git a/app/views/import/manifest/status.html.haml b/app/views/import/manifest/status.html.haml index 45d03575713..9856e0976f9 100644 --- a/app/views/import/manifest/status.html.haml +++ b/app/views/import/manifest/status.html.haml @@ -1,6 +1,6 @@ - page_title _("Manifest import") -%h3.page-title +%h1.page-title = _('Manifest file import') = render 'import/githubish_status', provider: 'manifest' diff --git a/app/views/import/phabricator/new.html.haml b/app/views/import/phabricator/new.html.haml index 0249dc446e4..d9cdc3903ed 100644 --- a/app/views/import/phabricator/new.html.haml +++ b/app/views/import/phabricator/new.html.haml @@ -2,7 +2,7 @@ - header_title _("New project"), new_project_path - add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project') -%h3.page-title.d-flex +%h1.page-title.d-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center = sprite_icon('issues', css_class: 'gl-mr-2') = _('Import tasks from Phabricator into issues') diff --git a/app/views/invites/show.html.haml b/app/views/invites/show.html.haml index 3622fc46983..2789bea70b1 100644 --- a/app/views/invites/show.html.haml +++ b/app/views/invites/show.html.haml @@ -1,5 +1,5 @@ - page_title _("Invitation") -%h3.page-title= _("Invitation") +%h1.page-title= _("Invitation") - if current_user_matches_invite? - if member? diff --git a/app/views/profiles/chat_names/new.html.haml b/app/views/profiles/chat_names/new.html.haml index f008abf376d..0f03516b697 100644 --- a/app/views/profiles/chat_names/new.html.haml +++ b/app/views/profiles/chat_names/new.html.haml @@ -1,4 +1,4 @@ -%h3.page-title +%h1.page-title = _("Authorization required") %main{ :role => "main" } %p.h4 diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml index 9154c94abb6..8d743e72bc3 100644 --- a/app/views/profiles/passwords/new.html.haml +++ b/app/views/profiles/passwords/new.html.haml @@ -1,7 +1,7 @@ - page_title _('New Password') - breadcrumb_title _('New Password') -%h3.page-title= _('Set up new password') +%h1.page-title= _('Set up new password') %hr = form_for @user, url: profile_password_path, method: :post do |f| %p.slead diff --git a/app/views/projects/_visibility_modal.html.haml b/app/views/projects/_visibility_modal.html.haml index db98b978f04..25fd0b78ac8 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= _('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/blob/_new_dir.html.haml b/app/views/projects/blob/_new_dir.html.haml index 3cc9fea56e2..3d87e2daeeb 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= _('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..24603ee54c8 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 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 index 629fa9c0e8a..59e9c2d73a8 100644 --- a/app/views/projects/blob/_upload.html.haml +++ b/app/views/projects/blob/_upload.html.haml @@ -2,7 +2,7 @@ .modal-dialog.modal-lg .modal-content .modal-header - %h3.page-title= title + %h1.page-title= title %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') } %span{ "aria-hidden": "true" } × .modal-body diff --git a/app/views/projects/blob/edit.html.haml b/app/views/projects/blob/edit.html.haml index f80601ef221..2771fba79c5 100644 --- a/app/views/projects/blob/edit.html.haml +++ b/app/views/projects/blob/edit.html.haml @@ -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: '</a>'.html_safe , icon: external_link_icon } -%h3.page-title.blob-edit-page-title +%h1.page-title.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..b2922e22713 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 = _('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/branches/new.html.haml b/app/views/projects/branches/new.html.haml index c06f60bd05d..1e12e17a874 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 = _('New Branch') %hr diff --git a/app/views/projects/compare/index.html.haml b/app/views/projects/compare/index.html.haml index 12d3f28dc20..33ff8a5add7 100644 --- a/app/views/projects/compare/index.html.haml +++ b/app/views/projects/compare/index.html.haml @@ -1,7 +1,7 @@ - breadcrumb_title _("Compare Revisions") - page_title _("Compare") -%h3.page-title +%h1.page-title = _("Compare Git revisions") .sub-header-block - example_branch = capture do diff --git a/app/views/projects/deploy_keys/edit.html.haml b/app/views/projects/deploy_keys/edit.html.haml index 263b0025fe8..98dc15c17f6 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= _('Edit Deploy Key') %hr %div diff --git a/app/views/projects/environments/terminal.html.haml b/app/views/projects/environments/terminal.html.haml index ee31985eaf0..571578dd921 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 = _("Terminal for environment") = @environment.name diff --git a/app/views/projects/hook_logs/show.html.haml b/app/views/projects/hook_logs/show.html.haml index f6861e4119e..1f71e1b7055 100644 --- a/app/views/projects/hook_logs/show.html.haml +++ b/app/views/projects/hook_logs/show.html.haml @@ -2,7 +2,7 @@ - add_to_breadcrumbs _('Webhook Settings'), namespace_project_hooks_path - page_title _('Webhook Logs') -%h3.page-title +%h1.page-title = _("Request details") %hr diff --git a/app/views/projects/imports/new.html.haml b/app/views/projects/imports/new.html.haml index dc2bcfa33bb..4abe58faf80 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 = _('Import repository') %hr diff --git a/app/views/projects/issues/edit.html.haml b/app/views/projects/issues/edit.html.haml index 353ff9c1cc2..00199b42c43 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 Edit Issue ##{@issue.iid} %hr diff --git a/app/views/projects/labels/edit.html.haml b/app/views/projects/labels/edit.html.haml index 8023fb93c64..eb7e5b43d38 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 = _('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/new.html.haml b/app/views/projects/labels/new.html.haml index 1ae87bf93d1..a5c5c1f404c 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 = _('New Label') %hr = render 'shared/labels/form', url: project_labels_path(@project), back_path: project_labels_path(@project) 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 085841a61c7..6e400ae560a 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 @@ -%h1.h2.gl-mb-5 +%h1.page-title = _('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 diff --git a/app/views/projects/merge_requests/edit.html.haml b/app/views/projects/merge_requests/edit.html.haml index 5fcb5d3f876..497eddff9ac 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 Edit merge request #{@merge_request.to_reference} = render 'form' diff --git a/app/views/projects/milestones/edit.html.haml b/app/views/projects/milestones/edit.html.haml index 0d040a5cdb3..5017f116232 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 = _('Edit Milestone') %hr diff --git a/app/views/projects/milestones/new.html.haml b/app/views/projects/milestones/new.html.haml index 721506a2201..d982e09e2c2 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 = _('New Milestone') %hr diff --git a/app/views/projects/pages/show.html.haml b/app/views/projects/pages/show.html.haml index 64760d8972f..e302c6cb68a 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.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/new.html.haml b/app/views/projects/pages_domains/new.html.haml index 0b794226c7f..5ac9ae732e3 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 = _("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 215af766e5a..50328a94eab 100644 --- a/app/views/projects/pages_domains/show.html.haml +++ b/app/views/projects/pages_domains/show.html.haml @@ -11,7 +11,7 @@ .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 = _('Pages Domain') = render 'projects/pages_domains/helper_text' %div diff --git a/app/views/projects/pipeline_schedules/edit.html.haml b/app/views/projects/pipeline_schedules/edit.html.haml index 51f0c58330d..eb2c87b8db5 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 = _("Edit Pipeline Schedule") %hr diff --git a/app/views/projects/pipeline_schedules/new.html.haml b/app/views/projects/pipeline_schedules/new.html.haml index 1b50090e445..6e2da1b9430 100644 --- a/app/views/projects/pipeline_schedules/new.html.haml +++ b/app/views/projects/pipeline_schedules/new.html.haml @@ -5,7 +5,7 @@ - add_to_breadcrumbs("Pipelines", project_pipelines_path(@project)) -%h3.page-title +%h1.page-title = _("Schedule a new pipeline") %hr diff --git a/app/views/projects/pipelines/new.html.haml b/app/views/projects/pipelines/new.html.haml index e92f14fcc63..06949c7e113 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 = s_('Pipeline|Run pipeline') %hr diff --git a/app/views/projects/snippets/edit.html.haml b/app/views/projects/snippets/edit.html.haml index 9f5af1cfe1e..8a25a58a8fe 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 = _("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..df64f817064 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 = _("New Snippet") %hr = render "shared/snippets/form", url: project_snippets_path(@project, @snippet) diff --git a/app/views/projects/tags/new.html.haml b/app/views/projects/tags/new.html.haml index 428d87c6f03..d88397bbc7c 100644 --- a/app/views/projects/tags/new.html.haml +++ b/app/views/projects/tags/new.html.haml @@ -6,7 +6,7 @@ = c.body do = @error -%h3.page-title +%h1.page-title = s_('TagsPage|New Tag') %hr diff --git a/app/views/projects/tracings/show.html.haml b/app/views/projects/tracings/show.html.haml index c9aac68b19d..f306853b0c7 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= _('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 6dce9b27409..c5fe545c4ae 100644 --- a/app/views/projects/usage_quotas/index.html.haml +++ b/app/views/projects/usage_quotas/index.html.haml @@ -6,7 +6,7 @@ = c.body do = _('Refresh the page in a few minutes to view usage.') -%h3.page-title +%h1.page-title = s_('UsageQuota|Usage Quotas') .row diff --git a/app/views/sent_notifications/unsubscribe.html.haml b/app/views/sent_notifications/unsubscribe.html.haml index cacfd601d4d..86c5ad9d0a6 100644 --- a/app/views/sent_notifications/unsubscribe.html.haml +++ b/app/views/sent_notifications/unsubscribe.html.haml @@ -6,7 +6,7 @@ - noteable_url = show_project_path ? url_for([@sent_notification.project, noteable]) : breadcrumb_title_link - page_title _('Unsubscribe'), noteable_text, noteable_type.pluralize, project_path -%h3.page-title +%h1.page-title = _("Unsubscribe from %{type}") % { type: noteable_type } %p diff --git a/app/views/shared/_captcha_check.html.haml b/app/views/shared/_captcha_check.html.haml index 3d611c22491..b7b19a6e8f1 100644 --- a/app/views/shared/_captcha_check.html.haml +++ b/app/views/shared/_captcha_check.html.haml @@ -3,7 +3,7 @@ - script = local_assigns.fetch(:script, true) - method = params[:action] == 'create' ? :post : :put -%h3.page-title +%h1.page-title = _('Anti-spam verification') %hr diff --git a/app/views/shared/integrations/overrides.html.haml b/app/views/shared/integrations/overrides.html.haml index 4619675cfef..15889351af3 100644 --- a/app/views/shared/integrations/overrides.html.haml +++ b/app/views/shared/integrations/overrides.html.haml @@ -3,7 +3,7 @@ - page_title @integration.title, _('Integrations') - @content_class = 'limit-container-width' unless fluid_layout -%h3.page-title +%h1.page-title = @integration.title .js-vue-integration-overrides{ data: integration_overrides_data(@integration, project: @project, group: @group) } diff --git a/app/views/shared/wikis/diff.html.haml b/app/views/shared/wikis/diff.html.haml index 0eeceac28c8..8ef13ff8a28 100644 --- a/app/views/shared/wikis/diff.html.haml +++ b/app/views/shared/wikis/diff.html.haml @@ -5,7 +5,7 @@ .wiki-page-header.top-area.has-sidebar-toggle.flex-column.flex-lg-row = wiki_sidebar_toggle_button - %h3.page-title.gl-flex-grow-1 + %h1.page-title.gl-flex-grow-1 = link_to_wiki_page @page %span.light · diff --git a/app/views/shared/wikis/edit.html.haml b/app/views/shared/wikis/edit.html.haml index e0860bc473d..b5786fcb8b5 100644 --- a/app/views/shared/wikis/edit.html.haml +++ b/app/views/shared/wikis/edit.html.haml @@ -7,7 +7,7 @@ .js-wiki-edit-page.wiki-page-header.top-area.has-sidebar-toggle.flex-column.flex-lg-row = wiki_sidebar_toggle_button - %h3.page-title.gl-flex-grow-1 + %h1.page-title.gl-flex-grow-1 - if @page.persisted? = link_to_wiki_page @page %span.light diff --git a/app/views/shared/wikis/history.html.haml b/app/views/shared/wikis/history.html.haml index afbed3b0f42..be55fef2621 100644 --- a/app/views/shared/wikis/history.html.haml +++ b/app/views/shared/wikis/history.html.haml @@ -4,7 +4,7 @@ .wiki-page-header.top-area.has-sidebar-toggle.flex-column.flex-lg-row = wiki_sidebar_toggle_button - %h3.page-title + %h1.page-title = link_to_wiki_page @page %span.light · diff --git a/app/views/shared/wikis/pages.html.haml b/app/views/shared/wikis/pages.html.haml index abe7753b9f1..1a12993afe1 100644 --- a/app/views/shared/wikis/pages.html.haml +++ b/app/views/shared/wikis/pages.html.haml @@ -5,7 +5,7 @@ - wiki_sort_options = [{ text: s_("Wiki|Title"), value: 'title', href: wiki_path(@wiki, action: :pages, sort: Wiki::TITLE_ORDER)}, { text: s_("Wiki|Created date"), value: 'created_at', href: wiki_path(@wiki, action: :pages, sort: Wiki::CREATED_AT_ORDER) }] .wiki-page-header.top-area.flex-column.flex-lg-row - %h3.page-title.gl-flex-grow-1 + %h1.page-title.gl-flex-grow-1 = s_("Wiki|Wiki Pages") .nav-controls.pb-md-3.pb-lg-0 diff --git a/app/views/snippets/edit.html.haml b/app/views/snippets/edit.html.haml index f737e347c39..09d92a70c10 100644 --- a/app/views/snippets/edit.html.haml +++ b/app/views/snippets/edit.html.haml @@ -3,7 +3,7 @@ - content_for :prefetch_asset_tags do - webpack_preload_asset_tag('monaco') -%h3.page-title +%h1.page-title = _("Edit Snippet") %hr = render 'shared/snippets/form', url: gitlab_snippet_path(@snippet) diff --git a/app/views/users/unsubscribes/show.html.haml b/app/views/users/unsubscribes/show.html.haml index 8b3dc69f3a7..b22b8097333 100644 --- a/app/views/users/unsubscribes/show.html.haml +++ b/app/views/users/unsubscribes/show.html.haml @@ -1,5 +1,5 @@ - page_title _("Unsubscribe"), _("Admin Notifications") -%h3.page-title Unsubscribe from Admin notifications +%h1.page-title Unsubscribe from Admin notifications %hr = form_tag unsubscribe_path(Base64.urlsafe_encode64(@email)) do |