From d23b2a0871f3ca507aafa949e0314625f1f0c6a7 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 8 Nov 2019 09:06:07 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- app/helpers/blob_helper.rb | 6 +- app/helpers/snippets_helper.rb | 81 ++++++++++++++++------- app/models/group.rb | 4 +- app/services/groups/transfer_service.rb | 2 +- app/services/groups/update_service.rb | 5 +- app/views/search/results/_snippet_blob.html.haml | 2 +- app/views/search/results/_snippet_title.html.haml | 5 +- app/views/shared/snippets/_blob.html.haml | 3 +- app/views/shared/snippets/_embed.html.haml | 2 +- app/views/shared/snippets/_header.html.haml | 2 +- 10 files changed, 69 insertions(+), 43 deletions(-) (limited to 'app') diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb index d57bce0f401..912f0b61978 100644 --- a/app/helpers/blob_helper.rb +++ b/app/helpers/blob_helper.rb @@ -141,11 +141,7 @@ module BlobHelper if @build && @entry raw_project_job_artifacts_url(@project, @build, path: @entry.path, **kwargs) elsif @snippet - if @snippet.project_id - raw_project_snippet_url(@project, @snippet, **kwargs) - else - raw_snippet_url(@snippet, **kwargs) - end + reliable_raw_snippet_url(@snippet) elsif @blob project_raw_url(@project, @id, **kwargs) end diff --git a/app/helpers/snippets_helper.rb b/app/helpers/snippets_helper.rb index 6ccc1fb2ed1..10e31fb8888 100644 --- a/app/helpers/snippets_helper.rb +++ b/app/helpers/snippets_helper.rb @@ -11,22 +11,40 @@ module SnippetsHelper end end - def reliable_snippet_path(snippet, opts = nil) + def reliable_snippet_path(snippet, opts = {}) + reliable_snippet_url(snippet, opts.merge(only_path: true)) + end + + def reliable_raw_snippet_path(snippet, opts = {}) + reliable_raw_snippet_url(snippet, opts.merge(only_path: true)) + end + + def reliable_snippet_url(snippet, opts = {}) if snippet.project_id? - project_snippet_path(snippet.project, snippet, opts) + project_snippet_url(snippet.project, snippet, nil, opts) else - snippet_path(snippet, opts) + snippet_url(snippet, nil, opts) end end - def download_snippet_path(snippet) - if snippet.project_id - raw_project_snippet_path(@project, snippet, inline: false) + def reliable_raw_snippet_url(snippet, opts = {}) + if snippet.project_id? + raw_project_snippet_url(snippet.project, snippet, nil, opts) else - raw_snippet_path(snippet, inline: false) + raw_snippet_url(snippet, nil, opts) end end + def download_raw_snippet_button(snippet) + link_to(icon('download'), + reliable_raw_snippet_path(snippet, inline: false), + target: '_blank', + rel: 'noopener noreferrer', + class: "btn btn-sm has-tooltip", + title: 'Download', + data: { container: 'body' }) + end + # Return the path of a snippets index for a user or for a project # # @returns String, path to snippet index @@ -114,30 +132,45 @@ module SnippetsHelper { snippet_object: snippet, snippet_chunks: snippet_chunks } end - def snippet_embed - "" + def snippet_embed_tag(snippet) + content_tag(:script, nil, src: reliable_snippet_url(snippet, format: :js, only_path: false)) + end + + def snippet_badge(snippet) + return unless attrs = snippet_badge_attributes(snippet) + + css_class, text = attrs + tag.span(class: ['badge', 'badge-gray']) do + concat(tag.i(class: ['fa', css_class])) + concat(' ') + concat(text) + end + end + + def snippet_badge_attributes(snippet) + if snippet.private? + ['fa-lock', _('private')] + end end - def embedded_snippet_raw_button + def embedded_raw_snippet_button blob = @snippet.blob return if blob.empty? || blob.binary? || blob.stored_externally? - snippet_raw_url = if @snippet.is_a?(PersonalSnippet) - raw_snippet_url(@snippet) - else - raw_project_snippet_url(@snippet.project, @snippet) - end - - link_to external_snippet_icon('doc-code'), snippet_raw_url, class: 'btn', target: '_blank', rel: 'noopener noreferrer', title: 'Open raw' + link_to(external_snippet_icon('doc-code'), + reliable_raw_snippet_url(@snippet), + class: 'btn', + target: '_blank', + rel: 'noopener noreferrer', + title: 'Open raw') end def embedded_snippet_download_button - download_url = if @snippet.is_a?(PersonalSnippet) - raw_snippet_url(@snippet, inline: false) - else - raw_project_snippet_url(@snippet.project, @snippet, inline: false) - end - - link_to external_snippet_icon('download'), download_url, class: 'btn', target: '_blank', title: 'Download', rel: 'noopener noreferrer' + link_to(external_snippet_icon('download'), + reliable_raw_snippet_url(@snippet, inline: false), + class: 'btn', + target: '_blank', + title: 'Download', + rel: 'noopener noreferrer') end end diff --git a/app/models/group.rb b/app/models/group.rb index 27e4d709823..7760a3c69ce 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -263,8 +263,8 @@ class Group < Namespace members_with_parents.maintainers.exists?(user_id: user) end - def has_container_repositories? - container_repositories.exists? + def has_container_repository_including_subgroups? + ::ContainerRepository.for_group_and_its_subgroups(self).exists? end # @deprecated diff --git a/app/services/groups/transfer_service.rb b/app/services/groups/transfer_service.rb index 14f5a605633..24813f6ddf9 100644 --- a/app/services/groups/transfer_service.rb +++ b/app/services/groups/transfer_service.rb @@ -75,7 +75,7 @@ module Groups # rubocop: enable CodeReuse/ActiveRecord def group_projects_contain_registry_images? - @group.has_container_repositories? + @group.has_container_repository_including_subgroups? end def update_group_attributes diff --git a/app/services/groups/update_service.rb b/app/services/groups/update_service.rb index be7502a193e..8635b82461b 100644 --- a/app/services/groups/update_service.rb +++ b/app/services/groups/update_service.rb @@ -43,8 +43,9 @@ module Groups def renaming_group_with_container_registry_images? new_path = params[:path] - new_path && new_path != group.path && - group.has_container_repositories? + new_path && + new_path != group.path && + group.has_container_repository_including_subgroups? end def container_images_error diff --git a/app/views/search/results/_snippet_blob.html.haml b/app/views/search/results/_snippet_blob.html.haml index f17dae0a94c..37f4efee9d2 100644 --- a/app/views/search/results/_snippet_blob.html.haml +++ b/app/views/search/results/_snippet_blob.html.haml @@ -1,6 +1,7 @@ - snippet_blob = chunk_snippet(snippet_blob, @search_term) - snippet = snippet_blob[:snippet_object] - snippet_chunks = snippet_blob[:snippet_chunks] +- snippet_path = reliable_snippet_path(snippet) .search-result-row %span @@ -11,7 +12,6 @@ = snippet.author_name %span.light= time_ago_with_tooltip(snippet.created_at) %h4.snippet-title - - snippet_path = reliable_snippet_path(snippet) .file-holder .js-file-title.file-title = link_to snippet_path do diff --git a/app/views/search/results/_snippet_title.html.haml b/app/views/search/results/_snippet_title.html.haml index 1e01088d9e6..7280146720e 100644 --- a/app/views/search/results/_snippet_title.html.haml +++ b/app/views/search/results/_snippet_title.html.haml @@ -2,10 +2,7 @@ %h4.snippet-title.term = link_to reliable_snippet_path(snippet_title) do = truncate(snippet_title.title, length: 60) - - if snippet_title.private? - %span.badge.badge-gray - %i.fa.fa-lock - = _("private") + = snippet_badge(snippet_title) %span.cgray.monospace.tiny.float-right.term = snippet_title.file_name diff --git a/app/views/shared/snippets/_blob.html.haml b/app/views/shared/snippets/_blob.html.haml index 2132fcbccc5..6a5e777706c 100644 --- a/app/views/shared/snippets/_blob.html.haml +++ b/app/views/shared/snippets/_blob.html.haml @@ -8,7 +8,6 @@ .btn-group{ role: "group" }< = copy_blob_source_button(blob) = open_raw_blob_button(blob) - - = link_to icon('download'), download_snippet_path(@snippet), target: '_blank', class: "btn btn-sm has-tooltip", title: 'Download', data: { container: 'body' } + = download_raw_snippet_button(@snippet) = render 'projects/blob/content', blob: blob diff --git a/app/views/shared/snippets/_embed.html.haml b/app/views/shared/snippets/_embed.html.haml index c7f0511d1de..d2e35511b32 100644 --- a/app/views/shared/snippets/_embed.html.haml +++ b/app/views/shared/snippets/_embed.html.haml @@ -17,7 +17,7 @@ .file-actions.d-none.d-sm-block .btn-group{ role: "group" }< - = embedded_snippet_raw_button + = embedded_raw_snippet_button = embedded_snippet_download_button %article.file-holder.snippet-file-content diff --git a/app/views/shared/snippets/_header.html.haml b/app/views/shared/snippets/_header.html.haml index 8d94a87a775..67f177288f0 100644 --- a/app/views/shared/snippets/_header.html.haml +++ b/app/views/shared/snippets/_header.html.haml @@ -44,7 +44,7 @@ %li %button.js-share-btn.btn.btn-transparent{ type: 'button' } %strong.embed-toggle-list-item= _("Share") - %input.js-snippet-url-area.snippet-embed-input.form-control{ type: "text", autocomplete: 'off', value: snippet_embed } + %input.js-snippet-url-area.snippet-embed-input.form-control{ type: "text", autocomplete: 'off', value: snippet_embed_tag(@snippet) } .input-group-append = clipboard_button(title: _('Copy'), class: 'js-clipboard-btn snippet-clipboard-btn btn btn-default', target: '.js-snippet-url-area') .clearfix -- cgit v1.2.3