Projet

Général

Profil

Development #19443

Permettre l'utilisation "différée" de placeholder

Ajouté par Frédéric Péters il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
14 octobre 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Rappel : un placeholder c'est une zone de la page dans laquelle on peut placer plusieurs cellules.

À GNM il y a des cellules qui sont alimentées depuis des données de data.grandlyon mais il leur manque une zone "infos pratiques" et le souhait serait de pouvoir gérer cette partie depuis Publik.

On pourrait développer unconnecteur "geojson distant mais localement étendu" mais dans le cas présent, ces informations doivent uniquement être affichées sur des pages "lieu" qui sont déjà générées; mon idée est d'ajouter dans celle-ci une zone "Infos pratiques" qui permettra depuis combo d'y mettre une cellule texte ou autre, d'éditer tranquillement là les infos.

Mais ces informations doivent apparaitre au milieu d'autres et donc mon plan est celui-ci :

  • pouvoir marquer des placeholders comme ne devant pas être affichés dans la page
    • le template d'une page lieu aurait donc {% placeholder "infos-pratiques" name="Infos pratiques" render=False %}
  • avoir dans la cellule tirant les données depuis data.grandlyon le rendu
    • un appel "normal" à {% placeholder "infos-pratiques" %}

Fichiers

Révisions associées

Révision 96208f1f (diff)
Ajouté par Frédéric Péters il y a plus de 6 ans

misc: also look for placeholders within cells (#19443)

Révision 7ff033f1 (diff)
Ajouté par Frédéric Péters il y a plus de 6 ans

misc: add is_empty_placeholder filter tag (#19443)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 6 ans

Patch 0001 qui ajoute la prise en charge d'un render=False.

Patch 0002 qui ajoute une fonction supplémentaire pour les templates, me permettant de faire {% if not page|is_empty_placeholder:"infos-pratiques" %} pour garder le markup propre.

#2

Mis à jour par Frédéric Péters il y a plus de 6 ans

(nouvelle version du patch qui fonctionne également pour des cellules dont le rendu est asynchrone)

#3

Mis à jour par Thomas Noël il y a plus de 6 ans

Je dois rater quelque chose : en quoi une cellule texte "info pratique" ne suffirait pas ?

#4

Mis à jour par Frédéric Péters il y a plus de 6 ans

Pour des raisons de style / ordre des éléments, ce texte doit s'insérer à l'intérieur d'une cellule.

#5

Mis à jour par Thomas Noël il y a plus de 6 ans

Ce que je n'aime pas dans ce qui est présenté ici, c'est qu'il faut poser un placeholder dans le template de la page. Ca serait super que la cellule indique à la page qu'elle peut contenir un ou des placeholder, et que quand on ajoute ce genre de cellule, hop, automatiquement on voit apparaitre les placeholders (même si j'avoue j'ai rien regardé pour savoir si c'est jouable). Car oui, ça résoudrait un soucis important (avoir du texte "en dur" dans certaines cellules, non éditable).

#6

Mis à jour par Frédéric Péters il y a plus de 6 ans

Je n'avais pas du tout pensé à ça et j'étais parti pour écrire que c'était sans doute jouable mais du coup, à vérifier ça, je l'ai fait, et du coup le patch devient "découvre aussi les placeholders au sein des cellules". Il y a quand même quelques complexités, sur un exemple de cellule factures, par exemple, on aurait quelque chose de ce type :

  {% if invoices %}
    <p>Voici la liste de vos factures.</p>
  {% endif %}

qu'on voudrait transformer en :

  {% if invoices %}
    {% placeholder "intro-factures" name="Texte au-dessus des factures" %}
  {% endif %}

mais lors de la phase de découverte dans le manager on n'a pas envie de récupérer les factures de l'admin, et peut-être qu'il n'en n'a pas.

Du coup, le modèle va plutôt devoir être :

  {% placeholder "intro-factures" name="Texte au-dessus des factures" render=False %}
  {% if invoices %}
    {% placeholder "intro-factures" %}
  {% endif %}

C'est-à-dire commencer par déclarer qu'il va peut-être contenir un tel placeholder.

Le résultat me semble quand même tout à fait acceptable (ce n'est pas comme dans le template, tout à fait déconnecté).

Une limitation au patch que je présente, mais je préférerais vivre avec pour le moment, c'est que les noms de placeholder doivent être uniques, et on ne peut dès lors pas avoir sur la même page deux cellules du même type déclarant le même placeholder. (en fait on peut mais les cellules partageront le même contenu de placeholder). Sur les situations rencontrées, là où le bénéfice d'une zone éditable se faisait sentir, je ne pense pas que ça soit une limitation importante.

#8

Mis à jour par Thomas Noël il y a plus de 6 ans

Chicos. Je pense qu'il manque des tests non ? J'ai essayé "en vrai", ça semble ok. Bien sûr il ne faut pas oublier le {% load combo %} quand on veut ajouter des placeholder, c'est normal. Le rendu HTML va donner des cellules imbriquées (et c'est bien logique, elles le sont) : sera-ce facile à gérer selon toi ?

#9

Mis à jour par Frédéric Péters il y a plus de 6 ans

Yep, un peu de tests demain. Sur le rendu il y aura sans doute une base de style "cellule dans une cellule" à mettre, je pense notamment qu'il faudra éliminer un peu de marges.

#10

Mis à jour par Frédéric Péters il y a plus de 6 ans

Voilà avec un (astucieux) test utilisant un JsonCell pour vérifier qu'un {% placeholder %} étant présent dans son template, il est bien présenté dans l'édition de la page.

Aussi, plutôt qu'un flag internal=True pouvant être posé sur les placeholders, ça ignore simplement ceux qui n'ont pas de libellé défini.

#12

Mis à jour par Thomas Noël il y a plus de 6 ans

Ack

Peut-être que ça pourrait être le moment de mettre à jour le README sur ces histoires de placeholder ? (mais dans un ticket à venir, ça me va aussi, le README n'est pas faux ici)

#13

Mis à jour par Frédéric Péters il y a plus de 6 ans

  • Statut changé de En cours à Résolu (à déployer)

Oui, de manière proche je devrais reprendre une documentation sur les thèmes, les placeholders, les cellules json.

commit 7ff033f136979a8819e15e57b8d4909458f04ad1
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat Oct 14 22:28:30 2017 +0200

    misc: add is_empty_placeholder filter tag (#19443)

commit 96208f1f4001f63181214524f52981a5249b0d27
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat Oct 14 22:08:21 2017 +0200

    misc: also look for placeholders within cells (#19443)
#14

Mis à jour par Frédéric Péters il y a plus de 5 ans

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

Formats disponibles : Atom PDF