Projet

Général

Profil

Bug #9839

Activer le ckeditor pour le contenu des champs de type "commentaire"

Ajouté par Frédéric Péters il y a environ 8 ans. Mis à jour il y a environ 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
02 février 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Fichiers

Révisions associées

Révision 7c071d52 (diff)
Ajouté par Frédéric Péters il y a environ 8 ans

misc: use wysiwyg widgets for comments field (#9839)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 8 ans

Rapidement fait pendant la réunion hier mais à vérifier, compléter de tests, etc.

--- a/wcs/fields.py
+++ b/wcs/fields.py
@@ -494,8 +494,12 @@ class CommentField(Field):
         pass

     def fill_admin_form(self, form):
-        form.add(TextWidget, 'label', title = _('Label'), value = self.label,
-                required = True, cols = 70, rows = 3, render_br = False)
+        if self.label and not self.label.startswith('<') and '\n\n' in self.label:
+            form.add(TextWidget, 'label', title=_('Label'), value=self.label,
+                    required=True, cols=70, rows=3, render_br=False)
+        else:
+            form.add(WysiwygTextWidget, 'label', title=_('Label'), value=self.label,
+                    required=True)
         form.add(StringWidget, 'extra_css_class', title = _('Extra classes for CSS styling'),
                 value=self.extra_css_class, size=30, advanced=(not self.extra_css_class))
#2

Mis à jour par Frédéric Péters il y a environ 8 ans

#3

Mis à jour par Thomas Noël il y a environ 8 ans

Si tout le monde est bien conscient que cela risque de faire "exploser" les commentaires qui avait été rédigés avec du HTML (ckeditor ayant fortement tendance à nettoyer le HTML à sa façon), je suis ok.

Je serais d'avis de faire un tour des champs commentaires sur notre prod, quand même.

#4

Mis à jour par Frédéric Péters il y a environ 8 ans

Ça ne va rien faire exploser de manière spontanée. À l'édition d'un champ commentaire dont l'HTML serait défectueux, celui-ci sera d'abord remis d'aplomb et ça correspondra au rendu DOM qui était de toute façon déterminé par le navigateur.

exemple : <p>comm<p>hello<li>TOTO donnera <p>comm</p><p>hello</p><ul><li>TOTO</li></ul>.

Ce qui ne sera plus possible, par contre, c'est vrai, c'est commencer de l'HTML dans un premier champ commentaire et le terminer dans un second; genre un premier je mets <div style="background: red";"> et un autre je mets </div>. Si on veut pouvoir continuer à faire ça, on doit modifier la détection sur l'usage du ckeditor pour l'activer uniquement si les balises sont correctement balancées.

On a le temps de discuter, je voudrais de toute façon d'abord avoir #9837.

#5

Mis à jour par Thomas Noël il y a environ 8 ans

(note quand même : je pense aussi aux commentaires avec des [if-any ...] qui risquent de devenir un peu moins clairs, faudra quand même bien tester tout ça)

#6

Mis à jour par Frédéric Péters il y a environ 8 ans

On peut aussi ne pas activer le ckeditor si on voit un [.

#7

Mis à jour par Frédéric Péters il y a environ 8 ans

Frédéric Péters a écrit :

On peut aussi ne pas activer le ckeditor si on voit un [.

Ce qui est sans doute excessif, mettons plutôt, si on voit un [if

#8

Mis à jour par Thomas Noël il y a environ 8 ans

pendant qu'on y est : [is, [if et [for ... ou bien plus bêtement [end] ?

#9

Mis à jour par Thomas Noël il y a environ 8 ans

  • Version cible mis à v1.33
#11

Mis à jour par Frédéric Péters il y a environ 8 ans

Je viens de faire l'inventaire de la prod, il n'y a pas d'utilisation d'html divisé sur deux champs. (ma méthode : regarder ce qui commence par un < mais ne finit pas par un >, les résultats sont du genre <strong>Important : </strong>bla bla bla.

#12

Mis à jour par Thomas Noël il y a environ 8 ans

Du coup je ne sais plus quoi penser ;)

#13

Mis à jour par Thomas Noël il y a environ 8 ans

Ack

#14

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Statut changé de En cours à Résolu (à déployer)
commit 7c071d5248a512ce14fd668fd09dc203d7c0be1c
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Thu Feb 4 17:52:14 2016 +0100

    misc: use wysiwyg widgets for comments field (#9839)
#15

Mis à jour par Thomas Noël il y a environ 8 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#16

Mis à jour par Thomas Noël il y a environ 8 ans

Je crois qu'on s'est trompé, le wysiwyg reste quand il y a un [end]

Test qui ne passe pas:

diff --git a/tests/test_admin_pages.py b/tests/test_admin_pages.py
index 0847a37..8ca7592 100644
--- a/tests/test_admin_pages.py
+++ b/tests/test_admin_pages.py
@@ -986,6 +986,13 @@ def test_form_edit_comment_field(pub):
     resp = app.get('/backoffice/forms/1/fields/1/')
     assert 'WysiwygTextWidget' in resp.body

+    # starting with a < but with ezt
+    formdef.fields = [fields.CommentField(id='1', type='comment',
+        label='<p>a comment [if-any test]with ezt[end]</p>')]
+    formdef.store()
+    resp = app.get('/backoffice/forms/1/fields/1/')
+    assert 'WysiwygTextWidget' not in resp.body
+
 def test_form_legacy_int_id(pub):
     create_superuser(pub)
     create_role()

Formats disponibles : Atom PDF