Voglio creare un plugin per mostrare un pulsante ed eseguire un’azione. Il pulsante può già essere visualizzato nel luogo desiderato, ma non so come creare un’azione personalizzata per esso. La struttura dei file è la seguente:
plugins/discourse-my-plugin
├── assets
│ ├── javascripts
│ │ └── discourse
│ │ ├── initializers
│ │ │ └── my-plugin.js.es6
│ │ └── templates
│ │ └── connectors
│ │ └── user-messages-nav
│ │ ├── actions.js.es6
│ │ └── button.hbs
├── config
└── plugin.rb
initializers/my-plugin.js.es6
import { withPluginApi } from "discourse/lib/plugin-api";
function initializeButton(api) {
api.decoratePluginOutlet('user-messages-nav', (elem, args) => {
...
});
}
export default {
name: "my-button",
initialize() {
withPluginApi("0.8.31", initializeButton);
}
};
button.hbs
{{d-button class="btn-primary" action="submitContent" label="submit_content"}}
È corretto creare la mia azione personalizzata in questo modo in actions.js.es6? L’errore è “had no action handler for: submitContent” ma come posso risolverlo?
export default {
actions: {
submitContent() {
...
}
}
};