diff --git a/app/controllers/cards/closures_controller.rb b/app/controllers/cards/closures_controller.rb index 29dcfd30c..c2df13433 100644 --- a/app/controllers/cards/closures_controller.rb +++ b/app/controllers/cards/closures_controller.rb @@ -7,7 +7,7 @@ class Cards::ClosuresController < ApplicationController end def destroy - @card.reopen + @card.reopen(user: Current.user) render_card_replacement end end diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index a6a25c5b5..2533f834d 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -2,7 +2,7 @@ module EventsHelper def event_columns(event_type, day_timeline) case event_type when "added" - events = day_timeline.events.where(action: "card_published") + events = day_timeline.events.where(action: [ "card_published", "card_reopened" ]) { title: events.count > 0 ? "Added (#{events.count})" : "Added", index: 1, @@ -28,7 +28,7 @@ module EventsHelper case event.action when "card_closed" 3 - when "card_published" + when "card_published", "card_reopened" 1 else 2 @@ -84,6 +84,8 @@ module EventsHelper "#{ event_creator_name(event) } added #{ title }".html_safe when "card_closed" "#{ event_creator_name(event) } closed #{ title }".html_safe + when "card_reopened" + "#{ event_creator_name(event) } reopened #{ title }".html_safe when "card_staged" "#{event_creator_name(event)} moved #{ title } to the #{event.stage_name} stage".html_safe when "card_unstaged" diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb index 53a3a0797..a58f27a62 100644 --- a/app/helpers/notifications_helper.rb +++ b/app/helpers/notifications_helper.rb @@ -12,6 +12,7 @@ module NotificationsHelper case event_notification_action(event) when "card_closed" then "Closed by #{name}" + when "card_reopened" then "Reopened by #{name}" when "card_published" then "Added by #{name}" when "comment_created" then comment_notification_body(event) else name diff --git a/app/models/card/closeable.rb b/app/models/card/closeable.rb index afcdbc53d..33afbfb88 100644 --- a/app/models/card/closeable.rb +++ b/app/models/card/closeable.rb @@ -35,7 +35,12 @@ module Card::Closeable end end - def reopen - closure&.destroy + def reopen(user: Current.user) + if closed? + transaction do + closure&.destroy + track_event :reopened, creator: user + end + end end end diff --git a/app/models/card/eventable/system_commenter.rb b/app/models/card/eventable/system_commenter.rb index bcc48ba85..f07c702c0 100644 --- a/app/models/card/eventable/system_commenter.rb +++ b/app/models/card/eventable/system_commenter.rb @@ -22,6 +22,8 @@ class Card::Eventable::SystemCommenter "#{event.creator.name} moved this to '#{event.stage_name}'." when "card_closed" "Closed as “#{ card.closure.reason }” by #{ event.creator.name }" + when "card_reopened" + "Reopened by #{ event.creator.name }" when "card_title_changed" "#{event.creator.name} changed the title from '#{event.particulars.dig('particulars', 'old_title')}' to '#{event.particulars.dig('particulars', 'new_title')}'." when "card_collection_changed"