From ce9948b9039b516145384740647e165a39012f87 Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Thu, 10 Feb 2022 17:03:31 +0100
Subject: [PATCH] done

---
 app/models/application_record.rb              | 14 +++----------
 .../communication/website/posts/show.html.erb |  2 +-
 docs/communication/wysiwyg.md                 | 20 +++++++++----------
 3 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/app/models/application_record.rb b/app/models/application_record.rb
index fc247cf52..9919dcb3c 100644
--- a/app/models/application_record.rb
+++ b/app/models/application_record.rb
@@ -4,18 +4,10 @@ class ApplicationRecord < ActiveRecord::Base
   # TODO put that in summernote-rails
 
   # https://github.com/rails/rails/blob/b961af3345fe2f9e492ba1e5424c2ceb75ac6ead/actiontext/lib/action_text/attribute.rb#L4
+  # https://github.com/rails/rails/blob/b961af3345fe2f9e492ba1e5424c2ceb75ac6ead/actiontext/lib/action_text/content.rb#L121
   def self.has_summernote(name)
     class_eval <<-CODE, __FILE__, __LINE__ + 1
-      def #{name}
-        value = attributes['#{name}']
-        actiontext = ActionText::Content.new value
-        actiontext.to_s
-      end
-
-      def #{name}=(value)
-        actiontext = ActionText::Content.new value
-        self.attributes['#{name}'] = actiontext.to_html
-      end
+      serialize :#{name}, ActionText::Content
     CODE
   end
 
@@ -29,7 +21,7 @@ class ApplicationRecord < ActiveRecord::Base
 
   def convert_to_summernote
     @@summernote_fields.each do |field|
-      self["#{field}_new"] = send(field).body.to_html
+      self.attributes["#{field}_new"] = send(field).body.to_html
                                         .gsub('<div>', '<p>')
                                         .gsub('</div>', '</p>')
                                         .gsub('<strong>', '<b>')
diff --git a/app/views/admin/communication/website/posts/show.html.erb b/app/views/admin/communication/website/posts/show.html.erb
index 077d64393..3c35f1692 100644
--- a/app/views/admin/communication/website/posts/show.html.erb
+++ b/app/views/admin/communication/website/posts/show.html.erb
@@ -14,7 +14,7 @@
           <h3 class="h5 mt-4"><%= Communication::Website::Post.human_attribute_name('text') %></h3>
           <%= @post.text %>
           <hr>
-          <pre><%= @post.text_new %></pre>
+          <pre><%= @post.text_new.to_html %></pre>
         </div>
       </div>
     </div>
diff --git a/docs/communication/wysiwyg.md b/docs/communication/wysiwyg.md
index f2161552b..54d2d0bce 100644
--- a/docs/communication/wysiwyg.md
+++ b/docs/communication/wysiwyg.md
@@ -87,18 +87,18 @@ A l'édition, la balise est "remplie" avant affichage, pour avoir une preview.
 A l'enregistrement, la balise est vidée.
 
 Etapes normales :
-1. A l'import d'une image, ajouter l'action-text-attachement autour
-2. A l'enregistrement, déshydrater les action-text-attachements
-3. A l'édition, réhydrater les action-text-attachements
-4. Après l'enregistrement mettre à jour les blobs attachés à l'objet parent (le post, par exemple)
+-[ ] A l'import d'une image, ajouter l'action-text-attachement autour
+-[x] A l'enregistrement, déshydrater les action-text-attachements
+-[x] A l'édition, réhydrater les action-text-attachements
+-[ ] Après l'enregistrement mettre à jour les blobs attachés à l'objet parent (le post, par exemple)
 
 Etapes de migration :
-1. Sauvegarder tous les objets à migrer (rails app:fix)
-2. A la sauvegarde, transformer le markup Trix en markup Summernote (application_record)
-3. Enlever les scripts de l'application_record
-4. Supprimer les champs ActionText dans les modèles
-5. Supprimer la table d'ActionText
-6. Renommer les champs en enlevant _new
+-[x] A la sauvegarde, transformer le markup Trix en markup Summernote (application_record)
+-[ ] Sauvegarder tous les objets à migrer (rails app:fix)
+-[ ] Enlever les scripts de l'application_record
+-[ ] Supprimer les champs ActionText dans les modèles
+-[ ] Supprimer la table d'ActionText
+-[ ] Renommer les champs en enlevant _new
 
 Si un programme a 5 champs summernote avec 3 images dans chaque champ, cela fait 15 attachments à lier au programme.
 Si on enlève une image d'un champ, il faut mettre à jour la liste pour avoir les 14 bons attachments.
-- 
GitLab