Показать модальное диалоговое окно после нажатия кнопки панели инструментов через плагин

Всем привет,

У меня бэкграунд в разработке под iOS (Swift), а с Rails и JavaScript я знаком лишь поверхностно. Я пытаюсь создать плагин для Discourse, но у меня возникают трудности с отображением модального диалога после нажатия кнопки на панели инструментов редактора постов.

Мне удалось успешно добавить кнопку примерно таким образом:

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

Я пытался использовать ChatGPT для помощи в разработке, и он предложил несколько вариантов касательно структуры папок. Я пробовал использовать компоненты, шаблоны и файлы контроллеров, но не могу заставить диалог отображаться. Либо я получаю сообщения об ошибках, либо ничего не происходит.

Я пытался поискать на этом форуме, но не смог найти ничего, что помогло бы мне в этом вопросе.

Не могли бы вы подсказать мне правильное направление, как настроить структуру папок и, особенно, соглашения об именовании файлов, чтобы я мог показать простое модальное окно для начала работы?

Заранее спасибо!

РЕДАКТИРОВАНИЕ: Я знаю, что функция perform ничего не делает в коде выше. Я пробовал несколько методов, чтобы заставить её работать, но ничего не помогло. Поэтому я оставил её пустой здесь, просто демонстрируя, что я сделал на данный момент, чтобы кнопка появилась на панели инструментов.

Привет, Пётр :slight_smile:

У меня нет знаний, чтобы ответить на твой вопрос, но вот плагин и компонент темы, которые добавляют кнопку в редактор, открывающую модальное окно. Возможно, в их коде ты найдёшь полезные подсказки:

Спасибо @Canapin,

эти плагины помогли мне направить меня в нужном направлении :slight_smile:

Не стесняйтесь делиться здесь своим рабочим кодом — это обязательно поможет другим людям :slight_smile:

Я обязательно поделюсь здесь рабочим кодом, а точнее всем плагином, когда он будет отчищен и я закончу с ним :slightly_smiling_face:

Как и обещал, делюсь этим здесь: