Project

General

Profile

Development #36620

Permettre l'interpretation des gabari dans les champs titre et sous-titre

Added by Laurent Séguin 2 months ago. Updated 2 months ago.

Status:
Solution déployée
Priority:
Normal
Target version:
-
Start date:
02 Oct 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Afin d'éviter d'avoir à contourner avec un champ commentaire pour mettre un <hx>titre</hx>

0001-fields-render-template-for-title-and-subtitle-36620.patch View (3.06 KB) Lauréline Guerin, 03 Oct 2019 11:44 AM

0001-fields-render-template-for-title-and-subtitle-36620.patch View (8.27 KB) Lauréline Guerin, 03 Oct 2019 03:01 PM

0001-fields-render-template-for-title-and-subtitle-36620.patch View (8.6 KB) Lauréline Guerin, 04 Oct 2019 09:12 AM

Associated revisions

Revision c835c345 (diff)
Added by Lauréline Guérin 2 months ago

fields: render template for title and subtitle (#36620)

History

#1 Updated by Frédéric Péters 2 months ago

C'est quoi l'endroit qui demanderait un tel titre ?

#2 Updated by Laurent Séguin 2 months ago

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

C'est quoi l'endroit qui demanderait un tel titre ?

Cas typique :
  • Page 1 : tu demandes les prénoms, noms de deux personnes (les deux parents, le président et le trésorier d'une asso, etc.)
  • Page 2 : tu demandes des informations complémentaires sur ces personnes
    • <h3>Informations complémentaires pour {{form_var_prenom_personne1}} {{form_var_nom_personne1}}</h3>
    • <h3>A propos de la situation de {{form_var_prenom_personne2}} {{form_var_nom_personne2}}</h3>

#3 Updated by Lauréline Guerin 2 months ago

  • Assignee set to Lauréline Guerin

Je prends, ça me permet de jouer un peu avec les formulaires :)

#4 Updated by Lauréline Guerin 2 months ago

#6 Updated by Frédéric Péters 2 months ago

Désolé mais j'ai l'impression que le code précédent était mauvais,

  widget = HtmlWidget(htmltext('<h3%s>%s</h3>' % (extra_attributes, self.label)))

ne va pas quoter correctement le libellé, le code aurait du être :

  widget = HtmlWidget(htmltext('<h3%s>%%s</h3>' % extra_attributes) % self.label))

mais aurait sans doute été écrit différemment, je trouve le %% moche, peut-être,

  title_markup = '<h3%s>' % extra_attributes + '%s</h3>
  widget = HtmlWidget(htmltext(title_markup) % self.label))

L'idée étant que le self.label soit interprété par le htmltext(), qui assure le quote.

Aussi, les (sous-)titres se trouvent également affichés ailleurs sans passer par leurs classes, dans wcs/forms/common.py,

            if f.type == 'title':
                r += htmltext('<div class="title %s"><h3>%s</h3></div>') % (f.extra_css_class or '', f.label)
                continue

            if f.type == 'subtitle':
                r += htmltext('<div class="subtitle %s"><h4>%s</h4></div>') % (f.extra_css_class or '', f.label)
                continue

#7 Updated by Lauréline Guerin 2 months ago

Du coup, si en self.label j'ai un truc comme "1 < 3", quel doit être le résultat ?

    <h3>1 &lt; 3</h3>

(résultat de l'implémentation actuelle)

ou

    <h3>1 &amp;lt; 3</h3>

(résultat de ce que tu proposes) ?

#8 Updated by Frédéric Péters 2 months ago

    <h3>1 &lt; 3</h3>

Curieux d'obtenir ça de l'implémentation actuelle, ma lecture du code me donnait <h3>1 < 3</h3>; mais oui c'est bien ça qu'il faut obtenir.

#9 Updated by Lauréline Guerin 2 months ago

Ok, je rajoute quelques tests là-dessus alors :)

#11 Updated by Frédéric Péters 2 months ago

Super les tests, ça me permet de mieux pointer :

    # test for html content
    field = fields.TitleField(label='<i>Foobar&eacute;</i>')
    form = Form(use_tokens=False)
    field.add_to_form(form)
    assert '<i>Foobar&eacute;</i>' in str(form.render())

Par rapport à mon commentaire initial, sur le bug dans l'existant, ça correspond à ce test, qui devrait échouer, le self.label ne peut pas contenir d'HTML. (donc ici,

assert '&lt;i&gt;Foobar&amp;eacute;&lt;/i&gt;' in str(form.render))
)

#12 Updated by Lauréline Guerin 2 months ago

3e tentative ;)
Il y avait un double html escaping du label, cette fois ça devrait être bon

#13 Updated by Frédéric Péters 2 months ago

  • Status changed from Solution proposée to Solution validée

Nickel.

#14 Updated by Lauréline Guerin 2 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit 11cf9c30249c21ca11078e51ac695b30a2e5a933
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Thu Oct 3 11:42:52 2019 +0200

    fields: render template for title and subtitle (#36620)

#15 Updated by Frédéric Péters 2 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF