diff --git a/Readme.md b/Readme.md index 7e97180eb..edc7515a2 100644 --- a/Readme.md +++ b/Readme.md @@ -1,4 +1,4 @@ -[![License](https://img.shields.io/badge/License-GNU%20AGPL%20V3-green.svg?style=flat)](http://www.gnu.org/licenses/agpl-3.0.ru.html) ![Release](https://img.shields.io/badge/Release-v4.1.0-blue.svg?style=flat) +[![License](https://img.shields.io/badge/License-GNU%20AGPL%20V3-green.svg?style=flat)](http://www.gnu.org/licenses/agpl-3.0.ru.html) ![Release](https://img.shields.io/badge/Release-v4.1.1-blue.svg?style=flat) ## web-apps diff --git a/apps/common/main/lib/controller/Plugins.js b/apps/common/main/lib/controller/Plugins.js index 05a40c768..cc111a1fb 100644 --- a/apps/common/main/lib/controller/Plugins.js +++ b/apps/common/main/lib/controller/Plugins.js @@ -219,8 +219,12 @@ define([ onPluginShow: function(plugin, variationIndex) { var variation = plugin.get_Variations()[variationIndex]; if (variation.get_Visual()) { + var url = variation.get_Url(); + if (!/(^https?:\/\/)/i.test(url) && !/(^www.)/i.test(url)) + url = ((plugin.get_BaseUrl().length == 0) ? this.panelPlugins.pluginsPath : plugin.get_BaseUrl()) + url; + if (variation.get_InsideMode()) { - this.panelPlugins.openInsideMode(plugin.get_Name(), ((plugin.get_BaseUrl().length == 0) ? this.panelPlugins.pluginsPath : plugin.get_BaseUrl()) + variation.get_Url()); + this.panelPlugins.openInsideMode(plugin.get_Name(), url); } else { var me = this, arrBtns = variation.get_Buttons(), @@ -234,12 +238,11 @@ define([ }); } - var _baseUrl = (plugin.get_BaseUrl().length == 0) ? me.panelPlugins.pluginsPath : plugin.get_BaseUrl(); me.pluginDlg = new Common.Views.PluginDlg({ title: plugin.get_Name(), width: size[0], // inner width height: size[1], // inner height - url: _baseUrl + variation.get_Url(), + url: url, buttons: newBtns, toolcallback: _.bind(this.onToolClose, this) }); diff --git a/apps/common/main/lib/model/Plugin.js b/apps/common/main/lib/model/Plugin.js index 8c0ace1d0..82c22f5ed 100644 --- a/apps/common/main/lib/model/Plugin.js +++ b/apps/common/main/lib/model/Plugin.js @@ -65,7 +65,8 @@ define([ isUpdateOleOnResize: false, buttons: [], size: [800, 600], - initOnSelectionChanged: false + initOnSelectionChanged: false, + isRelativeUrl: true } } }); diff --git a/apps/common/main/lib/view/Plugins.js b/apps/common/main/lib/view/Plugins.js index 9a360a09c..e68c5104b 100644 --- a/apps/common/main/lib/view/Plugins.js +++ b/apps/common/main/lib/view/Plugins.js @@ -92,7 +92,7 @@ define([ enableKeyEvents: false, itemTemplate: _.template([ '
', - '
' + '<%= baseUrl %>' + '<% } else { %>' + this.pluginsPath + '<% } %>' + '<%= variations[currentVariation].get("icons")[(window.devicePixelRatio > 1) ? 1 : 0] %>);">
', + '
' + '<%= baseUrl %>' + '<% } else { %>' + this.pluginsPath + '<% } } %>' + '<%= variations[currentVariation].get("icons")[(window.devicePixelRatio > 1) ? 1 : 0] %>);">
', '<% if (variations.length>1) { %>', '
', '<% } %>', @@ -237,7 +237,7 @@ define([ var iframe = document.createElement("iframe"); iframe.id = 'plugin_iframe'; - iframe.name = 'pluginFrameEditor', + iframe.name = 'pluginFrameEditor'; iframe.width = '100%'; iframe.height = '100%'; iframe.align = "top"; @@ -249,7 +249,7 @@ define([ setTimeout(function(){ if (me.isLoaded) return; me.loadMask = new Common.UI.LoadMask({owner: $('#id-plugin-placeholder')}); - me.loadMask.setTitle(this.textLoading); + me.loadMask.setTitle(me.textLoading); me.loadMask.show(); if (me.isLoaded) me.loadMask.hide(); }, 500); diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 8996ee31a..c3e5f62f4 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -826,7 +826,7 @@ define([ application.getController('Common.Controllers.ExternalMergeEditor').setApi(this.api).loadConfig({config:this.editorConfig, customization: this.editorConfig.customization}); pluginsController.setApi(me.api); - me.updatePluginsList(me.plugins); + me.updatePlugins(me.plugins); me.api.asc_registerCallback('asc_onPluginsInit', _.bind(me.updatePluginsList, me)); documentHolderController.setApi(me.api); @@ -1721,6 +1721,60 @@ define([ if (url) this.iframePrint.src = url; }, + updatePlugins: function(plugins) { // plugins from config + if (!plugins || !plugins.pluginsData || plugins.pluginsData.length<1) 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 arr = [], + baseUrl = plugins.url; + plugins.pluginsData.forEach(function(item){ + var url = item; + if (!/(^https?:\/\/)/i.test(url) && !/(^www.)/i.test(item)) + url = baseUrl + item; + var value = _getPluginJson(url); + if (value) arr.push(value); + }); + + if (arr.length>0) + this.updatePluginsList({ + url: plugins.url, + pluginsData: arr + }); + }, + updatePluginsList: function(plugins) { var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), isEdit = this.appOptions.isEdit; @@ -1752,7 +1806,8 @@ define([ isUpdateOleOnResize : itemVar.isUpdateOleOnResize, buttons: itemVar.buttons, size: itemVar.size, - initOnSelectionChanged: itemVar.initOnSelectionChanged + initOnSelectionChanged: itemVar.initOnSelectionChanged, + isRelativeUrl: !(/(^https?:\/\/)/i.test(itemVar.url) || /(^www.)/i.test(itemVar.url)) })); }); if (variationsArr.length>0) diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index 898e2bf73..036cc7774 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -164,6 +164,7 @@ "Common.Views.Plugins.strPlugins": "Plugins", "Common.Views.Plugins.textLoading": "Loading", "Common.Views.Plugins.textStart": "Start", + "Common.Views.PluginDlg.textLoading": "Loading", "Common.Views.ReviewChanges.txtAccept": "Accept", "Common.Views.ReviewChanges.txtAcceptAll": "Accept All Changes", "Common.Views.ReviewChanges.txtAcceptCurrent": "Accept Current Change", diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js index d1a3953dd..a757db4bc 100644 --- a/apps/presentationeditor/main/app/controller/Main.js +++ b/apps/presentationeditor/main/app/controller/Main.js @@ -617,7 +617,7 @@ define([ application.getController('Common.Controllers.ExternalDiagramEditor').setApi(this.api).loadConfig({config:this.editorConfig, customization: this.editorConfig.customization}); pluginsController.setApi(me.api); - me.updatePluginsList(me.plugins); + me.updatePlugins(me.plugins); me.api.asc_registerCallback('asc_onPluginsInit', _.bind(me.updatePluginsList, me)); documentHolderController.setApi(me.api); @@ -1495,6 +1495,60 @@ define([ if (url) this.iframePrint.src = url; }, + updatePlugins: function(plugins) { // plugins from config + if (!plugins || !plugins.pluginsData || plugins.pluginsData.length<1) 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 arr = [], + baseUrl = plugins.url; + plugins.pluginsData.forEach(function(item){ + var url = item; + if (!/(^https?:\/\/)/i.test(url) && !/(^www.)/i.test(item)) + url = baseUrl + item; + var value = _getPluginJson(url); + if (value) arr.push(value); + }); + + if (arr.length>0) + this.updatePluginsList({ + url: plugins.url, + pluginsData: arr + }); + }, + updatePluginsList: function(plugins) { var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), isEdit = this.appOptions.isEdit; @@ -1526,7 +1580,8 @@ define([ isUpdateOleOnResize : itemVar.isUpdateOleOnResize, buttons: itemVar.buttons, size: itemVar.size, - initOnSelectionChanged: itemVar.initOnSelectionChanged + initOnSelectionChanged: itemVar.initOnSelectionChanged, + isRelativeUrl: !(/(^https?:\/\/)/i.test(itemVar.url) || /(^www.)/i.test(itemVar.url)) })); }); if (variationsArr.length>0) diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index bed18a9a0..2b3f5fa1f 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -96,6 +96,7 @@ "Common.Views.Plugins.strPlugins": "Plugins", "Common.Views.Plugins.textLoading": "Loading", "Common.Views.Plugins.textStart": "Start", + "Common.Views.PluginDlg.textLoading": "Loading", "PE.Controllers.LeftMenu.newDocumentTitle": "Unnamed presentation", "PE.Controllers.LeftMenu.requestEditRightsText": "Requesting editing rights...", "PE.Controllers.LeftMenu.textNoTextFound": "The data you have been searching for could not be found. Please adjust your search options.", diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 88bc52c9b..c67ed6301 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -599,7 +599,7 @@ define([ if (!me.appOptions.isEditMailMerge && !me.appOptions.isEditDiagram) { pluginsController.setApi(me.api); - me.updatePluginsList(me.plugins); + me.updatePlugins(me.plugins); me.api.asc_registerCallback('asc_onPluginsInit', _.bind(me.updatePluginsList, me)); } @@ -1724,6 +1724,60 @@ define([ if (url) this.iframePrint.src = url; }, + updatePlugins: function(plugins) { // plugins from config + if (!plugins || !plugins.pluginsData || plugins.pluginsData.length<1) 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 arr = [], + baseUrl = plugins.url; + plugins.pluginsData.forEach(function(item){ + var url = item; + if (!/(^https?:\/\/)/i.test(url) && !/(^www.)/i.test(item)) + url = baseUrl + item; + var value = _getPluginJson(url); + if (value) arr.push(value); + }); + + if (arr.length>0) + this.updatePluginsList({ + url: plugins.url, + pluginsData: arr + }); + }, + updatePluginsList: function(plugins) { var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), isEdit = this.appOptions.isEdit; @@ -1755,7 +1809,8 @@ define([ isUpdateOleOnResize : itemVar.isUpdateOleOnResize, buttons: itemVar.buttons, size: itemVar.size, - initOnSelectionChanged: itemVar.initOnSelectionChanged + initOnSelectionChanged: itemVar.initOnSelectionChanged, + isRelativeUrl: !(/(^https?:\/\/)/i.test(itemVar.url) || /(^www.)/i.test(itemVar.url)) })); }); if (variationsArr.length>0) diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index 0c6aaa354..6aa1ffd4f 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -91,6 +91,7 @@ "Common.Views.Plugins.strPlugins": "Plugins", "Common.Views.Plugins.textLoading": "Loading", "Common.Views.Plugins.textStart": "Start", + "Common.Views.PluginDlg.textLoading": "Loading", "SSE.Controllers.DocumentHolder.errorInvalidLink": "The link reference does not exist. Please correct the link or delete it.", "SSE.Controllers.DocumentHolder.guestText": "Guest", "SSE.Controllers.DocumentHolder.notcriticalErrorTitle": "Warning",