[Common mobile] Add load and register plugins

This commit is contained in:
Julia Svinareva 2019-07-09 17:38:53 +03:00
parent 85d76282c1
commit 6d517a28f9

View file

@ -57,6 +57,8 @@ define([
var modal; var modal;
return { return {
configPlugins: {autostart:[]},// {config: 'from editor config', plugins: 'loaded plugins', UIplugins: 'loaded customization plugins', autostart: 'autostart guids'}
serverPlugins: {autostart:[]},
models: [], models: [],
collections: [], collections: [],
views: [ views: [
@ -71,9 +73,11 @@ define([
this.api.asc_registerCallback("asc_onPluginShow", _.bind(this.showPluginModal, this)); this.api.asc_registerCallback("asc_onPluginShow", _.bind(this.showPluginModal, this));
this.api.asc_registerCallback("asc_onPluginClose", _.bind(this.pluginClose, this)); this.api.asc_registerCallback("asc_onPluginClose", _.bind(this.pluginClose, this));
this.api.asc_registerCallback("asc_onPluginResize", _.bind(this.pluginResize, this)); this.api.asc_registerCallback("asc_onPluginResize", _.bind(this.pluginResize, this));
this.loadPlugins();
}, },
onLaunch: function () { onLaunch: function () {
Common.Gateway.on('init', this.loadConfig.bind(this));
}, },
setMode: function(mode) { setMode: function(mode) {
@ -173,6 +177,84 @@ define([
} }
}, },
loadConfig: function(data) {
this.configPlugins.config = data.config.plugins;
},
loadPlugins: function() {
var me = this;
if (me.configPlugins.config) {
me.configPlugins.plugins = me.getPlugins(me.configPlugins.config);
me.registerPlugins();
} else {
me.configPlugins.plugins = false;
}
var server_plugins_url = '../../../../plugins.json';
Common.Utils.loadConfig(server_plugins_url, function (obj) {
if ( obj != 'error' ) {
me.serverPlugins.config = obj;
me.serverPlugins.plugins = me.getPlugins(me.serverPlugins.config);
me.registerPlugins();
} else
me.serverPlugins.config = false;
});
},
registerPlugins: function() {
var me = this;
if (me.serverPlugins.plugins && me.configPlugins.plugins) {
var arr = me.configPlugins.plugins;
arr = arr.concat(me.serverPlugins.plugins);
me.api.asc_pluginsRegister('', arr);
} else if (me.serverPlugins.plugins) {
me.api.asc_pluginsRegister('', me.serverPlugins.plugins);
} else {
me.api.asc_pluginsRegister('', me.configPlugins.plugins);
}
},
getPlugins: function(pluginsConfig) {
var arrPluginsConfigs = [];
pluginsConfig.pluginsData.forEach(function(item) {
var value = window["Asc"].loadConfigAsInterface(item);
value["baseUrl"] = item.substring(0, item.lastIndexOf("config.json"));
arrPluginsConfigs.push(value);
});
var arrPlugins = [];
arrPluginsConfigs.forEach(function (item) {
var plugin = new Asc.CPlugin();
plugin["set_Name"](item["name"]);
plugin["set_Guid"](item["guid"]);
plugin["set_BaseUrl"](item["baseUrl"]);
var variations = item["variations"];
var variationsArr = [];
variations.forEach(function (itemVar) {
var variation = new Asc.CPluginVariation();
variation["set_Description"](itemVar["description"]);
variation["set_Url"](itemVar["url"]);
variation["set_Icons"](itemVar["icons"]);
variation["set_Visual"](itemVar["isVisual"]);
variation["set_CustomWindow"](itemVar["'isCustomWindow"]);
variation["set_System"](itemVar["isSystem"]);
variation["set_Viewer"](itemVar["isViewer"]);
variation["set_EditorsSupport"](itemVar["EditorsSupport"]);
variation["set_Modal"](itemVar["isModal"]);
variation["set_InsideMode"](itemVar["isInsideMode"]);
variation["set_InitDataType"](itemVar["initDataType"]);
variation["set_InitData"](itemVar["initData"]);
variation["set_UpdateOleOnResize"](itemVar["isUpdateOleOnResize"]);
variation["set_Buttons"](itemVar["buttons"]);
variation["set_Size"](itemVar["size"]);
variation["set_InitOnSelectionChanged"](itemVar["initOnSelectionChanged"]);
variation["set_Events"](itemVar["events"]);
variationsArr.push(variation);
});
plugin["set_Variations"](variationsArr);
arrPlugins.push(plugin);
});
return arrPlugins;
},
textCancel: 'Cancel', textCancel: 'Cancel',
textLoading: 'Loading' textLoading: 'Loading'
} }