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"