Merge pull request #4657 from gdpelican/reopen-widget

Add reopenWidget method
This commit is contained in:
Robin Ward 2017-02-01 13:18:55 -05:00 committed by GitHub
commit cef8a0af34
2 changed files with 23 additions and 2 deletions

View File

@ -5,7 +5,7 @@ import { addButton } from 'discourse/widgets/post-menu';
import { includeAttributes } from 'discourse/lib/transform-post';
import { addToolbarCallback } from 'discourse/components/d-editor';
import { addWidgetCleanCallback } from 'discourse/components/mount-widget';
import { createWidget, decorateWidget, changeSetting } from 'discourse/widgets/widget';
import { createWidget, reopenWidget, decorateWidget, changeSetting } from 'discourse/widgets/widget';
import { onPageChange } from 'discourse/lib/page-tracker';
import { preventCloak } from 'discourse/widgets/post-stream';
import { h } from 'virtual-dom';
@ -307,6 +307,16 @@ class PluginApi {
return createWidget(name, args);
}
/**
* Exposes the widget update ability to plugins. Updates the widget
* registry for the given widget name to include the properties on args
* See `reopenWidget` in `discourse/widgets/widget` from more ifo.
**/
reopenWidget(name, args) {
return reopenWidget(name, args);
}
/**
* Adds a property that can be summed for calculating the flag counter
**/
@ -357,7 +367,7 @@ class PluginApi {
let _pluginv01;
function getPluginApi(version) {
version = parseFloat(version);
if (version <= 0.6) {
if (version <= 0.7) {
if (!_pluginv01) {
_pluginv01 = new PluginApi(version, Discourse.__container__);
}

View File

@ -125,6 +125,17 @@ export function createWidget(name, opts) {
return result;
}
export function reopenWidget(name, opts) {
let existing = _registry[name];
if (!existing) {
console.error(`Could not find widget ${name} in registry`);
return
}
Object.keys(opts).forEach(k => existing.prototype[k] = opts[k]);
return existing;
}
export default class Widget {
constructor(attrs, register, opts) {
opts = opts || {};