Commit 18fac5879d0228f501bea6316a5fbb955859fec3

Authored by Dmitriy Zaporozhets
2 parents 1ad2a936 97c72d74

Merge pull request #5969 from jhollingsworth/feature/zip-archive-ui

Add UI for downloading various archive formats.
app/assets/stylesheets/generic/buttons.scss
... ... @@ -143,16 +143,27 @@
143 143 line-height: 16px;
144 144 margin: 2px;
145 145 }
  146 +}
  147 +
  148 +.btn-block {
  149 + width: 100%;
  150 + margin: 0;
  151 + margin-bottom: 15px;
  152 + &.btn {
  153 + padding: 6px 0;
  154 + }
  155 +}
146 156  
  157 +.btn,
  158 +.btn-group {
147 159 &.grouped {
148 160 margin-right: 7px;
149 161 float: left;
150   - }
151   -
152   - &.btn-block {
153   - width: 100%;
154   - margin: 0;
155   - padding: 6px 0;
156   - margin-bottom: 15px;
  162 + &:last-child {
  163 + margin-right: 0px;
  164 + }
157 165 }
158 166 }
  167 +
  168 +.btn-group-small > .btn { @extend .btn.btn-small; }
  169 +.btn-group-tiny > .btn { @extend .btn.btn-tiny; }
... ...
app/assets/stylesheets/sections/projects.scss
... ... @@ -228,11 +228,26 @@ ul.nav.nav-projects-tabs {
228 228 .project-side {
229 229 .btn-block {
230 230 background-image: none;
231   - background-color: #F1f1f1;
232   - border-color: #EEE;
233   - &:hover {
234   - background-color: #eee;
235   - border-color: #DDD;
  231 + .btn,
  232 + &.btn,
  233 + &.btn-group ul.dropdown-menu {
  234 + background-color: #F1f1f1;
  235 + border-color: #EEE;
  236 + &:hover {
  237 + background-color: #eee;
  238 + border-color: #DDD;
  239 + }
  240 + }
  241 + &.btn-group-justified {
  242 + .btn {
  243 + width: 100%;
  244 + }
  245 + .dropdown-toggle {
  246 + width: 26px;
  247 + }
  248 + }
  249 + ul {
  250 + width: 100%;
236 251 }
237 252 }
238 253 .project-fork-icon {
... ...
app/views/projects/branches/_branch.html.haml
... ... @@ -10,9 +10,7 @@
10 10 %i.icon-lock
11 11 .pull-right
12 12 - if can?(current_user, :download_code, @project)
13   - = link_to archive_project_repository_path(@project, ref: branch.name), class: 'btn grouped btn-small' do
14   - %i.icon-download-alt
15   - Download
  13 + = render 'projects/repositories/download_archive', ref: branch.name, btn_class: 'grouped btn-group-small'
16 14 = link_to project_compare_index_path(@project, from: branch.name, to: branch.name), class: 'btn grouped btn-small', title: "Compare" do
17 15 %i.icon-copy
18 16 Compare
... ...
app/views/projects/repositories/_download_archive.html.haml 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +- ref = ref || nil
  2 +- btn_class = btn_class || ''
  3 +- split_button = split_button || false
  4 +- if split_button == true
  5 + %span.btn-group{class: btn_class}
  6 + = link_to archive_project_repository_path(@project, ref: ref, format: 'zip'), class: 'btn' do
  7 + %i.icon-download-alt
  8 + %span Download zip
  9 + %a.btn.dropdown-toggle{ 'data-toggle' => 'dropdown' }
  10 + %span.caret
  11 + %span.sr-only
  12 + Select Archive Format
  13 + %ul.dropdown-menu{ role: 'menu' }
  14 + %li
  15 + = link_to archive_project_repository_path(@project, ref: ref, format: 'zip') do
  16 + %i.icon-download-alt
  17 + %span Download zip
  18 + %li
  19 + = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.gz') do
  20 + %i.icon-download-alt
  21 + %span Download tar.gz
  22 + %li
  23 + = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.bz2') do
  24 + %i.icon-download-alt
  25 + %span Download tar.bz2
  26 + %li
  27 + = link_to archive_project_repository_path(@project, ref: ref, format: 'tar') do
  28 + %i.icon-download-alt
  29 + %span Download tar
  30 +- else
  31 + %span.btn-group{class: btn_class}
  32 + = link_to archive_project_repository_path(@project, ref: ref, format: 'zip'), class: 'btn' do
  33 + %i.icon-download-alt
  34 + %span zip
  35 + = link_to archive_project_repository_path(@project, ref: ref, format: 'tar.gz'), class: 'btn' do
  36 + %i.icon-download-alt
  37 + %span tar.gz
0 38 \ No newline at end of file
... ...
app/views/projects/show.html.haml
... ... @@ -34,11 +34,10 @@
34 34 Fork repository
35 35  
36 36 - if can? current_user, :download_code, @project
37   - = link_to archive_project_repository_path(@project), class: "btn btn-block" do
38   - %i.icon-download-alt
39   - %span Download
40   - = link_to project_compare_index_path(@project, from: @repository.root_ref, to: @ref || @repository.root_ref), class: 'btn btn-block' do
41   - Compare code
  37 + = render 'projects/repositories/download_archive', btn_class: 'btn-block btn-group-justified', split_button: true
  38 +
  39 + = link_to project_compare_index_path(@project, from: @repository.root_ref, to: @ref || @repository.root_ref), class: 'btn btn-block' do
  40 + Compare code
42 41  
43 42 - if @repository.readme
44 43 - readme = @repository.readme
... ...
app/views/projects/tags/index.html.haml
... ... @@ -32,11 +32,9 @@
32 32  
33 33 %span.pull-right
34 34 - if can? current_user, :download_code, @project
35   - = link_to archive_project_repository_path(@project, ref: tag.name), class: 'btn grouped btn-small' do
36   - %i.icon-download-alt
37   - Download
  35 + = render 'projects/repositories/download_archive', ref: tag.name, btn_class: 'grouped btn-group-small'
38 36 - if can?(current_user, :admin_project, @project)
39   - = link_to project_tag_path(@project, tag.name), class: 'btn btn-small remove-row', method: :delete, data: { confirm: 'Removed tag cannot be restored. Are you sure?'}, remote: true do
  37 + = link_to project_tag_path(@project, tag.name), class: 'btn btn-small remove-row grouped', method: :delete, data: { confirm: 'Removed tag cannot be restored. Are you sure?'}, remote: true do
40 38 %i.icon-trash
41 39  
42 40 = paginate @tags, theme: 'gitlab'
... ...
app/views/projects/tree/show.html.haml
1 1 %div.tree-ref-holder
2 2 = render 'shared/ref_switcher', destination: 'tree', path: @path
  3 +- if can? current_user, :download_code, @project
  4 + .tree-ref-holder.pull-right
  5 + = render 'projects/repositories/download_archive', ref: @ref, btn_class: 'btn-group-small', split_button: true
3 6 %div#tree-holder.tree-holder
4 7 = render "tree", tree: @tree
... ...