Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
388d72e6
Commit
388d72e6
authored
Oct 03, 2012
by
Robert Speicher
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add render_tree helper; simplify (speed up) tree_icon
parent
a8fad4ff
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
44 additions
and
41 deletions
+44
-41
app/assets/javascripts/tree.js.coffee
app/assets/javascripts/tree.js.coffee
+1
-0
app/decorators/tree_decorator.rb
app/decorators/tree_decorator.rb
+2
-2
app/helpers/tree_helper.rb
app/helpers/tree_helper.rb
+29
-18
app/views/tree/_tree.html.haml
app/views/tree/_tree.html.haml
+5
-12
app/views/tree/_tree_item.html.haml
app/views/tree/_tree_item.html.haml
+6
-8
app/views/tree/show.js.haml
app/views/tree/show.js.haml
+1
-1
No files found.
app/assets/javascripts/tree.js.coffee
View file @
388d72e6
...
@@ -15,6 +15,7 @@ $ ->
...
@@ -15,6 +15,7 @@ $ ->
$
(
"#tree-slider .tree-item"
).
live
'click'
,
(
e
)
->
$
(
"#tree-slider .tree-item"
).
live
'click'
,
(
e
)
->
$
(
'.tree-item-file-name a'
,
this
).
trigger
(
'click'
)
if
(
e
.
target
.
nodeName
!=
"A"
)
$
(
'.tree-item-file-name a'
,
this
).
trigger
(
'click'
)
if
(
e
.
target
.
nodeName
!=
"A"
)
# Show/Hide the loading spinner
$
(
'#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form'
).
live
$
(
'#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form'
).
live
"ajax:beforeSend"
:
->
$
(
'.tree_progress'
).
addClass
(
"loading"
)
"ajax:beforeSend"
:
->
$
(
'.tree_progress'
).
addClass
(
"loading"
)
"ajax:complete"
:
->
$
(
'.tree_progress'
).
removeClass
(
"loading"
)
"ajax:complete"
:
->
$
(
'.tree_progress'
).
removeClass
(
"loading"
)
app/decorators/tree_decorator.rb
View file @
388d72e6
...
@@ -8,14 +8,14 @@ class TreeDecorator < ApplicationDecorator
...
@@ -8,14 +8,14 @@ class TreeDecorator < ApplicationDecorator
#parts = parts[0...-1] if is_blob?
#parts = parts[0...-1] if is_blob?
yield
(
h
.
link_to
(
".."
,
"#"
,
remote:
:
true
))
if
parts
.
count
>
max_links
yield
(
h
.
link_to
(
".."
,
"#"
,
remote:
true
))
if
parts
.
count
>
max_links
parts
.
each
do
|
part
|
parts
.
each
do
|
part
|
part_path
=
File
.
join
(
part_path
,
part
)
unless
part_path
.
empty?
part_path
=
File
.
join
(
part_path
,
part
)
unless
part_path
.
empty?
part_path
=
part
if
part_path
.
empty?
part_path
=
part
if
part_path
.
empty?
next
unless
parts
.
last
(
2
).
include?
(
part
)
if
parts
.
count
>
max_links
next
unless
parts
.
last
(
2
).
include?
(
part
)
if
parts
.
count
>
max_links
yield
(
h
.
link_to
(
h
.
truncate
(
part
,
length:
40
),
h
.
project_tree_path
(
project
,
h
.
tree_join
(
ref
,
part_path
)),
remote:
:
true
))
yield
(
h
.
link_to
(
h
.
truncate
(
part
,
length:
40
),
h
.
project_tree_path
(
project
,
h
.
tree_join
(
ref
,
part_path
)),
remote:
true
))
end
end
end
end
end
end
...
...
app/helpers/tree_helper.rb
View file @
388d72e6
module
TreeHelper
module
TreeHelper
def
tree_icon
(
content
)
# Sorts a repository's tree so that folders are before files and renders
if
content
.
is_a?
(
Grit
::
Blob
)
# their corresponding partials
if
content
.
text?
#
image_tag
"file_txt.png"
# contents - A Grit::Tree object for the current tree
elsif
content
.
image?
def
render_tree
(
contents
)
image_tag
"file_img.png"
# Render Folders before Files/Submodules
folders
,
files
=
contents
.
partition
{
|
v
|
v
.
kind_of?
(
Grit
::
Tree
)
}
tree
=
""
# Render folders if we have any
tree
+=
render
partial:
'tree/tree_item'
,
collection:
folders
,
locals:
{
type:
'folder'
}
if
folders
.
present?
files
.
each
do
|
f
|
if
f
.
respond_to?
(
:url
)
# Object is a Submodule
tree
+=
render
partial:
'tree/submodule_item'
,
object:
f
else
else
image_tag
"file_bin.png"
# Object is a Blob
tree
+=
render
partial:
'tree/tree_item'
,
object:
f
,
locals:
{
type:
'file'
}
end
end
else
image_tag
"file_dir.png"
end
end
tree
.
html_safe
end
end
def
tree_hex_class
(
content
)
# Return an image icon depending on the file type
"file_
#{
hexdigest
(
content
.
name
)
}
"
#
# type - String type of the tree item; either 'folder' or 'file'
def
tree_icon
(
type
)
image
=
type
==
'folder'
?
'file_dir.png'
:
'file_txt.png'
image_tag
(
image
,
size:
'16x16'
)
end
end
def
tree_full_path
(
content
)
def
tree_hex_class
(
content
)
content
.
name
.
force_encoding
(
'utf-8'
)
"file_
#{
hexdigest
(
content
.
name
)
}
"
if
params
[
:path
]
File
.
join
(
params
[
:path
],
content
.
name
)
else
content
.
name
end
end
end
# Public: Determines if a given filename is compatible with GitHub::Markup.
# Public: Determines if a given filename is compatible with GitHub::Markup.
...
...
app/views/tree/_tree.html.haml
View file @
388d72e6
...
@@ -14,7 +14,6 @@
...
@@ -14,7 +14,6 @@
-
if
tree
.
is_blob?
-
if
tree
.
is_blob?
=
render
partial:
"tree/tree_file"
,
object:
tree
=
render
partial:
"tree/tree_file"
,
object:
tree
-
else
-
else
-
contents
=
tree
.
contents
%table
#tree-slider
{
class:
"table_#{@hex_path} tree-table"
}
%table
#tree-slider
{
class:
"table_#{@hex_path} tree-table"
}
%thead
%thead
%th
Name
%th
Name
...
@@ -24,22 +23,16 @@
...
@@ -24,22 +23,16 @@
=
link_to
"History"
,
tree
.
history_path
,
class:
"right"
=
link_to
"History"
,
tree
.
history_path
,
class:
"right"
-
if
tree
.
up_dir?
-
if
tree
.
up_dir?
%tr
{
class:
"tree-item"
,
url:
tree
.
up_dir_path
}
%tr
.tree-item
%td
.tree-item-file-name
%td
.tree-item-file-name
=
image_tag
"file_empty.png"
=
image_tag
"file_empty.png"
,
size:
'16x16'
=
link_to
".."
,
tree
.
up_dir_path
,
remote:
:
true
=
link_to
".."
,
tree
.
up_dir_path
,
remote:
true
%td
%td
%td
%td
-
index
=
0
=
render_tree
(
tree
.
contents
)
-
contents
.
select
{
|
i
|
i
.
is_a?
(
Grit
::
Tree
)}.
each
do
|
content
|
=
render
partial:
"tree/tree_item"
,
locals:
{
content:
content
,
index:
(
index
+=
1
)
}
-
contents
.
select
{
|
i
|
i
.
is_a?
(
Grit
::
Blob
)}.
each
do
|
content
|
=
render
partial:
"tree/tree_item"
,
locals:
{
content:
content
,
index:
(
index
+=
1
)
}
-
contents
.
select
{
|
i
|
i
.
is_a?
(
Grit
::
Submodule
)}.
each
do
|
content
|
=
render
partial:
"tree/submodule_item"
,
locals:
{
content:
content
,
index:
(
index
+=
1
)
}
-
if
content
=
contents
.
select
{
|
c
|
c
.
is_a?
(
Grit
::
Blob
)
and
c
.
name
=~
/^readme/i
}.
first
-
if
content
=
tree
.
contents
.
find
{
|
c
|
c
.
is_a?
(
Grit
::
Blob
)
and
c
.
name
=~
/^readme/i
}
.file_holder
#README
.file_holder
#README
.file_title
.file_title
%i
.icon-file
%i
.icon-file
...
...
app/views/tree/_tree_item.html.haml
View file @
388d72e6
-
file
=
tree_full_path
(
content
)
%tr
{
class:
"tree-item #{tree_hex_class(tree_item)}"
}
%tr
{
class:
"tree-item #{tree_hex_class(content)}"
,
url:
project_tree_path
(
@project
,
tree_join
(
@id
,
file
))
}
%td
.tree-item-file-name
%td
.tree-item-file-name
=
tree_icon
(
content
)
=
tree_icon
(
type
)
%strong
=
link_to
truncate
(
content
.
name
,
length:
40
),
project_tree_path
(
@project
,
tree_join
(
@id
||
@commit
.
id
,
file
)),
remote: :
true
%strong
=
link_to
truncate
(
tree_item
.
name
,
length:
40
),
project_tree_path
(
@project
,
tree_join
(
@id
||
@commit
.
id
,
tree_item
.
name
)),
remote:
true
%td
.tree_time_ago.cgray
%td
.tree_time_ago.cgray
-
if
index
==
1
%span
.log_loading.hide
%span
.log_loading
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
app/views/tree/show.js.haml
View file @
388d72e6
:plain
:plain
// Load Files list
// Load Files list
$("#tree-holder").html("
#{
escape_javascript
(
render
(
partial:
"tree"
,
locals:
{
commit:
@commit
,
tree:
@tree
}))
}
");
$("#tree-holder").html("
#{
escape_javascript
(
render
(
partial:
"tree"
,
locals:
{
tree:
@tree
}))
}
");
$("#tree-content-holder").show("slide", { direction: "right" }, 150);
$("#tree-content-holder").show("slide", { direction: "right" }, 150);
$('.project-refs-form #path').val("
#{
@path
}
");
$('.project-refs-form #path').val("
#{
@path
}
");
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment