diff options
Diffstat (limited to 'app/views')
60 files changed, 213 insertions, 180 deletions
diff --git a/app/views/admin/application_settings/_ip_limits.html.haml b/app/views/admin/application_settings/_ip_limits.html.haml index c1565cf42e1..b06070d15d4 100644 --- a/app/views/admin/application_settings/_ip_limits.html.haml +++ b/app/views/admin/application_settings/_ip_limits.html.haml @@ -2,44 +2,52 @@ = form_errors(@application_setting) %fieldset + %h5 + = _('Unauthenticated request rate limit') .form-group .form-check = f.check_box :throttle_unauthenticated_enabled, class: 'form-check-input', data: { qa_selector: 'throttle_unauthenticated_checkbox' } - = f.label :throttle_unauthenticated_enabled, class: 'form-check-label' do + = f.label :throttle_unauthenticated_enabled, class: 'form-check-label label-bold' do Enable unauthenticated request rate limit %span.form-text.text-muted Helps reduce request volume (e.g. from crawlers or abusive bots) .form-group - = f.label :throttle_unauthenticated_requests_per_period, 'Max requests per period per IP', class: 'label-bold' + = f.label :throttle_unauthenticated_requests_per_period, 'Max unauthenticated requests per period per IP', class: 'label-bold' = f.number_field :throttle_unauthenticated_requests_per_period, class: 'form-control' .form-group - = f.label :throttle_unauthenticated_period_in_seconds, 'Rate limit period in seconds', class: 'label-bold' + = f.label :throttle_unauthenticated_period_in_seconds, 'Unauthenticated rate limit period in seconds', class: 'label-bold' = f.number_field :throttle_unauthenticated_period_in_seconds, class: 'form-control' + %hr + %h5 + = _('Authenticated API request rate limit') .form-group .form-check = f.check_box :throttle_authenticated_api_enabled, class: 'form-check-input', data: { qa_selector: 'throttle_authenticated_api_checkbox' } - = f.label :throttle_authenticated_api_enabled, class: 'form-check-label' do + = f.label :throttle_authenticated_api_enabled, class: 'form-check-label label-bold' do Enable authenticated API request rate limit %span.form-text.text-muted Helps reduce request volume (e.g. from crawlers or abusive bots) .form-group - = f.label :throttle_authenticated_api_requests_per_period, 'Max requests per period per user', class: 'label-bold' + = f.label :throttle_authenticated_api_requests_per_period, 'Max authenticated API requests per period per user', class: 'label-bold' = f.number_field :throttle_authenticated_api_requests_per_period, class: 'form-control' .form-group - = f.label :throttle_authenticated_api_period_in_seconds, 'Rate limit period in seconds', class: 'label-bold' + = f.label :throttle_authenticated_api_period_in_seconds, 'Authenticated API rate limit period in seconds', class: 'label-bold' = f.number_field :throttle_authenticated_api_period_in_seconds, class: 'form-control' + %hr + %h5 + = _('Authenticated web request rate limit') .form-group .form-check = f.check_box :throttle_authenticated_web_enabled, class: 'form-check-input', data: { qa_selector: 'throttle_authenticated_web_checkbox' } - = f.label :throttle_authenticated_web_enabled, class: 'form-check-label' do + = f.label :throttle_authenticated_web_enabled, class: 'form-check-label label-bold' do Enable authenticated web request rate limit %span.form-text.text-muted Helps reduce request volume (e.g. from crawlers or abusive bots) .form-group - = f.label :throttle_authenticated_web_requests_per_period, 'Max requests per period per user', class: 'label-bold' + = f.label :throttle_authenticated_web_requests_per_period, 'Max authenticated web requests per period per user', class: 'label-bold' = f.number_field :throttle_authenticated_web_requests_per_period, class: 'form-control' .form-group - = f.label :throttle_authenticated_web_period_in_seconds, 'Rate limit period in seconds', class: 'label-bold' + = f.label :throttle_authenticated_web_period_in_seconds, 'Authenticated web rate limit period in seconds', class: 'label-bold' = f.number_field :throttle_authenticated_web_period_in_seconds, class: 'form-control' = f.submit 'Save changes', class: "gl-button btn btn-success", data: { qa_selector: 'save_changes_button' } diff --git a/app/views/admin/application_settings/metrics_and_profiling.html.haml b/app/views/admin/application_settings/metrics_and_profiling.html.haml index 9f1b7195ab7..4959e596148 100644 --- a/app/views/admin/application_settings/metrics_and_profiling.html.haml +++ b/app/views/admin/application_settings/metrics_and_profiling.html.haml @@ -6,7 +6,7 @@ .settings-header %h4 = _('Metrics - Prometheus') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Enable and configure Prometheus metrics.') @@ -17,7 +17,7 @@ .settings-header %h4 = _('Metrics - Grafana') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Enable and configure Grafana.') @@ -28,7 +28,7 @@ .settings-header %h4 = _('Profiling - Performance bar') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Enable access to the Performance Bar for a given group.') @@ -42,7 +42,7 @@ .settings-header#usage-statistics %h4 = _('Usage statistics') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Enable or disable version check and usage ping.') diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml index 220a211cca6..8cc04392752 100644 --- a/app/views/admin/dashboard/index.html.haml +++ b/app/views/admin/dashboard/index.html.haml @@ -9,7 +9,7 @@ dismissible: true.to_s } } = notice[:message].html_safe -- if @license.present? && show_license_breakdown? +- if @license.present? .license-panel.gl-mt-5 = render_if_exists 'admin/licenses/summary' = render_if_exists 'admin/licenses/breakdown' diff --git a/app/views/admin/hooks/_form.html.haml b/app/views/admin/hooks/_form.html.haml index 17bb054b869..5bc5404fada 100644 --- a/app/views/admin/hooks/_form.html.haml +++ b/app/views/admin/hooks/_form.html.haml @@ -18,28 +18,28 @@ .gl-mt-3 = form.check_box :repository_update_events, class: 'float-left' - .prepend-left-20 + .gl-ml-6 = form.label :repository_update_events, class: 'list-label' do %strong Repository update events %p.light This URL will be triggered when repository is updated %li = form.check_box :push_events, class: 'float-left' - .prepend-left-20 + .gl-ml-6 = form.label :push_events, class: 'list-label' do %strong Push events %p.light This URL will be triggered for each branch updated to the repository %li = form.check_box :tag_push_events, class: 'float-left' - .prepend-left-20 + .gl-ml-6 = form.label :tag_push_events, class: 'list-label' do %strong Tag push events %p.light This URL will be triggered when a new tag is pushed to the repository %li = form.check_box :merge_requests_events, class: 'float-left' - .prepend-left-20 + .gl-ml-6 = form.label :merge_requests_events, class: 'list-label' do %strong Merge request events %p.light diff --git a/app/views/admin/runners/_sort_dropdown.html.haml b/app/views/admin/runners/_sort_dropdown.html.haml index 3b3de042511..c6627ae0f27 100644 --- a/app/views/admin/runners/_sort_dropdown.html.haml +++ b/app/views/admin/runners/_sort_dropdown.html.haml @@ -3,7 +3,7 @@ .dropdown.inline.gl-ml-3 %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' } } = sorted_by - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable.dropdown-menu-sort %li = sortable_item(sort_title_created_date, page_filter_path(sort: sort_value_created_date), sorted_by) diff --git a/app/views/admin/runners/show.html.haml b/app/views/admin/runners/show.html.haml index 2c4befb1be2..06925964dc5 100644 --- a/app/views/admin/runners/show.html.haml +++ b/app/views/admin/runners/show.html.haml @@ -9,7 +9,7 @@ %span.runner-state.runner-state-specific Specific -- page_title _("Runners") +- page_title @runner.short_sha - add_to_breadcrumbs _("Runners"), admin_runners_path - breadcrumb_title "##{@runner.id}" @@ -39,17 +39,18 @@ %thead %tr %th Assigned projects - %th - @runner.runner_projects.each do |runner_project| - project = runner_project.project - if project - %tr.alert-info + %tr %td - %strong - = project.full_name - %td - .float-right - = link_to 'Disable', admin_namespace_project_runner_project_path(project.namespace, project, runner_project), method: :delete, class: 'gl-button btn btn-danger btn-sm' + .gl-alert.gl-alert-danger + = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') + .gl-alert-body + %strong + = project.full_name + .gl-alert-actions + = link_to s_('Disable'), admin_namespace_project_runner_project_path(project.namespace, project, runner_project), method: :delete, class: 'btn gl-alert-action btn-info btn-md gl-button' %table.table.unassigned-projects %thead diff --git a/app/views/admin/users/_user.html.haml b/app/views/admin/users/_user.html.haml index 679c4805280..b9f5b92b957 100644 --- a/app/views/admin/users/_user.html.haml +++ b/app/views/admin/users/_user.html.haml @@ -40,7 +40,8 @@ %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) } = s_('AdminUsers|Block') - else - = link_to _('Unblock'), unblock_admin_user_path(user), method: :put + %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: unblock_user_modal_data(user) } + = s_('AdminUsers|Unblock') - else %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) } = s_('AdminUsers|Block') diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml index 9c6f151a6b1..530c6878200 100644 --- a/app/views/admin/users/show.html.haml +++ b/app/views/admin/users/show.html.haml @@ -186,7 +186,8 @@ %li Log in %li Access Git repositories %br - = link_to 'Unblock user', unblock_admin_user_path(@user), method: :put, class: "btn gl-button btn-info", data: { confirm: s_('AdminUsers|Are you sure?') } + %button.btn.gl-button.btn-info.js-confirm-modal-button{ data: unblock_user_modal_data(@user) } + = s_('AdminUsers|Unblock user') - elsif !@user.internal? = render 'admin/users/block_user', user: @user diff --git a/app/views/clusters/clusters/show.html.haml b/app/views/clusters/clusters/show.html.haml index 6ac852af2db..cb464eeafbb 100644 --- a/app/views/clusters/clusters/show.html.haml +++ b/app/views/clusters/clusters/show.html.haml @@ -27,6 +27,7 @@ provider_type: @cluster.provider_type, pre_installed_knative: @cluster.knative_pre_installed? ? 'true': 'false', help_path: help_page_path('user/project/clusters/index.md', anchor: 'installing-applications'), + helm_help_path: help_page_path('user/clusters/applications.md', anchor: 'helm'), ingress_help_path: help_page_path('user/project/clusters/index.md', anchor: 'getting-the-external-endpoint'), ingress_dns_help_path: help_page_path('user/clusters/applications.md', anchor: 'pointing-your-dns-at-the-external-endpoint'), ingress_mod_security_help_path: help_page_path('user/clusters/applications.md', anchor: 'web-application-firewall-modsecurity'), diff --git a/app/views/dashboard/todos/index.html.haml b/app/views/dashboard/todos/index.html.haml index 9a9fbfc1ee8..221d79a30ce 100644 --- a/app/views/dashboard/todos/index.html.haml +++ b/app/views/dashboard/todos/index.html.haml @@ -71,7 +71,7 @@ = sort_options_hash[@sort] - else = sort_title_recently_created - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-sort.dropdown-menu-right %li = link_to todos_filter_path(sort: sort_value_label_priority) do diff --git a/app/views/explore/projects/_filter.html.haml b/app/views/explore/projects/_filter.html.haml index 6fc156cf4ed..2ead8fc2cfd 100644 --- a/app/views/explore/projects/_filter.html.haml +++ b/app/views/explore/projects/_filter.html.haml @@ -10,7 +10,7 @@ = visibility_level_label(params[:visibility_level].to_i) - else = _('Any') - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right %li = link_to filter_projects_path(visibility_level: nil) do diff --git a/app/views/groups/_home_panel.html.haml b/app/views/groups/_home_panel.html.haml index ee08829d990..67f278a06f3 100644 --- a/app/views/groups/_home_panel.html.haml +++ b/app/views/groups/_home_panel.html.haml @@ -6,10 +6,10 @@ .row.mb-3 .home-panel-title-row.col-md-12.col-lg-6.d-flex .avatar-container.rect-avatar.s64.home-panel-avatar.gl-mr-3.float-none - = group_icon(@group, class: 'avatar avatar-tile s64', width: 64, height: 64) + = group_icon(@group, class: 'avatar avatar-tile s64', width: 64, height: 64, itemprop: 'logo') .d-flex.flex-column.flex-wrap.align-items-baseline .d-inline-flex.align-items-baseline - %h1.home-panel-title.gl-mt-3.gl-mb-2 + %h1.home-panel-title.gl-mt-3.gl-mb-2{ itemprop: 'name' } = @group.name %span.visibility-icon.text-secondary.gl-ml-2.has-tooltip{ data: { container: 'body' }, title: visibility_icon_description(@group) } = visibility_level_icon(@group.visibility_level, options: {class: 'icon'}) @@ -34,7 +34,7 @@ - if @group.description.present? .group-home-desc.mt-1 .home-panel-description - .home-panel-description-markdown.read-more-container + .home-panel-description-markdown.read-more-container{ itemprop: 'description' } = markdown_field(@group, :description) %button.btn.btn-blank.btn-link.js-read-more-trigger.d-lg-none{ type: "button" } = _("Read more") diff --git a/app/views/groups/_subgroups_and_projects.html.haml b/app/views/groups/_subgroups_and_projects.html.haml index cb15fe339e1..d9ab828a83b 100644 --- a/app/views/groups/_subgroups_and_projects.html.haml +++ b/app/views/groups/_subgroups_and_projects.html.haml @@ -3,6 +3,6 @@ = render "shared/groups/empty_state" %section{ data: { hide_projects: 'false', group_id: group.id, path: group_path(group) } } - .js-groups-list-holder + .js-groups-list-holder{ data: { show_schema_markup: 'true'} } .loading-container.text-center.prepend-top-20 .spinner.spinner-md diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml index 9d5ec5008dc..109e7c3831e 100644 --- a/app/views/groups/show.html.haml +++ b/app/views/groups/show.html.haml @@ -1,5 +1,6 @@ -- breadcrumb_title _("Details") - @content_class = "limit-container-width" unless fluid_layout +- page_itemtype 'https://schema.org/Organization' +- @skip_current_level_breadcrumb = true - if show_thanks_for_purchase_banner? = render_if_exists 'shared/thanks_for_purchase_banner', plan_title: plan_title, quantity: params[:purchased_quantity].to_i diff --git a/app/views/layouts/_page.html.haml b/app/views/layouts/_page.html.haml index f6fc49393d8..c552454caa7 100644 --- a/app/views/layouts/_page.html.haml +++ b/app/views/layouts/_page.html.haml @@ -17,6 +17,7 @@ = render_account_recovery_regular_check = render_if_exists "layouts/header/ee_subscribable_banner" = render_if_exists "shared/namespace_storage_limit_alert" + = render_if_exists "shared/new_user_signups_cap_reached_alert" = yield :customize_homepage_banner - unless @hide_breadcrumbs = render "layouts/nav/breadcrumbs" diff --git a/app/views/layouts/nav/_breadcrumbs.html.haml b/app/views/layouts/nav/_breadcrumbs.html.haml index f0cdb3d1a51..43f1011a85b 100644 --- a/app/views/layouts/nav/_breadcrumbs.html.haml +++ b/app/views/layouts/nav/_breadcrumbs.html.haml @@ -1,6 +1,7 @@ - container = @no_breadcrumb_container ? 'container-fluid' : container_class - hide_top_links = @hide_top_links || false -- push_to_schema_breadcrumb(@breadcrumb_title, breadcrumb_title_link) +- unless @skip_current_level_breadcrumb + - push_to_schema_breadcrumb(@breadcrumb_title, breadcrumb_title_link) %nav.breadcrumbs{ role: "navigation", class: [container, @content_class] } .breadcrumbs-container{ class: ("border-bottom-0" if @no_breadcrumb_border) } @@ -16,8 +17,10 @@ - @breadcrumbs_extra_links.each do |extra| = breadcrumb_list_item link_to(extra[:text], extra[:link]) = render "layouts/nav/breadcrumbs/collapsed_dropdown", location: :after - %li - %h2.breadcrumbs-sub-title= link_to @breadcrumb_title, breadcrumb_title_link + - unless @skip_current_level_breadcrumb + %li + %h2.breadcrumbs-sub-title + = link_to @breadcrumb_title, breadcrumb_title_link %script{ type:'application/ld+json' } :plain #{schema_breadcrumb_json} diff --git a/app/views/profiles/notifications/show.html.haml b/app/views/profiles/notifications/show.html.haml index 9c5cfe35cda..e1345a94fb1 100644 --- a/app/views/profiles/notifications/show.html.haml +++ b/app/views/profiles/notifications/show.html.haml @@ -3,10 +3,14 @@ %div - if @user.errors.any? - .gl-alert.gl-alert-danger - %ul - - @user.errors.full_messages.each do |msg| - %li= msg + .gl-alert.gl-alert-danger.gl-my-5 + %button.js-close.gl-alert-dismiss{ type: 'button', 'aria-label' => _('Dismiss') } + = sprite_icon('close', css_class: 'gl-icon') + = sprite_icon('error', css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') + .gl-alert-body + %ul + - @user.errors.full_messages.each do |msg| + %li= msg = hidden_field_tag :notification_type, 'global' .row.gl-mt-3 diff --git a/app/views/projects/_home_panel.html.haml b/app/views/projects/_home_panel.html.haml index 569255ec2e5..ebb0dd8b39f 100644 --- a/app/views/projects/_home_panel.html.haml +++ b/app/views/projects/_home_panel.html.haml @@ -19,7 +19,7 @@ = render_if_exists 'compliance_management/compliance_framework/compliance_framework_badge', project: @project .home-panel-metadata.d-flex.flex-wrap.text-secondary.gl-font-base.gl-font-weight-normal.gl-line-height-normal - if can?(current_user, :read_project, @project) - %span.text-secondary{ itemprop: 'identifier' } + %span.text-secondary{ itemprop: 'identifier', data: { qa_selector: 'project_id_content' } } = s_('ProjectPage|Project ID: %{project_id}') % { project_id: @project.id } - if current_user %span.access-request-links.gl-ml-3 @@ -63,7 +63,7 @@ .home-panel-home-desc.mt-1 - if @project.description.present? .home-panel-description.text-break - .home-panel-description-markdown.read-more-container{ itemprop: 'abstract' } + .home-panel-description-markdown.read-more-container{ itemprop: 'description' } = markdown_field(@project, :description) %button.btn.btn-blank.btn-link.js-read-more-trigger.d-lg-none{ type: "button" } = _("Read more") diff --git a/app/views/projects/blob/viewers/_metrics_dashboard_yml_loading.html.haml b/app/views/projects/blob/viewers/_metrics_dashboard_yml_loading.html.haml index aedfb64d3e4..db4b04eaeb8 100644 --- a/app/views/projects/blob/viewers/_metrics_dashboard_yml_loading.html.haml +++ b/app/views/projects/blob/viewers/_metrics_dashboard_yml_loading.html.haml @@ -1,4 +1,4 @@ -= icon('spinner spin fw') += loading_icon(css_class: "gl-vertical-align-text-bottom mr-1") = _('Metrics Dashboard YAML definition') + '…' = link_to _('Learn more'), help_page_path('operations/metrics/dashboards/yaml.md') diff --git a/app/views/projects/buttons/_clone.html.haml b/app/views/projects/buttons/_clone.html.haml index cf58cff7445..938dfc69500 100644 --- a/app/views/projects/buttons/_clone.html.haml +++ b/app/views/projects/buttons/_clone.html.haml @@ -2,7 +2,7 @@ - dropdown_class = local_assigns.fetch(:dropdown_class, '') .git-clone-holder.js-git-clone-holder - %a#clone-dropdown.gl-button.btn.btn-primary.clone-dropdown-btn.qa-clone-dropdown{ href: '#', data: { toggle: 'dropdown' } } + %a#clone-dropdown.gl-button.btn.btn-info.clone-dropdown-btn.qa-clone-dropdown{ href: '#', data: { toggle: 'dropdown' } } %span.gl-mr-2.js-clone-dropdown-label = _('Clone') = sprite_icon("chevron-down", css_class: "icon") @@ -12,7 +12,7 @@ %label.label-bold = _('Clone with SSH') .input-group - = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control qa-ssh-clone-url", readonly: true, aria: { label: 'Project clone URL' } + = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control qa-ssh-clone-url", readonly: true, aria: { label: _('Repository clone URL') } .input-group-append = clipboard_button(target: '#ssh_project_clone', title: _("Copy URL"), class: "input-group-text btn-default btn-clipboard") = render_if_exists 'projects/buttons/geo' @@ -21,7 +21,7 @@ %label.label-bold = _('Clone with %{http_label}') % { http_label: gitlab_config.protocol.upcase } .input-group - = text_field_tag :http_project_clone, project.http_url_to_repo, class: "js-select-on-focus form-control qa-http-clone-url", readonly: true, aria: { label: 'Project clone URL' } + = text_field_tag :http_project_clone, project.http_url_to_repo, class: "js-select-on-focus form-control qa-http-clone-url", readonly: true, aria: { label: _('Repository clone URL') } .input-group-append = clipboard_button(target: '#http_project_clone', title: _("Copy URL"), class: "input-group-text btn-default btn-clipboard") = render_if_exists 'projects/buttons/geo' diff --git a/app/views/projects/ci/pipeline_editor/show.html.haml b/app/views/projects/ci/pipeline_editor/show.html.haml index 0e032f2575e..f1f8658fa3b 100644 --- a/app/views/projects/ci/pipeline_editor/show.html.haml +++ b/app/views/projects/ci/pipeline_editor/show.html.haml @@ -3,4 +3,6 @@ #js-pipeline-editor{ data: { "ci-config-path": @project.ci_config_path_or_default, "project-path" => @project.full_path, "default-branch" => @project.default_branch, + "commit-id" => @project.commit ? @project.commit.id : '', + "new-merge-request-path" => namespace_project_new_merge_request_path, } } diff --git a/app/views/projects/commit/_verified_signature_badge.html.haml b/app/views/projects/commit/_verified_signature_badge.html.haml index 4964b1b8ee7..357ad467539 100644 --- a/app/views/projects/commit/_verified_signature_badge.html.haml +++ b/app/views/projects/commit/_verified_signature_badge.html.haml @@ -1,5 +1,5 @@ - title = capture do - = _('This commit was signed with a <strong>verified</strong> signature and the committer email is verified to belong to the same user.').html_safe + = html_escape(_('This commit was signed with a %{strong_open}verified%{strong_close} signature and the committer email is verified to belong to the same user.')) % { strong_open: '<strong>'.html_safe, strong_close: '</strong>'.html_safe } - locals = { signature: signature, title: title, label: _('Verified'), css_class: 'valid', icon: 'status_success_borderless', show_user: true } diff --git a/app/views/projects/commit/x509/_unverified_signature_badge.html.haml b/app/views/projects/commit/x509/_unverified_signature_badge.html.haml index 680cc32c7e6..6204a6977c0 100644 --- a/app/views/projects/commit/x509/_unverified_signature_badge.html.haml +++ b/app/views/projects/commit/x509/_unverified_signature_badge.html.haml @@ -1,5 +1,5 @@ - title = capture do - = _('This commit was signed with an <strong>unverified</strong> signature.').html_safe + = html_escape(_('This commit was signed with an %{strong_open}unverified%{strong_close} signature.')) % { strong_open: '<strong>'.html_safe, strong_close: '</strong>'.html_safe } - locals = { signature: signature, title: title, label: _('Unverified'), css_class: 'invalid', icon: 'status_notfound_borderless', show_user: true } diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index c6d39f5bba0..2e0bb3b8529 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -1,7 +1,6 @@ - @content_class = "limit-container-width" unless fluid_layout - default_branch_name = @project.default_branch || "master" -- breadcrumb_title _("Details") -- page_title _("Details") +- @skip_current_level_breadcrumb = true = render partial: 'flash_messages', locals: { project: @project } diff --git a/app/views/projects/forks/index.html.haml b/app/views/projects/forks/index.html.haml index 67dc07fb785..89c2c826067 100644 --- a/app/views/projects/forks/index.html.haml +++ b/app/views/projects/forks/index.html.haml @@ -15,7 +15,7 @@ = sort_options_hash[@sort] - else = sort_title_recently_created - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right %li - excluded_filters = [:state, :scope, :label_name, :milestone_id, :assignee_id, :author_id] diff --git a/app/views/projects/issues/_issue.html.haml b/app/views/projects/issues/_issue.html.haml index d9ad171a6cc..3ce85fb46d5 100644 --- a/app/views/projects/issues/_issue.html.haml +++ b/app/views/projects/issues/_issue.html.haml @@ -1,67 +1,66 @@ -# DANGER: Any changes to this file need to be reflected in issuables_list/components/issuable.vue! %li{ id: dom_id(issue), class: issue_css_classes(issue), url: issue_path(issue), data: { labels: issue.label_ids, id: issue.id, qa_selector: 'issue_container', qa_issue_title: issue.title } } - .issue-box + .issuable-info-container - if @can_bulk_update .issue-check.hidden = check_box_tag dom_id(issue, "selected"), nil, false, 'data-id' => issue.id, class: "selected-issuable" - .issuable-info-container - .issuable-main-info - .issue-title.title - %span.issue-title-text.js-onboarding-issue-item{ dir: "auto" } - - if issue.confidential? - %span.has-tooltip{ title: _('Confidential') } - = confidential_icon(issue) - = link_to issue.title, issue_path(issue) - = render_if_exists 'projects/issues/subepic_flag', issue: issue - - if issue.tasks? - %span.task-status.d-none.d-sm-inline-block - - = issue.task_status + .issuable-main-info + .issue-title.title + %span.issue-title-text.js-onboarding-issue-item{ dir: "auto" } + - if issue.confidential? + %span.has-tooltip{ title: _('Confidential') } + = confidential_icon(issue) + = link_to issue.title, issue_path(issue) + = render_if_exists 'projects/issues/subepic_flag', issue: issue + - if issue.tasks? + %span.task-status.d-none.d-sm-inline-block + + = issue.task_status - .issuable-info - %span.issuable-reference - #{issuable_reference(issue)} - %span.issuable-authored.d-none.d-sm-inline-block - · - opened #{time_ago_with_tooltip(issue.created_at, placement: 'bottom')} - by #{link_to_member(@project, issue.author, avatar: false)} - = render_if_exists 'shared/issuable/gitlab_team_member_badge', {author: issue.author} - - if issue.milestone - %span.issuable-milestone.d-none.d-sm-inline-block - - = link_to project_issues_path(issue.project, milestone_title: issue.milestone.title), data: { html: 'true', toggle: 'tooltip', title: milestone_tooltip_due_date(issue.milestone) } do - = sprite_icon('clock', css_class: 'gl-vertical-align-text-bottom') - = issue.milestone.title - - if issue.due_date - %span.issuable-due-date.d-none.d-sm-inline-block.has-tooltip{ class: "#{'cred' if issue.overdue?}", title: _('Due date') } - - = sprite_icon('calendar') - = issue.due_date.to_s(:medium) + .issuable-info + %span.issuable-reference + #{issuable_reference(issue)} + %span.issuable-authored.d-none.d-sm-inline-block + · + opened #{time_ago_with_tooltip(issue.created_at, placement: 'bottom')} + by #{link_to_member(@project, issue.author, avatar: false)} + = render_if_exists 'shared/issuable/gitlab_team_member_badge', {author: issue.author} + - if issue.milestone + %span.issuable-milestone.d-none.d-sm-inline-block + + = link_to project_issues_path(issue.project, milestone_title: issue.milestone.title), data: { html: 'true', toggle: 'tooltip', title: milestone_tooltip_due_date(issue.milestone) } do + = sprite_icon('clock', css_class: 'gl-vertical-align-text-bottom') + = issue.milestone.title + - if issue.due_date + %span.issuable-due-date.d-none.d-sm-inline-block.has-tooltip{ class: "#{'cred' if issue.overdue?}", title: _('Due date') } + + = sprite_icon('calendar') + = issue.due_date.to_s(:medium) - = render_if_exists "projects/issues/issue_weight", issue: issue - = render_if_exists "projects/issues/health_status", issue: issue + = render_if_exists "projects/issues/issue_weight", issue: issue + = render_if_exists "projects/issues/health_status", issue: issue - - if issue.labels.any? - - - presented_labels_sorted_by_title(issue.labels, issue.project).each do |label| - = link_to_label(label, small: true) + - if issue.labels.any? + + - presented_labels_sorted_by_title(issue.labels, issue.project).each do |label| + = link_to_label(label, small: true) - = render "projects/issues/issue_estimate", issue: issue + = render "projects/issues/issue_estimate", issue: issue - .issuable-meta - %ul.controls - - if issue.closed? && issue.moved? - %li.issuable-status - = _('CLOSED (MOVED)') - - elsif issue.closed? - %li.issuable-status - = _('CLOSED') - - if issue.assignees.any? - %li.gl-display-flex - = render 'shared/issuable/assignees', project: @project, issuable: issue + .issuable-meta + %ul.controls + - if issue.closed? && issue.moved? + %li.issuable-status + = _('CLOSED (MOVED)') + - elsif issue.closed? + %li.issuable-status + = _('CLOSED') + - if issue.assignees.any? + %li.gl-display-flex + = render 'shared/issuable/assignees', project: @project, issuable: issue - = render 'shared/issuable_meta_data', issuable: issue + = render 'shared/issuable_meta_data', issuable: issue - .float-right.issuable-updated-at.d-none.d-sm-inline-block - %span - = _('updated %{time_ago}').html_safe % { time_ago: time_ago_with_tooltip(issue.updated_at, placement: 'bottom', html_class: 'issue_update_ago') } + .float-right.issuable-updated-at.d-none.d-sm-inline-block + %span + = _('updated %{time_ago}').html_safe % { time_ago: time_ago_with_tooltip(issue.updated_at, placement: 'bottom', html_class: 'issue_update_ago') } diff --git a/app/views/projects/merge_requests/conflicts/_commit_stats.html.haml b/app/views/projects/merge_requests/conflicts/_commit_stats.html.haml index e6205f24ae6..cb1cb41eb71 100644 --- a/app/views/projects/merge_requests/conflicts/_commit_stats.html.haml +++ b/app/views/projects/merge_requests/conflicts/_commit_stats.html.haml @@ -1,16 +1,11 @@ .content-block.oneline-block.files-changed{ "v-if" => "!isLoading && !hasError" } .inline-parallel-buttons{ "v-if" => "showDiffViewTypeSwitcher" } .btn-group - %button.btn{ ":class" => "{'active': !isParallel}", "@click" => "handleViewTypeChange('inline')" } - Inline - %button.btn{ ":class" => "{'active': isParallel}", "@click" => "handleViewTypeChange('parallel')" } - Side-by-side + %button.btn.gl-button{ ":class" => "{'active': !isParallel}", "@click" => "handleViewTypeChange('inline')" } + = _('Inline') + %button.btn.gl-button{ ":class" => "{'active': isParallel}", "@click" => "handleViewTypeChange('parallel')" } + = _('Side-by-side') .js-toggle-container .commit-stat-summary - Showing - %strong.cred {{conflictsCountText}} - between - %strong.ref-name {{conflictsData.sourceBranch}} - and - %strong.ref-name {{conflictsData.targetBranch}} + = _('Showing %{conflict_start}%{conflicts_text}%{strong_end} between %{ref_start}%{source_branch}%{strong_end} and %{ref_start}%{target_branch}%{strong_end}').html_safe % { conflict_start: '<strong class="cred">'.html_safe, ref_start: '<strong class="ref-name">'.html_safe, strong_end: '</strong>'.html_safe, conflicts_text: '{{conflictsCountText}}', source_branch: '{{conflictsData.sourceBranch}}', target_branch: '{{conflictsData.targetBranch}}' } diff --git a/app/views/projects/merge_requests/conflicts/_file_actions.html.haml b/app/views/projects/merge_requests/conflicts/_file_actions.html.haml index 0839880713f..220ddf1bad3 100644 --- a/app/views/projects/merge_requests/conflicts/_file_actions.html.haml +++ b/app/views/projects/merge_requests/conflicts/_file_actions.html.haml @@ -1,12 +1,12 @@ -.file-actions - .btn-group{ "v-if" => "file.type === 'text'" } - %button.btn{ ":class" => "{ 'active': file.resolveMode == 'interactive' }", +.file-actions.d-flex.align-items-center.gl-ml-auto.gl-align-self-start + .btn-group.gl-mr-3{ "v-if" => "file.type === 'text'" } + %button.btn.gl-button{ ":class" => "{ 'active': file.resolveMode == 'interactive' }", '@click' => "onClickResolveModeButton(file, 'interactive')", type: 'button' } - Interactive mode - %button.btn{ ':class' => "{ 'active': file.resolveMode == 'edit' }", + = _('Interactive mode') + %button.btn.gl-button{ ':class' => "{ 'active': file.resolveMode == 'edit' }", '@click' => "onClickResolveModeButton(file, 'edit')", type: 'button' } - Edit inline - %a.btn.view-file{ ":href" => "file.blobPath" } - View file @{{conflictsData.shortCommitSha}} + = _('Edit inline') + %a.btn.gl-button.view-file{ ":href" => "file.blobPath" } + = _('View file @%{commit_sha}') % { commit_sha: '{{conflictsData.shortCommitSha}}' } diff --git a/app/views/projects/merge_requests/conflicts/_submit_form.html.haml b/app/views/projects/merge_requests/conflicts/_submit_form.html.haml index 94c262d300e..15655e2b162 100644 --- a/app/views/projects/merge_requests/conflicts/_submit_form.html.haml +++ b/app/views/projects/merge_requests/conflicts/_submit_form.html.haml @@ -18,7 +18,7 @@ .offset-md-4.col-md-8 .row .col-6 - %button.btn.btn-success.js-submit-button{ type: "button", "@click" => "commit()", ":disabled" => "!readyToCommit" } + %button.btn.gl-button.btn-success.js-submit-button{ type: "button", "@click" => "commit()", ":disabled" => "!readyToCommit" } %span {{commitButtonText}} .col-6.text-right = link_to "Cancel", project_merge_request_path(@merge_request.project, @merge_request), class: "gl-button btn btn-cancel" diff --git a/app/views/projects/merge_requests/conflicts/show.html.haml b/app/views/projects/merge_requests/conflicts/show.html.haml index decdbce3fa7..827df540629 100644 --- a/app/views/projects/merge_requests/conflicts/show.html.haml +++ b/app/views/projects/merge_requests/conflicts/show.html.haml @@ -20,9 +20,10 @@ .files-wrapper{ "v-if" => "!isLoading && !hasError" } .files .diff-file.file-holder.conflict{ "v-for" => "file in conflictsData.files" } - .js-file-title.file-title - %i.fa.fa-fw{ ":class" => "file.iconClass" } - %strong {{file.filePath}} + .js-file-title.file-title.file-title-flex-parent.cursor-default + .file-header-content + %file-icon{ ':file-name': 'file.filePath', ':size': '18', 'css-classes': 'gl-mr-2' } + %strong.file-title-name {{file.filePath}} = render partial: 'projects/merge_requests/conflicts/file_actions' .diff-content.diff-wrap-lines .file-content{ "v-show" => "!isParallel && file.resolveMode === 'interactive' && file.type === 'text'" } diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml index 6b506c38795..53ea9678c07 100644 --- a/app/views/projects/merge_requests/show.html.haml +++ b/app/views/projects/merge_requests/show.html.haml @@ -58,6 +58,8 @@ = render "projects/merge_requests/description" = render "projects/merge_requests/widget" = render "projects/merge_requests/awards_block" + - if mr_action === "show" + - add_page_startup_api_call discussions_path(@merge_request) #js-vue-mr-discussions{ data: { notes_data: notes_data(@merge_request).to_json, noteable_data: serialize_issuable(@merge_request, serializer: 'noteable'), noteable_type: 'MergeRequest', diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml index 4366676bd45..30ba22ba53c 100644 --- a/app/views/projects/network/show.html.haml +++ b/app/views/projects/network/show.html.haml @@ -8,7 +8,7 @@ = text_field_tag :extended_sha1, @options[:extended_sha1], placeholder: _("Git revision"), class: 'search-input form-control input-mx-250 search-sha' = button_tag class: 'btn btn-success' do = sprite_icon('search') - .inline.prepend-left-20 + .inline.gl-ml-5 .form-check.light = check_box_tag :filter_ref, 1, @options[:filter_ref], class: 'form-check-input' = label_tag :filter_ref, class: 'form-check-label' do diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml index f2972a9617b..a407aa9ac13 100644 --- a/app/views/projects/new.html.haml +++ b/app/views/projects/new.html.haml @@ -8,10 +8,9 @@ .project-edit-errors = render 'projects/errors' - - if experiment_enabled?(:new_create_project_ui) - .js-experiment-new-project-creation{ data: { is_ci_cd_available: ci_cd_projects_available?, has_errors: @project.errors.any? } } + .js-experiment-new-project-creation{ data: { is_ci_cd_available: (ci_cd_projects_available? if Gitlab.ee?), has_errors: @project.errors.any? } } - .row{ 'v-cloak': experiment_enabled?(:new_create_project_ui) } + .row{ 'v-cloak': true } .col-lg-3.profile-settings-sidebar %h4.gl-mt-0 = _('New project') diff --git a/app/views/projects/no_repo.html.haml b/app/views/projects/no_repo.html.haml index 65c4232b240..d7853c1b466 100644 --- a/app/views/projects/no_repo.html.haml +++ b/app/views/projects/no_repo.html.haml @@ -1,5 +1,5 @@ -- breadcrumb_title _("Details") -- page_title _("Details") +- page_title _('No repository') +- @skip_current_level_breadcrumb = true %h2.gl-display-flex .gl-display-flex.gl-align-items-center.gl-justify-content-center diff --git a/app/views/projects/registry/settings/_index.haml b/app/views/projects/registry/settings/_index.haml index c6fae2cc7a1..a4d4a1bb2dd 100644 --- a/app/views/projects/registry/settings/_index.haml +++ b/app/views/projects/registry/settings/_index.haml @@ -5,4 +5,5 @@ older_than_options: older_than_options.to_json, is_admin: current_user&.admin.to_s, admin_settings_path: ci_cd_admin_application_settings_path(anchor: 'js-registry-settings'), - enable_historic_entries: container_expiration_policies_historic_entry_enabled?(@project).to_s} } + enable_historic_entries: container_expiration_policies_historic_entry_enabled?(@project).to_s, + tags_regex_help_page_path: help_page_path('user/packages/container_registry/index', anchor: 'regex-pattern-examples') } } diff --git a/app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml b/app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml index 9d81fda68cb..549ca36cb6a 100644 --- a/app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml +++ b/app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml @@ -1,4 +1,4 @@ -- pretty_name = html_escape(@project&.full_name) || html_escape_once(_('<project name>')).html_safe +- pretty_name = @project&.full_name ? html_escape(@project&.full_name) : '<' + _('project name') + '>' - run_actions_text = html_escape(s_("ProjectService|Perform common operations on GitLab project: %{project_name}")) % { project_name: pretty_name } %p= s_("ProjectService|To set up this service:") diff --git a/app/views/projects/services/slack_slash_commands/_help.html.haml b/app/views/projects/services/slack_slash_commands/_help.html.haml index 86486d95eb7..67c43bd2f33 100644 --- a/app/views/projects/services/slack_slash_commands/_help.html.haml +++ b/app/views/projects/services/slack_slash_commands/_help.html.haml @@ -1,4 +1,4 @@ -- pretty_name = @project&.full_name || _('<project name>') +- pretty_name = @project&.full_name ? html_escape(@project&.full_name) : '<' + _('project name') + '>' - run_actions_text = html_escape_once(s_("ProjectService|Perform common operations on GitLab project: %{project_name}") % { project_name: pretty_name }) .info-well diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index f7c51e9ada9..5b9f868a71a 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -1,5 +1,5 @@ -- breadcrumb_title _("Details") - @content_class = "limit-container-width" unless fluid_layout +- @skip_current_level_breadcrumb = true = content_for :meta_tags do = auto_discovery_link_tag(:atom, project_path(@project, rss_url_options), title: "#{@project.name} activity") diff --git a/app/views/projects/tags/index.html.haml b/app/views/projects/tags/index.html.haml index e0def8cf155..2fe5c5888f5 100644 --- a/app/views/projects/tags/index.html.haml +++ b/app/views/projects/tags/index.html.haml @@ -16,7 +16,7 @@ %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown'} } %span.light = tags_sort_options_hash[@sort] - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable %li.dropdown-header = s_('TagsPage|Sort by') diff --git a/app/views/projects/tags/new.html.haml b/app/views/projects/tags/new.html.haml index fe42394d919..73b2a92dcc0 100644 --- a/app/views/projects/tags/new.html.haml +++ b/app/views/projects/tags/new.html.haml @@ -24,7 +24,7 @@ = hidden_field_tag :ref, default_ref = button_tag type: 'button', title: default_ref, class: 'dropdown-menu-toggle wide js-branch-select monospace', required: true, data: { toggle: 'dropdown', selected: default_ref, field_name: 'ref' } do .text-left.dropdown-toggle-text= default_ref - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') = render 'shared/ref_dropdown', dropdown_class: 'wide' .form-text.text-muted = s_('TagsPage|Existing branch name, tag, or commit SHA') diff --git a/app/views/projects/wikis/git_access.html.haml b/app/views/projects/wikis/git_access.html.haml index c166642bae2..2542860c742 100644 --- a/app/views/projects/wikis/git_access.html.haml +++ b/app/views/projects/wikis/git_access.html.haml @@ -11,7 +11,7 @@ %strong= @wiki.full_path .pt-3.pt-lg-0.w-100 - = render "shared/clone_panel", project: @wiki + = render "shared/clone_panel", container: @wiki .wiki-git-access %h3= s_("WikiClone|Install Gollum") diff --git a/app/views/registrations/experience_levels/show.html.haml b/app/views/registrations/experience_levels/show.html.haml index 24b87790e18..f878245a48c 100644 --- a/app/views/registrations/experience_levels/show.html.haml +++ b/app/views/registrations/experience_levels/show.html.haml @@ -15,8 +15,8 @@ = image_tag 'novice.svg', width: '78', height: '78', alt: '' %div %p.gl-font-lg.gl-font-weight-bold.gl-mb-2= _('Novice') - %p= _('I’m not very familiar with the basics of project management and DevOps.') - = link_to _('Show me everything'), users_sign_up_experience_level_path(experience_level: :novice, namespace_path: params[:namespace_path]), method: :patch, class: 'stretched-link' + %p= _('I’m not familiar with the basics of DevOps.') + = link_to _('Show me the basics'), users_sign_up_experience_level_path(experience_level: :novice, namespace_path: params[:namespace_path]), method: :patch, class: 'stretched-link' .card .card-body.gl-display-flex.gl-py-8.gl-pr-5.gl-pl-7 @@ -24,5 +24,5 @@ = image_tag 'experienced.svg', width: '78', height: '78', alt: '' %div %p.gl-font-lg.gl-font-weight-bold.gl-mb-2= _('Experienced') - %p= _('I’m familiar with the basics of project management and DevOps.') - = link_to _('Show me more advanced stuff'), users_sign_up_experience_level_path(experience_level: :experienced, namespace_path: params[:namespace_path]), method: :patch, class: 'stretched-link' + %p= _('I’m familiar with the basics of DevOps.') + = link_to _('Show me advanced features'), users_sign_up_experience_level_path(experience_level: :experienced, namespace_path: params[:namespace_path]), method: :patch, class: 'stretched-link' diff --git a/app/views/search/_filter.html.haml b/app/views/search/_filter.html.haml index 964a2a2772a..05895d83c2b 100644 --- a/app/views/search/_filter.html.haml +++ b/app/views/search/_filter.html.haml @@ -14,7 +14,7 @@ = @project&.full_name || _("Any") - if @project.present? = link_to sprite_icon("clear"), url_for(safe_params.except(:project_id)), class: 'search-clear js-search-clear has-tooltip', title: _('Clear') - = icon("chevron-down") + = sprite_icon("chevron-down", css_class: 'dropdown-menu-toggle-icon gl-top-3') .dropdown-menu.dropdown-select.dropdown-menu-selectable.dropdown-menu-right = dropdown_title(_("Filter results by project")) = dropdown_filter(_("Search projects")) diff --git a/app/views/search/_sort_dropdown.html.haml b/app/views/search/_sort_dropdown.html.haml index 085e2f348f7..c4c5a490ff5 100644 --- a/app/views/search/_sort_dropdown.html.haml +++ b/app/views/search/_sort_dropdown.html.haml @@ -8,7 +8,7 @@ .btn-group{ role: 'group' } %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' }, class: 'btn btn-default' } = sort_title - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable.dropdown-menu-sort %li = render_if_exists('search/sort_by_relevancy', sort_title: sort_title) diff --git a/app/views/shared/_alert_info.html.haml b/app/views/shared/_alert_info.html.haml new file mode 100644 index 00000000000..e47c100909a --- /dev/null +++ b/app/views/shared/_alert_info.html.haml @@ -0,0 +1,6 @@ +.gl-alert.gl-alert-info + = sprite_icon('information-o', 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') + .gl-alert-body + = body diff --git a/app/views/shared/_clone_panel.html.haml b/app/views/shared/_clone_panel.html.haml index 9ec8d3c18cd..1ed37c7a5c4 100644 --- a/app/views/shared/_clone_panel.html.haml +++ b/app/views/shared/_clone_panel.html.haml @@ -1,11 +1,9 @@ -- project = project || @project - .git-clone-holder.js-git-clone-holder.input-group .input-group-prepend - if allowed_protocols_present? .input-group-text.clone-dropdown-btn.btn %span.js-clone-dropdown-label - = enabled_project_button(project, enabled_protocol) + = enabled_protocol_button(container, enabled_protocol) - else %a#clone-dropdown.input-group-text.btn.clone-dropdown-btn.qa-clone-dropdown{ href: '#', data: { toggle: 'dropdown' } } %span.js-clone-dropdown-label @@ -13,12 +11,12 @@ = icon('caret-down') %ul.dropdown-menu.dropdown-menu-selectable.clone-options-dropdown %li - = ssh_clone_button(project) + = ssh_clone_button(container) %li - = http_clone_button(project) - = render_if_exists 'shared/kerberos_clone_button', project: project + = http_clone_button(container) + = render_if_exists 'shared/kerberos_clone_button', container: container - = text_field_tag :project_clone, default_url_to_repo(project), class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Project clone URL') } + = text_field_tag :clone_url, default_url_to_repo(container), class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') } .input-group-append - = clipboard_button(target: '#project_clone', title: _("Copy URL"), class: "input-group-text btn-default btn-clipboard") + = clipboard_button(target: '#clone_url', title: _("Copy URL"), class: "input-group-text btn-default btn-clipboard") diff --git a/app/views/shared/_milestones_sort_dropdown.html.haml b/app/views/shared/_milestones_sort_dropdown.html.haml index 06da990e071..29c01343358 100644 --- a/app/views/shared/_milestones_sort_dropdown.html.haml +++ b/app/views/shared/_milestones_sort_dropdown.html.haml @@ -5,7 +5,7 @@ = milestone_sort_options_hash[@sort] - else = sort_title_due_date_soon - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-sort %li = link_to page_filter_path(sort: sort_value_due_date_soon) do diff --git a/app/views/shared/_no_password.html.haml b/app/views/shared/_no_password.html.haml index 76ae63ca5e8..9c1e5a49b44 100644 --- a/app/views/shared/_no_password.html.haml +++ b/app/views/shared/_no_password.html.haml @@ -5,7 +5,7 @@ = sprite_icon('close', size: 16, css_class: 'gl-icon') .gl-alert-body - translation_params = { protocol: gitlab_config.protocol.upcase, set_password_link: link_to_set_password } - - set_password_message = _("You won't be able to pull or push project code via %{protocol} until you %{set_password_link} on your account") % translation_params + - set_password_message = _("You won't be able to pull or push repositories via %{protocol} until you %{set_password_link} on your account") % translation_params = set_password_message.html_safe .gl-alert-actions = link_to _('Remind later'), '#', class: 'hide-no-password-message btn gl-alert-action btn-info btn-md gl-button' diff --git a/app/views/shared/_no_ssh.html.haml b/app/views/shared/_no_ssh.html.haml index a083a772233..0a7fa2a3c1e 100644 --- a/app/views/shared/_no_ssh.html.haml +++ b/app/views/shared/_no_ssh.html.haml @@ -4,7 +4,7 @@ %button{ class: 'gl-alert-dismiss hide-no-ssh-message', type: 'button', 'aria-label': _('Dismiss') } = sprite_icon('close', css_class: 'gl-icon s16') .gl-alert-body - = s_("MissingSSHKeyWarningLink|You won't be able to pull or push project code via SSH until you add an SSH key to your profile").html_safe + = s_("MissingSSHKeyWarningLink|You won't be able to pull or push repositories via SSH until you add an SSH key to your profile") .gl-alert-actions = link_to s_('MissingSSHKeyWarningLink|Add SSH key'), profile_keys_path, class: "btn gl-alert-action btn-warning btn-md new-gl-button" = link_to s_("MissingSSHKeyWarningLink|Don't show again"), profile_path(user: {hide_no_ssh_key: true}), method: :put, role: 'button', class: 'btn gl-alert-action btn-md btn-warning gl-button btn-warning-secondary' diff --git a/app/views/shared/groups/_dropdown.html.haml b/app/views/shared/groups/_dropdown.html.haml index 9d2d3ce20c7..75c34102935 100644 --- a/app/views/shared/groups/_dropdown.html.haml +++ b/app/views/shared/groups/_dropdown.html.haml @@ -1,24 +1,17 @@ - options_hash = local_assigns.fetch(:options_hash, groups_sort_options_hash) - show_archive_options = local_assigns.fetch(:show_archive_options, false) -- if @sort.present? - - default_sort_by = @sort -- else - - if params[:sort] - - default_sort_by = params[:sort] - - else - - default_sort_by = sort_value_recently_created .dropdown.inline.js-group-filter-dropdown-wrap.gl-mr-3 %button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' } %span.dropdown-label - = options_hash[default_sort_by] - = icon('chevron-down') + = options_hash[project_list_sort_by] + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable %li.dropdown-header = _("Sort by") - options_hash.each do |value, title| %li.js-filter-sort-order - = link_to filter_groups_path(sort: value), class: ("is-active" if default_sort_by == value) do + = link_to filter_groups_path(sort: value), class: ("is-active" if project_list_sort_by == value) do = title - if show_archive_options %li.divider diff --git a/app/views/shared/issuable/form/_metadata_issuable_assignee.html.haml b/app/views/shared/issuable/form/_metadata_issuable_assignee.html.haml index 60dc893d9f9..b437ee1ec5f 100644 --- a/app/views/shared/issuable/form/_metadata_issuable_assignee.html.haml +++ b/app/views/shared/issuable/form/_metadata_issuable_assignee.html.haml @@ -1,4 +1,4 @@ -= form.label :assignee_id, "Assignee", class: "col-form-label #{has_due_date ? "col-md-2 col-lg-4" : "col-sm-2"}" += form.label :assignee_id, issuable.allows_multiple_assignees? ? _('Assignees') : _('Assignee'), class: "col-form-label #{has_due_date ? "col-md-2 col-lg-4" : "col-sm-2"}" .col-sm-10{ class: ("col-md-8" if has_due_date) } .issuable-form-select-holder.selectbox - issuable.assignees.each do |assignee| diff --git a/app/views/shared/issuable/form/_metadata_issuable_reviewer.html.haml b/app/views/shared/issuable/form/_metadata_issuable_reviewer.html.haml index a8b033bba36..5ff3a6781ad 100644 --- a/app/views/shared/issuable/form/_metadata_issuable_reviewer.html.haml +++ b/app/views/shared/issuable/form/_metadata_issuable_reviewer.html.haml @@ -1,4 +1,4 @@ -= form.label :reviewer_id, "Reviewer", class: "col-form-label #{has_due_date ? "col-md-2 col-lg-4" : "col-sm-2"}" += form.label :reviewer_id, issuable.allows_multiple_reviewers? ? _('Reviewers') : _('Reviewer'), class: "col-form-label #{has_due_date ? "col-md-2 col-lg-4" : "col-sm-2"}" .col-sm-10{ class: ("col-md-8" if has_due_date) } .issuable-form-select-holder.selectbox - issuable.reviewers.each do |reviewer| diff --git a/app/views/shared/labels/_sort_dropdown.html.haml b/app/views/shared/labels/_sort_dropdown.html.haml index 07e96eea062..cfc00bd41ca 100644 --- a/app/views/shared/labels/_sort_dropdown.html.haml +++ b/app/views/shared/labels/_sort_dropdown.html.haml @@ -2,7 +2,7 @@ .dropdown.inline %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } } = sort_title - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-sort %li - label_sort_options_hash.each do |value, title| diff --git a/app/views/shared/members/_group.html.haml b/app/views/shared/members/_group.html.haml index 42e12d92a7d..d98ba074687 100644 --- a/app/views/shared/members/_group.html.haml +++ b/app/views/shared/members/_group.html.haml @@ -27,7 +27,7 @@ data: { toggle: "dropdown", field_name: "group_link[group_access]" } } %span.dropdown-toggle-text = group_link.human_access - = icon("chevron-down") + = sprite_icon("chevron-down", css_class: "dropdown-menu-toggle-icon gl-top-3") .dropdown-menu.dropdown-select.dropdown-menu-right.dropdown-menu-selectable = dropdown_title(_("Change permissions")) .dropdown-content diff --git a/app/views/shared/members/_member.html.haml b/app/views/shared/members/_member.html.haml index e294936f82c..79bbb74d601 100644 --- a/app/views/shared/members/_member.html.haml +++ b/app/views/shared/members/_member.html.haml @@ -79,7 +79,7 @@ data: { toggle: "dropdown", field_name: "#{f.object_name}[access_level]", qa_selector: "access_level_dropdown" } } %span.dropdown-toggle-text = member.human_access - = icon("chevron-down") + = sprite_icon("chevron-down", css_class: "dropdown-menu-toggle-icon gl-top-3") .dropdown-menu.dropdown-select.dropdown-menu-right.dropdown-menu-selectable = dropdown_title(_("Change permissions")) .dropdown-content diff --git a/app/views/shared/projects/_sort_dropdown.html.haml b/app/views/shared/projects/_sort_dropdown.html.haml index f5f940db189..3e810dc6f08 100644 --- a/app/views/shared/projects/_sort_dropdown.html.haml +++ b/app/views/shared/projects/_sort_dropdown.html.haml @@ -5,7 +5,7 @@ .btn-group.w-100.dropdown.js-project-filter-dropdown-wrap{ role: "group" } %button#sort-projects-dropdown.btn.btn-default.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' } } = toggle_text - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable %li.dropdown-header = _("Sort by") diff --git a/app/views/shared/web_hooks/_form.html.haml b/app/views/shared/web_hooks/_form.html.haml index c5234f14090..4dd434ad1db 100644 --- a/app/views/shared/web_hooks/_form.html.haml +++ b/app/views/shared/web_hooks/_form.html.haml @@ -10,7 +10,7 @@ = s_('Webhooks|Use this token to validate received payloads. It will be sent with the request in the X-Gitlab-Token HTTP header.') .form-group = form.label :url, s_('Webhooks|Trigger'), class: 'label-bold' - %ul.list-unstyled.prepend-left-20 + %ul.list-unstyled.gl-ml-6 %li = form.check_box :push_events, class: 'form-check-input' = form.label :push_events, class: 'list-label form-check-label ml-1' do diff --git a/app/views/shared/wikis/_form.html.haml b/app/views/shared/wikis/_form.html.haml index dde1b3afa2d..b6504c7a17e 100644 --- a/app/views/shared/wikis/_form.html.haml +++ b/app/views/shared/wikis/_form.html.haml @@ -36,7 +36,7 @@ .col-sm-10 .select-wrapper = f.select :format, options_for_select(Wiki::MARKUPS, {selected: @page.format}), {}, class: 'form-control select-control' - = icon('chevron-down') + = sprite_icon('chevron-down', css_class: 'gl-absolute gl-top-3 gl-right-3 gl-text-gray-200') .form-group.row .col-sm-2.col-form-label= f.label :content, class: 'control-label-full-width' diff --git a/app/views/shared/wikis/_sidebar.html.haml b/app/views/shared/wikis/_sidebar.html.haml index c0ed7b4c6f2..7022762840e 100644 --- a/app/views/shared/wikis/_sidebar.html.haml +++ b/app/views/shared/wikis/_sidebar.html.haml @@ -10,11 +10,14 @@ = sprite_icon('download', css_class: 'gl-mr-2') %span= _("Clone repository") + - if @sidebar_error.present? + = render 'shared/alert_info', body: s_('Wiki|The sidebar failed to load. You can reload the page to try again.') + .blocks-container .block.block-first.w-100 - if @sidebar_page = render_wiki_content(@sidebar_page) - - else + - elsif @sidebar_wiki_entries %ul.wiki-pages = render @sidebar_wiki_entries, context: 'sidebar' .block.w-100 diff --git a/app/views/shared/wikis/git_error.html.haml b/app/views/shared/wikis/git_error.html.haml new file mode 100644 index 00000000000..dab3b940b9a --- /dev/null +++ b/app/views/shared/wikis/git_error.html.haml @@ -0,0 +1,14 @@ +- if @page + - wiki_page_title @page + +- add_page_specific_style 'page_bundles/wiki' + +- git_access_url = wiki_path(@wiki, action: :git_access) + +.wiki-page-header.top-area.gl-flex-direction-column.gl-lg-flex-direction-row + .gl-mt-5.gl-mb-3 + .gl-display-flex.gl-justify-content-space-between + %h2.gl-mt-0.gl-mb-5{ data: { qa_selector: 'wiki_page_title', testid: 'wiki_page_title' } }= @page ? @page.human_title : _('Failed to retrieve page') + .js-wiki-page-content.md.gl-pt-2{ data: { qa_selector: 'wiki_page_content', testid: 'wiki_page_content' } } + = _('The page could not be displayed because it timed out.') + = html_escape(_('You can view the source or %{linkStart}%{cloneIcon} clone the repository%{linkEnd}')) % { linkStart: "<a href=\"#{git_access_url}\">".html_safe, linkEnd: '</a>'.html_safe, cloneIcon: sprite_icon('download', css_class: 'gl-mr-2').html_safe } |