Merge pull request #1706 from riyad/refactor-tree-views-and-improve-consistency
Refactor tree views and improve consistency
This commit is contained in:
commit
e8d6c3c1b6
15 changed files with 79 additions and 82 deletions
|
@ -43,6 +43,10 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.tree-table {
|
.tree-table {
|
||||||
|
th .btn {
|
||||||
|
margin: -2px -1px;
|
||||||
|
padding: 2px 10px;
|
||||||
|
}
|
||||||
td {
|
td {
|
||||||
background:#fafafa;
|
background:#fafafa;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,17 +28,4 @@ class TreeDecorator < ApplicationDecorator
|
||||||
file = File.join(path, "..")
|
file = File.join(path, "..")
|
||||||
h.project_tree_path(project, h.tree_join(ref, file))
|
h.project_tree_path(project, h.tree_join(ref, file))
|
||||||
end
|
end
|
||||||
|
|
||||||
def history_path
|
|
||||||
h.project_commits_path(project, h.tree_join(ref, path))
|
|
||||||
end
|
|
||||||
|
|
||||||
def mb_size
|
|
||||||
size = (tree.size / 1024)
|
|
||||||
if size < 1024
|
|
||||||
"#{size} KB"
|
|
||||||
else
|
|
||||||
"#{size/1024} MB"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
= render "head"
|
= render "head"
|
||||||
|
|
||||||
#tree-holder
|
#tree-holder.tree-holder
|
||||||
%ul.breadcrumb
|
%ul.breadcrumb
|
||||||
%li
|
%li
|
||||||
%span.arrow
|
%span.arrow
|
||||||
|
@ -15,12 +15,9 @@
|
||||||
.file_title
|
.file_title
|
||||||
%i.icon-file
|
%i.icon-file
|
||||||
%span.file_name
|
%span.file_name
|
||||||
= @tree.name
|
= @tree.name.force_encoding('utf-8')
|
||||||
%small blame
|
%small= number_to_human_size @tree.size
|
||||||
%span.options
|
%span.options= render "tree/blob_actions"
|
||||||
= link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
|
|
||||||
= link_to "history", project_commits_path(@project, @id), class: "btn very_small"
|
|
||||||
= link_to "source", project_tree_path(@project, @id), class: "btn very_small"
|
|
||||||
.file_content.blame
|
.file_content.blame
|
||||||
%table
|
%table
|
||||||
- @blame.each do |commit, lines|
|
- @blame.each do |commit, lines|
|
||||||
|
|
13
app/views/tree/_blob.html.haml
Normal file
13
app/views/tree/_blob.html.haml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.file_holder
|
||||||
|
.file_title
|
||||||
|
%i.icon-file
|
||||||
|
%span.file_name
|
||||||
|
= blob.name.force_encoding('utf-8')
|
||||||
|
%small= number_to_human_size blob.size
|
||||||
|
%span.options= render "tree/blob_actions"
|
||||||
|
- if blob.text?
|
||||||
|
= render "tree/blob/text", blob: blob
|
||||||
|
- elsif blob.image?
|
||||||
|
= render "tree/blob/image", blob: blob
|
||||||
|
- else
|
||||||
|
= render "tree/blob/download", blob: blob
|
12
app/views/tree/_blob_actions.html.haml
Normal file
12
app/views/tree/_blob_actions.html.haml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.btn-group.tree-btn-group
|
||||||
|
-# only show edit link for text files
|
||||||
|
- if @tree.text?
|
||||||
|
= link_to "edit", edit_project_tree_path(@project, @id), class: "btn very_small"
|
||||||
|
= link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
|
||||||
|
-# only show normal/blame view links for text files
|
||||||
|
- if @tree.text?
|
||||||
|
- if current_page? project_blame_path(@project, @id)
|
||||||
|
= link_to "normal view", project_tree_path(@project, @id), class: "btn very_small"
|
||||||
|
- else
|
||||||
|
= link_to "blame", project_blame_path(@project, @id), class: "btn very_small"
|
||||||
|
= link_to "history", project_commits_path(@project, @id), class: "btn very_small"
|
10
app/views/tree/_readme.html.haml
Normal file
10
app/views/tree/_readme.html.haml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
.file_holder#README
|
||||||
|
.file_title
|
||||||
|
%i.icon-file
|
||||||
|
= readme.name
|
||||||
|
.file_content.wiki
|
||||||
|
- if gitlab_markdown?(readme.name)
|
||||||
|
= preserve do
|
||||||
|
= markdown(readme.data)
|
||||||
|
- else
|
||||||
|
= raw GitHub::Markup.render(readme.name, readme.data)
|
|
@ -7,5 +7,5 @@
|
||||||
%strong= truncate(name, length: 40)
|
%strong= truncate(name, length: 40)
|
||||||
%td
|
%td
|
||||||
%code= submodule_item.id[0..10]
|
%code= submodule_item.id[0..10]
|
||||||
%td
|
%td{ colspan: 2 }
|
||||||
= link_to truncate(url, length: 40), url
|
= link_to truncate(url, length: 40), url
|
||||||
|
|
|
@ -12,15 +12,14 @@
|
||||||
|
|
||||||
%div#tree-content-holder.tree-content-holder
|
%div#tree-content-holder.tree-content-holder
|
||||||
- if tree.is_blob?
|
- if tree.is_blob?
|
||||||
= render partial: "tree/tree_file", object: tree
|
= render "tree/blob", blob: tree
|
||||||
- else
|
- else
|
||||||
%table#tree-slider{class: "table_#{@hex_path} tree-table" }
|
%table#tree-slider{class: "table_#{@hex_path} tree-table" }
|
||||||
%thead
|
%thead
|
||||||
%th Name
|
%th Name
|
||||||
%th Last Update
|
%th Last Update
|
||||||
%th
|
%th Last Commit
|
||||||
Last commit
|
%th= link_to "history", project_commits_path(@project, @id), class: "btn very_small right"
|
||||||
= link_to "History", tree.history_path, class: "right"
|
|
||||||
|
|
||||||
- if tree.up_dir?
|
- if tree.up_dir?
|
||||||
%tr.tree-item
|
%tr.tree-item
|
||||||
|
@ -29,20 +28,12 @@
|
||||||
= link_to "..", tree.up_dir_path
|
= link_to "..", tree.up_dir_path
|
||||||
%td
|
%td
|
||||||
%td
|
%td
|
||||||
|
%td
|
||||||
|
|
||||||
= render_tree(tree.contents)
|
= render_tree(tree.contents)
|
||||||
|
|
||||||
- if content = tree.contents.find { |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }
|
- if readme = tree.contents.find { |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }
|
||||||
.file_holder#README
|
= render "tree/readme", readme: readme
|
||||||
.file_title
|
|
||||||
%i.icon-file
|
|
||||||
= content.name
|
|
||||||
.file_content.wiki
|
|
||||||
- if gitlab_markdown?(content.name)
|
|
||||||
= preserve do
|
|
||||||
= markdown(content.data)
|
|
||||||
- else
|
|
||||||
= raw GitHub::Markup.render(content.name, content.data)
|
|
||||||
|
|
||||||
- unless tree.is_blob?
|
- unless tree.is_blob?
|
||||||
:javascript
|
:javascript
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
.file_holder
|
|
||||||
.file_title
|
|
||||||
%i.icon-file
|
|
||||||
%span.file_name
|
|
||||||
= tree_file.name.force_encoding('utf-8')
|
|
||||||
%small #{tree_file.mode}
|
|
||||||
%span.options
|
|
||||||
.btn-group.tree-btn-group
|
|
||||||
= link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
|
|
||||||
= link_to "history", project_commits_path(@project, @id), class: "btn very_small"
|
|
||||||
= link_to "blame", project_blame_path(@project, @id), class: "btn very_small"
|
|
||||||
= link_to "edit", edit_project_tree_path(@project, @id), class: "btn very_small"
|
|
||||||
- if tree_file.text?
|
|
||||||
- if gitlab_markdown?(tree_file.name)
|
|
||||||
.file_content.wiki
|
|
||||||
= preserve do
|
|
||||||
= markdown(tree_file.data)
|
|
||||||
- elsif markup?(tree_file.name)
|
|
||||||
.file_content.wiki
|
|
||||||
= raw GitHub::Markup.render(tree_file.name, tree_file.data)
|
|
||||||
- else
|
|
||||||
.file_content.code
|
|
||||||
- unless tree_file.empty?
|
|
||||||
%div{class: current_user.dark_scheme ? "black" : "white"}
|
|
||||||
= preserve do
|
|
||||||
= raw tree_file.colorize(options: { linenos: 'True'})
|
|
||||||
- else
|
|
||||||
%h4.nothing_here_message Empty file
|
|
||||||
|
|
||||||
- elsif tree_file.image?
|
|
||||||
.file_content.image_file
|
|
||||||
%img{ src: "data:#{tree_file.mime_type};base64,#{Base64.encode64(tree_file.data)}"}
|
|
||||||
|
|
||||||
- else
|
|
||||||
.file_content.blob_file
|
|
||||||
%center
|
|
||||||
= link_to project_blob_path(@project, @id) do
|
|
||||||
%div.padded
|
|
||||||
%br
|
|
||||||
= image_tag "download.png", width: 64
|
|
||||||
%h3
|
|
||||||
Download (#{tree_file.mb_size})
|
|
|
@ -6,4 +6,4 @@
|
||||||
%span.log_loading.hide
|
%span.log_loading.hide
|
||||||
Loading commit data...
|
Loading commit data...
|
||||||
= image_tag "ajax_loader_tree.gif", width: 14
|
= image_tag "ajax_loader_tree.gif", width: 14
|
||||||
%td.tree_commit
|
%td.tree_commit{ colspan: 2 }
|
||||||
|
|
8
app/views/tree/blob/_download.html.haml
Normal file
8
app/views/tree/blob/_download.html.haml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
.file_content.blob_file
|
||||||
|
%center
|
||||||
|
= link_to project_blob_path(@project, @id) do
|
||||||
|
%div.padded
|
||||||
|
%br
|
||||||
|
= image_tag "download.png", width: 64
|
||||||
|
%h3
|
||||||
|
Download (#{number_to_human_size blob.size})
|
2
app/views/tree/blob/_image.html.haml
Normal file
2
app/views/tree/blob/_image.html.haml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
.file_content.image_file
|
||||||
|
%img{ src: "data:#{blob.mime_type};base64,#{Base64.encode64(blob.data)}"}
|
15
app/views/tree/blob/_text.html.haml
Normal file
15
app/views/tree/blob/_text.html.haml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
- if gitlab_markdown?(blob.name)
|
||||||
|
.file_content.wiki
|
||||||
|
= preserve do
|
||||||
|
= markdown(blob.data)
|
||||||
|
- elsif markup?(blob.name)
|
||||||
|
.file_content.wiki
|
||||||
|
= raw GitHub::Markup.render(blob.name, blob.data)
|
||||||
|
- else
|
||||||
|
.file_content.code
|
||||||
|
- unless blob.empty?
|
||||||
|
%div{class: current_user.dark_scheme ? "black" : "white"}
|
||||||
|
= preserve do
|
||||||
|
= raw blob.colorize(options: { linenos: 'True'})
|
||||||
|
- else
|
||||||
|
%h4.nothing_here_message Empty file
|
|
@ -5,14 +5,14 @@ class ProjectBrowseFiles < Spinach::FeatureSteps
|
||||||
|
|
||||||
Then 'I should see files from repository' do
|
Then 'I should see files from repository' do
|
||||||
page.should have_content "app"
|
page.should have_content "app"
|
||||||
page.should have_content "History"
|
page.should have_content "history"
|
||||||
page.should have_content "Gemfile"
|
page.should have_content "Gemfile"
|
||||||
end
|
end
|
||||||
|
|
||||||
Then 'I should see files from repository for "8470d70"' do
|
Then 'I should see files from repository for "8470d70"' do
|
||||||
current_path.should == project_tree_path(@project, "8470d70")
|
current_path.should == project_tree_path(@project, "8470d70")
|
||||||
page.should have_content "app"
|
page.should have_content "app"
|
||||||
page.should have_content "History"
|
page.should have_content "history"
|
||||||
page.should have_content "Gemfile"
|
page.should have_content "Gemfile"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ module Gitlab
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def can_edit?(path, last_commit)
|
def can_edit?(path, last_commit)
|
||||||
current_last_commit = @project.commits(ref, path, 1).first.sha
|
current_last_commit = @project.last_commit_for(ref, path).sha
|
||||||
last_commit == current_last_commit
|
last_commit == current_last_commit
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue