diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index 767abc870..76f51ada8 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -176,8 +176,13 @@ class Toolbar { } } -export function onToolbarCreate(func) { +export function addToolbarCallback(func) { _createCallbacks.push(func); +} + +export function onToolbarCreate(func) { + console.warn('`onToolbarCreate` is deprecated, use the plugin api instead.'); + addToolbarCallback(func); }; export default Ember.Component.extend({ diff --git a/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 b/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 index 1d6275398..d358a1e1d 100644 --- a/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 +++ b/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 @@ -1,4 +1,4 @@ -import { onToolbarCreate } from 'discourse/components/d-editor'; +import { withPluginApi } from 'discourse/lib/plugin-api'; export default { name: 'enable-emoji', @@ -7,13 +7,15 @@ export default { const siteSettings = container.lookup('site-settings:main'); if (siteSettings.enable_emoji) { - onToolbarCreate(toolbar => { - toolbar.addButton({ - id: 'emoji', - group: 'extras', - icon: 'smile-o', - action: 'emoji', - title: 'composer.emoji' + withPluginApi('0.1', api => { + api.onToolbarCreate(toolbar => { + toolbar.addButton({ + id: 'emoji', + group: 'extras', + icon: 'smile-o', + action: 'emoji', + title: 'composer.emoji' + }); }); }); diff --git a/app/assets/javascripts/discourse/lib/plugin-api.js.es6 b/app/assets/javascripts/discourse/lib/plugin-api.js.es6 index 86fe0c0bd..5995bd2b0 100644 --- a/app/assets/javascripts/discourse/lib/plugin-api.js.es6 +++ b/app/assets/javascripts/discourse/lib/plugin-api.js.es6 @@ -3,6 +3,7 @@ import ComposerEditor from 'discourse/components/composer-editor'; import { addPosterIcon } from 'discourse/widgets/poster-name'; import { addButton } from 'discourse/widgets/post-menu'; import { includeAttributes } from 'discourse/lib/transform-post'; +import { addToolbarCallback } from 'discourse/components/d-editor'; let _decorateId = 0; function decorate(klass, evt, cb) { @@ -86,6 +87,10 @@ class PluginApi { addButton(name, callback); } + onToolbarCreate(callback) { + addToolbarCallback(callback); + } + } let _pluginv01; diff --git a/test/javascripts/components/d-editor-test.js.es6 b/test/javascripts/components/d-editor-test.js.es6 index ecb486f3a..d8985c19c 100644 --- a/test/javascripts/components/d-editor-test.js.es6 +++ b/test/javascripts/components/d-editor-test.js.es6 @@ -1,5 +1,5 @@ import componentTest from 'helpers/component-test'; -import { onToolbarCreate } from 'discourse/components/d-editor'; +import { withPluginApi } from 'discourse/lib/plugin-api'; moduleForComponent('d-editor', {integration: true}); @@ -540,12 +540,14 @@ componentTest('emoji', { template: '{{d-editor value=value}}', setup() { // Test adding a custom button - onToolbarCreate(toolbar => { - toolbar.addButton({ - id: 'emoji', - group: 'extras', - icon: 'smile-o', - action: 'emoji' + withPluginApi('0.1', api => { + api.onToolbarCreate(toolbar => { + toolbar.addButton({ + id: 'emoji', + group: 'extras', + icon: 'smile-o', + action: 'emoji' + }); }); }); this.set('value', 'hello world.');