diff --git a/app/models/application_record.rb b/app/models/application_record.rb index fc247cf5201df486db8442e6e3559b16c411b1a1..9919dcb3c935152c8615d00c82ece53357e49dc3 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 077d6439358c7960abadcd79136252f531851eba..3c35f16929f368958dcd1a6a8114738ce646b702 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 f2161552b92c157153c674275dc94bfeb6928808..54d2d0bce66f0318c2dec677370dee0c6e66990a 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.