diff --git a/app/helpers/journals_helper.rb b/app/helpers/journals_helper.rb index dfe729506..d6d6ec4e9 100644 --- a/app/helpers/journals_helper.rb +++ b/app/helpers/journals_helper.rb @@ -18,6 +18,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 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?) : [] + end + def render_notes(issue, journal, options={}) content = '' editable = User.current.logged? && (User.current.allowed_to?(:edit_issue_notes, issue.project) || (journal.user == User.current && User.current.allowed_to?(:edit_own_issue_notes, issue.project))) diff --git a/app/views/issues/_history.html.erb b/app/views/issues/_history.html.erb index fc4593ab8..993dfee3c 100644 --- a/app/views/issues/_history.html.erb +++ b/app/views/issues/_history.html.erb @@ -13,6 +13,13 @@
  • <%= string %>
  • <% end %> + <% if Setting.thumbnails_enabled? && (thumbnail_attachments = journal_thumbnail_attachments(journal)).any? %> +
    + <% thumbnail_attachments.each do |attachment| %> +
    <%= thumbnail_tag(attachment) %>
    + <% end %> +
    + <% end %> <% end %> <%= render_notes(issue, journal, :reply_links => reply_links) unless journal.notes.blank? %> diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index f134fdf66..7c9306375 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -599,7 +599,8 @@ div.attachments span.author { font-size: 0.9em; color: #888; } div.thumbnails {margin-top:0.6em;} div.thumbnails div {background:#fff;border:2px solid #ddd;display:inline-block;margin-right:2px;} -div.thumbnails img {margin: 3px;} +div.thumbnails img {margin: 3px; vertical-align: middle;} +#history div.thumbnails {margin-left: 2em;} p.other-formats { text-align: right; font-size:0.9em; color: #666; } .other-formats span + span:before { content: "| "; } diff --git a/test/unit/helpers/journals_helper_test.rb b/test/unit/helpers/journals_helper_test.rb new file mode 100644 index 000000000..eb3b22264 --- /dev/null +++ b/test/unit/helpers/journals_helper_test.rb @@ -0,0 +1,48 @@ +# Redmine - project management software +# Copyright (C) 2006-2015 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 +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../../test_helper', __FILE__) + +class JournalsHelperTest < ActionView::TestCase + include JournalsHelper + + fixtures :projects, :trackers, :issue_statuses, :issues, + :enumerations, :issue_categories, + :projects_trackers, + :users, :roles, :member_roles, :members, + :enabled_modules, + :custom_fields, + :attachments, + :versions + + def test_journal_thumbnail_attachments_should_return_thumbnailable_attachments + issue = Issue.generate! + + journal = new_record(Journal) do + issue.init_journal(User.find(1)) + issue.attachments << Attachment.new(:file => mock_file_with_options(:original_filename => 'image.png'), :author => User.find(1)) + issue.attachments << Attachment.new(:file => mock_file_with_options(:original_filename => 'foo'), :author => User.find(1)) + issue.save + end + assert_equal 2, journal.details.count + + thumbnails = journal_thumbnail_attachments(journal) + assert_equal 1, thumbnails.count + assert_kind_of Attachment, thumbnails.first + assert_equal 'image.png', thumbnails.first.filename + end +end