From 934ced6efa608ae6d62d684a3597fd2a244ea8b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com>
Date: Thu, 19 Jan 2023 11:56:22 +0100
Subject: [PATCH] fix + duplicate

---
 .../communication/websites/pages_controller.rb   |  2 +-
 app/models/communication/website/page.rb         | 16 ++++++++++++----
 .../admin/application/i18n/_widget.html.erb      |  2 +-
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/app/controllers/admin/communication/websites/pages_controller.rb b/app/controllers/admin/communication/websites/pages_controller.rb
index c2bd3d985..1bedef391 100644
--- a/app/controllers/admin/communication/websites/pages_controller.rb
+++ b/app/controllers/admin/communication/websites/pages_controller.rb
@@ -52,7 +52,7 @@ class Admin::Communication::Websites::PagesController < Admin::Communication::We
       # If not found, duplicate the current page (with blocks and all) for given language
       @translation ||= @page.duplicate!(language_id: language.id)
       # Redirect to the translation
-      redirect_to [:admin @translation]
+      redirect_to [:admin, @translation.becomes(@translation.class.base_class)]
     end
   end
 
diff --git a/app/models/communication/website/page.rb b/app/models/communication/website/page.rb
index 7e6bf6c4c..f7bef5b8c 100644
--- a/app/models/communication/website/page.rb
+++ b/app/models/communication/website/page.rb
@@ -148,13 +148,21 @@ class Communication::Website::Page < ApplicationRecord
       original_id: self.id,
       github_path: nil,
       published: false,
-      published_at: nil,
       **new_attributes
     )
+    duplicate.featured_image.attach(
+      io: URI.open(featured_image.url),
+      filename: featured_image.filename.to_s,
+      content_type: featured_image.content_type
+    ) if featured_image.attached?
     duplicate.save
-    # TODO:
-    # Dupliquer les blocs
-    # Dupliquer le featured image
+
+    blocks.ordered.each do |block|
+      block_duplicate = block.dup
+      block_duplicate.about = duplicate
+      block_duplicate.save
+    end
+    duplicate
   end
 
   protected
diff --git a/app/views/admin/application/i18n/_widget.html.erb b/app/views/admin/application/i18n/_widget.html.erb
index a4223335b..9f3419b30 100644
--- a/app/views/admin/application/i18n/_widget.html.erb
+++ b/app/views/admin/application/i18n/_widget.html.erb
@@ -12,7 +12,7 @@
       <% about.website.languages.each do |language| %>
         <% next if language.id == about.language_id %>
         <li>
-          <%= link_to t("languages.#{language.iso_code}"), [:translate, :admin, about, iso_code: language.iso_code] %>
+          <%= link_to t("languages.#{language.iso_code}"), [:translate, :admin, about.becomes(about.class.base_class), iso_code: language.iso_code] %>
         </li>
       <% end %>
     </ol>
-- 
GitLab