Sto scrivendo un plugin per estendere la funzionalità dei badge. Quando viene premuto il pulsante “salva” nella pagina dei badge dell’amministratore, voglio eseguire del codice aggiuntivo.
Javascript di Discourse:
Hbs di Discourse:
Il mio codice 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!!");
});
}
};
È un inizializzatore.
- La finestra di alert
"Hello! I am an alert box!!"viene attivata, indicando che il codice viene eseguito al ricaricamento. - Né le righe console.log né gli alert vengono eseguiti al salvataggio, indicando che l’override non sta funzionando?
- Il nome del controller non genera un errore
controller:admin-badges/show(ma l’aggiunta intenzionale di un errore di battitura lo fa, suggerendo che sto puntando a un controller reale)
Dovrebbe essere facile da riprodurre dato che si tratta di un solo inizializzatore. Cosa sto sbagliando???