diff --git a/app/controllers/admin/system_emails_controller.rb b/app/controllers/admin/system_emails_controller.rb
index c7d1c8dd0..d079c171b 100644
--- a/app/controllers/admin/system_emails_controller.rb
+++ b/app/controllers/admin/system_emails_controller.rb
@@ -1,6 +1,6 @@
class Admin::SystemEmailsController < Admin::BaseController
- before_action :load_system_email, only: [:view, :preview_pending]
+ before_action :load_system_email, only: [:view, :preview_pending, :moderate_pending]
def index
@system_emails = {
diff --git a/app/models/proposal_notification.rb b/app/models/proposal_notification.rb
index f0a6850f7..f057b9cb8 100644
--- a/app/models/proposal_notification.rb
+++ b/app/models/proposal_notification.rb
@@ -55,4 +55,9 @@ class ProposalNotification < ActiveRecord::Base
self.update(author_id: self.proposal.author_id) if self.proposal
end
+ def moderate_system_email(moderator)
+ Notification.where(notifiable_type: 'ProposalNotification', notifiable: self).destroy_all
+ Activity.log(moderator, :hide, self)
+ end
+
end
diff --git a/app/views/admin/system_emails/preview_pending/_proposal_notification_digest.html.erb b/app/views/admin/system_emails/preview_pending/_proposal_notification_digest.html.erb
index 7cdd4d66d..273dee0c5 100644
--- a/app/views/admin/system_emails/preview_pending/_proposal_notification_digest.html.erb
+++ b/app/views/admin/system_emails/preview_pending/_proposal_notification_digest.html.erb
@@ -1,33 +1,40 @@
<% if preview.proposal.present? %>
-
-
-
- <%= t("admin.shared.proposal") %>
- <%= link_to preview.proposal.title, proposal_url(preview.proposal) %>
-
-
-
<%= t("admin.shared.title") %>
- <%= link_to preview.title, proposal_url(preview.proposal, anchor: "tab-notifications") %>
+
+
+
+
+ <%= t("admin.shared.proposal") %>
+ <%= link_to preview.proposal.title, proposal_url(preview.proposal) %>
+
+
+ <%= t("admin.shared.title") %>
+ <%= link_to preview.title, proposal_url(preview.proposal, anchor: "tab-notifications") %>
+
+
+ <%= t("admin.shared.author") %>
+ <%= preview.proposal.author&.username || '-' %>
+
+
+ <%= t("admin.shared.created_at") %>
+ <%= l(preview.created_at, format: :datetime) %>
+
-
-
- <%= t("admin.shared.author") %>
- <%= preview.proposal.author&.username || '-' %>
-
-
- <%= t("admin.shared.created_at") %>
- <%= l(preview.created_at, format: :datetime) %>
-
-
-
-
-
-
<%= t("admin.shared.content") %>
-
- <%= preview.body %>
-
+
+
+
<%= t("admin.shared.content") %>
+
+ <%= preview.body %>
+
+
+
+ <%= link_to t("admin.system_emails.preview_pending.moderate_pending"),
+ admin_system_email_moderate_pending_path(system_email_id: 'proposal_notification_digest',
+ id: preview.id),
+ method: :put,
+ class: "button hollow float-right" %>
+
<% end %>
diff --git a/spec/models/proposal_notification_spec.rb b/spec/models/proposal_notification_spec.rb
index 60021d95c..d7ba529c4 100644
--- a/spec/models/proposal_notification_spec.rb
+++ b/spec/models/proposal_notification_spec.rb
@@ -152,5 +152,21 @@ describe ProposalNotification do
end
+ describe "#moderate_system_email" do
+ let(:admin) { create(:administrator) }
+ let(:proposal) { create(:proposal) }
+ let(:proposal_notification) { build(:proposal_notification, proposal: proposal) }
+ let(:notification) { create(:notification, notifiable: proposal_notification) }
+
+ it "removes all notifications related to the proposal notification" do
+ proposal_notification.moderate_system_email(admin.user)
+ expect(Notification.all.count).to be(0)
+ end
+
+ it "records the moderation action in the Activity table" do
+ proposal_notification.moderate_system_email(admin.user)
+ expect(Activity.last.actionable_type).to eq('ProposalNotification')
+ end
+ end
end
end