Feature #35462 » 35462-2.patch
| app/controllers/attachments_controller.rb | ||
|---|---|---|
| 225 | 225 |
rescue |
| 226 | 226 |
nil |
| 227 | 227 |
end |
| 228 |
unless klass && klass.reflect_on_association(:attachments)
|
|
| 228 |
unless klass && (klass.reflect_on_association(:attachments) || klass.method_defined?(:attachments))
|
|
| 229 | 229 |
render_404 |
| 230 | 230 |
return |
| 231 | 231 |
end |
| app/controllers/journals_controller.rb | ||
|---|---|---|
| 28 | 28 |
helper :issues |
| 29 | 29 |
helper :custom_fields |
| 30 | 30 |
helper :queries |
| 31 |
helper :attachments |
|
| 31 | 32 |
include QueriesHelper |
| 32 | 33 | |
| 33 | 34 |
def index |
| app/helpers/application_helper.rb | ||
|---|---|---|
| 930 | 930 | |
| 931 | 931 |
# when using an image link, try to use an attachment, if possible |
| 932 | 932 |
attachments = options[:attachments] || [] |
| 933 |
attachments += obj.attachments if obj.respond_to?(:attachments) |
|
| 933 |
if obj.is_a?(Journal) |
|
| 934 |
attachments += obj.journalized.attachments if obj.journalized.respond_to?(:attachments) |
|
| 935 |
else |
|
| 936 |
attachments += obj.attachments if obj.respond_to?(:attachments) |
|
| 937 |
end |
|
| 934 | 938 |
if attachments.present? |
| 935 | 939 |
text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpe|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m| |
| 936 | 940 |
filename, ext, alt, alttext = $1, $2, $3, $4 |
| app/models/journal.rb | ||
|---|---|---|
| 138 | 138 |
end |
| 139 | 139 | |
| 140 | 140 |
def attachments |
| 141 |
journalized.respond_to?(:attachments) ? journalized.attachments : []
|
|
| 141 |
details.select{ |d| d.property == 'attachment' }.map{ |d| Attachment.find_by(:id => d.prop_key) }.compact
|
|
| 142 | 142 |
end |
| 143 | 143 | |
| 144 | 144 |
# Returns a string of css classes |
| app/views/issues/tabs/_history.html.erb | ||
|---|---|---|
| 18 | 18 |
</h4> |
| 19 | 19 | |
| 20 | 20 |
<% if journal.details.any? %> |
| 21 |
<ul class="details"> |
|
| 22 |
<% details_to_strings(journal.visible_details).each do |string| %> |
|
| 23 |
<li><%= string %></li> |
|
| 24 |
<% end %> |
|
| 25 |
</ul> |
|
| 21 |
<div class="note-details"> |
|
| 22 |
<% if journal.attachments.size > 1 %> |
|
| 23 |
<div class="contextual"> |
|
| 24 |
<%= link_to(l(:label_download_all_attachments), |
|
| 25 |
container_attachments_download_path(journal), |
|
| 26 |
:title => l(:label_download_all_attachments), |
|
| 27 |
:class => 'icon-only icon-download') %> |
|
| 28 |
</div> |
|
| 29 |
<% end %> |
|
| 30 |
<ul class="details"> |
|
| 31 |
<% details_to_strings(journal.visible_details).each do |string| %> |
|
| 32 |
<li><%= string %></li> |
|
| 33 |
<% end %> |
|
| 34 |
</ul> |
|
| 35 |
</div> |
|
| 26 | 36 |
<% if Setting.thumbnails_enabled? && (thumbnail_attachments = journal_thumbnail_attachments(journal)).any? %> |
| 27 | 37 |
<div class="thumbnails"> |
| 28 | 38 |
<% thumbnail_attachments.each do |attachment| %> |
| test/helpers/application_helper_test.rb | ||
|---|---|---|
| 182 | 182 |
to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text, :attachments => attachments)}
|
| 183 | 183 |
end |
| 184 | 184 | |
| 185 |
def test_attached_images_on_issue |
|
| 186 |
issue = Issue.generate! |
|
| 187 |
attachment_1 = Attachment.generate!(:file => mock_file_with_options(:original_filename => "attached_on_issue.png"), :container => issue) |
|
| 188 |
journal = issue.init_journal(User.find(2), issue) |
|
| 189 |
attachment_2 = Attachment.generate!(:file => mock_file_with_options(:original_filename => "attached_on_journal.png"), :container => issue) |
|
| 190 |
journal.journalize_attachment(attachment_2, :added) |
|
| 191 | ||
| 192 |
raw = <<~RAW |
|
| 193 |
!attached_on_issue.png! |
|
| 194 |
!attached_on_journal.png! |
|
| 195 |
RAW |
|
| 196 | ||
| 197 |
assert textilizable(raw, :object => journal).include?("<img src=\"/attachments/download/#{attachment_1.id}/attached_on_issue.png\" alt=\"\" />")
|
|
| 198 |
assert textilizable(raw, :object => journal).include?("<img src=\"/attachments/download/#{attachment_2.id}/attached_on_journal.png\" alt=\"\" />")
|
|
| 199 |
end |
|
| 200 | ||
| 185 | 201 |
def test_attached_images_with_textile_and_non_ascii_filename |
| 186 | 202 |
to_test = {
|
| 187 | 203 |
'CAFÉ.JPG' => 'CAF%C3%89.JPG', |
| test/unit/journal_test.rb | ||
|---|---|---|
| 222 | 222 |
visible_details = journal.visible_details(User.find(2)) |
| 223 | 223 |
assert_equal 2, visible_details.size |
| 224 | 224 |
end |
| 225 | ||
| 226 |
def test_attachments |
|
| 227 |
journal = Journal.new |
|
| 228 |
2.times.map{ |i| Attachment.generate!(:file => mock_file_with_options(:original_filename => "image#{i}.png")) }.each do |attachment|
|
|
| 229 |
journal.details << JournalDetail.new(:property => 'attachment', :prop_key => attachment.id, :value => attachment.filename) |
|
| 230 |
end |
|
| 231 | ||
| 232 |
attachments = journal.attachments |
|
| 233 |
assert_equal 2, attachments.size |
|
| 234 |
attachments.each_with_index do |attachment, i| |
|
| 235 |
assert_kind_of Attachment, attachment |
|
| 236 |
assert_equal "image#{i}.png", attachment.filename
|
|
| 237 |
end |
|
| 238 |
end |
|
| 225 | 239 |
end |
- « Previous
- 1
- …
- 3
- 4
- 5
- Next »