diff options
Diffstat (limited to 'app/views/projects')
95 files changed, 424 insertions, 427 deletions
diff --git a/app/views/projects/_deletion_failed.html.haml b/app/views/projects/_deletion_failed.html.haml index 4f3698f91e6..7e65f2f1cef 100644 --- a/app/views/projects/_deletion_failed.html.haml +++ b/app/views/projects/_deletion_failed.html.haml @@ -1,6 +1,8 @@ - project = local_assigns.fetch(:project) - return unless project.delete_error.present? -.project-deletion-failed-message.alert.alert-warning - This project was scheduled for deletion, but failed with the following message: - = project.delete_error +.project-deletion-failed-message.gl-alert.gl-alert-warning + = sprite_icon('warning', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') + .gl-alert-body + This project was scheduled for deletion, but failed with the following message: + = project.delete_error diff --git a/app/views/projects/_import_project_pane.html.haml b/app/views/projects/_import_project_pane.html.haml index dd7971f6db0..fe3354aefbb 100644 --- a/app/views/projects/_import_project_pane.html.haml +++ b/app/views/projects/_import_project_pane.html.haml @@ -46,7 +46,8 @@ - if fogbugz_import_enabled? %div = link_to new_import_fogbugz_path, class: 'btn import_fogbugz', **tracking_attrs(track_label, 'click_button', 'fogbugz') do - = icon('bug', text: 'FogBugz') + = sprite_icon('bug') + FogBugz - if gitea_import_enabled? %div diff --git a/app/views/projects/_issuable_by_email.html.haml b/app/views/projects/_issuable_by_email.html.haml index 0b2d179456d..c11ee765cca 100644 --- a/app/views/projects/_issuable_by_email.html.haml +++ b/app/views/projects/_issuable_by_email.html.haml @@ -37,9 +37,9 @@ = render 'by_email_description' %p This is a private email address - - %a{ href: 'https://docs.gitlab.com/ee/development/emails.html#email-namespace', target: "_blank", rel: "noopener" } - %i.fa.fa-question-circle{ 'aria-label': "Learn more about incoming email addresses" } + %span< + = link_to help_page_path('development/emails', anchor: 'email-namespace'), target: '_blank', rel: 'noopener', aria: { label: 'Learn more about incoming email addresses' } do + = sprite_icon('question-o') generated just for you. diff --git a/app/views/projects/_merge_request_merge_checks_settings.html.haml b/app/views/projects/_merge_request_merge_checks_settings.html.haml index 9cebb191346..7a5997bbcfd 100644 --- a/app/views/projects/_merge_request_merge_checks_settings.html.haml +++ b/app/views/projects/_merge_request_merge_checks_settings.html.haml @@ -9,7 +9,7 @@ = s_('ProjectSettings|Pipelines must succeed') .text-secondary = s_('ProjectSettings|Pipelines need to be configured to enable this feature.') - = link_to icon('question-circle'), + = link_to sprite_icon('question-o'), help_page_path('ci/merge_request_pipelines/index.md', anchor: 'pipelines-for-merge-requests'), target: '_blank' @@ -21,6 +21,6 @@ .text-secondary = s_('ProjectSettings|This introduces the risk of merging changes that will not pass the pipeline.') .form-check.mb-2 - = form.check_box :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-input' + = form.check_box :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-input', data: { qa_selector: 'allow_merge_if_all_discussions_are_resolved_checkbox' } = form.label :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-label' do = s_('ProjectSettings|All discussions must be resolved') diff --git a/app/views/projects/_merge_request_merge_suggestions_settings.html.haml b/app/views/projects/_merge_request_merge_suggestions_settings.html.haml index 12f26a7e315..258cf86ab05 100644 --- a/app/views/projects/_merge_request_merge_suggestions_settings.html.haml +++ b/app/views/projects/_merge_request_merge_suggestions_settings.html.haml @@ -4,7 +4,7 @@ %b= s_('ProjectSettings|Merge suggestions') %p.text-secondary = s_('ProjectSettings|The commit message used to apply merge request suggestions') - = link_to icon('question-circle'), + = link_to sprite_icon('question-o'), help_page_path('user/discussions/index.md', anchor: 'configure-the-commit-message-for-applied-suggestions'), target: '_blank' diff --git a/app/views/projects/_new_project_fields.html.haml b/app/views/projects/_new_project_fields.html.haml index e0a426607d4..ee35f734e3e 100644 --- a/app/views/projects/_new_project_fields.html.haml +++ b/app/views/projects/_new_project_fields.html.haml @@ -47,7 +47,7 @@ = f.label :visibility_level, class: 'label-bold' do = s_('ProjectsNew|Visibility Level') - = link_to icon('question-circle'), help_page_path("public_access/public_access"), aria: { label: 'Documentation for Visibility Level' }, target: '_blank', rel: 'noopener noreferrer' + = link_to sprite_icon('question-o'), help_page_path('public_access/public_access'), aria: { label: 'Documentation for Visibility Level' }, target: '_blank', rel: 'noopener noreferrer' = render 'shared/visibility_level', f: f, visibility_level: visibility_level.to_i, can_change_visibility_level: true, form_model: @project, with_label: false - if !hide_init_with_readme diff --git a/app/views/projects/_service_desk_settings.html.haml b/app/views/projects/_service_desk_settings.html.haml index 7c08955983a..fceef0624d7 100644 --- a/app/views/projects/_service_desk_settings.html.haml +++ b/app/views/projects/_service_desk_settings.html.haml @@ -10,7 +10,7 @@ - if ::Gitlab::ServiceDesk.supported? .js-service-desk-setting-root{ data: { endpoint: project_service_desk_path(@project), enabled: "#{@project.service_desk_enabled}", - incoming_email: (@project.service_desk_incoming_address if @project.service_desk_enabled), + incoming_email: (@project.service_desk_address if @project.service_desk_enabled), custom_email: (@project.service_desk_custom_address if @project.service_desk_enabled), selected_template: "#{@project.service_desk_setting&.issue_template_key}", outgoing_name: "#{@project.service_desk_setting&.outgoing_name}", diff --git a/app/views/projects/artifacts/_tree_directory.html.haml b/app/views/projects/artifacts/_tree_directory.html.haml index 1a9ce8d0508..c68cc19f6c1 100644 --- a/app/views/projects/artifacts/_tree_directory.html.haml +++ b/app/views/projects/artifacts/_tree_directory.html.haml @@ -3,6 +3,6 @@ %tr.tree-item{ 'data-link' => path_to_directory } %td.tree-item-file-name = tree_icon('folder', '755', directory.name) - = link_to path_to_directory, class: 'str-truncated' do + = link_to path_to_directory, class: 'str-truncated', data: { qa_selector: 'directory_name_link', qa_directory_name: directory.name } do %span= directory.name %td diff --git a/app/views/projects/blob/_content.html.haml b/app/views/projects/blob/_content.html.haml index 7afbd85cd6d..11946f22811 100644 --- a/app/views/projects/blob/_content.html.haml +++ b/app/views/projects/blob/_content.html.haml @@ -1,6 +1,10 @@ - simple_viewer = blob.simple_viewer - rich_viewer = blob.rich_viewer - rich_viewer_active = rich_viewer && params[:viewer] != 'simple' +- blob_data = defined?(@blob) ? @blob.data : {} +- filename = defined?(@blob) ? @blob.name : '' + +#js-blob-toggle-graph-preview{ data: { blob_data: blob_data, filename: filename } } = render 'projects/blob/viewer', viewer: simple_viewer, hidden: rich_viewer_active diff --git a/app/views/projects/blob/_editor.html.haml b/app/views/projects/blob/_editor.html.haml index 787dc3b030f..cea65bf9b4e 100644 --- a/app/views/projects/blob/_editor.html.haml +++ b/app/views/projects/blob/_editor.html.haml @@ -23,6 +23,7 @@ .js-suggest-gitlab-ci-yml{ data: { toggle: 'popover', target: '#gitlab-ci-yml-selector', track_label: 'suggest_gitlab_ci_yml', + merge_request_path: params[:mr_path], dismiss_key: @project.id, human_access: human_access } } diff --git a/app/views/projects/blob/_pipeline_tour_success.html.haml b/app/views/projects/blob/_pipeline_tour_success.html.haml index cf1427df044..3ea2defb2b3 100644 --- a/app/views/projects/blob/_pipeline_tour_success.html.haml +++ b/app/views/projects/blob/_pipeline_tour_success.html.haml @@ -1,3 +1,4 @@ .js-success-pipeline-modal{ data: { 'commit-cookie': suggest_pipeline_commit_cookie_name, 'go-to-pipelines-path': project_pipelines_path(@project), + 'project-merge-requests-path': project_merge_requests_path(@project), 'human-access': @project.team.human_max_access(current_user&.id) } } diff --git a/app/views/projects/blob/_template_selectors.html.haml b/app/views/projects/blob/_template_selectors.html.haml index 2aefcdc5762..b4962f4e78e 100644 --- a/app/views/projects/blob/_template_selectors.html.haml +++ b/app/views/projects/blob/_template_selectors.html.haml @@ -1,4 +1,4 @@ -.template-selectors-menu.gl-pl-2-deprecated-no-really-do-not-use-me +.template-selectors-menu.gl-pl-3 .template-selector-dropdowns-wrap .template-type-selector.js-template-type-selector-wrap.hidden - toggle_text = should_suggest_gitlab_ci_yml? ? '.gitlab-ci.yml' : 'Select a template type' diff --git a/app/views/projects/blob/edit.html.haml b/app/views/projects/blob/edit.html.haml index 7d072ba5899..9bb4342ffb4 100644 --- a/app/views/projects/blob/edit.html.haml +++ b/app/views/projects/blob/edit.html.haml @@ -2,10 +2,16 @@ - page_title _("Edit"), @blob.path, @ref - if @conflict - .alert.alert-danger - Someone edited the file the same time you did. Please check out - = link_to "the file", project_blob_path(@project, tree_join(@branch_name, @file_path)), target: "_blank", rel: 'noopener noreferrer' - and make sure your changes will not unintentionally remove theirs. + .gl-alert.gl-alert-danger.gl-mb-5.gl-mt-5 + = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') + .gl-alert-body + Someone edited the file the same time you did. Please check out + = link_to "the file", project_blob_path(@project, tree_join(@branch_name, @file_path)), target: "_blank", rel: 'noopener noreferrer', class: 'gl-link' + and make sure your changes will not unintentionally remove theirs. + +- if editing_ci_config? && show_web_ide_alert? + #js-suggest-web-ide-ci{ data: { dismiss_endpoint: user_callouts_path, feature_id: UserCalloutsHelper::WEB_IDE_ALERT_DISMISSED, edit_path: ide_edit_path } } + .editor-title-row %h3.page-title.blob-edit-page-title Edit file diff --git a/app/views/projects/blob/new.html.haml b/app/views/projects/blob/new.html.haml index 48ffd80aa9c..a939f43d5e2 100644 --- a/app/views/projects/blob/new.html.haml +++ b/app/views/projects/blob/new.html.haml @@ -15,6 +15,7 @@ - if should_suggest_gitlab_ci_yml? .js-suggest-gitlab-ci-yml-commit-changes{ data: { toggle: 'popover', target: '#commit-changes', + merge_request_path: params[:mr_path], track_label: 'suggest_commit_first_project_gitlab_ci_yml', dismiss_key: @project.id, human_access: human_access } } diff --git a/app/views/projects/blob/viewers/_gitlab_ci_yml_loading.html.haml b/app/views/projects/blob/viewers/_gitlab_ci_yml_loading.html.haml index 10cbf6a2f7a..379a6c3084a 100644 --- a/app/views/projects/blob/viewers/_gitlab_ci_yml_loading.html.haml +++ b/app/views/projects/blob/viewers/_gitlab_ci_yml_loading.html.haml @@ -1,4 +1,4 @@ -= icon('spinner spin fw') += loading_icon(css_class: "gl-vertical-align-text-bottom mr-1") Validating GitLab CI configuration… = link_to 'Learn more', help_page_path('ci/yaml/README') diff --git a/app/views/projects/blob/viewers/_loading.html.haml b/app/views/projects/blob/viewers/_loading.html.haml index 5fbe9b0df0c..18fd0d87ce6 100644 --- a/app/views/projects/blob/viewers/_loading.html.haml +++ b/app/views/projects/blob/viewers/_loading.html.haml @@ -1,2 +1,2 @@ -.text-center.gl-mt-3.gl-mb-3 - = icon('spinner spin 2x', 'aria-hidden' => 'true', 'aria-label' => 'Loading content…', class: 'qa-spinner') +.text-center.gl-mt-4.gl-mb-3 + = loading_icon(size: "md", css_class: "qa-spinner") diff --git a/app/views/projects/blob/viewers/_loading_auxiliary.html.haml b/app/views/projects/blob/viewers/_loading_auxiliary.html.haml index c7dc9e3250a..5a6c1a493a5 100644 --- a/app/views/projects/blob/viewers/_loading_auxiliary.html.haml +++ b/app/views/projects/blob/viewers/_loading_auxiliary.html.haml @@ -1,2 +1,2 @@ -= icon('spinner spin fw') += loading_icon(css_class: "gl-vertical-align-text-bottom") Analyzing file… diff --git a/app/views/projects/blob/viewers/_metrics_dashboard_yml.html.haml b/app/views/projects/blob/viewers/_metrics_dashboard_yml.html.haml index 9ec1d7d0d67..de9c6c5320f 100644 --- a/app/views/projects/blob/viewers/_metrics_dashboard_yml.html.haml +++ b/app/views/projects/blob/viewers/_metrics_dashboard_yml.html.haml @@ -5,7 +5,7 @@ = icon('warning fw') = _('Metrics Dashboard YAML definition is invalid:') %ul - - viewer.errors.messages.each do |error| - %li= error.join(': ') + - viewer.errors.each do |error| + %li= error = link_to _('Learn more'), help_page_path('operations/metrics/dashboards/index.md') diff --git a/app/views/projects/blob/viewers/_route_map_loading.html.haml b/app/views/projects/blob/viewers/_route_map_loading.html.haml index 1d768bd1ca4..8610847fbc9 100644 --- a/app/views/projects/blob/viewers/_route_map_loading.html.haml +++ b/app/views/projects/blob/viewers/_route_map_loading.html.haml @@ -1,4 +1,4 @@ -= icon('spinner spin fw') += loading_icon(css_class: "gl-vertical-align-text-bottom gl-mr-1") Validating Route Map… = link_to 'Learn more', help_page_path('ci/environments/index.md', anchor: 'going-from-source-files-to-public-pages') diff --git a/app/views/projects/blob/viewers/_sketch.html.haml b/app/views/projects/blob/viewers/_sketch.html.haml index aa8d1dd326f..08c21258d3f 100644 --- a/app/views/projects/blob/viewers/_sketch.html.haml +++ b/app/views/projects/blob/viewers/_sketch.html.haml @@ -1,3 +1,3 @@ .file-content#js-sketch-viewer{ data: { endpoint: blob_raw_path } } - .js-loading-icon.text-center.gl-mt-3.gl-mb-3.js-loading-icon{ 'aria-label' => 'Loading Sketch preview' } - = icon('spinner spin 2x', 'aria-hidden' => 'true'); + .text-center.gl-mt-4.gl-mb-3.js-loading-icon + = loading_icon(size: "md") diff --git a/app/views/projects/blob/viewers/_stl.html.haml b/app/views/projects/blob/viewers/_stl.html.haml index 6983c3cc81b..44c986595df 100644 --- a/app/views/projects/blob/viewers/_stl.html.haml +++ b/app/views/projects/blob/viewers/_stl.html.haml @@ -1,6 +1,6 @@ .file-content.is-stl-loading .text-center#js-stl-viewer{ data: { endpoint: blob_raw_path } } - = icon('spinner spin 2x', class: 'gl-mt-3 gl-mb-3', 'aria-hidden' => 'true', 'aria-label' => 'Loading') + = loading_icon(size: "md", css_class: "gl-mt-4 gl-mb-3") .text-center.gl-mt-3.gl-mb-3.stl-controls .btn-group %button.btn.btn-default.btn-sm.js-material-changer{ data: { type: 'wireframe' } } diff --git a/app/views/projects/branches/_branch.html.haml b/app/views/projects/branches/_branch.html.haml index ed7dbdeae93..020a4361203 100644 --- a/app/views/projects/branches/_branch.html.haml +++ b/app/views/projects/branches/_branch.html.haml @@ -50,25 +50,25 @@ - if can?(current_user, :push_code, @project) - if branch.name == @project.repository.root_ref - %button{ class: "btn btn-remove remove-row js-ajax-loading-spinner has-tooltip disabled", + %button{ class: "btn btn-remove remove-row has-tooltip disabled", disabled: true, title: s_('Branches|The default branch cannot be deleted') } - = icon("trash-o") + = sprite_icon("remove") - elsif protected_branch?(@project, branch) - if can?(current_user, :push_to_delete_protected_branch, @project) - %button{ class: "btn btn-remove remove-row js-ajax-loading-spinner has-tooltip", + %button{ class: "btn btn-remove remove-row has-tooltip", title: s_('Branches|Delete protected branch'), data: { toggle: "modal", target: "#modal-delete-branch", delete_path: project_branch_path(@project, branch.name), branch_name: branch.name, is_merged: ("true" if merged) } } - = icon("trash-o") + = sprite_icon("remove") - else - %button{ class: "btn btn-remove remove-row js-ajax-loading-spinner has-tooltip disabled", + %button{ class: "btn btn-remove remove-row has-tooltip disabled", disabled: true, title: s_('Branches|Only a project maintainer or owner can delete a protected branch') } - = icon("trash-o") + = sprite_icon("remove") - else = link_to project_branch_path(@project, branch.name), class: "btn btn-remove remove-row qa-remove-btn js-ajax-loading-spinner has-tooltip", @@ -77,4 +77,4 @@ data: { confirm: s_("Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?") % { branch_name: branch.name } }, remote: true, 'aria-label' => s_('Branches|Delete branch') do - = icon("trash-o") + = sprite_icon("remove") diff --git a/app/views/projects/branches/new.html.haml b/app/views/projects/branches/new.html.haml index 97e46aaa710..7a8bc45a272 100644 --- a/app/views/projects/branches/new.html.haml +++ b/app/views/projects/branches/new.html.haml @@ -28,5 +28,4 @@ .form-actions = button_tag 'Create branch', class: 'btn btn-success', tabindex: 3 = link_to 'Cancel', project_branches_path(@project), class: 'btn btn-cancel' --# haml-lint:disable InlineJavaScript %script#availableRefs{ type: "application/json" }= @project.repository.ref_names.to_json.html_safe diff --git a/app/views/projects/buttons/_download.html.haml b/app/views/projects/buttons/_download.html.haml index 1d0ad6dcde6..c04687bd846 100644 --- a/app/views/projects/buttons/_download.html.haml +++ b/app/views/projects/buttons/_download.html.haml @@ -17,7 +17,7 @@ %section.border-top.pt-1.mt-1 %h5.m-0.dropdown-bold-header= _('Download artifacts') - unless pipeline.latest? - %span.unclickable= ci_status_for_statuseable(project.pipeline_for(ref)) + %span.unclickable= ci_status_for_statuseable(project.latest_pipeline(ref)) %h6.m-0.dropdown-header= _('Previous Artifacts') %ul - pipeline.latest_builds_with_artifacts.each do |job| diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index 23f9a6a8f6c..c7ab01a4ef7 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -102,7 +102,7 @@ - if can?(current_user, :update_build, job) - if job.active? = link_to cancel_project_job_path(job.project, job, continue: { to: request.fullpath }), method: :post, title: _('Cancel'), class: 'btn btn-build' do - = icon('remove', class: 'cred') + = sprite_icon('close') - elsif job.scheduled? .btn-group .btn.btn-default{ disabled: true } diff --git a/app/views/projects/ci/lints/_create.html.haml b/app/views/projects/ci/lints/_create.html.haml index 5cc89343ba3..4b7cda0ef57 100644 --- a/app/views/projects/ci/lints/_create.html.haml +++ b/app/views/projects/ci/lints/_create.html.haml @@ -1,10 +1,10 @@ -- if @status +- if @result.valid? .bs-callout.bs-callout-success %p %b= _("Status:") = _("syntax is correct") - = render "projects/ci/lints/lint_warnings", warnings: @warnings + = render "projects/ci/lints/lint_warnings", warnings: @result.warnings .table-holder %table.table.table-bordered @@ -13,54 +13,31 @@ %th= _("Parameter") %th= _("Value") %tbody - - if @dry_run - - @stages.each do |stage| - - stage.statuses.each do |job| - %tr - %td #{stage.name.capitalize} Job - #{job.name} - %td - %pre= job.options[:before_script].to_a.join('\n') - %pre= job.options[:script].to_a.join('\n') - %pre= job.options[:after_script].to_a.join('\n') - %br - %b= _("Tag list:") - = job.tag_list.to_a.join(", ") if job.is_a?(Ci::Build) - %br - %b= _("Environment:") - = job.options.dig(:environment, :name) - %br - %b= _("When:") - = job.when - - if job.allow_failure - %b= _("Allowed to fail") - - - else - - @stages.each do |stage| - - @builds.select { |build| build[:stage] == stage }.each do |build| - - job = @jobs[build[:name].to_sym] - %tr - %td #{stage.capitalize} Job - #{build[:name]} - %td - %pre= job[:before_script].to_a.join('\n') - %pre= job[:script].to_a.join('\n') - %pre= job[:after_script].to_a.join('\n') - %br - %b= _("Tag list:") - = build[:tag_list].to_a.join(", ") - %br - %b= _("Only policy:") - = job[:only].to_a.join(", ") - %br - %b= _("Except policy:") - = job[:except].to_a.join(", ") - %br - %b= _("Environment:") - = build[:environment] - %br - %b= _("When:") - = build[:when] - - if build[:allow_failure] - %b= _("Allowed to fail") + - @result.jobs.each do |job| + %tr + %td #{job[:stage].capitalize} Job - #{job[:name]} + %td + %pre= job[:before_script].to_a.join('\n') + %pre= job[:script].to_a.join('\n') + %pre= job[:after_script].to_a.join('\n') + %br + %b= _("Tag list:") + = job[:tag_list].to_a.join(", ") + - unless @dry_run + %br + %b= _("Only policy:") + = job[:only].to_a.join(", ") + %br + %b= _("Except policy:") + = job[:except].to_a.join(", ") + %br + %b= _("Environment:") + = job[:environment] + %br + %b= _("When:") + = job[:when] + - if job[:allow_failure] + %b= _("Allowed to fail") - else .bs-callout.bs-callout-danger @@ -68,7 +45,7 @@ %b= _("Status:") = _("syntax is incorrect") %pre - - @errors.each do |message| + - @result.errors.each do |message| %p= message - = render "projects/ci/lints/lint_warnings", warnings: @warnings + = render "projects/ci/lints/lint_warnings", warnings: @result.warnings diff --git a/app/views/projects/ci/lints/_lint_warnings.html.haml b/app/views/projects/ci/lints/_lint_warnings.html.haml index 0a5bb8f76ef..90db65e6c27 100644 --- a/app/views/projects/ci/lints/_lint_warnings.html.haml +++ b/app/views/projects/ci/lints/_lint_warnings.html.haml @@ -1,6 +1,10 @@ - if warnings - - warnings.each do |warning| + - total_warnings = warnings.length + - message = warning_header(total_warnings) + + - if warnings.any? .bs-callout.bs-callout-warning - %p - %b= _("Warning:") - = markdown(warning) + %details + %summary.gl-mb-2= message + - warnings.each do |warning| + = markdown(warning) diff --git a/app/views/projects/ci/lints/show.html.haml b/app/views/projects/ci/lints/show.html.haml index 0c51c978bfe..2e79852f4c9 100644 --- a/app/views/projects/ci/lints/show.html.haml +++ b/app/views/projects/ci/lints/show.html.haml @@ -1,30 +1,40 @@ - page_title _("CI Lint") - page_description _("Validate your GitLab CI configuration file") -- content_for :library_javascripts do - = page_specific_javascript_tag('lib/ace.js') +- unless Feature.enabled?(:monaco_ci) + - content_for :library_javascripts do + = page_specific_javascript_tag('lib/ace.js') %h2.pt-3.pb-3= _("Validate your GitLab CI configuration") -.project-ci-linter - = form_tag project_ci_lint_path(@project), method: :post do - .row - .col-sm-12 - .file-holder - .js-file-title.file-title.clearfix - = _("Contents of .gitlab-ci.yml") - #ci-editor.ci-editor= @content - = text_area_tag(:content, @content, class: 'hidden form-control span1', rows: 7, require: true) - .col-sm-12 - .float-left.gl-mt-3 - = submit_tag(_('Validate'), class: 'btn btn-success submit-yml') - - if Gitlab::Ci::Features.lint_creates_pipeline_with_dry_run?(@project) - = check_box_tag(:dry_run, 'true', params[:dry_run]) - = label_tag(:dry_run, _('Simulate a pipeline created for the default branch')) - = link_to icon('question-circle'), help_page_path('ci/lint', anchor: 'pipeline-simulation'), target: '_blank', rel: 'noopener noreferrer' - .float-right.prepend-top-10 - = button_tag(_('Clear'), type: 'button', class: 'btn btn-default clear-yml') +- if Feature.enabled?(:ci_lint_vue, @project) + #js-ci-lint{ data: { endpoint: project_ci_lint_path(@project) } } - .row.prepend-top-20 - .col-sm-12 - .results.project-ci-template - = render partial: 'create' if defined?(@status) +- else + .project-ci-linter + = form_tag project_ci_lint_path(@project), method: :post, class: 'js-ci-lint-form' do + .row + .col-sm-12 + .file-holder + .js-file-title.file-title.clearfix + = _("Contents of .gitlab-ci.yml") + - if Feature.enabled?(:monaco_ci) + .file-editor.code + .js-edit-mode-pane.qa-editor#editor{ data: { 'editor-loading': true } }< + %pre.editor-loading-content= params[:content] + - else + #ci-editor.ci-editor= @content + = text_area_tag(:content, @content, class: 'hidden form-control span1', rows: 7, require: true) + .col-sm-12 + .float-left.gl-mt-3 + = submit_tag(_('Validate'), class: 'btn btn-success submit-yml') + - if Gitlab::Ci::Features.lint_creates_pipeline_with_dry_run?(@project) + = check_box_tag(:dry_run, 'true', params[:dry_run]) + = label_tag(:dry_run, _('Simulate a pipeline created for the default branch')) + = link_to sprite_icon('question-o'), help_page_path('ci/lint', anchor: 'pipeline-simulation'), target: '_blank', rel: 'noopener noreferrer' + .float-right.prepend-top-10 + = button_tag(_('Clear'), type: 'button', class: 'btn btn-default clear-yml') + + .row.prepend-top-20 + .col-sm-12 + .results.project-ci-template + = render partial: 'create' if defined?(@result) diff --git a/app/views/projects/cleanup/_show.html.haml b/app/views/projects/cleanup/_show.html.haml index f560127fefd..019894ddbb4 100644 --- a/app/views/projects/cleanup/_show.html.haml +++ b/app/views/projects/cleanup/_show.html.haml @@ -7,7 +7,7 @@ = expanded ? _('Collapse') : _('Expand') %p = _("Clean up after running %{filter_repo} on the repository" % { filter_repo: link_to_filter_repo }).html_safe - = link_to icon('question-circle'), + = link_to sprite_icon('question-o'), help_page_path('user/project/repository/reducing_the_repo_size_using_git.md'), target: '_blank', rel: 'noopener noreferrer' @@ -28,4 +28,3 @@ .gl-display-flex.gl-justify-content-end = f.submit _('Start cleanup'), class: 'btn btn-success' - diff --git a/app/views/projects/commit/_limit_exceeded_message.html.haml b/app/views/projects/commit/_limit_exceeded_message.html.haml index ace1be787fb..236418ecd0e 100644 --- a/app/views/projects/commit/_limit_exceeded_message.html.haml +++ b/app/views/projects/commit/_limit_exceeded_message.html.haml @@ -3,6 +3,6 @@ - if objects == :branch = sprite_icon('fork', size: 12) - else - = icon('tag') + = sprite_icon('tag') .limit-message %span= _('%{label_for_message} unavailable') % { label_for_message: label_for_message.capitalize } diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml index 33fedde0cd1..cd61576a96a 100644 --- a/app/views/projects/commits/_commit.html.haml +++ b/app/views/projects/commits/_commit.html.haml @@ -11,6 +11,7 @@ - commit = commit.present(current_user: current_user) - commit_status = commit.status_for(ref) - collapsible = local_assigns.fetch(:collapsible, true) +- link_data_attrs = local_assigns.fetch(:link_data_attrs, {}) - link = commit_path(project, commit, merge_request: merge_request) @@ -26,7 +27,7 @@ - if view_details && merge_request = link_to commit.title, project_commit_path(project, commit.id, merge_request_iid: merge_request.iid), class: ["commit-row-message item-title js-onboarding-commit-item", ("font-italic" if commit.message.empty?)] - else - = link_to_markdown_field(commit, :title, link, class: "commit-row-message item-title js-onboarding-commit-item #{"font-italic" if commit.message.empty?}") + = link_to_markdown_field(commit, :title, link, class: "commit-row-message item-title js-onboarding-commit-item #{"font-italic" if commit.message.empty?}", data: link_data_attrs) %span.commit-row-message.d-inline.d-sm-none · = commit.short_id diff --git a/app/views/projects/cycle_analytics/_overview.html.haml b/app/views/projects/cycle_analytics/_overview.html.haml deleted file mode 100644 index 2ca72b141be..00000000000 --- a/app/views/projects/cycle_analytics/_overview.html.haml +++ /dev/null @@ -1,15 +0,0 @@ -.cycle-analytics-overview - .container - .row - .col-md-10.offset-md-1 - .row.overview-details - .col-md-6.overview-text - %h4 Introducing Value Stream Analytics - %p - Value Stream Analytics (VSA) gives an overview of how much time it takes to go from idea to production in your project. - To set up VSA, you must first define a production environment by setting up your CI and then deploy to production. - %p - %a.btn{ href: help_page_path('user/analytics/value_stream_analytics.md'), target: '_blank' } Read more - .col-md-6.overview-image - %span.overview-icon - = custom_icon ('icon_cycle_analytics_overview') diff --git a/app/views/projects/cycle_analytics/show.html.haml b/app/views/projects/cycle_analytics/show.html.haml index 090fc602ebb..d7e10efc3b1 100644 --- a/app/views/projects/cycle_analytics/show.html.haml +++ b/app/views/projects/cycle_analytics/show.html.haml @@ -40,19 +40,23 @@ %li.stage-header.pl-5 %span.stage-name.font-weight-bold {{ s__('ProjectLifecycle|Stage') }} - %i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The phase of the development lifecycle."), "aria-hidden" => "true" } + %span.has-tooltip{ "data-placement" => "top", title: _("The phase of the development lifecycle."), "aria-hidden" => "true" } + = sprite_icon('question-o', css_class: 'gl-text-gray-500') %li.median-header %span.stage-name.font-weight-bold {{ __('Median') }} - %i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6."), "aria-hidden" => "true" } + %span.has-tooltip{ "data-placement" => "top", title: _("The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6."), "aria-hidden" => "true" } + = sprite_icon('question-o', css_class: 'gl-text-gray-500') %li.event-header.pl-3 %span.stage-name.font-weight-bold {{ currentStage ? __(currentStage.legend) : __('Related Issues') }} - %i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The collection of events added to the data gathered for that stage."), "aria-hidden" => "true" } + %span.has-tooltip{ "data-placement" => "top", title: _("The collection of events added to the data gathered for that stage."), "aria-hidden" => "true" } + = sprite_icon('question-o', css_class: 'gl-text-gray-500') %li.total-time-header.pr-5.text-right %span.stage-name.font-weight-bold {{ __('Time') }} - %i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The time taken by each data entry gathered by that stage."), "aria-hidden" => "true" } + %span.has-tooltip{ "data-placement" => "top", title: _("The time taken by each data entry gathered by that stage."), "aria-hidden" => "true" } + = sprite_icon('question-o', css_class: 'gl-text-gray-500') .stage-panel-body %nav.stage-nav %ul diff --git a/app/views/projects/default_branch/_show.html.haml b/app/views/projects/default_branch/_show.html.haml index b78535bbe2f..46ee60949db 100644 --- a/app/views/projects/default_branch/_show.html.haml +++ b/app/views/projects/default_branch/_show.html.haml @@ -26,7 +26,7 @@ %strong= _("Auto-close referenced issues on default branch") .form-text.text-muted = _("Issues referenced by merge requests and commits within the default branch will be closed automatically") - = link_to icon('question-circle'), help_page_path('user/project/issues/managing_issues.md', anchor: 'disabling-automatic-issue-closing'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('user/project/issues/managing_issues.md', anchor: 'disabling-automatic-issue-closing'), target: '_blank' .gl-display-flex.gl-justify-content-end = f.submit _('Save changes'), class: "btn btn-success" diff --git a/app/views/projects/diffs/_file.html.haml b/app/views/projects/diffs/_file.html.haml index bd023e0442c..187ebcb739c 100644 --- a/app/views/projects/diffs/_file.html.haml +++ b/app/views/projects/diffs/_file.html.haml @@ -9,6 +9,10 @@ .file-header-content = render "projects/diffs/file_header", diff_file: diff_file, url: "##{file_hash}" + - if diff_file.submodule? + .file-actions.d-none.d-sm-block + = submodule_diff_compare_link(diff_file) + - unless diff_file.submodule? - blob = diff_file.blob .file-actions.d-none.d-sm-block diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index bf978b01652..e5c4cfcbd72 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -39,7 +39,7 @@ %input{ name: 'update_section', type: 'hidden', value: 'js-merge-request-settings' } = render 'projects/merge_request_settings', form: f .gl-display-flex.gl-justify-content-end - = f.submit _('Save changes'), class: "btn btn-succes qa-save-merge-request-changes rspec-save-merge-request-changes" + = f.submit _('Save changes'), class: "btn btn-success qa-save-merge-request-changes rspec-save-merge-request-changes" = render_if_exists 'projects/merge_request_approvals_settings', expanded: expanded diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index bfb22aa8025..c9edc3c12ec 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -5,72 +5,71 @@ = render partial: 'flash_messages', locals: { project: @project } -%div{ class: [("limit-container-width" unless fluid_layout)] } - = render "home_panel" += render "home_panel" - %h4.gl-mt-0.gl-mb-3 - = _('The repository for this project is empty') +%h4.gl-mt-0.gl-mb-3 + = _('The repository for this project is empty') - - if @project.can_current_user_push_code? - %p.gl-mb-0 - = _('You can get started by cloning the repository or start adding files to it with one of the following options.') +- if @project.can_current_user_push_code? + %p.gl-mb-0 + = _('You can get started by cloning the repository or start adding files to it with one of the following options.') - .project-buttons.qa-quick-actions - .project-clone-holder.d-block.d-md-none.mt-2.mr-2 - = render "shared/mobile_clone_panel" +.project-buttons.qa-quick-actions + .project-clone-holder.d-block.d-md-none.mt-2.mr-2 + = render "shared/mobile_clone_panel" - .project-clone-holder.d-none.d-md-inline-block.mt-2.mr-2.float-left - = render "projects/buttons/clone" - = render 'stat_anchor_list', anchors: @project.empty_repo_statistics_buttons + .project-clone-holder.d-none.d-md-inline-block.mt-2.mr-2.float-left + = render "projects/buttons/clone" + = render 'stat_anchor_list', anchors: @project.empty_repo_statistics_buttons - - if can?(current_user, :push_code, @project) - .empty-wrapper.gl-mt-7 - %h3#repo-command-line-instructions.page-title-empty - = _('Command line instructions') - %p - = _('You can also upload existing files from your computer using the instructions below.') - .git-empty.js-git-empty - %fieldset - %h5= _('Git global setup') - %pre.bg-light - :preserve - git config --global user.name "#{h git_user_name}" - git config --global user.email "#{h git_user_email}" +- if can?(current_user, :push_code, @project) + .empty-wrapper.gl-mt-7 + %h3#repo-command-line-instructions.page-title-empty + = _('Command line instructions') + %p + = _('You can also upload existing files from your computer using the instructions below.') + .git-empty.js-git-empty + %fieldset + %h5= _('Git global setup') + %pre.bg-light + :preserve + git config --global user.name "#{h git_user_name}" + git config --global user.email "#{h git_user_email}" - %fieldset - %h5= _('Create a new repository') - %pre.bg-light - :preserve - git clone #{ content_tag(:span, default_url_to_repo, class: 'js-clone')} - cd #{h @project.path} - touch README.md - git add README.md - git commit -m "add README" - - if @project.can_current_user_push_to_default_branch? - %span>< - git push -u origin #{ default_branch_name } + %fieldset + %h5= _('Create a new repository') + %pre.bg-light + :preserve + git clone #{ content_tag(:span, default_url_to_repo, class: 'js-clone')} + cd #{h @project.path} + touch README.md + git add README.md + git commit -m "add README" + - if @project.can_current_user_push_to_default_branch? + %span>< + git push -u origin #{ default_branch_name } - %fieldset - %h5= _('Push an existing folder') - %pre.bg-light - :preserve - cd existing_folder - git init - git remote add origin #{ content_tag(:span, default_url_to_repo, class: 'js-clone')} - git add . - git commit -m "Initial commit" - - if @project.can_current_user_push_to_default_branch? - %span>< - git push -u origin #{ default_branch_name } + %fieldset + %h5= _('Push an existing folder') + %pre.bg-light + :preserve + cd existing_folder + git init + git remote add origin #{ content_tag(:span, default_url_to_repo, class: 'js-clone')} + git add . + git commit -m "Initial commit" + - if @project.can_current_user_push_to_default_branch? + %span>< + git push -u origin #{ default_branch_name } - %fieldset - %h5= _('Push an existing Git repository') - %pre.bg-light - :preserve - cd existing_repo - git remote rename origin old-origin - git remote add origin #{ content_tag(:span, default_url_to_repo, class: 'js-clone')} - - if @project.can_current_user_push_to_default_branch? - %span>< - git push -u origin --all - git push -u origin --tags + %fieldset + %h5= _('Push an existing Git repository') + %pre.bg-light + :preserve + cd existing_repo + git remote rename origin old-origin + git remote add origin #{ content_tag(:span, default_url_to_repo, class: 'js-clone')} + - if @project.can_current_user_push_to_default_branch? + %span>< + git push -u origin --all + git push -u origin --tags diff --git a/app/views/projects/environments/folder.html.haml b/app/views/projects/environments/folder.html.haml index cd24c30e46f..554cb4323f7 100644 --- a/app/views/projects/environments/folder.html.haml +++ b/app/views/projects/environments/folder.html.haml @@ -2,4 +2,4 @@ - breadcrumb_title _("Folder/%{name}") % { name: @folder } - page_title _("Environments in %{name}") % { name: @folder } -#environments-folder-list-view{ data: { environments_data: environments_folder_list_view_data } } +#environments-folder-list-view{ data: { environments_data: environments_folder_list_view_data, project_path: @project.full_path } } diff --git a/app/views/projects/environments/index.html.haml b/app/views/projects/environments/index.html.haml index 445196ed449..9abc1a5a925 100644 --- a/app/views/projects/environments/index.html.haml +++ b/app/views/projects/environments/index.html.haml @@ -5,4 +5,5 @@ "can-create-environment" => can?(current_user, :create_environment, @project).to_s, "new-environment-path" => new_project_environment_path(@project), "help-page-path" => help_page_path("ci/environments/index.md"), - "deploy-boards-help-path" => help_page_path("user/project/deploy_boards", anchor: "enabling-deploy-boards") } } + "deploy-boards-help-path" => help_page_path("user/project/deploy_boards", anchor: "enabling-deploy-boards"), + "project-path" => @project.full_path } } diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml index 2e665a12a0a..929015023d2 100644 --- a/app/views/projects/environments/show.html.haml +++ b/app/views/projects/environments/show.html.haml @@ -69,7 +69,7 @@ .text-center = link_to _("Read more"), help_page_path("ci/environments"), class: "btn btn-success" - else - .table-holder + .table-holder.gl-overflow-visible .ci-table.environments{ role: 'grid' } .gl-responsive-table-row.table-row-header{ role: 'row' } .table-section.section-15{ role: 'columnheader' }= _('Status') diff --git a/app/views/projects/feature_flags/_errors.html.haml b/app/views/projects/feature_flags/_errors.html.haml new file mode 100644 index 00000000000..a32245640be --- /dev/null +++ b/app/views/projects/feature_flags/_errors.html.haml @@ -0,0 +1,4 @@ +#error_explanation + .alert.alert-danger + - @feature_flag.errors.full_messages.each do |message| + %p= message diff --git a/app/views/projects/feature_flags/edit.html.haml b/app/views/projects/feature_flags/edit.html.haml new file mode 100644 index 00000000000..4de41ca4080 --- /dev/null +++ b/app/views/projects/feature_flags/edit.html.haml @@ -0,0 +1,16 @@ +- @gfm_form = Feature.enabled?(:feature_flags_issue_links, @project, default_enabled: true) + +- add_to_breadcrumbs s_('FeatureFlags|Feature Flags'), project_feature_flags_path(@project) +- breadcrumb_title @feature_flag.name +- page_title s_('FeatureFlags|Edit Feature Flag') + +#js-edit-feature-flag{ data: { endpoint: project_feature_flag_path(@project, @feature_flag), + project_id: @project.id, + feature_flags_path: project_feature_flags_path(@project), + environments_endpoint: search_project_environments_path(@project, format: :json), + user_callouts_path: user_callouts_path, + user_callout_id: UserCalloutsHelper::FEATURE_FLAGS_NEW_VERISION, + show_user_callout: show_feature_flags_new_version?.to_s, + strategy_type_docs_page_path: help_page_path('operations/feature_flags', anchor: 'feature-flag-strategies'), + environments_scope_docs_path: help_page_path('ci/environments', anchor: 'scoping-environments-with-specs'), + feature_flag_issues_endpoint: feature_flag_issues_links_endpoint(@project, @feature_flag, current_user) } } diff --git a/app/views/projects/feature_flags/index.html.haml b/app/views/projects/feature_flags/index.html.haml new file mode 100644 index 00000000000..f425de91d12 --- /dev/null +++ b/app/views/projects/feature_flags/index.html.haml @@ -0,0 +1,15 @@ +- page_title s_('FeatureFlags|Feature Flags') + +#feature-flags-vue{ data: { endpoint: project_feature_flags_path(@project, format: :json), + "project-id" => @project.id, + "project-name" => @project.name, + "error-state-svg-path" => image_path('illustrations/feature_flag.svg'), + "feature-flags-help-page-path" => help_page_path("operations/feature_flags"), + "feature-flags-client-libraries-help-page-path" => help_page_path("operations/feature_flags", anchor: "choose-a-client-library"), + "feature-flags-client-example-help-page-path" => help_page_path("operations/feature_flags", anchor: "golang-application-example"), + "unleash-api-url" => (unleash_api_url(@project) if can?(current_user, :admin_feature_flag, @project)), + "unleash-api-instance-id" => (unleash_api_instance_id(@project) if can?(current_user, :admin_feature_flag, @project)), + "can-user-admin-feature-flag" => can?(current_user, :admin_feature_flag, @project), + "new-feature-flag-path" => can?(current_user, :create_feature_flag, @project) ? new_project_feature_flag_path(@project): nil, + "rotate-instance-id-path" => can?(current_user, :admin_feature_flags_client, @project) ? reset_token_project_feature_flags_client_path(@project, format: :json) : nil, + "new-user-list-path" => can?(current_user, :admin_feature_flags_user_lists, @project) ? new_project_feature_flags_user_list_path(@project) : nil } } diff --git a/app/views/projects/feature_flags/new.html.haml b/app/views/projects/feature_flags/new.html.haml new file mode 100644 index 00000000000..a7388361da5 --- /dev/null +++ b/app/views/projects/feature_flags/new.html.haml @@ -0,0 +1,14 @@ +- @breadcrumb_link = new_project_feature_flag_path(@project) +- add_to_breadcrumbs s_('FeatureFlags|Feature Flags'), project_feature_flags_path(@project) +- breadcrumb_title s_('FeatureFlags|New') +- page_title s_('FeatureFlags|New Feature Flag') + +#js-new-feature-flag{ data: { endpoint: project_feature_flags_path(@project, format: :json), + feature_flags_path: project_feature_flags_path(@project), + environments_endpoint: search_project_environments_path(@project, format: :json), + user_callouts_path: user_callouts_path, + user_callout_id: UserCalloutsHelper::FEATURE_FLAGS_NEW_VERISION, + show_user_callout: show_feature_flags_new_version?.to_s, + strategy_type_docs_page_path: help_page_path('operations/feature_flags', anchor: 'feature-flag-strategies'), + environments_scope_docs_path: help_page_path('ci/environments', anchor: 'scoping-environments-with-specs'), + project_id: @project.id } } diff --git a/app/views/projects/feature_flags_user_lists/edit.html.haml b/app/views/projects/feature_flags_user_lists/edit.html.haml new file mode 100644 index 00000000000..ea47cc06c0e --- /dev/null +++ b/app/views/projects/feature_flags_user_lists/edit.html.haml @@ -0,0 +1,7 @@ +- add_to_breadcrumbs s_('FeatureFlags|Feature Flags'), project_feature_flags_path(@project) +- breadcrumb_title s_('FeatureFlags|Edit User List') +- page_title s_('FeatureFlags|Edit User List') + +#js-edit-user-list{ data: { 'user-lists-docs-path' => help_page_path('operations/feature_flags.md', anchor: 'user-list'), + 'user-list-iid' => @user_list.iid, + 'project-id' => @project.id } } diff --git a/app/views/projects/feature_flags_user_lists/new.html.haml b/app/views/projects/feature_flags_user_lists/new.html.haml new file mode 100644 index 00000000000..3d25453cb66 --- /dev/null +++ b/app/views/projects/feature_flags_user_lists/new.html.haml @@ -0,0 +1,8 @@ +- @breadcrumb_link = new_project_feature_flags_user_list_path(@project) +- add_to_breadcrumbs s_('FeatureFlags|Feature Flags'), project_feature_flags_path(@project) +- breadcrumb_title s_('FeatureFlags|New User List') +- page_title s_('FeatureFlags|New User List') + +#js-new-user-list{ data: { 'user-lists-docs-path' => help_page_path('operations/feature_flags.md', anchor: 'user-list'), + 'feature-flags-path' => project_feature_flags_path(@project), + 'project-id' => @project.id } } diff --git a/app/views/projects/feature_flags_user_lists/show.html.haml b/app/views/projects/feature_flags_user_lists/show.html.haml new file mode 100644 index 00000000000..add256f0190 --- /dev/null +++ b/app/views/projects/feature_flags_user_lists/show.html.haml @@ -0,0 +1,7 @@ +- add_to_breadcrumbs s_('FeatureFlags|Feature Flags'), project_feature_flags_path(@project) +- breadcrumb_title s_('FeatureFlags|List details') +- page_title s_('FeatureFlags|Feature Flag User List Details') + +#js-edit-user-list{ data: { project_id: @project.id, + user_list_iid: @user_list.iid, + empty_state_path: image_path('illustrations/feature_flag.svg') } } diff --git a/app/views/projects/find_file/show.html.haml b/app/views/projects/find_file/show.html.haml index 786af3714a6..194b10e9ef4 100644 --- a/app/views/projects/find_file/show.html.haml +++ b/app/views/projects/find_file/show.html.haml @@ -24,4 +24,4 @@ %p.text-secondary = _('Try using a different search term to find the file you are looking for.') .text-center.gl-mt-3.loading - .spinner.spinner-md + = loading_icon(size: 'md') diff --git a/app/views/projects/forks/error.html.haml b/app/views/projects/forks/error.html.haml index 5d527f1bcfb..0c15796b667 100644 --- a/app/views/projects/forks/error.html.haml +++ b/app/views/projects/forks/error.html.haml @@ -1,20 +1,22 @@ - page_title _("Fork project") - if @forked_project && !@forked_project.saved? - .alert.alert-danger.alert-block - %h4 + .gl-alert.gl-alert-danger.gl-mt-5 + = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon') + %h4.gl-alert-title = sprite_icon('fork') = _("Fork Error!") - %p - = _("You tried to fork %{link_to_the_project} but it failed for the following reason:").html_safe % { link_to_the_project: link_to_project(@project) } - - - if @forked_project && @forked_project.errors.any? + .gl-alert-body %p - – - - error = @forked_project.errors.full_messages.first - - if error.include?("already been taken") - = _("Name has already been taken") - - else - = error + = _("You tried to fork %{link_to_the_project} but it failed for the following reason:").html_safe % { link_to_the_project: link_to_project(@project) } + + - if @forked_project && @forked_project.errors.any? + %p + – + - error = @forked_project.errors.full_messages.first + - if error.include?("already been taken") + = _("Name has already been taken") + - else + = error - %p - = link_to _("Try to fork again"), new_project_fork_path(@project), title: _("Fork"), class: "btn" + .gl-alert-actions + = link_to _("Try to fork again"), new_project_fork_path(@project), title: _("Fork"), class: "btn gl-alert-action btn-info btn-md gl-button" diff --git a/app/views/projects/graphs/show.html.haml b/app/views/projects/graphs/show.html.haml index 495a4ac50bf..a73e367733b 100644 --- a/app/views/projects/graphs/show.html.haml +++ b/app/views/projects/graphs/show.html.haml @@ -1,6 +1,6 @@ - page_title _('Contributors') -.sub-header-block.bg-gray-light.gl-p-3-deprecated-no-really-do-not-use-me +.sub-header-block.bg-gray-light.gl-p-5 .tree-ref-holder.inline.vertical-align-middle = render 'shared/ref_switcher', destination: 'graphs' = link_to s_('Commits|History'), project_commits_path(@project, current_ref), class: 'btn' diff --git a/app/views/projects/imports/show.html.haml b/app/views/projects/imports/show.html.haml index 09624b771ea..0c1efab2195 100644 --- a/app/views/projects/imports/show.html.haml +++ b/app/views/projects/imports/show.html.haml @@ -4,7 +4,7 @@ .save-project-loader .center %h2 - %i.loading.spinner.spinner-sm + = loading_icon = import_in_progress_title - if !has_ci_cd_only_params? && @project.external_import? %p.monospace git clone --bare #{@project.safe_import_url} diff --git a/app/views/projects/issues/_design_management.html.haml b/app/views/projects/issues/_design_management.html.haml index 9d88d77eac9..6fc2f41b122 100644 --- a/app/views/projects/issues/_design_management.html.haml +++ b/app/views/projects/issues/_design_management.html.haml @@ -1,23 +1,12 @@ +- return if @issue.incident? + - requirements_link_url = help_page_path('user/project/issues/design_management', anchor: 'requirements') - requirements_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: requirements_link_url } - link_end = '</a>'.html_safe -- enable_lfs_message = s_("DesignManagement|To upload designs, you'll need to enable LFS. %{requirements_link_start}More information%{requirements_link_end}").html_safe % { requirements_link_start: requirements_link_start, requirements_link_end: link_end } +- enable_lfs_message = s_("DesignManagement|To upload designs, you'll need to enable LFS and have admin enable hashed storage. %{requirements_link_start}More information%{requirements_link_end}").html_safe % { requirements_link_start: requirements_link_start, requirements_link_end: link_end } - if @project.design_management_enabled? - - if Feature.enabled?(:design_management_moved, @project, default_enabled: true) - .js-design-management-new{ data: { project_path: @project.full_path, issue_iid: @issue.iid, issue_path: project_issue_path(@project, @issue) } } - - else - .js-design-management{ data: { project_path: @project.full_path, issue_iid: @issue.iid, issue_path: project_issue_path(@project, @issue) } } + .js-design-management{ data: { project_path: @project.full_path, issue_iid: @issue.iid, issue_path: project_issue_path(@project, @issue) } } - else - - if Feature.enabled?(:design_management_moved, @project, default_enabled: true) - .gl-border-solid.gl-border-1.gl-border-gray-100.gl-rounded-base.gl-mt-5.gl-p-3.gl-text-center - = enable_lfs_message - - else - .mt-4 - .row.empty-state - .col-12 - .text-content - %h4.center - = _('The one place for your designs') - %p.center - = enable_lfs_message + .gl-border-solid.gl-border-1.gl-border-gray-100.gl-rounded-base.gl-mt-5.gl-p-3.gl-text-center + = enable_lfs_message diff --git a/app/views/projects/issues/_issues.html.haml b/app/views/projects/issues/_issues.html.haml index 1e24b08ece2..1a557cce33c 100644 --- a/app/views/projects/issues/_issues.html.haml +++ b/app/views/projects/issues/_issues.html.haml @@ -1,4 +1,6 @@ -- if Feature.enabled?(:vue_issuables_list, @project) +- is_project_overview = local_assigns.fetch(:is_project_overview, false) + +- if Feature.enabled?(:vue_issuables_list, @project) && !is_project_overview - data_endpoint = local_assigns.fetch(:data_endpoint, expose_path(api_v4_projects_issues_path(id: @project.id))) - default_empty_state_meta = { create_issue_path: new_project_issue_path(@project), svg_path: image_path('illustrations/issues.svg') } - data_empty_state_meta = local_assigns.fetch(:data_empty_state_meta, default_empty_state_meta) diff --git a/app/views/projects/issues/_related_issues.html.haml b/app/views/projects/issues/_related_issues.html.haml new file mode 100644 index 00000000000..d131d20f079 --- /dev/null +++ b/app/views/projects/issues/_related_issues.html.haml @@ -0,0 +1,6 @@ +- if can?(current_user, :read_issue_link, @project) + .js-related-issues-root{ data: { endpoint: project_issue_links_path(@project, @issue), + can_add_related_issues: "#{can?(current_user, :admin_issue_link, @issue)}", + help_path: help_page_path('user/project/issues/related_issues'), + show_categorized_issues: "false" } } + - render('projects/issues/related_issues_block') diff --git a/app/views/projects/issues/_related_issues_block.html.haml b/app/views/projects/issues/_related_issues_block.html.haml new file mode 100644 index 00000000000..8d986b64b1d --- /dev/null +++ b/app/views/projects/issues/_related_issues_block.html.haml @@ -0,0 +1,5 @@ +.related-issues-block + .card.card-slim + .card-header.panel-empty-heading.border-bottom-0 + %h3.card-title.mt-0.mb-0.h5 + = _('Linked issues') diff --git a/app/views/projects/issues/_tabs.html.haml b/app/views/projects/issues/_tabs.html.haml deleted file mode 100644 index d998a01623f..00000000000 --- a/app/views/projects/issues/_tabs.html.haml +++ /dev/null @@ -1,14 +0,0 @@ -%ul.nav-tabs.nav.nav-links{ role: 'tablist' } - %li - = link_to '#discussion-tab', class: 'active js-issue-tabs', id: 'discussion', role: 'tab', 'aria-controls': 'js-discussion', 'aria-selected': 'true', data: { toggle: 'tab', target: '#discussion-tab', qa_selector: 'discussion_tab_link' } do - = _('Discussion') - %span.badge.badge-pill.js-discussions-count - %li - = link_to '#designs-tab', class: 'js-issue-tabs', id: 'designs', role: 'tab', 'aria-controls': 'js-designs', 'aria-selected': 'false', data: { toggle: 'tab', target: '#designs-tab', qa_selector: 'designs_tab_link' } do - = _('Designs') - %span.badge.badge-pill.js-designs-count -.tab-content - #discussion-tab.tab-pane.show.active{ role: 'tabpanel', 'aria-labelledby': 'discussion', data: { qa_selector: 'discussion_tab_content' } } - = render 'projects/issues/discussion' - #designs-tab.tab-pane{ role: 'tabpanel', 'aria-labelledby': 'designs', data: { qa_selector: 'designs_tab_content' } } - = render 'projects/issues/design_management' diff --git a/app/views/projects/issues/service_desk.html.haml b/app/views/projects/issues/service_desk.html.haml index bd260bdf143..65580a94cd0 100644 --- a/app/views/projects/issues/service_desk.html.haml +++ b/app/views/projects/issues/service_desk.html.haml @@ -7,7 +7,7 @@ - support_bot_attrs = { service_desk_enabled: @project.service_desk_enabled?, **UserSerializer.new.represent(User.support_bot) }.to_json -- data_endpoint = "#{expose_path(api_v4_projects_issues_path(id: @project.id))}?author_id=#{User.support_bot.id}" +- data_endpoint = "#{expose_path(api_v4_projects_issues_path(id: @project.id))}?author_username=#{User.support_bot.username}" %div{ class: "js-service-desk-issues service-desk-issues", data: { support_bot: support_bot_attrs, service_desk_meta: service_desk_meta(@project) } } .top-area diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml index a7817ad5552..c762b044c3e 100644 --- a/app/views/projects/issues/show.html.haml +++ b/app/views/projects/issues/show.html.haml @@ -64,7 +64,8 @@ -# haml-lint:disable InlineJavaScript %script#js-issuable-app-initial-data{ type: "application/json" }= issuable_initial_data(@issue).to_json #js-issuable-app - %h2.title= markdown_field(@issue, :title) + .title-container + %h2.title= markdown_field(@issue, :title) - if @issue.description.present? .description{ class: can?(current_user, :update_issue, @issue) ? 'js-task-list-container' : '' } .md= markdown_field(@issue, :description) @@ -75,8 +76,7 @@ - if @issue.sentry_issue.present? #js-sentry-error-stack-trace{ data: error_details_data(@project, @issue.sentry_issue.sentry_issue_identifier) } - - if Feature.enabled?(:design_management_moved, @project, default_enabled: true) - = render 'projects/issues/design_management' + = render 'projects/issues/design_management' = render_if_exists 'projects/issues/related_issues' @@ -96,9 +96,6 @@ #js-vue-discussion-filter{ data: { default_filter: current_user&.notes_filter_for(@issue), notes_filters: UserPreference.notes_filters.to_json } } = render 'new_branch' if show_new_branch_button? - - if Feature.enabled?(:design_management_moved, @project, default_enabled: true) - = render 'projects/issues/discussion' - - else - = render 'projects/issues/tabs' + = render 'projects/issues/discussion' = render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @issue.assignees diff --git a/app/views/projects/jobs/index.html.haml b/app/views/projects/jobs/index.html.haml index 4f537ee8014..0b4b4aafeee 100644 --- a/app/views/projects/jobs/index.html.haml +++ b/app/views/projects/jobs/index.html.haml @@ -7,9 +7,9 @@ .nav-controls - if can?(current_user, :update_build, @project) - unless @repository.gitlab_ci_yml - = link_to 'Get started with Pipelines', help_page_path('ci/quick_start/README'), class: 'btn btn-info' + = link_to 'Get started with Pipelines', help_page_path('ci/quick_start/README'), class: 'btn gl-button btn-info' - = link_to project_ci_lint_path(@project), class: 'btn btn-default' do + = link_to project_ci_lint_path(@project), class: 'btn gl-button btn-default' do %span CI lint .content-list.builds-content-list diff --git a/app/views/projects/merge_requests/_how_to_merge.html.haml b/app/views/projects/merge_requests/_how_to_merge.html.haml index df81e608c3e..a831972a823 100644 --- a/app/views/projects/merge_requests/_how_to_merge.html.haml +++ b/app/views/projects/merge_requests/_how_to_merge.html.haml @@ -53,4 +53,4 @@ %strong Tip: = succeed '.' do You can also checkout merge requests locally by - = link_to 'following these guidelines', help_page_path('user/project/merge_requests/reviewing_and_managing_merge_requests.md', anchor: "checkout-merge-requests-locally"), target: '_blank', rel: 'noopener noreferrer' + = link_to 'following these guidelines', help_page_path('user/project/merge_requests/reviewing_and_managing_merge_requests.md', anchor: "checkout-merge-requests-locally-through-the-head-ref"), target: '_blank', rel: 'noopener noreferrer' diff --git a/app/views/projects/merge_requests/_mr_title.html.haml b/app/views/projects/merge_requests/_mr_title.html.haml index 8aa4a935384..454a0694355 100644 --- a/app/views/projects/merge_requests/_mr_title.html.haml +++ b/app/views/projects/merge_requests/_mr_title.html.haml @@ -4,8 +4,10 @@ - state_human_name, state_icon_name = state_name_with_icon(@merge_request) - if @merge_request.closed_without_fork? - .alert.alert-danger - The source project of this merge request has been removed. + .gl-alert.gl-alert-danger.gl-mb-5 + = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') + .gl-alert-body + The source project of this merge request has been removed. .detail-page-header.border-bottom-0.pt-0.pb-0 .detail-page-header-body diff --git a/app/views/projects/merge_requests/_widget.html.haml b/app/views/projects/merge_requests/_widget.html.haml index 64b14f8889c..9736071b03f 100644 --- a/app/views/projects/merge_requests/_widget.html.haml +++ b/app/views/projects/merge_requests/_widget.html.haml @@ -7,7 +7,7 @@ window.gl.mrWidgetData.ci_troubleshooting_docs_path = '#{help_page_path('ci/troubleshooting.md')}'; window.gl.mrWidgetData.mr_troubleshooting_docs_path = '#{help_page_path('user/project/merge_requests/reviewing_and_managing_merge_requests.md', anchor: 'troubleshooting')}'; window.gl.mrWidgetData.pipeline_must_succeed_docs_path = '#{help_page_path('user/project/merge_requests/merge_when_pipeline_succeeds.md', anchor: 'only-allow-merge-requests-to-be-merged-if-the-pipeline-succeeds')}'; - window.gl.mrWidgetData.security_approvals_help_page_path = '#{help_page_path('user/application_security/index.md', anchor: 'security-approvals-in-merge-requests-ultimate')}'; + window.gl.mrWidgetData.security_approvals_help_page_path = '#{help_page_path('user/application_security/index.md', anchor: 'security-approvals-in-merge-requests')}'; window.gl.mrWidgetData.eligible_approvers_docs_path = '#{help_page_path('user/project/merge_requests/merge_request_approvals', anchor: 'eligible-approvers')}'; window.gl.mrWidgetData.approvals_help_path = '#{help_page_path("user/project/merge_requests/merge_request_approvals")}'; window.gl.mrWidgetData.pipelines_empty_svg_path = '#{image_path('illustrations/pipelines_empty.svg')}'; diff --git a/app/views/projects/merge_requests/conflicts/show.html.haml b/app/views/projects/merge_requests/conflicts/show.html.haml index 6c23661fb86..28ba2b6ac75 100644 --- a/app/views/projects/merge_requests/conflicts/show.html.haml +++ b/app/views/projects/merge_requests/conflicts/show.html.haml @@ -6,7 +6,7 @@ .merge-request-details.issuable-details = render "projects/merge_requests/mr_box" -= render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees += render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, source_branch: @merge_request.source_branch #conflicts{ "v-cloak" => "true", data: { conflicts_path: conflicts_project_merge_request_path(@merge_request.project, @merge_request, format: :json), resolve_conflicts_path: resolve_conflicts_project_merge_request_path(@merge_request.project, @merge_request) } } diff --git a/app/views/projects/merge_requests/creations/_new_compare.html.haml b/app/views/projects/merge_requests/creations/_new_compare.html.haml index 874adb19734..f0a68512326 100644 --- a/app/views/projects/merge_requests/creations/_new_compare.html.haml +++ b/app/views/projects/merge_requests/creations/_new_compare.html.haml @@ -23,7 +23,7 @@ selected: f.object.source_project_id .merge-request-select.dropdown = f.hidden_field :source_branch - = dropdown_toggle f.object.source_branch || _("Select source branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[source_branch]", 'refs-url': refs_project_path(@source_project), selected: f.object.source_branch }, { toggle_class: "js-compare-dropdown js-source-branch monospace" } + = dropdown_toggle f.object.source_branch.presence || _("Select source branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[source_branch]", 'refs-url': refs_project_path(@source_project), selected: f.object.source_branch }, { toggle_class: "js-compare-dropdown js-source-branch monospace" } .dropdown-menu.dropdown-menu-selectable.js-source-branch-dropdown.git-revision-dropdown = dropdown_title(_("Select source branch")) = dropdown_filter(_("Search branches")) @@ -52,7 +52,7 @@ selected: f.object.target_project_id .merge-request-select.dropdown = f.hidden_field :target_branch - = dropdown_toggle f.object.target_branch || _("Select target branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[target_branch]", 'refs-url': refs_project_path(f.object.target_project), selected: f.object.target_branch }, { toggle_class: "js-compare-dropdown js-target-branch monospace" } + = dropdown_toggle f.object.target_branch.presence || _("Select target branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[target_branch]", 'refs-url': refs_project_path(f.object.target_project), selected: f.object.target_branch }, { toggle_class: "js-compare-dropdown js-target-branch monospace" } .dropdown-menu.dropdown-menu-selectable.js-target-branch-dropdown.git-revision-dropdown = dropdown_title(_("Select target branch")) = dropdown_filter(_("Search branches")) diff --git a/app/views/projects/merge_requests/diffs/_different_base.html.haml b/app/views/projects/merge_requests/diffs/_different_base.html.haml index 0e57066f9c9..06a15b96653 100644 --- a/app/views/projects/merge_requests/diffs/_different_base.html.haml +++ b/app/views/projects/merge_requests/diffs/_different_base.html.haml @@ -1,7 +1,7 @@ - if @merge_request_diff && different_base?(@start_version, @merge_request_diff) .mr-version-controls .content-block - = icon('info-circle') + = sprite_icon('information-o') Selected versions have different base commits. Changes will include = link_to project_compare_path(@project, from: @start_version.base_commit_sha, to: @merge_request_diff.base_commit_sha) do diff --git a/app/views/projects/merge_requests/diffs/_not_all_comments_displayed.html.haml b/app/views/projects/merge_requests/diffs/_not_all_comments_displayed.html.haml index 8d7138747fb..b9dc37c9b54 100644 --- a/app/views/projects/merge_requests/diffs/_not_all_comments_displayed.html.haml +++ b/app/views/projects/merge_requests/diffs/_not_all_comments_displayed.html.haml @@ -1,7 +1,7 @@ - if @commit || @start_version || (@merge_request_diff && !@merge_request_diff.latest?) .mr-version-controls .content-block.comments-disabled-notif.clearfix - = icon('info-circle') + = sprite_icon('information-o') = succeed '.' do - if @commit Only comments from the following commit are shown below diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml index 746d613934c..b579f7510f9 100644 --- a/app/views/projects/merge_requests/show.html.haml +++ b/app/views/projects/merge_requests/show.html.haml @@ -1,5 +1,5 @@ - @gfm_form = true -- @content_class = "limit-container-width" unless fluid_layout +- @content_class = "merge-request-container#{' limit-container-width' unless fluid_layout}" - add_to_breadcrumbs _("Merge Requests"), project_merge_requests_path(@project) - breadcrumb_title @merge_request.to_reference - page_title "#{@merge_request.title} (#{@merge_request.to_reference})", _("Merge Requests") @@ -70,10 +70,13 @@ = render 'projects/commit/pipelines_list', disable_initialization: true, endpoint: pipelines_project_merge_request_path(@project, @merge_request) - if mr_action === "diffs" - add_page_startup_api_call @endpoint_metadata_url + - params = request.query_parameters + - if Feature.enabled?(:default_merge_ref_for_diffs, @project) + - params = params.merge(diff_head: true) = render "projects/merge_requests/tabs/pane", name: "diffs", id: "js-diffs-app", class: "diffs", data: { "is-locked": @merge_request.discussion_locked?, - endpoint: diffs_project_merge_request_path(@project, @merge_request, 'json', request.query_parameters), + endpoint: diffs_project_merge_request_path(@project, @merge_request, 'json', params), endpoint_metadata: @endpoint_metadata_url, - endpoint_batch: diffs_batch_project_json_merge_request_path(@project, @merge_request, 'json', request.query_parameters), + endpoint_batch: diffs_batch_project_json_merge_request_path(@project, @merge_request, 'json', params), endpoint_coverage: @coverage_path, help_page_path: suggest_changes_help_path, current_user_data: @current_user_data, @@ -89,7 +92,7 @@ .loading.hide .spinner.spinner-md -= render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees += render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, source_branch: @merge_request.source_branch - if @merge_request.can_be_reverted?(current_user) = render "projects/commit/change", type: 'revert', commit: @merge_request.merge_commit, title: @merge_request.title diff --git a/app/views/projects/mirrors/_mirror_repos.html.haml b/app/views/projects/mirrors/_mirror_repos.html.haml index 2f55cce70dc..d7098bbb69d 100644 --- a/app/views/projects/mirrors/_mirror_repos.html.haml +++ b/app/views/projects/mirrors/_mirror_repos.html.haml @@ -30,7 +30,7 @@ .form-check.gl-mb-3 = check_box_tag :only_protected_branches, '1', false, class: 'js-mirror-protected form-check-input' = label_tag :only_protected_branches, _('Only mirror protected branches'), class: 'form-check-label' - = link_to icon('question-circle'), help_page_path('user/project/protected_branches'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('user/project/protected_branches'), target: '_blank' .panel-footer.gl-display-flex.gl-justify-content-end = f.submit _('Mirror repository'), class: 'btn btn-success js-mirror-submit qa-mirror-repository-button', name: :update_remote_mirror @@ -74,4 +74,4 @@ - if mirror.ssh_key_auth? = clipboard_button(text: mirror.ssh_public_key, class: 'btn btn-default', title: _('Copy SSH public key'), qa_selector: 'copy_public_key_button') = render 'shared/remote_mirror_update_button', remote_mirror: mirror - %button.js-delete-mirror.qa-delete-mirror.rspec-delete-mirror.btn.btn-danger{ type: 'button', data: { mirror_id: mirror.id, toggle: 'tooltip', container: 'body' }, title: _('Remove') }= icon('trash-o') + %button.js-delete-mirror.qa-delete-mirror.rspec-delete-mirror.btn.btn-danger{ type: 'button', data: { mirror_id: mirror.id, toggle: 'tooltip', container: 'body' }, title: _('Remove') }= sprite_icon('remove') diff --git a/app/views/projects/mirrors/_mirror_repos_push.html.haml b/app/views/projects/mirrors/_mirror_repos_push.html.haml index 39ceaedab61..03839146f3b 100644 --- a/app/views/projects/mirrors/_mirror_repos_push.html.haml +++ b/app/views/projects/mirrors/_mirror_repos_push.html.haml @@ -10,4 +10,4 @@ .form-check.gl-mb-3 = check_box_tag :keep_divergent_refs, '1', false, class: 'js-mirror-keep-divergent-refs form-check-input' = label_tag :keep_divergent_refs, _('Keep divergent refs'), class: 'form-check-label' - = link_to icon('question-circle'), help_page_path('user/project/repository/repository_mirroring', anchor: 'keep-divergent-refs-core'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('user/project/repository/repository_mirroring', anchor: 'keep-divergent-refs'), target: '_blank' diff --git a/app/views/projects/notes/_actions.html.haml b/app/views/projects/notes/_actions.html.haml index 66721a28e62..058366eb75d 100644 --- a/app/views/projects/notes/_actions.html.haml +++ b/app/views/projects/notes/_actions.html.haml @@ -1,9 +1,10 @@ -- access = note_max_access_for_user(note) -- if note.has_special_role?(Note::SpecialRole::FIRST_TIME_CONTRIBUTOR) - %span.note-role.note-role-special.has-tooltip{ title: _("This is the author's first Merge Request to this project.") } - = sprite_icon('first-contribution', css_class: 'gl-icon gl-vertical-align-top') -- if access.nonzero? - %span.note-role.user-access-role= Gitlab::Access.human_access(access) +- access = note_human_max_access(note) +- if note.noteable_author?(@noteable) + %span{ class: 'note-role user-access-role has-tooltip d-none d-md-inline-block', title: _("This user is the author of this %{noteable}.") % { noteable: @noteable.human_class_name } }= _("Author") +- if access + %span{ class: 'note-role user-access-role has-tooltip', title: _("This user is a %{access} of the %{name} project.") % { access: access.downcase, name: note.project_name } }= access +- elsif note.contributor? + %span{ class: 'note-role user-access-role has-tooltip', title: _("This user has previously committed to the %{name} project.") % { name: note.project_name } }= _("Contributor") - if note.resolvable? - can_resolve = can?(current_user, :resolve_note, note) diff --git a/app/views/projects/packages/packages/_legacy_package_list.html.haml b/app/views/projects/packages/packages/_legacy_package_list.html.haml deleted file mode 100644 index 43dbb5c3eee..00000000000 --- a/app/views/projects/packages/packages/_legacy_package_list.html.haml +++ /dev/null @@ -1,60 +0,0 @@ -- sort_value = @sort -- sort_title = packages_sort_option_title(sort_value) - -- if @packages.any? - .d-flex.justify-content-end - .dropdown.inline.gl-mt-3.gl-mb-3.package-sort-dropdown - .btn-group{ role: 'group' } - .btn-group{ role: 'group' } - %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' }, class: 'btn btn-default' } - = sort_title - = icon('chevron-down') - %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable.dropdown-menu-sort - %li - = sortable_item(sort_title_created_date, package_sort_path(sort: sort_value_recently_created), sort_title) - = sortable_item(sort_title_name, package_sort_path(sort: sort_value_name_desc), sort_title) - = sortable_item(sort_title_version, package_sort_path(sort: sort_value_version_desc), sort_title) - = sortable_item(sort_title_type, package_sort_path(sort: sort_value_type_desc), sort_title) - = packages_sort_direction_button(sort_value) - - .table-holder - .gl-responsive-table-row.table-row-header.bg-secondary-50.px-2.border-top{ role: 'row' } - .table-section.section-30{ role: 'rowheader' } - = _('Name') - .table-section.section-20{ role: 'rowheader' } - = _('Version') - .table-section.section-20{ role: 'rowheader' } - = _('Type') - .table-section.section-20{ role: 'rowheader' } - = _('Created') - .table-section.section-10{ role: 'rowheader' } - - @packages.each do |package| - .gl-responsive-table-row.package-row.px-2{ data: { qa_selector: "package_row" } } - .table-section.section-30 - .table-mobile-header{ role: "rowheader" }= _("Name") - .table-mobile-content.flex-truncate-parent - = link_to package.name, project_package_path(@project, package), class: 'flex-truncate-child', data: { qa_selector: "package_link" } - .table-section.section-20 - .table-mobile-header{ role: "rowheader" }= _("Version") - .table-mobile-content - = package.version - .table-section.section-20 - .table-mobile-header{ role: "rowheader" }= _("Type") - .table-mobile-content - = package.package_type - .table-section.section-20 - .table-mobile-header{ role: "rowheader" }= _("Created") - .table-mobile-content - = time_ago_with_tooltip(package.created_at) - .table-section.section-10 - .table-mobile-header{ role: "rowheader" } - .table-mobile-content - - if can_destroy_package - .float-right - = link_to project_package_path(@project, package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-remove", title: _('Delete Package') do - = icon('trash') - = paginate @packages, theme: "gitlab" -- else - .row.empty-state - .col-12 - = render 'shared/packages/no_packages' diff --git a/app/views/projects/packages/packages/index.html.haml b/app/views/projects/packages/packages/index.html.haml index c81326f3760..0d5350ab62b 100644 --- a/app/views/projects/packages/packages/index.html.haml +++ b/app/views/projects/packages/packages/index.html.haml @@ -1,4 +1,5 @@ -- page_title _("Packages") +- page_title _("Package Registry") +- @content_class = "limit-container-width" unless fluid_layout .row .col-12 diff --git a/app/views/projects/packages/packages/show.html.haml b/app/views/projects/packages/packages/show.html.haml index a66ae466d9d..97a3c6e7092 100644 --- a/app/views/projects/packages/packages/show.html.haml +++ b/app/views/projects/packages/packages/show.html.haml @@ -1,19 +1,19 @@ -- add_to_breadcrumbs _("Packages"), project_packages_path(@project) +- add_to_breadcrumbs _("Package Registry"), project_packages_path(@project) - add_to_breadcrumbs @package.name, project_packages_path(@project) - breadcrumb_title @package.version -- page_title _("Packages") +- page_title _("Package Registry") +- @content_class = "limit-container-width" unless fluid_layout .row .col-12 #js-vue-packages-detail{ data: { package: package_from_presenter(@package), can_delete: can?(current_user, :destroy_package, @project).to_s, - destroy_path: project_package_path(@project, @package), svg_path: image_path('illustrations/no-packages.svg'), npm_path: package_registry_instance_url(:npm), npm_help_path: help_page_path('user/packages/npm_registry/index'), maven_path: package_registry_project_url(@project.id, :maven), maven_help_path: help_page_path('user/packages/maven_repository/index'), - conan_path: package_registry_instance_url(:conan), + conan_path: package_registry_project_url(@project.id, :conan), conan_help_path: help_page_path('user/packages/conan_repository/index'), nuget_path: nuget_package_registry_url(@project.id), nuget_help_path: help_page_path('user/packages/nuget_repository/index'), @@ -22,4 +22,6 @@ pypi_help_path: help_page_path('user/packages/pypi_repository/index'), composer_path: composer_registry_url(@project&.group&.id), composer_help_path: help_page_path('user/packages/composer_repository/index'), - project_name: @project.name} } + project_name: @project.name, + project_list_url: project_packages_path(@project), + group_list_url: @project.group ? group_packages_path(@project.group) : ''} } diff --git a/app/views/projects/pages/_access.html.haml b/app/views/projects/pages/_access.html.haml index 63dd7ca1def..5b23234791b 100644 --- a/app/views/projects/pages/_access.html.haml +++ b/app/views/projects/pages/_access.html.haml @@ -14,10 +14,10 @@ %p = external_link(domain.url, domain.url) - unless @project.public_pages? - .card-footer.alert-warning + .card-footer.gl-alert-warning - help_page = help_page_path('/user/project/pages/pages_access_control') - - link_start = '<a href="%{url}" target="_blank" class="alert-link" rel="noopener noreferrer">'.html_safe % { url: help_page } + - link_start = '<a href="%{url}" target="_blank" class="gl-alert-link" rel="noopener noreferrer">'.html_safe % { url: help_page } - link_end = '</a>'.html_safe = html_escape_once(s_('GitLabPages|Access Control is enabled for this Pages website; only authorized users will be able to access it. To make your website publicly available, navigate to your project\'s %{strong_start}Settings > General > Visibility%{strong_end} and select %{strong_start}Everyone%{strong_end} in pages section. Read the %{link_start}documentation%{link_end} for more information.')).html_safe % { link_start: link_start, link_end: link_end, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } - .card-footer.alert-primary + .card-footer.gl-alert-info = s_('GitLabPages|It may take up to 30 minutes before the site is available after the first deployment.') diff --git a/app/views/projects/pipelines/_pipeline_warnings.html.haml b/app/views/projects/pipelines/_pipeline_warnings.html.haml deleted file mode 100644 index e27bd440462..00000000000 --- a/app/views/projects/pipelines/_pipeline_warnings.html.haml +++ /dev/null @@ -1,6 +0,0 @@ -- if warnings.any? - - warnings.map(&:content).each do |warning| - .bs-callout.bs-callout-warning - %p - %b= _("Warning:") - = markdown(warning) diff --git a/app/views/projects/pipelines/_with_tabs.html.haml b/app/views/projects/pipelines/_with_tabs.html.haml index 4ae06e1e16f..f1ed67f8f82 100644 --- a/app/views/projects/pipelines/_with_tabs.html.haml +++ b/app/views/projects/pipelines/_with_tabs.html.haml @@ -26,7 +26,7 @@ = render_if_exists "projects/pipelines/tabs_holder", pipeline: @pipeline, project: @project .tab-content - #js-tab-pipeline.tab-pane.position-absolute.position-left-0.w-100 + #js-tab-pipeline.tab-pane.gl-absolute.gl-left-0.gl-w-full #js-pipeline-graph-vue #js-tab-builds.tab-pane diff --git a/app/views/projects/pipelines/new.html.haml b/app/views/projects/pipelines/new.html.haml index 726bf9af223..2be75106000 100644 --- a/app/views/projects/pipelines/new.html.haml +++ b/app/views/projects/pipelines/new.html.haml @@ -7,7 +7,7 @@ %hr - if Feature.enabled?(:new_pipeline_form) - #js-new-pipeline{ data: { project_id: @project.id, pipelines_path: project_pipelines_path(@project), ref_param: params[:ref] || @project.default_branch, var_param: params[:var].to_json, file_param: params[:file_var].to_json, ref_names: @project.repository.ref_names.to_json.html_safe, settings_link: project_settings_ci_cd_path(@project) } } + #js-new-pipeline{ data: { project_id: @project.id, pipelines_path: project_pipelines_path(@project), ref_param: params[:ref] || @project.default_branch, var_param: params[:var].to_json, file_param: params[:file_var].to_json, ref_names: @project.repository.ref_names.to_json.html_safe, settings_link: project_settings_ci_cd_path(@project), max_warnings: ::Gitlab::Ci::Warnings::MAX_LIMIT } } - else = form_for @pipeline, as: :pipeline, url: project_pipelines_path(@project), html: { id: "new-pipeline-form", class: "js-new-pipeline-form js-requires-input" } do |f| @@ -43,5 +43,4 @@ = f.submit s_('Pipeline|Run Pipeline'), class: 'btn btn-success js-variables-save-button', tabindex: 3 = link_to _('Cancel'), project_pipelines_path(@project), class: 'btn btn-default float-right' - -# haml-lint:disable InlineJavaScript %script#availableRefs{ type: "application/json" }= @project.repository.ref_names.to_json.html_safe diff --git a/app/views/projects/pipelines/show.html.haml b/app/views/projects/pipelines/show.html.haml index e1a606b1765..a9c140aee5f 100644 --- a/app/views/projects/pipelines/show.html.haml +++ b/app/views/projects/pipelines/show.html.haml @@ -19,7 +19,6 @@ - lint_link_start = '<a href="%{url}">'.html_safe % { url: lint_link_url } = s_('You can also test your %{gitlab_ci_yml} in %{lint_link_start}CI Lint%{lint_link_end}').html_safe % { gitlab_ci_yml: '.gitlab-ci.yml', lint_link_start: lint_link_start, lint_link_end: '</a>'.html_safe } - = render "projects/pipelines/pipeline_warnings", warnings: @pipeline.warning_messages = render "projects/pipelines/with_tabs", pipeline: @pipeline, pipeline_has_errors: pipeline_has_errors .js-pipeline-details-vue{ data: { endpoint: project_pipeline_path(@project, @pipeline, format: :json) } } diff --git a/app/views/projects/product_analytics/graphs.html.haml b/app/views/projects/product_analytics/graphs.html.haml index 89286061594..c345561e6ce 100644 --- a/app/views/projects/product_analytics/graphs.html.haml +++ b/app/views/projects/product_analytics/graphs.html.haml @@ -5,6 +5,10 @@ %p = _('Showing graphs based on events of the last %{timerange} days.') % { timerange: @timerange } + +.gl-mb-3 + = render 'graph', graph: @activity_graph + - @graphs.each_slice(2) do |pair| .row.append-bottom-10 - pair.each do |graph| diff --git a/app/views/projects/serverless/functions/index.html.haml b/app/views/projects/serverless/functions/index.html.haml index 383c187b398..b17e6df1e8e 100644 --- a/app/views/projects/serverless/functions/index.html.haml +++ b/app/views/projects/serverless/functions/index.html.haml @@ -10,11 +10,10 @@ help_path: help_page_path('user/project/clusters/serverless/index'), empty_image_path: image_path('illustrations/empty-state/empty-serverless-lg.svg') } } -%div{ class: [('limit-container-width' unless fluid_layout)] } - .js-serverless-survey-banner{ data: { user_name: current_user.name, user_email: current_user.email } } +.js-serverless-survey-banner{ data: { user_name: current_user.name, user_email: current_user.email } } - .js-serverless-functions-notice - .flash-container +.js-serverless-functions-notice + .flash-container - .top-area.adjust.d-flex.justify-content-center.gl-border-none - .serverless-functions-table#js-serverless-functions +.top-area.adjust.d-flex.justify-content-center.gl-border-none + .serverless-functions-table#js-serverless-functions diff --git a/app/views/projects/serverless/functions/show.html.haml b/app/views/projects/serverless/functions/show.html.haml index 79bb943d6ed..dd81d957e51 100644 --- a/app/views/projects/serverless/functions/show.html.haml +++ b/app/views/projects/serverless/functions/show.html.haml @@ -11,10 +11,9 @@ clusters_path: clusters_path, help_path: help_path } } -%div{ class: [('limit-container-width' unless fluid_layout)] } - .serverless-function-details#js-serverless-function-details +.serverless-function-details#js-serverless-function-details - .js-serverless-function-notice - .flash-container +.js-serverless-function-notice + .flash-container - .function-holder.js-function-holder.input-group +.function-holder.js-function-holder.input-group diff --git a/app/views/projects/services/_form.html.haml b/app/views/projects/services/_form.html.haml index 24b47f6e4b6..2b1e08f4880 100644 --- a/app/views/projects/services/_form.html.haml +++ b/app/views/projects/services/_form.html.haml @@ -13,13 +13,9 @@ - if @service.respond_to?(:detailed_description) %p= @service.detailed_description .col-lg-8 - = form_for(@service, as: :service, url: scoped_integration_path(@service), method: :put, html: { class: 'gl-show-field-errors integration-settings-form js-integration-settings-form', data: { 'can-test' => @service.can_test?, 'test-url' => test_project_service_path(@project, @service) } }) do |form| + = form_for(@service, as: :service, url: scoped_integration_path(@service), method: :put, html: { class: 'gl-show-field-errors integration-settings-form js-integration-settings-form', data: { 'test-url' => test_project_service_path(@project, @service) } }) do |form| = render 'shared/service_settings', form: form, integration: @service - .footer-block.row-content-block{ :class => "#{'gl-display-none' if @service.is_a?(AlertsService)}" } - %input{ id: 'services_redirect_to', type: 'hidden', name: 'redirect_to', value: request.referrer } - = service_save_button(disabled: @service.is_a?(AlertsService)) - - = link_to _('Cancel'), project_settings_integrations_path(@project), class: 'btn btn-cancel' + %input{ id: 'services_redirect_to', type: 'hidden', name: 'redirect_to', value: request.referrer } - if lookup_context.template_exists?('show', "projects/services/#{@service.to_param}", true) %hr diff --git a/app/views/projects/services/prometheus/_custom_metrics.html.haml b/app/views/projects/services/prometheus/_custom_metrics.html.haml index 3642460467b..57100282c34 100644 --- a/app/views/projects/services/prometheus/_custom_metrics.html.haml +++ b/app/views/projects/services/prometheus/_custom_metrics.html.haml @@ -20,7 +20,7 @@ .flash-text .loading-metrics.js-loading-custom-metrics %p.m-3 - = icon('spinner spin', class: 'metrics-load-spinner') + = loading_icon(css_class: 'metrics-load-spinner') = s_('PrometheusService|Finding custom metrics...') .empty-metrics.hidden.js-empty-custom-metrics %p.text-tertiary.m-3.js-no-active-integration-text.hidden diff --git a/app/views/projects/services/prometheus/_metrics.html.haml b/app/views/projects/services/prometheus/_metrics.html.haml index 79f5e846bd7..732a084d476 100644 --- a/app/views/projects/services/prometheus/_metrics.html.haml +++ b/app/views/projects/services/prometheus/_metrics.html.haml @@ -16,7 +16,7 @@ .card-body .loading-metrics.js-loading-metrics %p.m-3 - = icon('spinner spin', class: 'metrics-load-spinner') + = loading_icon(css_class: 'metrics-load-spinner') = s_('PrometheusService|Finding and configuring metrics...') .empty-metrics.hidden.js-empty-metrics %p.text-tertiary.m-3 diff --git a/app/views/projects/settings/ci_cd/_autodevops_form.html.haml b/app/views/projects/settings/ci_cd/_autodevops_form.html.haml index b4c9e51f53a..453deff7756 100644 --- a/app/views/projects/settings/ci_cd/_autodevops_form.html.haml +++ b/app/views/projects/settings/ci_cd/_autodevops_form.html.haml @@ -40,18 +40,18 @@ = form.radio_button :deploy_strategy, 'continuous', class: 'form-check-input' = form.label :deploy_strategy_continuous, class: 'form-check-label' do = s_('CICD|Continuous deployment to production') - = link_to icon('question-circle'), help_page_path('topics/autodevops/stages.md', anchor: 'auto-deploy'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/stages.md', anchor: 'auto-deploy'), target: '_blank' .form-check = form.radio_button :deploy_strategy, 'timed_incremental', class: 'form-check-input' = form.label :deploy_strategy_timed_incremental, class: 'form-check-label' do = s_('CICD|Continuous deployment to production using timed incremental rollout') - = link_to icon('question-circle'), help_page_path('topics/autodevops/customize.md', anchor: 'timed-incremental-rollout-to-production-premium'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/customize.md', anchor: 'timed-incremental-rollout-to-production'), target: '_blank' .form-check = form.radio_button :deploy_strategy, 'manual', class: 'form-check-input' = form.label :deploy_strategy_manual, class: 'form-check-label' do = s_('CICD|Automatic deployment to staging, manual deployment to production') - = link_to icon('question-circle'), help_page_path('topics/autodevops/customize.md', anchor: 'incremental-rollout-to-production-premium'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('topics/autodevops/customize.md', anchor: 'incremental-rollout-to-production'), target: '_blank' = f.submit _('Save changes'), class: "btn btn-success gl-mt-5", data: { qa_selector: 'save_changes_button' } diff --git a/app/views/projects/settings/ci_cd/_form.html.haml b/app/views/projects/settings/ci_cd/_form.html.haml index a0dd06e3304..414a5f264bd 100644 --- a/app/views/projects/settings/ci_cd/_form.html.haml +++ b/app/views/projects/settings/ci_cd/_form.html.haml @@ -8,7 +8,7 @@ = _("Git strategy for pipelines") %p = html_escape(_("Choose between %{code_open}clone%{code_close} or %{code_open}fetch%{code_close} to get the recent application code")) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe } - = link_to icon('question-circle'), help_page_path('ci/pipelines/settings', anchor: 'git-strategy'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'git-strategy'), target: '_blank' .form-check = f.radio_button :build_allow_git_fetch, 'false', { class: 'form-check-input' } = f.label :build_allow_git_fetch_false, class: 'form-check-label' do @@ -38,7 +38,7 @@ = f.text_field :build_timeout_human_readable, class: 'form-control' %p.form-text.text-muted = _('If any job surpasses this timeout threshold, it will be marked as failed. Human readable time input language is accepted like "1 hour". Values without specification represent seconds.') - = link_to icon('question-circle'), help_page_path('ci/pipelines/settings', anchor: 'timeout'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'timeout'), target: '_blank' - if can?(current_user, :update_max_artifacts_size, @project) %hr @@ -47,7 +47,7 @@ = f.number_field :max_artifacts_size, class: 'form-control' %p.form-text.text-muted = _("Set the maximum file size for each job's artifacts") - = link_to icon('question-circle'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'maximum-artifacts-size-core-only'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'maximum-artifacts-size'), target: '_blank' %hr .form-group @@ -55,7 +55,7 @@ = f.text_field :ci_config_path, class: 'form-control', placeholder: '.gitlab-ci.yml' %p.form-text.text-muted = html_escape(_("The path to the CI configuration file. Defaults to %{code_open}.gitlab-ci.yml%{code_close}")) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe } - = link_to icon('question-circle'), help_page_path('ci/pipelines/settings', anchor: 'custom-ci-configuration-path'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'custom-ci-configuration-path'), target: '_blank' %hr .form-group @@ -65,7 +65,7 @@ %strong= _("Public pipelines") .form-text.text-muted = _("Allow public access to pipelines and job details, including output logs and artifacts") - = link_to icon('question-circle'), help_page_path('ci/pipelines/settings', anchor: 'visibility-of-pipelines'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'visibility-of-pipelines'), target: '_blank' .bs-callout.bs-callout-info %p #{_("If enabled")}: %ul @@ -86,7 +86,7 @@ %strong= _("Auto-cancel redundant, pending pipelines") .form-text.text-muted = _("New pipelines will cancel older, pending pipelines on the same branch") - = link_to icon('question-circle'), help_page_path('ci/pipelines/settings', anchor: 'auto-cancel-pending-pipelines'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'auto-cancel-pending-pipelines'), target: '_blank' .form-group .form-check @@ -95,7 +95,7 @@ %strong= _("Skip outdated deployment jobs") .form-text.text-muted = _("When a deployment job is successful, skip older deployment jobs that are still pending") - = link_to icon('question-circle'), help_page_path('ci/pipelines/settings', anchor: 'skip-outdated-deployment-jobs'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'skip-outdated-deployment-jobs'), target: '_blank' %hr .form-group @@ -108,7 +108,7 @@ .input-group-text / %p.form-text.text-muted = _("A regular expression that will be used to find the test coverage output in the job log. Leave blank to disable") - = link_to icon('question-circle'), help_page_path('ci/pipelines/settings', anchor: 'test-coverage-parsing'), target: '_blank' + = link_to sprite_icon('question-o'), help_page_path('ci/pipelines/settings', anchor: 'test-coverage-parsing'), target: '_blank' .bs-callout.bs-callout-info %p= _("Below are examples of regex for existing tools:") %ul diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 4a521f2f46e..67bdcd0d9d6 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -7,22 +7,21 @@ = render partial: 'flash_messages', locals: { project: @project } -%div{ class: [("limit-container-width" unless fluid_layout)] } - = render "projects/last_push" += render "projects/last_push" - = render "home_panel" += render "home_panel" - - if can?(current_user, :download_code, @project) && @project.repository_languages.present? - = repository_languages_bar(@project.repository_languages) +- if can?(current_user, :download_code, @project) && @project.repository_languages.present? + = repository_languages_bar(@project.repository_languages) - = render "archived_notice", project: @project - = render_if_exists "projects/marked_for_deletion_notice", project: @project - = render_if_exists "projects/ancestor_group_marked_for_deletion_notice", project: @project += render "archived_notice", project: @project += render_if_exists "projects/marked_for_deletion_notice", project: @project += render_if_exists "projects/ancestor_group_marked_for_deletion_notice", project: @project - - view_path = @project.default_view +- view_path = @project.default_view - - if show_auto_devops_callout?(@project) - = render 'shared/auto_devops_callout' +- if show_auto_devops_callout?(@project) + = render 'shared/auto_devops_callout' - %div{ class: project_child_container_class(view_path) } - = render view_path, is_project_overview: true +%div{ class: project_child_container_class(view_path) } + = render view_path, is_project_overview: true diff --git a/app/views/projects/static_site_editor/show.html.haml b/app/views/projects/static_site_editor/show.html.haml index 2d817912335..cbe27cefba3 100644 --- a/app/views/projects/static_site_editor/show.html.haml +++ b/app/views/projects/static_site_editor/show.html.haml @@ -1 +1 @@ -#static-site-editor{ data: @config.payload.merge({ merge_requests_illustration_path: image_path('illustrations/merge_requests.svg') }) } +#static-site-editor{ data: @data } diff --git a/app/views/projects/tags/_tag.html.haml b/app/views/projects/tags/_tag.html.haml index c8a6168edfc..dba9b20fcff 100644 --- a/app/views/projects/tags/_tag.html.haml +++ b/app/views/projects/tags/_tag.html.haml @@ -2,8 +2,8 @@ - release = @releases.find { |release| release.tag == tag.name } %li.flex-row.allow-wrap .row-main-content - = icon('tag') - = link_to tag.name, project_tag_path(@project, tag.name), class: 'item-title ref-name gl-ml-2' + = sprite_icon('tag') + = link_to tag.name, project_tag_path(@project, tag.name), class: 'item-title ref-name' - if protected_tag?(@project, tag) %span.badge.badge-success.gl-ml-2 @@ -39,4 +39,4 @@ = link_to edit_project_tag_release_path(@project, tag.name), class: 'btn btn-edit has-tooltip', title: s_('TagsPage|Edit release notes'), data: { container: "body" } do = sprite_icon("pencil") = link_to project_tag_path(@project, tag.name), class: "btn btn-remove remove-row has-tooltip gl-ml-3 #{protected_tag?(@project, tag) ? 'disabled' : ''}", title: s_('TagsPage|Delete tag'), method: :delete, data: { confirm: s_('TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?') % { tag_name: tag.name }, container: 'body' }, remote: true do - = icon("trash-o") + = sprite_icon("remove") diff --git a/app/views/projects/tags/destroy.js.haml b/app/views/projects/tags/destroy.js.haml index cde23e03d54..59d359bbf10 100644 --- a/app/views/projects/tags/destroy.js.haml +++ b/app/views/projects/tags/destroy.js.haml @@ -1,4 +1,4 @@ - if @error.present? - new Flash('#{escape_javascript(@error)}', 'alert'); + new Flash({ message: '#{escape_javascript(@error)}', type: 'alert' }); - elsif @repository.tags.empty? $('.tags').load(document.URL + ' .nothing-here-block').hide().fadeIn(1000) diff --git a/app/views/projects/tags/new.html.haml b/app/views/projects/tags/new.html.haml index c32318df7cc..fe42394d919 100644 --- a/app/views/projects/tags/new.html.haml +++ b/app/views/projects/tags/new.html.haml @@ -2,8 +2,10 @@ - default_ref = params[:ref] || @project.default_branch - if @error - .alert.alert-danger - %button.close{ type: "button", "data-dismiss" => "alert" } × + .gl-alert.gl-alert-danger + = sprite_icon('error', css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') + %button.js-close.gl-alert-dismiss{ type: 'button', 'aria-label' => _('Dismiss') } + = sprite_icon('close', css_class: 'gl-icon') = @error %h3.page-title @@ -52,5 +54,4 @@ .form-actions = button_tag s_('TagsPage|Create tag'), class: 'btn btn-success', data: { qa_selector: "create_tag_button" } = link_to s_('TagsPage|Cancel'), project_tags_path(@project), class: 'btn btn-cancel' --# haml-lint:disable InlineJavaScript %script#availableRefs{ type: "application/json" }= @project.repository.ref_names.to_json.html_safe diff --git a/app/views/projects/tags/show.html.haml b/app/views/projects/tags/show.html.haml index ff973e2922f..25a560da5c6 100644 --- a/app/views/projects/tags/show.html.haml +++ b/app/views/projects/tags/show.html.haml @@ -10,7 +10,7 @@ .nav-text .title %span.item-title.ref-name{ data: { qa_selector: 'tag_name_content' } } - = icon('tag') + = sprite_icon('tag') = @tag.name - if protected_tag?(@project, @tag) %span.badge.badge-success diff --git a/app/views/projects/tree/_tree_header.html.haml b/app/views/projects/tree/_tree_header.html.haml index eab6d750a02..268858f8ff8 100644 --- a/app/views/projects/tree/_tree_header.html.haml +++ b/app/views/projects/tree/_tree_header.html.haml @@ -1,5 +1,6 @@ - can_collaborate = can_collaborate_with_project?(@project) - can_create_mr_from_fork = can?(current_user, :fork_project, @project) && can?(current_user, :create_merge_request_in, @project) +- can_visit_ide = can_collaborate || current_user&.already_forked?(@project) .tree-ref-container .tree-ref-holder @@ -14,12 +15,12 @@ = render 'projects/find_file_link' - - if can_collaborate || current_user&.already_forked?(@project) - #js-tree-web-ide-link.d-inline-block - - elsif can_create_mr_from_fork - = link_to '#modal-confirm-fork', class: 'btn btn-default qa-web-ide-button', data: { target: '#modal-confirm-fork', toggle: 'modal'} do - = _('Web IDE') - = render 'shared/confirm_fork_modal', fork_path: ide_fork_and_edit_path(@project, @ref, @path) + - if can_visit_ide || can_create_mr_from_fork + #js-tree-web-ide-link.d-inline-block{ data: { options: vue_ide_link_data(@project, @ref).to_json } } + - if !can_visit_ide + = render 'shared/confirm_fork_modal', fork_path: ide_fork_and_edit_path(@project, @ref, @path) + - unless current_user&.gitpod_enabled + = render 'shared/gitpod/enable_gitpod_modal' - if show_xcode_link?(@project) .project-action-button.project-xcode.inline< diff --git a/app/views/projects/tree/_tree_row.html.haml b/app/views/projects/tree/_tree_row.html.haml index 300cd5423bf..04496914c02 100644 --- a/app/views/projects/tree/_tree_row.html.haml +++ b/app/views/projects/tree/_tree_row.html.haml @@ -23,5 +23,5 @@ %td.d-none.d-sm-table-cell.tree-commit %td.tree-time-ago.text-right %span.log_loading.hide - %i.fa.fa-spinner.fa-spin + = loading_icon Loading commit data... diff --git a/app/views/projects/triggers/_trigger.html.haml b/app/views/projects/triggers/_trigger.html.haml index 3036e918160..579b8ba2766 100644 --- a/app/views/projects/triggers/_trigger.html.haml +++ b/app/views/projects/triggers/_trigger.html.haml @@ -34,4 +34,4 @@ = sprite_icon('pencil') - if can?(current_user, :manage_trigger, trigger) = link_to project_trigger_path(@project, trigger), data: { confirm: revoke_trigger_confirmation }, method: :delete, title: "Revoke", class: "btn btn-default btn-warning btn-sm btn-trigger-revoke" do - %i.fa.fa-trash + = sprite_icon('remove') |