diff --git a/extensions/markdown/js/src/forum/index.js b/extensions/markdown/js/src/forum/index.js
index 9ee2c8ab4..1cb9a8f46 100644
--- a/extensions/markdown/js/src/forum/index.js
+++ b/extensions/markdown/js/src/forum/index.js
@@ -8,13 +8,14 @@
*/
import app from 'flarum/forum/app';
-import { extend } from 'flarum/common/extend';
+import { extend, override } from 'flarum/common/extend';
import TextEditor from 'flarum/common/components/TextEditor';
import BasicEditorDriver from 'flarum/common/utils/BasicEditorDriver';
import styleSelectedText from 'flarum/common/utils/styleSelectedText';
import MarkdownToolbar from './components/MarkdownToolbar';
import MarkdownButton from './components/MarkdownButton';
+import ItemList from 'flarum/common/utils/ItemList';
const modifierKey = navigator.userAgent.match(/Macintosh/) ? '⌘' : 'ctrl';
@@ -48,35 +49,57 @@ function makeShortcut(id, key, editorDriver) {
};
}
+function markdownToolbarItems(oldFunc) {
+ const items = typeof oldFunc === 'function' ? oldFunc() : new ItemList();
+
+ function tooltip(name, hotkey) {
+ return app.translator.trans(`flarum-markdown.forum.composer.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');
+ }
+
+ const makeApplyStyle = (id) => {
+ return () => applyStyle(id, this.attrs.composer.editor);
+ };
+
+ items.add('header', , 1000);
+ items.add('bold', , 900);
+ items.add('italic', , 800);
+ items.add(
+ 'strikethrough',
+ ,
+ 700
+ );
+ items.add('quote', , 600);
+ items.add('spoiler', , 500);
+ items.add('code', , 400);
+ items.add('link', , 300);
+ items.add('image', , 200);
+ items.add(
+ 'unordered_list',
+ ,
+ 100
+ );
+ items.add('ordered_list', , 0);
+
+ return items;
+}
+
app.initializers.add('flarum-markdown', function (app) {
extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {
items.add('bold', makeShortcut('bold', 'b', this));
items.add('italic', makeShortcut('italic', 'i', this));
});
+ if (TextEditor.prototype.markdownToolbarItems) {
+ override(TextEditor.prototype, 'markdownToolbarItems', markdownToolbarItems);
+ } else {
+ TextEditor.prototype.markdownToolbarItems = markdownToolbarItems;
+ }
+
extend(TextEditor.prototype, 'toolbarItems', function (items) {
- const tooltip = (name, hotkey) => {
- return app.translator.trans(`flarum-markdown.forum.composer.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');
- };
-
- const makeApplyStyle = (id) => {
- return () => applyStyle(id, this.attrs.composer.editor);
- };
-
items.add(
'markdown',
(shortcutHandler = handler)}>
-
-
-
-
-
-
-
-
-
-
-
+ {this.markdownToolbarItems().toArray()}
,
100
);