Add download directory in menu

Add subdirectory params for RepositoriesController#archive
This commit is contained in:
Kia Mei Somabes 2018-07-13 12:41:24 +08:00 committed by Patrick Bajao
parent 8b9da458ec
commit e028276d34
4 changed files with 17 additions and 2 deletions

View file

@ -23,7 +23,7 @@ class Projects::RepositoriesController < Projects::ApplicationController
append_sha = false if @filename == shortname append_sha = false if @filename == shortname
end end
send_git_archive @repository, ref: @ref, format: params[:format], append_sha: append_sha send_git_archive @repository, ref: @ref, subdirectory: params[:subdirectory], format: params[:format], append_sha: append_sha
rescue => ex rescue => ex
logger.error("#{self.class.name}: #{ex}") logger.error("#{self.class.name}: #{ex}")
git_not_found! git_not_found!

View file

@ -27,6 +27,14 @@ module ProjectsHelper
image_tag(src, width: opts[:size], class: classes, alt: '', "data-src" => avatar) image_tag(src, width: opts[:size], class: classes, alt: '', "data-src" => avatar)
end end
def is_directory
@path.empty? ? false : true
end
def get_directory_path
@path ? "#{@path}/" : ''
end
def author_content_tag(author, opts = {}) def author_content_tag(author, opts = {})
default_opts = { author_class: 'author', tooltip: false, by_username: false } default_opts = { author_class: 'author', tooltip: false, by_username: false }
opts = default_opts.merge(opts) opts = default_opts.merge(opts)

View file

@ -31,6 +31,7 @@ module WorkhorseHelper
# Archive a Git repository and send it through Workhorse # Archive a Git repository and send it through Workhorse
def send_git_archive(repository, **kwargs) def send_git_archive(repository, **kwargs)
kwargs.delete(:subdirectory) if kwargs[:subdirectory].nil?
headers.store(*Gitlab::Workhorse.send_git_archive(repository, **kwargs)) headers.store(*Gitlab::Workhorse.send_git_archive(repository, **kwargs))
head :ok head :ok
end end

View file

@ -8,8 +8,14 @@
%span.sr-only= _('Select Archive Format') %span.sr-only= _('Select Archive Format')
= sprite_icon("arrow-down") = sprite_icon("arrow-down")
%ul.dropdown-menu.dropdown-menu-right{ role: 'menu' } %ul.dropdown-menu.dropdown-menu-right{ role: 'menu' }
- if is_directory
%li.dropdown-header
#{ _('Directory') }
%li
= link_to project_archive_path(project, subdirectory: get_directory_path, id: tree_join(ref, archive_prefix), format: 'zip'), rel: 'nofollow', download: '' do
%span= _('Download zip')
%li.dropdown-header %li.dropdown-header
#{ _('Source code') } #{ _('Repository') }
%li %li
= link_to project_archive_path(project, id: tree_join(ref, archive_prefix), format: 'zip'), rel: 'nofollow', download: '' do = link_to project_archive_path(project, id: tree_join(ref, archive_prefix), format: 'zip'), rel: 'nofollow', download: '' do
%span= _('Download zip') %span= _('Download zip')