Merge branch 'develop' into feature/for-bug-45489
|
@ -23,6 +23,7 @@
|
|||
options: <advanced options>,
|
||||
key: 'key',
|
||||
vkey: 'vkey',
|
||||
referenceData: 'data for external paste',
|
||||
info: {
|
||||
owner: 'owner name',
|
||||
folder: 'path to document',
|
||||
|
@ -218,6 +219,7 @@
|
|||
hideRulers: false // hide or show rulers on first loading (presentation or document editor)
|
||||
hideNotes: false // hide or show notes panel on first loading (presentation editor)
|
||||
uiTheme: 'theme-dark' // set interface theme: id or default-dark/default-light
|
||||
integrationMode: "embed" // turn off scroll to frame
|
||||
},
|
||||
coEditing: {
|
||||
mode: 'fast', // <coauthoring mode>, 'fast' or 'strict'. if 'fast' and 'customization.autosave'=false -> set 'customization.autosave'=true. 'fast' - default for editor
|
||||
|
@ -263,6 +265,7 @@
|
|||
'onRequestCompareFile': <request file to compare>,// must call setRevisedFile method
|
||||
'onRequestSharingSettings': <request sharing settings>,// must call setSharingSettings method
|
||||
'onRequestCreateNew': <try to create document>,
|
||||
'onRequestReferenceData': <try to refresh external data>,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -326,6 +329,7 @@
|
|||
_config.editorConfig.canRequestCompareFile = _config.events && !!_config.events.onRequestCompareFile;
|
||||
_config.editorConfig.canRequestSharingSettings = _config.events && !!_config.events.onRequestSharingSettings;
|
||||
_config.editorConfig.canRequestCreateNew = _config.events && !!_config.events.onRequestCreateNew;
|
||||
_config.editorConfig.canRequestReferenceData = _config.events && !!_config.events.onRequestReferenceData;
|
||||
_config.frameEditorId = placeholderId;
|
||||
_config.parentOrigin = window.location.origin;
|
||||
|
||||
|
@ -490,6 +494,9 @@
|
|||
|
||||
if (target && _checkConfigParams()) {
|
||||
iframe = createIframe(_config);
|
||||
if (_config.editorConfig.customization && _config.editorConfig.customization.integrationMode==='embed')
|
||||
window.AscEmbed && window.AscEmbed.initWorker(iframe);
|
||||
|
||||
if (iframe.src) {
|
||||
var pathArray = iframe.src.split('/');
|
||||
this.frameOrigin = pathArray[0] + '//' + pathArray[2];
|
||||
|
@ -732,6 +739,13 @@
|
|||
});
|
||||
};
|
||||
|
||||
var _setReferenceData = function(data) {
|
||||
_sendCommand({
|
||||
command: 'setReferenceData',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
var _serviceCommand = function(command, data) {
|
||||
_sendCommand({
|
||||
command: 'internalCommand',
|
||||
|
@ -766,7 +780,8 @@
|
|||
setFavorite : _setFavorite,
|
||||
requestClose : _requestClose,
|
||||
grabFocus : _grabFocus,
|
||||
blurFocus : _blurFocus
|
||||
blurFocus : _blurFocus,
|
||||
setReferenceData : _setReferenceData
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -138,6 +138,10 @@ if (window.Common === undefined) {
|
|||
|
||||
'grabFocus': function(data) {
|
||||
$me.trigger('grabfocus', data);
|
||||
},
|
||||
|
||||
'setReferenceData': function(data) {
|
||||
$me.trigger('setreferencedata', data);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -347,6 +351,10 @@ if (window.Common === undefined) {
|
|||
_postMessage({event:'onRequestCreateNew'});
|
||||
},
|
||||
|
||||
requestReferenceData: function (data) {
|
||||
_postMessage({event:'onRequestReferenceData', data: data});
|
||||
},
|
||||
|
||||
pluginsReady: function() {
|
||||
_postMessage({ event: 'onPluginsReady' });
|
||||
},
|
||||
|
|
|
@ -769,7 +769,7 @@ define([
|
|||
return (this.cmpEl) ? this.cmpEl.is(":visible") : $(this.el).is(":visible");
|
||||
},
|
||||
|
||||
updateHint: function(hint) {
|
||||
updateHint: function(hint, isHtml) {
|
||||
this.options.hint = hint;
|
||||
|
||||
if (!this.rendered) return;
|
||||
|
@ -795,10 +795,12 @@ define([
|
|||
this.btnMenuEl.removeData('bs.tooltip');
|
||||
|
||||
this.btnEl.tooltip({
|
||||
html: !!isHtml,
|
||||
title : (typeof hint == 'string') ? hint : hint[0],
|
||||
placement : this.options.hintAnchor||'cursor'
|
||||
});
|
||||
this.btnMenuEl && this.btnMenuEl.tooltip({
|
||||
html: !!isHtml,
|
||||
title : hint[1],
|
||||
placement : this.options.hintAnchor||'cursor'
|
||||
});
|
||||
|
|
|
@ -393,18 +393,36 @@ define([
|
|||
|
||||
if (suspendEvents)
|
||||
this.suspendEvents();
|
||||
|
||||
if (!this.multiSelect) {
|
||||
this.extremeSeletedRec = record;
|
||||
if (!this.multiSelect || ( !this.pressedShift && !this.pressedCtrl) || !this.currentSelectedRec || (this.pressedShift && this.currentSelectedRec == record)) {
|
||||
_.each(this.store.where({selected: true}), function(rec){
|
||||
rec.set({selected: false});
|
||||
});
|
||||
|
||||
if (record) {
|
||||
record.set({selected: true});
|
||||
this.currentSelectedRec = record;
|
||||
}
|
||||
} else {
|
||||
if (record)
|
||||
if (record) {
|
||||
if(this.pressedCtrl) {
|
||||
record.set({selected: !record.get('selected')});
|
||||
this.currentSelectedRec = record;
|
||||
}
|
||||
else if(this.pressedShift){
|
||||
var me =this;
|
||||
var inRange=false;
|
||||
_.each(me.store.models, function(rec){
|
||||
if(me.currentSelectedRec == rec || record == rec){
|
||||
inRange = !inRange;
|
||||
rec.set({selected: true});
|
||||
}
|
||||
else {
|
||||
rec.set({selected: (inRange)});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (suspendEvents)
|
||||
|
@ -708,10 +726,19 @@ define([
|
|||
onKeyDown: function (e, data) {
|
||||
if ( this.disabled ) return;
|
||||
if (data===undefined) data = e;
|
||||
|
||||
if(this.multiSelect) {
|
||||
if (data.keyCode == Common.UI.Keys.CTRL) {
|
||||
this.pressedCtrl = true;
|
||||
} else if (data.keyCode == Common.UI.Keys.SHIFT) {
|
||||
this.pressedShift = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (_.indexOf(this.moveKeys, data.keyCode)>-1 || data.keyCode==Common.UI.Keys.RETURN) {
|
||||
data.preventDefault();
|
||||
data.stopPropagation();
|
||||
var rec = this.getSelectedRec();
|
||||
var rec =(this.multiSelect) ? this.extremeSeletedRec : this.getSelectedRec();
|
||||
if (this.lastSelectedRec === null)
|
||||
this.lastSelectedRec = rec;
|
||||
if (data.keyCode == Common.UI.Keys.RETURN) {
|
||||
|
@ -724,6 +751,7 @@ define([
|
|||
if (this.parentMenu)
|
||||
this.parentMenu.hide();
|
||||
} else {
|
||||
this.pressedCtrl=false;
|
||||
var idx = _.indexOf(this.store.models, rec);
|
||||
if (idx<0) {
|
||||
if (data.keyCode==Common.UI.Keys.LEFT) {
|
||||
|
@ -804,12 +832,20 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
onKeyUp: function(e){
|
||||
if(e.keyCode == Common.UI.Keys.SHIFT)
|
||||
this.pressedShift = false;
|
||||
if(e.keyCode == Common.UI.Keys.CTRL)
|
||||
this.pressedCtrl = false;
|
||||
},
|
||||
|
||||
attachKeyEvents: function() {
|
||||
if (this.enableKeyEvents && this.handleSelect) {
|
||||
var el = $(this.el).find('.inner').addBack().filter('.inner');
|
||||
el.addClass('canfocused');
|
||||
el.attr('tabindex', this.tabindex.toString());
|
||||
el.on((this.parentMenu && this.useBSKeydown) ? 'dataview:keydown' : 'keydown', _.bind(this.onKeyDown, this));
|
||||
el.on((this.parentMenu && this.useBSKeydown) ? 'dataview:keyup' : 'keyup', _.bind(this.onKeyUp, this));
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -819,7 +855,11 @@ define([
|
|||
this.scrollToRecord(this.lastSelectedRec);
|
||||
this.lastSelectedRec = null;
|
||||
} else {
|
||||
this.scrollToRecord(this.getSelectedRec());
|
||||
var selectedRec = this.getSelectedRec();
|
||||
if (!this.multiSelect)
|
||||
this.scrollToRecord(selectedRec);
|
||||
else if(selectedRec && selectedRec.length > 0)
|
||||
this.scrollToRecord(selectedRec[selectedRec.length - 1]);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -144,10 +144,20 @@ define([
|
|||
}
|
||||
}, this, area);
|
||||
}.bind(this));
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
onLaunch: function () {
|
||||
var filter = Common.localStorage.getKeysFilter();
|
||||
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
|
||||
this._state = {
|
||||
disableEditing: false, // disable editing when disconnect/signed file/mail merge preview/review final or original/forms preview
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
|
||||
this.collection = this.getApplication().getCollection('Common.Collections.Comments');
|
||||
this.setComparator();
|
||||
|
@ -1645,16 +1655,25 @@ define([
|
|||
},
|
||||
|
||||
setPreviewMode: function(mode) {
|
||||
if (this.viewmode === mode) return;
|
||||
this.viewmode = mode;
|
||||
if (mode)
|
||||
this._state.disableEditing = mode;
|
||||
this.updatePreviewMode();
|
||||
},
|
||||
|
||||
updatePreviewMode: function() {
|
||||
var docProtection = this._state.docProtection;
|
||||
var viewmode = this._state.disableEditing || docProtection.isReadOnly || docProtection.isFormsOnly;
|
||||
|
||||
if (this.viewmode === viewmode) return;
|
||||
this.viewmode = viewmode;
|
||||
|
||||
if (viewmode)
|
||||
this.prevcanComments = this.mode.canComments;
|
||||
this.mode.canComments = (mode) ? false : this.prevcanComments;
|
||||
this.mode.canComments = (viewmode) ? false : this.prevcanComments;
|
||||
this.closeEditing();
|
||||
this.setMode(this.mode);
|
||||
this.updateComments(true);
|
||||
if (this.getPopover())
|
||||
mode ? this.getPopover().hide() : this.getPopover().update(true);
|
||||
viewmode ? this.getPopover().hide() : this.getPopover().update(true);
|
||||
},
|
||||
|
||||
clearCollections: function() {
|
||||
|
@ -1718,6 +1737,27 @@ define([
|
|||
}
|
||||
}
|
||||
this.updateComments(true);
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
me.onChangeProtectDocument();
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(me.onChangeProtectDocument, me));
|
||||
});
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.updatePreviewMode();
|
||||
}
|
||||
}
|
||||
|
||||
}, Common.Controllers.Comments || {}));
|
||||
|
|
|
@ -144,6 +144,7 @@ define([
|
|||
setApi: function(api) {
|
||||
this.api = api;
|
||||
this.api.asc_registerCallback('asc_onCloseChartEditor', _.bind(this.onDiagrammEditingDisabled, this));
|
||||
this.api.asc_registerCallback('asc_sendFromGeneralToFrameEditor', _.bind(this.onSendFromGeneralToFrameEditor, this));
|
||||
return this;
|
||||
},
|
||||
|
||||
|
@ -187,7 +188,7 @@ define([
|
|||
iconCls: 'warn',
|
||||
buttons: ['ok'],
|
||||
callback: _.bind(function(btn){
|
||||
this.setControlsDisabled(false);
|
||||
this.diagramEditorView.setControlsDisabled(false);
|
||||
this.diagramEditorView.hide();
|
||||
}, this)
|
||||
});
|
||||
|
@ -242,6 +243,9 @@ define([
|
|||
h = eventData.data.height;
|
||||
if (w>0 && h>0)
|
||||
this.diagramEditorView.setInnerSize(w, h);
|
||||
} else
|
||||
if (eventData.type == "frameToGeneralData") {
|
||||
this.api && this.api.asc_getInformationBetweenFrameAndGeneralEditor(eventData.data);
|
||||
} else
|
||||
this.diagramEditorView.fireEvent('internalmessage', this.diagramEditorView, eventData);
|
||||
}
|
||||
|
@ -253,6 +257,10 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
onSendFromGeneralToFrameEditor: function(data) {
|
||||
externalEditor && externalEditor.serviceCommand('generalToFrameData', data);
|
||||
},
|
||||
|
||||
warningTitle: 'Warning',
|
||||
warningText: 'The object is disabled because of editing by another user.',
|
||||
textClose: 'Close',
|
||||
|
|
|
@ -142,6 +142,7 @@ define([
|
|||
setApi: function(api) {
|
||||
this.api = api;
|
||||
this.api.asc_registerCallback('asc_onCloseMergeEditor', _.bind(this.onMergeEditingDisabled, this));
|
||||
this.api.asc_registerCallback('asc_sendFromGeneralToFrameEditor', _.bind(this.onSendFromGeneralToFrameEditor, this));
|
||||
return this;
|
||||
},
|
||||
|
||||
|
@ -186,7 +187,7 @@ define([
|
|||
iconCls: 'warn',
|
||||
buttons: ['ok'],
|
||||
callback: _.bind(function(btn){
|
||||
this.setControlsDisabled(false);
|
||||
this.mergeEditorView.setControlsDisabled(false);
|
||||
this.mergeEditorView.hide();
|
||||
}, this)
|
||||
});
|
||||
|
@ -242,6 +243,9 @@ define([
|
|||
h = eventData.data.height;
|
||||
if (w>0 && h>0)
|
||||
this.mergeEditorView.setInnerSize(w, h);
|
||||
} else
|
||||
if (eventData.type == "frameToGeneralData") {
|
||||
this.api && this.api.asc_getInformationBetweenFrameAndGeneralEditor(eventData.data);
|
||||
} else
|
||||
this.mergeEditorView.fireEvent('internalmessage', this.mergeEditorView, eventData);
|
||||
}
|
||||
|
@ -253,6 +257,10 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
onSendFromGeneralToFrameEditor: function(data) {
|
||||
externalEditor && externalEditor.serviceCommand('generalToFrameData', data);
|
||||
},
|
||||
|
||||
warningTitle: 'Warning',
|
||||
warningText: 'The object is disabled because of editing by another user.',
|
||||
textClose: 'Close',
|
||||
|
|
|
@ -142,6 +142,7 @@ define([
|
|||
setApi: function(api) {
|
||||
this.api = api;
|
||||
this.api.asc_registerCallback('asc_onCloseOleEditor', _.bind(this.onOleEditingDisabled, this));
|
||||
this.api.asc_registerCallback('asc_sendFromGeneralToFrameEditor', _.bind(this.onSendFromGeneralToFrameEditor, this));
|
||||
return this;
|
||||
},
|
||||
|
||||
|
@ -185,7 +186,7 @@ define([
|
|||
iconCls: 'warn',
|
||||
buttons: ['ok'],
|
||||
callback: _.bind(function(btn){
|
||||
this.setControlsDisabled(false);
|
||||
this.oleEditorView.setControlsDisabled(false);
|
||||
this.oleEditorView.hide();
|
||||
}, this)
|
||||
});
|
||||
|
@ -241,6 +242,9 @@ define([
|
|||
h = eventData.data.height;
|
||||
if (w>0 && h>0)
|
||||
this.oleEditorView.setInnerSize(w, h);
|
||||
} else
|
||||
if (eventData.type == "frameToGeneralData") {
|
||||
this.api && this.api.asc_getInformationBetweenFrameAndGeneralEditor(eventData.data);
|
||||
} else
|
||||
this.oleEditorView.fireEvent('internalmessage', this.oleEditorView, eventData);
|
||||
}
|
||||
|
@ -252,6 +256,10 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
onSendFromGeneralToFrameEditor: function(data) {
|
||||
externalEditor && externalEditor.serviceCommand('generalToFrameData', data);
|
||||
},
|
||||
|
||||
warningTitle: 'Warning',
|
||||
warningText: 'The object is disabled because of editing by another user.',
|
||||
textClose: 'Close',
|
||||
|
|
|
@ -457,7 +457,7 @@ Common.UI.HintManager = new(function() {
|
|||
};
|
||||
|
||||
var _init = function(api) {
|
||||
if (Common.Utils.isIE)
|
||||
if (Common.Utils.isIE || Common.UI.isMac && Common.Utils.isGecko) // turn off hints on IE and FireFox (shortcut F6 selects link in address bar)
|
||||
return;
|
||||
_api = api;
|
||||
|
||||
|
@ -480,7 +480,7 @@ Common.UI.HintManager = new(function() {
|
|||
_clearHints();
|
||||
});
|
||||
$(document).on('keyup', function(e) {
|
||||
if (e.keyCode == Common.UI.Keys.ALT && _needShow && !(window.SSE && window.SSE.getController('Statusbar').getIsDragDrop())) {
|
||||
if ((e.keyCode == Common.UI.Keys.ALT || e.keyCode === 91) && _needShow && !(window.SSE && window.SSE.getController('Statusbar').getIsDragDrop())) {
|
||||
e.preventDefault();
|
||||
if (!_hintVisible) {
|
||||
$('input:focus').blur(); // to change value in inputField
|
||||
|
@ -622,10 +622,11 @@ Common.UI.HintManager = new(function() {
|
|||
}
|
||||
}
|
||||
|
||||
_needShow = (Common.Utils.InternalSettings.get(_appPrefix + "settings-use-alt-key") && !e.shiftKey && e.keyCode == Common.UI.Keys.ALT &&
|
||||
_needShow = (Common.Utils.InternalSettings.get(_appPrefix + "settings-show-alt-hints") && !e.shiftKey &&
|
||||
(!Common.Utils.isMac && e.keyCode == Common.UI.Keys.ALT || Common.Utils.isMac && e.metaKey && e.keyCode === Common.UI.Keys.F6) &&
|
||||
!Common.Utils.ModalWindow.isVisible() && _isDocReady && _arrAlphabet.length > 0 &&
|
||||
!(window.PE && $('#pe-preview').is(':visible')));
|
||||
if (e.altKey && e.keyCode !== 115) {
|
||||
if (Common.Utils.InternalSettings.get(_appPrefix + "settings-show-alt-hints") && !Common.Utils.isMac && e.altKey && e.keyCode !== 115) {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
@ -663,7 +664,7 @@ Common.UI.HintManager = new(function() {
|
|||
};
|
||||
|
||||
var _clearHints = function (isComplete) {
|
||||
if (Common.Utils.isIE)
|
||||
if (Common.Utils.isIE || Common.UI.isMac && Common.Utils.isGecko)
|
||||
return;
|
||||
_hintVisible && _hideHints();
|
||||
if (_currentHints.length > 0) {
|
||||
|
|
|
@ -105,6 +105,7 @@ define([
|
|||
Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this));
|
||||
Common.NotificationCenter.on('uitheme:changed', this.updatePluginsButtons.bind(this));
|
||||
Common.NotificationCenter.on('window:resize', this.updatePluginsButtons.bind(this));
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
loadConfig: function(data) {
|
||||
|
@ -151,6 +152,16 @@ define([
|
|||
onAppShowed: function (config) {
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
me.onChangeProtectDocument();
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(me.onChangeProtectDocument, me));
|
||||
});
|
||||
},
|
||||
|
||||
setApi: function(api) {
|
||||
this.api = api;
|
||||
|
||||
|
@ -225,6 +236,10 @@ define([
|
|||
var _group = $('> .group', me.$toolbarPanelPlugins);
|
||||
var $slot = $('<span class="btn-slot text x-huge"></span>').appendTo(_group);
|
||||
btn.render($slot);
|
||||
var docProtection = me.panelPlugins._state.docProtection;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: btn});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: btn});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: btn});
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -259,6 +274,10 @@ define([
|
|||
rank = new_rank;
|
||||
});
|
||||
_group.appendTo(me.$toolbarPanelPlugins);
|
||||
var docProtection = me.panelPlugins._state.docProtection;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: me.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: me.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: me.panelPlugins.lockedControls});
|
||||
} else {
|
||||
console.error('toolbar panel isnot created');
|
||||
}
|
||||
|
@ -518,10 +537,13 @@ define([
|
|||
}
|
||||
|
||||
var variationsArr = [],
|
||||
pluginVisible = false;
|
||||
pluginVisible = false,
|
||||
isDisplayedInViewer = false;
|
||||
item.variations.forEach(function(itemVar){
|
||||
var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, editor) && !itemVar.isSystem;
|
||||
if ( visible ) pluginVisible = true;
|
||||
if (itemVar.isViewer && (itemVar.isDisplayedInViewer!==false))
|
||||
isDisplayedInViewer = true;
|
||||
|
||||
if (item.isUICustomizer ) {
|
||||
visible && arrUI.push({
|
||||
|
@ -571,7 +593,8 @@ define([
|
|||
groupName: (item.group) ? item.group.name : '',
|
||||
groupRank: (item.group) ? item.group.rank : 0,
|
||||
minVersion: item.minVersion,
|
||||
original: item
|
||||
original: item,
|
||||
isDisplayedInViewer: isDisplayedInViewer
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
@ -720,6 +743,19 @@ define([
|
|||
}, funcComplete);
|
||||
} else
|
||||
funcComplete();
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props && this.panelPlugins) {
|
||||
this.panelPlugins._state.docProtection = props;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, props.isReadOnly, {array: this.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, props.isFormsOnly, {array: this.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, props.isCommentsOnly, {array: this.panelPlugins.lockedControls});
|
||||
}
|
||||
}
|
||||
}, Common.Controllers.Plugins || {}));
|
||||
});
|
||||
|
|
|
@ -82,7 +82,8 @@ define([
|
|||
'reviewchange:view': _.bind(this.onReviewViewClick, this),
|
||||
'reviewchange:compare': _.bind(this.onCompareClick, this),
|
||||
'lang:document': _.bind(this.onDocLanguage, this),
|
||||
'collaboration:coauthmode': _.bind(this.onCoAuthMode, this)
|
||||
'collaboration:coauthmode': _.bind(this.onCoAuthMode, this),
|
||||
'protect:update': _.bind(this.onChangeProtectDocument, this)
|
||||
},
|
||||
'Common.Views.ReviewChangesDialog': {
|
||||
'reviewchange:accept': _.bind(this.onAcceptClick, this),
|
||||
|
@ -102,7 +103,15 @@ define([
|
|||
this.userCollection = this.getApplication().getCollection('Common.Collections.Users');
|
||||
this.viewmode = false;
|
||||
|
||||
this._state = {posx: -1000, posy: -1000, popoverVisible: false, previewMode: false, compareSettings: null, wsLock: false, wsProps: []};
|
||||
this._state = { posx: -1000, posy: -1000, popoverVisible: false, previewMode: false, compareSettings: null, wsLock: false, wsProps: [],
|
||||
disableEditing: false, // disable editing when disconnect/signed file/mail merge preview/review final or original/forms preview
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
|
||||
Common.NotificationCenter.on('reviewchanges:turn', this.onTurnPreview.bind(this));
|
||||
Common.NotificationCenter.on('spelling:turn', this.onTurnSpelling.bind(this));
|
||||
|
@ -164,26 +173,35 @@ define([
|
|||
SetDisabled: function(state, reviewMode, fillFormMode) {
|
||||
if (this.dlgChanges)
|
||||
this.dlgChanges.close();
|
||||
if (reviewMode)
|
||||
if (reviewMode) {
|
||||
this.lockToolbar(Common.enumLock.previewReviewMode, state);
|
||||
else if (fillFormMode)
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.previewReviewMode, state, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
} else if (fillFormMode) {
|
||||
this.lockToolbar(Common.enumLock.viewFormMode, state);
|
||||
else
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.viewFormMode, state, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
} else {
|
||||
this.lockToolbar(Common.enumLock.viewMode, state);
|
||||
|
||||
}
|
||||
this.setPreviewMode(state);
|
||||
},
|
||||
|
||||
lockToolbar: function (causes, lock, opts) {
|
||||
Common.Utils.lockControls(causes, lock, opts, this.view.getButtons());
|
||||
this.view && Common.Utils.lockControls(causes, lock, opts, this.view.getButtons());
|
||||
},
|
||||
|
||||
setPreviewMode: function(mode) { //disable accept/reject in popover
|
||||
if (this.viewmode === mode) return;
|
||||
this.viewmode = mode;
|
||||
if (mode)
|
||||
this._state.disableEditing = mode;
|
||||
this.updatePreviewMode();
|
||||
},
|
||||
|
||||
updatePreviewMode: function() {
|
||||
var viewmode = this._state.disableEditing || this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly;
|
||||
|
||||
if (this.viewmode === viewmode) return;
|
||||
this.viewmode = viewmode;
|
||||
if (viewmode)
|
||||
this.prevcanReview = this.appConfig.canReview;
|
||||
this.appConfig.canReview = (mode) ? false : this.prevcanReview;
|
||||
this.appConfig.canReview = (viewmode) ? false : this.prevcanReview;
|
||||
var me = this;
|
||||
this.popoverChanges && this.popoverChanges.each(function (model) {
|
||||
model.set('hint', !me.appConfig.canReview);
|
||||
|
@ -207,17 +225,14 @@ define([
|
|||
onApiShowChange: function (sdkchange, isShow) {
|
||||
var btnlock = true,
|
||||
changes;
|
||||
if (this.appConfig.canReview && !this.appConfig.isReviewOnly) {
|
||||
if (this.appConfig.canReview && !(this.appConfig.isReviewOnly || this._state.docProtection.isReviewOnly)) {
|
||||
if (sdkchange && sdkchange.length>0) {
|
||||
changes = this.readSDKChange(sdkchange);
|
||||
btnlock = this.isSelectedChangesLocked(changes, isShow);
|
||||
}
|
||||
if (this._state.lock !== btnlock) {
|
||||
Common.Utils.lockControls(Common.enumLock.reviewChangelock, btnlock, {array: [this.view.btnAccept, this.view.btnReject]});
|
||||
if (this.dlgChanges) {
|
||||
this.dlgChanges.btnAccept.setDisabled(btnlock);
|
||||
this.dlgChanges.btnReject.setDisabled(btnlock);
|
||||
}
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.reviewChangelock, btnlock, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
this._state.lock = btnlock;
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "accept-reject-lock", btnlock);
|
||||
}
|
||||
|
@ -485,6 +500,7 @@ define([
|
|||
}
|
||||
var date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime()),
|
||||
user = me.userCollection.findOriginalUser(item.get_UserId()),
|
||||
isProtectedReview = me._state.docProtection.isReviewOnly,
|
||||
change = new Common.Models.ReviewChange({
|
||||
uid : Common.UI.getId(),
|
||||
userid : item.get_UserId(),
|
||||
|
@ -499,8 +515,9 @@ define([
|
|||
changedata : item,
|
||||
scope : me.view,
|
||||
hint : !me.appConfig.canReview,
|
||||
docProtection: me._state.docProtection,
|
||||
goto : (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom),
|
||||
editable : me.appConfig.isReviewOnly && (item.get_UserId() == me.currentUserId) || !me.appConfig.isReviewOnly && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()))
|
||||
editable : (me.appConfig.isReviewOnly || isProtectedReview) && (item.get_UserId() == me.currentUserId) || !(me.appConfig.isReviewOnly || isProtectedReview) && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()))
|
||||
});
|
||||
|
||||
arr.push(change);
|
||||
|
@ -603,7 +620,7 @@ define([
|
|||
},
|
||||
|
||||
onApiTrackRevisionsChange: function(localFlag, globalFlag, userId) {
|
||||
if ( this.appConfig.isReviewOnly ) {
|
||||
if ( this.appConfig.isReviewOnly || this._state.docProtection.isReviewOnly) {
|
||||
this.view.turnChanges(true);
|
||||
} else
|
||||
if ( this.appConfig.canReview ) {
|
||||
|
@ -634,8 +651,10 @@ define([
|
|||
this.turnDisplayMode(item.value);
|
||||
if (!this.appConfig.isEdit && !this.appConfig.isRestrictedEdit)
|
||||
Common.localStorage.setItem(this.view.appPrefix + "review-mode", item.value); // for viewer
|
||||
else if (item.value=='markup' || item.value=='simple')
|
||||
else if (item.value=='markup' || item.value=='simple') {
|
||||
Common.localStorage.setItem(this.view.appPrefix + "review-mode-editor", item.value); // for editor save only markup modes
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "review-mode-editor", item.value);
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete', this.view);
|
||||
},
|
||||
|
||||
|
@ -805,7 +824,7 @@ define([
|
|||
rightMenu: {clear: disable, disable: true},
|
||||
statusBar: true,
|
||||
leftMenu: {disable: false, previewMode: true},
|
||||
fileMenu: {protect: true},
|
||||
fileMenu: {protect: true, info: true},
|
||||
navigation: {disable: false, previewMode: true},
|
||||
comments: {disable: false, previewMode: true},
|
||||
chat: false,
|
||||
|
@ -829,10 +848,10 @@ define([
|
|||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
if ( config.canReview ) {
|
||||
(new Promise(function (resolve) {
|
||||
resolve();
|
||||
})).then(function () {
|
||||
if ( config.canReview ) {
|
||||
// function _setReviewStatus(state, global) {
|
||||
// me.view.turnChanges(state, global);
|
||||
// !global && me.api.asc_SetLocalTrackRevisions(state);
|
||||
|
@ -854,7 +873,7 @@ define([
|
|||
!val && (val = me.appConfig.customization ? me.appConfig.customization.reviewDisplay : undefined);
|
||||
val = /^(original|final|markup|simple)$/i.test(val) ? val.toLocaleLowerCase() : 'markup';
|
||||
}
|
||||
|
||||
Common.Utils.InternalSettings.set(me.view.appPrefix + "review-mode-editor", val);
|
||||
me.turnDisplayMode(val); // load display mode for all modes (viewer or editor)
|
||||
me.view.turnDisplayMode(val);
|
||||
|
||||
|
@ -862,13 +881,13 @@ define([
|
|||
(!me.appConfig.customization.review || me.appConfig.customization.review.showReviewChanges===undefined) && me.appConfig.customization.showReviewChanges==true) ) {
|
||||
me.dlgChanges = (new Common.Views.ReviewChangesDialog({
|
||||
popoverChanges : me.popoverChanges,
|
||||
mode : me.appConfig
|
||||
mode : me.appConfig,
|
||||
docProtection : me._state.docProtection
|
||||
}));
|
||||
var sdk = $('#editor_sdk'),
|
||||
offset = sdk.offset();
|
||||
me.dlgChanges.show(Math.max(10, offset.left + sdk.width() - 300), Math.max(10, offset.top + sdk.height() - 150));
|
||||
}
|
||||
});
|
||||
} else if (config.canViewReview) {
|
||||
config.canViewReview = (config.isEdit || me.api.asc_HaveRevisionsChanges(true)); // check revisions from all users
|
||||
if (config.canViewReview) {
|
||||
|
@ -892,7 +911,7 @@ define([
|
|||
me.onChangeProtectSheet();
|
||||
if (me.view) {
|
||||
me.lockToolbar(Common.enumLock.hideComments, !Common.localStorage.getBool(me.view.appPrefix + "settings-livecomment", true), {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
me.lockToolbar(Common.enumLock['Objects'], !!this._state.wsProps['Objects'], {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
me.lockToolbar(Common.enumLock['Objects'], !!me._state.wsProps['Objects'], {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
}
|
||||
|
||||
var val = Common.localStorage.getItem(me.view.appPrefix + "settings-review-hover-mode");
|
||||
|
@ -902,6 +921,9 @@ define([
|
|||
val = !!parseInt(val);
|
||||
Common.Utils.InternalSettings.set(me.view.appPrefix + "settings-review-hover-mode", val);
|
||||
me.appConfig.reviewHoverMode = val;
|
||||
|
||||
me.view && me.view.onAppReady(config);
|
||||
});
|
||||
},
|
||||
|
||||
applySettings: function(menu) {
|
||||
|
@ -971,7 +993,8 @@ define([
|
|||
},
|
||||
|
||||
onCoAuthoringDisconnect: function() {
|
||||
this.lockToolbar(Common.enumLock.lostConnect, true)
|
||||
this.lockToolbar(Common.enumLock.lostConnect, true);
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.lostConnect, true, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
},
|
||||
|
||||
onUpdateUsers: function() {
|
||||
|
@ -1011,6 +1034,37 @@ define([
|
|||
this.lockToolbar(Common.enumLock['Objects'], !!this._state.wsProps['Objects'], {array: [this.view.btnCommentRemove, this.view.btnCommentResolve]});
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.lockToolbar(Common.enumLock.docLockView, props.isReadOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockForms, props.isFormsOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockReview, props.isReviewOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockComments, props.isCommentsOnly);
|
||||
if (this.dlgChanges) {
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, props.isReadOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, props.isFormsOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockReview, props.isReviewOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, props.isCommentsOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
}
|
||||
if (this.appConfig.canReview) {
|
||||
if (props.isReviewOnly) {
|
||||
this.onTurnPreview(true);
|
||||
this.onApiShowChange();
|
||||
} else if (this._state.prevReviewProtected) {
|
||||
this.onTurnPreview(false);
|
||||
this.onApiShowChange();
|
||||
}
|
||||
this._state.prevReviewProtected = props.isReviewOnly;
|
||||
}
|
||||
this.updatePreviewMode();
|
||||
}
|
||||
},
|
||||
|
||||
textInserted: '<b>Inserted:</b>',
|
||||
textDeleted: '<b>Deleted:</b>',
|
||||
textParaInserted: '<b>Paragraph Inserted</b> ',
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<div class="btn-goto img-commonctrl"></div>
|
||||
<% } %>
|
||||
<% if (!hint) { %>
|
||||
<% if (scope.appConfig.isReviewOnly) { %>
|
||||
<% if (scope.appConfig.isReviewOnly || docProtection.isReviewOnly) { %>
|
||||
<% if (editable) { %>
|
||||
<div class="btn-delete img-commonctrl"></div>
|
||||
<% } %>
|
||||
|
|
|
@ -207,6 +207,7 @@ define([
|
|||
type: 'password',
|
||||
showCls: (this.options.iconType==='svg' ? 'svg-icon' : 'toolbar__icon') + ' btn-sheet-view',
|
||||
hideCls: (this.options.iconType==='svg' ? 'svg-icon' : 'toolbar__icon') + ' hide-password',
|
||||
maxLength: this.options.maxPasswordLength,
|
||||
validateOnBlur: false,
|
||||
showPwdOnClick: true,
|
||||
validation : function(value) {
|
||||
|
|
|
@ -154,6 +154,8 @@ define([
|
|||
|
||||
this.$window.css('left',(maxWidth - width - borders_width) / 2);
|
||||
this.$window.css('top',(maxHeight - height - this._headerFooterHeight) / 2);
|
||||
|
||||
this._restoreHeight = this._restoreWidth = undefined;
|
||||
},
|
||||
|
||||
onWindowResize: function() {
|
||||
|
@ -162,27 +164,39 @@ define([
|
|||
win_width = this.getWidth(),
|
||||
win_height = this.getHeight(),
|
||||
bordersOffset = (this.resizable) ? 0 : this.bordersOffset;
|
||||
if (win_height<main_height-bordersOffset*2+0.1 && win_width<main_width-bordersOffset*2+0.1) {
|
||||
var left = this.getLeft(),
|
||||
top = this.getTop();
|
||||
|
||||
if (win_height<main_height-bordersOffset*2+0.1 ) {
|
||||
if (!this.resizable && this._restoreHeight>0 && win_height < this._restoreHeight) {
|
||||
var height = Math.max(Math.min(this._restoreHeight, main_height-bordersOffset*2), this.initConfig.minheight);
|
||||
this.setHeight(height);
|
||||
this.boxEl.css('height', height - this._headerFooterHeight);
|
||||
}
|
||||
var top = this.getTop();
|
||||
if (top<bordersOffset) this.$window.css('top', bordersOffset);
|
||||
else if (top+win_height>main_height-bordersOffset)
|
||||
this.$window.css('top', main_height-bordersOffset - win_height);
|
||||
if (left<bordersOffset) this.$window.css('left', bordersOffset);
|
||||
else if (left+win_width>main_width-bordersOffset)
|
||||
this.$window.css('left', main_width-bordersOffset-win_width);
|
||||
} else {
|
||||
if (win_height>main_height-bordersOffset*2) {
|
||||
if (this._restoreHeight===undefined) {
|
||||
this._restoreHeight = win_height;
|
||||
}
|
||||
this.setHeight(Math.max(main_height-bordersOffset*2, this.initConfig.minheight));
|
||||
this.boxEl.css('height', Math.max(main_height-bordersOffset*2, this.initConfig.minheight) - this._headerFooterHeight);
|
||||
this.$window.css('top', bordersOffset);
|
||||
}
|
||||
if (win_width>main_width-bordersOffset*2) {
|
||||
if (win_width<main_width-bordersOffset*2+0.1) {
|
||||
if (!this.resizable && this._restoreWidth>0 && win_width < this._restoreWidth) {
|
||||
this.setWidth(Math.max(Math.min(this._restoreWidth, main_width-bordersOffset*2), this.initConfig.minwidth));
|
||||
}
|
||||
var left = this.getLeft();
|
||||
if (left<bordersOffset) this.$window.css('left', bordersOffset);
|
||||
else if (left+win_width>main_width-bordersOffset)
|
||||
this.$window.css('left', main_width-bordersOffset-win_width);
|
||||
} else {
|
||||
if (this._restoreWidth===undefined) {
|
||||
this._restoreWidth = win_width;
|
||||
}
|
||||
this.setWidth(Math.max(main_width-bordersOffset*2, this.initConfig.minwidth));
|
||||
this.$window.css('left', bordersOffset);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
showButton: function(id) {
|
||||
|
|
|
@ -74,14 +74,16 @@ define([
|
|||
_.extend(this, options);
|
||||
this._locked = false;
|
||||
this._state = {
|
||||
DisabledControls: false
|
||||
DisabledControls: false,
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
this.lockedControls = [];
|
||||
Common.UI.BaseView.prototype.initialize.call(this, arguments);
|
||||
|
||||
Common.NotificationCenter.on('app:ready', function (mode) {
|
||||
Common.Utils.asyncCall(this._onAppReady, this, mode);
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
render: function(el) {
|
||||
|
@ -153,6 +155,7 @@ define([
|
|||
if ( !this.storePlugins.isEmpty() ) {
|
||||
var me = this;
|
||||
var _group = $('<div class="group"></div>');
|
||||
var _set = Common.enumLock;
|
||||
this.storePlugins.each(function (model) {
|
||||
if (model.get('visible')) {
|
||||
var modes = model.get('variations'),
|
||||
|
@ -167,6 +170,7 @@ define([
|
|||
split: modes && modes.length > 1,
|
||||
value: guid,
|
||||
hint: model.get('name'),
|
||||
lock: model.get('isDisplayedInViewer') ? [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.selRangeEdit, _set.editFormula] : [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.selRangeEdit, _set.editFormula],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -179,6 +183,10 @@ define([
|
|||
me.lockedControls.push(btn);
|
||||
}
|
||||
});
|
||||
var docProtection = me._state.docProtection
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: me.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: me.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: me.lockedControls});
|
||||
|
||||
parent.html(_group);
|
||||
$('<div class="separator long"></div>').prependTo(parent);
|
||||
|
@ -204,6 +212,16 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
SetDisabled: function(disable, reviewMode, fillFormMode) {
|
||||
if (reviewMode) {
|
||||
Common.Utils.lockControls(Common.enumLock.previewReviewMode, disable, {array: this.lockedControls});
|
||||
} else if (fillFormMode) {
|
||||
Common.Utils.lockControls(Common.enumLock.viewFormMode, disable, {array: this.lockedControls});
|
||||
} else {
|
||||
Common.Utils.lockControls(Common.enumLock.viewMode, disable, {array: this.lockedControls});
|
||||
}
|
||||
},
|
||||
|
||||
openInsideMode: function(name, url, frameId) {
|
||||
if (!this.pluginsPanel) return false;
|
||||
|
||||
|
@ -289,9 +307,6 @@ define([
|
|||
this.loadMask.hide();
|
||||
},
|
||||
|
||||
_onAppReady: function (mode) {
|
||||
},
|
||||
|
||||
parseIcons: function(icons) {
|
||||
if (icons.length && typeof icons[0] !== 'string') {
|
||||
var theme = Common.UI.Themes.currentThemeId().toLowerCase(),
|
||||
|
@ -389,6 +404,7 @@ define([
|
|||
});
|
||||
});
|
||||
|
||||
var _set = Common.enumLock;
|
||||
var btn = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconImg: icon_url,
|
||||
|
@ -397,6 +413,7 @@ define([
|
|||
split: _menu_items.length > 1,
|
||||
value: guid,
|
||||
hint: model.get('name'),
|
||||
lock: model.get('isDisplayedInViewer') ? [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.selRangeEdit, _set.editFormula] : [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.selRangeEdit, _set.editFormula ],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
|
|
@ -238,6 +238,10 @@ define([
|
|||
me.fireEvent('comment:resolveComments', [item.value]);
|
||||
});
|
||||
}
|
||||
Common.NotificationCenter.on('protect:doclock', function (e) {
|
||||
me.fireEvent('protect:update');
|
||||
});
|
||||
me.fireEvent('protect:update');
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -259,7 +263,7 @@ define([
|
|||
caption: this.txtAccept,
|
||||
split: !this.appConfig.canUseReviewPermissions,
|
||||
iconCls: 'toolbar__icon btn-review-save',
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -271,7 +275,7 @@ define([
|
|||
caption: this.txtReject,
|
||||
split: !this.appConfig.canUseReviewPermissions,
|
||||
iconCls: 'toolbar__icon btn-review-deny',
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -284,7 +288,7 @@ define([
|
|||
caption: this.txtCompare,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-compare',
|
||||
lock: [_set.hasCoeditingUsers, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.hasCoeditingUsers, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -294,7 +298,7 @@ define([
|
|||
this.btnTurnOn = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-review',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
caption: this.txtTurnon,
|
||||
split: !this.appConfig.isReviewOnly,
|
||||
enableToggle: true,
|
||||
|
@ -309,7 +313,7 @@ define([
|
|||
this.btnPrev = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-review-prev',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtPrev,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -320,7 +324,7 @@ define([
|
|||
this.btnNext = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-review-next',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtNext,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -336,7 +340,7 @@ define([
|
|||
this.btnReviewView = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-reviewview',
|
||||
lock: [_set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtView,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar',
|
||||
|
@ -404,7 +408,7 @@ define([
|
|||
this.btnCoAuthMode = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-coedit',
|
||||
lock: [_set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.viewFormMode, _set.lostConnect, _set.docLockView],
|
||||
caption: this.txtCoAuthMode,
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
|
@ -450,7 +454,7 @@ define([
|
|||
caption: this.txtCommentRemove,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-rem-comment',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect, _set.docLockView, _set.docLockForms],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -461,15 +465,13 @@ define([
|
|||
caption: this.txtCommentResolve,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-resolve-all',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect, _set.docLockView, _set.docLockForms],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
});
|
||||
this.lockedControls.push(this.btnCommentResolve);
|
||||
}
|
||||
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
render: function (el) {
|
||||
|
@ -693,7 +695,6 @@ define([
|
|||
me.$el.find(separator_last).hide();
|
||||
|
||||
Common.NotificationCenter.trigger('tab:visible', 'review', (config.isEdit || config.canViewReview || config.canCoAuthoring && config.canComments) && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration'));
|
||||
|
||||
setEvents.call(me);
|
||||
});
|
||||
},
|
||||
|
@ -731,7 +732,7 @@ define([
|
|||
var button = new Common.UI.Button({
|
||||
cls : 'btn-toolbar',
|
||||
iconCls : 'toolbar__icon btn-ic-review',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.lostConnect],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.lostConnect, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments, Common.enumLock.docLockReview],
|
||||
hintAnchor : 'top',
|
||||
hint : this.tipReview,
|
||||
split : !this.appConfig.isReviewOnly,
|
||||
|
@ -778,7 +779,7 @@ define([
|
|||
button = new Common.UI.Button({
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-ic-docspell',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.viewFormMode, Common.enumLock.previewReviewMode],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.viewFormMode, Common.enumLock.previewReviewMode, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments],
|
||||
hintAnchor : 'top',
|
||||
hint: this.tipSetSpelling,
|
||||
enableToggle: true,
|
||||
|
@ -794,7 +795,7 @@ define([
|
|||
button = new Common.UI.Button({
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-ic-doclang',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.noSpellcheckLangs, Common.enumLock.lostConnect],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.noSpellcheckLangs, Common.enumLock.lostConnect, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments],
|
||||
hintAnchor : 'top',
|
||||
hint: this.tipSetDocLang,
|
||||
dataHint: '0',
|
||||
|
@ -973,6 +974,7 @@ define([
|
|||
this.options.tpl = _.template(this.template)(this.options);
|
||||
this.popoverChanges = this.options.popoverChanges;
|
||||
this.mode = this.options.mode;
|
||||
this.docProtection = this.options.docProtection;
|
||||
|
||||
var filter = Common.localStorage.getKeysFilter();
|
||||
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
|
||||
|
@ -983,6 +985,7 @@ define([
|
|||
render: function() {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
|
||||
var _set = Common.enumLock;
|
||||
this.btnPrev = new Common.UI.Button({
|
||||
cls: 'dlg-btn iconic',
|
||||
iconCls: 'img-commonctrl prev',
|
||||
|
@ -1003,7 +1006,8 @@ define([
|
|||
cls : 'btn-toolbar',
|
||||
caption : this.txtAccept,
|
||||
split : true,
|
||||
disabled : this.mode.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
disabled : this.mode.isReviewOnly || this.docProtection.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
lock : [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
menu : this.mode.canUseReviewPermissions ? false : new Common.UI.Menu({
|
||||
items: [
|
||||
this.mnuAcceptCurrent = new Common.UI.MenuItem({
|
||||
|
@ -1023,7 +1027,7 @@ define([
|
|||
cls : 'btn-toolbar',
|
||||
caption : this.txtReject,
|
||||
split : true,
|
||||
disabled : this.mode.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
lock : [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
menu : this.mode.canUseReviewPermissions ? false : new Common.UI.Menu({
|
||||
items: [
|
||||
this.mnuRejectCurrent = new Common.UI.MenuItem({
|
||||
|
@ -1038,6 +1042,13 @@ define([
|
|||
})
|
||||
});
|
||||
this.btnReject.render(this.$window.find('#id-review-button-reject'));
|
||||
var arr = [this.btnAccept, this.btnReject];
|
||||
Common.Utils.lockControls(Common.enumLock.isReviewOnly, this.mode.isReviewOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, this.docProtection.isReadOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, this.docProtection.isFormsOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockReview, this.docProtection.isReviewOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, this.docProtection.isCommentsOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.reviewChangelock, !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"), {array: arr});
|
||||
|
||||
var me = this;
|
||||
this.btnPrev.on('click', function (e) {
|
||||
|
|
BIN
apps/common/main/resources/help/de/images/find_small.png
Normal file
After Width: | Height: | Size: 857 B |
BIN
apps/common/main/resources/help/de/images/ole_table.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
apps/common/main/resources/help/en/images/find_small.png
Normal file
After Width: | Height: | Size: 760 B |
BIN
apps/common/main/resources/help/en/images/ole_table.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
apps/common/main/resources/help/fr/images/find_small.png
Normal file
After Width: | Height: | Size: 760 B |
BIN
apps/common/main/resources/help/fr/images/ole_table.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
apps/common/main/resources/help/ru/images/find_small.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
apps/common/main/resources/help/ru/images/ole_table.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 168 B |
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 169 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/big/smart-art.png
Normal file
After Width: | Height: | Size: 431 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 166 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/btn-text.png
Normal file
After Width: | Height: | Size: 168 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-cycle.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-hierarchy.png
Normal file
After Width: | Height: | Size: 158 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-list.png
Normal file
After Width: | Height: | Size: 135 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-matrix.png
Normal file
After Width: | Height: | Size: 153 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-process.png
Normal file
After Width: | Height: | Size: 206 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-pyramid.png
Normal file
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 189 B |
Before Width: | Height: | Size: 315 B After Width: | Height: | Size: 191 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/big/smart-art.png
Normal file
After Width: | Height: | Size: 462 B |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 164 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/btn-text.png
Normal file
After Width: | Height: | Size: 163 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-cycle.png
Normal file
After Width: | Height: | Size: 400 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-hierarchy.png
Normal file
After Width: | Height: | Size: 168 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-list.png
Normal file
After Width: | Height: | Size: 136 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-matrix.png
Normal file
After Width: | Height: | Size: 166 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-process.png
Normal file
After Width: | Height: | Size: 365 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-pyramid.png
Normal file
After Width: | Height: | Size: 150 B |
After Width: | Height: | Size: 562 B |
After Width: | Height: | Size: 187 B |
Before Width: | Height: | Size: 339 B After Width: | Height: | Size: 193 B |
BIN
apps/common/main/resources/img/toolbar/1.75x/big/smart-art.png
Normal file
After Width: | Height: | Size: 548 B |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 168 B |
BIN
apps/common/main/resources/img/toolbar/1.75x/btn-text.png
Normal file
After Width: | Height: | Size: 170 B |
BIN
apps/common/main/resources/img/toolbar/1.75x/smart-cycle.png
Normal file
After Width: | Height: | Size: 441 B |
BIN
apps/common/main/resources/img/toolbar/1.75x/smart-hierarchy.png
Normal file
After Width: | Height: | Size: 182 B |
BIN
apps/common/main/resources/img/toolbar/1.75x/smart-list.png
Normal file
After Width: | Height: | Size: 139 B |
BIN
apps/common/main/resources/img/toolbar/1.75x/smart-matrix.png
Normal file
After Width: | Height: | Size: 167 B |
BIN
apps/common/main/resources/img/toolbar/1.75x/smart-process.png
Normal file
After Width: | Height: | Size: 363 B |
BIN
apps/common/main/resources/img/toolbar/1.75x/smart-pyramid.png
Normal file
After Width: | Height: | Size: 161 B |
After Width: | Height: | Size: 712 B |
|
@ -25,7 +25,7 @@
|
|||
}
|
||||
{{/spritesheet}}
|
||||
{{#sprites}}
|
||||
{{#parselang name}}.x-huge .{{name}}{{/parselang}},
|
||||
{{#parselang name}}.x-huge .{{name}}{{/parselang}}:not(.menu__icon),
|
||||
.toolbar__icon-big.{{name}}
|
||||
{
|
||||
background-position: 0 {{px.offset_y}};
|
||||
|
|
After Width: | Height: | Size: 165 B |
Before Width: | Height: | Size: 276 B After Width: | Height: | Size: 168 B |
BIN
apps/common/main/resources/img/toolbar/1x/big/smart-art.png
Normal file
After Width: | Height: | Size: 371 B |
BIN
apps/common/main/resources/img/toolbar/1x/btn-text-vertical.png
Normal file
After Width: | Height: | Size: 149 B |
BIN
apps/common/main/resources/img/toolbar/1x/btn-text.png
Normal file
After Width: | Height: | Size: 147 B |
BIN
apps/common/main/resources/img/toolbar/1x/smart-cycle.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
apps/common/main/resources/img/toolbar/1x/smart-hierarchy.png
Normal file
After Width: | Height: | Size: 152 B |
BIN
apps/common/main/resources/img/toolbar/1x/smart-list.png
Normal file
After Width: | Height: | Size: 129 B |
BIN
apps/common/main/resources/img/toolbar/1x/smart-matrix.png
Normal file
After Width: | Height: | Size: 141 B |
BIN
apps/common/main/resources/img/toolbar/1x/smart-process.png
Normal file
After Width: | Height: | Size: 252 B |
BIN
apps/common/main/resources/img/toolbar/1x/smart-pyramid.png
Normal file
After Width: | Height: | Size: 139 B |
BIN
apps/common/main/resources/img/toolbar/1x/smart-relationship.png
Normal file
After Width: | Height: | Size: 416 B |
After Width: | Height: | Size: 147 B |
BIN
apps/common/main/resources/img/toolbar/1x/text-box-vertical.png
Normal file
After Width: | Height: | Size: 149 B |
After Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 387 B After Width: | Height: | Size: 178 B |
BIN
apps/common/main/resources/img/toolbar/2x/big/smart-art.png
Normal file
After Width: | Height: | Size: 765 B |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.2 KiB |
BIN
apps/common/main/resources/img/toolbar/2x/btn-text-vertical.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
apps/common/main/resources/img/toolbar/2x/btn-text.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
apps/common/main/resources/img/toolbar/2x/smart-cycle.png
Normal file
After Width: | Height: | Size: 606 B |
BIN
apps/common/main/resources/img/toolbar/2x/smart-hierarchy.png
Normal file
After Width: | Height: | Size: 181 B |
BIN
apps/common/main/resources/img/toolbar/2x/smart-list.png
Normal file
After Width: | Height: | Size: 143 B |
BIN
apps/common/main/resources/img/toolbar/2x/smart-matrix.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
apps/common/main/resources/img/toolbar/2x/smart-process.png
Normal file
After Width: | Height: | Size: 420 B |
BIN
apps/common/main/resources/img/toolbar/2x/smart-pyramid.png
Normal file
After Width: | Height: | Size: 169 B |
BIN
apps/common/main/resources/img/toolbar/2x/smart-relationship.png
Normal file
After Width: | Height: | Size: 845 B |
|
@ -131,7 +131,7 @@
|
|||
--component-hover-icon-opacity: .8;
|
||||
--component-active-icon-opacity: 1;
|
||||
--component-active-hover-icon-opacity: 1;
|
||||
--component-disabled-opacity: .6;
|
||||
--component-disabled-opacity: .4;
|
||||
|
||||
--header-component-normal-icon-opacity: .8;
|
||||
--header-component-hover-icon-opacity: .8;
|
||||
|
|
|
@ -78,6 +78,12 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.masked & {
|
||||
&.disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -236,6 +236,10 @@ textarea {
|
|||
background-color: @background-normal;
|
||||
color: @text-normal-ie;
|
||||
color: @text-normal;
|
||||
&:-ms-input-placeholder {
|
||||
color: @text-tertiary-ie;
|
||||
}
|
||||
.placeholder();
|
||||
}
|
||||
|
||||
.btn-edit-table,
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
border: @scaled-one-px-value solid @border-regular-control;
|
||||
background-color: @background-normal-ie;
|
||||
background-color: @background-normal;
|
||||
|
||||
&:-ms-input-placeholder {
|
||||
color: @text-tertiary-ie;
|
||||
}
|
||||
&:focus {
|
||||
border-color: @border-control-focus-ie;
|
||||
border-color: @border-control-focus;
|
||||
|
|