Estoy escribiendo un plugin para extender la funcionalidad de las insignias. Cuando se presiona el botón “guardar” en la página de administración de insignias, quiero ejecutar código adicional.
Javascript de Discourse:
Hbs de Discourse:
Mi código 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); // Call the original save method
console.log("Post-save logic triggered");
alert("Post-save logic");
},
}
});
alert("Hello! I am an alert box!!");
});
}
};
Es un inicializador.
- El cuadro de alerta
"Hello! I am an alert box!!"se activa, lo que indica que el código se está ejecutando al recargar. - Ni las líneas de console.log ni las alertas se ejecutan al guardar, lo que indica que la anulación no está funcionando.
- El nombre del controlador no genera un error
controller:admin-badges/show(pero añadir intencionalmente un error tipográfico sí lo hace, lo que sugiere que estoy apuntando a un controlador real).
Debería ser fácil de reproducir dado que es solo un inicializador. ¿Qué estoy haciendo mal?