Strip non utf8 content when displaying diff (ruby1.9 compatibility).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4604 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
1c7079db3f
commit
488285e123
|
@ -29,6 +29,12 @@ module AttachmentsHelper
|
|||
end
|
||||
|
||||
def to_utf8(str)
|
||||
str
|
||||
return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
|
||||
begin
|
||||
Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3]
|
||||
rescue Iconv::InvalidEncoding
|
||||
# "UTF-8//IGNORE" is not supported on some OS
|
||||
str
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<% if diff_type == 'sbs' -%>
|
||||
<table class="filecontent">
|
||||
<thead>
|
||||
<tr><th colspan="4" class="filename"><%= table_file.file_name %></th></tr>
|
||||
<tr><th colspan="4" class="filename"><%=to_utf8 table_file.file_name %></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% prev_line_left, prev_line_right = nil, nil -%>
|
||||
|
@ -31,7 +31,7 @@
|
|||
<% else -%>
|
||||
<table class="filecontent syntaxhl">
|
||||
<thead>
|
||||
<tr><th colspan="3" class="filename"><%= table_file.file_name %></th></tr>
|
||||
<tr><th colspan="3" class="filename"><%=to_utf8 table_file.file_name %></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% prev_line_left, prev_line_right = nil, nil -%>
|
||||
|
|
|
@ -54,11 +54,11 @@ attachments_005:
|
|||
container_type: Issue
|
||||
container_id: 3
|
||||
downloads: 0
|
||||
disk_filename: 060719210727_changeset.diff
|
||||
disk_filename: 060719210727_changeset_iso8859-1.diff
|
||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||
id: 5
|
||||
filesize: 687
|
||||
filename: changeset.diff
|
||||
filename: changeset_iso8859-1.diff
|
||||
author_id: 2
|
||||
content_type: text/x-diff
|
||||
attachments_006:
|
||||
|
@ -157,3 +157,15 @@ attachments_013:
|
|||
filename: foo.zip
|
||||
author_id: 2
|
||||
content_type: application/octet-stream
|
||||
attachments_014:
|
||||
created_on: 2006-07-19 21:07:27 +02:00
|
||||
container_type: Issue
|
||||
container_id: 3
|
||||
downloads: 0
|
||||
disk_filename: 060719210727_changeset_utf8.diff
|
||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||
id: 14
|
||||
filesize: 687
|
||||
filename: changeset_utf8.diff
|
||||
author_id: 2
|
||||
content_type: text/x-diff
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
Index: trunk/app/controllers/issues_controller.rb
|
||||
===================================================================
|
||||
--- trunk/app/controllers/issues_controller.rb (r‚vision 1483)
|
||||
+++ trunk/app/controllers/issues_controller.rb (r‚vision 1484)
|
||||
--- trunk/app/controllers/issues_controller.rb (révision 1483)
|
||||
+++ trunk/app/controllers/issues_controller.rb (révision 1484)
|
||||
@@ -149,7 +149,7 @@
|
||||
attach_files(@issue, params[:attachments])
|
||||
flash[:notice] = l(:notice_successful_create)
|
||||
flash[:notice] = 'Demande créée avec succès'
|
||||
Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added')
|
||||
- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project
|
||||
+ redirect_to :controller => 'issues', :action => 'show', :id => @issue
|
|
@ -0,0 +1,13 @@
|
|||
Index: trunk/app/controllers/issues_controller.rb
|
||||
===================================================================
|
||||
--- trunk/app/controllers/issues_controller.rb (révision 1483)
|
||||
+++ trunk/app/controllers/issues_controller.rb (révision 1484)
|
||||
@@ -149,7 +149,7 @@
|
||||
attach_files(@issue, params[:attachments])
|
||||
flash[:notice] = 'Demande créée avec succès'
|
||||
Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added')
|
||||
- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project
|
||||
+ redirect_to :controller => 'issues', :action => 'show', :id => @issue
|
||||
return
|
||||
end
|
||||
end
|
|
@ -1,5 +1,7 @@
|
|||
# redMine - project management software
|
||||
# Copyright (C) 2006-2008 Jean-Philippe Lang
|
||||
# encoding: utf-8
|
||||
#
|
||||
# Redmine - project management software
|
||||
# Copyright (C) 2006-2011 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
|
@ -35,10 +37,31 @@ class AttachmentsControllerTest < ActionController::TestCase
|
|||
end
|
||||
|
||||
def test_show_diff
|
||||
get :show, :id => 5
|
||||
get :show, :id => 14 # 060719210727_changeset_utf8.diff
|
||||
assert_response :success
|
||||
assert_template 'diff'
|
||||
assert_equal 'text/html', @response.content_type
|
||||
|
||||
assert_tag 'th',
|
||||
:attributes => {:class => /filename/},
|
||||
:content => /issues_controller.rb\t\(révision 1484\)/
|
||||
assert_tag 'td',
|
||||
:attributes => {:class => /line-code/},
|
||||
:content => /Demande créée avec succès/
|
||||
end
|
||||
|
||||
def test_show_diff_should_strip_non_utf8_content
|
||||
get :show, :id => 5 # 060719210727_changeset_iso8859-1.diff
|
||||
assert_response :success
|
||||
assert_template 'diff'
|
||||
assert_equal 'text/html', @response.content_type
|
||||
|
||||
assert_tag 'th',
|
||||
:attributes => {:class => /filename/},
|
||||
:content => /issues_controller.rb\t\(rvision 1484\)/
|
||||
assert_tag 'td',
|
||||
:attributes => {:class => /line-code/},
|
||||
:content => /Demande cre avec succs/
|
||||
end
|
||||
|
||||
def test_show_text_file
|
||||
|
|
Loading…
Reference in New Issue