Allow reactions on journals with property changes only (#42630).

Patch by Katsuya HIDAKA (user:hidakatsuya).


git-svn-id: https://svn.redmine.org/redmine/trunk@23781 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2025-05-17 08:46:25 +00:00
parent 4b42d68842
commit 8d1ad3f239
6 changed files with 68 additions and 8 deletions

View File

@@ -426,7 +426,7 @@ function showIssueHistory(journal, url) {
tab_content.find('.journal').show();
tab_content.find('.journal:not(.has-notes)').hide();
tab_content.find('.journal .wiki').show();
tab_content.find('.journal .contextual .journal-actions').show();
tab_content.find('.journal .contextual .journal-actions > *').show();
// always show thumbnails in notes tab
var thumbnails = tab_content.find('.journal .thumbnails');
@@ -439,13 +439,15 @@ function showIssueHistory(journal, url) {
tab_content.find('.journal:not(.has-details)').hide();
tab_content.find('.journal .wiki').hide();
tab_content.find('.journal .thumbnails').hide();
tab_content.find('.journal .contextual .journal-actions').hide();
tab_content.find('.journal .contextual .journal-actions > *').hide();
// Show reaction button in properties tab
tab_content.find('.journal .contextual .journal-actions .reaction-button-wrapper').show();
break;
default:
tab_content.find('.journal').show();
tab_content.find('.journal .wiki').show();
tab_content.find('.journal .thumbnails').show();
tab_content.find('.journal .contextual .journal-actions').show();
tab_content.find('.journal .contextual .journal-actions > *').show();
}
return false;

View File

@@ -41,9 +41,9 @@ module JournalsHelper
)
end
if journal.notes.present?
links << reaction_button(journal)
links << reaction_button(journal)
if journal.notes.present?
if options[:reply_links]
url = quoted_issue_path(issue, :journal_id => journal, :journal_indice => indice)
links << quote_reply(url, "#journal-#{journal.id}-notes", icon_only: true)

View File

@@ -82,7 +82,7 @@ module ReactionsHelper
end
def reaction_button_wrapper(object, &)
tag.span(data: { 'reaction-button-id': reaction_id_for(object) }, &)
tag.span(class: 'reaction-button-wrapper', data: { 'reaction-button-id': reaction_id_for(object) }, &)
end
def build_reaction_tooltip(visible_user_names, count)

View File

@@ -51,6 +51,23 @@ 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"]'
assert_select_in journal_actions, 'div[class="drdn-items"] a[class="icon icon-copy-link"]'
assert_select_in journal_actions, 'span.reaction-button-wrapper'
end
def test_render_journal_actions_with_journal_without_notes
User.current = User.find(1)
issue = Issue.find(1)
issue.journals.first.update!(notes: '')
journals = issue.visible_journals_with_index
journal_actions = render_journal_actions(issue, journals.first, reply_links: true)
assert_select_in journal_actions, 'span.reaction-button-wrapper'
assert_select_in journal_actions, 'span.drdn'
assert_select_in journal_actions, 'a[class="icon-comment"]', false
assert_select_in journal_actions, 'a[class="icon-edit"]', false
end
def test_journal_thumbnail_attachments_should_be_in_the_same_order_as_the_journal_details

View File

@@ -172,7 +172,7 @@ class ReactionsHelperTest < ActionView::TestCase
end
tooltip = 'Dave Lopper, John Smith, and Redmine Admin'
assert_select_in result, 'span[data-reaction-button-id=?]', 'reaction_issue_1' do
assert_select_in result, 'span.reaction-button-wrapper[data-reaction-button-id=?]', 'reaction_issue_1' do
href = reaction_path(issue.reaction_detail.user_reaction, object_type: 'Issue', object_id: 1)
assert_select 'a.icon.reaction-button.reacted[href=?]', href do
@@ -194,7 +194,7 @@ class ReactionsHelperTest < ActionView::TestCase
end
tooltip = 'Dave Lopper, John Smith, and Redmine Admin'
assert_select_in result, 'span[data-reaction-button-id=?]', 'reaction_issue_1' do
assert_select_in result, 'span.reaction-button-wrapper[data-reaction-button-id=?]', 'reaction_issue_1' do
href = reactions_path(object_type: 'Issue', object_id: 1)
assert_select 'a.icon.reaction-button[href=?]', href do

View File

@@ -113,6 +113,47 @@ class ReactionsSystemTest < ApplicationSystemTestCase
end
end
def test_reaction_button_is_visible_on_property_changes_tab
# Create a journal with no notes
journal_without_notes = Journal.generate!(journalized: issues(:issues_001), notes: '', details: [JournalDetail.new])
log_user('jsmith', 'jsmith')
visit '/issues/1?tab=properties'
# Scroll to the history content
click_link '#1'
assert_selector '#tab-properties.selected'
within('#change-1') do
assert_selector 'a.reaction-button'
assert_no_selector 'a.icon-comment'
assert_no_selector 'span.drdn'
end
within("#change-#{journal_without_notes.id}") do
assert_selector 'a.reaction-button'
assert_no_selector '.drdn'
end
click_link 'History'
within('#change-1') do
assert_selector 'a.reaction-button'
assert_selector 'a.icon-comment'
assert_selector 'span.drdn'
end
within("#change-#{journal_without_notes.id}") do
assert_selector 'a.reaction-button'
assert_selector 'span.drdn'
assert_no_selector 'a.icon-comment'
end
end
private
def assert_reaction_add_and_remove(reaction_button, expected_subject)