diff --git a/Readme.md b/Readme.md
index 7e97180eb..edc7515a2 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,4 +1,4 @@
-[](http://www.gnu.org/licenses/agpl-3.0.ru.html) 
+[](http://www.gnu.org/licenses/agpl-3.0.ru.html) 
## 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/common/main/resources/less/combobox.less b/apps/common/main/resources/less/combobox.less
index d4792cf34..061442ec9 100644
--- a/apps/common/main/resources/less/combobox.less
+++ b/apps/common/main/resources/less/combobox.less
@@ -83,7 +83,6 @@
img {
-webkit-filter: invert(100%) brightness(4);
filter: invert(100%) brightness(4);
- filter: url("data:image/svg+xml;utf8,
#invert");
}
canvas {
-webkit-filter: invert(100%) brightness(4);
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/documenteditor/main/resources/img/toolbar-menu.png b/apps/documenteditor/main/resources/img/toolbar-menu.png
index ddd5f5c0f..4a3467f6c 100644
Binary files a/apps/documenteditor/main/resources/img/toolbar-menu.png and b/apps/documenteditor/main/resources/img/toolbar-menu.png differ
diff --git a/apps/documenteditor/main/resources/img/toolbar-menu@2x.png b/apps/documenteditor/main/resources/img/toolbar-menu@2x.png
index fe4f7a030..018302470 100644
Binary files a/apps/documenteditor/main/resources/img/toolbar-menu@2x.png and b/apps/documenteditor/main/resources/img/toolbar-menu@2x.png differ
diff --git a/apps/documenteditor/main/resources/less/layout.less b/apps/documenteditor/main/resources/less/layout.less
index 4d8a7a52f..1215b908d 100644
--- a/apps/documenteditor/main/resources/less/layout.less
+++ b/apps/documenteditor/main/resources/less/layout.less
@@ -3,7 +3,6 @@ body {
height: 100%;
.user-select(none);
color: @gray-deep;
- position: fixed;
&.safari {
position: absolute;
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/presentationeditor/main/resources/img/toolbar-menu.png b/apps/presentationeditor/main/resources/img/toolbar-menu.png
index 5bae4a9cc..42d510813 100644
Binary files a/apps/presentationeditor/main/resources/img/toolbar-menu.png and b/apps/presentationeditor/main/resources/img/toolbar-menu.png differ
diff --git a/apps/presentationeditor/main/resources/img/toolbar-menu@2x.png b/apps/presentationeditor/main/resources/img/toolbar-menu@2x.png
index 6ab014c93..992df62b8 100644
Binary files a/apps/presentationeditor/main/resources/img/toolbar-menu@2x.png and b/apps/presentationeditor/main/resources/img/toolbar-menu@2x.png differ
diff --git a/apps/presentationeditor/main/resources/less/layout.less b/apps/presentationeditor/main/resources/less/layout.less
index dc442c17e..f9e3f5a12 100644
--- a/apps/presentationeditor/main/resources/less/layout.less
+++ b/apps/presentationeditor/main/resources/less/layout.less
@@ -3,7 +3,6 @@ body {
height: 100%;
.user-select(none);
color: @gray-deep;
- position: fixed;
&.safari {
position: absolute;
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",
diff --git a/apps/spreadsheeteditor/main/resources/img/toolbar-menu.png b/apps/spreadsheeteditor/main/resources/img/toolbar-menu.png
index 25a5ba568..056b97ccb 100644
Binary files a/apps/spreadsheeteditor/main/resources/img/toolbar-menu.png and b/apps/spreadsheeteditor/main/resources/img/toolbar-menu.png differ
diff --git a/apps/spreadsheeteditor/main/resources/img/toolbar-menu@2x.png b/apps/spreadsheeteditor/main/resources/img/toolbar-menu@2x.png
index f41b03647..e1d0233ae 100644
Binary files a/apps/spreadsheeteditor/main/resources/img/toolbar-menu@2x.png and b/apps/spreadsheeteditor/main/resources/img/toolbar-menu@2x.png differ
diff --git a/apps/spreadsheeteditor/main/resources/less/layout.less b/apps/spreadsheeteditor/main/resources/less/layout.less
index 4f77c4f4a..0e15cd67b 100644
--- a/apps/spreadsheeteditor/main/resources/less/layout.less
+++ b/apps/spreadsheeteditor/main/resources/less/layout.less
@@ -3,7 +3,6 @@ body {
height: 100%;
.user-select(none);
color: @gray-deep;
- position: fixed;
&.safari {
position: absolute;