Modaldialog nach dem Klicken auf die Symbolleistenschaltfläche über ein Plugin anzeigen

Hallo zusammen,

ich habe einen Hintergrund in der iOS-Entwicklung (Swift) und nur oberflächliche Erfahrungen mit Rails und Javascript. Ich versuche, ein Plugin für Discourse zu entwickeln, und habe Schwierigkeiten, nach dem Klicken auf eine Schaltfläche in der Symbolleiste der Beitragseditor-Benutzeroberfläche ein modales Dialogfeld anzuzeigen.

Ich habe die Schaltfläche erfolgreich hinzugefügt, ungefähr so:

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));
  }
};

Ich habe versucht, ChatGPT zu nutzen, um mir bei der Entwicklung zu helfen, und es hat mehrere Vorschläge bezüglich der Ordnerstruktur gemacht. Verwendung von Komponenten, Vorlagen, Controller-Dateien, aber ich kann den Dialog nicht anzeigen lassen. Entweder erhalte ich Fehlermeldungen oder es passiert gar nichts.

Ich habe versucht, das Forum hier zu durchsuchen, aber ich kann nichts finden, was mir dabei helfen würde.

Kann mir jemand bitte in die richtige Richtung weisen, wie ich die Ordnerstruktur und insbesondere die Namenskonventionen der beteiligten Dateien einrichten muss, damit ich ein einfaches modales Dialogfeld anzeigen kann, um loszulegen?

Vielen Dank im Voraus!

EDIT: Mir ist bewusst, dass die perform-Funktion im obigen Code nichts tut. Ich habe mehrere Methoden ausprobiert, um sie zum Laufen zu bringen, aber nichts hat geholfen. Daher habe ich sie hier leer gelassen, nur um zu demonstrieren, was ich bisher getan habe, um die Schaltfläche in der Symbolleiste anzuzeigen.

Hallo Peter :slight_smile:

Ich habe nicht das Wissen, um Ihre Frage zu beantworten, aber hier sind ein Plugin und eine Theme-Komponente, die beide einen Button zum Komponisten hinzufügen, der ein Modal öffnet. Vielleicht finden Sie einige Hinweise in ihrem Code:

1 „Gefällt mir“

Danke @Canapin,

diese Plugins haben mir geholfen, in die richtige Richtung zu gehen :slight_smile:

1 „Gefällt mir“

Teilen Sie gerne Ihren funktionierenden Code hier, er wird anderen Leuten sicher helfen :slight_smile:

1 „Gefällt mir“

Ich werde den funktionierenden Code hier auf jeden Fall teilen, tatsächlich das gesamte Plugin, wenn es bereinigt ist und ich damit fertig bin :slightly_smiling_face:

1 „Gefällt mir“

Wie versprochen, teile ich das hier:

1 „Gefällt mir“