view .svn/pristine/a0/a04a5d71b977f3b565534fb7037f1a2f881f34aa.svn-base @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents cbb26bc654de
children
line wrap: on
line source
Index: app/views/settings/_general.rhtml
===================================================================
--- app/views/settings/_general.rhtml	(revision 2094)
+++ app/views/settings/_general.rhtml	(working copy)
@@ -48,6 +48,9 @@
 <p><label><%= l(:setting_feeds_limit) %></label>
 <%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %></p>
 
+<p><label><%= l(:setting_diff_max_lines_displayed) %></label>
+<%= text_field_tag 'settings[diff_max_lines_displayed]', Setting.diff_max_lines_displayed, :size => 6 %></p>
+
 <p><label><%= l(:setting_gravatar_enabled) %></label>
 <%= check_box_tag 'settings[gravatar_enabled]', 1, Setting.gravatar_enabled? %><%= hidden_field_tag 'settings[gravatar_enabled]', 0 %></p>
 </div>
Index: app/views/common/_diff.rhtml
===================================================================
--- app/views/common/_diff.rhtml	(revision 2111)
+++ app/views/common/_diff.rhtml	(working copy)
@@ -1,4 +1,5 @@
-<% Redmine::UnifiedDiff.new(diff, :type => diff_type).each do |table_file| -%>
+<% diff = Redmine::UnifiedDiff.new(diff, :type => diff_type, :max_lines => Setting.diff_max_lines_displayed.to_i) -%>
+<% diff.each do |table_file| -%>
 <div class="autoscroll">
 <% if diff_type == 'sbs' -%>
 <table class="filecontent syntaxhl">
@@ -62,3 +63,5 @@
 
 </div>
 <% end -%>
+
+<%= l(:text_diff_truncated) if diff.truncated? %>
Index: lang/lt.yml
===================================================================
--- config/settings.yml	(revision 2094)
+++ config/settings.yml	(working copy)
@@ -61,6 +61,9 @@
 feeds_limit:
   format: int
   default: 15
+diff_max_lines_displayed:
+  format: int
+  default: 1500
 enabled_scm:
   serialized: true
   default: 
Index: lib/redmine/unified_diff.rb
===================================================================
--- lib/redmine/unified_diff.rb	(revision 2110)
+++ lib/redmine/unified_diff.rb	(working copy)
@@ -19,8 +19,11 @@
   # Class used to parse unified diffs
   class UnifiedDiff < Array  
     def initialize(diff, options={})
+      options.assert_valid_keys(:type, :max_lines)
       diff_type = options[:type] || 'inline'
       
+      lines = 0
+      @truncated = false
       diff_table = DiffTable.new(diff_type)
       diff.each do |line|
         if line =~ /^(---|\+\+\+) (.*)$/
@@ -28,10 +31,17 @@
           diff_table = DiffTable.new(diff_type)
         end
         diff_table.add_line line
+        lines += 1
+        if options[:max_lines] && lines > options[:max_lines]
+          @truncated = true
+          break
+        end
       end
       self << diff_table unless diff_table.empty?
       self
     end
+    
+    def truncated?; @truncated; end
   end
 
   # Class that represents a file diff