From 250ca114167ca10701cd1dded33f2f4b37ac29a3 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 15 Dec 2016 11:54:37 -0500 Subject: [PATCH] Add PluginAPI for registering a connector class --- .../discourse/lib/plugin-api.js.es6 | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/plugin-api.js.es6 b/app/assets/javascripts/discourse/lib/plugin-api.js.es6 index c4833d4b45e..7419562b747 100644 --- a/app/assets/javascripts/discourse/lib/plugin-api.js.es6 +++ b/app/assets/javascripts/discourse/lib/plugin-api.js.es6 @@ -11,6 +11,7 @@ import { preventCloak } from 'discourse/widgets/post-stream'; import { h } from 'virtual-dom'; import { addFlagProperty } from 'discourse/components/site-header'; import { addPopupMenuOptionsCallback } from 'discourse/controllers/composer'; +import { extraConnectorClass } from 'discourse/lib/plugin-connectors'; class PluginApi { constructor(version, container) { @@ -330,12 +331,33 @@ class PluginApi { addStorePluralization(thing, plural) { this.container.lookup("store:main").addPluralization(thing, plural); } + + /** + * Register a Connector class for a particular outlet and connector. + * + * For example, if the outlet is `user-profile-primary` and your connector + * template is called `my-connector.hbs`: + * + * ```javascript + * api.registerConnectorClass('user-profile-primary', 'my-connector', { + * shouldRender(args, component) { + * return component.siteSettings.my_plugin_enabled; + * } + * }); + * ``` + * + * For more information on connector classes, see: + * https://meta.discourse.org/t/important-changes-to-plugin-outlets-for-ember-2-10/54136 + **/ + registerConnectorClass(outletName, connectorName, klass) { + extraConnectorClass(`${outletName}/${connectorName}`, klass); + } } let _pluginv01; function getPluginApi(version) { version = parseFloat(version); - if (version <= 0.5) { + if (version <= 0.6) { if (!_pluginv01) { _pluginv01 = new PluginApi(version, Discourse.__container__); }