Je pense que c’est possible. Dans le gestionnaire d’événements dpg_displaypage, vous devez utiliser $.ajax() pour appeler votre API externe. De plus, je pense que vous devez ajouter votre API externe au paramètre Discourse content security policy script src.
Il semble que ce plugin soit toujours maintenu, mais j’ai réussi à isoler un problème sur mon serveur : la page de connexion n’est pas visible lorsque ce plugin est activé. J’espère pouvoir résoudre ce problème.
Si ce plugin est activé sur mon serveur, je confirme que la page de connexion apparaît vide. En revanche, si je désactive le plugin, la page de connexion réapparaît normalement. Si un utilisateur est déjà connecté, le problème ne se manifeste pas et le serveur fonctionne normalement.
Je cherche de l’aide ou un support pour résoudre ce problème. Je suis prêt à fournir toutes les informations supplémentaires nécessaires pour faciliter le diagnostic.
Merci, Jordan.
Oui, j’aurai besoin de plus d’informations, car j’ai vérifié sur mes différentes instances Discourse et je n’ai pas réussi à reproduire le problème.
Quand vous dites que « la page de connexion n’est pas visible », vous parlez bien de la fenêtre contextuelle de connexion, n’est-ce pas ?
Merci de me fournir plus de détails et/ou des captures d’écran. Si possible, envoyez-moi également un message privé avec l’URL de votre instance Discourse.
Salut Syl,
Merci pour ta réponse.
Lorsque j’active le plugin discpage et que je me rends sur l’instance Discourse sans être connecté, je suis confronté à une page entièrement blanche. Voir ci-dessous :
J’ai également vérifié récemment les journaux de la console et j’ai remarqué quelques erreurs liées à discpage. Bien qu’elles ne signifient rien pour moi, elles pourraient peut-être t’apporter des indices…
Merci de l’avoir signalé. Le bogue a été enregistré ici :
https://github.com/sylque/discpage/issues/17
En attendant la correction du bogue, une solution de contournement consiste à désactiver le paramètre Discourse « connexion requise ».
EDIT : le bogue est maintenant corrigé.
Salut Syl,
C’est un peu gênant
désolé d’être direct, mais j’ai regardé le code source du plugin, par simple curiosité, sans aucune compétence en programmation, et je suis confus par le formatage du fichier lib. Je suppose que ce n’est pas un choix technique (mais que sais-je
), et je peux imaginer et comprendre d’où cela vient.
J’ai l’impression que tu es en plein milieu du processus, et c’est déjà super, donc je ne veux vraiment pas paraître ingrat, mais est-ce que tu envisagerais de partager une version intelligible de ton travail ?
À mon avis, à long terme, le rythme des mises à jour du cœur peut être difficile à suivre pour les auteurs de plugins ; cela pourrait rassurer ceux qui pourraient utiliser les fonctionnalités de ton plugin mais hésitent à s’appuyer sur les épaules de trop peu de personnes, et pourquoi pas, cela pourrait même créer de la bonne volonté et de l’intérêt ?
Merci beaucoup quand même ![]()
Bonjour Benjamin,
Le code source du plugin est publié sous forme minifiée car j’en ai honte. Il est le résultat d’une expérience de R&D et nécessite un important travail de refactoring. J’ai reporté cette tâche jusqu’à ce que le plugin suscite un certain intérêt.
![]()
Eh bien, comptez-moi dans la catégorie « très intéressé » !
Je trouve que c’est une très belle variante de la fonctionnalité de « citation » de base.
Je cherche un moyen d’inciter mes utilisateurs à s’engager dans une analyse de discours (ce qui est assez proche de votre utilisation de Castafiore, je pense, mais beaucoup moins divertissant, hélas !), et j’espère que ce design pourrait les pousser vers le mode rédaction.
Jusqu’ici, tout va bien !
Mes deux cents :
- À mon humble avis concernant l’en-tête, je préférerais le garder centré ; cela permet, selon moi, d’intégrer plus harmonieusement les pages statiques du plugin dans un discours globalement « normal ».
- Cas limite : il pourrait être intéressant de spécifier une catégorie de bulle par catégorie statique, au cas où plusieurs catégories statiques auraient des droits de lecture/écriture différents.
- Est-ce que j’oublie quelque chose ou bien les balises
[dpgb id=titre] [/dpgb](qui sont, je crois, transformées en bulles) doivent-elles être saisies manuellement ? J’ai essayé, de bonne foi (et sans succès !), le bouton de citation de l’éditeur, argh
. C’est probablement nécessaire car le slug de la balise doit être défini 
- Le paramètre
discpage hide tagspourrait-il devenirhide discpage tagsà la place ? Je ne vois pas vraiment la difficulté à masquer uniquement les balises dpg-****, mais je pense qu’elles pourraient encombrer un peu la liste des suggestions lors de la création d’un sujet.
Prochaine étape : le test d’engagement des utilisateurs !
Merci @Benjamin_D, vos retours sont les bienvenus.
L’alignement de l’en-tête doit s’adapter à :
- Les pages normales de Discourse (max-width = 1110px),
- Les pages statiques DiscPage (max-width = 782px, car 1110px est trop large pour une page statique où vous ne pouvez pas ajouter de barres latérales, de widgets ou d’images),
- La mise en page fractionnée de DiscPage, avec une page statique à gauche et des sujets à droite (max-width = 100%).
J’ai effectué de nombreux tests, avec un alignement d’en-tête fixe et un alignement dépendant de la mise en page, et j’en suis arrivé à la conclusion qu’un alignement permanent à gauche était la meilleure solution.
Cependant, je serai ravi d’examiner toute idée que vous pourriez avoir. Assurez-vous de prendre en compte les trois cas mentionnés ci-dessus.
Cela est déjà pris en charge. Voir ce paragraphe dans la documentation :
En fait, vous pouvez définir plusieurs catégories ici. Appelons PageCat la catégorie de la page statique à laquelle appartient le ballon. S'il y a plus d'une catégorie de ballon dans ce champ, DiscPage prendra la première qui est soit un sibling de PageCat (même parent immédiat), soit le parent immédiat de PageCat. Si aucune telle catégorie n'est trouvée, DiscPage prendra la première catégorie de la liste. Cette fonctionnalité permet d'apparier [catégorie de page statique, catégorie de ballon], ce qui est utile, par exemple, pour les forums multilingues ou pour configurer des pages statiques avec des permissions de groupe différentes.
Je reconnais que ce n’est pas facile à comprendre. Toute idée pour améliorer la formulation est la bienvenue.
Oui, les ballons doivent être insérés manuellement en utilisant une syntaxe textuelle.
Lorsque vous avez testé le plugin pour la première fois, pourquoi pensiez-vous que le bouton de citation serait utile ? (Je suis intéressé par votre état d’esprit à ce moment-là)
La fonctionnalité hide discpage tags est déjà implémentée : les balises DiscPage sont masquées par défaut sur toutes les pages et dans tous les widgets de Discourse. Autrement dit, si vous voyez une balise DiscPage quelque part (lorsque DiscPage est activé), c’est un bug.
Le paramètre discpage hide tags est très différent : il permet aux personnes qui ne souhaitent pas activer les balises dans leur instance Discourse, mais qui ont été contraintes de le faire pour utiliser DiscPage, de simuler une instance sans balises.
En fait, c’est surtout le max-width = 1110px que je garderais, même si, en écran divisé, la page statique sous l’en-tête prend 100%. J’ai commenté le bloc html.dpg header.d-header .wrap et cela ne me dérange pas trop d’avoir un peu d’espace blanc autour de l’en-tête au-dessus de la page statique divisée (même si les boutons de modification du titre et de la page semblent un peu perdus là-haut, en mode non divisé).
Bête de moi, RTFM
(en ma défense, je l’ai probablement fait l’année dernière et j’ai oublié
)
Je ne me souvenais pas que DiscPage masquait la catégorie ballon (je viens de le tester en tant qu’administrateur), mais c’est une excellente fonctionnalité.
Donc, si je comprends bien, dans le cas de plusieurs {catégories de pages statiques, droits des utilisateurs}, il faudrait créer une catégorie ballon associée en tant que sous-catégorie de la catégorie statique (ce qui a du sens du point de vue des droits), ou bien avoir les deux catégories comme sous-catégories d’une même troisième catégorie parente. Ce n’est pas important, mais cela fonctionnerait-il aussi si la catégorie statique est une sous-catégorie de la catégorie ballon ?
Probablement juste la forme de ballon de l’icône, combinée au fait que je n’ai probablement jamais utilisé le bouton de citation du compositeur, et peut-être que j’ai pensé : Hé, était-ce là avant ? Alors j’ai essayé ![]()
Je ne me soucie pas d’avoir à écrire quelques lignes de « code », mais je peux entendre mes utilisateurs hurler d’ici. Peut-être qu’ils ne définiront tout simplement pas de pages statiques pour l’instant. Parfois, j’ai l’impression que chaque frappe au clavier peut être la goutte d’eau qui fait déborder le vase… ![]()
Bien sûr, désolé… Je vais l’attribuer à ma légère fièvre. Je ne sais pas pourquoi je pensais qu’elles n’étaient pas masquées. Peut-être que j’ai aperçu l’une d’elles dans la liste déroulante des balises dans la partie ballon de l’écran divisé ? Je comprends maintenant la virgule finale que j’ai vue en essayant tout ce qui était possible, même en étiquetant les sujets ballon !
Serait-il possible de permettre aux utilisateurs de créer et modifier leurs propres publications statiques ? La restriction d’administration pourrait alors être gérée uniquement via les paramètres de sécurité des catégories.
edit :
peut-être pas, la modification des tag_groups semble soumise à une StaffConstraint ![]()
Je peux permettre à un utilisateur de niveau de confiance 4 (TL4) de configurer un ballon en remplaçant a = User.current()) && a.admin par User.current()) && a.trust_level >= 4, mais le tag ne sera créé qu’après qu’un administrateur aura édité la page statique… ![]()
Ce serait idéal : un modérateur de catégorie capable de modifier le groupe de tags de sa catégorie ![]()
Au fait, j’ai remarqué que la liste de vérification des plugins semble interférer avec discpage (quelque chose à propos de getmodel() )
Je préfère la mise en page actuelle. Cependant, il devrait être facile de personnaliser cela. Je vais y réfléchir.
Non, cette combinaison n’est pas prise en charge.
Comme vous l’avez déjà constaté, la création de pages statiques n’est pas limitée aux administrateurs, mais l’insertion de ballons l’est. La raison en est qu’il n’existe pas de méthode simple pour créer des tags dans Discourse (voir ce fil de discussion). Pour y parvenir, j’ai choisi d’utiliser l’API tag group, qui est réservée aux administrateurs. Il existait des solutions alternatives, mais elles présentaient leurs propres inconvénients.
Vous voulez dire ce plugin ? Quel est le problème ?
En effet, avec les deux plugins activés, rafraîchir une page statique désactive en quelque sorte Discpage (il retourne une mise en page normale) et la console affiche une erreur :
Uncaught (in promise) TypeError: postModel is undefined
checklistSyntax javascripts/discourse/initializers/checklist:29
Les deux plugins fonctionnent bien séparément.
Merci @Benjamin_D. Le problème a été signalé ici :
EDIT : cela a été corrigé dans la dernière version (1.0.38).
Salut @syl, désolé d’être le messager des mauvaises nouvelles
, j’ai découvert un autre problème de compatibilité, un peu plus problématique : avec discpage activé, un lien d’invitation mène à une page blanche (au lieu de la page d’inscription).
Le console du navigateur indique :
r.site.categories est undefined
Désactiver le plugin permet au lien d’invitation de fonctionner comme d’habitude.
Merci beaucoup pour ce signalement, @Benjamin_D. Il s’agit d’un nouveau bug lié au mode « connexion requise », j’ai donc rouvert l’issue GitHub précédente. En attendant la correction, une solution de contournement consiste à désactiver le mode « connexion requise ».
MODIF : cela a été corrigé dans la dernière version (1.0.38).
Bonjour @syl !
Je pense que le récent changement de routage des tags
a cassé quelque chose ![]()
À minima, le lien dans les bulles devrait maintenant pointer vers /tag/dpg-xxx et non /tags/dpg-xxx
Merci @Benjamin_D, cela a été corrigé dans la version 1.0.38.

