Feature #42630 » Allow-reactions-to-journals-with-only-property-changes.patch
| app/assets/javascripts/application-legacy.js | ||
|---|---|---|
| 426 | 426 |
tab_content.find('.journal').show();
|
| 427 | 427 |
tab_content.find('.journal:not(.has-notes)').hide();
|
| 428 | 428 |
tab_content.find('.journal .wiki').show();
|
| 429 |
tab_content.find('.journal .contextual .journal-actions').show();
|
|
| 429 |
tab_content.find('.journal .contextual .journal-actions > *').show();
|
|
| 430 | 430 | |
| 431 | 431 |
// always show thumbnails in notes tab |
| 432 | 432 |
var thumbnails = tab_content.find('.journal .thumbnails');
|
| ... | ... | |
| 439 | 439 |
tab_content.find('.journal:not(.has-details)').hide();
|
| 440 | 440 |
tab_content.find('.journal .wiki').hide();
|
| 441 | 441 |
tab_content.find('.journal .thumbnails').hide();
|
| 442 |
tab_content.find('.journal .contextual .journal-actions').hide();
|
|
| 442 |
tab_content.find('.journal .contextual .journal-actions > *').hide();
|
|
| 443 |
// Show reaction button in properties tab |
|
| 444 |
tab_content.find('.journal .contextual .journal-actions .reaction-button-wrapper').show();
|
|
| 443 | 445 |
break; |
| 444 | 446 |
default: |
| 445 | 447 |
tab_content.find('.journal').show();
|
| 446 | 448 |
tab_content.find('.journal .wiki').show();
|
| 447 | 449 |
tab_content.find('.journal .thumbnails').show();
|
| 448 |
tab_content.find('.journal .contextual .journal-actions').show();
|
|
| 450 |
tab_content.find('.journal .contextual .journal-actions > *').show();
|
|
| 449 | 451 |
} |
| 450 | 452 | |
| 451 | 453 |
return false; |
| app/helpers/journals_helper.rb | ||
|---|---|---|
| 41 | 41 |
) |
| 42 | 42 |
end |
| 43 | 43 | |
| 44 |
if journal.notes.present? |
|
| 45 |
links << reaction_button(journal) |
|
| 44 |
links << reaction_button(journal) |
|
| 46 | 45 | |
| 46 |
if journal.notes.present? |
|
| 47 | 47 |
if options[:reply_links] |
| 48 | 48 |
url = quoted_issue_path(issue, :journal_id => journal, :journal_indice => indice) |
| 49 | 49 |
links << quote_reply(url, "#journal-#{journal.id}-notes", icon_only: true)
|
| app/helpers/reactions_helper.rb | ||
|---|---|---|
| 82 | 82 |
end |
| 83 | 83 | |
| 84 | 84 |
def reaction_button_wrapper(object, &) |
| 85 |
tag.span(data: { 'reaction-button-id': reaction_id_for(object) }, &)
|
|
| 85 |
tag.span(class: 'reaction-button-wrapper', data: { 'reaction-button-id': reaction_id_for(object) }, &)
|
|
| 86 | 86 |
end |
| 87 | 87 | |
| 88 | 88 |
def build_reaction_tooltip(visible_user_names, count) |
| test/helpers/journals_helper_test.rb | ||
|---|---|---|
| 51 | 51 |
assert_select_in journal_actions, 'a[title=?][class="icon-only icon-edit"]', 'Edit' |
| 52 | 52 |
assert_select_in journal_actions, 'div[class="drdn-items"] a[class="icon icon-del"]' |
| 53 | 53 |
assert_select_in journal_actions, 'div[class="drdn-items"] a[class="icon icon-copy-link"]' |
| 54 |
assert_select_in journal_actions, 'span.reaction-button-wrapper' |
|
| 55 |
end |
|
| 56 | ||
| 57 |
def test_render_journal_actions_with_journal_without_notes |
|
| 58 |
User.current = User.find(1) |
|
| 59 |
issue = Issue.find(1) |
|
| 60 |
issue.journals.first.update!(notes: '') |
|
| 61 | ||
| 62 |
journals = issue.visible_journals_with_index |
|
| 63 | ||
| 64 |
journal_actions = render_journal_actions(issue, journals.first, reply_links: true) |
|
| 65 | ||
| 66 |
assert_select_in journal_actions, 'span.reaction-button-wrapper' |
|
| 67 |
assert_select_in journal_actions, 'span.drdn' |
|
| 68 | ||
| 69 |
assert_select_in journal_actions, 'a[class="icon-comment"]', false |
|
| 70 |
assert_select_in journal_actions, 'a[class="icon-edit"]', false |
|
| 54 | 71 |
end |
| 55 | 72 | |
| 56 | 73 |
def test_journal_thumbnail_attachments_should_be_in_the_same_order_as_the_journal_details |
| test/helpers/reactions_helper_test.rb | ||
|---|---|---|
| 172 | 172 |
end |
| 173 | 173 |
tooltip = 'Dave Lopper, John Smith, and Redmine Admin' |
| 174 | 174 | |
| 175 |
assert_select_in result, 'span[data-reaction-button-id=?]', 'reaction_issue_1' do |
|
| 175 |
assert_select_in result, 'span.reaction-button-wrapper[data-reaction-button-id=?]', 'reaction_issue_1' do
|
|
| 176 | 176 |
href = reaction_path(issue.reaction_detail.user_reaction, object_type: 'Issue', object_id: 1) |
| 177 | 177 | |
| 178 | 178 |
assert_select 'a.icon.reaction-button.reacted[href=?]', href do |
| ... | ... | |
| 194 | 194 |
end |
| 195 | 195 |
tooltip = 'Dave Lopper, John Smith, and Redmine Admin' |
| 196 | 196 | |
| 197 |
assert_select_in result, 'span[data-reaction-button-id=?]', 'reaction_issue_1' do |
|
| 197 |
assert_select_in result, 'span.reaction-button-wrapper[data-reaction-button-id=?]', 'reaction_issue_1' do
|
|
| 198 | 198 |
href = reactions_path(object_type: 'Issue', object_id: 1) |
| 199 | 199 | |
| 200 | 200 |
assert_select 'a.icon.reaction-button[href=?]', href do |
| test/system/reactions_test.rb | ||
|---|---|---|
| 113 | 113 |
end |
| 114 | 114 |
end |
| 115 | 115 | |
| 116 |
def test_reaction_button_is_visible_on_property_changes_tab |
|
| 117 |
# Create a journal with no notes |
|
| 118 |
journal_without_notes = Journal.generate!(journalized: issues(:issues_001), notes: '', details: [JournalDetail.new]) |
|
| 119 | ||
| 120 |
log_user('jsmith', 'jsmith')
|
|
| 121 | ||
| 122 |
visit '/issues/1?tab=properties' |
|
| 123 | ||
| 124 |
# Scroll to the history content |
|
| 125 |
click_link '#1' |
|
| 126 | ||
| 127 |
assert_selector '#tab-properties.selected' |
|
| 128 | ||
| 129 |
within('#change-1') do
|
|
| 130 |
assert_selector 'a.reaction-button' |
|
| 131 | ||
| 132 |
assert_no_selector 'a.icon-comment' |
|
| 133 |
assert_no_selector 'span.drdn' |
|
| 134 |
end |
|
| 135 |
within("#change-#{journal_without_notes.id}") do
|
|
| 136 |
assert_selector 'a.reaction-button' |
|
| 137 | ||
| 138 |
assert_no_selector '.drdn' |
|
| 139 |
end |
|
| 140 | ||
| 141 |
click_link 'History' |
|
| 142 | ||
| 143 |
within('#change-1') do
|
|
| 144 |
assert_selector 'a.reaction-button' |
|
| 145 | ||
| 146 |
assert_selector 'a.icon-comment' |
|
| 147 |
assert_selector 'span.drdn' |
|
| 148 |
end |
|
| 149 |
within("#change-#{journal_without_notes.id}") do
|
|
| 150 |
assert_selector 'a.reaction-button' |
|
| 151 |
assert_selector 'span.drdn' |
|
| 152 | ||
| 153 |
assert_no_selector 'a.icon-comment' |
|
| 154 |
end |
|
| 155 |
end |
|
| 156 | ||
| 116 | 157 |
private |
| 117 | 158 | |
| 118 | 159 |
def assert_reaction_add_and_remove(reaction_button, expected_subject) |