Я пишу плагин для расширения функциональности значков. Когда на странице администрирования значков нажимается кнопка «Сохранить», я хочу выполнить дополнительный код.
Discourse Javascript:
Discourse hbs:
Мой код discourse/plugins/discourse-badge-extension/assets/javascripts/discourse/initializers/modify-admin-badges-show-controller.js:
import { withPluginApi } from 'discourse/lib/plugin-api';
export default {
name: 'modify-admin-badges-show',
initialize() {
withPluginApi('0.8', api => {
api.modifyClass('controller:admin-badges/show', {
pluginId: 'discourse-badge-extension',
actions: {
save() {
console.log("Custom pre-save logic triggered");
alert("Pre-save logic");
this._super(...arguments); // Вызов оригинального метода save
console.log("Post-save logic triggered");
alert("Post-save logic");
},
}
});
alert("Hello! I am an alert box!!");
});
}
};
Это инициализатор.
- Окно с предупреждением
"Hello! I am an alert box!!"появляется, что указывает на запуск кода при перезагрузке. - Строки console.log и окна с предупреждением не срабатывают при сохранении, что говорит о том, что переопределение не работает?
- Имя контроллера
controller:admin-badges/showне вызывает ошибку (хотя намеренное добавление опечатки приводит к ошибке, что подтверждает, что я обращаюсь к реальному контроллеру).
Воспроизвести проблему должно быть легко, так как это всего один инициализатор. Что я делаю не так???