Chris@14
|
1 --- app/helpers/repositories_helper.rb
|
Chris@14
|
2 +++ app/helpers/repositories_helper.rb
|
Chris@14
|
3 @@ -52,17 +52,19 @@
|
Chris@14
|
4 else
|
Chris@14
|
5 change
|
Chris@14
|
6 end
|
Chris@14
|
7 - end.compact
|
Chris@14
|
8 + end.compact
|
Chris@14
|
9
|
Chris@14
|
10 tree = { }
|
Chris@14
|
11 changes.each do |change|
|
Chris@14
|
12 p = tree
|
Chris@14
|
13 dirs = change.path.to_s.split('/').select {|d| !d.blank?}
|
Chris@14
|
14 + path = ''
|
Chris@14
|
15 dirs.each do |dir|
|
Chris@14
|
16 + path += '/' + dir
|
Chris@14
|
17 p[:s] ||= {}
|
Chris@14
|
18 p = p[:s]
|
Chris@14
|
19 - p[dir] ||= {}
|
Chris@14
|
20 - p = p[dir]
|
Chris@14
|
21 + p[path] ||= {}
|
Chris@14
|
22 + p = p[path]
|
Chris@14
|
23 end
|
Chris@14
|
24 p[:c] = change
|
Chris@14
|
25 end
|
Chris@14
|
26 @@ -76,21 +78,26 @@
|
Chris@14
|
27 output = ''
|
Chris@14
|
28 output << '<ul>'
|
Chris@14
|
29 tree.keys.sort.each do |file|
|
Chris@14
|
30 - s = !tree[file][:s].nil?
|
Chris@14
|
31 - c = tree[file][:c]
|
Chris@14
|
32 -
|
Chris@14
|
33 style = 'change'
|
Chris@14
|
34 - style << ' folder' if s
|
Chris@14
|
35 - style << " change-#{c.action}" if c
|
Chris@14
|
36 -
|
Chris@14
|
37 - text = h(file)
|
Chris@14
|
38 - unless c.nil?
|
Chris@14
|
39 + text = File.basename(h(file))
|
Chris@14
|
40 + if s = tree[file][:s]
|
Chris@14
|
41 + style << ' folder'
|
Chris@14
|
42 + path_param = to_path_param(@repository.relative_path(file))
|
Chris@14
|
43 + text = link_to(text, :controller => 'repositories',
|
Chris@14
|
44 + :action => 'show',
|
Chris@14
|
45 + :id => @project,
|
Chris@14
|
46 + :path => path_param,
|
Chris@14
|
47 + :rev => @changeset.revision)
|
Chris@14
|
48 + output << "<li class='#{style}'>#{text}</li>"
|
Chris@14
|
49 + output << render_changes_tree(s)
|
Chris@14
|
50 + elsif c = tree[file][:c]
|
Chris@14
|
51 + style << " change-#{c.action}"
|
Chris@14
|
52 path_param = to_path_param(@repository.relative_path(c.path))
|
Chris@14
|
53 text = link_to(text, :controller => 'repositories',
|
Chris@14
|
54 :action => 'entry',
|
Chris@14
|
55 :id => @project,
|
Chris@14
|
56 :path => path_param,
|
Chris@14
|
57 - :rev => @changeset.revision) unless s || c.action == 'D'
|
Chris@14
|
58 + :rev => @changeset.revision) unless c.action == 'D'
|
Chris@14
|
59 text << " - #{c.revision}" unless c.revision.blank?
|
Chris@14
|
60 text << ' (' + link_to('diff', :controller => 'repositories',
|
Chris@14
|
61 :action => 'diff',
|
Chris@14
|
62 @@ -98,9 +105,8 @@
|
Chris@14
|
63 :path => path_param,
|
Chris@14
|
64 :rev => @changeset.revision) + ') ' if c.action == 'M'
|
Chris@14
|
65 text << ' ' + content_tag('span', c.from_path, :class => 'copied-from') unless c.from_path.blank?
|
Chris@14
|
66 + output << "<li class='#{style}'>#{text}</li>"
|
Chris@14
|
67 end
|
Chris@14
|
68 - output << "<li class='#{style}'>#{text}</li>"
|
Chris@14
|
69 - output << render_changes_tree(tree[file][:s]) if s
|
Chris@14
|
70 end
|
Chris@14
|
71 output << '</ul>'
|
Chris@14
|
72 output
|