Salut à tous !
Je suis en train de développer un plugin qui tente de charger les pages qui sont liées par des wikilinks comme références liées.
J’ai une implémentation de base qui fonctionne, mais je n’aime pas l’aspect du design actuel et je voulais voir s’il existait des API que j’aurais manquées et qui pourraient aider à rendre cela plus fluide.
Voici mon approche actuelle : discourse-wikilinks/assets/javascripts/initializers/wikilinks-init.js at main · dvargas92495/discourse-wikilinks · GitHub
En bref :
- utiliser
api.reopenWidgetsur le widgetpost-linkspour remplacer la méthodehtml. - lors du premier rendu du widget, récupérer le titre du sujet, puis rechercher les sujets qui ont [[titre]] dans leur titre.
- après la récupération, planifier un nouveau rendu avec les données de réponse, en utilisant un drapeau pour s’assurer que nous ne faisons pas de récupération infinie lors du prochain rendu.
Cette approche est sous-optimale car :
- Il y a un délai entre le rendu initial et le rendu des autres données.
- Le drapeau empêchant la récupération infinie semble sujet aux erreurs à l’avenir.
- Je dois effectuer deux appels API, un pour récupérer le titre du sujet (qui devrait être disponible plus haut dans l’arborescence des widgets) et un autre pour les liens.
- Je dois copier-coller la méthode de widget
htmloriginale dans le code de mon plugin, ce qui le rend vulnérable à être forké.
Des idées pour atténuer ces problèmes ? Idéalement, j’aimerais modifier l’appel original loadTopicView pour inclure les wikilinks.
Est-ce que Discourse ou quelqu’un de la communauté propose des appels de conseil ? J’aimerais payer pour un appel avec un expert afin d’obtenir une présentation approfondie de l’architecture de Discourse et des plugins disponibles. J’ai déjà parcouru la plupart des documents de développement et j’ai pas mal navigué dans le code source.