diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js
index 2730020263..2d634f94d4 100644
--- a/apps/common/main/lib/controller/ReviewChanges.js
+++ b/apps/common/main/lib/controller/ReviewChanges.js
@@ -557,6 +557,7 @@ define([
app.getController('RightMenu').SetDisabled(disable, false);
app.getController('Statusbar').getView('Statusbar').SetDisabled(disable);
app.getController('DocumentHolder').getView().SetDisabled(disable);
+ app.getController('Common.Controllers.Plugins').getView('Common.Views.Plugins').disableControls(disable);
var leftMenu = app.getController('LeftMenu').leftMenu;
leftMenu.btnComments.setDisabled(disable);
diff --git a/apps/common/main/lib/view/Plugins.js b/apps/common/main/lib/view/Plugins.js
index cdadc1bf86..fe7ded1dec 100644
--- a/apps/common/main/lib/view/Plugins.js
+++ b/apps/common/main/lib/view/Plugins.js
@@ -74,7 +74,7 @@ define([
_.extend(this, options);
this._locked = false;
this._state = {
- DisabledControls: true
+ DisabledControls: false
};
this.lockedControls = [];
Common.UI.BaseView.prototype.initialize.call(this, arguments);
diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js
index 496287233f..a090b4f029 100644
--- a/apps/documenteditor/main/app/controller/Main.js
+++ b/apps/documenteditor/main/app/controller/Main.js
@@ -347,6 +347,7 @@ define([
}
this.api.asc_registerCallback('asc_onGetEditorPermissions', _.bind(this.onEditorPermissions, this));
+ this.api.asc_registerCallback('asc_onLicenseChanged', _.bind(this.onLicenseChanged, this));
this.api.asc_setDocInfo(docInfo);
this.api.asc_getEditorPermissions(this.editorConfig.licenseUrl, this.editorConfig.customerId);
@@ -953,6 +954,8 @@ define([
me.fillTextArt(me.api.asc_getTextArtPreviews());
Common.NotificationCenter.trigger('document:ready', 'main');
+
+ me.applyLicense();
}
}, 50);
} else {
@@ -973,9 +976,24 @@ define([
Common.Gateway.sendInfo({mode:me.appOptions.isEdit?'edit':'view'});
$(document).on('contextmenu', _.bind(me.onContextMenu, me));
+ },
+ onLicenseChanged: function(params) {
+ var licType = params.asc_getLicenseType();
+ if (licType !== undefined && (licType===Asc.c_oLicenseResult.Connections || licType===Asc.c_oLicenseResult.UsersCount) && this.appOptions.canEdit && this.editorConfig.mode !== 'view') {
+ this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) ? this.warnNoLicense : this.warnNoLicenseUsers;
+ }
+
+ if (this._isDocReady)
+ this.applyLicense();
+ },
+
+ applyLicense: function() {
if (this._state.licenseWarning) {
- value = Common.localStorage.getItem("de-license-warning");
+ this.disableEditing(true);
+ Common.NotificationCenter.trigger('api:disconnect');
+
+ var value = Common.localStorage.getItem("de-license-warning");
value = (value!==null) ? parseInt(value) : 0;
var now = (new Date).getTime();
if (now - value > 86400000) {
@@ -983,7 +1001,7 @@ define([
Common.UI.info({
width: 500,
title: this.textNoLicenseTitle,
- msg : this.warnNoLicense,
+ msg : this._state.licenseWarning,
buttons: [
{value: 'buynow', caption: this.textBuyNow},
{value: 'contact', caption: this.textContactUs}
@@ -1072,8 +1090,6 @@ define([
this.appOptions.canDownloadOrigin = this.permissions.download !== false && (type && typeof type[1] === 'string');
this.appOptions.canDownload = this.permissions.download !== false && (!type || typeof type[1] !== 'string');
- this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) && this.appOptions.canEdit && this.editorConfig.mode !== 'view';
-
this.appOptions.canBranding = (licType === Asc.c_oLicenseResult.Success) && (typeof this.editorConfig.customization == 'object');
if (this.appOptions.canBranding)
appHeader.setBranding(this.editorConfig.customization);
@@ -2183,7 +2199,8 @@ define([
txtEvenPage: "Even Page ",
txtOddPage: "Odd Page ",
txtSameAsPrev: "Same as Previous",
- txtCurrentDocument: "Current Document"
+ txtCurrentDocument: "Current Document",
+ warnNoLicenseUsers: 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.'
}
})(), DE.Controllers.Main || {}))
});
\ No newline at end of file
diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js
index 1dc626efff..d812cda174 100644
--- a/apps/documenteditor/main/app/controller/Toolbar.js
+++ b/apps/documenteditor/main/app/controller/Toolbar.js
@@ -2756,6 +2756,7 @@ define([
onApiCoAuthoringDisconnect: function(disableDownload) {
this.toolbar.setMode({isDisconnected:true, disableDownload: !!disableDownload});
this.editMode = false;
+ this.DisableToolbar(true, true);
},
DisableToolbar: function(disable, viewMode, reviewmode) {
diff --git a/apps/documenteditor/main/app/view/LeftMenu.js b/apps/documenteditor/main/app/view/LeftMenu.js
index 9670f0c5f0..40da13f047 100644
--- a/apps/documenteditor/main/app/view/LeftMenu.js
+++ b/apps/documenteditor/main/app/view/LeftMenu.js
@@ -351,6 +351,7 @@ define([
},
showHistory: function() {
+ this._state.pluginIsRunning = false;
this.panelHistory.show();
this.panelHistory.$el.width((parseInt(Common.localStorage.getItem('de-mainmenu-width')) || MENU_SCALE_PART) - SCALE_MIN);
Common.NotificationCenter.trigger('layout:changed', 'history');
@@ -366,8 +367,9 @@ define([
}
this.developerHint.toggleClass('hidden', !mode);
- var lastbtn = this.$el.find('button.btn-category:visible:last-of-type');
- this.minDevPosition = lastbtn.offset().top - lastbtn.offsetParent().offset().top + lastbtn.height() + 20;
+ var btns = this.$el.find('button.btn-category:visible'),
+ lastbtn = (btns.length>0) ? $(btns[btns.length-1]) : null;
+ this.minDevPosition = (lastbtn) ? (lastbtn.offset().top - lastbtn.offsetParent().offset().top + lastbtn.height() + 20) : 20;
this.onWindowResize();
},
diff --git a/apps/documenteditor/main/app/view/Statusbar.js b/apps/documenteditor/main/app/view/Statusbar.js
index 8b748d4e60..05b758bb8a 100644
--- a/apps/documenteditor/main/app/view/Statusbar.js
+++ b/apps/documenteditor/main/app/view/Statusbar.js
@@ -86,7 +86,7 @@ define([
me.btnZoomDown.updateHint(me.tipZoomOut + Common.Utils.String.platformKey('Ctrl+-'));
me.btnZoomUp.updateHint(me.tipZoomIn + Common.Utils.String.platformKey('Ctrl++'));
- if ( config.isEdit ) {
+ if (me.btnLanguage && me.btnLanguage.cmpEl) {
me.btnLanguage.updateHint(me.tipSetLang);
me.btnLanguage.cmpEl.on({
'show.bs.dropdown': function () {
@@ -325,6 +325,7 @@ define([
if (this.api) {
this.api.asc_registerCallback('asc_onCountPages', _.bind(_onCountPages, this));
this.api.asc_registerCallback('asc_onCurrentPage', _.bind(_onCurrentPage, this));
+ Common.NotificationCenter.on('api:disconnect', _.bind(this.onApiCoAuthoringDisconnect, this));
}
return this;
@@ -356,7 +357,7 @@ define([
this.langMenu.doLayout();
if (this.langMenu.items.length>0) {
- this.btnLanguage.setDisabled(false);
+ this.btnLanguage.setDisabled(!!this.mode.isDisconnected);
}
},
@@ -393,6 +394,11 @@ define([
this.btnLanguage.setDisabled(disable || !langs);
},
+ onApiCoAuthoringDisconnect: function() {
+ this.setMode({isDisconnected:true});
+ this.SetDisabled(true);
+ },
+
pageIndexText : 'Page {0} of {1}',
goToPageText : 'Go to Page',
tipFitPage : 'Fit to Page',
diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js
index c921443a25..13be79f3a5 100644
--- a/apps/documenteditor/main/app/view/Toolbar.js
+++ b/apps/documenteditor/main/app/view/Toolbar.js
@@ -2076,59 +2076,8 @@ define([
button.setDisabled(true);
}
});
- this.btnCopy.setDisabled(true);
- this.btnPaste.setDisabled(true);
- this.btnUndo.setDisabled(true);
- this.btnRedo.setDisabled(true);
- this.btnIncFontSize.setDisabled(true);
- this.btnDecFontSize.setDisabled(true);
- this.btnBold.setDisabled(true);
- this.btnItalic.setDisabled(true);
- this.btnUnderline.setDisabled(true);
- this.btnStrikeout.setDisabled(true);
- this.btnSuperscript.setDisabled(true);
- this.btnSubscript.setDisabled(true);
- this.btnHighlightColor.setDisabled(true);
- this.btnFontColor.setDisabled(true);
- this.btnParagraphColor.setDisabled(true);
- this.btnMarkers.setDisabled(true);
- this.btnNumbers.setDisabled(true);
- this.btnMultilevels.setDisabled(true);
- this.btnAlignLeft.setDisabled(true);
- this.btnAlignCenter.setDisabled(true);
- this.btnAlignRight.setDisabled(true);
- this.btnAlignJust.setDisabled(true);
- this.btnDecLeftOffset.setDisabled(true);
- this.btnIncLeftOffset.setDisabled(true);
- this.btnLineSpace.setDisabled(true);
- this.btnShowHidenChars.setDisabled(true);
- this.btnInsertTable.setDisabled(true);
- this.btnInsertImage.setDisabled(true);
- this.btnInsertChart.setDisabled(true);
- this.btnInsertText.setDisabled(true);
- this.btnInsertTextArt.setDisabled(true);
- this.btnDropCap.setDisabled(true);
- this.btnColumns.setDisabled(true);
- this.btnInsertHyperlink.setDisabled(true);
- this.btnEditHeader.setDisabled(true);
- this.btnInsertShape.setDisabled(true);
- this.btnInsertEquation.setDisabled(true);
- this.btnPageOrient.setDisabled(true);
- this.btnPageMargins.setDisabled(true);
- this.btnPageSize.setDisabled(true);
- this.btnClearStyle.setDisabled(true);
- this.btnCopyStyle.setDisabled(true);
- this.btnColorSchemas.setDisabled(true);
- this.btnMailRecepients.setDisabled(true);
- this.btnHorizontalAlign.setDisabled(true);
- this.cmbFontName.setDisabled(true);
- this.cmbFontSize.setDisabled(true);
- this.listStyles.setDisabled(true);
- this.btnNotes.setDisabled(true);
if (mode.disableDownload)
this.btnPrint.setDisabled(true);
-
- this.btnsPageBreak.disable(true);
}
this.mode = mode;
diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json
index 920dcefacc..d1b233dab1 100644
--- a/apps/documenteditor/main/locale/en.json
+++ b/apps/documenteditor/main/locale/en.json
@@ -429,6 +429,7 @@
"DE.Controllers.Main.warnBrowserZoom": "Your browser current zoom setting is not fully supported. Please reset to the default zoom by pressing Ctrl+0.",
"DE.Controllers.Main.warnLicenseExp": "Your license has expired.
Please update your license and refresh the page.",
"DE.Controllers.Main.warnNoLicense": "This version of ONLYOFFICE Editors has certain limitations for concurrent connections to the document server.
If you need more please consider upgrading your current license or purchasing a commercial one.",
+ "DE.Controllers.Main.warnNoLicenseUsers": "This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.",
"DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
"DE.Controllers.Statusbar.textHasChanges": "New changes have been tracked",
"DE.Controllers.Statusbar.textTrackChanges": "The document is opened with the Track Changes mode enabled",
diff --git a/apps/documenteditor/main/resources/help/en/Contents.json b/apps/documenteditor/main/resources/help/en/Contents.json
index 12879ec724..78f5aa4f56 100644
--- a/apps/documenteditor/main/resources/help/en/Contents.json
+++ b/apps/documenteditor/main/resources/help/en/Contents.json
@@ -29,7 +29,6 @@
{"src": "UsageInstructions/InsertFootnotes.htm", "name": "Insert footnotes" },
{"src": "UsageInstructions/InsertEquation.htm", "name": "Insert equations" },
{"src": "UsageInstructions/InsertTextObjects.htm", "name": "Insert text objects" },
- {"src": "UsageInstructions/InsertRichTextContentControls.htm", "name": "Create forms" },
{"src": "UsageInstructions/UseMailMerge.htm", "name": "Use mail merge"},
{"src": "UsageInstructions/ViewDocInfo.htm", "name": "View document information"},
{"src": "UsageInstructions/SavePrintDownload.htm", "name": "Save/download/print your document"},
diff --git a/apps/documenteditor/main/resources/help/ru/Contents.json b/apps/documenteditor/main/resources/help/ru/Contents.json
index 2f66770fc4..0faf411c95 100644
--- a/apps/documenteditor/main/resources/help/ru/Contents.json
+++ b/apps/documenteditor/main/resources/help/ru/Contents.json
@@ -29,7 +29,6 @@
{"src": "UsageInstructions/InsertFootnotes.htm", "name": "Вставка сносок" },
{"src": "UsageInstructions/InsertEquation.htm", "name": "Вставка формул" },
{"src": "UsageInstructions/InsertTextObjects.htm", "name": "Вставка текстовых объектов" },
- {"src": "UsageInstructions/InsertRichTextContentControls.htm", "name": "Создание форм" },
{"src": "UsageInstructions/UseMailMerge.htm", "name": "Использование слияния"},
{"src":"UsageInstructions/ViewDocInfo.htm", "name": "Просмотр сведений о документе"},
{"src":"UsageInstructions/SavePrintDownload.htm", "name": "Сохранение/загрузка/печать документа"},
diff --git a/apps/documenteditor/mobile/app/controller/DocumentHolder.js b/apps/documenteditor/mobile/app/controller/DocumentHolder.js
index 127777c597..99df189900 100644
--- a/apps/documenteditor/mobile/app/controller/DocumentHolder.js
+++ b/apps/documenteditor/mobile/app/controller/DocumentHolder.js
@@ -88,6 +88,7 @@ define([
me.api.asc_registerCallback('asc_onAuthParticipantsChanged',_.bind(me.onApiUsersChanged, me));
me.api.asc_registerCallback('asc_onConnectionStateChanged', _.bind(me.onApiUserConnection, me));
me.api.asc_registerCallback('asc_onDocumentContentReady', _.bind(me.onApiDocumentContentReady, me));
+ Common.NotificationCenter.on('api:disconnect', _.bind(me.onCoAuthoringDisconnect, me));
me.api.asc_coAuthoringGetUsers();
},
@@ -344,7 +345,7 @@ define([
items[indexAfter] = items.splice(indexBefore, 1, items[indexAfter])[0];
};
- if (!objectLocked && _isEdit) {
+ if (!objectLocked && _isEdit && !me.isDisconnected) {
if (canCopy) {
menuItems.push({
caption: me.menuCut,
@@ -399,6 +400,10 @@ define([
return menuItems;
},
+ onCoAuthoringDisconnect: function() {
+ this.isDisconnected = true;
+ },
+
textGuest: 'Guest',
menuCut: 'Cut',
menuCopy: 'Copy',
diff --git a/apps/documenteditor/mobile/app/controller/Main.js b/apps/documenteditor/mobile/app/controller/Main.js
index aeb6c87926..64b3052029 100644
--- a/apps/documenteditor/mobile/app/controller/Main.js
+++ b/apps/documenteditor/mobile/app/controller/Main.js
@@ -237,6 +237,7 @@ define([
}
this.api.asc_registerCallback('asc_onGetEditorPermissions', _.bind(this.onEditorPermissions, this));
+ this.api.asc_registerCallback('asc_onLicenseChanged', _.bind(this.onLicenseChanged, this));
this.api.asc_setDocInfo(docInfo);
this.api.asc_getEditorPermissions(this.editorConfig.licenseUrl, this.editorConfig.customerId);
@@ -551,10 +552,27 @@ define([
me.api.zoomFitToWidth();
}
- DE.getController('Toolbar').activateControls();
+ me.applyLicense();
+ },
+ onLicenseChanged: function(params) {
+ var licType = params.asc_getLicenseType();
+ if (licType !== undefined && (licType===Asc.c_oLicenseResult.Connections || licType===Asc.c_oLicenseResult.UsersCount) && this.appOptions.canEdit && this.editorConfig.mode !== 'view') {
+ this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) ? this.warnNoLicense : this.warnNoLicenseUsers;
+ }
+
+ if (this._isDocReady && this._state.licenseWarning)
+ this.applyLicense();
+ },
+
+ applyLicense: function() {
+ var me = this;
if (me._state.licenseWarning) {
- value = Common.localStorage.getItem("de-license-warning");
+ DE.getController('Toolbar').activateViewControls();
+ DE.getController('Toolbar').deactivateEditControls();
+ Common.NotificationCenter.trigger('api:disconnect');
+
+ var value = Common.localStorage.getItem("de-license-warning");
value = (value!==null) ? parseInt(value) : 0;
var now = (new Date).getTime();
@@ -562,7 +580,7 @@ define([
Common.localStorage.setItem("de-license-warning", now);
uiApp.modal({
title: me.textNoLicenseTitle,
- text : me.warnNoLicense,
+ text : me._state.licenseWarning,
buttons: [
{
text: me.textBuyNow,
@@ -577,10 +595,11 @@ define([
window.open('mailto:sales@onlyoffice.com', "_blank");
}
}
- ],
+ ]
});
}
- }
+ } else
+ DE.getController('Toolbar').activateControls();
},
onOpenDocument: function(progress) {
@@ -638,8 +657,6 @@ define([
me.appOptions.canDownload = me.permissions.download !== false && (!type || typeof type[1] !== 'string');
me.appOptions.canReader = (!type || typeof type[1] !== 'string');
- me._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) && me.appOptions.canEdit && me.editorConfig.mode !== 'view';
-
me.appOptions.canBranding = (licType === Asc.c_oLicenseResult.Success) && (typeof me.editorConfig.customization == 'object');
me.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof me.editorConfig.customization == 'object');
@@ -1260,7 +1277,8 @@ define([
txtStyle_Subtitle: 'Subtitle',
txtStyle_Quote: 'Quote',
txtStyle_Intense_Quote: 'Intense Quote',
- txtStyle_List_Paragraph: 'List Paragraph'
+ txtStyle_List_Paragraph: 'List Paragraph',
+ warnNoLicenseUsers: 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.'
}
})(), DE.Controllers.Main || {}))
});
\ No newline at end of file
diff --git a/apps/documenteditor/mobile/app/controller/Toolbar.js b/apps/documenteditor/mobile/app/controller/Toolbar.js
index 2da2aca066..3c124346a1 100644
--- a/apps/documenteditor/mobile/app/controller/Toolbar.js
+++ b/apps/documenteditor/mobile/app/controller/Toolbar.js
@@ -79,6 +79,7 @@ define([
this.api.asc_registerCallback('asc_onCanUndo', _.bind(this.onApiCanRevert, this, 'undo'));
this.api.asc_registerCallback('asc_onCanRedo', _.bind(this.onApiCanRevert, this, 'redo'));
this.api.asc_registerCallback('asc_onFocusObject', _.bind(this.onApiFocusObject, this));
+ Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
},
setMode: function (mode) {
@@ -138,6 +139,8 @@ define([
// API handlers
onApiCanRevert: function(which, can) {
+ if (this.isDisconnected) return;
+
if (which == 'undo') {
$('#toolbar-undo').toggleClass('disabled', !can);
} else {
@@ -146,6 +149,8 @@ define([
},
onApiFocusObject: function (objects) {
+ if (this.isDisconnected) return;
+
if (objects.length > 0) {
var topObject = _.find(objects.reverse(), function (obj) {
return obj.get_ObjectType() != Asc.c_oAscTypeSelectElement.SpellCheck;
@@ -161,6 +166,18 @@ define([
$('#toolbar-edit, #toolbar-add, #toolbar-settings, #toolbar-search, #document-back').removeClass('disabled');
},
+ activateViewControls: function() {
+ $('#toolbar-search, #document-back').removeClass('disabled');
+ },
+
+ deactivateEditControls: function() {
+ $('#toolbar-edit, #toolbar-add, #toolbar-settings').addClass('disabled');
+ },
+
+ onCoAuthoringDisconnect: function() {
+ this.isDisconnected = true;
+ },
+
dlgLeaveTitleText : 'You leave the application',
dlgLeaveMsgText : 'You have unsaved changes in this document. Click \'Stay on this Page\' to await the autosave of the document. Click \'Leave this Page\' to discard all the unsaved changes.',
leaveButtonText : 'Leave this Page',
diff --git a/apps/documenteditor/mobile/locale/en.json b/apps/documenteditor/mobile/locale/en.json
index 8566719082..e335735a91 100644
--- a/apps/documenteditor/mobile/locale/en.json
+++ b/apps/documenteditor/mobile/locale/en.json
@@ -147,6 +147,7 @@
"DE.Controllers.Main.uploadImageTitleText": "Uploading Image",
"DE.Controllers.Main.warnLicenseExp": "Your license has expired.
Please update your license and refresh the page.",
"DE.Controllers.Main.warnNoLicense": "This version of ONLYOFFICE Editors has certain limitations for concurrent connections to the document server.
If you need more please consider upgrading your current license or purchasing a commercial one.",
+ "DE.Controllers.Main.warnNoLicenseUsers": "This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.",
"DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
"DE.Controllers.Search.textNoTextFound": "Text not Found",
"DE.Controllers.Search.textReplaceAll": "Replace All",
diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js
index 3a327ba145..6c8c004ee8 100644
--- a/apps/presentationeditor/main/app/controller/Main.js
+++ b/apps/presentationeditor/main/app/controller/Main.js
@@ -323,6 +323,7 @@ define([
}
this.api.asc_registerCallback('asc_onGetEditorPermissions', _.bind(this.onEditorPermissions, this));
+ this.api.asc_registerCallback('asc_onLicenseChanged', _.bind(this.onLicenseChanged, this));
this.api.asc_setDocInfo(docInfo);
this.api.asc_getEditorPermissions(this.editorConfig.licenseUrl, this.editorConfig.customerId);
@@ -719,6 +720,8 @@ define([
me.api.UpdateInterfaceState();
Common.NotificationCenter.trigger('document:ready', 'main');
+
+ me.applyLicense();
}
}, 50);
} else {
@@ -738,17 +741,32 @@ define([
Common.Gateway.sendInfo({mode:me.appOptions.isEdit?'edit':'view'});
$(document).on('contextmenu', _.bind(me.onContextMenu, me));
+ },
+ onLicenseChanged: function(params) {
+ var licType = params.asc_getLicenseType();
+ if (licType !== undefined && (licType===Asc.c_oLicenseResult.Connections || licType===Asc.c_oLicenseResult.UsersCount) && this.appOptions.canEdit && this.editorConfig.mode !== 'view') {
+ this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) ? this.warnNoLicense : this.warnNoLicenseUsers;
+ }
+
+ if (this._isDocReady)
+ this.applyLicense();
+ },
+
+ applyLicense: function() {
if (this._state.licenseWarning) {
- value = Common.localStorage.getItem("pe-license-warning");
+ this.disableEditing(true);
+ Common.NotificationCenter.trigger('api:disconnect');
+
+ var value = Common.localStorage.getItem("pe-license-warning");
value = (value!==null) ? parseInt(value) : 0;
var now = (new Date).getTime();
if (now - value > 86400000) {
- Common.localStorage.setItem("de-license-warning", now);
+ Common.localStorage.setItem("pe-license-warning", now);
Common.UI.info({
width: 500,
title: this.textNoLicenseTitle,
- msg : this.warnNoLicense,
+ msg : this._state.licenseWarning,
buttons: [
{value: 'buynow', caption: this.textBuyNow},
{value: 'contact', caption: this.textContactUs}
@@ -765,6 +783,15 @@ define([
}
},
+ disableEditing: function(disable) {
+ var app = this.getApplication();
+ if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') {
+ app.getController('RightMenu').getView('RightMenu').clearSelection();
+ app.getController('Toolbar').DisableToolbar(disable);
+ app.getController('Statusbar').getView('Statusbar').SetDisabled(disable);
+ }
+ },
+
onOpenDocument: function(progress) {
var elem = document.getElementById('loadmask-text');
var proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount());
@@ -812,8 +839,6 @@ define([
this.appOptions.trialMode = params.asc_getLicenseMode();
this.appOptions.canProtect = this.appOptions.isDesktopApp && this.api.asc_isSignaturesSupport();
- this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) && this.appOptions.canEdit && this.editorConfig.mode !== 'view';
-
this.appOptions.canBranding = (licType === Asc.c_oLicenseResult.Success) && (typeof this.editorConfig.customization == 'object');
if (this.appOptions.canBranding)
appHeader.setBranding(this.editorConfig.customization);
@@ -1946,7 +1971,8 @@ define([
saveTitleText: 'Saving Document',
saveTextText: 'Saving document...',
txtLoading: 'Loading...',
- txtAddNotes: 'Click to add notes'
+ txtAddNotes: 'Click to add notes',
+ warnNoLicenseUsers: 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.'
}
})(), PE.Controllers.Main || {}))
});
diff --git a/apps/presentationeditor/main/app/view/LeftMenu.js b/apps/presentationeditor/main/app/view/LeftMenu.js
index 7e7a77736e..5bd9deb5c1 100644
--- a/apps/presentationeditor/main/app/view/LeftMenu.js
+++ b/apps/presentationeditor/main/app/view/LeftMenu.js
@@ -364,8 +364,9 @@ define([
}
this.developerHint.toggleClass('hidden', !mode);
- var lastbtn = this.$el.find('button.btn-category:visible:last-of-type');
- this.minDevPosition = lastbtn.offset().top - lastbtn.offsetParent().offset().top + lastbtn.height() + 20;
+ var btns = this.$el.find('button.btn-category:visible'),
+ lastbtn = (btns.length>0) ? $(btns[btns.length-1]) : null;
+ this.minDevPosition = (lastbtn) ? (lastbtn.offset().top - lastbtn.offsetParent().offset().top + lastbtn.height() + 20) : 20;
this.onWindowResize();
},
diff --git a/apps/presentationeditor/main/app/view/Statusbar.js b/apps/presentationeditor/main/app/view/Statusbar.js
index 4ff29d8671..375d97ebf2 100644
--- a/apps/presentationeditor/main/app/view/Statusbar.js
+++ b/apps/presentationeditor/main/app/view/Statusbar.js
@@ -303,6 +303,7 @@ define([
this.api.asc_registerCallback('asc_onCountPages', _.bind(_onCountPages, this));
this.api.asc_registerCallback('asc_onCurrentPage', _.bind(_onCurrentPage, this));
this.api.asc_registerCallback('asc_onFocusObject', _.bind(this.onApiFocusObject, this));
+ Common.NotificationCenter.on('api:disconnect', _.bind(this.onApiCoAuthoringDisconnect, this));
}
return this;
@@ -344,7 +345,7 @@ define([
this.langMenu.doLayout();
if (this.langMenu.items.length>0) {
this.btnLanguage.setDisabled(false || this._state.no_paragraph);
- this.btnDocLanguage.setDisabled(false);
+ this.btnDocLanguage.setDisabled(!!this.mode.isDisconnected);
}
},
@@ -392,6 +393,11 @@ define([
this.btnLanguage.setDisabled(this._state.no_paragraph);
},
+ onApiCoAuthoringDisconnect: function() {
+ this.setMode({isDisconnected:true});
+ this.SetDisabled(true);
+ },
+
pageIndexText : 'Slide {0} of {1}',
goToPageText : 'Go to Slide',
tipFitPage : 'Fit to Slide',
diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json
index b87e770e69..84941f148c 100644
--- a/apps/presentationeditor/main/locale/en.json
+++ b/apps/presentationeditor/main/locale/en.json
@@ -361,6 +361,7 @@
"PE.Controllers.Main.warnBrowserZoom": "Your browser current zoom setting is not fully supported. Please reset to the default zoom by pressing Ctrl+0.",
"PE.Controllers.Main.warnLicenseExp": "Your license has expired.
Please update your license and refresh the page.",
"PE.Controllers.Main.warnNoLicense": "This version of ONLYOFFICE Editors has certain limitations for concurrent connections to the document server.
If you need more please consider upgrading your current license or purchasing a commercial one.",
+ "PE.Controllers.Main.warnNoLicenseUsers": "This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.",
"PE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
"PE.Controllers.Statusbar.zoomText": "Zoom {0}%",
"PE.Controllers.Toolbar.confirmAddFontName": "The font you are going to save is not available on the current device.
The text style will be displayed using one of the system fonts, the saved font will be used when it is available.
Do you want to continue?",
diff --git a/apps/presentationeditor/mobile/app/controller/DocumentHolder.js b/apps/presentationeditor/mobile/app/controller/DocumentHolder.js
index 0bfa294c74..4f34bb20a3 100644
--- a/apps/presentationeditor/mobile/app/controller/DocumentHolder.js
+++ b/apps/presentationeditor/mobile/app/controller/DocumentHolder.js
@@ -81,6 +81,7 @@ define([
me.api.asc_registerCallback('asc_onShowPopMenu', _.bind(me.onApiShowPopMenu, me));
me.api.asc_registerCallback('asc_onHidePopMenu', _.bind(me.onApiHidePopMenu, me));
me.api.asc_registerCallback('asc_onDocumentContentReady', _.bind(me.onApiDocumentContentReady, me));
+ Common.NotificationCenter.on('api:disconnect', _.bind(me.onCoAuthoringDisconnect, me));
},
setMode: function (mode) {
@@ -253,7 +254,7 @@ define([
items[indexAfter] = items.splice(indexBefore, 1, items[indexAfter])[0];
};
- if (!objectLocked && _isEdit) {
+ if (!objectLocked && _isEdit && !me.isDisconnected) {
if (canCopy && isObject) {
menuItems.push({
caption: me.menuCut,
@@ -309,6 +310,10 @@ define([
return menuItems;
},
+ onCoAuthoringDisconnect: function() {
+ this.isDisconnected = true;
+ },
+
menuCut: 'Cut',
menuCopy: 'Copy',
menuPaste: 'Paste',
diff --git a/apps/presentationeditor/mobile/app/controller/Main.js b/apps/presentationeditor/mobile/app/controller/Main.js
index 6b167173e3..69d23b5c16 100644
--- a/apps/presentationeditor/mobile/app/controller/Main.js
+++ b/apps/presentationeditor/mobile/app/controller/Main.js
@@ -236,6 +236,7 @@ define([
}
this.api.asc_registerCallback('asc_onGetEditorPermissions', _.bind(this.onEditorPermissions, this));
+ this.api.asc_registerCallback('asc_onLicenseChanged', _.bind(this.onLicenseChanged, this));
this.api.asc_setDocInfo(docInfo);
this.api.asc_getEditorPermissions(this.editorConfig.licenseUrl, this.editorConfig.customerId);
@@ -511,18 +512,35 @@ define([
me.api.zoomFitToPage();
}
- PE.getController('Toolbar').activateControls();
+ me.applyLicense();
+ },
+ onLicenseChanged: function(params) {
+ var licType = params.asc_getLicenseType();
+ if (licType !== undefined && (licType===Asc.c_oLicenseResult.Connections || licType===Asc.c_oLicenseResult.UsersCount) && this.appOptions.canEdit && this.editorConfig.mode !== 'view') {
+ this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) ? this.warnNoLicense : this.warnNoLicenseUsers;
+ }
+
+ if (this._isDocReady && this._state.licenseWarning)
+ this.applyLicense();
+ },
+
+ applyLicense: function() {
+ var me = this;
if (me._state.licenseWarning) {
- value = Common.localStorage.getItem("de-license-warning");
+ PE.getController('Toolbar').activateViewControls();
+ PE.getController('Toolbar').deactivateEditControls();
+ Common.NotificationCenter.trigger('api:disconnect');
+
+ var value = Common.localStorage.getItem("pe-license-warning");
value = (value!==null) ? parseInt(value) : 0;
var now = (new Date).getTime();
if (now - value > 86400000) {
- Common.localStorage.setItem("de-license-warning", now);
+ Common.localStorage.setItem("pe-license-warning", now);
uiApp.modal({
title: me.textNoLicenseTitle,
- text : me.warnNoLicense,
+ text : me._state.licenseWarning,
buttons: [
{
text: me.textBuyNow,
@@ -537,10 +555,11 @@ define([
window.open('mailto:sales@onlyoffice.com', "_blank");
}
}
- ],
+ ]
});
}
- }
+ } else
+ PE.getController('Toolbar').activateControls();
},
onOpenDocument: function(progress) {
@@ -597,8 +616,6 @@ define([
me.appOptions.canDownloadOrigin = !me.appOptions.nativeApp && me.permissions.download !== false && (type && typeof type[1] === 'string');
me.appOptions.canDownload = !me.appOptions.nativeApp && me.permissions.download !== false && (!type || typeof type[1] !== 'string');
- me._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) && me.appOptions.canEdit && me.editorConfig.mode !== 'view';
-
me.appOptions.canBranding = (licType === Asc.c_oLicenseResult.Success) && (typeof me.editorConfig.customization == 'object');
me.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof me.editorConfig.customization == 'object');
@@ -1261,7 +1278,8 @@ define([
txtImage: 'Image',
txtSlideNumber: 'Slide number',
txtSlideSubtitle: 'Slide subtitle',
- txtSlideTitle: 'Slide title'
+ txtSlideTitle: 'Slide title',
+ warnNoLicenseUsers: 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.'
}
})(), PE.Controllers.Main || {}))
});
\ No newline at end of file
diff --git a/apps/presentationeditor/mobile/app/controller/Toolbar.js b/apps/presentationeditor/mobile/app/controller/Toolbar.js
index f9e5c197d9..38fe181cc1 100644
--- a/apps/presentationeditor/mobile/app/controller/Toolbar.js
+++ b/apps/presentationeditor/mobile/app/controller/Toolbar.js
@@ -79,6 +79,7 @@ define([
this.api.asc_registerCallback('asc_onCanUndo', _.bind(this.onApiCanRevert, this, 'undo'));
this.api.asc_registerCallback('asc_onCanRedo', _.bind(this.onApiCanRevert, this, 'redo'));
this.api.asc_registerCallback('asc_onFocusObject', _.bind(this.onApiFocusObject, this));
+ Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
},
setMode: function (mode) {
@@ -138,6 +139,8 @@ define([
// API handlers
onApiCanRevert: function(which, can) {
+ if (this.isDisconnected) return;
+
if (which == 'undo') {
$('#toolbar-undo').toggleClass('disabled', !can);
} else {
@@ -146,6 +149,8 @@ define([
},
onApiFocusObject: function (objects) {
+ if (this.isDisconnected) return;
+
if (objects.length > 0) {
var slide_deleted = false,
slide_lock = false,
@@ -172,6 +177,18 @@ define([
$('#toolbar-preview, #toolbar-settings, #toolbar-search, #document-back').removeClass('disabled');
},
+ activateViewControls: function() {
+ $('#toolbar-preview, #toolbar-search, #document-back').removeClass('disabled');
+ },
+
+ deactivateEditControls: function() {
+ $('#toolbar-edit, #toolbar-add, #toolbar-settings').addClass('disabled');
+ },
+
+ onCoAuthoringDisconnect: function() {
+ this.isDisconnected = true;
+ },
+
dlgLeaveTitleText : 'You leave the application',
dlgLeaveMsgText : 'You have unsaved changes in this document. Click \'Stay on this Page\' to await the autosave of the document. Click \'Leave this Page\' to discard all the unsaved changes.',
leaveButtonText : 'Leave this Page',
diff --git a/apps/presentationeditor/mobile/locale/en.json b/apps/presentationeditor/mobile/locale/en.json
index f3a5064ccf..ef5060bc65 100644
--- a/apps/presentationeditor/mobile/locale/en.json
+++ b/apps/presentationeditor/mobile/locale/en.json
@@ -204,6 +204,7 @@
"PE.Controllers.Main.uploadImageTitleText": "Uploading Image",
"PE.Controllers.Main.warnLicenseExp": "Your license has expired.
Please update your license and refresh the page.",
"PE.Controllers.Main.warnNoLicense": "This version of ONLYOFFICE Editors has certain limitations for concurrent connections to the document server.
If you need more please consider upgrading your current license or purchasing a commercial one.",
+ "PE.Controllers.Main.warnNoLicenseUsers": "This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.",
"PE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
"PE.Controllers.Search.textNoTextFound": "Text not Found",
"PE.Controllers.Settings.notcriticalErrorTitle": "Warning",
diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js
index bbc7be3120..c7d2fed2fd 100644
--- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js
+++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js
@@ -1520,6 +1520,9 @@ define([
if (!documentHolder.viewModeMenu)
documentHolder.createDelayedElementsViewer();
+ if (!documentHolder.viewModeMenu)
+ documentHolder.createDelayedElementsViewer();
+
if (!showMenu && !documentHolder.viewModeMenu.isVisible()) return;
if (isimagemenu && this.permissions.canProtect) {
diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js
index 2daa57f608..6f7fb09032 100644
--- a/apps/spreadsheeteditor/main/app/controller/Main.js
+++ b/apps/spreadsheeteditor/main/app/controller/Main.js
@@ -363,6 +363,7 @@ define([
}
this.api.asc_registerCallback('asc_onGetEditorPermissions', _.bind(this.onEditorPermissions, this));
+ this.api.asc_registerCallback('asc_onLicenseChanged', _.bind(this.onLicenseChanged, this));
this.api.asc_setDocInfo(docInfo);
this.api.asc_getEditorPermissions(this.editorConfig.licenseUrl, this.editorConfig.customerId);
},
@@ -731,6 +732,8 @@ define([
toolbarController.onApiCoAuthoringDisconnect();
Common.NotificationCenter.trigger('document:ready', 'main');
+
+ me.applyLicense();
}
}, 50);
} else {
@@ -764,17 +767,34 @@ define([
if (typeof document.hidden !== 'undefined' && document.hidden) {
document.addEventListener('visibilitychange', checkWarns);
} else checkWarns();
+ },
+ onLicenseChanged: function(params) {
+ if (this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) return;
+
+ var licType = params.asc_getLicenseType();
+ if (licType !== undefined && (licType===Asc.c_oLicenseResult.Connections || licType===Asc.c_oLicenseResult.UsersCount) && this.appOptions.canEdit && this.editorConfig.mode !== 'view') {
+ this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) ? this.warnNoLicense : this.warnNoLicenseUsers;
+ }
+
+ if (this._isDocReady)
+ this.applyLicense();
+ },
+
+ applyLicense: function() {
if (this._state.licenseWarning) {
- value = Common.localStorage.getItem("de-license-warning");
+ this.disableEditing(true);
+ Common.NotificationCenter.trigger('api:disconnect');
+
+ var value = Common.localStorage.getItem("sse-license-warning");
value = (value!==null) ? parseInt(value) : 0;
var now = (new Date).getTime();
if (now - value > 86400000) {
- Common.localStorage.setItem("de-license-warning", now);
+ Common.localStorage.setItem("sse-license-warning", now);
Common.UI.info({
width: 500,
title: this.textNoLicenseTitle,
- msg : this.warnNoLicense,
+ msg : this._state.licenseWarning,
buttons: [
{value: 'buynow', caption: this.textBuyNow},
{value: 'contact', caption: this.textContactUs}
@@ -791,6 +811,14 @@ define([
}
},
+ disableEditing: function(disable) {
+ var app = this.getApplication();
+ if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') {
+ app.getController('RightMenu').getView('RightMenu').clearSelection();
+ app.getController('Toolbar').DisableToolbar(disable);
+ }
+ },
+
onOpenDocument: function(progress) {
var elem = document.getElementById('loadmask-text');
var proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount());
@@ -857,8 +885,6 @@ define([
this.appOptions.forcesave = this.appOptions.canForcesave;
this.appOptions.canEditComments= this.appOptions.isOffline || !(typeof (this.editorConfig.customization) == 'object' && this.editorConfig.customization.commentAuthorOnly);
- this._state.licenseWarning = !(this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) && (licType===Asc.c_oLicenseResult.Connections) && this.appOptions.canEdit && this.editorConfig.mode !== 'view';
-
this.applyModeCommonElements();
this.applyModeEditorElements();
@@ -2133,7 +2159,8 @@ define([
txtStyle_Total: 'Total',
txtStyle_Currency: 'Currency',
txtStyle_Percent: 'Percent',
- txtStyle_Comma: 'Comma'
+ txtStyle_Comma: 'Comma',
+ warnNoLicenseUsers: 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.'
}
})(), SSE.Controllers.Main || {}))
});
diff --git a/apps/spreadsheeteditor/main/app/view/LeftMenu.js b/apps/spreadsheeteditor/main/app/view/LeftMenu.js
index a34172be3e..116ddb2d34 100644
--- a/apps/spreadsheeteditor/main/app/view/LeftMenu.js
+++ b/apps/spreadsheeteditor/main/app/view/LeftMenu.js
@@ -336,8 +336,9 @@ define([
}
this.developerHint.toggleClass('hidden', !mode);
- var lastbtn = this.$el.find('button.btn-category:visible:last-of-type');
- this.minDevPosition = lastbtn.offset().top - lastbtn.offsetParent().offset().top + lastbtn.height() + 20;
+ var btns = this.$el.find('button.btn-category:visible'),
+ lastbtn = (btns.length>0) ? $(btns[btns.length-1]) : null;
+ this.minDevPosition = (lastbtn) ? (lastbtn.offset().top - lastbtn.offsetParent().offset().top + lastbtn.height() + 20) : 20;
this.onWindowResize();
},
diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json
index 764ae44e9a..affc0f6a00 100644
--- a/apps/spreadsheeteditor/main/locale/en.json
+++ b/apps/spreadsheeteditor/main/locale/en.json
@@ -477,6 +477,7 @@
"SSE.Controllers.Main.warnBrowserZoom": "Your browser current zoom setting is not fully supported. Please reset to the default zoom by pressing Ctrl+0.",
"SSE.Controllers.Main.warnLicenseExp": "Your license has expired.
Please update your license and refresh the page.",
"SSE.Controllers.Main.warnNoLicense": "This version of ONLYOFFICE Editors has certain limitations for concurrent connections to the document server.
If you need more please consider upgrading your current license or purchasing a commercial one.",
+ "SSE.Controllers.Main.warnNoLicenseUsers": "This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.",
"SSE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
"SSE.Controllers.Print.strAllSheets": "All Sheets",
"SSE.Controllers.Print.textWarning": "Warning",
diff --git a/apps/spreadsheeteditor/mobile/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/mobile/app/controller/DocumentHolder.js
index 6651aaaf33..0690b9cf91 100644
--- a/apps/spreadsheeteditor/mobile/app/controller/DocumentHolder.js
+++ b/apps/spreadsheeteditor/mobile/app/controller/DocumentHolder.js
@@ -82,6 +82,7 @@ define([
this.api.asc_registerCallback('asc_onShowPopMenu', _.bind(this.onApiShowPopMenu, this));
this.api.asc_registerCallback('asc_onHidePopMenu', _.bind(this.onApiHidePopMenu, this));
+ Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
},
setMode: function (mode) {
@@ -180,7 +181,7 @@ define([
},
onApiShowPopMenu: function(posX, posY) {
- if ( !_isEdit ) return;
+ if ( !_isEdit || this.isDisconnected) return;
if ($('.popover.settings, .popup.settings, .picker-modal.settings, .modal-in, .actions-modal').length > 0) {
return;
@@ -334,6 +335,10 @@ define([
return menuItems;
},
+ onCoAuthoringDisconnect: function() {
+ this.isDisconnected = true;
+ },
+
warnMergeLostData: 'Operation can destroy data in the selected cells.
Continue?',
menuCopy: 'Copy',
menuCut: 'Cut',
diff --git a/apps/spreadsheeteditor/mobile/app/controller/Main.js b/apps/spreadsheeteditor/mobile/app/controller/Main.js
index fcda864f5f..5c2bb4b176 100644
--- a/apps/spreadsheeteditor/mobile/app/controller/Main.js
+++ b/apps/spreadsheeteditor/mobile/app/controller/Main.js
@@ -239,6 +239,7 @@ define([
}
this.api.asc_registerCallback('asc_onGetEditorPermissions', _.bind(this.onEditorPermissions, this));
+ this.api.asc_registerCallback('asc_onLicenseChanged', _.bind(this.onLicenseChanged, this));
this.api.asc_setDocInfo(docInfo);
this.api.asc_getEditorPermissions(this.editorConfig.licenseUrl, this.editorConfig.customerId);
@@ -534,10 +535,33 @@ define([
mode: me.appOptions.isEdit ? 'edit' : 'view'
});
- SSE.getController('Toolbar').activateControls();
+ me.applyLicense();
+ $('.view-main').on('click', function (e) {
+ uiApp.closeModal('.document-menu.modal-in');
+ })
+ },
+
+ onLicenseChanged: function(params) {
+ if (this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) return;
+
+ var licType = params.asc_getLicenseType();
+ if (licType !== undefined && (licType===Asc.c_oLicenseResult.Connections || licType===Asc.c_oLicenseResult.UsersCount) && this.appOptions.canEdit && this.editorConfig.mode !== 'view') {
+ this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) ? this.warnNoLicense : this.warnNoLicenseUsers;
+ }
+
+ if (this._isDocReady && this._state.licenseWarning)
+ this.applyLicense();
+ },
+
+ applyLicense: function() {
+ var me = this;
if (me._state.licenseWarning) {
- value = Common.localStorage.getItem("sse-license-warning");
+ SSE.getController('Toolbar').activateViewControls();
+ SSE.getController('Toolbar').deactivateEditControls();
+ Common.NotificationCenter.trigger('api:disconnect');
+
+ var value = Common.localStorage.getItem("sse-license-warning");
value = (value!==null) ? parseInt(value) : 0;
var now = (new Date).getTime();
@@ -545,7 +569,7 @@ define([
Common.localStorage.setItem("sse-license-warning", now);
uiApp.modal({
title: me.textNoLicenseTitle,
- text : me.warnNoLicense,
+ text : me._state.licenseWarning,
buttons: [
{
text: me.textBuyNow,
@@ -560,14 +584,11 @@ define([
window.open('mailto:sales@onlyoffice.com', "_blank");
}
}
- ],
+ ]
});
}
- }
-
- $('.view-main').on('click', function (e) {
- uiApp.closeModal('.document-menu.modal-in');
- })
+ } else
+ SSE.getController('Toolbar').activateControls();
},
onOpenDocument: function(progress) {
@@ -624,8 +645,6 @@ define([
me.appOptions.canDownload = !me.appOptions.nativeApp && (me.permissions.download !== false);
me.appOptions.canPrint = (me.permissions.print !== false);
- me._state.licenseWarning = !(me.appOptions.isEditDiagram || me.appOptions.isEditMailMerge) && (licType===Asc.c_oLicenseResult.Connections) && me.appOptions.canEdit && me.editorConfig.mode !== 'view';
-
me.applyModeCommonElements();
me.applyModeEditorElements();
@@ -1419,7 +1438,8 @@ define([
txtStyle_Total: 'Total',
txtStyle_Currency: 'Currency',
txtStyle_Percent: 'Percent',
- txtStyle_Comma: 'Comma'
+ txtStyle_Comma: 'Comma',
+ warnNoLicenseUsers: 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.'
}
})(), SSE.Controllers.Main || {}))
});
\ No newline at end of file
diff --git a/apps/spreadsheeteditor/mobile/app/controller/Toolbar.js b/apps/spreadsheeteditor/mobile/app/controller/Toolbar.js
index 5ed1c7c184..53479d170c 100644
--- a/apps/spreadsheeteditor/mobile/app/controller/Toolbar.js
+++ b/apps/spreadsheeteditor/mobile/app/controller/Toolbar.js
@@ -86,6 +86,7 @@ define([
this.api.asc_registerCallback('asc_onWorkbookLocked', _.bind(this.onApiWorkbookLocked, this));
this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onApiWorksheetLocked, this));
this.api.asc_registerCallback('asc_onActiveSheetChanged', _.bind(this.onApiActiveSheetChanged, this));
+ Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
Common.NotificationCenter.on('sheet:active', this.onApiActiveSheetChanged.bind(this));
},
@@ -159,6 +160,8 @@ define([
},
onApiCanRevert: function(which, can) {
+ if (this.isDisconnected) return;
+
if (which == 'undo') {
$('#toolbar-undo').toggleClass('disabled', !can);
} else {
@@ -167,6 +170,8 @@ define([
},
onApiSelectionChanged: function(info) {
+ if (this.isDisconnected) return;
+
if ( !info ) info = this.api.asc_getCellInfo();
var islocked = false;
@@ -195,6 +200,18 @@ define([
$('#toolbar-settings, #toolbar-search, #document-back').removeClass('disabled');
},
+ activateViewControls: function() {
+ $('#toolbar-search, #document-back').removeClass('disabled');
+ },
+
+ deactivateEditControls: function() {
+ $('#toolbar-edit, #toolbar-add, #toolbar-settings').addClass('disabled');
+ },
+
+ onCoAuthoringDisconnect: function() {
+ this.isDisconnected = true;
+ },
+
dlgLeaveTitleText : 'You leave the application',
dlgLeaveMsgText : 'You have unsaved changes in this document. Click \'Stay on this Page\' to await the autosave of the document. Click \'Leave this Page\' to discard all the unsaved changes.',
leaveButtonText : 'Leave this Page',
diff --git a/apps/spreadsheeteditor/mobile/locale/en.json b/apps/spreadsheeteditor/mobile/locale/en.json
index a556627fcc..9fc71c590a 100644
--- a/apps/spreadsheeteditor/mobile/locale/en.json
+++ b/apps/spreadsheeteditor/mobile/locale/en.json
@@ -256,6 +256,7 @@
"SSE.Controllers.Main.uploadImageTitleText": "Uploading Image",
"SSE.Controllers.Main.warnLicenseExp": "Your license has expired.
Please update your license and refresh the page.",
"SSE.Controllers.Main.warnNoLicense": "This version of ONLYOFFICE Editors has certain limitations for concurrent connections to the document server.
If you need more please consider upgrading your current license or purchasing a commercial one.",
+ "SSE.Controllers.Main.warnNoLicenseUsers": "This version of ONLYOFFICE Editors has certain limitations for concurrent users.
If you need more please consider upgrading your current license or purchasing a commercial one.",
"SSE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
"SSE.Controllers.Search.textNoTextFound": "Text not found",
"SSE.Controllers.Search.textReplaceAll": "Replace All",