summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/attachments_controller.rb5
-rw-r--r--test/functional/attachments_controller_test.rb15
2 files changed, 20 insertions, 0 deletions
diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb
index 55cef02a8..53ff69ba8 100644
--- a/app/controllers/attachments_controller.rb
+++ b/app/controllers/attachments_controller.rb
@@ -29,6 +29,11 @@ class AttachmentsController < ApplicationController
@diff = File.new(@attachment.diskfile, "rb").read
@diff_type = params[:type] || User.current.pref[:diff_type] || 'inline'
@diff_type = 'inline' unless %w(inline sbs).include?(@diff_type)
+ # Save diff type as user preference
+ if User.current.logged? && @diff_type != User.current.pref[:diff_type]
+ User.current.pref[:diff_type] = @diff_type
+ User.current.preference.save
+ end
render :action => 'diff'
elsif @attachment.is_text? && @attachment.filesize <= Setting.file_max_size_displayed.to_i.kilobyte
@content = File.new(@attachment.diskfile, "rb").read
diff --git a/test/functional/attachments_controller_test.rb b/test/functional/attachments_controller_test.rb
index dd5c05fdf..2cf79672d 100644
--- a/test/functional/attachments_controller_test.rb
+++ b/test/functional/attachments_controller_test.rb
@@ -95,6 +95,21 @@ class AttachmentsControllerTest < ActionController::TestCase
set_tmp_attachments_directory
end
+ def test_save_diff_type
+ @request.session[:user_id] = 1 # admin
+ user = User.find(1)
+ get :show, :id => 5
+ assert_response :success
+ assert_template 'diff'
+ user.reload
+ assert_equal "inline", user.pref[:diff_type]
+ get :show, :id => 5, :type => 'sbs'
+ assert_response :success
+ assert_template 'diff'
+ user.reload
+ assert_equal "sbs", user.pref[:diff_type]
+ end
+
def test_show_text_file
get :show, :id => 4
assert_response :success