diff --git a/apps/common/main/lib/view/Plugins.js b/apps/common/main/lib/view/Plugins.js index ef28ceaf6..004d4a986 100644 --- a/apps/common/main/lib/view/Plugins.js +++ b/apps/common/main/lib/view/Plugins.js @@ -72,7 +72,7 @@ define([ initialize: function(options) { _.extend(this, options); - this.pluginsPath = '../../../../sdkjs-plugins/'; + this.pluginsPath = ''; this._locked = false; this._state = { DisabledControls: true diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index c4deb65a4..3f38a586f 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -864,6 +864,7 @@ define([ pluginsController.setApi(me.api); me.updatePlugins(me.plugins, false); + me.requestPlugins('../../../../sdkjs-plugins/config.json'); me.api.asc_registerCallback('asc_onPluginsInit', _.bind(me.updatePluginsList, me)); documentHolderController.setApi(me.api); @@ -1852,6 +1853,48 @@ define([ if (url) this.iframePrint.src = url; }, + requestPlugins: function(pluginsPath) { // request plugins + if (!pluginsPath) return; + + var _createXMLHTTPObject = function() { + var xmlhttp; + try { + xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); + } + catch (e) { + try { + xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); + } + catch (E) { + xmlhttp = false; + } + } + if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { + xmlhttp = new XMLHttpRequest(); + } + return xmlhttp; + }; + + var _getPluginJson = function(plugin) { + if (!plugin) return ''; + try { + var xhrObj = _createXMLHTTPObject(); + if (xhrObj && plugin) { + xhrObj.open('GET', plugin, false); + xhrObj.send(''); + var pluginJson = eval("(" + xhrObj.responseText + ")"); + return pluginJson; + } + } + catch (e) {} + return null; + }; + + var value = _getPluginJson(pluginsPath); + if (value) + this.updatePlugins(value, false); + }, + updatePlugins: function(plugins, uiCustomize) { // plugins from config if (!plugins) return; @@ -1892,20 +1935,17 @@ define([ return null; }; - var arr = [], - baseUrl = plugins.url; + var arr = []; pluginsData.forEach(function(item){ - var url = item; - if (!/(^https?:\/\/)/i.test(url) && !/(^www.)/i.test(item)) - url = baseUrl + item; - var value = _getPluginJson(url); + var url = item, + value = _getPluginJson(url); + value.baseUrl = url.substring(0, url.lastIndexOf("config.json")); if (value) arr.push(value); }); if (arr.length>0) this.updatePluginsList({ autoStartGuid: plugins.autoStartGuid, - url: plugins.url, pluginsData: arr }, !!uiCustomize); }, @@ -1927,7 +1967,7 @@ define([ } if (isSupported && (isEdit || itemVar.isViewer)) { var isRelativeUrl = !(/(^https?:\/\/)/i.test(itemVar.url) || /(^www.)/i.test(itemVar.url)); - item.isUICustomizer ? arrUI.push((isRelativeUrl) ? ((item.baseUrl ? item.baseUrl : plugins.url) + itemVar.url) : itemVar.url) : + item.isUICustomizer ? arrUI.push((isRelativeUrl) ? (item.baseUrl + itemVar.url) : itemVar.url) : variationsArr.push(new Common.Models.PluginVariation({ description: itemVar.description, index: variationsArr.length,