diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 11:59:07 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 11:59:07 +0000 |
commit | 8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca (patch) | |
tree | 544930fb309b30317ae9797a9683768705d664c4 /app/views/groups | |
parent | 4b1de649d0168371549608993deac953eb692019 (diff) | |
download | gitlab-ce-8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca.tar.gz |
Add latest changes from gitlab-org/gitlab@13-7-stable-eev13.7.0-rc42
Diffstat (limited to 'app/views/groups')
-rw-r--r-- | app/views/groups/_create_chat_team.html.haml | 6 | ||||
-rw-r--r-- | app/views/groups/_home_panel.html.haml | 6 | ||||
-rw-r--r-- | app/views/groups/_import_group_from_another_instance_panel.html.haml | 25 | ||||
-rw-r--r-- | app/views/groups/_import_group_from_file_panel.html.haml (renamed from app/views/groups/_import_group_pane.html.haml) | 46 | ||||
-rw-r--r-- | app/views/groups/_new_group_fields.html.haml | 16 | ||||
-rw-r--r-- | app/views/groups/_subgroups_and_projects.html.haml | 2 | ||||
-rw-r--r-- | app/views/groups/dependency_proxies/_url.html.haml | 2 | ||||
-rw-r--r-- | app/views/groups/dependency_proxies/show.html.haml | 2 | ||||
-rw-r--r-- | app/views/groups/edit.html.haml | 9 | ||||
-rw-r--r-- | app/views/groups/group_members/index.html.haml | 53 | ||||
-rw-r--r-- | app/views/groups/new.html.haml | 9 | ||||
-rw-r--r-- | app/views/groups/registry/repositories/index.html.haml | 2 | ||||
-rw-r--r-- | app/views/groups/show.html.haml | 3 |
13 files changed, 108 insertions, 73 deletions
diff --git a/app/views/groups/_create_chat_team.html.haml b/app/views/groups/_create_chat_team.html.haml index 07394eec107..f141b646e69 100644 --- a/app/views/groups/_create_chat_team.html.haml +++ b/app/views/groups/_create_chat_team.html.haml @@ -1,10 +1,10 @@ .form-group .col-sm-2.col-form-label = f.label :create_chat_team do - %span.mattermost-icon + %span.gl-display-flex = custom_icon('icon_mattermost') - Mattermost - .col-sm-10 + %span.gl-ml-2 Mattermost + .col-sm-12 .form-check.js-toggle-container .js-toggle-button.form-check-input= f.check_box(:create_chat_team, { checked: false }, true, false) = f.label :create_chat_team, class: 'form-check-label' do diff --git a/app/views/groups/_home_panel.html.haml b/app/views/groups/_home_panel.html.haml index ee08829d990..67f278a06f3 100644 --- a/app/views/groups/_home_panel.html.haml +++ b/app/views/groups/_home_panel.html.haml @@ -6,10 +6,10 @@ .row.mb-3 .home-panel-title-row.col-md-12.col-lg-6.d-flex .avatar-container.rect-avatar.s64.home-panel-avatar.gl-mr-3.float-none - = group_icon(@group, class: 'avatar avatar-tile s64', width: 64, height: 64) + = group_icon(@group, class: 'avatar avatar-tile s64', width: 64, height: 64, itemprop: 'logo') .d-flex.flex-column.flex-wrap.align-items-baseline .d-inline-flex.align-items-baseline - %h1.home-panel-title.gl-mt-3.gl-mb-2 + %h1.home-panel-title.gl-mt-3.gl-mb-2{ itemprop: 'name' } = @group.name %span.visibility-icon.text-secondary.gl-ml-2.has-tooltip{ data: { container: 'body' }, title: visibility_icon_description(@group) } = visibility_level_icon(@group.visibility_level, options: {class: 'icon'}) @@ -34,7 +34,7 @@ - if @group.description.present? .group-home-desc.mt-1 .home-panel-description - .home-panel-description-markdown.read-more-container + .home-panel-description-markdown.read-more-container{ itemprop: 'description' } = markdown_field(@group, :description) %button.btn.btn-blank.btn-link.js-read-more-trigger.d-lg-none{ type: "button" } = _("Read more") diff --git a/app/views/groups/_import_group_from_another_instance_panel.html.haml b/app/views/groups/_import_group_from_another_instance_panel.html.haml new file mode 100644 index 00000000000..c95e7c16161 --- /dev/null +++ b/app/views/groups/_import_group_from_another_instance_panel.html.haml @@ -0,0 +1,25 @@ += form_with url: configure_import_bulk_imports_path, class: 'group-form gl-show-field-errors' do |f| + = form_errors(@group) + + .gl-border-l-solid.gl-border-r-solid.gl-border-gray-100.gl-border-1.gl-p-5 + %h4 + = s_('GroupsNew|Import groups from another instance of GitLab') + %p + = s_('GroupsNew|Provide credentials for another instance of GitLab to import your groups directly.') + .form-group.gl-display-flex.gl-flex-direction-column + = f.label :bulk_import_gitlab_url, s_('GroupsNew|GitLab source URL'), for: 'import_gitlab_url' + = f.text_field :bulk_import_gitlab_url, placeholder: 'https://gitlab.example.com', class: 'gl-form-input col-xs-12 col-sm-8', + required: true, + title: s_('GroupsNew|Please fill in GitLab source URL.'), + id: 'import_gitlab_url' + .form-group.gl-display-flex.gl-flex-direction-column + = f.label :bulk_import_gitlab_access_token, s_('GroupsNew|Personal access token'), for: 'import_gitlab_token' + .gl-font-weight-normal + - pat_link_start = '<a href="%{url}" target="_blank">'.html_safe % { url: help_page_path('user/profile/personal_access_tokens') } + = s_('GroupsNew|Navigate to user settings to find your %{link_start}personal access token%{link_end}.').html_safe % { link_start: pat_link_start, link_end: '</a>'.html_safe } + = f.text_field :bulk_import_gitlab_access_token, placeholder: s_('GroupsNew|e.g. h8d3f016698e...'), class: 'gl-form-input gl-mt-3 col-xs-12 col-sm-8', + required: true, + title: s_('GroupsNew|Please fill in your personal access token.'), + id: 'import_gitlab_token' + .gl-border-gray-100.gl-border-solid.gl-border-1.gl-bg-gray-10.gl-p-5 + = f.submit s_('GroupsNew|Connect instance'), class: 'btn gl-button btn-success' diff --git a/app/views/groups/_import_group_pane.html.haml b/app/views/groups/_import_group_from_file_panel.html.haml index 9ad8ebbb37d..171f3e0371a 100644 --- a/app/views/groups/_import_group_pane.html.haml +++ b/app/views/groups/_import_group_from_file_panel.html.haml @@ -5,18 +5,22 @@ = form_with url: import_gitlab_group_path, class: 'group-form gl-show-field-errors', multipart: true do |f| = form_errors(@group) - .row - .form-group.group-name.col-sm-12 - = f.label :name, _('Group name'), class: 'label-bold' - = f.text_field :name, placeholder: s_('GroupsNew|My Awesome Group'), class: 'js-autofill-group-name form-control input-lg', + .gl-border-l-solid.gl-border-r-solid.gl-border-gray-100.gl-border-1.gl-p-5 + %h4 + = _('Import group from file') + %p + = s_('GroupsNew|Provide credentials for another instance of GitLab to import your groups directly.') + .form-group.gl-display-flex.gl-flex-direction-column + = f.label :name, _('New group name'), for: 'import_group_name' + = f.text_field :name, placeholder: s_('GroupsNew|My Awesome Group'), class: 'js-autofill-group-name gl-form-input col-xs-12 col-sm-8', required: true, title: _('Please fill in a descriptive name for your group.'), - autofocus: true + autofocus: true, + id: 'import_group_name' - .row - .form-group.col-xs-12.col-sm-8 - = f.label :path, _('Group URL'), class: 'label-bold' - .input-group.gl-field-error-anchor + .form-group.gl-display-flex.gl-flex-direction-column + = f.label :import_group_path, _('New group URL'), for: 'import_group_path' + .input-group.gl-field-error-anchor.col-xs-12.col-sm-8.gl-p-0 .group-root-path.input-group-prepend.has-tooltip{ title: group_path, :'data-placement' => 'bottom' } .input-group-text %span @@ -35,18 +39,12 @@ %span.gl-path-suggestions %p.validation-success.gl-field-success.field-validation.hide= _('Group path is available.') %p.validation-pending.gl-field-error-ignore.field-validation.hide= _('Checking group path availability...') - - .row - .form-group.col-md-12 - = s_('GroupsNew|To copy a GitLab group between installations, navigate to the group settings page for the original installation, generate an export file, and upload it here.') - .row - .form-group.col-sm-12 - = f.label :file, s_('GroupsNew|Import a GitLab group export file'), class: 'label-bold' - %div - = render 'shared/file_picker_button', f: f, field: :file, help_text: nil - - .row - .form-actions.col-sm-12 - = f.submit s_('GroupsNew|Import group'), class: 'btn btn-success' - = link_to _('Cancel'), new_group_path, class: 'btn btn-cancel' - + .form-group + = f.label :file, s_('GroupsNew|Upload file') + .gl-font-weight-normal + - import_export_link_start = '<a href="%{url}" target="_blank">'.html_safe % { url: help_page_path('user/group/settings/import_export') } + = s_('GroupsNew|To import a group, navigate to the group settings for the GitLab source instance, %{link_start}generate an export file%{link_end}, and upload it here.').html_safe % { link_start: import_export_link_start, link_end: '</a>'.html_safe } + .gl-mt-3 + = render 'shared/file_picker_button', f: f, field: :file, help_text: nil, classes: 'gl-button btn-success-secondary gl-mr-2' + .gl-border-gray-100.gl-border-solid.gl-border-1.gl-bg-gray-10.gl-p-5 + = f.submit _('Import'), class: 'btn gl-button btn-success' diff --git a/app/views/groups/_new_group_fields.html.haml b/app/views/groups/_new_group_fields.html.haml index d9706556e79..3872bbcd062 100644 --- a/app/views/groups/_new_group_fields.html.haml +++ b/app/views/groups/_new_group_fields.html.haml @@ -2,12 +2,7 @@ = render 'shared/group_form', f: f, autofocus: true .row - .form-group.group-description-holder.col-sm-12 - = f.label :avatar, _("Group avatar"), class: 'label-bold' - %div - = render 'shared/choose_avatar_button', f: f - - .form-group.col-sm-12 + .form-group.col-sm-12.gl-mb-0 %label.label-bold = _('Visibility level') %p @@ -15,8 +10,13 @@ = link_to _('View the documentation'), help_page_path("public_access/public_access"), target: '_blank' = render 'shared/visibility_level', f: f, visibility_level: default_group_visibility, can_change_visibility_level: true, form_model: @group, with_label: false - = render 'create_chat_team', f: f if Gitlab.config.mattermost.enabled - +- if Gitlab.config.mattermost.enabled + .row + = render 'create_chat_team', f: f +.row + .col-sm-4 + = render_if_exists 'shared/groups/invite_members' +.row .form-actions.col-sm-12 = f.submit _('Create group'), class: "btn btn-success" = link_to _('Cancel'), dashboard_groups_path, class: 'btn btn-cancel' diff --git a/app/views/groups/_subgroups_and_projects.html.haml b/app/views/groups/_subgroups_and_projects.html.haml index cb15fe339e1..d9ab828a83b 100644 --- a/app/views/groups/_subgroups_and_projects.html.haml +++ b/app/views/groups/_subgroups_and_projects.html.haml @@ -3,6 +3,6 @@ = render "shared/groups/empty_state" %section{ data: { hide_projects: 'false', group_id: group.id, path: group_path(group) } } - .js-groups-list-holder + .js-groups-list-holder{ data: { show_schema_markup: 'true'} } .loading-container.text-center.prepend-top-20 .spinner.spinner-md diff --git a/app/views/groups/dependency_proxies/_url.html.haml b/app/views/groups/dependency_proxies/_url.html.haml index 9242954b684..25a2442f4d4 100644 --- a/app/views/groups/dependency_proxies/_url.html.haml +++ b/app/views/groups/dependency_proxies/_url.html.haml @@ -1,4 +1,4 @@ -- proxy_url = "#{group_url(@group)}/dependency_proxy/containers" +- proxy_url = "#{group_url(@group)}#{DependencyProxy::URL_SUFFIX}" %h5.prepend-top-20= _('Dependency proxy URL') diff --git a/app/views/groups/dependency_proxies/show.html.haml b/app/views/groups/dependency_proxies/show.html.haml index ff1312eb763..2ecf92e0769 100644 --- a/app/views/groups/dependency_proxies/show.html.haml +++ b/app/views/groups/dependency_proxies/show.html.haml @@ -7,7 +7,7 @@ - link_start = '<a href="%{url}">'.html_safe % { url: help_page_path('user/packages/dependency_proxy/index') } = _('Create a local proxy for storing frequently used upstream images. %{link_start}Learn more%{link_end} about dependency proxies.').html_safe % { link_start: link_start, link_end: '</a>'.html_safe } -- if @group.public? +- if Feature.enabled?(:dependency_proxy_for_private_groups, default_enabled: true) || @group.public? - if can?(current_user, :admin_dependency_proxy, @group) = form_for(@dependency_proxy, method: :put, url: group_dependency_proxy_path(@group)) do |f| .form-group diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml index eafee325500..33cd90ce5d3 100644 --- a/app/views/groups/edit.html.haml +++ b/app/views/groups/edit.html.haml @@ -8,7 +8,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only{ role: 'button' } = _('Naming, visibility') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = _('Collapse') %p = _('Update your group name, description, avatar, and visibility.') @@ -19,7 +19,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only{ role: 'button' } = _('Permissions, LFS, 2FA') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded ? _('Collapse') : _('Expand') %p = _('Advanced permissions, Large File Storage and Two-Factor authentication settings.') @@ -32,7 +32,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only{ role: 'button' } = s_('GroupSettings|Badges') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded ? _('Collapse') : _('Expand') %p = s_('GroupSettings|Customize your group badges.') @@ -40,6 +40,7 @@ .settings-content = render 'shared/badges/badge_settings' += render_if_exists 'groups/compliance_frameworks', expanded: expanded = render_if_exists 'groups/custom_project_templates_setting' = render_if_exists 'groups/templates_setting', expanded: expanded @@ -47,7 +48,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only{ role: 'button' } = _('Advanced') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded ? _('Collapse') : _('Expand') %p = _('Perform advanced options such as changing path, transferring, exporting, or removing the group.') diff --git a/app/views/groups/group_members/index.html.haml b/app/views/groups/group_members/index.html.haml index 2a87b42ef13..a1527a74898 100644 --- a/app/views/groups/group_members/index.html.haml +++ b/app/views/groups/group_members/index.html.haml @@ -4,6 +4,7 @@ - show_access_requests = can_manage_members && @requesters.exists? - invited_active = params[:search_invited].present? || params[:invited_members_page].present? - vue_members_list_enabled = Feature.enabled?(:vue_group_members_list, @group, default_enabled: true) +- filtered_search_enabled = Feature.enabled?(:group_members_filtered_search, @group, default_enabled: true) - current_user_is_group_owner = @group && @group.has_owner?(current_user) - form_item_label_css_class = 'label-bold gl-mr-2 gl-mb-0 gl-py-2 align-self-md-center' @@ -54,20 +55,21 @@ .tab-content #tab-members.tab-pane{ class: ('active' unless invited_active) } .card.card-without-border - = render 'groups/group_members/tab_pane/header' do - = render 'groups/group_members/tab_pane/title' do - = html_escape(_('Members with access to %{strong_start}%{group_name}%{strong_end}')) % { group_name: @group.name, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } - = form_tag group_group_members_path(@group), method: :get, class: 'user-search-form gl-display-flex gl-md-align-items-center gl-flex-wrap gl-flex-direction-column gl-md-flex-direction-row gl-mx-n3 gl-my-n3', data: { testid: 'user-search-form' } do - .gl-px-3.gl-py-2 - .search-control-wrap.gl-relative - = render 'shared/members/search_field' - - if can_manage_members + - unless filtered_search_enabled + = render 'groups/group_members/tab_pane/header' do + = render 'groups/group_members/tab_pane/title' do + = html_escape(_('Members with access to %{strong_start}%{group_name}%{strong_end}')) % { group_name: @group.name, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } + = form_tag group_group_members_path(@group), method: :get, class: 'user-search-form gl-display-flex gl-md-align-items-center gl-flex-wrap gl-flex-direction-column gl-md-flex-direction-row gl-mx-n3 gl-my-n3', data: { testid: 'user-search-form' } do + .gl-px-3.gl-py-2 + .search-control-wrap.gl-relative + = render 'shared/members/search_field' + - if can_manage_members + = render 'groups/group_members/tab_pane/form_item' do + = label_tag '2fa', _('2FA'), class: form_item_label_css_class + = render 'shared/members/filter_2fa_dropdown' = render 'groups/group_members/tab_pane/form_item' do - = label_tag '2fa', _('2FA'), class: form_item_label_css_class - = render 'shared/members/filter_2fa_dropdown' - = render 'groups/group_members/tab_pane/form_item' do - = label_tag :sort_by, _('Sort by'), class: form_item_label_css_class - = render 'shared/members/sort_dropdown' + = label_tag :sort_by, _('Sort by'), class: form_item_label_css_class + = render 'shared/members/sort_dropdown' - if vue_members_list_enabled .js-group-members-list{ data: group_members_list_data_attributes(@group, @members) } .loading @@ -83,9 +85,10 @@ - if @group.shared_with_group_links.any? #tab-groups.tab-pane .card.card-without-border - = render 'groups/group_members/tab_pane/header' do - = render 'groups/group_members/tab_pane/title' do - = html_escape(_('Groups with access to %{strong_start}%{group_name}%{strong_end}')) % { group_name: @group.name, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } + - unless filtered_search_enabled + = render 'groups/group_members/tab_pane/header' do + = render 'groups/group_members/tab_pane/title' do + = html_escape(_('Groups with access to %{strong_start}%{group_name}%{strong_end}')) % { group_name: @group.name, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } - if vue_members_list_enabled .js-group-linked-list{ data: linked_groups_list_data_attributes(@group) } .loading @@ -97,11 +100,12 @@ - if show_invited_members #tab-invited-members.tab-pane{ class: ('active' if invited_active) } .card.card-without-border - = render 'groups/group_members/tab_pane/header' do - = render 'groups/group_members/tab_pane/title' do - = html_escape(_('Members invited to %{strong_start}%{group_name}%{strong_end}')) % { group_name: @group.name, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } - = form_tag group_group_members_path(@group), method: :get, class: 'user-search-form', data: { testid: 'user-search-form' } do - = render 'shared/members/search_field', name: 'search_invited' + - unless filtered_search_enabled + = render 'groups/group_members/tab_pane/header' do + = render 'groups/group_members/tab_pane/title' do + = html_escape(_('Members invited to %{strong_start}%{group_name}%{strong_end}')) % { group_name: @group.name, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } + = form_tag group_group_members_path(@group), method: :get, class: 'user-search-form', data: { testid: 'user-search-form' } do + = render 'shared/members/search_field', name: 'search_invited' - if vue_members_list_enabled .js-group-invited-members-list{ data: group_members_list_data_attributes(@group, @invited_members) } .loading @@ -117,9 +121,10 @@ - if show_access_requests #tab-access-requests.tab-pane .card.card-without-border - = render 'groups/group_members/tab_pane/header' do - = render 'groups/group_members/tab_pane/title' do - = html_escape(_('Users requesting access to %{strong_start}%{group_name}%{strong_end}')) % { group_name: @group.name, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } + - unless filtered_search_enabled + = render 'groups/group_members/tab_pane/header' do + = render 'groups/group_members/tab_pane/title' do + = html_escape(_('Users requesting access to %{strong_start}%{group_name}%{strong_end}')) % { group_name: @group.name, strong_start: '<strong>'.html_safe, strong_end: '</strong>'.html_safe } - if vue_members_list_enabled .js-group-access-requests-list{ data: group_members_list_data_attributes(@group, @requesters) } .loading diff --git a/app/views/groups/new.html.haml b/app/views/groups/new.html.haml index a231702012c..920a6ccd9ec 100644 --- a/app/views/groups/new.html.haml +++ b/app/views/groups/new.html.haml @@ -31,14 +31,17 @@ %span.d-none.d-sm-block= s_('GroupsNew|Import group') %span.d-block.d-sm-none= s_('GroupsNew|Import') - .tab-content.gitlab-tab-content + .tab-content.gitlab-tab-content.gl-border-none .tab-pane.js-toggle-container{ id: 'create-group-pane', class: active_when(active_tab == 'create'), role: 'tabpanel' } = form_for @group, html: { class: 'group-form gl-show-field-errors' } do |f| = render 'new_group_fields', f: f, group_name_id: 'create-group-name' - .tab-pane.js-toggle-container{ id: 'import-group-pane', class: active_when(active_tab) == 'import', role: 'tabpanel' } + .tab-pane.no-padding.js-toggle-container{ id: 'import-group-pane', class: active_when(active_tab) == 'import', role: 'tabpanel' } - if import_sources_enabled? - = render 'import_group_pane', active_tab: active_tab, autofocus: true + - if Feature.enabled?(:bulk_import) + = render 'import_group_from_another_instance_panel' + .gl-mt-7.gl-border-b-solid.gl-border-gray-100.gl-border-1 + = render 'import_group_from_file_panel' - else .nothing-here-block %h4= s_('GroupsNew|No import options available') diff --git a/app/views/groups/registry/repositories/index.html.haml b/app/views/groups/registry/repositories/index.html.haml index 21882c3e3ce..e26b8317c1c 100644 --- a/app/views/groups/registry/repositories/index.html.haml +++ b/app/views/groups/registry/repositories/index.html.haml @@ -16,4 +16,6 @@ "cleanup_policies_help_page_path" => help_page_path('user/packages/container_registry/index', anchor: 'how-the-cleanup-policy-works'), "is_admin": current_user&.admin.to_s, is_group_page: "true", + "group_path": @group.full_path, + "gid_prefix": container_repository_gid_prefix, character_error: @character_error.to_s } } diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml index 9d5ec5008dc..109e7c3831e 100644 --- a/app/views/groups/show.html.haml +++ b/app/views/groups/show.html.haml @@ -1,5 +1,6 @@ -- breadcrumb_title _("Details") - @content_class = "limit-container-width" unless fluid_layout +- page_itemtype 'https://schema.org/Organization' +- @skip_current_level_breadcrumb = true - if show_thanks_for_purchase_banner? = render_if_exists 'shared/thanks_for_purchase_banner', plan_title: plan_title, quantity: params[:purchased_quantity].to_i |