From adf209e6c4eda18408423e78057e6dd9db63db10 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 15 Aug 2018 19:00:34 +0300 Subject: [PATCH 01/11] Add UI for maven packages feature Signed-off-by: Dmitriy Zaporozhets --- .../layouts/nav/sidebar/_project.html.haml | 13 ++++ config/routes/project.rb | 4 ++ doc/administration/index.md | 1 + doc/administration/maven_packages.md | 36 +++++++++++ doc/user/project/index.md | 1 + .../projects/packages/packages_controller.rb | 32 ++++++++++ ee/app/helpers/ee/projects_helper.rb | 11 ++++ .../packages/packages/index.html.haml | 34 +++++++++++ .../projects/packages/packages/show.html.haml | 60 +++++++++++++++++++ ee/spec/features/projects/packages_spec.rb | 55 +++++++++++++++++ locale/gitlab.pot | 42 +++++++++++++ 11 files changed, 289 insertions(+) create mode 100644 doc/administration/maven_packages.md create mode 100644 ee/app/controllers/projects/packages/packages_controller.rb create mode 100644 ee/app/views/projects/packages/packages/index.html.haml create mode 100644 ee/app/views/projects/packages/packages/show.html.haml create mode 100644 ee/spec/features/projects/packages_spec.rb diff --git a/app/views/layouts/nav/sidebar/_project.html.haml b/app/views/layouts/nav/sidebar/_project.html.haml index 34f47806205c40..918c7ad8c76f0e 100644 --- a/app/views/layouts/nav/sidebar/_project.html.haml +++ b/app/views/layouts/nav/sidebar/_project.html.haml @@ -262,6 +262,19 @@ %strong.fly-out-top-item-name = _('Registry') + - if project_nav_tab? :packages + = nav_link(controller: %w[projects/packages/packages]) do + = link_to project_packages_path(@project) do + .nav-icon-container + = sprite_icon('disk') + %span.nav-item-name + = _('Packages') + %ul.sidebar-sub-level-items.is-fly-out-only + = nav_link(controller: %w[projects/packages/packages], html_options: { class: "fly-out-top-item" } ) do + = link_to project_packages_path(@project) do + %strong.fly-out-top-item-name + = _('Packages') + - if project_nav_tab? :wiki = nav_link(controller: :wikis) do = link_to get_project_wiki_path(@project), class: 'shortcuts-wiki' do diff --git a/config/routes/project.rb b/config/routes/project.rb index 52f899d10d52ca..e6274a1e42c895 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -310,6 +310,10 @@ scope '-' do get 'archive/*id', constraints: { format: Gitlab::PathRegex.archive_formats_regex, id: /.+?/ }, to: 'repositories#archive', as: 'archive' + ## EE-specific + resources :packages, only: [:index, :show, :destroy], module: 'packages' + ## EE-specific + resources :jobs, only: [:index, :show], constraints: { id: /\d+/ } do collection do post :cancel_all diff --git a/doc/administration/index.md b/doc/administration/index.md index 951b5f9ac6b59d..cfe01dbcd360a6 100644 --- a/doc/administration/index.md +++ b/doc/administration/index.md @@ -125,6 +125,7 @@ created in snippets, wikis, and repos. - [Default labels](../user/admin_area/labels.html): Create labels that will be automatically added to every new project. - [Restrict the use of public or internal projects](../public_access/public_access.md#restricting-the-use-of-public-or-internal-projects): Restrict the use of visibility levels for users when they create a project or a snippet. - [Custom project templates](../user/admin_area/custom_project_templates.md): Configure a set of projects to be used as custom templates when creating a new project. **[PREMIUM ONLY]** +- [Maven packages repository](maven_packages.md): Enable Maven packages repository within GitLab. ### Repository settings diff --git a/doc/administration/maven_packages.md b/doc/administration/maven_packages.md new file mode 100644 index 00000000000000..fd5fa9b9728308 --- /dev/null +++ b/doc/administration/maven_packages.md @@ -0,0 +1,36 @@ +# GitLab private Maven repository administration + +> **Notes:** +- [Introduced][ee-5811] in GitLab 11.3. +- This document is about the admin guide. To learn how to use GitLab Maven + repository from [user documentation](../user/project/maven_packages.md). + +When enabled, every project in GitLab will have its own space to store Maven packages. + +## Enable the Maven repository + +**Omnibus GitLab installations** + +# TODO + +**Installations from source** + +If you have installed GitLab from source: + +1. After the installation is complete, you will have to configure the `packages` + section in `gitlab.yml` in order to enable it. + +The contents of `gitlab.yml` are: + +``` +packages: + enabled: true +``` + +where: + +| Parameter | Description | +| --------- | ----------- | +| `enabled` | `true` or `false`. Enables the packages repository in GitLab. By default this is `false`. | + +[ee-5811]: https://gitlab.com/gitlab-org/gitlab-ee/issues/5811 diff --git a/doc/user/project/index.md b/doc/user/project/index.md index 5c2bcd30dcbef4..1aeec6ec9d3e5c 100644 --- a/doc/user/project/index.md +++ b/doc/user/project/index.md @@ -86,6 +86,7 @@ website with GitLab Pages - [Syntax highlighting](highlighting.md): An alternative to customize your code blocks, overriding GitLab's default choice of language - [Badges](badges.md): Badges for the project overview +- [Maven packages](maven_packages.md): Your private Maven repository in GitLab ### Project's integrations diff --git a/ee/app/controllers/projects/packages/packages_controller.rb b/ee/app/controllers/projects/packages/packages_controller.rb new file mode 100644 index 00000000000000..409df281e5bbe2 --- /dev/null +++ b/ee/app/controllers/projects/packages/packages_controller.rb @@ -0,0 +1,32 @@ +module Projects + module Packages + class PackagesController < ApplicationController + before_action :verify_packages_enabled! + before_action :authorize_read_package! + before_action :authorize_admin_package!, only: [:destroy] + + def index + @packages = project.packages.all.page(params[:page]) + end + + def show + @package = project.packages.find(params[:id]) + @package_files = @package.package_files.recent + @maven_metadatum = @package.maven_metadatum + end + + def destroy + @package = project.packages.find(params[:id]) + @package.destroy + + redirect_to project_packages_path(@project), status: 302, notice: _('Package was removed') + end + + private + + def verify_packages_enabled! + render_404 unless Gitlab.config.packages.enabled + end + end + end +end diff --git a/ee/app/helpers/ee/projects_helper.rb b/ee/app/helpers/ee/projects_helper.rb index f50e69eae9cbd4..66544a5acad919 100644 --- a/ee/app/helpers/ee/projects_helper.rb +++ b/ee/app/helpers/ee/projects_helper.rb @@ -17,6 +17,17 @@ def sidebar_repository_paths super + %w(path_locks) end + override :get_project_nav_tabs + def get_project_nav_tabs(project, current_user) + nav_tabs = super + + if ::Gitlab.config.packages.enabled && can?(current_user, :read_package, project) + nav_tabs << :packages + end + + nav_tabs + end + override :default_url_to_repo def default_url_to_repo(project = @project) case default_clone_protocol diff --git a/ee/app/views/projects/packages/packages/index.html.haml b/ee/app/views/projects/packages/packages/index.html.haml new file mode 100644 index 00000000000000..69249d6fc4a279 --- /dev/null +++ b/ee/app/views/projects/packages/packages/index.html.haml @@ -0,0 +1,34 @@ +- page_title "Packages" +- can_admin_package = can?(current_user, :admin_package, @project) + +- if @packages.any? + %table.table + %thead + %tr + %th= _('Name') + %th= _('Version') + %th= _('Type') + %th= _('Created') + %th + + %tbody + - @packages.each do |package| + %tr + %td + = link_to package.name, project_package_path(@project, package) + %td + = package.version + %td + = _('Maven package') + %td + = time_ago_with_tooltip(package.created_at) + %td + - if can_admin_package + = link_to project_package_path(@project, package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do + = icon('trash') + + = paginate @packages, theme: "gitlab" + +- else + .nothing-here-block + = _('No packages stored for this project.') diff --git a/ee/app/views/projects/packages/packages/show.html.haml b/ee/app/views/projects/packages/packages/show.html.haml new file mode 100644 index 00000000000000..e683e37dc7c101 --- /dev/null +++ b/ee/app/views/projects/packages/packages/show.html.haml @@ -0,0 +1,60 @@ +- add_to_breadcrumbs _("Packages"), project_packages_path(@project) +- add_to_breadcrumbs @package.name, project_packages_path(@project) +- breadcrumb_title @package.version +- page_title "Packages" + +.detail-page-header + .detail-page-header-body + %strong + = @package.version + .detail-page-header-actions + - if can?(current_user, :admin_package, @project) + = link_to project_package_path(@project, @package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do + = _('Delete') +.row.prepend-top-default + .col-md-6 + .card + .card-header + = _('Package info:') + %ul.content-list + %li + %span.light + = _('Name:') + %strong + = @package.name + %li + %span.light + = _('Version:') + %strong + = @package.version + %li + %span.light + = _('Created on:') + %strong + = @package.created_at.to_s(:medium) + - if @maven_metadatum + .card + .card-header + = _('Maven Package info:') + %ul.content-list + %li + %span.light + = _('Group ID:') + %strong + = @maven_metadatum.app_group + %li + %span.light + = _('Artifact ID:') + %strong + = @maven_metadatum.app_name + .col-md-6 + .card + .card-header + = _('Package files:') + %ul.content-list + - @package_files.each do |package_file| + %li + = package_file.file.identifier + .text-muted + = _('Added') + = time_ago_with_tooltip(package_file.created_at) diff --git a/ee/spec/features/projects/packages_spec.rb b/ee/spec/features/projects/packages_spec.rb new file mode 100644 index 00000000000000..c0481fe4b30ea6 --- /dev/null +++ b/ee/spec/features/projects/packages_spec.rb @@ -0,0 +1,55 @@ +require 'spec_helper' + +describe 'Packages' do + let(:user) { create(:user) } + let(:project) { create(:project) } + let(:package) { create(:maven_package, project: project) } + + before do + sign_in(user) + project.add_developer(user) + end + + context 'when there are no packages' do + it 'shows no packages message' do + visit_project_packages + + expect(page).to have_content 'No packages stored for this project.' + end + end + + context 'when there are packages' do + before do + package + + visit_project_packages + end + + it 'shows list of packages' do + expect(page).to have_content(package.name) + expect(page).to have_content(package.version) + end + + it 'shows a single package' do + click_on package.name + + expect(page).to have_content(package.name) + expect(page).to have_content(package.version) + + package.package_files.each do |package_file| + expect(page).to have_content(package_file.file_name) + end + end + + it 'removes package' do + click_link 'Delete Package' + + expect(page).to have_content 'Package was removed' + expect(page).not_to have_content(package.name) + end + end + + def visit_project_packages + visit project_packages_path(project) + end +end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 84f93b0ef32823..463355b22e81a0 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -423,6 +423,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Added" +msgstr "" + msgid "Additional text" msgstr "" @@ -735,6 +738,9 @@ msgstr "" msgid "Are you sure?" msgstr "" +msgid "Artifact ID:" +msgstr "" + msgid "Artifacts" msgstr "" @@ -2433,6 +2439,9 @@ msgstr "" msgid "Delete" msgstr "" +msgid "Delete Package" +msgstr "" + msgid "Delete Snippet" msgstr "" @@ -3622,6 +3631,9 @@ msgstr "" msgid "Group ID" msgstr "" +msgid "Group ID:" +msgstr "" + msgid "Group Runners" msgstr "" @@ -4410,6 +4422,12 @@ msgstr "" msgid "Markdown enabled" msgstr "" +msgid "Maven Package info:" +msgstr "" + +msgid "Maven package" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4856,6 +4874,9 @@ msgstr "" msgid "No other labels with such name or description" msgstr "" +msgid "No packages stored for this project." +msgstr "" + msgid "No prioritised labels with such name or description" msgstr "" @@ -5104,6 +5125,18 @@ msgstr "" msgid "Owner" msgstr "" +msgid "Package files:" +msgstr "" + +msgid "Package info:" +msgstr "" + +msgid "Package was removed" +msgstr "" + +msgid "Packages" +msgstr "" + msgid "Pages" msgstr "" @@ -7434,6 +7467,9 @@ msgstr "" msgid "Twitter" msgstr "" +msgid "Type" +msgstr "" + msgid "Unable to load the diff. %{button_try_again}" msgstr "" @@ -7596,6 +7632,12 @@ msgstr "" msgid "Verified" msgstr "" +msgid "Version" +msgstr "" + +msgid "Version:" +msgstr "" + msgid "View epics list" msgstr "" -- GitLab From 267839c86f73ed8b903a2ed7f99df0b455ac7833 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 16 Aug 2018 15:12:55 +0300 Subject: [PATCH 02/11] Add separate permission to delete packages Signed-off-by: Dmitriy Zaporozhets --- ee/app/controllers/projects/packages/packages_controller.rb | 2 +- ee/app/models/packages/package_file.rb | 2 ++ ee/app/policies/ee/project_policy.rb | 1 + ee/app/views/projects/packages/packages/index.html.haml | 4 ++-- ee/app/views/projects/packages/packages/show.html.haml | 2 +- ee/spec/features/projects/packages_spec.rb | 2 +- 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ee/app/controllers/projects/packages/packages_controller.rb b/ee/app/controllers/projects/packages/packages_controller.rb index 409df281e5bbe2..d2d09cc8eb9d21 100644 --- a/ee/app/controllers/projects/packages/packages_controller.rb +++ b/ee/app/controllers/projects/packages/packages_controller.rb @@ -3,7 +3,7 @@ module Packages class PackagesController < ApplicationController before_action :verify_packages_enabled! before_action :authorize_read_package! - before_action :authorize_admin_package!, only: [:destroy] + before_action :authorize_destroy_package!, only: [:destroy] def index @packages = project.packages.all.page(params[:page]) diff --git a/ee/app/models/packages/package_file.rb b/ee/app/models/packages/package_file.rb index fb2697e7e8246b..9acf945ee0790f 100644 --- a/ee/app/models/packages/package_file.rb +++ b/ee/app/models/packages/package_file.rb @@ -6,6 +6,8 @@ class Packages::PackageFile < ActiveRecord::Base validates :file, presence: true validates :file_name, presence: true + scope :recent, -> { order(id: :desc) } + mount_uploader :file, Packages::PackageFileUploader after_save :update_file_store, if: :file_changed? diff --git a/ee/app/policies/ee/project_policy.rb b/ee/app/policies/ee/project_policy.rb index 8d20b973e1095b..b97e02aef20d69 100644 --- a/ee/app/policies/ee/project_policy.rb +++ b/ee/app/policies/ee/project_policy.rb @@ -114,6 +114,7 @@ module ProjectPolicy enable :push_code_to_protected_branches enable :admin_path_locks enable :update_approvers + enable :destroy_package end rule { license_management_enabled & can?(:maintainer_access) }.enable :admin_software_license_policy diff --git a/ee/app/views/projects/packages/packages/index.html.haml b/ee/app/views/projects/packages/packages/index.html.haml index 69249d6fc4a279..6bebb5b26b54cb 100644 --- a/ee/app/views/projects/packages/packages/index.html.haml +++ b/ee/app/views/projects/packages/packages/index.html.haml @@ -1,5 +1,5 @@ - page_title "Packages" -- can_admin_package = can?(current_user, :admin_package, @project) +- can_destroy_package = can?(current_user, :destroy_package, @project) - if @packages.any? %table.table @@ -23,7 +23,7 @@ %td = time_ago_with_tooltip(package.created_at) %td - - if can_admin_package + - if can_destroy_package = link_to project_package_path(@project, package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do = icon('trash') diff --git a/ee/app/views/projects/packages/packages/show.html.haml b/ee/app/views/projects/packages/packages/show.html.haml index e683e37dc7c101..584ef4172a3fd7 100644 --- a/ee/app/views/projects/packages/packages/show.html.haml +++ b/ee/app/views/projects/packages/packages/show.html.haml @@ -8,7 +8,7 @@ %strong = @package.version .detail-page-header-actions - - if can?(current_user, :admin_package, @project) + - if can?(current_user, :destroy_package, @project) = link_to project_package_path(@project, @package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do = _('Delete') .row.prepend-top-default diff --git a/ee/spec/features/projects/packages_spec.rb b/ee/spec/features/projects/packages_spec.rb index c0481fe4b30ea6..553807af5f52fa 100644 --- a/ee/spec/features/projects/packages_spec.rb +++ b/ee/spec/features/projects/packages_spec.rb @@ -7,7 +7,7 @@ before do sign_in(user) - project.add_developer(user) + project.add_master(user) end context 'when there are no packages' do -- GitLab From 2d524db70fb92e80361edc404a88a5278dae5a16 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 16 Aug 2018 18:40:07 +0300 Subject: [PATCH 03/11] Improve packages#show UI Signed-off-by: Dmitriy Zaporozhets --- .../projects/packages/packages/show.html.haml | 55 +++++++++++-------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/ee/app/views/projects/packages/packages/show.html.haml b/ee/app/views/projects/packages/packages/show.html.haml index 584ef4172a3fd7..ef82d97ce51d12 100644 --- a/ee/app/views/projects/packages/packages/show.html.haml +++ b/ee/app/views/projects/packages/packages/show.html.haml @@ -15,46 +15,57 @@ .col-md-6 .card .card-header - = _('Package info:') + %strong= _('Package information') %ul.content-list %li %span.light - = _('Name:') - %strong + = _('Name') + %span.pull-right = @package.name %li %span.light - = _('Version:') - %strong + = _('Version') + %span.pull-right = @package.version %li %span.light - = _('Created on:') - %strong + = _('Created on') + %span.pull-right = @package.created_at.to_s(:medium) + .col-md-6 - if @maven_metadatum .card .card-header - = _('Maven Package info:') + %strong= _('Maven Metadata') %ul.content-list %li %span.light - = _('Group ID:') - %strong + = _('Group ID') + %span.pull-right = @maven_metadatum.app_group %li %span.light - = _('Artifact ID:') - %strong + = _('Artifact ID') + %span.pull-right = @maven_metadatum.app_name - .col-md-6 - .card - .card-header - = _('Package files:') - %ul.content-list - - @package_files.each do |package_file| %li - = package_file.file.identifier - .text-muted - = _('Added') - = time_ago_with_tooltip(package_file.created_at) + %span.light + = _('Version') + %span.pull-right + = @maven_metadatum.app_version +%table.table + %thead + %tr + %th Name + %th Size + %th Created + %tbody + - @package_files.each do |package_file| + %tr + %td + = icon('file-o fw') + = package_file.file.identifier + %td + = number_to_human_size(package_file.size, precision: 2) + %td + = time_ago_with_tooltip(package_file.created_at) -- GitLab From adf22284c11b7b0e8a9a5a5d3810ba8c0739b413 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 17 Aug 2018 21:57:51 +0300 Subject: [PATCH 04/11] Regenerate locales for packages UI Signed-off-by: Dmitriy Zaporozhets --- locale/gitlab.pot | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 463355b22e81a0..a1cc9c60d3b933 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -423,9 +423,6 @@ msgstr "" msgid "Add users to group" msgstr "" -msgid "Added" -msgstr "" - msgid "Additional text" msgstr "" @@ -738,7 +735,7 @@ msgstr "" msgid "Are you sure?" msgstr "" -msgid "Artifact ID:" +msgid "Artifact ID" msgstr "" msgid "Artifacts" @@ -2325,6 +2322,9 @@ msgstr "" msgid "Created by me" msgstr "" +msgid "Created on" +msgstr "" + msgid "Created on:" msgstr "" @@ -3631,9 +3631,6 @@ msgstr "" msgid "Group ID" msgstr "" -msgid "Group ID:" -msgstr "" - msgid "Group Runners" msgstr "" @@ -4422,7 +4419,7 @@ msgstr "" msgid "Markdown enabled" msgstr "" -msgid "Maven Package info:" +msgid "Maven Metadata" msgstr "" msgid "Maven package" @@ -5125,10 +5122,7 @@ msgstr "" msgid "Owner" msgstr "" -msgid "Package files:" -msgstr "" - -msgid "Package info:" +msgid "Package information" msgstr "" msgid "Package was removed" @@ -7635,9 +7629,6 @@ msgstr "" msgid "Version" msgstr "" -msgid "Version:" -msgstr "" - msgid "View epics list" msgstr "" -- GitLab From fc6a304f1378d8bcafe585e501325e59be3e1894 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 20 Aug 2018 11:02:47 +0200 Subject: [PATCH 05/11] Update package index/show pages to match UX recommendations Signed-off-by: Dmitriy Zaporozhets --- ee/app/assets/stylesheets/pages/packages.scss | 13 +++++ .../packages/packages/index.html.haml | 50 ++++++++++--------- .../projects/packages/packages/show.html.haml | 25 ++++++---- locale/gitlab.pot | 3 ++ 4 files changed, 57 insertions(+), 34 deletions(-) create mode 100644 ee/app/assets/stylesheets/pages/packages.scss diff --git a/ee/app/assets/stylesheets/pages/packages.scss b/ee/app/assets/stylesheets/pages/packages.scss new file mode 100644 index 00000000000000..ebbfff53ff2756 --- /dev/null +++ b/ee/app/assets/stylesheets/pages/packages.scss @@ -0,0 +1,13 @@ +.table-holder .packages-table { + tr { + th { + border-top: none; + background: none; + padding: $gl-padding-top 0; + } + + td { + padding: $gl-padding-top 0; + } + } +} diff --git a/ee/app/views/projects/packages/packages/index.html.haml b/ee/app/views/projects/packages/packages/index.html.haml index 6bebb5b26b54cb..9c0948a4fd567a 100644 --- a/ee/app/views/projects/packages/packages/index.html.haml +++ b/ee/app/views/projects/packages/packages/index.html.haml @@ -2,32 +2,34 @@ - can_destroy_package = can?(current_user, :destroy_package, @project) - if @packages.any? - %table.table - %thead - %tr - %th= _('Name') - %th= _('Version') - %th= _('Type') - %th= _('Created') - %th - - %tbody - - @packages.each do |package| + .table-holder + %table.table.packages-table + %thead %tr - %td - = link_to package.name, project_package_path(@project, package) - %td - = package.version - %td - = _('Maven package') - %td - = time_ago_with_tooltip(package.created_at) - %td - - if can_destroy_package - = link_to project_package_path(@project, package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do - = icon('trash') + %th= _('Name') + %th= _('Version') + %th= _('Type') + %th= _('Created') + %th + + %tbody + - @packages.each do |package| + %tr + %td + = link_to package.name, project_package_path(@project, package) + %td + = package.version + %td + = _('Maven package') + %td + = time_ago_with_tooltip(package.created_at) + %td + - if can_destroy_package + .pull-right + = link_to project_package_path(@project, package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do + = icon('trash') - = paginate @packages, theme: "gitlab" + = paginate @packages, theme: "gitlab" - else .nothing-here-block diff --git a/ee/app/views/projects/packages/packages/show.html.haml b/ee/app/views/projects/packages/packages/show.html.haml index ef82d97ce51d12..ce8ea8ae771537 100644 --- a/ee/app/views/projects/packages/packages/show.html.haml +++ b/ee/app/views/projects/packages/packages/show.html.haml @@ -18,17 +18,17 @@ %strong= _('Package information') %ul.content-list %li - %span.light + %span.text-secondary = _('Name') %span.pull-right = @package.name %li - %span.light + %span.text-secondary = _('Version') %span.pull-right = @package.version %li - %span.light + %span.text-secondary = _('Created on') %span.pull-right = @package.created_at.to_s(:medium) @@ -39,26 +39,30 @@ %strong= _('Maven Metadata') %ul.content-list %li - %span.light + %span.text-secondary = _('Group ID') %span.pull-right = @maven_metadatum.app_group %li - %span.light + %span.text-secondary = _('Artifact ID') %span.pull-right = @maven_metadatum.app_name %li - %span.light + %span.text-secondary = _('Version') %span.pull-right = @maven_metadatum.app_version %table.table %thead %tr - %th Name - %th Size - %th Created + %th + = _('Name') + %th + = _('Size') + %th + .pull-right + = _('Created') %tbody - @package_files.each do |package_file| %tr @@ -68,4 +72,5 @@ %td = number_to_human_size(package_file.size, precision: 2) %td - = time_ago_with_tooltip(package_file.created_at) + .pull-right + = time_ago_with_tooltip(package_file.created_at) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index a1cc9c60d3b933..24b252d9daa846 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -6465,6 +6465,9 @@ msgstr "" msgid "Sign-up restrictions" msgstr "" +msgid "Size" +msgstr "" + msgid "Size and domain settings for static websites" msgstr "" -- GitLab From 11c8e5d241bdb59ac2f11d8fd7184f01621884ba Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 20 Aug 2018 17:09:02 +0200 Subject: [PATCH 06/11] Fix packages table css based on linter recommendation Signed-off-by: Dmitriy Zaporozhets --- ee/app/assets/stylesheets/pages/packages.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/app/assets/stylesheets/pages/packages.scss b/ee/app/assets/stylesheets/pages/packages.scss index ebbfff53ff2756..0e40c13f5e4a52 100644 --- a/ee/app/assets/stylesheets/pages/packages.scss +++ b/ee/app/assets/stylesheets/pages/packages.scss @@ -1,7 +1,7 @@ .table-holder .packages-table { tr { th { - border-top: none; + border-top: 0; background: none; padding: $gl-padding-top 0; } -- GitLab From 3dadfcbae81fb609f5a36c8f473a9907b15f1819 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Tue, 21 Aug 2018 12:04:40 +0100 Subject: [PATCH 07/11] Uses responsive table for index page Updates detail page header to overflow properly on mobile --- ee/app/assets/stylesheets/pages/packages.scss | 13 ---- .../packages/packages/index.html.haml | 64 +++++++++++-------- .../projects/packages/packages/show.html.haml | 21 +++--- 3 files changed, 46 insertions(+), 52 deletions(-) delete mode 100644 ee/app/assets/stylesheets/pages/packages.scss diff --git a/ee/app/assets/stylesheets/pages/packages.scss b/ee/app/assets/stylesheets/pages/packages.scss deleted file mode 100644 index 0e40c13f5e4a52..00000000000000 --- a/ee/app/assets/stylesheets/pages/packages.scss +++ /dev/null @@ -1,13 +0,0 @@ -.table-holder .packages-table { - tr { - th { - border-top: 0; - background: none; - padding: $gl-padding-top 0; - } - - td { - padding: $gl-padding-top 0; - } - } -} diff --git a/ee/app/views/projects/packages/packages/index.html.haml b/ee/app/views/projects/packages/packages/index.html.haml index 9c0948a4fd567a..421a11010bd16f 100644 --- a/ee/app/views/projects/packages/packages/index.html.haml +++ b/ee/app/views/projects/packages/packages/index.html.haml @@ -1,36 +1,44 @@ -- page_title "Packages" +- page_title _("Packages") - can_destroy_package = can?(current_user, :destroy_package, @project) - if @packages.any? .table-holder - %table.table.packages-table - %thead - %tr - %th= _('Name') - %th= _('Version') - %th= _('Type') - %th= _('Created') - %th - - %tbody - - @packages.each do |package| - %tr - %td - = link_to package.name, project_package_path(@project, package) - %td - = package.version - %td - = _('Maven package') - %td - = time_ago_with_tooltip(package.created_at) - %td - - if can_destroy_package - .pull-right - = link_to project_package_path(@project, package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do - = icon('trash') - + .gl-responsive-table-row.table-row-header{ 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 + .table-section.section-30 + .table-mobile-header{ role: "rowheader" }= _("Name") + .table-mobile-content + = link_to package.name, project_package_path(@project, package) + .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 + = _('Maven package') + .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 + .pull-right + = link_to project_package_path(@project, package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do + = icon('trash') = paginate @packages, theme: "gitlab" - - else .nothing-here-block = _('No packages stored for this project.') diff --git a/ee/app/views/projects/packages/packages/show.html.haml b/ee/app/views/projects/packages/packages/show.html.haml index ce8ea8ae771537..05a1bf6b55029b 100644 --- a/ee/app/views/projects/packages/packages/show.html.haml +++ b/ee/app/views/projects/packages/packages/show.html.haml @@ -1,18 +1,17 @@ - add_to_breadcrumbs _("Packages"), project_packages_path(@project) - add_to_breadcrumbs @package.name, project_packages_path(@project) - breadcrumb_title @package.version -- page_title "Packages" +- page_title _("Packages") -.detail-page-header - .detail-page-header-body - %strong - = @package.version - .detail-page-header-actions - - if can?(current_user, :destroy_package, @project) - = link_to project_package_path(@project, @package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do - = _('Delete') +.detail-page-header.d-flex.justify-content-between + %strong + = @package.version + + - if can?(current_user, :destroy_package, @project) + = link_to project_package_path(@project, @package), method: :delete, data: { confirm: _("Are you sure?") }, class: "btn btn-grouped btn-inverted btn-remove", title: _('Delete Package') do + = _('Delete') .row.prepend-top-default - .col-md-6 + .col-sm-6 .card .card-header %strong= _('Package information') @@ -32,7 +31,7 @@ = _('Created on') %span.pull-right = @package.created_at.to_s(:medium) - .col-md-6 + .col-sm-6 - if @maven_metadatum .card .card-header -- GitLab From 8e4bca4530896c9bb3849e83c6209122f045db43 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 21 Aug 2018 13:47:25 +0200 Subject: [PATCH 08/11] Fix styling issues in ee/app/views/projects/packages/packages/index.html.haml Signed-off-by: Dmitriy Zaporozhets --- .../packages/packages/index.html.haml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ee/app/views/projects/packages/packages/index.html.haml b/ee/app/views/projects/packages/packages/index.html.haml index 421a11010bd16f..c4948828e5e567 100644 --- a/ee/app/views/projects/packages/packages/index.html.haml +++ b/ee/app/views/projects/packages/packages/index.html.haml @@ -3,16 +3,16 @@ - if @packages.any? .table-holder - .gl-responsive-table-row.table-row-header{ 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'} + .gl-responsive-table-row.table-row-header{ 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 .table-section.section-30 -- GitLab From 1fb2de060a3416af91b767b4d7ed020328b48852 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 21 Aug 2018 16:10:51 +0200 Subject: [PATCH 09/11] Minor improvements to packages UI code Signed-off-by: Dmitriy Zaporozhets --- config/routes/project.rb | 2 +- doc/administration/maven_packages.md | 4 ++-- ee/spec/features/projects/packages_spec.rb | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config/routes/project.rb b/config/routes/project.rb index e6274a1e42c895..1b95c3ef4f30d4 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -311,7 +311,7 @@ get 'archive/*id', constraints: { format: Gitlab::PathRegex.archive_formats_regex, id: /.+?/ }, to: 'repositories#archive', as: 'archive' ## EE-specific - resources :packages, only: [:index, :show, :destroy], module: 'packages' + resources :packages, only: [:index, :show, :destroy], module: :packages ## EE-specific resources :jobs, only: [:index, :show], constraints: { id: /\d+/ } do diff --git a/doc/administration/maven_packages.md b/doc/administration/maven_packages.md index fd5fa9b9728308..2d2bb811f22ef7 100644 --- a/doc/administration/maven_packages.md +++ b/doc/administration/maven_packages.md @@ -2,7 +2,7 @@ > **Notes:** - [Introduced][ee-5811] in GitLab 11.3. -- This document is about the admin guide. To learn how to use GitLab Maven +- This document is about the admin guide. Learn how to use GitLab Maven repository from [user documentation](../user/project/maven_packages.md). When enabled, every project in GitLab will have its own space to store Maven packages. @@ -11,7 +11,7 @@ When enabled, every project in GitLab will have its own space to store Maven pac **Omnibus GitLab installations** -# TODO +# TODO: Update this section once https://gitlab.com/gitlab-org/gitlab-ee/issues/7253 is resolved **Installations from source** diff --git a/ee/spec/features/projects/packages_spec.rb b/ee/spec/features/projects/packages_spec.rb index 553807af5f52fa..bd673be8593ced 100644 --- a/ee/spec/features/projects/packages_spec.rb +++ b/ee/spec/features/projects/packages_spec.rb @@ -3,7 +3,6 @@ describe 'Packages' do let(:user) { create(:user) } let(:project) { create(:project) } - let(:package) { create(:maven_package, project: project) } before do sign_in(user) @@ -19,6 +18,8 @@ end context 'when there are packages' do + let!(:package) { create(:maven_package, project: project) } + before do package -- GitLab From a55880a0a9c9544499d7b5147ebe0d4c683812a3 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 21 Aug 2018 16:22:47 +0200 Subject: [PATCH 10/11] Add changelog for packages feature Signed-off-by: Dmitriy Zaporozhets --- ee/changelogs/unreleased/dz-add-ui-to-packages.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 ee/changelogs/unreleased/dz-add-ui-to-packages.yml diff --git a/ee/changelogs/unreleased/dz-add-ui-to-packages.yml b/ee/changelogs/unreleased/dz-add-ui-to-packages.yml new file mode 100644 index 00000000000000..7c9c478e2a0a2c --- /dev/null +++ b/ee/changelogs/unreleased/dz-add-ui-to-packages.yml @@ -0,0 +1,5 @@ +--- +title: Add UI for GitLab private Maven repository feature +merge_request: 6781 +author: +type: added -- GitLab From e3c31a14b5610ddd43ac2fcf4aded017cfe8d2f3 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Tue, 21 Aug 2018 17:13:31 +0100 Subject: [PATCH 11/11] Prevents package name of overflowing --- ee/app/views/projects/packages/packages/index.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ee/app/views/projects/packages/packages/index.html.haml b/ee/app/views/projects/packages/packages/index.html.haml index c4948828e5e567..97853db6a36b5e 100644 --- a/ee/app/views/projects/packages/packages/index.html.haml +++ b/ee/app/views/projects/packages/packages/index.html.haml @@ -17,8 +17,8 @@ .gl-responsive-table-row .table-section.section-30 .table-mobile-header{ role: "rowheader" }= _("Name") - .table-mobile-content - = link_to package.name, project_package_path(@project, package) + .table-mobile-content.flex-truncate-parent + = link_to package.name, project_package_path(@project, package), class: 'flex-truncate-child' .table-section.section-20 .table-mobile-header{ role: "rowheader" }= _("Version") .table-mobile-content -- GitLab