Commit 66afc8c0 authored by Jean-Philippe Lang's avatar Jean-Philippe Lang

Adds a setting to limit the size of text attachments that can be displayed by…

Adds a setting to limit the size of text attachments that can be displayed by the file viewer (default set to 512KB). Larger files are sent for download.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2503 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent 2bd419f2
...@@ -26,7 +26,7 @@ class AttachmentsController < ApplicationController ...@@ -26,7 +26,7 @@ class AttachmentsController < ApplicationController
if @attachment.is_diff? if @attachment.is_diff?
@diff = File.new(@attachment.diskfile, "rb").read @diff = File.new(@attachment.diskfile, "rb").read
render :action => 'diff' render :action => 'diff'
elsif @attachment.is_text? elsif @attachment.is_text? && @attachment.filesize <= Setting.setting_file_max_size_displayed.to_i.kilobyte
@content = File.new(@attachment.diskfile, "rb").read @content = File.new(@attachment.diskfile, "rb").read
render :action => 'file' render :action => 'file'
else else
......
...@@ -33,6 +33,9 @@ ...@@ -33,6 +33,9 @@
<p><label><%= l(:setting_feeds_limit) %></label> <p><label><%= l(:setting_feeds_limit) %></label>
<%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %></p> <%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %></p>
<p><label><%= l(:setting_file_max_size_displayed) %></label>
<%= text_field_tag 'settings[setting_file_max_size_displayed]', Setting.setting_file_max_size_displayed, :size => 6 %> KB</p>
<p><label><%= l(:setting_diff_max_lines_displayed) %></label> <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> <%= text_field_tag 'settings[diff_max_lines_displayed]', Setting.diff_max_lines_displayed, :size => 6 %></p>
</div> </div>
......
...@@ -771,3 +771,4 @@ bg: ...@@ -771,3 +771,4 @@ bg:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -772,3 +772,4 @@ ca: ...@@ -772,3 +772,4 @@ ca:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -776,3 +776,4 @@ cs: ...@@ -776,3 +776,4 @@ cs:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -803,3 +803,4 @@ da: ...@@ -803,3 +803,4 @@ da:
general_csv_decimal_separator: '.' general_csv_decimal_separator: '.'
permission_edit_own_time_entries: Edit own time logs permission_edit_own_time_entries: Edit own time logs
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -804,3 +804,4 @@ de: ...@@ -804,3 +804,4 @@ de:
button_create_and_continue: Create and continue button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'One line for each value' text_custom_field_possible_values_info: 'One line for each value'
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -278,6 +278,7 @@ en: ...@@ -278,6 +278,7 @@ en:
setting_sequential_project_identifiers: Generate sequential project identifiers setting_sequential_project_identifiers: Generate sequential project identifiers
setting_gravatar_enabled: Use Gravatar user icons setting_gravatar_enabled: Use Gravatar user icons
setting_diff_max_lines_displayed: Max number of diff lines displayed setting_diff_max_lines_displayed: Max number of diff lines displayed
setting_file_max_size_displayed: Max size of text files displayed inline
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
permission_edit_project: Edit project permission_edit_project: Edit project
......
...@@ -824,3 +824,4 @@ es: ...@@ -824,3 +824,4 @@ es:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -814,3 +814,4 @@ fi: ...@@ -814,3 +814,4 @@ fi:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -311,6 +311,7 @@ fr: ...@@ -311,6 +311,7 @@ fr:
setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels
setting_gravatar_enabled: Afficher les Gravatar des utilisateurs setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées
setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne
setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier" setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier"
permission_edit_project: Modifier le projet permission_edit_project: Modifier le projet
......
...@@ -804,3 +804,4 @@ gl: ...@@ -804,3 +804,4 @@ gl:
button_create_and_continue: Create and continue button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'One line for each value' text_custom_field_possible_values_info: 'One line for each value'
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -787,3 +787,4 @@ he: ...@@ -787,3 +787,4 @@ he:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -809,3 +809,4 @@ ...@@ -809,3 +809,4 @@
label_display: Megmutat label_display: Megmutat
field_editable: Szerkeszthető field_editable: Szerkeszthető
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -790,3 +790,4 @@ it: ...@@ -790,3 +790,4 @@ it:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -802,3 +802,4 @@ ja: ...@@ -802,3 +802,4 @@ ja:
label_display: 表示 label_display: 表示
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -833,3 +833,4 @@ ko: ...@@ -833,3 +833,4 @@ ko:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -814,3 +814,4 @@ lt: ...@@ -814,3 +814,4 @@ lt:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -759,3 +759,4 @@ nl: ...@@ -759,3 +759,4 @@ nl:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -777,3 +777,4 @@ ...@@ -777,3 +777,4 @@
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -807,3 +807,4 @@ pl: ...@@ -807,3 +807,4 @@ pl:
button_create_and_continue: Create and continue button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'One line for each value' text_custom_field_possible_values_info: 'One line for each value'
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -810,3 +810,4 @@ pt-BR: ...@@ -810,3 +810,4 @@ pt-BR:
label_display: Exibição label_display: Exibição
field_editable: Editável field_editable: Editável
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -795,3 +795,4 @@ pt: ...@@ -795,3 +795,4 @@ pt:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -817,3 +817,4 @@ ro: ...@@ -817,3 +817,4 @@ ro:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -902,3 +902,4 @@ ru: ...@@ -902,3 +902,4 @@ ru:
field_editable: Редактируемый field_editable: Редактируемый
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -775,3 +775,4 @@ sk: ...@@ -775,3 +775,4 @@ sk:
button_create_and_continue: Create and continue button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'One line for each value' text_custom_field_possible_values_info: 'One line for each value'
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -773,3 +773,4 @@ sl: ...@@ -773,3 +773,4 @@ sl:
button_create_and_continue: Create and continue button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'One line for each value' text_custom_field_possible_values_info: 'One line for each value'
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -798,3 +798,4 @@ ...@@ -798,3 +798,4 @@
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -831,3 +831,4 @@ sv: ...@@ -831,3 +831,4 @@ sv:
enumeration_doc_categories: Dokumentkategorier enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_activities: Aktiviteter (tidsuppföljning)
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -774,3 +774,4 @@ th: ...@@ -774,3 +774,4 @@ th:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -811,3 +811,4 @@ tr: ...@@ -811,3 +811,4 @@ tr:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -773,3 +773,4 @@ uk: ...@@ -773,3 +773,4 @@ uk:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -843,3 +843,4 @@ vi: ...@@ -843,3 +843,4 @@ vi:
label_display: Display label_display: Display
field_editable: Editable field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -805,3 +805,4 @@ ...@@ -805,3 +805,4 @@
enumeration_doc_categories: 文件分類 enumeration_doc_categories: 文件分類
enumeration_activities: 活動 (時間追蹤) enumeration_activities: 活動 (時間追蹤)
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -805,3 +805,4 @@ zh: ...@@ -805,3 +805,4 @@ zh:
enumeration_doc_categories: 文档类别 enumeration_doc_categories: 文档类别
enumeration_activities: 活动(时间跟踪) enumeration_activities: 活动(时间跟踪)
setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
...@@ -61,6 +61,11 @@ protocol: ...@@ -61,6 +61,11 @@ protocol:
feeds_limit: feeds_limit:
format: int format: int
default: 15 default: 15
# Maximum size of files that can be displayed
# inline through the file viewer (in KB)
setting_file_max_size_displayed:
format: int
default: 512
diff_max_lines_displayed: diff_max_lines_displayed:
format: int format: int
default: 1500 default: 1500
......
...@@ -53,12 +53,23 @@ class AttachmentsControllerTest < Test::Unit::TestCase ...@@ -53,12 +53,23 @@ class AttachmentsControllerTest < Test::Unit::TestCase
get :show, :id => 5 get :show, :id => 5
assert_response :success assert_response :success
assert_template 'diff' assert_template 'diff'
assert_equal 'text/html', @response.content_type
end end
def test_show_text_file def test_show_text_file
get :show, :id => 4 get :show, :id => 4
assert_response :success assert_response :success
assert_template 'file' assert_template 'file'
assert_equal 'text/html', @response.content_type
end
def test_show_text_file_should_send_if_too_big
Setting.setting_file_max_size_displayed = 512
Attachment.find(4).update_attribute :filesize, 754.kilobyte
get :show, :id => 4
assert_response :success
assert_equal 'application/x-ruby', @response.content_type
end end
def test_show_other def test_show_other
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment