Commit e8d6c3c1b6a146ca400a3337ddde57d0042f5087

Authored by Dmitriy Zaporozhets
2 parents 5509093f 866b9f6d

Merge pull request #1706 from riyad/refactor-tree-views-and-improve-consistency

Refactor tree views and improve consistency
app/assets/stylesheets/sections/tree.scss
... ... @@ -43,6 +43,10 @@
43 43 }
44 44  
45 45 .tree-table {
  46 + th .btn {
  47 + margin: -2px -1px;
  48 + padding: 2px 10px;
  49 + }
46 50 td {
47 51 background:#fafafa;
48 52 }
... ...
app/decorators/tree_decorator.rb
... ... @@ -28,17 +28,4 @@ class TreeDecorator < ApplicationDecorator
28 28 file = File.join(path, "..")
29 29 h.project_tree_path(project, h.tree_join(ref, file))
30 30 end
31   -
32   - def history_path
33   - h.project_commits_path(project, h.tree_join(ref, path))
34   - end
35   -
36   - def mb_size
37   - size = (tree.size / 1024)
38   - if size < 1024
39   - "#{size} KB"
40   - else
41   - "#{size/1024} MB"
42   - end
43   - end
44 31 end
... ...
app/views/blame/show.html.haml
1 1 = render "head"
2 2  
3   -#tree-holder
  3 +#tree-holder.tree-holder
4 4 %ul.breadcrumb
5 5 %li
6 6 %span.arrow
... ... @@ -15,12 +15,9 @@
15 15 .file_title
16 16 %i.icon-file
17 17 %span.file_name
18   - = @tree.name
19   - %small blame
20   - %span.options
21   - = link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
22   - = link_to "history", project_commits_path(@project, @id), class: "btn very_small"
23   - = link_to "source", project_tree_path(@project, @id), class: "btn very_small"
  18 + = @tree.name.force_encoding('utf-8')
  19 + %small= number_to_human_size @tree.size
  20 + %span.options= render "tree/blob_actions"
24 21 .file_content.blame
25 22 %table
26 23 - @blame.each do |commit, lines|
... ...
app/views/tree/_blob.html.haml 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +.file_holder
  2 + .file_title
  3 + %i.icon-file
  4 + %span.file_name
  5 + = blob.name.force_encoding('utf-8')
  6 + %small= number_to_human_size blob.size
  7 + %span.options= render "tree/blob_actions"
  8 + - if blob.text?
  9 + = render "tree/blob/text", blob: blob
  10 + - elsif blob.image?
  11 + = render "tree/blob/image", blob: blob
  12 + - else
  13 + = render "tree/blob/download", blob: blob
... ...
app/views/tree/_blob_actions.html.haml 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +.btn-group.tree-btn-group
  2 + -# only show edit link for text files
  3 + - if @tree.text?
  4 + = link_to "edit", edit_project_tree_path(@project, @id), class: "btn very_small"
  5 + = link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
  6 + -# only show normal/blame view links for text files
  7 + - if @tree.text?
  8 + - if current_page? project_blame_path(@project, @id)
  9 + = link_to "normal view", project_tree_path(@project, @id), class: "btn very_small"
  10 + - else
  11 + = link_to "blame", project_blame_path(@project, @id), class: "btn very_small"
  12 + = link_to "history", project_commits_path(@project, @id), class: "btn very_small"
... ...
app/views/tree/_readme.html.haml 0 → 100644
... ... @@ -0,0 +1,10 @@
  1 +.file_holder#README
  2 + .file_title
  3 + %i.icon-file
  4 + = readme.name
  5 + .file_content.wiki
  6 + - if gitlab_markdown?(readme.name)
  7 + = preserve do
  8 + = markdown(readme.data)
  9 + - else
  10 + = raw GitHub::Markup.render(readme.name, readme.data)
0 11 \ No newline at end of file
... ...
app/views/tree/_submodule_item.html.haml
... ... @@ -7,5 +7,5 @@
7 7 %strong= truncate(name, length: 40)
8 8 %td
9 9 %code= submodule_item.id[0..10]
10   - %td
  10 + %td{ colspan: 2 }
11 11 = link_to truncate(url, length: 40), url
... ...
app/views/tree/_tree.html.haml
... ... @@ -12,15 +12,14 @@
12 12  
13 13 %div#tree-content-holder.tree-content-holder
14 14 - if tree.is_blob?
15   - = render partial: "tree/tree_file", object: tree
  15 + = render "tree/blob", blob: tree
16 16 - else
17 17 %table#tree-slider{class: "table_#{@hex_path} tree-table" }
18 18 %thead
19 19 %th Name
20 20 %th Last Update
21   - %th
22   - Last commit
23   - = link_to "History", tree.history_path, class: "right"
  21 + %th Last Commit
  22 + %th= link_to "history", project_commits_path(@project, @id), class: "btn very_small right"
24 23  
25 24 - if tree.up_dir?
26 25 %tr.tree-item
... ... @@ -29,20 +28,12 @@
29 28 = link_to "..", tree.up_dir_path
30 29 %td
31 30 %td
  31 + %td
32 32  
33 33 = render_tree(tree.contents)
34 34  
35   - - if content = tree.contents.find { |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }
36   - .file_holder#README
37   - .file_title
38   - %i.icon-file
39   - = content.name
40   - .file_content.wiki
41   - - if gitlab_markdown?(content.name)
42   - = preserve do
43   - = markdown(content.data)
44   - - else
45   - = raw GitHub::Markup.render(content.name, content.data)
  35 + - if readme = tree.contents.find { |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }
  36 + = render "tree/readme", readme: readme
46 37  
47 38 - unless tree.is_blob?
48 39 :javascript
... ...
app/views/tree/_tree_file.html.haml
... ... @@ -1,42 +0,0 @@
1   -.file_holder
2   - .file_title
3   - %i.icon-file
4   - %span.file_name
5   - = tree_file.name.force_encoding('utf-8')
6   - %small #{tree_file.mode}
7   - %span.options
8   - .btn-group.tree-btn-group
9   - = link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
10   - = link_to "history", project_commits_path(@project, @id), class: "btn very_small"
11   - = link_to "blame", project_blame_path(@project, @id), class: "btn very_small"
12   - = link_to "edit", edit_project_tree_path(@project, @id), class: "btn very_small"
13   - - if tree_file.text?
14   - - if gitlab_markdown?(tree_file.name)
15   - .file_content.wiki
16   - = preserve do
17   - = markdown(tree_file.data)
18   - - elsif markup?(tree_file.name)
19   - .file_content.wiki
20   - = raw GitHub::Markup.render(tree_file.name, tree_file.data)
21   - - else
22   - .file_content.code
23   - - unless tree_file.empty?
24   - %div{class: current_user.dark_scheme ? "black" : "white"}
25   - = preserve do
26   - = raw tree_file.colorize(options: { linenos: 'True'})
27   - - else
28   - %h4.nothing_here_message Empty file
29   -
30   - - elsif tree_file.image?
31   - .file_content.image_file
32   - %img{ src: "data:#{tree_file.mime_type};base64,#{Base64.encode64(tree_file.data)}"}
33   -
34   - - else
35   - .file_content.blob_file
36   - %center
37   - = link_to project_blob_path(@project, @id) do
38   - %div.padded
39   - %br
40   - = image_tag "download.png", width: 64
41   - %h3
42   - Download (#{tree_file.mb_size})
app/views/tree/_tree_item.html.haml
... ... @@ -6,4 +6,4 @@
6 6 %span.log_loading.hide
7 7 Loading commit data...
8 8 = image_tag "ajax_loader_tree.gif", width: 14
9   - %td.tree_commit
  9 + %td.tree_commit{ colspan: 2 }
... ...
app/views/tree/blob/_download.html.haml 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +.file_content.blob_file
  2 + %center
  3 + = link_to project_blob_path(@project, @id) do
  4 + %div.padded
  5 + %br
  6 + = image_tag "download.png", width: 64
  7 + %h3
  8 + Download (#{number_to_human_size blob.size})
... ...
app/views/tree/blob/_image.html.haml 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +.file_content.image_file
  2 + %img{ src: "data:#{blob.mime_type};base64,#{Base64.encode64(blob.data)}"}
... ...
app/views/tree/blob/_text.html.haml 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +- if gitlab_markdown?(blob.name)
  2 + .file_content.wiki
  3 + = preserve do
  4 + = markdown(blob.data)
  5 +- elsif markup?(blob.name)
  6 + .file_content.wiki
  7 + = raw GitHub::Markup.render(blob.name, blob.data)
  8 +- else
  9 + .file_content.code
  10 + - unless blob.empty?
  11 + %div{class: current_user.dark_scheme ? "black" : "white"}
  12 + = preserve do
  13 + = raw blob.colorize(options: { linenos: 'True'})
  14 + - else
  15 + %h4.nothing_here_message Empty file
... ...
features/steps/project/project_browse_files.rb
... ... @@ -5,14 +5,14 @@ class ProjectBrowseFiles &lt; Spinach::FeatureSteps
5 5  
6 6 Then 'I should see files from repository' do
7 7 page.should have_content "app"
8   - page.should have_content "History"
  8 + page.should have_content "history"
9 9 page.should have_content "Gemfile"
10 10 end
11 11  
12 12 Then 'I should see files from repository for "8470d70"' do
13 13 current_path.should == project_tree_path(@project, "8470d70")
14 14 page.should have_content "app"
15   - page.should have_content "History"
  15 + page.should have_content "history"
16 16 page.should have_content "Gemfile"
17 17 end
18 18  
... ...
lib/gitlab/file_editor.rb
... ... @@ -51,7 +51,7 @@ module Gitlab
51 51 protected
52 52  
53 53 def can_edit?(path, last_commit)
54   - current_last_commit = @project.commits(ref, path, 1).first.sha
  54 + current_last_commit = @project.last_commit_for(ref, path).sha
55 55 last_commit == current_last_commit
56 56 end
57 57 end
... ...