mirror of
https://github.com/discourse/discourse.git
synced 2024-12-05 21:13:52 +08:00
913fd3a7b3
Why this change? Previously just using the `addToolbarPopupMenuOptionsCallback` plugin API itself was insufficient because it required the return object to include an `action` key which only accepted a name of the action function as a string. This was highly problematic because the action function had to be defined on the `composer` service which means using the `modifyClass` API to add the action function. This made the API awkward to use leading to poor developer experiencec. What does this change do? This commit introduces a couple of improvemnts to the API. 1. First the API has been renamed to `addComposerToolbarPopupMenuOption` because the API no longer accepts a callback function which was quite redundant. Instead, it now accepts an Object. The `addToolbarPopupMenuOptionsCallback` API function is deprecated and will be dropped in Discourse 3.3. Note that passing the API a function is still supported but will be dropped when the `addToolbarPopupMenuOptionsCallback` is removed. 2. The `action` key in the Object passed to the function can now be a function and is passed the `toolbarEvent` object when called. 3. The `condition` on key in the Object passed to the function can now be a function and is passed the `composer` service when called.
30 lines
669 B
JavaScript
30 lines
669 B
JavaScript
import I18n from "I18n";
|
|
import { withPluginApi } from "discourse/lib/plugin-api";
|
|
|
|
function initializeDetails(api) {
|
|
api.decorateCooked(($elem) => $("details", $elem), {
|
|
id: "discourse-details",
|
|
});
|
|
|
|
api.addComposerToolbarPopupMenuOption({
|
|
action: function (toolbarEvent) {
|
|
toolbarEvent.applySurround(
|
|
"\n" + `[details="${I18n.t("composer.details_title")}"]` + "\n",
|
|
"\n[/details]\n",
|
|
"details_text",
|
|
{ multiline: false }
|
|
);
|
|
},
|
|
icon: "caret-right",
|
|
label: "details.title",
|
|
});
|
|
}
|
|
|
|
export default {
|
|
name: "apply-details",
|
|
|
|
initialize() {
|
|
withPluginApi("1.14.0", initializeDetails);
|
|
},
|
|
};
|