From 7152e5b9df3b0efd4b3db0f9b9ab1b0efd7e8185 Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Tue, 9 Mar 2021 14:21:55 +0000 Subject: [PATCH] The order of thumbnails in journals does not match the order of file name list (#33459). Patch by Mizuki ISHIKAWA. git-svn-id: http://svn.redmine.org/redmine/trunk@20768 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/journals_helper.rb | 2 +- test/helpers/journals_helper_test.rb | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/helpers/journals_helper.rb b/app/helpers/journals_helper.rb index a6cb97632..4c3d410ec 100644 --- a/app/helpers/journals_helper.rb +++ b/app/helpers/journals_helper.rb @@ -22,7 +22,7 @@ module JournalsHelper # Returns the attachments of a journal that are displayed as thumbnails def journal_thumbnail_attachments(journal) ids = journal.details.select {|d| d.property == 'attachment' && d.value.present?}.map(&:prop_key) - ids.any? ? Attachment.where(:id => ids).select(&:thumbnailable?) : [] + ids.any? ? Attachment.where(:id => ids).select(&:thumbnailable?).sort_by{|a| ids.index(a.id.to_s)} : [] end # Returns the action links for an issue journal diff --git a/test/helpers/journals_helper_test.rb b/test/helpers/journals_helper_test.rb index 218b9498a..a75992c41 100644 --- a/test/helpers/journals_helper_test.rb +++ b/test/helpers/journals_helper_test.rb @@ -60,4 +60,30 @@ class JournalsHelperTest < Redmine::HelperTest assert_select_in journal_actions, 'a[title=?][class="icon-only icon-edit"]', 'Edit' assert_select_in journal_actions, 'div[class="drdn-items"] a[class="icon icon-del"]' end + + def test_journal_thumbnail_attachments_should_be_in_the_same_order_as_the_journal_details + skip unless convert_installed? + set_tmp_attachments_directory + issue = Issue.generate! + + # Thumbnails should be displayed in the same order as Journal.detail, not in attachment id order. + attachment1 = Attachment.generate!(:file => mock_file_with_options(:original_filename => 'image1.png'), :author => User.find(1)) + attachment2 = Attachment.generate!(:file => mock_file_with_options(:original_filename => 'image2.png'), :author => User.find(1)) + journal = Journal.create!(:journalized => issue, :user_id => 1) + JournalDetail.create!( + :journal => journal, :property => 'attachment', + :prop_key => attachment2.id.to_s, + :value => 'image2.png' + ) + JournalDetail.create!( + :journal => journal, :property => 'attachment', + :prop_key => attachment1.id.to_s, + :value => 'image1.png' + ) + journal.reload + thumbnails = journal_thumbnail_attachments(journal) + assert_equal 2, thumbnails.count + assert_equal 2, journal.details.count + assert_equal journal.details.map(&:value), thumbnails.map(&:filename) + end end