Afficher une boîte de dialogue modale après avoir cliqué sur le bouton de la barre d’outils via un plugin

Bonjour à tous,

J’ai une expérience en développement iOS (Swift), et une expérience superficielle avec Rails et Javascript. J’essaie de développer un plugin pour Discourse et j’ai des difficultés à afficher une boîte de dialogue modale après avoir cliqué sur un bouton dans la barre d’outils de l’interface d’édition de publication.

J’ai réussi à ajouter le bouton en utilisant quelque chose comme ceci :

assets/javascripts/discourse/initializers/audio-message-button.js.es6

import { withPluginApi } from 'discourse/lib/plugin-api';

function initializeWithApi(api) {
  api.onToolbarCreate(toolbar => {
    toolbar.addButton({
      id: "audio_message",
      group: "extras",
      icon: "microphone",
      perform: (editor) => {

      }
    });
  });
}

export default {
  name: 'audio-message-button',
  initialize(container) {
    withPluginApi('0.12.0', api => initializeWithApi(api));
  }
};

J’ai essayé d’utiliser ChatGPT pour m’aider dans le développement, et il a fait plusieurs suggestions concernant la structure des dossiers. Utilisation de composants, de modèles, de fichiers de contrôleur, mais je n’arrive pas à faire apparaître la boîte de dialogue. Soit j’obtiens des messages d’erreur, soit rien ne se passe.

J’ai essayé de chercher sur le forum ici, mais je ne trouve rien qui puisse m’aider.

Quelqu’un pourrait-il m’indiquer la bonne direction quant à la façon dont je dois configurer la structure des dossiers et surtout les conventions de nommage des fichiers concernés, afin que je puisse afficher une simple boîte de dialogue modale pour commencer ?

Merci d’avance !

EDIT : Je suis conscient que la fonction perform ne fait rien dans le code ci-dessus. J’ai essayé plusieurs méthodes pour la faire fonctionner, mais rien n’a aidé. Je l’ai donc laissée vide ici, démontrant simplement ce que j’ai fait jusqu’à présent pour que le bouton apparaisse dans la barre d’outils.

Salut Peter :slight_smile:

Je n’ai pas les connaissances nécessaires pour répondre à votre question, mais voici un plugin et un composant de thème qui ajoutent tous deux un bouton à l’éditeur qui ouvre une fenêtre modale, peut-être y trouverez-vous des pistes dans leur code :

1 « J'aime »

Merci @Canapin,

ces plugins m’ont aidé à trouver la bonne direction :slight_smile:

1 « J'aime »

N’hésitez pas à partager votre code fonctionnel ici, cela aidera certainement d’autres personnes :slight_smile:

1 « J'aime »

Je partagerai certainement le code fonctionnel ici, le plugin entier en fait, une fois qu’il sera nettoyé et que j’aurai terminé :slightly_smiling_face:

1 « J'aime »

Partage ici comme promis :

1 « J'aime »