@@ -517,6 +517,19 module Redmine | |||||
517 | end |
|
517 | end | |
518 | txt |
|
518 | txt | |
519 | end |
|
519 | end | |
|
520 | ||||
|
521 | def self.attach(attachments, filename, encoding) | |||
|
522 | filename_utf8 = Redmine::CodesetUtil.to_utf8(filename, encoding) | |||
|
523 | atta = nil | |||
|
524 | if filename_utf8 =~ /^[^\/"]+\.(gif|jpg|jpe|jpeg|png)$/i | |||
|
525 | atta = Attachment.latest_attach(attachments, filename_utf8) | |||
|
526 | end | |||
|
527 | if atta && atta.readable? && atta.visible? | |||
|
528 | return atta | |||
|
529 | else | |||
|
530 | return nil | |||
|
531 | end | |||
|
532 | end | |||
520 | end |
|
533 | end | |
521 | end |
|
534 | end | |
522 | end |
|
535 | end |
@@ -208,3 +208,29 attachments_017: | |||||
208 | filename: testfile.PNG |
|
208 | filename: testfile.PNG | |
209 | filesize: 3582 |
|
209 | filesize: 3582 | |
210 | author_id: 2 |
|
210 | author_id: 2 | |
|
211 | attachments_018: | |||
|
212 | content_type: image/png | |||
|
213 | downloads: 0 | |||
|
214 | created_on: 2011-01-23 16:14:50 +09:00 | |||
|
215 | disk_filename: 101123161450_testfile_1.png | |||
|
216 | container_id: 14 | |||
|
217 | digest: 8e0294de2441577c529f170b6fb8f638 | |||
|
218 | id: 18 | |||
|
219 | container_type: Issue | |||
|
220 | description: "" | |||
|
221 | filename: testγγΉγ.png | |||
|
222 | filesize: 2654 | |||
|
223 | author_id: 2 | |||
|
224 | attachments_019: | |||
|
225 | content_type: image/png | |||
|
226 | downloads: 0 | |||
|
227 | created_on: 2011-02-23 16:14:50 +09:00 | |||
|
228 | disk_filename: 101223161450_testfile_2.png | |||
|
229 | container_id: 14 | |||
|
230 | digest: 6bc2963e8d7ea0d3e68d12d1fba3d6ca | |||
|
231 | id: 19 | |||
|
232 | container_type: Issue | |||
|
233 | description: "" | |||
|
234 | filename: TestγγΉγ.PNG | |||
|
235 | filesize: 3582 | |||
|
236 | author_id: 2 |
@@ -19,6 +19,8 require File.expand_path('../../../../../test_helper', __FILE__) | |||||
19 | require 'iconv' |
|
19 | require 'iconv' | |
20 |
|
20 | |||
21 | class PdfTest < ActiveSupport::TestCase |
|
21 | class PdfTest < ActiveSupport::TestCase | |
|
22 | fixtures :users, :projects, :roles, :members, :member_roles, | |||
|
23 | :enabled_modules, :issues, :trackers, :attachments | |||
22 |
|
24 | |||
23 | def test_fix_text_encoding_nil |
|
25 | def test_fix_text_encoding_nil | |
24 | assert_equal '', Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(nil, "UTF-8") |
|
26 | assert_equal '', Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(nil, "UTF-8") | |
@@ -87,4 +89,39 class PdfTest < ActiveSupport::TestCase | |||||
87 | assert_equal "Texte encod? en ISO-8859-1", txt_1 |
|
89 | assert_equal "Texte encod? en ISO-8859-1", txt_1 | |
88 | assert_equal "?a?b?c?d?e test", txt_2 |
|
90 | assert_equal "?a?b?c?d?e test", txt_2 | |
89 | end |
|
91 | end | |
|
92 | ||||
|
93 | def test_attach | |||
|
94 | Attachment.storage_path = "#{Rails.root}/test/fixtures/files" | |||
|
95 | ||||
|
96 | str2 = "\x83e\x83X\x83g" | |||
|
97 | str2.force_encoding("ASCII-8BIT") if str2.respond_to?(:force_encoding) | |||
|
98 | encoding = ( RUBY_PLATFORM == 'java' ? "SJIS" : "CP932" ) | |||
|
99 | ||||
|
100 | a1 = Attachment.find(17) | |||
|
101 | a2 = Attachment.find(19) | |||
|
102 | ||||
|
103 | User.current = User.find(1) | |||
|
104 | assert a1.readable? | |||
|
105 | assert a1.visible? | |||
|
106 | assert a2.readable? | |||
|
107 | assert a2.visible? | |||
|
108 | ||||
|
109 | aa1 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "Testfile.PNG", "UTF-8") | |||
|
110 | assert_equal 17, aa1.id | |||
|
111 | aa2 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "test#{str2}.png", encoding) | |||
|
112 | assert_equal 19, aa2.id | |||
|
113 | ||||
|
114 | User.current = nil | |||
|
115 | assert a1.readable? | |||
|
116 | assert (! a1.visible?) | |||
|
117 | assert a2.readable? | |||
|
118 | assert (! a2.visible?) | |||
|
119 | ||||
|
120 | aa1 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "Testfile.PNG", "UTF-8") | |||
|
121 | assert_equal nil, aa1 | |||
|
122 | aa2 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "test#{str2}.png", encoding) | |||
|
123 | assert_equal nil, aa2 | |||
|
124 | ||||
|
125 | set_tmp_attachments_directory | |||
|
126 | end | |||
90 | end |
|
127 | end |
General Comments 0
You need to be logged in to leave comments.
Login now