From 87c8b14a86cf6c93a092c067862286398e0f0dd9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pierre-Andr=C3=A9=20Boissinot?=
 <pierreandre.boissinot@noesya.coop>
Date: Thu, 27 Feb 2025 12:08:59 +0100
Subject: [PATCH] allow batch unpublish (#2749)

---
 .../admin/communication/websites/posts_controller.rb        | 2 +-
 app/models/concerns/with_publication.rb                     | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/app/controllers/admin/communication/websites/posts_controller.rb b/app/controllers/admin/communication/websites/posts_controller.rb
index dc810268b..5c480a006 100644
--- a/app/controllers/admin/communication/websites/posts_controller.rb
+++ b/app/controllers/admin/communication/websites/posts_controller.rb
@@ -20,7 +20,7 @@ class Admin::Communication::Websites::PostsController < Admin::Communication::We
     target_posts.each do |post|
       l10n = post.localization_for(current_language)
       next unless l10n.present?
-      l10n.publish!
+      is_published ? l10n.publish! : l10n.unpublish!
       post.save_and_sync
     end
     redirect_back fallback_location: admin_communication_website_posts_path,
diff --git a/app/models/concerns/with_publication.rb b/app/models/concerns/with_publication.rb
index 95e5d92e2..e9435e9f0 100644
--- a/app/models/concerns/with_publication.rb
+++ b/app/models/concerns/with_publication.rb
@@ -33,6 +33,12 @@ module WithPublication
     save
   end
 
+  def unpublish!
+    self.published = false
+    self.published_at = nil
+    save
+  end
+
   def draft?
     !published
   end
-- 
GitLab