Chris@14: --- app/helpers/repositories_helper.rb
Chris@14: +++ app/helpers/repositories_helper.rb
Chris@14: @@ -52,17 +52,19 @@
Chris@14: else
Chris@14: change
Chris@14: end
Chris@14: - end.compact
Chris@14: + end.compact
Chris@14:
Chris@14: tree = { }
Chris@14: changes.each do |change|
Chris@14: p = tree
Chris@14: dirs = change.path.to_s.split('/').select {|d| !d.blank?}
Chris@14: + path = ''
Chris@14: dirs.each do |dir|
Chris@14: + path += '/' + dir
Chris@14: p[:s] ||= {}
Chris@14: p = p[:s]
Chris@14: - p[dir] ||= {}
Chris@14: - p = p[dir]
Chris@14: + p[path] ||= {}
Chris@14: + p = p[path]
Chris@14: end
Chris@14: p[:c] = change
Chris@14: end
Chris@14: @@ -76,21 +78,26 @@
Chris@14: output = ''
Chris@14: output << '
'
Chris@14: tree.keys.sort.each do |file|
Chris@14: - s = !tree[file][:s].nil?
Chris@14: - c = tree[file][:c]
Chris@14: -
Chris@14: style = 'change'
Chris@14: - style << ' folder' if s
Chris@14: - style << " change-#{c.action}" if c
Chris@14: -
Chris@14: - text = h(file)
Chris@14: - unless c.nil?
Chris@14: + text = File.basename(h(file))
Chris@14: + if s = tree[file][:s]
Chris@14: + style << ' folder'
Chris@14: + path_param = to_path_param(@repository.relative_path(file))
Chris@14: + text = link_to(text, :controller => 'repositories',
Chris@14: + :action => 'show',
Chris@14: + :id => @project,
Chris@14: + :path => path_param,
Chris@14: + :rev => @changeset.revision)
Chris@14: + output << "- #{text}
"
Chris@14: + output << render_changes_tree(s)
Chris@14: + elsif c = tree[file][:c]
Chris@14: + style << " change-#{c.action}"
Chris@14: path_param = to_path_param(@repository.relative_path(c.path))
Chris@14: text = link_to(text, :controller => 'repositories',
Chris@14: :action => 'entry',
Chris@14: :id => @project,
Chris@14: :path => path_param,
Chris@14: - :rev => @changeset.revision) unless s || c.action == 'D'
Chris@14: + :rev => @changeset.revision) unless c.action == 'D'
Chris@14: text << " - #{c.revision}" unless c.revision.blank?
Chris@14: text << ' (' + link_to('diff', :controller => 'repositories',
Chris@14: :action => 'diff',
Chris@14: @@ -98,9 +105,8 @@
Chris@14: :path => path_param,
Chris@14: :rev => @changeset.revision) + ') ' if c.action == 'M'
Chris@14: text << ' ' + content_tag('span', c.from_path, :class => 'copied-from') unless c.from_path.blank?
Chris@14: + output << "- #{text}
"
Chris@14: end
Chris@14: - output << "- #{text}
"
Chris@14: - output << render_changes_tree(tree[file][:s]) if s
Chris@14: end
Chris@14: output << '
'
Chris@14: output