#-- # Copyright (C) 2008 Dimitrij Denissenko # Please read LICENSE document for more information. #++ module RepositoryHelper def browse_path_hash(fullpath, rev=nil) path = relative_path(fullpath).split('/').reject(&:blank?) options = {:controller => 'browse', :action => 'browse'} options[:path] = path.blank? ? nil : path options[:rev] = rev.blank? ? nil : rev options end def render_diff(unified_diff, node_path) scanner = Repository::Abstract::DiffScanner.new(unified_diff) tbody_tags = scanner.blocks.map do |block| block.line_pairs.map do |line_set| table_rows = [] line_set.each_with_index do |(source, target), i| table_rows << content_tag(:tr, wrap_diff(:th, source.n1) + wrap_diff(:td, source) + wrap_diff(:th, target.n1) + wrap_diff(:td, target), :class => html_class_for_diff_row(i, line_set.size) ) end "
#{table_rows.join("\n")}" end.join("\n") end content_tag :table, header_for_diff_table(scanner, node_path) + body_for_diff_table(tbody_tags), :class => 'ln-code' end def format_changeset_log(log) method = RetroCM[:content][:format][:changeset_logs] == 'wikified' ? :markup : :simple_markup send(method, log) end protected def header_for_diff_table(scanner, node_path) source_rev = link_to_if_permitted "r#{scanner.source_rev}", browse_path_hash(node_path, scanner.source_rev) target_rev = link_to_if_permitted "r#{scanner.target_rev}", browse_path_hash(node_path, scanner.target_rev) "#{values ? h(values) : ' '}", options
end
def relative_path(fullpath)
path = Project.current ? Project.current.relativize_path(fullpath) : fullpath
path.blank? ? '/' : path
end
end