Salut à tous, j’espère que je poste au bon endroit. J’essaie de développer un plugin pour mon nouveau site web Discourse.
J’ai “forké” le dépôt d’exemple ici, j’ai réussi à faire fonctionner un “Plugin Outlet”, puis j’ai atteint un mur et j’ai commencé à me sentir assez perdu et confus. Je commence à peine à maîtriser les frameworks PHP MVC comme Laravel, mais je suis TRÈS nouveau aux frameworks JS. Je n’ai jamais touché à Ruby, Rails ou Ember auparavant.
Le Problème
Mon site web est pour une communauté de syndicats de copropriétaires (HOA). Ce que j’essaie de faire, c’est collecter et enregistrer quelques champs de données supplémentaires par utilisateur :
legal_name(string)is_owner(bool)is_resident(bool)building(string) - représentant le numéro de leur bâtimentunit(string) - représentant le numéro de leur appartement- … et quelques autres variables internes, comme si un modérateur les avait confirmés.
Je veux rendre ces champs obligatoires pour l’inscription des utilisateurs. Cela signifie modifier le formulaire d’inscription des utilisateurs. J’ai utilisé l’“outlet” create-account-after-password et j’ai réussi à afficher des champs supplémentaires, mais évidemment, cela ne les rend pas fonctionnels.
Je pense que je dois étendre le contrôleur dans app/assets/javascripts/discourse/app/controllers/create-account.js, non seulement pour récupérer les nouvelles valeurs du formulaire lors de la soumission, mais même pour quelque chose d’aussi (apparemment) basique que l’utilisation du nom du site this.siteSettings.title dans un champ de traduction client.en.yml ! (Pour l’instant, les champs supplémentaires de mon formulaire d’inscription sont intitulés : “Quelle est votre relation avec [valeur %{title} manquante] ?” Ce qui n’est évidemment pas bon.)
Plus j’essayais de chercher des réponses, plus j’avais de questions et plus elles devenaient importantes. Les différents guides que j’ai essayés de suivre étaient apparemment écrits pour différentes versions de Discourse. Le dépôt d’exemple de plugin contient des choses que je ne comprends pas. Quelle est la différence entre une route côté client et une route côté serveur ? Quelle est la différence entre un plugin et un module ? Je suis tellement perdu.
Si quelqu’un pouvait m’offrir de l’aide, je lui en serai très reconnaissant. Merci d’avance.
