Merge pull request #64 from ONLYOFFICE/feature/force-save
Feature/force save
This commit is contained in:
commit
5461be6b24
|
@ -105,15 +105,16 @@
|
||||||
url: 'http://...',
|
url: 'http://...',
|
||||||
text: 'Go to London'
|
text: 'Go to London'
|
||||||
},
|
},
|
||||||
chat: false,
|
chat: true,
|
||||||
comments: false,
|
comments: true,
|
||||||
zoom: 100,
|
zoom: 100,
|
||||||
compactToolbar: false,
|
compactToolbar: false,
|
||||||
leftMenu: true,
|
leftMenu: true,
|
||||||
rightMenu: true,
|
rightMenu: true,
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
header: true,
|
header: true,
|
||||||
autosave: true
|
autosave: true,
|
||||||
|
forcesave: false
|
||||||
},
|
},
|
||||||
plugins: {
|
plugins: {
|
||||||
autoStartGuid: 'asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}',
|
autoStartGuid: 'asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}',
|
||||||
|
|
|
@ -542,10 +542,11 @@ define([
|
||||||
application.getController('DocumentHolder').getView('DocumentHolder').focus();
|
application.getController('DocumentHolder').getView('DocumentHolder').focus();
|
||||||
|
|
||||||
if (this.api) {
|
if (this.api) {
|
||||||
var cansave = this.api.asc_isDocumentCanSave();
|
var cansave = this.api.asc_isDocumentCanSave(),
|
||||||
|
forcesave = this.appOptions.forcesave;
|
||||||
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
||||||
if (toolbarView.btnSave.isDisabled() !== (!cansave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1))
|
if (toolbarView.btnSave.isDisabled() !== (!cansave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))
|
||||||
toolbarView.btnSave.setDisabled(!cansave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1);
|
toolbarView.btnSave.setDisabled(!cansave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -570,16 +571,19 @@ define([
|
||||||
if (action) {
|
if (action) {
|
||||||
this.setLongActionView(action)
|
this.setLongActionView(action)
|
||||||
} else {
|
} else {
|
||||||
if (this._state.fastCoauth && this._state.usersCount>1 && id==Asc.c_oAscAsyncAction['Save']) {
|
if (id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) {
|
||||||
var me = this;
|
if (this._state.fastCoauth && this._state.usersCount>1) {
|
||||||
if (me._state.timerSave===undefined)
|
var me = this;
|
||||||
me._state.timerSave = setInterval(function(){
|
if (me._state.timerSave===undefined)
|
||||||
if ((new Date()) - me._state.isSaving>500) {
|
me._state.timerSave = setInterval(function(){
|
||||||
clearInterval(me._state.timerSave);
|
if ((new Date()) - me._state.isSaving>500) {
|
||||||
me.getApplication().getController('Statusbar').setStatusCaption('');
|
clearInterval(me._state.timerSave);
|
||||||
me._state.timerSave = undefined;
|
me.getApplication().getController('Statusbar').setStatusCaption(me.textChangesSaved, false, 3000);
|
||||||
}
|
me._state.timerSave = undefined;
|
||||||
}, 500);
|
}
|
||||||
|
}, 500);
|
||||||
|
} else
|
||||||
|
this.getApplication().getController('Statusbar').setStatusCaption(this.textChangesSaved, false, 3000);
|
||||||
} else
|
} else
|
||||||
this.getApplication().getController('Statusbar').setStatusCaption('');
|
this.getApplication().getController('Statusbar').setStatusCaption('');
|
||||||
}
|
}
|
||||||
|
@ -587,7 +591,7 @@ define([
|
||||||
action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction});
|
action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction});
|
||||||
action ? this.setLongActionView(action) : this.loadMask && this.loadMask.hide();
|
action ? this.setLongActionView(action) : this.loadMask && this.loadMask.hide();
|
||||||
|
|
||||||
if (id==Asc.c_oAscAsyncAction['Save'] && (!this._state.fastCoauth || this._state.usersCount<2))
|
if ((id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) && (!this._state.fastCoauth || this._state.usersCount<2))
|
||||||
this.synchronizeChanges();
|
this.synchronizeChanges();
|
||||||
|
|
||||||
if ( type == Asc.c_oAscAsyncActionType.BlockInteraction &&
|
if ( type == Asc.c_oAscAsyncActionType.BlockInteraction &&
|
||||||
|
@ -599,7 +603,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
setLongActionView: function(action) {
|
setLongActionView: function(action) {
|
||||||
var title = '', text = '';
|
var title = '', text = '', force = false;
|
||||||
|
|
||||||
switch (action.id) {
|
switch (action.id) {
|
||||||
case Asc.c_oAscAsyncAction['Open']:
|
case Asc.c_oAscAsyncAction['Open']:
|
||||||
|
@ -608,11 +612,16 @@ define([
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Asc.c_oAscAsyncAction['Save']:
|
case Asc.c_oAscAsyncAction['Save']:
|
||||||
|
case Asc.c_oAscAsyncAction['ForceSaveButton']:
|
||||||
this._state.isSaving = new Date();
|
this._state.isSaving = new Date();
|
||||||
|
force = true;
|
||||||
title = this.saveTitleText;
|
title = this.saveTitleText;
|
||||||
text = this.saveTextText;
|
text = this.saveTextText;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Asc.c_oAscAsyncAction['ForceSaveTimeout']:
|
||||||
|
break;
|
||||||
|
|
||||||
case Asc.c_oAscAsyncAction['LoadDocumentFonts']:
|
case Asc.c_oAscAsyncAction['LoadDocumentFonts']:
|
||||||
title = this.loadFontsTitleText;
|
title = this.loadFontsTitleText;
|
||||||
text = this.loadFontsTextText;
|
text = this.loadFontsTextText;
|
||||||
|
@ -694,7 +703,7 @@ define([
|
||||||
this.loadMask.show();
|
this.loadMask.show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.getApplication().getController('Statusbar').setStatusCaption(text);
|
this.getApplication().getController('Statusbar').setStatusCaption(text, force);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -886,6 +895,12 @@ define([
|
||||||
|
|
||||||
me.api.asc_setAutoSaveGap(value);
|
me.api.asc_setAutoSaveGap(value);
|
||||||
|
|
||||||
|
if (me.appOptions.canForcesave) {// use asc_setIsForceSaveOnUserSave only when customization->forcesave = true
|
||||||
|
value = Common.localStorage.getItem("de-settings-forcesave");
|
||||||
|
me.appOptions.forcesave = (value===null) ? me.appOptions.canForcesave : (parseInt(value)==1);
|
||||||
|
me.api.asc_setIsForceSaveOnUserSave(me.appOptions.forcesave);
|
||||||
|
}
|
||||||
|
|
||||||
if (me.needToUpdateVersion)
|
if (me.needToUpdateVersion)
|
||||||
Common.NotificationCenter.trigger('api:disconnect');
|
Common.NotificationCenter.trigger('api:disconnect');
|
||||||
var timer_sl = setInterval(function(){
|
var timer_sl = setInterval(function(){
|
||||||
|
@ -1009,6 +1024,8 @@ define([
|
||||||
this.appOptions.canPrint = (this.permissions.print !== false);
|
this.appOptions.canPrint = (this.permissions.print !== false);
|
||||||
this.appOptions.canRename = !!this.permissions.rename;
|
this.appOptions.canRename = !!this.permissions.rename;
|
||||||
this.appOptions.buildVersion = params.asc_getBuildVersion();
|
this.appOptions.buildVersion = params.asc_getBuildVersion();
|
||||||
|
this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && (typeof (this.editorConfig.customization) == 'object' && this.editorConfig.customization.forcesave);
|
||||||
|
this.appOptions.forcesave = this.appOptions.canForcesave;
|
||||||
|
|
||||||
var type = /^(?:(pdf|djvu|xps))$/.exec(this.document.fileType);
|
var type = /^(?:(pdf|djvu|xps))$/.exec(this.document.fileType);
|
||||||
this.appOptions.canDownloadOrigin = !this.appOptions.nativeApp && this.permissions.download !== false && (type && typeof type[1] === 'string');
|
this.appOptions.canDownloadOrigin = !this.appOptions.nativeApp && this.permissions.download !== false && (type && typeof type[1] === 'string');
|
||||||
|
@ -1399,9 +1416,11 @@ define([
|
||||||
if (window.document.title != title)
|
if (window.document.title != title)
|
||||||
window.document.title = title;
|
window.document.title = title;
|
||||||
|
|
||||||
if (!this._state.fastCoauth || this._state.usersCount<2 )
|
if (!this._state.fastCoauth || this._state.usersCount<2 ) {
|
||||||
Common.Gateway.setDocumentModified(isModified);
|
Common.Gateway.setDocumentModified(isModified);
|
||||||
else if ( this._state.startModifyDocument!==undefined && this._state.startModifyDocument === isModified){
|
if (isModified)
|
||||||
|
this.getApplication().getController('Statusbar').setStatusCaption('', true);
|
||||||
|
} else if ( this._state.startModifyDocument!==undefined && this._state.startModifyDocument === isModified){
|
||||||
Common.Gateway.setDocumentModified(isModified);
|
Common.Gateway.setDocumentModified(isModified);
|
||||||
this._state.startModifyDocument = (this._state.startModifyDocument) ? !this._state.startModifyDocument : undefined;
|
this._state.startModifyDocument = (this._state.startModifyDocument) ? !this._state.startModifyDocument : undefined;
|
||||||
}
|
}
|
||||||
|
@ -1423,9 +1442,10 @@ define([
|
||||||
var toolbarView = this.getApplication().getController('Toolbar').getView('Toolbar');
|
var toolbarView = this.getApplication().getController('Toolbar').getView('Toolbar');
|
||||||
|
|
||||||
if (toolbarView) {
|
if (toolbarView) {
|
||||||
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch'),
|
||||||
if (toolbarView.btnSave.isDisabled() !== (!isModified && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1))
|
forcesave = this.appOptions.forcesave;
|
||||||
toolbarView.btnSave.setDisabled(!isModified && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1);
|
if (toolbarView.btnSave.isDisabled() !== (!isModified && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))
|
||||||
|
toolbarView.btnSave.setDisabled(!isModified && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** coauthoring begin **/
|
/** coauthoring begin **/
|
||||||
|
@ -1440,9 +1460,10 @@ define([
|
||||||
toolbarView = toolbarController.getView('Toolbar');
|
toolbarView = toolbarController.getView('Toolbar');
|
||||||
|
|
||||||
if (toolbarView && this.api) {
|
if (toolbarView && this.api) {
|
||||||
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch'),
|
||||||
if (toolbarView.btnSave.isDisabled() !== (!isCanSave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1))
|
forcesave = this.appOptions.forcesave;
|
||||||
toolbarView.btnSave.setDisabled(!isCanSave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1);
|
if (toolbarView.btnSave.isDisabled() !== (!isCanSave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))
|
||||||
|
toolbarView.btnSave.setDisabled(!isCanSave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1556,7 +1577,7 @@ define([
|
||||||
if (this._state.hasCollaborativeChanges) return;
|
if (this._state.hasCollaborativeChanges) return;
|
||||||
this._state.hasCollaborativeChanges = true;
|
this._state.hasCollaborativeChanges = true;
|
||||||
if (this.appOptions.isEdit)
|
if (this.appOptions.isEdit)
|
||||||
this.getApplication().getController('Statusbar').setStatusCaption(this.txtNeedSynchronize);
|
this.getApplication().getController('Statusbar').setStatusCaption(this.txtNeedSynchronize, true);
|
||||||
},
|
},
|
||||||
/** coauthoring end **/
|
/** coauthoring end **/
|
||||||
|
|
||||||
|
@ -1806,6 +1827,11 @@ define([
|
||||||
if (this._state.fastCoauth && !oldval)
|
if (this._state.fastCoauth && !oldval)
|
||||||
this.synchronizeChanges();
|
this.synchronizeChanges();
|
||||||
}
|
}
|
||||||
|
if (this.appOptions.canForcesave) {
|
||||||
|
value = Common.localStorage.getItem("de-settings-forcesave");
|
||||||
|
this.appOptions.forcesave = (value===null) ? this.appOptions.canForcesave : (parseInt(value)==1);
|
||||||
|
this.api.asc_setIsForceSaveOnUserSave(this.appOptions.forcesave);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onDocumentName: function(name) {
|
onDocumentName: function(name) {
|
||||||
|
@ -2145,7 +2171,8 @@ define([
|
||||||
errorSessionToken: 'The connection to the server has been interrupted. Please reload the page.',
|
errorSessionToken: 'The connection to the server has been interrupted. Please reload the page.',
|
||||||
errorAccessDeny: 'You are trying to perform an action you do not have rights for.<br>Please contact your Document Server administrator.',
|
errorAccessDeny: 'You are trying to perform an action you do not have rights for.<br>Please contact your Document Server administrator.',
|
||||||
titleServerVersion: 'Editor updated',
|
titleServerVersion: 'Editor updated',
|
||||||
errorServerVersion: 'The editor version has been updated. The page will be reloaded to apply the changes.'
|
errorServerVersion: 'The editor version has been updated. The page will be reloaded to apply the changes.',
|
||||||
|
textChangesSaved: 'All changes saved'
|
||||||
}
|
}
|
||||||
})(), DE.Controllers.Main || {}))
|
})(), DE.Controllers.Main || {}))
|
||||||
});
|
});
|
||||||
|
|
|
@ -149,9 +149,16 @@ define([
|
||||||
this.statusbar.reloadLanguages(langs);
|
this.statusbar.reloadLanguages(langs);
|
||||||
},
|
},
|
||||||
|
|
||||||
setStatusCaption: function(text) {
|
setStatusCaption: function(text, force, delay) {
|
||||||
if (text.length)
|
if (this.timerCaption && ( ((new Date()) < this.timerCaption) || text.length==0 ) && !force )
|
||||||
this.statusbar.showStatusMessage(text); else
|
return;
|
||||||
|
|
||||||
|
this.timerCaption = undefined;
|
||||||
|
if (text.length) {
|
||||||
|
this.statusbar.showStatusMessage(text);
|
||||||
|
if (delay>0)
|
||||||
|
this.timerCaption = (new Date()).getTime() + delay;
|
||||||
|
} else
|
||||||
this.statusbar.clearStatusMessage();
|
this.statusbar.clearStatusMessage();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -854,13 +854,13 @@ define([
|
||||||
if (this.api) {
|
if (this.api) {
|
||||||
var isModified = this.api.asc_isDocumentCanSave();
|
var isModified = this.api.asc_isDocumentCanSave();
|
||||||
var isSyncButton = $('.btn-icon', this.toolbar.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', this.toolbar.btnSave.cmpEl).hasClass('btn-synch');
|
||||||
if (!isModified && !isSyncButton)
|
if (!isModified && !isSyncButton && !this.toolbar.mode.forcesave)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.api.asc_Save();
|
this.api.asc_Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.toolbar.btnSave.setDisabled(true);
|
this.toolbar.btnSave.setDisabled(!this.toolbar.mode.forcesave);
|
||||||
|
|
||||||
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
|
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,11 @@ define([
|
||||||
'<td class="left"><label id="fms-lbl-autosave"><%= scope.textAutoSave %></label></td>',
|
'<td class="left"><label id="fms-lbl-autosave"><%= scope.textAutoSave %></label></td>',
|
||||||
'<td class="right"><span id="fms-chb-autosave" /></td>',
|
'<td class="right"><span id="fms-chb-autosave" /></td>',
|
||||||
'</tr>','<tr class="divider autosave"></tr>',
|
'</tr>','<tr class="divider autosave"></tr>',
|
||||||
/** coauthoring begin **/
|
'<tr class="forcesave">',
|
||||||
|
'<td class="left"><label id="fms-lbl-forcesave"><%= scope.textForceSave %></label></td>',
|
||||||
|
'<td class="right"><span id="fms-chb-forcesave" /></td>',
|
||||||
|
'</tr>','<tr class="divider forcesave"></tr>',
|
||||||
|
/** coauthoring begin **/
|
||||||
'<tr class="coauth changes">',
|
'<tr class="coauth changes">',
|
||||||
'<td class="left"><label><%= scope.strCoAuthMode %></label></td>',
|
'<td class="left"><label><%= scope.strCoAuthMode %></label></td>',
|
||||||
'<td class="right">',
|
'<td class="right">',
|
||||||
|
@ -199,7 +203,12 @@ define([
|
||||||
}
|
}
|
||||||
}, this));
|
}, this));
|
||||||
this.lblAutosave = $('#fms-lbl-autosave');
|
this.lblAutosave = $('#fms-lbl-autosave');
|
||||||
|
|
||||||
|
this.chForcesave = new Common.UI.CheckBox({
|
||||||
|
el: $('#fms-chb-forcesave'),
|
||||||
|
labelText: this.strForcesave
|
||||||
|
});
|
||||||
|
|
||||||
this.chAlignGuides = new Common.UI.CheckBox({
|
this.chAlignGuides = new Common.UI.CheckBox({
|
||||||
el: $('#fms-chb-align-guides'),
|
el: $('#fms-chb-align-guides'),
|
||||||
labelText: this.strAlignGuides
|
labelText: this.strAlignGuides
|
||||||
|
@ -309,6 +318,7 @@ define([
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
$('tr.edit', this.el)[mode.isEdit?'show':'hide']();
|
$('tr.edit', this.el)[mode.isEdit?'show':'hide']();
|
||||||
$('tr.autosave', this.el)[mode.isEdit ? 'show' : 'hide']();
|
$('tr.autosave', this.el)[mode.isEdit ? 'show' : 'hide']();
|
||||||
|
$('tr.forcesave', this.el)[mode.canForcesave ? 'show' : 'hide']();
|
||||||
if (this.mode.isDesktopApp && this.mode.isOffline) {
|
if (this.mode.isDesktopApp && this.mode.isOffline) {
|
||||||
this.chAutosave.setCaption(this.strAutoRecover);
|
this.chAutosave.setCaption(this.strAutoRecover);
|
||||||
this.lblAutosave.text(this.textAutoRecover);
|
this.lblAutosave.text(this.textAutoRecover);
|
||||||
|
@ -363,6 +373,12 @@ define([
|
||||||
value = 0;
|
value = 0;
|
||||||
this.chAutosave.setValue(fast_coauth || (value===null ? this.mode.canCoAuthoring : parseInt(value) == 1));
|
this.chAutosave.setValue(fast_coauth || (value===null ? this.mode.canCoAuthoring : parseInt(value) == 1));
|
||||||
|
|
||||||
|
if (this.mode.canForcesave) {
|
||||||
|
value = Common.localStorage.getItem("de-settings-forcesave");
|
||||||
|
value = (value === null) ? this.mode.canForcesave : (parseInt(value) == 1);
|
||||||
|
this.chForcesave.setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
value = Common.localStorage.getItem("de-settings-spellcheck");
|
value = Common.localStorage.getItem("de-settings-spellcheck");
|
||||||
this.chSpell.setValue(value===null || parseInt(value) == 1);
|
this.chSpell.setValue(value===null || parseInt(value) == 1);
|
||||||
|
|
||||||
|
@ -383,6 +399,8 @@ define([
|
||||||
Common.localStorage.setItem("de-settings-fontrender", this.cmbFontRender.getValue());
|
Common.localStorage.setItem("de-settings-fontrender", this.cmbFontRender.getValue());
|
||||||
Common.localStorage.setItem("de-settings-unit", this.cmbUnit.getValue());
|
Common.localStorage.setItem("de-settings-unit", this.cmbUnit.getValue());
|
||||||
Common.localStorage.setItem("de-settings-autosave", this.chAutosave.isChecked() ? 1 : 0);
|
Common.localStorage.setItem("de-settings-autosave", this.chAutosave.isChecked() ? 1 : 0);
|
||||||
|
if (this.mode.canForcesave)
|
||||||
|
Common.localStorage.setItem("de-settings-forcesave", this.chForcesave.isChecked() ? 1 : 0);
|
||||||
Common.localStorage.setItem("de-settings-spellcheck", this.chSpell.isChecked() ? 1 : 0);
|
Common.localStorage.setItem("de-settings-spellcheck", this.chSpell.isChecked() ? 1 : 0);
|
||||||
Common.localStorage.setItem("de-settings-showsnaplines", this.chAlignGuides.isChecked() ? 1 : 0);
|
Common.localStorage.setItem("de-settings-showsnaplines", this.chAlignGuides.isChecked() ? 1 : 0);
|
||||||
Common.localStorage.save();
|
Common.localStorage.save();
|
||||||
|
@ -443,7 +461,9 @@ define([
|
||||||
strAutoRecover: 'Turn on autorecover',
|
strAutoRecover: 'Turn on autorecover',
|
||||||
txtInch: 'Inch',
|
txtInch: 'Inch',
|
||||||
txtFitPage: 'Fit to Page',
|
txtFitPage: 'Fit to Page',
|
||||||
txtFitWidth: 'Fit to Width'
|
txtFitWidth: 'Fit to Width',
|
||||||
|
textForceSave: 'Save to Server',
|
||||||
|
strForcesave: 'Always save to server (otherwise save to server on document close)'
|
||||||
}, DE.Views.FileMenuPanels.Settings || {}));
|
}, DE.Views.FileMenuPanels.Settings || {}));
|
||||||
|
|
||||||
DE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({
|
DE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({
|
||||||
|
|
|
@ -1740,7 +1740,7 @@ define([
|
||||||
if (this.synchTooltip)
|
if (this.synchTooltip)
|
||||||
this.synchTooltip.hide();
|
this.synchTooltip.hide();
|
||||||
this.btnSave.updateHint(this.btnSaveTip);
|
this.btnSave.updateHint(this.btnSaveTip);
|
||||||
this.btnSave.setDisabled(true);
|
this.btnSave.setDisabled(!this.mode.forcesave);
|
||||||
this._state.hasCollaborativeChanges = false;
|
this._state.hasCollaborativeChanges = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -300,6 +300,7 @@
|
||||||
"DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
|
"DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
|
||||||
"DE.Controllers.Main.titleServerVersion": "Editor updated",
|
"DE.Controllers.Main.titleServerVersion": "Editor updated",
|
||||||
"DE.Controllers.Main.errorServerVersion": "The editor version has been updated. The page will be reloaded to apply the changes.",
|
"DE.Controllers.Main.errorServerVersion": "The editor version has been updated. The page will be reloaded to apply the changes.",
|
||||||
|
"DE.Controllers.Main.textChangesSaved": "All changes saved",
|
||||||
"DE.Controllers.Statusbar.textHasChanges": "New changes have been tracked",
|
"DE.Controllers.Statusbar.textHasChanges": "New changes have been tracked",
|
||||||
"DE.Controllers.Statusbar.textTrackChanges": "The document is opened with the Track Changes mode enabled",
|
"DE.Controllers.Statusbar.textTrackChanges": "The document is opened with the Track Changes mode enabled",
|
||||||
"DE.Controllers.Statusbar.zoomText": "Zoom {0}%",
|
"DE.Controllers.Statusbar.zoomText": "Zoom {0}%",
|
||||||
|
@ -953,6 +954,8 @@
|
||||||
"DE.Views.FileMenuPanels.Settings.txtPt": "Point",
|
"DE.Views.FileMenuPanels.Settings.txtPt": "Point",
|
||||||
"DE.Views.FileMenuPanels.Settings.txtSpellCheck": "Spell Checking",
|
"DE.Views.FileMenuPanels.Settings.txtSpellCheck": "Spell Checking",
|
||||||
"DE.Views.FileMenuPanels.Settings.txtWin": "as Windows",
|
"DE.Views.FileMenuPanels.Settings.txtWin": "as Windows",
|
||||||
|
"DE.Views.FileMenuPanels.Settings.textForceSave": "Save to Server",
|
||||||
|
"DE.Views.FileMenuPanels.Settings.strForcesave": "Always save to server (otherwise save to server on document close)",
|
||||||
"DE.Views.HeaderFooterSettings.textBottomCenter": "Bottom Center",
|
"DE.Views.HeaderFooterSettings.textBottomCenter": "Bottom Center",
|
||||||
"DE.Views.HeaderFooterSettings.textBottomLeft": "Bottom Left",
|
"DE.Views.HeaderFooterSettings.textBottomLeft": "Bottom Left",
|
||||||
"DE.Views.HeaderFooterSettings.textBottomRight": "Bottom Right",
|
"DE.Views.HeaderFooterSettings.textBottomRight": "Bottom Right",
|
||||||
|
|
|
@ -356,10 +356,11 @@ define([
|
||||||
|
|
||||||
application.getController('DocumentHolder').getView('DocumentHolder').focus();
|
application.getController('DocumentHolder').getView('DocumentHolder').focus();
|
||||||
if (this.api && this.api.asc_isDocumentCanSave) {
|
if (this.api && this.api.asc_isDocumentCanSave) {
|
||||||
var cansave = this.api.asc_isDocumentCanSave();
|
var cansave = this.api.asc_isDocumentCanSave(),
|
||||||
|
forcesave = this.appOptions.forcesave;
|
||||||
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
||||||
if (toolbarView.btnSave.isDisabled() !== (!cansave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1))
|
if (toolbarView.btnSave.isDisabled() !== (!cansave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))
|
||||||
toolbarView.btnSave.setDisabled(!cansave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1);
|
toolbarView.btnSave.setDisabled(!cansave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -384,16 +385,19 @@ define([
|
||||||
if (action) {
|
if (action) {
|
||||||
this.setLongActionView(action)
|
this.setLongActionView(action)
|
||||||
} else {
|
} else {
|
||||||
if (this._state.fastCoauth && this._state.usersCount>1 && id==Asc.c_oAscAsyncAction['Save']) {
|
if (id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) {
|
||||||
var me = this;
|
if (this._state.fastCoauth && this._state.usersCount>1) {
|
||||||
if (me._state.timerSave===undefined)
|
var me = this;
|
||||||
me._state.timerSave = setInterval(function(){
|
if (me._state.timerSave===undefined)
|
||||||
if ((new Date()) - me._state.isSaving>500) {
|
me._state.timerSave = setInterval(function(){
|
||||||
clearInterval(me._state.timerSave);
|
if ((new Date()) - me._state.isSaving>500) {
|
||||||
me.getApplication().getController('Statusbar').setStatusCaption('');
|
clearInterval(me._state.timerSave);
|
||||||
me._state.timerSave = undefined;
|
me.getApplication().getController('Statusbar').setStatusCaption(me.textChangesSaved, false, 3000);
|
||||||
}
|
me._state.timerSave = undefined;
|
||||||
}, 500);
|
}
|
||||||
|
}, 500);
|
||||||
|
} else
|
||||||
|
this.getApplication().getController('Statusbar').setStatusCaption(this.textChangesSaved, false, 3000);
|
||||||
} else
|
} else
|
||||||
this.getApplication().getController('Statusbar').setStatusCaption('');
|
this.getApplication().getController('Statusbar').setStatusCaption('');
|
||||||
}
|
}
|
||||||
|
@ -401,7 +405,7 @@ define([
|
||||||
action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction});
|
action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction});
|
||||||
action ? this.setLongActionView(action) : this.loadMask && this.loadMask.hide();
|
action ? this.setLongActionView(action) : this.loadMask && this.loadMask.hide();
|
||||||
|
|
||||||
if (id==Asc.c_oAscAsyncAction['Save'] && (!this._state.fastCoauth || this._state.usersCount<2))
|
if ((id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) && (!this._state.fastCoauth || this._state.usersCount<2))
|
||||||
this.synchronizeChanges();
|
this.synchronizeChanges();
|
||||||
|
|
||||||
if (type == Asc.c_oAscAsyncActionType.BlockInteraction && !((id == Asc.c_oAscAsyncAction['LoadDocumentFonts'] || id == Asc.c_oAscAsyncAction['ApplyChanges']) && this.dontCloseDummyComment )) {
|
if (type == Asc.c_oAscAsyncActionType.BlockInteraction && !((id == Asc.c_oAscAsyncAction['LoadDocumentFonts'] || id == Asc.c_oAscAsyncAction['ApplyChanges']) && this.dontCloseDummyComment )) {
|
||||||
|
@ -411,7 +415,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
setLongActionView: function(action) {
|
setLongActionView: function(action) {
|
||||||
var title = '', text = '';
|
var title = '', text = '', force = false;
|
||||||
|
|
||||||
switch (action.id) {
|
switch (action.id) {
|
||||||
case Asc.c_oAscAsyncAction['Open']:
|
case Asc.c_oAscAsyncAction['Open']:
|
||||||
|
@ -420,11 +424,16 @@ define([
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Asc.c_oAscAsyncAction['Save']:
|
case Asc.c_oAscAsyncAction['Save']:
|
||||||
|
case Asc.c_oAscAsyncAction['ForceSaveButton']:
|
||||||
this._state.isSaving = new Date();
|
this._state.isSaving = new Date();
|
||||||
|
force = true;
|
||||||
title = this.saveTitleText;
|
title = this.saveTitleText;
|
||||||
text = this.saveTextText;
|
text = this.saveTextText;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Asc.c_oAscAsyncAction['ForceSaveTimeout']:
|
||||||
|
break;
|
||||||
|
|
||||||
case Asc.c_oAscAsyncAction['LoadDocumentFonts']:
|
case Asc.c_oAscAsyncAction['LoadDocumentFonts']:
|
||||||
title = this.loadFontsTitleText;
|
title = this.loadFontsTitleText;
|
||||||
text = this.loadFontsTextText;
|
text = this.loadFontsTextText;
|
||||||
|
@ -496,7 +505,7 @@ define([
|
||||||
this.loadMask.show();
|
this.loadMask.show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.getApplication().getController('Statusbar').setStatusCaption(text);
|
this.getApplication().getController('Statusbar').setStatusCaption(text, force);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -666,6 +675,12 @@ define([
|
||||||
value = (!me._state.fastCoauth && value!==null) ? parseInt(value) : (me.appOptions.canCoAuthoring ? 1 : 0);
|
value = (!me._state.fastCoauth && value!==null) ? parseInt(value) : (me.appOptions.canCoAuthoring ? 1 : 0);
|
||||||
me.api.asc_setAutoSaveGap(value);
|
me.api.asc_setAutoSaveGap(value);
|
||||||
|
|
||||||
|
if (me.appOptions.canForcesave) {// use asc_setIsForceSaveOnUserSave only when customization->forcesave = true
|
||||||
|
value = Common.localStorage.getItem("pe-settings-forcesave");
|
||||||
|
me.appOptions.forcesave = (value===null) ? me.appOptions.canForcesave : (parseInt(value)==1);
|
||||||
|
me.api.asc_setIsForceSaveOnUserSave(me.appOptions.forcesave);
|
||||||
|
}
|
||||||
|
|
||||||
if (me.needToUpdateVersion)
|
if (me.needToUpdateVersion)
|
||||||
Common.NotificationCenter.trigger('api:disconnect');
|
Common.NotificationCenter.trigger('api:disconnect');
|
||||||
var timer_sl = setInterval(function(){
|
var timer_sl = setInterval(function(){
|
||||||
|
@ -778,6 +793,8 @@ define([
|
||||||
this.appOptions.canChat = (licType === Asc.c_oLicenseResult.Success || licType === Asc.c_oLicenseResult.SuccessLimit) && !this.appOptions.isOffline && !((typeof (this.editorConfig.customization) == 'object') && this.editorConfig.customization.chat===false);
|
this.appOptions.canChat = (licType === Asc.c_oLicenseResult.Success || licType === Asc.c_oLicenseResult.SuccessLimit) && !this.appOptions.isOffline && !((typeof (this.editorConfig.customization) == 'object') && this.editorConfig.customization.chat===false);
|
||||||
this.appOptions.canPrint = (this.permissions.print !== false);
|
this.appOptions.canPrint = (this.permissions.print !== false);
|
||||||
this.appOptions.canRename = !!this.permissions.rename;
|
this.appOptions.canRename = !!this.permissions.rename;
|
||||||
|
this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && (typeof (this.editorConfig.customization) == 'object' && this.editorConfig.customization.forcesave);
|
||||||
|
this.appOptions.forcesave = this.appOptions.canForcesave;
|
||||||
|
|
||||||
this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) && this.appOptions.canEdit && this.editorConfig.mode !== 'view';
|
this._state.licenseWarning = (licType===Asc.c_oLicenseResult.Connections) && this.appOptions.canEdit && this.editorConfig.mode !== 'view';
|
||||||
|
|
||||||
|
@ -1157,9 +1174,11 @@ define([
|
||||||
if (window.document.title != title)
|
if (window.document.title != title)
|
||||||
window.document.title = title;
|
window.document.title = title;
|
||||||
|
|
||||||
if (!this._state.fastCoauth || this._state.usersCount<2 )
|
if (!this._state.fastCoauth || this._state.usersCount<2 ) {
|
||||||
Common.Gateway.setDocumentModified(isModified);
|
Common.Gateway.setDocumentModified(isModified);
|
||||||
else if ( this._state.startModifyDocument!==undefined && this._state.startModifyDocument === isModified){
|
if (isModified)
|
||||||
|
this.getApplication().getController('Statusbar').setStatusCaption('', true);
|
||||||
|
} else if ( this._state.startModifyDocument!==undefined && this._state.startModifyDocument === isModified){
|
||||||
Common.Gateway.setDocumentModified(isModified);
|
Common.Gateway.setDocumentModified(isModified);
|
||||||
this._state.startModifyDocument = (this._state.startModifyDocument) ? !this._state.startModifyDocument : undefined;
|
this._state.startModifyDocument = (this._state.startModifyDocument) ? !this._state.startModifyDocument : undefined;
|
||||||
}
|
}
|
||||||
|
@ -1183,9 +1202,10 @@ define([
|
||||||
|
|
||||||
var toolbarView = this.getApplication().getController('Toolbar').getView('Toolbar');
|
var toolbarView = this.getApplication().getController('Toolbar').getView('Toolbar');
|
||||||
if (toolbarView) {
|
if (toolbarView) {
|
||||||
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch'),
|
||||||
if (toolbarView.btnSave.isDisabled() !== (!isModified && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1))
|
forcesave = this.appOptions.forcesave;
|
||||||
toolbarView.btnSave.setDisabled(!isModified && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1);
|
if (toolbarView.btnSave.isDisabled() !== (!isModified && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))
|
||||||
|
toolbarView.btnSave.setDisabled(!isModified && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onDocumentCanSaveChanged: function (isCanSave) {
|
onDocumentCanSaveChanged: function (isCanSave) {
|
||||||
|
@ -1193,9 +1213,10 @@ define([
|
||||||
toolbarController = application.getController('Toolbar'),
|
toolbarController = application.getController('Toolbar'),
|
||||||
toolbarView = toolbarController.getView('Toolbar');
|
toolbarView = toolbarController.getView('Toolbar');
|
||||||
if (toolbarView) {
|
if (toolbarView) {
|
||||||
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', toolbarView.btnSave.cmpEl).hasClass('btn-synch'),
|
||||||
if (toolbarView.btnSave.isDisabled() !== (!isCanSave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1))
|
forcesave = this.appOptions.forcesave;
|
||||||
toolbarView.btnSave.setDisabled(!isCanSave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1);
|
if (toolbarView.btnSave.isDisabled() !== (!isCanSave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))
|
||||||
|
toolbarView.btnSave.setDisabled(!isCanSave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1306,7 +1327,7 @@ define([
|
||||||
if (this._state.hasCollaborativeChanges) return;
|
if (this._state.hasCollaborativeChanges) return;
|
||||||
this._state.hasCollaborativeChanges = true;
|
this._state.hasCollaborativeChanges = true;
|
||||||
if (this.appOptions.isEdit)
|
if (this.appOptions.isEdit)
|
||||||
this.getApplication().getController('Statusbar').setStatusCaption(this.txtNeedSynchronize);
|
this.getApplication().getController('Statusbar').setStatusCaption(this.txtNeedSynchronize, true);
|
||||||
},
|
},
|
||||||
/** coauthoring end **/
|
/** coauthoring end **/
|
||||||
|
|
||||||
|
@ -1545,6 +1566,11 @@ define([
|
||||||
if (this._state.fastCoauth && !oldval)
|
if (this._state.fastCoauth && !oldval)
|
||||||
this.synchronizeChanges();
|
this.synchronizeChanges();
|
||||||
}
|
}
|
||||||
|
if (this.appOptions.canForcesave) {
|
||||||
|
value = Common.localStorage.getItem("pe-settings-forcesave");
|
||||||
|
this.appOptions.forcesave = (value===null) ? this.appOptions.canForcesave : (parseInt(value)==1);
|
||||||
|
this.api.asc_setIsForceSaveOnUserSave(this.appOptions.forcesave);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onDocumentName: function(name) {
|
onDocumentName: function(name) {
|
||||||
|
@ -1937,7 +1963,8 @@ define([
|
||||||
errorSessionToken: 'The connection to the server has been interrupted. Please reload the page.',
|
errorSessionToken: 'The connection to the server has been interrupted. Please reload the page.',
|
||||||
errorAccessDeny: 'You are trying to perform an action you do not have rights for.<br>Please contact your Document Server administrator.',
|
errorAccessDeny: 'You are trying to perform an action you do not have rights for.<br>Please contact your Document Server administrator.',
|
||||||
titleServerVersion: 'Editor updated',
|
titleServerVersion: 'Editor updated',
|
||||||
errorServerVersion: 'The editor version has been updated. The page will be reloaded to apply the changes.'
|
errorServerVersion: 'The editor version has been updated. The page will be reloaded to apply the changes.',
|
||||||
|
textChangesSaved: 'All changes saved'
|
||||||
}
|
}
|
||||||
})(), PE.Controllers.Main || {}))
|
})(), PE.Controllers.Main || {}))
|
||||||
});
|
});
|
||||||
|
|
|
@ -177,9 +177,16 @@ define([
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
setStatusCaption: function(text) {
|
setStatusCaption: function(text, force, delay) {
|
||||||
if (text.length)
|
if (this.timerCaption && ( ((new Date()) < this.timerCaption) || text.length==0 ) && !force )
|
||||||
this.statusbar.showStatusMessage(text); else
|
return;
|
||||||
|
|
||||||
|
this.timerCaption = undefined;
|
||||||
|
if (text.length) {
|
||||||
|
this.statusbar.showStatusMessage(text);
|
||||||
|
if (delay>0)
|
||||||
|
this.timerCaption = (new Date()).getTime() + delay;
|
||||||
|
} else
|
||||||
this.statusbar.clearStatusMessage();
|
this.statusbar.clearStatusMessage();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -878,7 +878,7 @@ define([
|
||||||
this.api.asc_Save();
|
this.api.asc_Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.toolbar.btnSave.setDisabled(true);
|
this.toolbar.btnSave.setDisabled(!this.toolbar.mode.forcesave);
|
||||||
|
|
||||||
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
|
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
|
||||||
Common.component.Analytics.trackEvent('Save');
|
Common.component.Analytics.trackEvent('Save');
|
||||||
|
|
|
@ -122,6 +122,10 @@ define([
|
||||||
'<td class="left"><label id="fms-lbl-autosave"><%= scope.textAutoSave %></label></td>',
|
'<td class="left"><label id="fms-lbl-autosave"><%= scope.textAutoSave %></label></td>',
|
||||||
'<td class="right"><span id="fms-chb-autosave" /></td>',
|
'<td class="right"><span id="fms-chb-autosave" /></td>',
|
||||||
'</tr>','<tr class="divider autosave"></tr>',
|
'</tr>','<tr class="divider autosave"></tr>',
|
||||||
|
'<tr class="forcesave">',
|
||||||
|
'<td class="left"><label id="fms-lbl-forcesave"><%= scope.textForceSave %></label></td>',
|
||||||
|
'<td class="right"><span id="fms-chb-forcesave" /></td>',
|
||||||
|
'</tr>','<tr class="divider forcesave"></tr>',
|
||||||
/** coauthoring begin **/
|
/** coauthoring begin **/
|
||||||
'<tr class="coauth changes">',
|
'<tr class="coauth changes">',
|
||||||
'<td class="left"><label><%= scope.strCoAuthMode %></label></td>',
|
'<td class="left"><label><%= scope.strCoAuthMode %></label></td>',
|
||||||
|
@ -212,6 +216,11 @@ define([
|
||||||
}, this));
|
}, this));
|
||||||
this.lblAutosave = $('#fms-lbl-autosave');
|
this.lblAutosave = $('#fms-lbl-autosave');
|
||||||
|
|
||||||
|
this.chForcesave = new Common.UI.CheckBox({
|
||||||
|
el: $('#fms-chb-forcesave'),
|
||||||
|
labelText: this.strForcesave
|
||||||
|
});
|
||||||
|
|
||||||
this.chAlignGuides = new Common.UI.CheckBox({
|
this.chAlignGuides = new Common.UI.CheckBox({
|
||||||
el: $('#fms-chb-align-guides'),
|
el: $('#fms-chb-align-guides'),
|
||||||
labelText: this.strAlignGuides
|
labelText: this.strAlignGuides
|
||||||
|
@ -259,6 +268,7 @@ define([
|
||||||
this.chAutosave.setCaption(this.strAutoRecover);
|
this.chAutosave.setCaption(this.strAutoRecover);
|
||||||
this.lblAutosave.text(this.textAutoRecover);
|
this.lblAutosave.text(this.textAutoRecover);
|
||||||
}
|
}
|
||||||
|
$('tr.forcesave', this.el)[mode.canForcesave ? 'show' : 'hide']();
|
||||||
/** coauthoring begin **/
|
/** coauthoring begin **/
|
||||||
$('tr.coauth.changes', this.el)[mode.isEdit && !mode.isOffline && mode.canCoAuthoring ? 'show' : 'hide']();
|
$('tr.coauth.changes', this.el)[mode.isEdit && !mode.isOffline && mode.canCoAuthoring ? 'show' : 'hide']();
|
||||||
/** coauthoring end **/
|
/** coauthoring end **/
|
||||||
|
@ -295,6 +305,12 @@ define([
|
||||||
value = 0;
|
value = 0;
|
||||||
this.chAutosave.setValue(fast_coauth || (value===null ? this.mode.canCoAuthoring : parseInt(value) == 1));
|
this.chAutosave.setValue(fast_coauth || (value===null ? this.mode.canCoAuthoring : parseInt(value) == 1));
|
||||||
|
|
||||||
|
if (this.mode.canForcesave) {
|
||||||
|
value = Common.localStorage.getItem("pe-settings-forcesave");
|
||||||
|
value = (value === null) ? this.mode.canForcesave : (parseInt(value) == 1);
|
||||||
|
this.chForcesave.setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
value = Common.localStorage.getItem("pe-settings-showsnaplines");
|
value = Common.localStorage.getItem("pe-settings-showsnaplines");
|
||||||
this.chAlignGuides.setValue(value===null || parseInt(value) == 1);
|
this.chAlignGuides.setValue(value===null || parseInt(value) == 1);
|
||||||
},
|
},
|
||||||
|
@ -309,6 +325,8 @@ define([
|
||||||
/** coauthoring end **/
|
/** coauthoring end **/
|
||||||
Common.localStorage.setItem("pe-settings-unit", this.cmbUnit.getValue());
|
Common.localStorage.setItem("pe-settings-unit", this.cmbUnit.getValue());
|
||||||
Common.localStorage.setItem("pe-settings-autosave", this.chAutosave.isChecked() ? 1 : 0);
|
Common.localStorage.setItem("pe-settings-autosave", this.chAutosave.isChecked() ? 1 : 0);
|
||||||
|
if (this.mode.canForcesave)
|
||||||
|
Common.localStorage.setItem("pe-settings-forcesave", this.chForcesave.isChecked() ? 1 : 0);
|
||||||
Common.localStorage.setItem("pe-settings-showsnaplines", this.chAlignGuides.isChecked() ? 1 : 0);
|
Common.localStorage.setItem("pe-settings-showsnaplines", this.chAlignGuides.isChecked() ? 1 : 0);
|
||||||
Common.localStorage.save();
|
Common.localStorage.save();
|
||||||
|
|
||||||
|
@ -345,7 +363,9 @@ define([
|
||||||
textAutoRecover: 'Autorecover',
|
textAutoRecover: 'Autorecover',
|
||||||
strAutoRecover: 'Turn on autorecover',
|
strAutoRecover: 'Turn on autorecover',
|
||||||
txtInch: 'Inch',
|
txtInch: 'Inch',
|
||||||
txtFitWidth: 'Fit to Width'
|
txtFitWidth: 'Fit to Width',
|
||||||
|
textForceSave: 'Save to Server',
|
||||||
|
strForcesave: 'Always save to server (otherwise save to server on document close)'
|
||||||
}, PE.Views.FileMenuPanels.Settings || {}));
|
}, PE.Views.FileMenuPanels.Settings || {}));
|
||||||
|
|
||||||
PE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({
|
PE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({
|
||||||
|
|
|
@ -1540,7 +1540,7 @@ define([
|
||||||
if (this.synchTooltip)
|
if (this.synchTooltip)
|
||||||
this.synchTooltip.hide();
|
this.synchTooltip.hide();
|
||||||
this.btnSave.updateHint(this.btnSaveTip);
|
this.btnSave.updateHint(this.btnSaveTip);
|
||||||
this.btnSave.setDisabled(true);
|
this.btnSave.setDisabled(!this.mode.forcesave);
|
||||||
this._state.hasCollaborativeChanges = false;
|
this._state.hasCollaborativeChanges = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -247,6 +247,7 @@
|
||||||
"PE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
|
"PE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
|
||||||
"PE.Controllers.Main.titleServerVersion": "Editor updated",
|
"PE.Controllers.Main.titleServerVersion": "Editor updated",
|
||||||
"PE.Controllers.Main.errorServerVersion": "The editor version has been updated. The page will be reloaded to apply the changes.",
|
"PE.Controllers.Main.errorServerVersion": "The editor version has been updated. The page will be reloaded to apply the changes.",
|
||||||
|
"PE.Controllers.Main.textChangesSaved": "All changes saved",
|
||||||
"PE.Controllers.Statusbar.zoomText": "Zoom {0}%",
|
"PE.Controllers.Statusbar.zoomText": "Zoom {0}%",
|
||||||
"PE.Controllers.Toolbar.confirmAddFontName": "The font you are going to save is not available on the current device.<br>The text style will be displayed using one of the system fonts, the saved font will be used when it is available.<br>Do you want to continue?",
|
"PE.Controllers.Toolbar.confirmAddFontName": "The font you are going to save is not available on the current device.<br>The text style will be displayed using one of the system fonts, the saved font will be used when it is available.<br>Do you want to continue?",
|
||||||
"PE.Controllers.Toolbar.textAccent": "Accents",
|
"PE.Controllers.Toolbar.textAccent": "Accents",
|
||||||
|
@ -818,6 +819,8 @@
|
||||||
"PE.Views.FileMenuPanels.Settings.txtInput": "Alternate Input",
|
"PE.Views.FileMenuPanels.Settings.txtInput": "Alternate Input",
|
||||||
"PE.Views.FileMenuPanels.Settings.txtLast": "View Last",
|
"PE.Views.FileMenuPanels.Settings.txtLast": "View Last",
|
||||||
"PE.Views.FileMenuPanels.Settings.txtPt": "Point",
|
"PE.Views.FileMenuPanels.Settings.txtPt": "Point",
|
||||||
|
"PE.Views.FileMenuPanels.Settings.textForceSave": "Save to Server",
|
||||||
|
"PE.Views.FileMenuPanels.Settings.strForcesave": "Always save to server (otherwise save to server on document close)",
|
||||||
"PE.Views.HyperlinkSettingsDialog.cancelButtonText": "Cancel",
|
"PE.Views.HyperlinkSettingsDialog.cancelButtonText": "Cancel",
|
||||||
"PE.Views.HyperlinkSettingsDialog.okButtonText": "OK",
|
"PE.Views.HyperlinkSettingsDialog.okButtonText": "OK",
|
||||||
"PE.Views.HyperlinkSettingsDialog.strDisplay": "Display",
|
"PE.Views.HyperlinkSettingsDialog.strDisplay": "Display",
|
||||||
|
|
|
@ -447,6 +447,12 @@ define([
|
||||||
title = this.saveTitleText;
|
title = this.saveTitleText;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Asc.c_oAscAsyncAction.ForceSaveTimeout:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Asc.c_oAscAsyncAction.ForceSaveButton:
|
||||||
|
break;
|
||||||
|
|
||||||
case Asc.c_oAscAsyncAction.LoadDocumentFonts:
|
case Asc.c_oAscAsyncAction.LoadDocumentFonts:
|
||||||
title = this.loadFontsTitleText;
|
title = this.loadFontsTitleText;
|
||||||
break;
|
break;
|
||||||
|
@ -656,6 +662,12 @@ define([
|
||||||
}
|
}
|
||||||
me.api.asc_setAutoSaveGap(value);
|
me.api.asc_setAutoSaveGap(value);
|
||||||
|
|
||||||
|
if (me.appOptions.canForcesave) {// use asc_setIsForceSaveOnUserSave only when customization->forcesave = true
|
||||||
|
value = Common.localStorage.getItem("sse-settings-forcesave");
|
||||||
|
me.appOptions.forcesave = (value === null) ? me.appOptions.canForcesave : (parseInt(value) == 1);
|
||||||
|
me.api.asc_setIsForceSaveOnUserSave(me.appOptions.forcesave);
|
||||||
|
}
|
||||||
|
|
||||||
if (me.needToUpdateVersion) {
|
if (me.needToUpdateVersion) {
|
||||||
Common.NotificationCenter.trigger('api:disconnect');
|
Common.NotificationCenter.trigger('api:disconnect');
|
||||||
toolbarController.onApiCoAuthoringDisconnect();
|
toolbarController.onApiCoAuthoringDisconnect();
|
||||||
|
@ -813,6 +825,9 @@ define([
|
||||||
this.appOptions.isEdit = (this.appOptions.canLicense || this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) && this.permissions.edit !== false && this.editorConfig.mode !== 'view';
|
this.appOptions.isEdit = (this.appOptions.canLicense || this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) && this.permissions.edit !== false && this.editorConfig.mode !== 'view';
|
||||||
this.appOptions.canDownload = !this.appOptions.nativeApp && (this.permissions.download !== false);
|
this.appOptions.canDownload = !this.appOptions.nativeApp && (this.permissions.download !== false);
|
||||||
this.appOptions.canPrint = (this.permissions.print !== false);
|
this.appOptions.canPrint = (this.permissions.print !== false);
|
||||||
|
this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && !(this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) &&
|
||||||
|
(typeof (this.editorConfig.customization) == 'object' && this.editorConfig.customization.forcesave);
|
||||||
|
this.appOptions.forcesave = this.appOptions.canForcesave;
|
||||||
|
|
||||||
this._state.licenseWarning = !(this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) && (licType===Asc.c_oLicenseResult.Connections) && this.appOptions.canEdit && this.editorConfig.mode !== 'view';
|
this._state.licenseWarning = !(this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) && (licType===Asc.c_oLicenseResult.Connections) && this.appOptions.canEdit && this.editorConfig.mode !== 'view';
|
||||||
|
|
||||||
|
@ -1333,18 +1348,20 @@ define([
|
||||||
Common.Gateway.setDocumentModified(change);
|
Common.Gateway.setDocumentModified(change);
|
||||||
|
|
||||||
if (this.toolbarView && this.api) {
|
if (this.toolbarView && this.api) {
|
||||||
var isSyncButton = $('.btn-icon', this.toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', this.toolbarView.btnSave.cmpEl).hasClass('btn-synch'),
|
||||||
|
forcesave = this.appOptions.forcesave;
|
||||||
var cansave = this.api.asc_isDocumentCanSave();
|
var cansave = this.api.asc_isDocumentCanSave();
|
||||||
if (this.toolbarView.btnSave.isDisabled() !== (!cansave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1))
|
if (this.toolbarView.btnSave.isDisabled() !== (!cansave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))
|
||||||
this.toolbarView.btnSave.setDisabled(!cansave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1);
|
this.toolbarView.btnSave.setDisabled(!cansave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onDocumentCanSaveChanged: function (isCanSave) {
|
onDocumentCanSaveChanged: function (isCanSave) {
|
||||||
if (this.toolbarView) {
|
if (this.toolbarView) {
|
||||||
var isSyncButton = $('.btn-icon', this.toolbarView.btnSave.cmpEl).hasClass('btn-synch');
|
var isSyncButton = $('.btn-icon', this.toolbarView.btnSave.cmpEl).hasClass('btn-synch'),
|
||||||
if (this.toolbarView.btnSave.isDisabled() !== (!isCanSave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1))
|
forcesave = this.appOptions.forcesave;
|
||||||
this.toolbarView.btnSave.setDisabled(!isCanSave && !isSyncButton || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1);
|
if (this.toolbarView.btnSave.isDisabled() !== (!isCanSave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))
|
||||||
|
this.toolbarView.btnSave.setDisabled(!isCanSave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1796,6 +1813,11 @@ define([
|
||||||
if (this._state.fastCoauth && !oldval)
|
if (this._state.fastCoauth && !oldval)
|
||||||
this.toolbarView.synchronizeChanges();
|
this.toolbarView.synchronizeChanges();
|
||||||
}
|
}
|
||||||
|
if (this.appOptions.canForcesave) {
|
||||||
|
value = Common.localStorage.getItem("sse-settings-forcesave");
|
||||||
|
this.appOptions.forcesave = (value===null) ? this.appOptions.canForcesave : (parseInt(value)==1);
|
||||||
|
this.api.asc_setIsForceSaveOnUserSave(this.appOptions.forcesave);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onDocumentName: function(name) {
|
onDocumentName: function(name) {
|
||||||
|
|
|
@ -447,6 +447,10 @@ define([
|
||||||
'<td class="left"><label id="fms-lbl-autosave"><%= scope.textAutoSave %></label></td>',
|
'<td class="left"><label id="fms-lbl-autosave"><%= scope.textAutoSave %></label></td>',
|
||||||
'<td class="right"><span id="fms-chb-autosave" /></td>',
|
'<td class="right"><span id="fms-chb-autosave" /></td>',
|
||||||
'</tr>','<tr class="divider autosave"></tr>',
|
'</tr>','<tr class="divider autosave"></tr>',
|
||||||
|
'<tr class="forcesave">',
|
||||||
|
'<td class="left"><label id="fms-lbl-forcesave"><%= scope.textForceSave %></label></td>',
|
||||||
|
'<td class="right"><span id="fms-chb-forcesave" /></td>',
|
||||||
|
'</tr>','<tr class="divider forcesave"></tr>',
|
||||||
'<tr class="coauth changes">',
|
'<tr class="coauth changes">',
|
||||||
'<td class="left"><label><%= scope.strCoAuthMode %></label></td>',
|
'<td class="left"><label><%= scope.strCoAuthMode %></label></td>',
|
||||||
'<td class="right">',
|
'<td class="right">',
|
||||||
|
@ -561,7 +565,12 @@ define([
|
||||||
}
|
}
|
||||||
}, this));
|
}, this));
|
||||||
this.lblAutosave = $('#fms-lbl-autosave');
|
this.lblAutosave = $('#fms-lbl-autosave');
|
||||||
|
|
||||||
|
this.chForcesave = new Common.UI.CheckBox({
|
||||||
|
el: $('#fms-chb-forcesave'),
|
||||||
|
labelText: this.strForcesave
|
||||||
|
});
|
||||||
|
|
||||||
this.cmbUnit = new Common.UI.ComboBox({
|
this.cmbUnit = new Common.UI.ComboBox({
|
||||||
el : $('#fms-cmb-unit'),
|
el : $('#fms-cmb-unit'),
|
||||||
style : 'width: 160px;',
|
style : 'width: 160px;',
|
||||||
|
@ -653,6 +662,7 @@ define([
|
||||||
this.chAutosave.setCaption(this.strAutoRecover);
|
this.chAutosave.setCaption(this.strAutoRecover);
|
||||||
this.lblAutosave.text(this.textAutoRecover);
|
this.lblAutosave.text(this.textAutoRecover);
|
||||||
}
|
}
|
||||||
|
$('tr.forcesave', this.el)[mode.canForcesave ? 'show' : 'hide']();
|
||||||
$('tr.coauth', this.el)[mode.canCoAuthoring && mode.isEdit ? 'show' : 'hide']();
|
$('tr.coauth', this.el)[mode.canCoAuthoring && mode.isEdit ? 'show' : 'hide']();
|
||||||
$('tr.coauth.changes', this.el)[mode.isEdit && !mode.isOffline && mode.canCoAuthoring? 'show' : 'hide']();
|
$('tr.coauth.changes', this.el)[mode.isEdit && !mode.isOffline && mode.canCoAuthoring? 'show' : 'hide']();
|
||||||
},
|
},
|
||||||
|
@ -696,6 +706,12 @@ define([
|
||||||
value = 0;
|
value = 0;
|
||||||
this.chAutosave.setValue(fast_coauth || (value===null ? this.mode.canCoAuthoring : parseInt(value) == 1));
|
this.chAutosave.setValue(fast_coauth || (value===null ? this.mode.canCoAuthoring : parseInt(value) == 1));
|
||||||
|
|
||||||
|
if (this.mode.canForcesave) {
|
||||||
|
value = Common.localStorage.getItem("sse-settings-forcesave");
|
||||||
|
value = (value === null) ? this.mode.canForcesave : (parseInt(value) == 1);
|
||||||
|
this.chForcesave.setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
value = Common.localStorage.getItem("sse-settings-func-locale");
|
value = Common.localStorage.getItem("sse-settings-func-locale");
|
||||||
if (value===null)
|
if (value===null)
|
||||||
value = ((this.mode.lang) ? this.mode.lang : 'en').toLowerCase();
|
value = ((this.mode.lang) ? this.mode.lang : 'en').toLowerCase();
|
||||||
|
@ -741,6 +757,8 @@ define([
|
||||||
Common.localStorage.setItem("sse-settings-fontrender", this.cmbFontRender.getValue());
|
Common.localStorage.setItem("sse-settings-fontrender", this.cmbFontRender.getValue());
|
||||||
Common.localStorage.setItem("sse-settings-unit", this.cmbUnit.getValue());
|
Common.localStorage.setItem("sse-settings-unit", this.cmbUnit.getValue());
|
||||||
Common.localStorage.setItem("sse-settings-autosave", this.chAutosave.isChecked() ? 1 : 0);
|
Common.localStorage.setItem("sse-settings-autosave", this.chAutosave.isChecked() ? 1 : 0);
|
||||||
|
if (this.mode.canForcesave)
|
||||||
|
Common.localStorage.setItem("sse-settings-forcesave", this.chForcesave.isChecked() ? 1 : 0);
|
||||||
Common.localStorage.setItem("sse-settings-func-locale", this.cmbFuncLocale.getValue());
|
Common.localStorage.setItem("sse-settings-func-locale", this.cmbFuncLocale.getValue());
|
||||||
if (this.cmbRegSettings.getSelectedRecord())
|
if (this.cmbRegSettings.getSelectedRecord())
|
||||||
Common.localStorage.setItem("sse-settings-reg-settings", this.cmbRegSettings.getValue());
|
Common.localStorage.setItem("sse-settings-reg-settings", this.cmbRegSettings.getValue());
|
||||||
|
@ -808,7 +826,9 @@ define([
|
||||||
strStrict: 'Strict',
|
strStrict: 'Strict',
|
||||||
textAutoRecover: 'Autorecover',
|
textAutoRecover: 'Autorecover',
|
||||||
strAutoRecover: 'Turn on autorecover',
|
strAutoRecover: 'Turn on autorecover',
|
||||||
txtInch: 'Inch'
|
txtInch: 'Inch',
|
||||||
|
textForceSave: 'Save to Server',
|
||||||
|
strForcesave: 'Always save to server (otherwise save to server on document close)'
|
||||||
}, SSE.Views.FileMenuPanels.MainSettingsGeneral || {}));
|
}, SSE.Views.FileMenuPanels.MainSettingsGeneral || {}));
|
||||||
|
|
||||||
SSE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({
|
SSE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({
|
||||||
|
|
|
@ -1739,7 +1739,7 @@ define([
|
||||||
if (this.synchTooltip)
|
if (this.synchTooltip)
|
||||||
this.synchTooltip.hide();
|
this.synchTooltip.hide();
|
||||||
this.btnSave.updateHint(this.btnSaveTip);
|
this.btnSave.updateHint(this.btnSaveTip);
|
||||||
this.btnSave.setDisabled(true);
|
this.btnSave.setDisabled(!this.mode.forcesave);
|
||||||
this._state.hasCollaborativeChanges = false;
|
this._state.hasCollaborativeChanges = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1075,6 +1075,8 @@
|
||||||
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtPl": "Polish",
|
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtPl": "Polish",
|
||||||
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtRu": "Russian",
|
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtRu": "Russian",
|
||||||
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtWin": "as Windows",
|
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtWin": "as Windows",
|
||||||
|
"SSE.Views.FileMenuPanels.MainSettingsGeneral.textForceSave": "Save to Server",
|
||||||
|
"SSE.Views.FileMenuPanels.MainSettingsGeneral.strForcesave": "Always save to server (otherwise save to server on document close)",
|
||||||
"SSE.Views.FileMenuPanels.Settings.txtGeneral": "General",
|
"SSE.Views.FileMenuPanels.Settings.txtGeneral": "General",
|
||||||
"SSE.Views.FileMenuPanels.Settings.txtPageSettings": "Page Settings",
|
"SSE.Views.FileMenuPanels.Settings.txtPageSettings": "Page Settings",
|
||||||
"SSE.Views.FormatSettingsDialog.textCancel": "Cancel",
|
"SSE.Views.FormatSettingsDialog.textCancel": "Cancel",
|
||||||
|
|
Loading…
Reference in a new issue