diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js
index 78d99621c..a91876013 100644
--- a/apps/api/documents/api.js
+++ b/apps/api/documents/api.js
@@ -193,6 +193,9 @@
change: false/true // hide/show feature in de/pe/sse
} / false / true // if false/true - use as init value in de/pe. use instead of customization.spellcheck parameter
},
+ font: {
+ name: "Arial",
+ },
chat: true,
comments: true,
zoom: 100,
diff --git a/apps/common/main/lib/component/ComboBorderSize.js b/apps/common/main/lib/component/ComboBorderSize.js
index 85a1aeeb3..fd2b89f5f 100644
--- a/apps/common/main/lib/component/ComboBorderSize.js
+++ b/apps/common/main/lib/component/ComboBorderSize.js
@@ -102,12 +102,12 @@ define([
var txtPt = Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt),
data = [
{displayValue: '0.5 ' + txtPt, value: 0.5, pxValue: 0.5, offsety: 0},
- {displayValue: '1 ' + txtPt, value: 1, pxValue: 1, offsety: 20},
+ {displayValue: '1 ' + txtPt, value: 1, pxValue: 1, offsety: 20}, //pxValue = 1.34px
{displayValue: '1.5 ' + txtPt, value: 1.5, pxValue: 2, offsety: 40},
{displayValue: '2.25 ' + txtPt, value: 2.25,pxValue: 3, offsety: 60},
{displayValue: '3 ' + txtPt, value: 3, pxValue: 4, offsety: 80},
- {displayValue: '4.5 ' + txtPt, value: 4.5, pxValue: 5, offsety: 100},
- {displayValue: '6 ' + txtPt, value: 6, pxValue: 6, offsety: 120}
+ {displayValue: '4.5 ' + txtPt, value: 4.5, pxValue: 6, offsety: 100},
+ {displayValue: '6 ' + txtPt, value: 6, pxValue: 8, offsety: 120}
];
if (options.allowNoBorders !== false)
data.unshift({displayValue: this.txtNoBorders, value: 0, pxValue: 0 });
@@ -216,8 +216,8 @@ define([
{displayValue: '1.5 ' + txtPt, value: 1.5, pxValue: 2, offsety: 40},
{displayValue: '2.25 ' + txtPt, value: 2.25,pxValue: 3, offsety: 60},
{displayValue: '3 ' + txtPt, value: 3, pxValue: 4, offsety: 80},
- {displayValue: '4.5 ' + txtPt, value: 4.5, pxValue: 5, offsety: 100},
- {displayValue: '6 ' + txtPt, value: 6, pxValue: 6, offsety: 120}
+ {displayValue: '4.5 ' + txtPt, value: 4.5, pxValue: 6, offsety: 100},
+ {displayValue: '6 ' + txtPt, value: 6, pxValue: 8, offsety: 120}
];
if (options.allowNoBorders !== false)
diff --git a/apps/common/main/lib/component/DataView.js b/apps/common/main/lib/component/DataView.js
index 8bb1399aa..e2413e9d8 100644
--- a/apps/common/main/lib/component/DataView.js
+++ b/apps/common/main/lib/component/DataView.js
@@ -1368,12 +1368,30 @@ define([
props = {minScrollbarLength : this.minScrollbarLength};
this.scrollAlwaysVisible && (props.alwaysVisibleY = this.scrollAlwaysVisible);
- if (top + menuH > docH ) {
- innerEl.css('max-height', (docH - top - paddings - margins) + 'px');
- this.scroller.update(props);
- } else if ( top + menuH < docH && innerEl.height() < this.options.restoreHeight ) {
- innerEl.css('max-height', (Math.min(docH - top - paddings - margins, this.options.restoreHeight)) + 'px');
- this.scroller.update(props);
+ var menuUp = false;
+ if (this.parentMenu.menuAlign) {
+ var m = this.parentMenu.menuAlign.match(/^([a-z]+)-([a-z]+)/);
+ menuUp = (m[1]==='bl' || m[1]==='br');
+ }
+ if (menuUp) {
+ var bottom = top + menuH;
+ if (top<0) {
+ innerEl.css('max-height', (bottom - paddings - margins) + 'px');
+ menuRoot.css('top', 0);
+ this.scroller.update(props);
+ } else if (top>0 && innerEl.height() < this.options.restoreHeight) {
+ innerEl.css('max-height', (Math.min(bottom - paddings - margins, this.options.restoreHeight)) + 'px');
+ menuRoot.css('top', bottom - menuRoot.outerHeight());
+ this.scroller.update(props);
+ }
+ } else {
+ if (top + menuH > docH ) {
+ innerEl.css('max-height', (docH - top - paddings - margins) + 'px');
+ this.scroller.update(props);
+ } else if ( top + menuH < docH && innerEl.height() < this.options.restoreHeight ) {
+ innerEl.css('max-height', (Math.min(docH - top - paddings - margins, this.options.restoreHeight)) + 'px');
+ this.scroller.update(props);
+ }
}
},
diff --git a/apps/common/main/lib/component/Menu.js b/apps/common/main/lib/component/Menu.js
index d8acf88de..9ecbf461f 100644
--- a/apps/common/main/lib/component/Menu.js
+++ b/apps/common/main/lib/component/Menu.js
@@ -145,7 +145,7 @@ define([
style : '',
itemTemplate: null,
items : [],
- menuAlign : 'tl-bl',
+ menuAlign : 'tl-bl',//menu - parent
menuAlignEl : null,
offset : [0, 0],
cyclic : true,
diff --git a/apps/common/main/lib/component/Mixtbar.js b/apps/common/main/lib/component/Mixtbar.js
index 7b59950ed..0361f6c1d 100644
--- a/apps/common/main/lib/component/Mixtbar.js
+++ b/apps/common/main/lib/component/Mixtbar.js
@@ -399,7 +399,9 @@ define([
_btns = data.buttons,
_flex = data.flex;
var more_section = $active.find('.more-box');
-
+ if (more_section.length===0) {
+ me.setMoreButton($active.attr('data-tab'), $active);
+ }
if ( !_rightedge ) {
_rightedge = $active.get(0).getBoundingClientRect().right;
}
@@ -527,10 +529,30 @@ define([
this.$moreBar = btnsMore[tab].panel;
},
+ clearMoreButton: function(tab) {
+ var panel = this.$panels.filter('[data-tab=' + tab + ']');
+ if ( panel.length ) {
+ var data = panel.data();
+ data.buttons = data.flex = data.rightedge = undefined;
+ panel.find('.more-box').remove();
+ }
+ if (btnsMore[tab]) {
+ var moreContainer = optsFold.$bar.find('.more-container[data-tab="' + tab + '"]');
+ moreContainer.remove();
+ btnsMore[tab].remove();
+ delete btnsMore[tab];
+ }
+ },
+
resizeToolbar: function(reset) {
var $active = this.$panels.filter('.active'),
- more_section = $active.find('.more-box'),
- more_section_width = parseInt(more_section.css('width')) || 0,
+ more_section = $active.find('.more-box');
+
+ if (more_section.length===0) {
+ this.setMoreButton($active.attr('data-tab'), $active);
+ }
+
+ var more_section_width = parseInt(more_section.css('width')) || 0,
box_controls_width = $active.parents('.box-controls').width(),
_maxright = box_controls_width,
_rightedge = $active.get(0).getBoundingClientRect().right,
diff --git a/apps/common/main/lib/component/TableStyler.js b/apps/common/main/lib/component/TableStyler.js
index 018873d69..b54139f7e 100644
--- a/apps/common/main/lib/component/TableStyler.js
+++ b/apps/common/main/lib/component/TableStyler.js
@@ -45,324 +45,202 @@ define([
'common/main/lib/component/BaseView'
], function () {
'use strict';
+ Common.UI.CellBorder = function (options){
+ var me =this;
- Common.UI.CellStyler = Common.UI.BaseView.extend({
- options : {
- clickOffset : 10,
- overwriteStyle : true,
- maxBorderSize : 6,
- halfBorderSize : false,
- defaultBorderSize : 1,
- defaultBorderColor : '#ccc'
- },
+ var virtualBorderSize,
+ virtualBorderColor,
+ borderSize,
+ borderColor,
+ borderAlfa;
- template: _.template([
- '
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ <%= scope.textForLangFL %>
+
+
+
+
+
+
+
+
+
+ <%= scope.textFLDont %>
+
+
+
+
+
+
+
+
+
+
+ <%= scope.textResetAll %>
+ <%= scope.textDelete %>
+ <%= scope.textAdd %>
+
+
+
diff --git a/apps/common/main/lib/template/CommentsPopover.template b/apps/common/main/lib/template/CommentsPopover.template
index a0d7b0854..8cc1e3389 100644
--- a/apps/common/main/lib/template/CommentsPopover.template
+++ b/apps/common/main/lib/template/CommentsPopover.template
@@ -7,11 +7,11 @@
<%= scope.getEncodedName(parsedName) %>
<%=date%>
- <% if (!editTextInPopover || hint || scope.viewmode) { %>
+ <% if (!editTextInPopover || (hint && !fullInfoInHint) || scope.viewmode) { %>
<%=scope.pickLink(comment)%>
<% } else { %>
-
+
<% if (hideAddReply) { %>
<% } else { %>
@@ -37,7 +37,7 @@
<%=item.get("date")%>
<% if (!item.get("editTextInPopover")) { %>
<%=scope.pickLink(item.get("reply"))%>
- <% if (!hint && !scope.viewmode) { %>
+ <% if ((fullInfoInHint || !hint) && !scope.viewmode) { %>
<% if (item.get("editable")) { %>
">
@@ -61,7 +61,7 @@
- <% if (!showReplyInPopover && !hideAddReply && !hint && !scope.viewmode) { %>
+ <% if (!showReplyInPopover && !hideAddReply && (fullInfoInHint || !hint) && !scope.viewmode) { %>
<% if (replys.length && !add_arrow) { %>
textAddReply
<% } else { %>
@@ -73,7 +73,7 @@
<% if (!editTextInPopover && !lock) { %>
- <% if (!hint && !scope.viewmode) { %>
+ <% if ((fullInfoInHint || !hint) && !scope.viewmode) { %>
<% if (editable) { %>
<% } %>
@@ -81,9 +81,9 @@
<% } %>
<% } %>
- <% if (editable && !hint && !scope.viewmode) { %>
+ <% if (editable && (fullInfoInHint || !hint) && !scope.viewmode) { %>
- <% } else if (!hint && (!editable || scope.viewmode) && resolved) { %>
+ <% } else if ((fullInfoInHint || !hint) && (!editable || scope.viewmode) && resolved) { %>
<% } %>
@@ -93,7 +93,7 @@
<% if (showReplyInPopover) { %>
-
+
textClose
diff --git a/apps/common/main/lib/util/htmlutils.js b/apps/common/main/lib/util/htmlutils.js
index 0eccb01e7..bfd279b71 100644
--- a/apps/common/main/lib/util/htmlutils.js
+++ b/apps/common/main/lib/util/htmlutils.js
@@ -72,6 +72,7 @@ if ( window.desktop ) {
delete params.uitheme;
} else {
localStorage.setItem("ui-theme-id", theme.id);
+ localStorage.removeItem("ui-theme-use-system");
}
localStorage.removeItem("ui-theme");
diff --git a/apps/common/main/lib/util/utils.js b/apps/common/main/lib/util/utils.js
index 6fc61e48e..70e9a173b 100644
--- a/apps/common/main/lib/util/utils.js
+++ b/apps/common/main/lib/util/utils.js
@@ -979,7 +979,7 @@ Common.Utils.warningDocumentIsLocked = function (opts) {
callback: function(btn){
if (btn == 'edit') {
if ( opts.disablefunc ) opts.disablefunc(false);
- app.getController('Main').api.asc_setIsReadOnly(false);
+ app.getController('Main').api.asc_setLocalRestrictions(Asc.c_oAscLocalRestrictionType.None);
}
}
});
diff --git a/apps/common/main/lib/view/AutoCorrectDialog.js b/apps/common/main/lib/view/AutoCorrectDialog.js
index 0cea0bf82..abb089090 100644
--- a/apps/common/main/lib/view/AutoCorrectDialog.js
+++ b/apps/common/main/lib/view/AutoCorrectDialog.js
@@ -47,6 +47,8 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
], function (contentTemplate) { 'use strict';
var _mathStore = new Common.UI.DataViewStore();
var _functionsStore = new Common.UI.DataViewStore();
+ var _exciptionsStore = new Common.UI.DataViewStore();
+ var _exciptionsLangs = [0x0409, 0x0419];
Common.Views.AutoCorrectDialog = Common.Views.AdvancedSettingsWindow.extend(_.extend({
options: {
@@ -57,7 +59,8 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
},
initialize : function(options) {
- var filter = Common.localStorage.getKeysFilter();
+ var filter = Common.localStorage.getKeysFilter(),
+ me = this;
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
var items = [
@@ -66,7 +69,7 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
];
if (this.appPrefix=='de-' || this.appPrefix=='pe-') {
items.push({panelId: 'id-autocorrect-dialog-settings-de-autoformat', panelCaption: this.textAutoFormat});
- items.push({panelId: 'id-autocorrect-dialog-settings-autocorrect', panelCaption: this.textAutoCorrect});
+ items.push({panelId: 'id-autocorrect-dialog-settings-exceptions', panelCaption: this.textAutoCorrect});
} else if (this.appPrefix=='sse-')
items.push({panelId: 'id-autocorrect-dialog-settings-sse-autoformat', panelCaption: this.textAutoFormat});
@@ -105,6 +108,19 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
this.arrAddRec = value ? JSON.parse(value) : [];
value = Common.Utils.InternalSettings.get(path + "-rem");
this.arrRemRec = value ? JSON.parse(value) : [];
+
+ this.arrAddExceptions = {};
+ this.arrRemExceptions = {};
+ _exciptionsLangs.forEach(function(lang) {
+ path = me.appPrefix + "settings-letter-exception";
+
+ value = Common.Utils.InternalSettings.get(path + "-add-" + lang);
+ me.arrAddExceptions[lang] = value ? JSON.parse(value) : [];
+
+ value = Common.Utils.InternalSettings.get(path + "-rem-" + lang);
+ me.arrRemExceptions[lang] = value ? JSON.parse(value) : [];
+ });
+
Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options);
},
@@ -335,27 +351,121 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
Common.Utils.InternalSettings.set(me.appPrefix + "settings-autoformat-double-space", checked);
me.api.asc_SetAutoCorrectDoubleSpaceWithPeriod(checked);
});
+
+
// AutoCorrect
- this.chFLSentence = new Common.UI.CheckBox({
- el: $window.find('#id-autocorrect-dialog-chk-fl-sentence'),
+ var exciptionsActiveLang = Common.Utils.InternalSettings.get('settings-letter-exception-lang');
+ this.exceptionsLangCmb = new Common.UI.ComboBox({
+ el : $window.find('#auto-correct-exceptions-lang'),
+ style : 'width: 145px;',
+ menuStyle : 'min-width:100%;',
+ editable : false,
+ takeFocusOnClose : true,
+ menuCls : 'menu-aligned',
+ cls : 'input-group-nr',
+ dataHintDirection: 'bottom',
+ data : _exciptionsLangs.map(function(lang){
+ var langName = Common.util.LanguageInfo.getLocalLanguageName(lang);
+ return {
+ displayValue: langName[1],
+ shortName: langName[0],
+ value: lang
+ };
+ })
+ }).on('selected', function(combo, record) {
+ if(exciptionsActiveLang != record.value) {
+ exciptionsActiveLang = record.value;
+ Common.Utils.InternalSettings.set('settings-letter-exception-lang', exciptionsActiveLang);
+ me.onInitExceptionsList(true);
+ me.onChangeInputException(me.exceptionsFindInput, me.exceptionsFindInput.getValue());
+ }
+ });
+
+ if(!exciptionsActiveLang) {
+ var curLangObj = this.exceptionsLangCmb.store.findWhere({value: this.api.asc_getDefaultLanguage()});
+ if (!curLangObj) {
+ var nameLang = Common.util.LanguageInfo.getLocalLanguageName(this.api.asc_getDefaultLanguage())[0].split(/[\-\_]/)[0];
+ curLangObj = this.exceptionsLangCmb.store.find(function(lang){
+ return lang.get('shortName').indexOf(nameLang)==0;
+ });
+ }
+ if(curLangObj) exciptionsActiveLang = curLangObj.get('value');
+ }
+ this.exceptionsLangCmb.setValue(exciptionsActiveLang ? exciptionsActiveLang : _exciptionsLangs[0]);
+
+ this.onInitExceptionsList(true);
+ this.exceptionsList = new Common.UI.ListView({
+ el: $window.find('#auto-correct-exceptions-list'),
+ store: new Common.UI.DataViewStore(_exciptionsStore.slice(0, 6)),
+ simpleAddMode: false,
+ template: _.template(['
'].join('')),
+ itemTemplate: _.template([
+ '
<%= value + "."%>
'
+ ].join('')),
+ scrollAlwaysVisible: true,
+ tabindex: 1
+ });
+ this.exceptionsList.on('item:select', _.bind(this.onSelectExceptionItem, this));
+
+
+ this.exceptionsFindInput = new Common.UI.InputField({
+ el : $window.find('#auto-correct-exceptions-find'),
+ allowBlank : true,
+ validateOnChange : true,
+ maxLength : 255,
+ validation : function () { return true; }
+ }).on ('changing', _.bind(this.onChangeInputException, this));
+
+ this.exceptionsFindInput.cmpEl.find('input').on('keydown', function(event){
+ if (event.key == 'ArrowDown') {
+ var _selectedItem = me.exceptionsList.getSelectedRec() || me.exceptionsList.store.at(0);
+ if (_selectedItem) {
+ me.exceptionsList.selectRecord(_selectedItem);
+ me.exceptionsList.scrollToRecord(_selectedItem);
+ }
+ _.delay(function(){
+ me.exceptionsList.focus();
+ },10);
+
+ }
+ });
+
+ this.btnResetExceptions = new Common.UI.Button({
+ el: $window.find('#auto-correct-btn-exceptions-reset')
+ });
+ this.btnResetExceptions.on('click', _.bind(this.onResetExceptionsToDefault, this));
+
+ this.btnAddExceptions = new Common.UI.Button({
+ el: $window.find('#auto-correct-btn-exceptions-edit')
+ });
+ this.btnAddExceptions.on('click', _.bind(this.onAddException, this, false));
+
+ this.btnDeleteExceptions = new Common.UI.Button({
+ el: $window.find('#auto-correct-btn-exceptions-delete')
+ });
+ this.btnDeleteExceptions.on('click', _.bind(this.onDeleteException, this, false));
+
+
+ this.chkSentenceExceptions = new Common.UI.CheckBox({
+ el: $window.find('#auto-correct-exceptions-chk-sentence'),
labelText: this.textFLSentence,
- value: Common.Utils.InternalSettings.get(this.appPrefix + "settings-autoformat-fl-sentence")
+ value: Common.Utils.InternalSettings.get(this.appPrefix + "settings-letter-exception-sentence")
}).on('change', function(field, newValue, oldValue, eOpts){
var checked = (field.getValue()==='checked');
- Common.localStorage.setBool(me.appPrefix + "settings-autoformat-fl-sentence", checked);
- Common.Utils.InternalSettings.set(me.appPrefix + "settings-autoformat-fl-sentence", checked);
+ Common.localStorage.setBool(me.appPrefix + "settings-letter-exception-sentence", checked);
+ Common.Utils.InternalSettings.set(me.appPrefix + "settings-letter-exception-sentence", checked);
me.api.asc_SetAutoCorrectFirstLetterOfSentences && me.api.asc_SetAutoCorrectFirstLetterOfSentences(checked);
});
- this.chFLCells = new Common.UI.CheckBox({
- el: $window.find('#id-autocorrect-dialog-chk-fl-cells'),
+ this.chkSentenceCells = new Common.UI.CheckBox({
+ el: $window.find('#auto-correct-exceptions-chk-cells'),
labelText: this.textFLCells,
- value: Common.Utils.InternalSettings.get(this.appPrefix + "settings-autoformat-fl-cells")
+ value: Common.Utils.InternalSettings.get(this.appPrefix + "settings-letter-exception-cells")
}).on('change', function(field, newValue, oldValue, eOpts){
var checked = (field.getValue()==='checked');
- Common.localStorage.setBool(me.appPrefix + "settings-autoformat-fl-cells", checked);
- Common.Utils.InternalSettings.set(me.appPrefix + "settings-autoformat-fl-cells", checked);
- me.api.asc_SetAutoCorrectFirstLetterOfCells && me.api.asc_SetAutoCorrectFirstLetterOfCells(checked);
+ Common.localStorage.setBool(me.appPrefix + "settings-letter-exception-cells", checked);
+ Common.Utils.InternalSettings.set(me.appPrefix + "settings-letter-exception-cells", checked);
+ me.api.asc_SetAutoCorrectFirstLetterOfSentences && me.api.asc_SetAutoCorrectFirstLetterOfSentences(checked);
});
this.btnsCategory[3].on('click', _.bind(this.onAutocorrectCategoryClick, this, false));
@@ -392,6 +502,7 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
afterRender: function() {
this.updateControls();
this.updateRecControls();
+ this.updateExceptionsControls();
if (this.storageName) {
var value = Common.localStorage.getItem(this.storageName);
this.setActiveCategory((value!==null) ? parseInt(value) : 0);
@@ -402,10 +513,9 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
var arr = [
this.chReplaceType, this.inputReplace, this.inputBy, this.mathList, this.btnReset, this.btnEdit, this.btnDelete, // 0 tab
this.inputRecFind, this.mathRecList, this.btnResetRec, this.btnAddRec, this.btnDeleteRec, // 1 tab
- this.chHyperlink // 2 tab
];
- arr = arr.concat(this.chNewRows ? [this.chNewRows] : [this.chQuotes, this.chHyphens, this.chBulleted, this.chNumbered]);
- arr = arr.concat(this.chFLSentence ? [this.chFLSentence, this.chFLCells] : []);
+ arr = arr.concat(this.chNewRows ? [this.chHyperlink, this.chNewRows] : [this.chQuotes, this.chHyphens, this.chHyperlink, this.chDoubleSpaces, this.chBulleted, this.chNumbered]);
+ arr = arr.concat(this.chkSentenceExceptions ? [this.chkSentenceExceptions, this.chkSentenceCells, this.exceptionsLangCmb, this.exceptionsFindInput, this.exceptionsList, this.btnResetExceptions, this.btnAddExceptions, this.btnDeleteExceptions] : []);
return arr;
},
@@ -481,30 +591,45 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
onAutocorrectCategoryClick: function(delay) {
var me = this;
_.delay(function(){
- me.chFLSentence.focus();
+ $('input', me.exceptionsFindInput.cmpEl).select().focus();
},delay ? 50 : 0);
+
+ if (me.exceptionsList.store.length < _exciptionsStore.length) {
+ _.delay(function(){
+ me.exceptionsList.setStore(_exciptionsStore);
+ me.exceptionsList.onResetItems();
+ },delay ? 100 : 10);
+ }
},
onDelete: function() {
var rec = this.mathList.getSelectedRec();
+ var path = '';
+ var val;
if (rec) {
if (rec.get('defaultValue')) {
- var path = this.appPrefix + "settings-math-correct-rem";
+ path = this.appPrefix + "settings-math-correct-rem";
var disabled = !rec.get('defaultDisabled');
rec.set('defaultDisabled', disabled);
if (disabled)
this.arrRem.push(rec.get('replaced'));
else
this.arrRem.splice(this.arrRem.indexOf(rec.get('replaced')), 1);
- var val = JSON.stringify(this.arrRem);
+ val = JSON.stringify(this.arrRem);
Common.Utils.InternalSettings.set(path, val);
Common.localStorage.setItem(path, val);
this.btnDelete.setCaption(disabled ? this.textRestore : this.textDelete);
disabled ? this.api.asc_deleteFromAutoCorrectMathSymbols(rec.get('replaced')) : this.api.asc_AddOrEditFromAutoCorrectMathSymbols(rec.get('replaced'), rec.get('defaultValue'));
} else {
_mathStore.remove(rec);
+
+ this.arrAdd.splice(this.arrAdd.indexOf(rec.get('replaced')), 1);
+ path = this.appPrefix + "settings-math-correct-add";
+ val = JSON.stringify(this.arrAdd);
+ Common.Utils.InternalSettings.set(path, val);
+ Common.localStorage.setItem(path, val);
this.mathList.scroller && this.mathList.scroller.update({});
- this.api.asc_deleteFromAutoCorrectMathSymbols(rec.get('replaced'));
+ this.api.asc_deleteFromAutoCorrectMathSymbols(rec.get('replaced'));
}
this.updateControls();
}
@@ -746,22 +871,30 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
onDeleteRec: function() {
var rec = this.mathRecList.getSelectedRec();
+ var path;
+ var val;
if (rec) {
if (rec.get('defaultValue')) {
- var path = this.appPrefix + "settings-rec-functions-rem";
+ path = this.appPrefix + "settings-rec-functions-rem";
var disabled = !rec.get('defaultDisabled');
rec.set('defaultDisabled', disabled);
if (disabled)
this.arrRemRec.push(rec.get('value'));
else
this.arrRemRec.splice(this.arrRemRec.indexOf(rec.get('value')), 1);
- var val = JSON.stringify(this.arrRemRec);
+ val = JSON.stringify(this.arrRemRec);
Common.Utils.InternalSettings.set(path, val);
Common.localStorage.setItem(path, val);
this.btnDeleteRec.setCaption(disabled ? this.textRestore : this.textDelete);
disabled ? this.api.asc_deleteFromAutoCorrectMathFunctions(rec.get('value')) : this.api.asc_AddFromAutoCorrectMathFunctions(rec.get('value'));
} else {
_functionsStore.remove(rec);
+
+ this.arrAddRec.splice(this.arrAddRec.indexOf(rec.get('value')), 1);
+ path = this.appPrefix + "settings-rec-functions-add";
+ val = JSON.stringify(this.arrAddRec);
+ Common.Utils.InternalSettings.set(path, val);
+ Common.localStorage.setItem(path, val);
this.mathRecList.scroller && this.mathRecList.scroller.update({});
this.api.asc_deleteFromAutoCorrectMathFunctions(rec.get('value'));
}
@@ -822,6 +955,204 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
this.btnAddRec.setDisabled(!!rec || !value);
},
+ onInitExceptionsList: function(overrideNotEmptyStore) {
+ if (_exciptionsStore.length>0 && !overrideNotEmptyStore) return;
+
+ _exciptionsStore.comparator = function(item1, item2) {
+ var n1 = item1.get('value').toLowerCase(),
+ n2 = item2.get('value').toLowerCase();
+ if (n1==n2) return 0;
+ return (n1
-1
+ });
+ });
+
+ var dataAdd = [];
+ _.each(arrAdd, function(item, index){
+ if (_.findIndex(data, {value: item})<0) {
+ dataAdd.push({
+ value: item,
+ defaultValue: false,
+ defaultDisabled: false
+ });
+ }
+ });
+ _exciptionsStore.reset(data.concat(dataAdd));
+ this.updateExceptionsControls();
+ },
+
+ onResetExceptionsToDefault: function() {
+ var apiFlManager = this.api.asc_GetAutoCorrectSettings().get_FirstLetterExceptionManager();
+ var activeLang = this.exceptionsLangCmb.getValue();
+
+ Common.UI.warning({
+ maxwidth: 500,
+ msg: this.textWarnResetFL,
+ buttons: ['yes', 'no'],
+ primary: 'yes',
+ callback: _.bind(function(btn, dontshow){
+ if (btn == 'yes') {
+ apiFlManager.put_Exceptions(apiFlManager.get_DefaultExceptions(activeLang), activeLang);
+ this.onResetExceptionsList();
+ }
+ }, this)
+ });
+ },
+
+ onResetExceptionsList: function() {
+ var path = this.appPrefix + "settings-letter-exception";
+ var activeLang = this.exceptionsLangCmb.getValue();
+ var val = JSON.stringify([]);
+ Common.Utils.InternalSettings.set(path + "-add-" + activeLang, val);
+ Common.localStorage.setItem(path + "-add-" + activeLang, val);
+ Common.Utils.InternalSettings.set(path + "-rem-" + activeLang, val);
+ Common.localStorage.setItem(path + "-rem-" + activeLang, val);
+
+ this.arrAddExceptions[activeLang] = [];
+ this.arrRemExceptions[activeLang] = [];
+
+ _exciptionsStore.remove(_exciptionsStore.where({defaultValue: false}));
+ _exciptionsStore.each(function(item, index){
+ item.set('defaultDisabled', false);
+ });
+ this.exceptionsList.deselectAll();
+ if (this.exceptionsList.scroller) {
+ this.exceptionsList.scroller.update();
+ this.exceptionsList.scroller.scrollTop(0);
+ }
+ this.updateExceptionsControls();
+ },
+
+ onDeleteException: function() {
+ var rec = this.exceptionsList.getSelectedRec();
+ var apiFlManager = this.api.asc_GetAutoCorrectSettings().get_FirstLetterExceptionManager();
+ var activeLang = this.exceptionsLangCmb.getValue();
+ if (rec) {
+ var val;
+ var path = '';
+ if (rec.get('defaultValue')) {
+ var disabled = !rec.get('defaultDisabled');
+ path = this.appPrefix + "settings-letter-exception-rem-" + activeLang;
+ rec.set('defaultDisabled', disabled);
+ if (disabled)
+ this.arrRemExceptions[activeLang].push(rec.get('value'));
+ else
+ this.arrRemExceptions[activeLang].splice(this.arrRemExceptions[activeLang].indexOf(rec.get('value')), 1);
+
+ val = JSON.stringify(this.arrRemExceptions[activeLang]);
+ Common.Utils.InternalSettings.set(path, val);
+ Common.localStorage.setItem(path, val);
+ this.btnDeleteExceptions.setCaption(disabled ? this.textRestore : this.textDelete);
+ disabled ? apiFlManager.remove_Exception(rec.get('value'), activeLang) : apiFlManager.add_Exception(rec.get('value'), activeLang);
+ } else {
+ _exciptionsStore.remove(rec);
+
+ this.arrAddExceptions[activeLang].splice(this.arrAddExceptions[activeLang].indexOf(rec.get('value')), 1);
+ path = this.appPrefix + "settings-letter-exception-add-" + activeLang;
+ val = JSON.stringify(this.arrAddExceptions[activeLang]);
+ Common.Utils.InternalSettings.set(path, val);
+ Common.localStorage.setItem(path, val);
+ this.exceptionsList.scroller && this.exceptionsList.scroller.update({});
+ apiFlManager.remove_Exception(rec.get('value'), activeLang);
+ }
+ this.updateExceptionsControls();
+ }
+ },
+
+ onAddException: function() {
+ var rec = this.exceptionsList.getSelectedRec(),
+ activeLang = this.exceptionsLangCmb.getValue(),
+ me = this,
+ value = this.exceptionsFindInput.getValue().trim(),
+ applySettings = function(record) {
+ var path = me.appPrefix + "settings-letter-exception-add-" + activeLang;
+ var val = JSON.stringify(me.arrAddExceptions[activeLang]);
+ Common.Utils.InternalSettings.set(path, val);
+ Common.localStorage.setItem(path, val);
+ me.api.asc_GetAutoCorrectSettings().get_FirstLetterExceptionManager().add_Exception(record.get('value') ,activeLang);
+ me.exceptionsList.selectRecord(record);
+ me.exceptionsList.scrollToRecord(record);
+ };
+ if (!rec) {
+ rec = _exciptionsStore.findWhere({value: value})
+ }
+ if (!rec) {
+ if(value[value.length-1] === '.')
+ value = value.slice(0, -1);
+ if (/^[^\%/\\&\?\,\.\s\d\'\;:!-+!@#\$\^*)(]{1,20}$/.test(value)) {
+ rec = _exciptionsStore.add({
+ value: value,
+ defaultValue: false,
+ defaultDisabled: false
+ });
+ this.arrAddExceptions[activeLang].push(rec.get('value'));
+ applySettings(rec);
+ } else
+ Common.UI.warning({
+ maxwidth: 500,
+ msg: this.textWarnAddFL
+ });
+ } else {
+ me.exceptionsList.selectRecord(rec);
+ me.exceptionsList.scrollToRecord(rec);
+ }
+ },
+
+ onSelectExceptionItem: function(lisvView, itemView, record) {
+ if (record) {
+ this.exceptionsFindInput.setValue(record.get('value'));
+ }
+ this.updateExceptionsControls(record);
+ },
+
+ onChangeInputException: function (input, value) {
+ var _selectedItem;
+ value = value.trim();
+ if (value.length) {
+ if(value[value.length-1] === '.')
+ value = value.slice(0, -1);
+
+ var store = this.exceptionsList.store;
+ _selectedItem = store.find(function(item) {
+ if ( item.get('value').indexOf(value) == 0) {
+ return true;
+ }
+ });
+ if (_selectedItem) {
+ this.exceptionsList.scrollToRecord(_selectedItem, true);
+ if (_selectedItem.get('value') == value)
+ this.exceptionsList.selectRecord(_selectedItem, true);
+ else
+ _selectedItem = null;
+ }
+ }
+ (!_selectedItem) && this.exceptionsList.deselectAll();
+ this.updateExceptionsControls(_selectedItem);
+ },
+
+ updateExceptionsControls: function(rec) {
+ if (!this.exceptionsList) return;
+
+ rec = rec || this.exceptionsList.getSelectedRec();
+ var value = this.exceptionsFindInput.getValue();
+
+ this.btnDeleteExceptions.setCaption(rec && rec.get('defaultDisabled') ? this.textRestore : this.textDelete);
+ this.btnDeleteExceptions.setDisabled(!rec);
+ this.btnAddExceptions.setDisabled(!!rec || !value);
+ },
+
textTitle: 'AutoCorrect',
textMathCorrect: 'Math AutoCorrect',
textReplace: 'Replace',
@@ -850,8 +1181,12 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
textNewRowCol: 'Include new rows and columns in table',
textAutoCorrect: 'AutoCorrect',
textFLSentence: 'Capitalize first letter of sentences',
+ textWarnResetFL: 'Any exceptions you added will be removed and the removed ones will be restored. Do you want to continue?',
+ textWarnAddFL: 'Exceptions must contain only the letters, uppercase or lowercase.',
+ textForLangFL: 'Exceptions for the language:',
textHyperlink: 'Internet and network paths with hyperlinks',
textFLCells: 'Capitalize first letter of table cells',
+ textFLDont: 'Don`t capitalize after',
textDoubleSpaces: 'Add period with double-space'
}, Common.Views.AutoCorrectDialog || {}))
diff --git a/apps/common/main/lib/view/Chat.js b/apps/common/main/lib/view/Chat.js
index 583c90461..4a9f78722 100644
--- a/apps/common/main/lib/view/Chat.js
+++ b/apps/common/main/lib/view/Chat.js
@@ -336,9 +336,24 @@ define([
// text box setup autosize input text
this.setupAutoSizingTextBox();
- this.txtMessage.bind('input propertychange', _.bind(this.updateHeightTextBox, this));
+ this.disableTextBoxButton($(this.txtMessage));
+ this.txtMessage.bind('input propertychange', _.bind(this.onTextareaInput, this));
},
+ onTextareaInput: function(event) {
+ this.updateHeightTextBox(event);
+ this.disableTextBoxButton($(event.target));
+ },
+ disableTextBoxButton: function(textboxEl) {
+ var button = $(textboxEl.siblings('#chat-msg-btn-add')[0]);
+ if(textboxEl.val().trim().length > 0) {
+ button.removeAttr('disabled');
+ button.removeClass('disabled');
+ } else {
+ button.attr('disabled', true);
+ button.addClass('disabled');
+ }
+ },
updateLayout: function (applyUsersAutoSizig) {
var me = this;
var height = this.panelBox.height();
diff --git a/apps/common/main/lib/view/Comments.js b/apps/common/main/lib/view/Comments.js
index 879779f17..2cee62927 100644
--- a/apps/common/main/lib/view/Comments.js
+++ b/apps/common/main/lib/view/Comments.js
@@ -98,6 +98,17 @@ define([
var text = $(this.el).find('textarea');
return (text && text.length) ? text.val().trim() : '';
},
+ disableTextBoxButton: function(textboxEl) {
+ var button = $(textboxEl.siblings('#id-comments-change')[0]);
+
+ if(textboxEl.val().trim().length > 0) {
+ button.removeAttr('disabled');
+ button.removeClass('disabled');
+ } else {
+ button.attr('disabled', true);
+ button.addClass('disabled');
+ }
+ },
autoHeightTextBox: function () {
var view = this,
textBox = $(this.el).find('textarea'),
@@ -127,13 +138,19 @@ define([
view.autoScrollToEditButtons();
}
+ function onTextareaInput(event) {
+ updateTextBoxHeight();
+ view.disableTextBoxButton($(event.target));
+ }
+
if (textBox && textBox.length) {
domTextBox = textBox.get(0);
+ view.disableTextBoxButton(textBox);
if (domTextBox) {
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
updateTextBoxHeight();
- textBox.bind('input propertychange', updateTextBoxHeight)
+ textBox.bind('input propertychange', onTextareaInput)
}
}
@@ -171,7 +188,7 @@ define([
addCommentHeight: 45,
newCommentHeight: 110,
- textBoxAutoSizeLocked: undefined, // disable autosize textbox
+ textBoxAutoSizeLocked: undefined, // disable autoHeightTextBoxsize textbox
viewmode: false,
_commentsViewOnItemClick: function (picker, item, record, e) {
@@ -694,7 +711,17 @@ define([
this.layout.setResizeValue(0, container.height() - this.addCommentHeight);
}
},
+ disableTextBoxButton: function(textboxEl) {
+ var button = $(textboxEl.parent().siblings('.add')[0]);
+ if(textboxEl.val().trim().length > 0) {
+ button.removeAttr('disabled');
+ button.removeClass('disabled');
+ } else {
+ button.attr('disabled', true);
+ button.addClass('disabled');
+ }
+ },
autoHeightTextBox: function () {
var me = this, domTextBox = null, lineHeight = 0, minHeight = 44;
var textBox = $('#comment-msg-new', this.el);
@@ -736,9 +763,15 @@ define([
Math.min(height - contentHeight - textBoxMinHeightIndent, height - me.newCommentHeight)));
}
+ function onTextareaInput(event) {
+ updateTextBoxHeight();
+ me.disableTextBoxButton($(event.target));
+ }
+
+ me.disableTextBoxButton(textBox);
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
updateTextBoxHeight();
- textBox.bind('input propertychange', updateTextBoxHeight);
+ textBox.bind('input propertychange', onTextareaInput);
this.textBox = textBox;
},
diff --git a/apps/common/main/lib/view/ExternalDiagramEditor.js b/apps/common/main/lib/view/ExternalDiagramEditor.js
index e977ec4d0..7fcc78670 100644
--- a/apps/common/main/lib/view/ExternalDiagramEditor.js
+++ b/apps/common/main/lib/view/ExternalDiagramEditor.js
@@ -46,6 +46,7 @@ define([
initialize : function(options) {
var _options = {};
_.extend(_options, {
+ id: 'id-external-diagram-editor',
title: this.textTitle,
storageName: 'diagram-editor',
sdkplaceholder: 'id-diagram-editor-placeholder',
diff --git a/apps/common/main/lib/view/ExternalMergeEditor.js b/apps/common/main/lib/view/ExternalMergeEditor.js
index 0b91a6e3a..f8f696f10 100644
--- a/apps/common/main/lib/view/ExternalMergeEditor.js
+++ b/apps/common/main/lib/view/ExternalMergeEditor.js
@@ -46,6 +46,7 @@ define([
initialize : function(options) {
var _options = {};
_.extend(_options, {
+ id: 'id-external-merge-editor',
title: this.textTitle,
storageName: 'merge-editor',
sdkplaceholder: 'id-merge-editor-placeholder',
diff --git a/apps/common/main/lib/view/ExternalOleEditor.js b/apps/common/main/lib/view/ExternalOleEditor.js
index 415705b13..f3338b492 100644
--- a/apps/common/main/lib/view/ExternalOleEditor.js
+++ b/apps/common/main/lib/view/ExternalOleEditor.js
@@ -46,6 +46,7 @@ define([
initialize : function(options) {
var _options = {};
_.extend(_options, {
+ id: 'id-external-ole-editor',
title: this.textTitle,
storageName: 'ole-editor',
sdkplaceholder: 'id-ole-editor-placeholder',
diff --git a/apps/common/main/lib/view/Header.js b/apps/common/main/lib/view/Header.js
index 97a4a9c0f..a1209385c 100644
--- a/apps/common/main/lib/view/Header.js
+++ b/apps/common/main/lib/view/Header.js
@@ -81,6 +81,7 @@ define([
'' +
'
' +
'
' +
+ '
' +
'
' +
'
' +
'' +
@@ -129,6 +130,7 @@ define([
'
' +
'
' +
'
' +
+ '
' +
'
' +
'
' +
'
' +
@@ -333,6 +335,13 @@ define([
});
}
+ if ( me.btnPrintQuick ) {
+ me.btnPrintQuick.updateHint(me.tipPrintQuick);
+ me.btnPrintQuick.on('click', function (e) {
+ me.fireEvent('print-quick', me);
+ });
+ }
+
if ( me.btnSave ) {
me.btnSave.updateHint(me.tipSave + Common.Utils.String.platformKey('Ctrl+S'));
me.btnSave.on('click', function (e) {
@@ -573,6 +582,9 @@ define([
if ( config.canPrint )
this.btnPrint = createTitleButton('toolbar__icon icon--inverse btn-print', $html.findById('#slot-hbtn-print'), undefined, 'bottom', 'big', 'P');
+ if ( config.canQuickPrint )
+ this.btnPrintQuick = createTitleButton('toolbar__icon icon--inverse btn-quick-print', $html.findById('#slot-hbtn-print-quick'), undefined, 'bottom', 'big', 'Q');
+
if ( config.canEdit && config.canRequestEditRights )
this.btnEdit = createTitleButton('toolbar__icon icon--inverse btn-edit', $html.findById('#slot-hbtn-edit'), undefined, 'bottom', 'big');
}
@@ -647,6 +659,8 @@ define([
if ( config.canPrint && config.isEdit ) {
me.btnPrint = createTitleButton('toolbar__icon icon--inverse btn-print', $html.findById('#slot-btn-dt-print'), true, undefined, undefined, 'P');
}
+ if ( config.canQuickPrint && config.isEdit )
+ me.btnPrintQuick = createTitleButton('toolbar__icon icon--inverse btn-quick-print', $html.findById('#slot-btn-dt-print-quick'), true, undefined, undefined, 'Q');
me.btnSave = createTitleButton('toolbar__icon icon--inverse btn-save', $html.findById('#slot-btn-dt-save'), true, undefined, undefined, 'S');
me.btnUndo = createTitleButton('toolbar__icon icon--inverse btn-undo', $html.findById('#slot-btn-dt-undo'), true, undefined, undefined, 'Z');
@@ -696,6 +710,7 @@ define([
if (idx>0)
this.fileExtention = this.documentCaption.substring(idx);
this.isModified && (value += '*');
+ this.readOnly && (value += ' (' + this.textReadOnly + ')');
if ( $labelDocName ) {
this.setDocTitle( value );
}
@@ -888,6 +903,11 @@ define([
return initials;
},
+ setDocumentReadOnly: function (readonly) {
+ this.readOnly = readonly;
+ this.setDocumentCaption(this.documentCaption);
+ },
+
textBack: 'Go to Documents',
txtRename: 'Rename',
txtAccessRights: 'Change access rights',
@@ -911,7 +931,9 @@ define([
textAddFavorite: 'Mark as favorite',
textHideNotes: 'Hide Notes',
tipSearch: 'Search',
- textShare: 'Share'
+ textShare: 'Share',
+ tipPrintQuick: 'Quick print',
+ textReadOnly: 'Read only'
}
}(), Common.Views.Header || {}))
});
diff --git a/apps/common/main/lib/view/OptionsDialog.js b/apps/common/main/lib/view/OptionsDialog.js
index 4eb89ba3f..ea67e32e9 100644
--- a/apps/common/main/lib/view/OptionsDialog.js
+++ b/apps/common/main/lib/view/OptionsDialog.js
@@ -101,7 +101,10 @@ define([
this.checkedIndex = i;
}
}
- (this.checkedIndex>=0) && this.radio[this.checkedIndex].setValue(true);
+ if (this.checkedIndex>=0) {
+ this.radio[this.checkedIndex].setValue(true);
+ this.currentCell = this.radio[this.checkedIndex].options.value;
+ }
}
$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
},
diff --git a/apps/common/main/lib/view/Protection.js b/apps/common/main/lib/view/Protection.js
index 3e160a629..e5e2a0074 100644
--- a/apps/common/main/lib/view/Protection.js
+++ b/apps/common/main/lib/view/Protection.js
@@ -239,8 +239,7 @@ define([
var me = this;
if ( type == 'signature' ) {
var button = new Common.UI.Button({
- cls: 'btn-text-default',
- style: 'width: 100%;',
+ cls: 'btn-text-default auto',
caption: this.txtInvisibleSignature,
disabled: this._state.invisibleSignDisabled,
dataHint: '2',
@@ -256,8 +255,7 @@ define([
return button;
} else if ( type == 'add-password' ) {
var button = new Common.UI.Button({
- cls: 'btn-text-default',
- style: 'width: 100%;',
+ cls: 'btn-text-default auto',
caption: this.txtAddPwd,
disabled: this._state.disabled || this._state.disabledPassword,
visible: !this._state.hasPassword,
@@ -274,8 +272,7 @@ define([
return button;
} else if ( type == 'del-password' ) {
var button = new Common.UI.Button({
- cls: 'btn-text-default',
- style: 'width: 100%;',
+ cls: 'btn-text-default auto',
caption: this.txtDeletePwd,
disabled: this._state.disabled || this._state.disabledPassword,
visible: this._state.hasPassword,
@@ -292,8 +289,7 @@ define([
return button;
} else if ( type == 'change-password' ) {
var button = new Common.UI.Button({
- cls: 'btn-text-default',
- style: 'width: 100%;',
+ cls: 'btn-text-default auto',
caption: this.txtChangePwd,
disabled: this._state.disabled || this._state.disabledPassword,
visible: this._state.hasPassword,
diff --git a/apps/common/main/lib/view/ReviewPopover.js b/apps/common/main/lib/view/ReviewPopover.js
index 0c8c31b42..2d26dec68 100644
--- a/apps/common/main/lib/view/ReviewPopover.js
+++ b/apps/common/main/lib/view/ReviewPopover.js
@@ -173,6 +173,17 @@ define([
var text = $(this.el).find('textarea');
return (text && text.length) ? text.val().trim() : '';
},
+ disableTextBoxButton: function(textboxEl) {
+ var button = $(textboxEl.siblings('#id-comments-change-popover')[0]);
+
+ if(textboxEl.val().trim().length > 0) {
+ button.removeAttr('disabled');
+ button.removeClass('disabled');
+ } else {
+ button.attr('disabled', true);
+ button.addClass('disabled');
+ }
+ },
autoHeightTextBox: function () {
var view = this,
textBox = this.$el.find('textarea'),
@@ -183,6 +194,7 @@ define([
oldHeight = 0,
newHeight = 0;
+
function updateTextBoxHeight() {
scrollPos = parentView.scroller.getScrollTop();
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
@@ -211,13 +223,20 @@ define([
parentView.autoScrollToEditButtons();
}
+ function onTextareaInput(event) {
+ updateTextBoxHeight();
+ view.disableTextBoxButton($(event.target));
+ }
+
+
if (textBox && textBox.length && parentView.scroller) {
domTextBox = textBox.get(0);
+ view.disableTextBoxButton(textBox);
if (domTextBox) {
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
updateTextBoxHeight();
- textBox.bind('input propertychange', updateTextBoxHeight)
+ textBox.bind('input propertychange', onTextareaInput)
}
}
@@ -240,13 +259,14 @@ define([
el: $('#id-comments-popover'),
itemTemplate: _.template(replaceWords(commentsTemplate, {
textAddReply: me.textAddReply,
+ textMentionReply: me.canRequestSendNotify ? (me.mentionShare ? me.textMention : me.textMentionNotify) : me.textAddReply,
textAdd: me.textAdd,
textCancel: me.textCancel,
textEdit: me.textEdit,
textReply: me.textReply,
textClose: me.textClose,
maxCommLength: Asc.c_oAscMaxCellOrCommentLength,
- textMention: me.canRequestSendNotify ? (me.mentionShare ? me.textMention : me.textMentionNotify) : ''
+ textMentionComment: me.canRequestSendNotify ? (me.mentionShare ? me.textMention : me.textMentionNotify) : me.textEnterComment
})
)
});
@@ -321,7 +341,9 @@ define([
if (record.get('hint')) {
me.fireEvent('comment:disableHint', [record]);
- return;
+
+ if(!record.get('fullInfoInHint'))
+ return;
}
if (btn.hasClass('btn-edit')) {
@@ -516,8 +538,10 @@ define([
},
'animate:before': function () {
var text = me.$window.find('textarea');
- if (text && text.length)
+ if (text && text.length){
text.focus();
+ me.commentsView.disableTextBoxButton(text);
+ }
}
});
}
@@ -1292,6 +1316,7 @@ define([
textFollowMove : 'Follow Move',
textMention : '+mention will provide access to the document and send an email',
textMentionNotify : '+mention will notify the user via email',
+ textEnterComment : 'Enter your comment here',
textViewResolved : 'You have not permission for reopen comment',
txtAccept: 'Accept',
txtReject: 'Reject',
diff --git a/apps/common/main/resources/img/controls/flags.png b/apps/common/main/resources/img/controls/flags.png
index 21e559123..a37d0e845 100644
Binary files a/apps/common/main/resources/img/controls/flags.png and b/apps/common/main/resources/img/controls/flags.png differ
diff --git a/apps/common/main/resources/img/controls/flags@1.5x.png b/apps/common/main/resources/img/controls/flags@1.5x.png
index da34fd60d..43af3f9d1 100644
Binary files a/apps/common/main/resources/img/controls/flags@1.5x.png and b/apps/common/main/resources/img/controls/flags@1.5x.png differ
diff --git a/apps/common/main/resources/img/controls/flags@2x.png b/apps/common/main/resources/img/controls/flags@2x.png
index 07b0ea13a..da4b1c9cb 100644
Binary files a/apps/common/main/resources/img/controls/flags@2x.png and b/apps/common/main/resources/img/controls/flags@2x.png differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-highlighted.png b/apps/common/main/resources/img/dimension-picker/dimension-highlighted.png
deleted file mode 100644
index 839476271..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-highlighted.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.25x.png b/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.25x.png
deleted file mode 100644
index a6663aebd..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.25x.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.5x.png b/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.5x.png
deleted file mode 100644
index a1b0b2033..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.5x.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.75x.png b/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.75x.png
deleted file mode 100644
index af157e30e..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-highlighted@1.75x.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-highlighted@2x.png b/apps/common/main/resources/img/dimension-picker/dimension-highlighted@2x.png
deleted file mode 100644
index af0dc0add..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-highlighted@2x.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted.png b/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted.png
deleted file mode 100644
index 4393a25a0..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.25x.png b/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.25x.png
deleted file mode 100644
index 571fff827..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.25x.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.5x.png b/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.5x.png
deleted file mode 100644
index 646da3002..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.5x.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.75x.png b/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.75x.png
deleted file mode 100644
index 19d365f70..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@1.75x.png and /dev/null differ
diff --git a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@2x.png b/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@2x.png
deleted file mode 100644
index 20fbdf36e..000000000
Binary files a/apps/common/main/resources/img/dimension-picker/dimension-unhighlighted@2x.png and /dev/null differ
diff --git a/apps/common/main/resources/img/doc-formats/csv.svg b/apps/common/main/resources/img/doc-formats/csv.svg
index 3a42ac3ad..713afe5d6 100644
--- a/apps/common/main/resources/img/doc-formats/csv.svg
+++ b/apps/common/main/resources/img/doc-formats/csv.svg
@@ -1,32 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/djvu.svg b/apps/common/main/resources/img/doc-formats/djvu.svg
index a318cff21..7a0925dac 100644
--- a/apps/common/main/resources/img/doc-formats/djvu.svg
+++ b/apps/common/main/resources/img/doc-formats/djvu.svg
@@ -1,18 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/docm.svg b/apps/common/main/resources/img/doc-formats/docm.svg
index 86e7c54dd..b2ec81233 100644
--- a/apps/common/main/resources/img/doc-formats/docm.svg
+++ b/apps/common/main/resources/img/doc-formats/docm.svg
@@ -1,10 +1,14 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/docx.svg b/apps/common/main/resources/img/doc-formats/docx.svg
index 9be827736..a0025f892 100644
--- a/apps/common/main/resources/img/doc-formats/docx.svg
+++ b/apps/common/main/resources/img/doc-formats/docx.svg
@@ -1,6 +1,13 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/docxf.svg b/apps/common/main/resources/img/doc-formats/docxf.svg
index f0d0421b4..846bc4c5b 100644
--- a/apps/common/main/resources/img/doc-formats/docxf.svg
+++ b/apps/common/main/resources/img/doc-formats/docxf.svg
@@ -1,14 +1,14 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/dotx.svg b/apps/common/main/resources/img/doc-formats/dotx.svg
index ea27f0523..f006c5b5f 100644
--- a/apps/common/main/resources/img/doc-formats/dotx.svg
+++ b/apps/common/main/resources/img/doc-formats/dotx.svg
@@ -1,8 +1,14 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/epub.svg b/apps/common/main/resources/img/doc-formats/epub.svg
index df41f52e5..8f246520f 100644
--- a/apps/common/main/resources/img/doc-formats/epub.svg
+++ b/apps/common/main/resources/img/doc-formats/epub.svg
@@ -1,8 +1,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/fb2.svg b/apps/common/main/resources/img/doc-formats/fb2.svg
index 4239a775a..ab2923087 100644
--- a/apps/common/main/resources/img/doc-formats/fb2.svg
+++ b/apps/common/main/resources/img/doc-formats/fb2.svg
@@ -1,8 +1,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/html.svg b/apps/common/main/resources/img/doc-formats/html.svg
index edc138f37..503d611aa 100644
--- a/apps/common/main/resources/img/doc-formats/html.svg
+++ b/apps/common/main/resources/img/doc-formats/html.svg
@@ -1,8 +1,15 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/jpg.svg b/apps/common/main/resources/img/doc-formats/jpg.svg
index cf0c2207a..99f2bb725 100644
--- a/apps/common/main/resources/img/doc-formats/jpg.svg
+++ b/apps/common/main/resources/img/doc-formats/jpg.svg
@@ -1,12 +1,17 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/odp.svg b/apps/common/main/resources/img/doc-formats/odp.svg
index 3d48f79ca..6ddc0761f 100644
--- a/apps/common/main/resources/img/doc-formats/odp.svg
+++ b/apps/common/main/resources/img/doc-formats/odp.svg
@@ -1,7 +1,13 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/ods.svg b/apps/common/main/resources/img/doc-formats/ods.svg
index b69df0429..31dcfb2ab 100644
--- a/apps/common/main/resources/img/doc-formats/ods.svg
+++ b/apps/common/main/resources/img/doc-formats/ods.svg
@@ -1,7 +1,13 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/odt.svg b/apps/common/main/resources/img/doc-formats/odt.svg
index a73086c13..0d3d00bc0 100644
--- a/apps/common/main/resources/img/doc-formats/odt.svg
+++ b/apps/common/main/resources/img/doc-formats/odt.svg
@@ -1,7 +1,13 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/oform.svg b/apps/common/main/resources/img/doc-formats/oform.svg
index 1b5a0706f..c518ac141 100644
--- a/apps/common/main/resources/img/doc-formats/oform.svg
+++ b/apps/common/main/resources/img/doc-formats/oform.svg
@@ -1,16 +1,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/otp.svg b/apps/common/main/resources/img/doc-formats/otp.svg
index d2af2e7ab..26d8bc60d 100644
--- a/apps/common/main/resources/img/doc-formats/otp.svg
+++ b/apps/common/main/resources/img/doc-formats/otp.svg
@@ -1,9 +1,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/ots.svg b/apps/common/main/resources/img/doc-formats/ots.svg
index ed7b7aea3..ca9cac28d 100644
--- a/apps/common/main/resources/img/doc-formats/ots.svg
+++ b/apps/common/main/resources/img/doc-formats/ots.svg
@@ -1,9 +1,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/ott.svg b/apps/common/main/resources/img/doc-formats/ott.svg
index d37c3487b..cb2629743 100644
--- a/apps/common/main/resources/img/doc-formats/ott.svg
+++ b/apps/common/main/resources/img/doc-formats/ott.svg
@@ -1,9 +1,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/oxps.svg b/apps/common/main/resources/img/doc-formats/oxps.svg
index 58d22cca5..931e60193 100644
--- a/apps/common/main/resources/img/doc-formats/oxps.svg
+++ b/apps/common/main/resources/img/doc-formats/oxps.svg
@@ -1,11 +1,13 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/pdf.svg b/apps/common/main/resources/img/doc-formats/pdf.svg
index 581669209..0201e87ed 100644
--- a/apps/common/main/resources/img/doc-formats/pdf.svg
+++ b/apps/common/main/resources/img/doc-formats/pdf.svg
@@ -1,6 +1,13 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/pdfa.svg b/apps/common/main/resources/img/doc-formats/pdfa.svg
index 26608740e..d07833854 100644
--- a/apps/common/main/resources/img/doc-formats/pdfa.svg
+++ b/apps/common/main/resources/img/doc-formats/pdfa.svg
@@ -1,8 +1,14 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/png.svg b/apps/common/main/resources/img/doc-formats/png.svg
index d680b74a9..c2db2a3b0 100644
--- a/apps/common/main/resources/img/doc-formats/png.svg
+++ b/apps/common/main/resources/img/doc-formats/png.svg
@@ -1,12 +1,17 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/potx.svg b/apps/common/main/resources/img/doc-formats/potx.svg
index 17b0daaf6..7f5548bdd 100644
--- a/apps/common/main/resources/img/doc-formats/potx.svg
+++ b/apps/common/main/resources/img/doc-formats/potx.svg
@@ -1,12 +1,14 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/ppsx.svg b/apps/common/main/resources/img/doc-formats/ppsx.svg
index 87f1c2264..24a89babe 100644
--- a/apps/common/main/resources/img/doc-formats/ppsx.svg
+++ b/apps/common/main/resources/img/doc-formats/ppsx.svg
@@ -1,17 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/pptm.svg b/apps/common/main/resources/img/doc-formats/pptm.svg
index e30a2d954..62029d6fd 100644
--- a/apps/common/main/resources/img/doc-formats/pptm.svg
+++ b/apps/common/main/resources/img/doc-formats/pptm.svg
@@ -1,12 +1,14 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/pptx.svg b/apps/common/main/resources/img/doc-formats/pptx.svg
index b8a4470fc..0d193b13c 100644
--- a/apps/common/main/resources/img/doc-formats/pptx.svg
+++ b/apps/common/main/resources/img/doc-formats/pptx.svg
@@ -1,10 +1,13 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/rtf.svg b/apps/common/main/resources/img/doc-formats/rtf.svg
index 69b16f641..686a0498f 100644
--- a/apps/common/main/resources/img/doc-formats/rtf.svg
+++ b/apps/common/main/resources/img/doc-formats/rtf.svg
@@ -1,15 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/svg.svg b/apps/common/main/resources/img/doc-formats/svg.svg
index 3f2562f15..ced8b0279 100644
--- a/apps/common/main/resources/img/doc-formats/svg.svg
+++ b/apps/common/main/resources/img/doc-formats/svg.svg
@@ -1,14 +1,13 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/txt.svg b/apps/common/main/resources/img/doc-formats/txt.svg
index 8d78ae585..961c4e168 100644
--- a/apps/common/main/resources/img/doc-formats/txt.svg
+++ b/apps/common/main/resources/img/doc-formats/txt.svg
@@ -1,14 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/xlsm.svg b/apps/common/main/resources/img/doc-formats/xlsm.svg
index b0d860961..087dad7d2 100644
--- a/apps/common/main/resources/img/doc-formats/xlsm.svg
+++ b/apps/common/main/resources/img/doc-formats/xlsm.svg
@@ -1,8 +1,14 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/xlsx.svg b/apps/common/main/resources/img/doc-formats/xlsx.svg
index 9fd0ac99b..b2ac9a15c 100644
--- a/apps/common/main/resources/img/doc-formats/xlsx.svg
+++ b/apps/common/main/resources/img/doc-formats/xlsx.svg
@@ -1,6 +1,13 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/xltx.svg b/apps/common/main/resources/img/doc-formats/xltx.svg
index 92bb7a1d6..e550a1747 100644
--- a/apps/common/main/resources/img/doc-formats/xltx.svg
+++ b/apps/common/main/resources/img/doc-formats/xltx.svg
@@ -1,8 +1,14 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/doc-formats/xps.svg b/apps/common/main/resources/img/doc-formats/xps.svg
index 97a062128..bddb3606c 100644
--- a/apps/common/main/resources/img/doc-formats/xps.svg
+++ b/apps/common/main/resources/img/doc-formats/xps.svg
@@ -1,11 +1,13 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker.png b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker.png
index e178f5d2f..135ecee35 100644
Binary files a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker.png and b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker.png differ
diff --git a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.25x.png b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.25x.png
index 1e51931d6..dd78e4720 100644
Binary files a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.25x.png and b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.25x.png differ
diff --git a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.5x.png b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.5x.png
index f0abef52e..cf1323198 100644
Binary files a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.5x.png and b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.5x.png differ
diff --git a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.75x.png b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.75x.png
index 5a5d5d3d2..63bda4ad5 100644
Binary files a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.75x.png and b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@1.75x.png differ
diff --git a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@2x.png b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@2x.png
index 9a7a3a2c1..6c1690a3c 100644
Binary files a/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@2x.png and b/apps/common/main/resources/img/hsbcolorpicker/hsb-colorpicker@2x.png differ
diff --git a/apps/common/main/resources/img/right-panels/arrows.svg b/apps/common/main/resources/img/right-panels/arrows.svg
new file mode 100644
index 000000000..416e24250
--- /dev/null
+++ b/apps/common/main/resources/img/right-panels/arrows.svg
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-merge-cells.png b/apps/common/main/resources/img/toolbar/1.25x/btn-merge-cells.png
index ac6fa48f9..16327491b 100644
Binary files a/apps/common/main/resources/img/toolbar/1.25x/btn-merge-cells.png and b/apps/common/main/resources/img/toolbar/1.25x/btn-merge-cells.png differ
diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-print-preview.png b/apps/common/main/resources/img/toolbar/1.25x/btn-print-preview.png
new file mode 100644
index 000000000..f5bf7d1e3
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/1.25x/btn-print-preview.png differ
diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-quick-print.png b/apps/common/main/resources/img/toolbar/1.25x/btn-quick-print.png
new file mode 100644
index 000000000..fba845c84
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/1.25x/btn-quick-print.png differ
diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-merge-cells.png b/apps/common/main/resources/img/toolbar/1.5x/btn-merge-cells.png
index f4b36345d..3f43b1af6 100644
Binary files a/apps/common/main/resources/img/toolbar/1.5x/btn-merge-cells.png and b/apps/common/main/resources/img/toolbar/1.5x/btn-merge-cells.png differ
diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-print-preview.png b/apps/common/main/resources/img/toolbar/1.5x/btn-print-preview.png
new file mode 100644
index 000000000..6c2b2e3e2
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/1.5x/btn-print-preview.png differ
diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-quick-print.png b/apps/common/main/resources/img/toolbar/1.5x/btn-quick-print.png
new file mode 100644
index 000000000..93752a11a
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/1.5x/btn-quick-print.png differ
diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-merge-cells.png b/apps/common/main/resources/img/toolbar/1.75x/btn-merge-cells.png
index 6a9bb9adc..dc298f6a4 100644
Binary files a/apps/common/main/resources/img/toolbar/1.75x/btn-merge-cells.png and b/apps/common/main/resources/img/toolbar/1.75x/btn-merge-cells.png differ
diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-print-preview.png b/apps/common/main/resources/img/toolbar/1.75x/btn-print-preview.png
new file mode 100644
index 000000000..149f53961
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/1.75x/btn-print-preview.png differ
diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-quick-print.png b/apps/common/main/resources/img/toolbar/1.75x/btn-quick-print.png
new file mode 100644
index 000000000..73e9b3c4c
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/1.75x/btn-quick-print.png differ
diff --git a/apps/common/main/resources/img/toolbar/1x/btn-merge-cells.png b/apps/common/main/resources/img/toolbar/1x/btn-merge-cells.png
index 67872ed2c..c2fed157c 100644
Binary files a/apps/common/main/resources/img/toolbar/1x/btn-merge-cells.png and b/apps/common/main/resources/img/toolbar/1x/btn-merge-cells.png differ
diff --git a/apps/common/main/resources/img/toolbar/1x/btn-print-preview.png b/apps/common/main/resources/img/toolbar/1x/btn-print-preview.png
new file mode 100644
index 000000000..4231e64a9
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/1x/btn-print-preview.png differ
diff --git a/apps/common/main/resources/img/toolbar/1x/btn-quick-print.png b/apps/common/main/resources/img/toolbar/1x/btn-quick-print.png
new file mode 100644
index 000000000..63d65c625
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/1x/btn-quick-print.png differ
diff --git a/apps/common/main/resources/img/toolbar/1x/text-box-horizontal.png b/apps/common/main/resources/img/toolbar/1x/text-box-horizontal.png
deleted file mode 100644
index 4dbaf0d6e..000000000
Binary files a/apps/common/main/resources/img/toolbar/1x/text-box-horizontal.png and /dev/null differ
diff --git a/apps/common/main/resources/img/toolbar/1x/text-box-vertical.png b/apps/common/main/resources/img/toolbar/1x/text-box-vertical.png
deleted file mode 100644
index 0aa4448aa..000000000
Binary files a/apps/common/main/resources/img/toolbar/1x/text-box-vertical.png and /dev/null differ
diff --git a/apps/common/main/resources/img/toolbar/2x/btn-merge-cells.png b/apps/common/main/resources/img/toolbar/2x/btn-merge-cells.png
index 454135117..4a560c10a 100644
Binary files a/apps/common/main/resources/img/toolbar/2x/btn-merge-cells.png and b/apps/common/main/resources/img/toolbar/2x/btn-merge-cells.png differ
diff --git a/apps/common/main/resources/img/toolbar/2x/btn-print-preview.png b/apps/common/main/resources/img/toolbar/2x/btn-print-preview.png
new file mode 100644
index 000000000..0c2c4fe2f
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/2x/btn-print-preview.png differ
diff --git a/apps/common/main/resources/img/toolbar/2x/btn-quick-print.png b/apps/common/main/resources/img/toolbar/2x/btn-quick-print.png
new file mode 100644
index 000000000..69cadb0e5
Binary files /dev/null and b/apps/common/main/resources/img/toolbar/2x/btn-quick-print.png differ
diff --git a/apps/common/main/resources/img/toolbar/equationicons.svg b/apps/common/main/resources/img/toolbar/equationicons.svg
new file mode 100644
index 000000000..90479d415
--- /dev/null
+++ b/apps/common/main/resources/img/toolbar/equationicons.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/common/main/resources/less/advanced-settings-window.less b/apps/common/main/resources/less/advanced-settings-window.less
index 73896257d..4125a2bcf 100644
--- a/apps/common/main/resources/less/advanced-settings-window.less
+++ b/apps/common/main/resources/less/advanced-settings-window.less
@@ -63,20 +63,31 @@
.form-control {
cursor: pointer;
- .image {
+ .img-arrows {
width: 100%;
- height: 100%;
+ height: 18px;
display: block;
background-color: transparent;
- margin: 0 0 0 -3px;
+ margin: auto;
+ text-align: center;
+ overflow: hidden;
+ padding-right: 4px;
+ .svg-mirror{
+ margin-right: 1px;
+ }
}
}
}
-.img-arrows {
- .background-ximage-v2('right-panels/Begin-EndStyle.png', 480px);
- -webkit-filter: @img-border-type-filter;
- filter: @img-border-type-filter;
+.img-arrows svg{
+ width: 44px;
+ height: 20px;
+ fill: @icon-normal-ie;
+ fill: @icon-normal;
+
+ &.svg-mirror{
+ transform: scale(-1,1);
+ }
}
.item-arrow {
diff --git a/apps/common/main/resources/less/buttons.less b/apps/common/main/resources/less/buttons.less
index 0ac31790b..8e3ccfb0c 100644
--- a/apps/common/main/resources/less/buttons.less
+++ b/apps/common/main/resources/less/buttons.less
@@ -1097,6 +1097,7 @@
width: 52px;
padding: 5px;
+ fill: @icon-normal-ie;
fill: @icon-normal;
.btn& {
diff --git a/apps/common/main/resources/less/comments.less b/apps/common/main/resources/less/comments.less
index e4e0b2361..799ceabfa 100644
--- a/apps/common/main/resources/less/comments.less
+++ b/apps/common/main/resources/less/comments.less
@@ -94,7 +94,7 @@
label {
color: @text-normal-ie;
color: @text-normal;
- font: 12px arial;
+ font-size: 12px;
line-height: normal;
border-bottom: @scaled-one-px-value-ie dotted @text-normal-ie;
border-bottom: @scaled-one-px-value dotted @text-normal;
@@ -154,7 +154,7 @@
.dataview-ct {
width: 100%;
height: 100%;
- font: 12px arial;
+ font-size: 12px;
line-height: normal;
position: relative;
overflow: hidden;
diff --git a/apps/common/main/resources/less/common.less b/apps/common/main/resources/less/common.less
index 431b94206..20f0ebcad 100644
--- a/apps/common/main/resources/less/common.less
+++ b/apps/common/main/resources/less/common.less
@@ -332,6 +332,8 @@ body {
&.pixel-ratio__1_75 {
image-rendering: crisp-edges; // FF only
}
+ font-family: @font-family-sans-serif;
+ font-family: @font-family-base;
}
.rtl .ps-scrollbar-y-rail {
diff --git a/apps/common/main/resources/less/dimension-picker.less b/apps/common/main/resources/less/dimension-picker.less
index f6f736c53..d6dd5897d 100644
--- a/apps/common/main/resources/less/dimension-picker.less
+++ b/apps/common/main/resources/less/dimension-picker.less
@@ -12,28 +12,50 @@
position: absolute !important;
}
+.background-cells-all(@border-color, @fill-Color, @first-coord, @last-coord, @background-color: @background-normal){
+
+ background: linear-gradient( 90deg, @background-color, @background-color @first-coord, transparent @first-coord, transparent @last-coord, @background-color @last-coord, @background-color),
+ linear-gradient( @background-color, @background-color @first-coord, transparent @first-coord, transparent @last-coord, @background-color @last-coord, @background-color),
+ linear-gradient( 90deg, transparent, transparent @first-coord, @border-color @first-coord, @border-color 2px, transparent 2px, transparent 18px, @border-color 18px, @border-color @last-coord, transparent @last-coord, transparent),
+ linear-gradient( transparent, transparent @first-coord, @border-color @first-coord, @border-color 2px, @fill-Color 2px, @fill-Color 18px, @border-color 18px, @border-color @last-coord, transparent @last-coord, transparent );
+ background-size: 1em 1em;
+}
+
+.background-cells(@border-color, @fill-Color, @size-one-pixel: @scaled-one-px-value){
+ @first-coord: calc(2px - @size-one-pixel);
+ @last-coord: calc(18px + @size-one-pixel);
+ .background-cells-all(@border-color, @fill-Color, @first-coord, @last-coord);
+}
+
+.background-cells-ie(@border-color, @fill-Color){
+ .background-cells-all(@border-color, @fill-Color, @scaled-one-px-value-ie, 19px, @background-normal-ie);
+}
+
+
.dimension-picker div.dimension-picker-highlighted {
left: 0;
top: 0;
overflow: hidden;
position: absolute;
- //background: transparent repeat scroll 0 0;
- .background-ximage-all('dimension-picker/dimension-highlighted.png', 20px);
- background-repeat: repeat;
-
- .pixel-ratio__1_25 &, .pixel-ratio__1_75 & {
- image-rendering: pixelated;
+ .background-cells-ie(@border-control-focus-ie, @highlight-button-pressed-ie);
+ &:not(.pixel-ratio__2){
+ .background-cells(@border-control-focus, @highlight-button-pressed);
+ }
+ .pixel-ratio__2 &{
+ .background-cells(@border-control-focus, @highlight-button-pressed, 0.5px);
}
}
.dimension-picker-unhighlighted {
- //background: transparent repeat scroll 0 0;
- .background-ximage-all('dimension-picker/dimension-unhighlighted.png', 20px);
- background-repeat: repeat;
- .pixel-ratio__1_25 &, .pixel-ratio__1_75 & {
- image-rendering: pixelated;
+ .background-cells-ie(@border-regular-control-ie, @background-normal-ie);
+
+ &:not(.pixel-ratio__2){
+ .background-cells(@border-regular-control, @background-normal);
+ }
+ .pixel-ratio__2 &{
+ .background-cells(@border-regular-control, @background-normal, 0.5px);
}
}
diff --git a/apps/common/main/resources/less/hsb-colorpicker.less b/apps/common/main/resources/less/hsb-colorpicker.less
index 6f9987229..f6a6d9115 100644
--- a/apps/common/main/resources/less/hsb-colorpicker.less
+++ b/apps/common/main/resources/less/hsb-colorpicker.less
@@ -42,7 +42,7 @@
display: inline-block;
width: 10px;
height: 196px;
- margin: 0 8px;
+ margin: 0 8px 0 10px;
}
.cnt-sat {
@@ -51,7 +51,7 @@
position: relative;
border: @scaled-one-px-value-ie solid @border-regular-control-ie;
border: @scaled-one-px-value solid @border-regular-control;
- background-position: -195px 0;
+ background-position: -196px 0;
}
.cnt-hb-arrow {
@@ -78,10 +78,10 @@
width: 20px;
height: 12px;
margin-top: -6px;
- margin-left: -4px;
- margin-left: calc(-3px - @scaled-one-px-value);
+ margin-left: -5px;
+ margin-left: calc(-4px - @scaled-one-px-value);
position: absolute;
- background-position: -12px -196px;
+ background-position: -168px -200px;
.rtl & {
margin-left: 0;
diff --git a/apps/common/main/resources/less/language-dialog.less b/apps/common/main/resources/less/language-dialog.less
index 900d4d73e..04731f1e7 100644
--- a/apps/common/main/resources/less/language-dialog.less
+++ b/apps/common/main/resources/less/language-dialog.less
@@ -105,4 +105,5 @@ li {
&.zh, &.zh-CN {background-position: -32px -180px;}
&.ja, &.ja-JP {background-position: 0 -192px;}
&.es-MX {background-position: -16px -192px;}
+ &.zh-TW {background-position: -32px -192px;}
}
diff --git a/apps/common/main/resources/less/toolbar.less b/apps/common/main/resources/less/toolbar.less
index 13348400b..fba1fd987 100644
--- a/apps/common/main/resources/less/toolbar.less
+++ b/apps/common/main/resources/less/toolbar.less
@@ -646,10 +646,13 @@
}
.btn-toolbar {
- &:active {
- svg.icon {
- fill: @icon-toolbar-header-ie;
- fill: @icon-toolbar-header;
+ &:active,
+ &.active {
+ &:not(.disabled) {
+ svg.icon {
+ fill: @icon-normal-pressed-ie;
+ fill: @icon-normal-pressed;
+ }
}
}
diff --git a/apps/common/main/resources/less/variables.less b/apps/common/main/resources/less/variables.less
index 0660a8c87..0fd142adc 100644
--- a/apps/common/main/resources/less/variables.less
+++ b/apps/common/main/resources/less/variables.less
@@ -60,7 +60,7 @@
@font-family-serif: Georgia, "Times New Roman", Times, serif;
@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
@font-family-tahoma: tahoma, arial, verdana, sans-serif;
-@font-family-base: @font-family-sans-serif;
+@font-family-base: var(--font-family-base-custom, @font-family-sans-serif), @font-family-sans-serif;
@font-size-base: 11px;
@font-size-large: 13px;
diff --git a/apps/common/mobile/lib/controller/SharingSettings.jsx b/apps/common/mobile/lib/controller/SharingSettings.jsx
new file mode 100644
index 000000000..ce3ae4844
--- /dev/null
+++ b/apps/common/mobile/lib/controller/SharingSettings.jsx
@@ -0,0 +1,73 @@
+import React, {useEffect} from 'react';
+import ViewSharingSettings from "../view/SharingSettings";
+import {observer, inject} from "mobx-react";
+import { f7 } from 'framework7-react';
+
+const SharingSettingsController = props => {
+ const appOptions = props.storeAppOptions;
+ const canRequestSharingSettings = appOptions.canRequestSharingSettings;
+ const sharingSettingsUrl = appOptions.sharingSettingsUrl;
+
+ const changeAccessRights = () => {
+ if (canRequestSharingSettings) {
+ Common.Gateway.requestSharingSettings();
+ }
+ };
+
+ const setSharingSettings = data => {
+ if (data) {
+ Common.Notifications.trigger('collaboration:sharingupdate', data.sharingSettings);
+ }
+ }
+
+ const onMessage = msg => {
+ if(msg) {
+ const msgData = JSON.parse(msg.data);
+
+ if (msgData && msgData?.Referer == "onlyoffice") {
+ if (msgData?.needUpdate) {
+ setSharingSettings(msgData.sharingSettings);
+ }
+ f7.views.current.router.back();
+ }
+ }
+ };
+
+ const bindWindowEvents = () => {
+ if (window.addEventListener) {
+ window.addEventListener("message", onMessage, false);
+ } else if (window.attachEvent) {
+ window.attachEvent("onmessage", onMessage);
+ }
+ };
+
+ const unbindWindowEvents = () => {
+ if (window.removeEventListener) {
+ window.removeEventListener("message", onMessage);
+ } else if (window.detachEvent) {
+ window.detachEvent("onmessage", onMessage);
+ }
+ };
+
+ useEffect(() => {
+ bindWindowEvents();
+ Common.Notifications.on('collaboration:sharing', changeAccessRights);
+
+ if (!!sharingSettingsUrl && sharingSettingsUrl.length || canRequestSharingSettings) {
+ Common.Gateway.on('showsharingsettings', changeAccessRights);
+ Common.Gateway.on('setsharingsettings', setSharingSettings);
+ }
+
+ return () => {
+ unbindWindowEvents();
+ }
+ }, []);
+
+ return (
+
+ );
+};
+
+export default inject('storeAppOptions')(observer(SharingSettingsController));
\ No newline at end of file
diff --git a/apps/common/mobile/lib/controller/collaboration/Review.jsx b/apps/common/mobile/lib/controller/collaboration/Review.jsx
index d6db4d966..820bfa2ea 100644
--- a/apps/common/mobile/lib/controller/collaboration/Review.jsx
+++ b/apps/common/mobile/lib/controller/collaboration/Review.jsx
@@ -277,7 +277,7 @@ class ReviewChange extends Component {
}
if (value.Get_VertAlign() !== undefined) {
proptext.length > 0 && proptext.push(, );
- proptext.push({((value.Get_VertAlign() == 1) ? _t.textSuperScript : ((value.Get_VertAlign() == 2) ? _t.textSubScript : _t.textBaseline))} );
+ proptext.push({((value.Get_VertAlign() === Asc.vertalign_SuperScript) ? _t.textSuperScript : ((value.Get_VertAlign() === Asc.vertalign_SubScript) ? _t.textSubScript : _t.textBaseline))} );
}
if (value.Get_Color() !== undefined) {
proptext.length > 0 && proptext.push(, );
diff --git a/apps/common/mobile/lib/view/SharingSettings.jsx b/apps/common/mobile/lib/view/SharingSettings.jsx
index 22f60e4b8..6240961f5 100644
--- a/apps/common/mobile/lib/view/SharingSettings.jsx
+++ b/apps/common/mobile/lib/view/SharingSettings.jsx
@@ -1,22 +1,29 @@
-import React, { Component, useEffect } from 'react';
-import { observer, inject } from "mobx-react";
-import { f7, Popover, List, ListItem, Navbar, NavRight, Sheet, BlockTitle, Page, View, Icon, Link } from 'framework7-react';
+import React, { useEffect } from 'react';
+import { Navbar, Page } from 'framework7-react';
import { useTranslation } from 'react-i18next';
-import { Device } from "../../utils/device";
-const SharingSettings = props => {
+const ViewSharingSettings = props => {
const { t } = useTranslation();
+ const sharingSettingsUrl = props.sharingSettingsUrl;
const _t = t('Common.Collaboration', {returnObjects: true});
- const url = 'https://nct.onlyoffice.com/Products/Files/Share.aspx?fileid=142278';
+
+ function resizeHeightIframe(selector) {
+ const iFrame = document.querySelector(selector);
+ iFrame.height = iFrame.contentWindow.document.body.scrollHeight;
+ };
+
+ useEffect(() => {
+ resizeHeightIframe('#sharing-placeholder iframe');
+ }, []);
return (
-
+
)
-}
+};
-export default SharingSettings;
\ No newline at end of file
+export default ViewSharingSettings;
\ No newline at end of file
diff --git a/apps/common/mobile/lib/view/collaboration/Collaboration.jsx b/apps/common/mobile/lib/view/collaboration/Collaboration.jsx
index d029838b9..5eed9bd99 100644
--- a/apps/common/mobile/lib/view/collaboration/Collaboration.jsx
+++ b/apps/common/mobile/lib/view/collaboration/Collaboration.jsx
@@ -1,19 +1,19 @@
import React, { Component, useEffect } from 'react';
import { observer, inject } from "mobx-react";
-import { Popover, List, ListItem, Navbar, NavRight, Sheet, BlockTitle, Page, View, Icon, Link } from 'framework7-react';
-import { f7 } from 'framework7-react';
+import { Popover, List, ListItem, Navbar, NavRight, Sheet, BlockTitle, Page, View, Icon, Link, f7 } from 'framework7-react';
import { useTranslation } from 'react-i18next';
import {Device} from "../../../utils/device";
-
import {ReviewController, ReviewChangeController} from "../../controller/collaboration/Review";
import {PageDisplayMode} from "./Review";
-
import {ViewCommentsController, ViewCommentsSheetsController} from "../../controller/collaboration/Comments";
+// import SharingSettings from "../SharingSettings";
+import SharingSettingsController from "../../controller/SharingSettings";
const PageUsers = inject("users")(observer(props => {
const { t } = useTranslation();
const _t = t('Common.Collaboration', {returnObjects: true});
const storeUsers = props.users;
+
return (
@@ -81,6 +81,10 @@ const routes = [
allComments: true
}
}
+ },
+ {
+ path: '/sharing-settings/',
+ component: SharingSettingsController
}
];
@@ -88,6 +92,7 @@ const PageCollaboration = inject('storeAppOptions', 'users')(observer(props => {
const { t } = useTranslation();
const _t = t('Common.Collaboration', {returnObjects: true});
const appOptions = props.storeAppOptions;
+ const sharingSettingsUrl = appOptions.sharingSettingsUrl;
const isViewer = appOptions.isViewer;
return (
@@ -103,6 +108,11 @@ const PageCollaboration = inject('storeAppOptions', 'users')(observer(props => {
}
+ {sharingSettingsUrl &&
+
+
+
+ }
{props.users.editUsers.length > 0 &&
@@ -122,8 +132,8 @@ const PageCollaboration = inject('storeAppOptions', 'users')(observer(props => {
)
-
}));
+
class CollaborationView extends Component {
constructor(props) {
super(props);
diff --git a/apps/common/mobile/resources/css/skeleton.css b/apps/common/mobile/resources/css/skeleton.css
index 0ac99096e..85c8c2031 100644
--- a/apps/common/mobile/resources/css/skeleton.css
+++ b/apps/common/mobile/resources/css/skeleton.css
@@ -116,3 +116,31 @@ body.theme-type-dark {
50% { opacity:1; }
100% { opacity:0.1; }
}
+
+.md .navbar.navbar-with-logo {
+ height: 34px;
+}
+
+.ios .navbar.navbar-with-logo {
+ height: 26px;
+}
+
+:root .theme-type-dark {
+ --f7-navbar-bg-color: #232323;
+ --f7-subnavbar-bg-color: #232323;
+}
+
+.md .word-editor {
+ --f7-navbar-bg-color: var(--background-navbar-word, #446995);
+ --f7-subnavbar-bg-color: var(--background-navbar-word, #446995);
+}
+
+.md .cell-editor {
+ --f7-navbar-bg-color: var(--background-navbar-word, #40865c);
+ --f7-subnavbar-bg-color: var(--background-navbar-word, #40865c);
+}
+
+.md .slide-editor {
+ --f7-navbar-bg-color: var(--background-navbar-word, #aa5252);
+ --f7-subnavbar-bg-color: var(--background-navbar-word, #aa5252);
+}
\ No newline at end of file
diff --git a/apps/common/mobile/resources/less/common.less b/apps/common/mobile/resources/less/common.less
index 39292d4b3..0b4931c60 100644
--- a/apps/common/mobile/resources/less/common.less
+++ b/apps/common/mobile/resources/less/common.less
@@ -25,12 +25,12 @@
}
}
-.navbar {
- .title {
- text-overflow: initial;
- white-space: normal;
- }
-}
+//.navbar {
+// .title {
+// text-overflow: initial;
+// white-space: normal;
+// }
+//}
.navbar-hidden {
transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-subnavbar-height))), 0);
@@ -48,9 +48,12 @@
.subnavbar-inner {
padding: 0;
.title {
- white-space: nowrap;
+ //white-space: nowrap;
overflow: hidden;
- text-overflow: ellipsis;
+ text-overflow: initial;
+ margin: 0;
+ padding: 0;
+ flex-shrink: initial;
}
}
.icon-back {
@@ -1098,6 +1101,19 @@ input[type="number"]::-webkit-inner-spin-button {
padding-bottom: 60px;
}
+// Picker
+.picker-columns {
+ justify-content: space-around;
+}
+
+.row-picker {
+ .col-50 {
+ color: @text-secondary;
+ text-align: center;
+ }
+}
+
+
diff --git a/apps/common/mobile/resources/less/icons.less b/apps/common/mobile/resources/less/icons.less
index 6efda00eb..b55a32e48 100644
--- a/apps/common/mobile/resources/less/icons.less
+++ b/apps/common/mobile/resources/less/icons.less
@@ -23,7 +23,7 @@ i.icon {
&.icon-collaboration {
width: 24px;
height: 24px;
- .encoded-svg-mask(' ');
+ .encoded-svg-mask(' ');
}
&.icon-cancellation {
width: 24px;
@@ -87,6 +87,6 @@ i.icon {
&.icon-sharing-settings {
width: 24px;
height: 24px;
- .encoded-svg-mask(' ')
+ .encoded-svg-mask(' ')
}
}
diff --git a/apps/common/mobile/resources/less/material/icons.less b/apps/common/mobile/resources/less/material/icons.less
index df8e84146..914e15bc3 100644
--- a/apps/common/mobile/resources/less/material/icons.less
+++ b/apps/common/mobile/resources/less/material/icons.less
@@ -32,7 +32,7 @@
&.icon-collaboration {
width: 24px;
height: 24px;
- .encoded-svg-mask(' ', @toolbar-icons);
+ .encoded-svg-mask(' ', @toolbar-icons);
}
&.icon-edit {
width: 22px;
diff --git a/apps/common/mobile/utils/LocalStorage.mjs b/apps/common/mobile/utils/LocalStorage.mjs
index fd0c7fe90..bc058cff8 100644
--- a/apps/common/mobile/utils/LocalStorage.mjs
+++ b/apps/common/mobile/utils/LocalStorage.mjs
@@ -9,6 +9,7 @@ class LocalStorage {
this._store = {};
this._prefix = 'mobile-';
+ this._common_keys = ['guest-id', 'guest-username'];
try {
this._isAllowed = !!window.localStorage;
@@ -52,7 +53,9 @@ class LocalStorage {
}
setItem(name, value, just) {
- name = this._prefix + name;
+ if ( !this._common_keys.includes(value) )
+ name = this._prefix + name;
+
if ( this._isAllowed ) {
try {
localStorage.setItem(name, value);
@@ -67,7 +70,9 @@ class LocalStorage {
}
getItem(name) {
- name = this._prefix + name;
+ if ( !this._common_keys.includes(name) )
+ name = this._prefix + name;
+
if ( this._isAllowed )
return localStorage.getItem(name);
else return this._store[name]===undefined ? null : this._store[name];
diff --git a/apps/common/mobile/utils/htmlutils.js b/apps/common/mobile/utils/htmlutils.js
index 6f04e0041..7c1cbc0b5 100644
--- a/apps/common/mobile/utils/htmlutils.js
+++ b/apps/common/mobile/utils/htmlutils.js
@@ -15,11 +15,11 @@ if ( localStorage && localStorage.getItem('mobile-mode-direction') === 'rtl' ) {
load_stylesheet('./css/framework7.css')
}
-let obj = !localStorage ? {id: 'theme-light', type: 'light'} : JSON.parse(localStorage.getItem("ui-theme"));
+let obj = !localStorage ? {id: 'theme-light', type: 'light'} : JSON.parse(localStorage.getItem("mobile-ui-theme"));
if ( !obj ) {
obj = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ?
{id: 'theme-dark', type: 'dark'} : {id: 'theme-light', type: 'light'};
- localStorage && localStorage.setItem("ui-theme", JSON.stringify(obj));
+ localStorage && localStorage.setItem("mobile-ui-theme", JSON.stringify(obj));
}
-document.body.classList.add(`theme-type-${obj.type}`);
+document.body.classList.add(`theme-type-${obj.type}`, `${window.asceditor}-editor`);
diff --git a/apps/documenteditor/embed/js/ApplicationController.js b/apps/documenteditor/embed/js/ApplicationController.js
index ae1d89786..9bd89517b 100644
--- a/apps/documenteditor/embed/js/ApplicationController.js
+++ b/apps/documenteditor/embed/js/ApplicationController.js
@@ -753,6 +753,19 @@ DE.ApplicationController = new(function(){
message = me.errorTokenExpire;
break;
+ case Asc.c_oAscError.ID.ConvertationOpenFormat:
+ if (errData === 'pdf')
+ message = me.errorInconsistentExtPdf.replace('%1', docConfig.fileType || '');
+ else if (errData === 'docx')
+ message = me.errorInconsistentExtDocx.replace('%1', docConfig.fileType || '');
+ else if (errData === 'xlsx')
+ message = me.errorInconsistentExtXlsx.replace('%1', docConfig.fileType || '');
+ else if (errData === 'pptx')
+ message = me.errorInconsistentExtPptx.replace('%1', docConfig.fileType || '');
+ else
+ message = me.errorInconsistentExt;
+ break;
+
default:
message = me.errorDefaultMessage.replace('%1', id);
break;
@@ -962,6 +975,11 @@ DE.ApplicationController = new(function(){
errorLoadingFont: 'Fonts are not loaded. Please contact your Document Server administrator.',
errorTokenExpire: 'The document security token has expired. Please contact your Document Server administrator.',
openErrorText: 'An error has occurred while opening the file',
- textCtrl: 'Ctrl'
+ textCtrl: 'Ctrl',
+ errorInconsistentExtDocx: 'An error has occurred while opening the file. The file content corresponds to text documents (e.g. docx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtXlsx: 'An error has occurred while opening the file. The file content corresponds to spreadsheets (e.g. xlsx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtPptx: 'An error has occurred while opening the file. The file content corresponds to presentations (e.g. pptx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtPdf: 'An error has occurred while opening the file. The file content corresponds to one of the following formats: pdf/djvu/xps/oxps, but the file has the inconsistent extension: %1.',
+ errorInconsistentExt: 'An error has occurred while opening the file. The file content does not match the file extension.'
}
})();
\ No newline at end of file
diff --git a/apps/documenteditor/embed/locale/ca.json b/apps/documenteditor/embed/locale/ca.json
index b7de2c578..f108ccd70 100644
--- a/apps/documenteditor/embed/locale/ca.json
+++ b/apps/documenteditor/embed/locale/ca.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "El fitxer està protegit amb contrasenya i no es pot obrir.",
"DE.ApplicationController.errorFileSizeExceed": "La mida del fitxer supera el límit establert per al servidor. Contacteu amb l'administrador del servidor de documents per a obtenir més informació.",
"DE.ApplicationController.errorForceSave": "S'ha produït un error en desar el fitxer. Utilitzeu l'opció «Anomena i baixa» per desar el fitxer al disc dur de l’ordinador o torneu-ho a provar més endavant.",
+ "DE.ApplicationController.errorInconsistentExt": "S'ha produït un error en obrir el fitxer. El contingut del fitxer no es correspon amb la seva extensió.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "S'ha produït un error en obrir el fitxer. El contingut del fitxer correspon a documents de text (per exemple, docx), però el fitxer té l'extensió incoherent: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "S'ha produït un error en obrir el fitxer. El contingut del fitxer correspon a un dels formats següents: pdf/djvu/xps/oxps, però el fitxer té l'extensió incoherent: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "S'ha produït un error en obrir el fitxer. El contingut del fitxer correspon a presentacions (per exemple, pptx), però el fitxer té l'extensió incongruent: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "S'ha produït un error en obrir el fitxer. El contingut del fitxer correspon a full de càlcul (per exemple, xlsx), però el fitxer té l'extensió incoherent: %1.",
"DE.ApplicationController.errorLoadingFont": "No s'han carregat les lletres tipogràfiques. Contacteu amb l'administrador del Servidor de Documents.",
"DE.ApplicationController.errorSubmit": "No s'ha pogut enviar.",
"DE.ApplicationController.errorTokenExpire": "El testimoni de seguretat del document ha caducat. Contacteu amb l'administrador del servidor de documents.",
diff --git a/apps/documenteditor/embed/locale/de.json b/apps/documenteditor/embed/locale/de.json
index 84108feb6..778900559 100644
--- a/apps/documenteditor/embed/locale/de.json
+++ b/apps/documenteditor/embed/locale/de.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "Das Dokument ist kennwortgeschützt und kann nicht geöffnet werden.",
"DE.ApplicationController.errorFileSizeExceed": "Die Dateigröße überschreitet die für Ihren Server festgelegte Einschränkung. Weitere Informationen können Sie von Ihrem Document Server-Administrator erhalten.",
"DE.ApplicationController.errorForceSave": "Beim Speichern der Datei ist ein Fehler aufgetreten. Verwenden Sie die Option \"Herunterladen als\", um die Datei auf Ihrer Computerfestplatte zu speichern oder versuchen Sie es später erneut.",
+ "DE.ApplicationController.errorInconsistentExt": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei stimmt nicht mit der Dateierweiterung überein.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei entspricht Textdokumenten (z.B. docx), aber die Datei hat die inkonsistente Erweiterung: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei entspricht einem der folgenden Formate: pdf/djvu/xps/oxps, aber die Datei hat die inkonsistente Erweiterung: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei entspricht Präsentationen (z.B. pptx), aber die Datei hat die inkonsistente Erweiterung: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei entspricht Tabellenkalkulationen (z.B. xlsx), aber die Datei hat die inkonsistente Erweiterung: %1.",
"DE.ApplicationController.errorLoadingFont": "Schriftarten nicht hochgeladen. Bitte wenden Sie sich an Administratoren von Ihrem Document Server.",
"DE.ApplicationController.errorSubmit": "Fehler beim Senden.",
"DE.ApplicationController.errorTokenExpire": "Sicherheitstoken des Dokuments ist abgelaufen. Wenden Sie sich an Ihren Serveradministrator.",
diff --git a/apps/documenteditor/embed/locale/el.json b/apps/documenteditor/embed/locale/el.json
index ce18851e5..22eb27a84 100644
--- a/apps/documenteditor/embed/locale/el.json
+++ b/apps/documenteditor/embed/locale/el.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "Το αρχείο προστατεύεται με συνθηματικό και δεν μπορεί να ανοίξει.",
"DE.ApplicationController.errorFileSizeExceed": "Το μέγεθος του αρχείου υπερβαίνει το όριο που έχει οριστεί για τον διακομιστή σας. Παρακαλούμε επικοινωνήστε με τον διαχειριστή του διακομιστή εγγράφων για λεπτομέρειες.",
"DE.ApplicationController.errorForceSave": "Παρουσιάστηκε σφάλμα κατά την αποθήκευση του αρχείου. Χρησιμοποιήστε την επιλογή «Λήψη ως» για να αποθηκεύσετε το αρχείο στον σκληρό δίσκο του υπολογιστή σας ή δοκιμάστε ξανά αργότερα.",
+ "DE.ApplicationController.errorInconsistentExt": "Συνέβη ένα σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου δεν αντιστοιχούν στην κατάληξή του ονόματός του.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Συνέβη ένα σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου αντιστοιχούν σε αρχεία κειμένου (π.χ. docx), αλλά το αρχείο έχει ασύμφωνη κατάληξη: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Συνέβη ένα σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου αντιστοιχούν σε μια από τις ακόλουθες μορφές: pdf/djvu/xps/oxps, αλλά το αρχείο έχει ασύμφωνη κατάληξη: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Συνέβη ένα σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου αντιστοιχούν σε παρουσιάσεις (π.χ. pptx), αλλά το αρχείο έχει ασύμφωνη κατάληξη: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Συνέβη ένα σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου αντιστοιχούν σε παρουσιάσεις (π.χ. xlsx), αλλά το αρχείο έχει ασύμφωνη κατάληξη: %1.",
"DE.ApplicationController.errorLoadingFont": "Οι γραμματοσειρές δεν έχουν φορτωθεί. Παρακαλούμε επικοινωνήστε με τον διαχειριστή του Εξυπηρετητή Εγγράφων σας.",
"DE.ApplicationController.errorSubmit": "Η υποβολή απέτυχε.",
"DE.ApplicationController.errorTokenExpire": "Το κλειδί ασφαλείας του εγγράφου έληξε. Παρακαλούμε επικοινωνήστε με τον διαχειριστή του Εξυπηρετητή Εγγράφων.",
@@ -26,6 +31,7 @@
"DE.ApplicationController.scriptLoadError": "Η σύνδεση είναι πολύ αργή, δεν ήταν δυνατή η φόρτωση ορισμένων στοιχείων. Φορτώστε ξανά τη σελίδα.",
"DE.ApplicationController.textAnonymous": "Ανώνυμος",
"DE.ApplicationController.textClear": "Εκκαθάριση Όλων των Πεδίων",
+ "DE.ApplicationController.textCtrl": "Ctrl",
"DE.ApplicationController.textGotIt": "Ελήφθη",
"DE.ApplicationController.textGuest": "Επισκέπτης",
"DE.ApplicationController.textLoadingDocument": "Φόρτωση εγγράφου",
diff --git a/apps/documenteditor/embed/locale/en.json b/apps/documenteditor/embed/locale/en.json
index 19ebd329f..7e4bf26f8 100644
--- a/apps/documenteditor/embed/locale/en.json
+++ b/apps/documenteditor/embed/locale/en.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.",
"DE.ApplicationController.errorFileSizeExceed": "The file size exceeds the limitation set for your server. Please contact your Document Server administrator for details.",
"DE.ApplicationController.errorForceSave": "An error occurred while saving the file. Please use the 'Download as' option to save the file to your computer hard drive or try again later.",
+ "DE.ApplicationController.errorInconsistentExt": "An error has occurred while opening the file. The file content does not match the file extension.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "An error has occurred while opening the file. The file content corresponds to text documents (e.g. docx), but the file has the inconsistent extension: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "An error has occurred while opening the file. The file content corresponds to one of the following formats: pdf/djvu/xps/oxps, but the file has the inconsistent extension: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "An error has occurred while opening the file. The file content corresponds to presentations (e.g. pptx), but the file has the inconsistent extension: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "An error has occurred while opening the file. The file content corresponds to spreadsheets (e.g. xlsx), but the file has the inconsistent extension: %1.",
"DE.ApplicationController.errorLoadingFont": "Fonts are not loaded. Please contact your Document Server administrator.",
"DE.ApplicationController.errorSubmit": "Submit failed.",
"DE.ApplicationController.errorTokenExpire": "The document security token has expired. Please contact your Document Server administrator.",
diff --git a/apps/documenteditor/embed/locale/es.json b/apps/documenteditor/embed/locale/es.json
index f9cdaf4c1..258214100 100644
--- a/apps/documenteditor/embed/locale/es.json
+++ b/apps/documenteditor/embed/locale/es.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "El archivo está protegido por una contraseña y no se puede abrir.",
"DE.ApplicationController.errorFileSizeExceed": "El tamaño del archivo supera el límiete establecido por su servidor. Contacte con el administrador del servidor de documentos para obtener más detalles.",
"DE.ApplicationController.errorForceSave": "Se ha producido un error al guardar el archivo. Utilice la opción \"Descargar como\" para guardar el archivo en el disco duro de su ordenador o inténtelo más tarde.",
+ "DE.ApplicationController.errorInconsistentExt": "Se ha producido un error al abrir el archivo. El contenido del archivo no coincide con la extensión del mismo.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Se ha producido un error al abrir el archivo. El contenido del archivo corresponde a documentos de texto (por ejemplo, docx), pero el archivo tiene extensión inconsistente: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Se ha producido un error al abrir el archivo. El contenido del archivo corresponde a uno de los siguientes formatos: pdf/djvu/xps/oxps, pero el archivo tiene extensión inconsistente: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Se ha producido un error al abrir el archivo. El contenido del archivo corresponde a presentaciones (por ejemplo, pptx), pero el archivo tiene extensión inconsistente: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Se ha producido un error al abrir el archivo. El contenido del archivo corresponde a hojas de cálculo (por ejemplo, xlsx), pero el archivo tiene extensión inconsistente: %1.",
"DE.ApplicationController.errorLoadingFont": "Los tipos de letra no están cargados. Contacte con el administrador del servidor de documentos.",
"DE.ApplicationController.errorSubmit": "Error al enviar.",
"DE.ApplicationController.errorTokenExpire": "El token de seguridad del documento ha expirado. Contacte con el administrador del servidor de documentos",
diff --git a/apps/documenteditor/embed/locale/eu.json b/apps/documenteditor/embed/locale/eu.json
index b98020ed1..c98beccac 100644
--- a/apps/documenteditor/embed/locale/eu.json
+++ b/apps/documenteditor/embed/locale/eu.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "Fitxategia pasahitzez babestua dago eta ezin da ireki.",
"DE.ApplicationController.errorFileSizeExceed": "Fitxategiaren tamainak zure zerbitzarirako ezarritako muga gainditzen du. Jarri harremanetan dokumentu-zerbitzariaren administratzailearekin informazio gehiago lortzeko.",
"DE.ApplicationController.errorForceSave": "Errore bat gertatu da dokumentua gordetzean. Erabili 'Deskargatu honela' aukera fitxategia zure ordenagailuko disko gogorrean gordetzeko edo saiatu berriro geroago.",
+ "DE.ApplicationController.errorInconsistentExt": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia eta luzapena ez datoz bat.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia testu-dokumentu bati dagokio (adibidez, docx), baina fitxategiaren luzapena ez dator bat: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia ondorengo formatuetako bati dagokio: pdf/djvu/xps/oxps, baina fitxategiaren luzapena ez dator bat: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia aurkezpen bati dagokio (adibidez, pptx), baina fitxategiaren luzapena ez dator bat: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia kalkulu-orri bati dagokio (adibidez, xlsx), baina fitxategiaren luzapena ez dator bat: %1.",
"DE.ApplicationController.errorLoadingFont": "Letra-tipoak ez dira kargatu. Jarri zure dokumentu-zerbitzariaren administratzailearekin harremanetan.",
"DE.ApplicationController.errorSubmit": "Huts egin du bidaltzean.",
"DE.ApplicationController.errorTokenExpire": "Dokumentuaren segurtasun-tokena iraungi da. Jarri zure dokumentu-zerbitzariaren administratzailearekin harremanetan.",
diff --git a/apps/documenteditor/embed/locale/fr.json b/apps/documenteditor/embed/locale/fr.json
index 0b47feac9..e53864f10 100644
--- a/apps/documenteditor/embed/locale/fr.json
+++ b/apps/documenteditor/embed/locale/fr.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "Le fichier est protégé par le mot de passe et ne peut pas être ouvert.",
"DE.ApplicationController.errorFileSizeExceed": "La taille du fichier dépasse les limites établies sur votre serveur. Veuillez contacter votre administrateur de Document Server pour obtenir plus d'informations. ",
"DE.ApplicationController.errorForceSave": "Une erreur est survenue lors de l'enregistrement du fichier. Veuillez utiliser l'option «Télécharger en tant que» pour enregistrer le fichier sur le disque dur de votre ordinateur ou réessayer plus tard.",
+ "DE.ApplicationController.errorInconsistentExt": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier ne correspond pas à l'extension du fichier.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier correspond à des documents texte (par exemple docx), mais le fichier a une extension incohérente : %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier correspond à l'un des formats suivants : pdf/djvu/xps/oxps, mais le fichier a l'extension incohérente : %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier correspond à des présentations (par exemple pptx), mais le fichier a une extension incohérente : %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier correspond à des feuilles de calcul (par exemple xlsx), mais le fichier a une extension incohérente : %1.",
"DE.ApplicationController.errorLoadingFont": "Les polices ne sont pas téléchargées. Veuillez contacter l'administrateur de Document Server.",
"DE.ApplicationController.errorSubmit": "Échec de soumission",
"DE.ApplicationController.errorTokenExpire": "Le jeton de sécurité du document a expiré. Veuillez contactez l'administrateur de Document Server.",
diff --git a/apps/documenteditor/embed/locale/hy.json b/apps/documenteditor/embed/locale/hy.json
index 1a0ce5fa9..f1cf6245e 100644
--- a/apps/documenteditor/embed/locale/hy.json
+++ b/apps/documenteditor/embed/locale/hy.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "Ֆայլն ունի գաղտնաբառ և չի կարող բացվել։",
"DE.ApplicationController.errorFileSizeExceed": "Ֆայլի չափը գերազանցում է ձեր սերվերի համար սահմանված սահմանափակումը: Մանրամասների համար խնդրում ենք կապվել Ձեր փաստաթղթերի սերվերի ադմինիստրատորի հետ:",
"DE.ApplicationController.errorForceSave": "Սխալ է տեղի ունեցել ֆայլը պահելիս:Խնդրում ենք օգտագործել «Ներբեռնել որպես» տարբերակը՝ ֆայլը ձեր համակարգչի կոշտ սկավառակում պահելու համար կամ ավելի ուշ նորից փորձեք:",
+ "DE.ApplicationController.errorInconsistentExt": "Ֆայլը բացելիս սխալ է տեղի ունեցել: Ֆայլի բովանդակությունը չի համապատասխանում ֆայլի ընդլայնմանը:",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Ֆայլը բացելիս սխալ է տեղի ունեցել: Ֆայլի բովանդակությունը համապատասխանում է տեքստային փաստաթղթերին (օրինակ՝ docx), սակայն ֆայլն ունի անհամապատասխան ընդլայնում՝ %1:",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Ֆայլը բացելիս սխալ է տեղի ունեցել:Ֆայլի բովանդակությունը համապատասխանում է հետևյալ ձևաչափերից մեկին՝pdf/djvu/xps/oxps,բայց ֆայլն ունի անհամապատասխան ընդլայնում. %1:",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Ֆայլը բացելիս սխալ է տեղի ունեցել: Ֆայլի բովանդակությունը համապատասխանում է ներկայացումներին (օրինակ՝ pptx), սակայն ֆայլն ունի անհամապատասխան ընդլայնում. %1:",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Ֆայլը բացելիս սխալ է տեղի ունեցել: Ֆայլի բովանդակությունը համապատասխանում է աղյուսակներին (օր. xlsx), սակայն ֆայլն ունի անհամապատասխան ընդլայնում. %1:",
"DE.ApplicationController.errorLoadingFont": "Տառատեսակները բեռնված չեն: Խնդրում ենք կապվել ձեր փաստաթղթերի սերվերի ադմինիստրատորի հետ:",
"DE.ApplicationController.errorSubmit": "Չհաջողվեց հաստատել",
"DE.ApplicationController.errorTokenExpire": "Փաստաթղթի անվտանգության կտրոնի ժամկետն անցել է։ Դիմեք փաստաթղթերի սպասարկիչի ձեր վարիչին։",
diff --git a/apps/documenteditor/embed/locale/id.json b/apps/documenteditor/embed/locale/id.json
index c1ceeb819..bb71930c3 100644
--- a/apps/documenteditor/embed/locale/id.json
+++ b/apps/documenteditor/embed/locale/id.json
@@ -16,23 +16,28 @@
"DE.ApplicationController.errorFilePassProtect": "Dokumen dilindungi dengan kata sandi dan tidak dapat dibuka.",
"DE.ApplicationController.errorFileSizeExceed": "Ukuran file melewati batas server Anda. Silakan hubungi admin Server Dokumen Anda untuk detail.",
"DE.ApplicationController.errorForceSave": "Ada kesalahan saat menyimpan file. Silakan gunakan opsi 'Download sebagai' untuk menyimpan file ke komputer Anda dan coba lagi.",
+ "DE.ApplicationController.errorInconsistentExt": "Terjadi kesalahan saat membuka file. Isi file tidak cocok dengan ekstensi file.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Terjadi kesalahan saat membuka file. Isi file berhubungan dengan dokumen teks (mis. docx), tapi file memiliki ekstensi yang tidak konsisten: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Sebuah kesalahan terjadi ketika membuka file. Isi file berhubungan dengan satu dari format berikut: pdf/djvu/xps/oxps, tapi file memiliki ekstensi yang tidak konsisten: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Terjadi kesalahan saat membuka file. Isi file berhubungan dengan presentasi (mis. pptx), tapi file memiliki ekstensi yang tidak konsisten: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Terjadi kesalahan saat membuka file. Isi file berhubungan dengan spreadsheet (mis. xlsx), tapi file memiliki ekstensi yang tidak konsisten: %1.",
"DE.ApplicationController.errorLoadingFont": "Font tidak bisa dimuat. Silakan kontak admin Server Dokumen Anda.",
"DE.ApplicationController.errorSubmit": "Submit gagal.",
"DE.ApplicationController.errorTokenExpire": "Token keamanan dokumen sudah kadaluwarsa. Silakan hubungi admin Server Dokumen Anda.",
"DE.ApplicationController.errorUpdateVersionOnDisconnect": "Koneksi internet sudah kembali dan versi file sudah diganti. Sebelum Anda bisa melanjutkan kerja, Anda perlu mengunduh file atau salin konten untuk memastikan tidak ada yang hilang, lalu muat ulang halaman ini.",
"DE.ApplicationController.errorUserDrop": "File tidak dapat di akses",
"DE.ApplicationController.notcriticalErrorTitle": "Peringatan",
- "DE.ApplicationController.openErrorText": "Eror ketika membuka file.",
+ "DE.ApplicationController.openErrorText": "Kesalahan terjadi ketika membuka file.",
"DE.ApplicationController.scriptLoadError": "Koneksi terlalu lambat dan beberapa komponen tidak bisa dibuka. Silakan muat ulang halaman.",
"DE.ApplicationController.textAnonymous": "Anonim",
- "DE.ApplicationController.textClear": "Bersihkan Semua Area",
+ "DE.ApplicationController.textClear": "Bersihkan Semua Ruas",
"DE.ApplicationController.textCtrl": "Ctrl",
"DE.ApplicationController.textGotIt": "Mengerti",
"DE.ApplicationController.textGuest": "Tamu",
"DE.ApplicationController.textLoadingDocument": "Memuat dokumen",
- "DE.ApplicationController.textNext": "Area Berikutnya",
+ "DE.ApplicationController.textNext": "Ruas Berikutnya",
"DE.ApplicationController.textOf": "dari",
- "DE.ApplicationController.textRequired": "Isi semua area yang dibutuhkan untuk mengirim form.",
+ "DE.ApplicationController.textRequired": "Isi semua ruas yang dibutuhkan untuk mengirim formulir.",
"DE.ApplicationController.textSubmit": "Submit",
"DE.ApplicationController.textSubmited": "Form berhasil disubmit Klik untuk menutup tips",
"DE.ApplicationController.txtClose": "Tutup",
diff --git a/apps/documenteditor/embed/locale/ja.json b/apps/documenteditor/embed/locale/ja.json
index 92ab5dbe2..5d5a7e3ad 100644
--- a/apps/documenteditor/embed/locale/ja.json
+++ b/apps/documenteditor/embed/locale/ja.json
@@ -16,9 +16,14 @@
"DE.ApplicationController.errorFilePassProtect": "ドキュメントがパスワードで保護されているため開くことができません",
"DE.ApplicationController.errorFileSizeExceed": "ファイルサイズがサーバーで設定された制限を超過しています。 Documentサーバー管理者に詳細をお問い合わせください。",
"DE.ApplicationController.errorForceSave": "文書の保存中にエラーが発生しました。コンピューターにファイルを保存するために、「...としてダウンロード」を使用し、または後で再お試しください。",
+ "DE.ApplicationController.errorInconsistentExt": "ファイルを開くときにエラーが発生しました。 ファイルの内容がファイルの拡張子と一致しません。",
+ "DE.ApplicationController.errorInconsistentExtDocx": "ファイルを開くときにエラーが発生しました。 ファイルの内容はドキュメント (docx など) に対応していますが、ファイルの拡張子が一致していません: %1",
+ "DE.ApplicationController.errorInconsistentExtPdf": "ファイルを開くときにエラーが発生しました。 ファイルの内容は次のいずれかの形式に対応しています: pdf/djvu/xps/oxps が、ファイルの拡張子が一致していません: %1",
+ "DE.ApplicationController.errorInconsistentExtPptx": "ファイルを開くときにエラーが発生しました。 ファイルの内容はプレゼンテーション (pptx など) に対応していますが、ファイルの拡張子が一致していません: %1",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "ファイルを開くときにエラーが発生しました。 ファイルの内容はスプレッドシート (xlsx など) に対応していますが、ファイルの拡張子が一致していません: %1",
"DE.ApplicationController.errorLoadingFont": "フォントがダウンロードされませんでした。 文書サーバのアドミニストレータを連絡してください。",
"DE.ApplicationController.errorSubmit": "送信に失敗しました。",
- "DE.ApplicationController.errorTokenExpire": "ドキュメント・セキュリティ・トークンの有効期限が切れています。 ドキュメントサーバーの管理者に連絡してください。",
+ "DE.ApplicationController.errorTokenExpire": "ドキュメントセキュリティトークンの有効期限が切れています。 ドキュメントサーバーの管理者に連絡してください。",
"DE.ApplicationController.errorUpdateVersionOnDisconnect": "インターネット接続が復旧し、ファイルのバージョンが更新されました。 作業を継続する前に、ファイルをダウンロードするか、内容をコピーして、変更が消えてしまわないように確認してから、ページを再びお読み込みください。",
"DE.ApplicationController.errorUserDrop": "今、ファイルにアクセスすることはできません。",
"DE.ApplicationController.notcriticalErrorTitle": "警告",
diff --git a/apps/documenteditor/embed/locale/pt-pt.json b/apps/documenteditor/embed/locale/pt-pt.json
index 3e9369efc..f52ca3163 100644
--- a/apps/documenteditor/embed/locale/pt-pt.json
+++ b/apps/documenteditor/embed/locale/pt-pt.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "O documento está protegido por palavra-passe e não pode ser aberto.",
"DE.ApplicationController.errorFileSizeExceed": "O tamanho do documento excede o limite permitido pelo servidor. Contacte o administrador do servidor de documentos para mais informações.",
"DE.ApplicationController.errorForceSave": "Ocorreu um erro ao guardar o ficheiro. Utilize a opção 'Descarregar como' para guardar o ficheiro no computador ou tente mais tarde.",
+ "DE.ApplicationController.errorInconsistentExt": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro não coincide com a sua extensão.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro corresponde a um documento de texto (doc, docx...), mas a extensão de ficheiro não é consistente: %1",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro corresponde a um dos seguintes formatos: pdf/djvu/xps/oxps, mas a extensão de ficheiro não é consistente: %1",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro corresponde a uma apresentação (ppt, pptx...), mas a extensão de ficheiro não é consistente: %1",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro corresponde a uma folha de cálculo (xls, xlsx...), mas a extensão de ficheiro não é consistente: %1",
"DE.ApplicationController.errorLoadingFont": "Tipos de letra não carregados. Por favor contacte o administrador do servidor de documentos.",
"DE.ApplicationController.errorSubmit": "Falha ao submeter.",
"DE.ApplicationController.errorTokenExpire": "O 'token' de segurança do documento expirou. Entre em contacto com o administrador do servidor de documentos.",
diff --git a/apps/documenteditor/embed/locale/pt.json b/apps/documenteditor/embed/locale/pt.json
index aa2e46dc1..9e3654878 100644
--- a/apps/documenteditor/embed/locale/pt.json
+++ b/apps/documenteditor/embed/locale/pt.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "O documento é protegido por senha e não pode ser aberto.",
"DE.ApplicationController.errorFileSizeExceed": "O tamanho do arquivo excede o limite de seu servidor. Por favor, contate seu administrador de Servidor de Documentos para detalhes.",
"DE.ApplicationController.errorForceSave": "Ocorreu um erro na gravação. Favor utilizar a opção 'Baixar como' para gravar o arquivo em seu computador ou tente novamente mais tarde.",
+ "DE.ApplicationController.errorInconsistentExt": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo não corresponde à extensão do arquivo.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo corresponde a documentos de texto (por exemplo, docx), mas o arquivo tem a extensão inconsistente: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo corresponde a um dos seguintes formatos: pdf/djvu/xps/oxps, mas o arquivo tem a extensão inconsistente: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo corresponde a apresentações (por exemplo, pptx), mas o arquivo tem a extensão inconsistente: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo corresponde a planilhas (por exemplo, xlsx), mas o arquivo tem a extensão inconsistente: %1.",
"DE.ApplicationController.errorLoadingFont": "As fontes não foram carregadas. Entre em contato com o administrador do Document Server.",
"DE.ApplicationController.errorSubmit": "Falha no envio.",
"DE.ApplicationController.errorTokenExpire": "O token de segurança do documento expirou. Entre em contato com o administrador do Document Server.",
diff --git a/apps/documenteditor/embed/locale/ro.json b/apps/documenteditor/embed/locale/ro.json
index 9ff321771..dd4873618 100644
--- a/apps/documenteditor/embed/locale/ro.json
+++ b/apps/documenteditor/embed/locale/ro.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "Fișierul este protejat cu parolă și deaceea nu poate fi deschis.",
"DE.ApplicationController.errorFileSizeExceed": "Dimensiunea fișierului depășește limita permisă de serverul Dvs. Pentru detalii, contactați administratorul dumneavoastră de Server Documente.",
"DE.ApplicationController.errorForceSave": "S-a produs o eroare în timpul salvării fișierului. Pentru copierea de rezervă pe PC utilizați opțiunea Descărcare ca... sau încercați din nou mai târziu.",
+ "DE.ApplicationController.errorInconsistentExt": "Eroare la deschiderea fișierului. Conținutul fișierului nu corespunde cu extensia numelui de fișier.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Eroare la deschiderea fișierului. Conținutul fișierului corespunde unui format de document text (ex. docx), dar extensia numelui de fișier nu se potrivește: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Eroare la deschiderea fișierului. Conținutul fișierului corespunde unuia dintre următoarele formate: pdf/djvu/xps/oxps, dar extensia numelui de fișier nu se potrivește: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Eroare la deschiderea fișierului. Conținutul fișierului corespunde unui format de prezentare (ex. pptx), dar extensia numelui de fișier nu se potrivește: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Eroare la deschiderea fișierului. Conținutul fișierului corespunde unui format de foaie de calcul (ex. xlsx), dar extensia numelui de fișier nu se potrivește: %1.",
"DE.ApplicationController.errorLoadingFont": "Fonturile nu sunt încărcate. Contactați administratorul dvs de Server Documente.",
"DE.ApplicationController.errorSubmit": "Remiterea eșuată.",
"DE.ApplicationController.errorTokenExpire": "Token de securitate din document a expirat. Contactați administratorul dvs. de Server Documente.",
diff --git a/apps/documenteditor/embed/locale/ru.json b/apps/documenteditor/embed/locale/ru.json
index 64800605c..aa7c76edd 100644
--- a/apps/documenteditor/embed/locale/ru.json
+++ b/apps/documenteditor/embed/locale/ru.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "Файл защищен паролем и не может быть открыт.",
"DE.ApplicationController.errorFileSizeExceed": "Размер файла превышает ограничение, установленное для вашего сервера. Обратитесь к администратору Сервера документов для получения дополнительной информации.",
"DE.ApplicationController.errorForceSave": "При сохранении файла произошла ошибка. Используйте опцию 'Скачать как', чтобы сохранить файл на жестком диске компьютера или повторите попытку позже.",
+ "DE.ApplicationController.errorInconsistentExt": "При открытии файла произошла ошибка. Содержимое файла не соответствует расширению файла.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "При открытии файла произошла ошибка. Содержимое файла соответствует документам (например, docx), но файл имеет несоответствующее расширение: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "При открытии файла произошла ошибка. Содержимое файла соответствует одному из следующих форматов: pdf/djvu/xps/oxps, но файл имеет несоответствующее расширение: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "При открытии файла произошла ошибка. Содержимое файла соответствует презентациям (например, pptx), но файл имеет несоответствующее расширение: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "При открытии файла произошла ошибка. Содержимое файла соответствует электронным таблицам (например, xlsx), но файл имеет несоответствующее расширение: %1.",
"DE.ApplicationController.errorLoadingFont": "Шрифты не загружены. Пожалуйста, обратитесь к администратору Сервера документов.",
"DE.ApplicationController.errorSubmit": "Не удалось отправить.",
"DE.ApplicationController.errorTokenExpire": "Истек срок действия токена безопасности документа. Пожалуйста, обратитесь к администратору Сервера документов.",
diff --git a/apps/documenteditor/embed/locale/tr.json b/apps/documenteditor/embed/locale/tr.json
index 2b1ad6983..7d6390b56 100644
--- a/apps/documenteditor/embed/locale/tr.json
+++ b/apps/documenteditor/embed/locale/tr.json
@@ -16,6 +16,11 @@
"DE.ApplicationController.errorFilePassProtect": "Döküman şifre korumalı ve açılamadı",
"DE.ApplicationController.errorFileSizeExceed": "Dosya boyutu, sunucunuz için belirlenen limiti aşıyor. Ayrıntılar için lütfen Doküman Sunucusu yöneticinizle iletişime geçin.",
"DE.ApplicationController.errorForceSave": "Dosya kaydedilirken bir hata oluştu. Dosyayı bilgisayarınıza kaydetmek için lütfen 'Farklı İndir' seçeneğini kullanın veya daha sonra tekrar deneyin.",
+ "DE.ApplicationController.errorInconsistentExt": "Dosya açılırken bir hata oluştu. Dosya içeriği, dosya uzantısıyla eşleşmiyor.",
+ "DE.ApplicationController.errorInconsistentExtDocx": "Dosya açılırken bir hata oluştu. Dosya içeriği metin belgelerine (örn. docx) karşılık geliyor, ancak dosyanın uzantısı tutarsız: %1.",
+ "DE.ApplicationController.errorInconsistentExtPdf": "Dosya açılırken bir hata oluştu. Dosya içeriği şu biçimlerden birine karşılık geliyor: pdf/djvu/xps/oxps, ancak dosyanın uzantısı tutarsız: %1.",
+ "DE.ApplicationController.errorInconsistentExtPptx": "Dosya açılırken bir hata oluştu. Dosya içeriği sunumlara karşılık geliyor (ör. pptx), ancak dosyanın uzantısı tutarsız: %1.",
+ "DE.ApplicationController.errorInconsistentExtXlsx": "Dosya açılırken bir hata oluştu. Dosya içeriği e-tablolara (örn. xlsx) karşılık geliyor, ancak dosyanın uzantısı tutarsız: %1.",
"DE.ApplicationController.errorLoadingFont": "Yazı tipleri yüklenmedi. Lütfen Doküman Sunucusu yöneticinize başvurun.",
"DE.ApplicationController.errorSubmit": "Kaydetme başarısız oldu.",
"DE.ApplicationController.errorTokenExpire": "Belge güvenlik belirtecinin süresi doldu. Lütfen Belge Sunucusu yöneticinize başvurun.",
@@ -26,6 +31,7 @@
"DE.ApplicationController.scriptLoadError": "Bağlantı çok yavaş, bileşenlerin bazıları yüklenemedi. Lütfen sayfayı yenileyin.",
"DE.ApplicationController.textAnonymous": "Anonim",
"DE.ApplicationController.textClear": "Tüm alanları temizle",
+ "DE.ApplicationController.textCtrl": "Kontrol",
"DE.ApplicationController.textGotIt": "Anladım",
"DE.ApplicationController.textGuest": "Misafir",
"DE.ApplicationController.textLoadingDocument": "Döküman yükleniyor",
diff --git a/apps/documenteditor/forms/app/controller/ApplicationController.js b/apps/documenteditor/forms/app/controller/ApplicationController.js
index 2f86dcea2..3938469ce 100644
--- a/apps/documenteditor/forms/app/controller/ApplicationController.js
+++ b/apps/documenteditor/forms/app/controller/ApplicationController.js
@@ -301,6 +301,20 @@ define([
config.msg = this.errorTextFormWrongFormat;
break;
+ case Asc.c_oAscError.ID.ConvertationOpenFormat:
+ config.maxwidth = 600;
+ if (errData === 'pdf')
+ config.msg = this.errorInconsistentExtPdf.replace('%1', this.document.fileType || '');
+ else if (errData === 'docx')
+ config.msg = this.errorInconsistentExtDocx.replace('%1', this.document.fileType || '');
+ else if (errData === 'xlsx')
+ config.msg = this.errorInconsistentExtXlsx.replace('%1', this.document.fileType || '');
+ else if (errData === 'pptx')
+ config.msg = this.errorInconsistentExtPptx.replace('%1', this.document.fileType || '');
+ else
+ config.msg = this.errorInconsistentExt;
+ break;
+
default:
config.msg = (typeof id == 'string') ? id : this.errorDefaultMessage.replace('%1', id);
break;
@@ -1909,7 +1923,12 @@ define([
textSaveAsDesktop: 'Save as...',
warnLicenseExp: 'Your license has expired. Please update your license and refresh the page.',
titleLicenseExp: 'License expired',
- errorTextFormWrongFormat: 'The value entered does not match the format of the field.'
+ errorTextFormWrongFormat: 'The value entered does not match the format of the field.',
+ errorInconsistentExtDocx: 'An error has occurred while opening the file. The file content corresponds to text documents (e.g. docx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtXlsx: 'An error has occurred while opening the file. The file content corresponds to spreadsheets (e.g. xlsx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtPptx: 'An error has occurred while opening the file. The file content corresponds to presentations (e.g. pptx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtPdf: 'An error has occurred while opening the file. The file content corresponds to one of the following formats: pdf/djvu/xps/oxps, but the file has the inconsistent extension: %1.',
+ errorInconsistentExt: 'An error has occurred while opening the file. The file content does not match the file extension.'
}, DE.Controllers.ApplicationController));
diff --git a/apps/documenteditor/forms/locale/ca.json b/apps/documenteditor/forms/locale/ca.json
index d87380af1..0b0a1e0b4 100644
--- a/apps/documenteditor/forms/locale/ca.json
+++ b/apps/documenteditor/forms/locale/ca.json
@@ -53,7 +53,7 @@
"Common.UI.Window.yesButtonText": "Sí",
"Common.Views.CopyWarningDialog.textDontShow": "No tornis a mostrar aquest missatge",
"Common.Views.CopyWarningDialog.textMsg": "Les accions de copia, retalla i enganxa utilitzant el menú contextual només es realitzaran dins d'aquesta pestanya de l'editor. Per copiar o enganxar a o des d'aplicacions fora de la pestanya de l'editor utilitza les següents combinacions de teclat:",
- "Common.Views.CopyWarningDialog.textTitle": "Accions de copia, talla i enganxa ",
+ "Common.Views.CopyWarningDialog.textTitle": "Accions de Copiar, Tallar i Enganxar ",
"Common.Views.CopyWarningDialog.textToCopy": "Per copiar",
"Common.Views.CopyWarningDialog.textToCut": "Per tallar",
"Common.Views.CopyWarningDialog.textToPaste": "Per enganxar",
@@ -65,7 +65,7 @@
"Common.Views.ImageFromUrlDialog.textUrl": "Enganxa un URL d'imatge:",
"Common.Views.ImageFromUrlDialog.txtEmpty": "Aquest camp és obligatori",
"Common.Views.ImageFromUrlDialog.txtNotUrl": "Aquest camp hauria de ser un URL amb el format \"http://www.example.com\"",
- "Common.Views.OpenDialog.closeButtonText": "Tanca el fitxer",
+ "Common.Views.OpenDialog.closeButtonText": "Tancar fitxer",
"Common.Views.OpenDialog.txtEncoding": "Codificació",
"Common.Views.OpenDialog.txtIncorrectPwd": "La contrasenya no és correcta.",
"Common.Views.OpenDialog.txtOpenFile": "Introduïu una contrasenya per obrir el fitxer",
@@ -73,11 +73,11 @@
"Common.Views.OpenDialog.txtPreview": "Visualització prèvia",
"Common.Views.OpenDialog.txtProtected": "Un cop introduïu la contrasenya i obriu el fitxer, es restablirà la contrasenya actual del fitxer.",
"Common.Views.OpenDialog.txtTitle": "Tria les opcions %1",
- "Common.Views.OpenDialog.txtTitleProtected": "El fitxer està protegit",
+ "Common.Views.OpenDialog.txtTitleProtected": "Arxiu Protegit",
"Common.Views.SaveAsDlg.textLoading": "S'està carregant",
"Common.Views.SaveAsDlg.textTitle": "Carpeta per desar",
"Common.Views.SelectFileDlg.textLoading": "S'està carregant",
- "Common.Views.SelectFileDlg.textTitle": "Seleccioneu l'origen de les dades",
+ "Common.Views.SelectFileDlg.textTitle": "Selecciona l'origen de les dades",
"Common.Views.ShareDialog.textTitle": "Comparteix l'enllaç",
"Common.Views.ShareDialog.txtCopy": "Copia al porta-retalls",
"Common.Views.ShareDialog.warnCopy": "Error del navegador! Utilitzeu la drecera de teclat [Ctrl] + [C]",
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "El fitxer està protegit amb contrasenya i no es pot obrir.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "La mida del fitxer supera el límit establert pel servidor. Contacteu amb l'administrador del servidor de documents per obtenir més informació.",
"DE.Controllers.ApplicationController.errorForceSave": "S'ha produït un error en desar el fitxer. Utilitzeu l'opció \"Baixa-ho com a\" per desar el fitxer al disc dur de l’ordinador o torneu-ho a provar més endavant.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "S'ha produït un error en obrir el fitxer. El contingut del fitxer no es correspon amb la seva extensió.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "S'ha produït un error en obrir el fitxer. El contingut del fitxer correspon a documents de text (per exemple, docx), però el fitxer té l'extensió incoherent: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "S'ha produït un error en obrir el fitxer. El contingut del fitxer correspon a un dels formats següents: pdf/djvu/xps/oxps, però el fitxer té l'extensió incoherent: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "S'ha produït un error en obrir el fitxer. El contingut del fitxer correspon a presentacions (per exemple, pptx), però el fitxer té l'extensió incongruent: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "S'ha produït un error en obrir el fitxer. El contingut del fitxer correspon a full de càlcul (per exemple, xlsx), però el fitxer té l'extensió incoherent: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "No s'han carregat les lletres tipogràfiques. Contacteu amb l'administrador del Servidor de Documents.",
"DE.Controllers.ApplicationController.errorServerVersion": "S'ha actualitzat la versió de l'editor. Es tornarà a carregar la pàgina per aplicar els canvis.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "La sessió d’edició del document ha caducat. Torneu a carregar la pàgina.",
diff --git a/apps/documenteditor/forms/locale/de.json b/apps/documenteditor/forms/locale/de.json
index 572e434de..b10b424a5 100644
--- a/apps/documenteditor/forms/locale/de.json
+++ b/apps/documenteditor/forms/locale/de.json
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Das Dokument ist kennwortgeschützt und kann nicht geöffnet werden.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "Die Dateigröße überschreitet die für Ihren Server festgelegte Einschränkung. Weitere Informationen können Sie von Ihrem Document Server-Administrator erhalten.",
"DE.Controllers.ApplicationController.errorForceSave": "Beim Speichern der Datei ist ein Fehler aufgetreten. Verwenden Sie die Option \"Herunterladen als\", um die Datei auf Ihrer Computerfestplatte zu speichern oder versuchen Sie es später erneut.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei stimmt nicht mit der Dateierweiterung überein.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei entspricht Textdokumenten (z.B. docx), aber die Datei hat die inkonsistente Erweiterung: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei entspricht einem der folgenden Formate: pdf/djvu/xps/oxps, aber die Datei hat die inkonsistente Erweiterung: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei entspricht Präsentationen (z.B. pptx), aber die Datei hat die inkonsistente Erweiterung: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Beim Öffnen der Datei ist ein Fehler aufgetreten. Der Inhalt der Datei entspricht Tabellenkalkulationen (z.B. xlsx), aber die Datei hat die inkonsistente Erweiterung: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Schriftarten nicht hochgeladen. Bitte wenden Sie sich an Administratoren von Ihrem Document Server.",
"DE.Controllers.ApplicationController.errorServerVersion": "Version des Editors wurde aktualisiert. Die Seite wird neu geladen, um die Änderungen zu übernehmen.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "Die Bearbeitungssitzung des Dokumentes ist abgelaufen. Laden Sie die Seite neu.",
diff --git a/apps/documenteditor/forms/locale/el.json b/apps/documenteditor/forms/locale/el.json
index 2d89e8f08..7b7efc5c0 100644
--- a/apps/documenteditor/forms/locale/el.json
+++ b/apps/documenteditor/forms/locale/el.json
@@ -65,7 +65,7 @@
"Common.Views.ImageFromUrlDialog.textUrl": "Επικόλληση URL εικόνας:",
"Common.Views.ImageFromUrlDialog.txtEmpty": "Αυτό το πεδίο είναι υποχρεωτικό",
"Common.Views.ImageFromUrlDialog.txtNotUrl": "Αυτό το πεδίο πρέπει να είναι διεύθυνση URL με τη μορφή «http://www.example.com»",
- "Common.Views.OpenDialog.closeButtonText": "Κλείσιμο Αρχείου",
+ "Common.Views.OpenDialog.closeButtonText": "Κλείσιμο αρχείου",
"Common.Views.OpenDialog.txtEncoding": "Κωδικοποίηση",
"Common.Views.OpenDialog.txtIncorrectPwd": "Το συνθηματικό είναι εσφαλμένο.",
"Common.Views.OpenDialog.txtOpenFile": "Εισάγετε συνθηματικό για να ανοίξετε το αρχείο",
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Το αρχείο προστατεύεται με συνθηματικό και δεν μπορεί να ανοίξει.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "Το μέγεθος του αρχείου υπερβαίνει το όριο που έχει οριστεί για τον διακομιστή σας. Παρακαλούμε επικοινωνήστε με τον διαχειριστή του διακομιστή εγγράφων για λεπτομέρειες.",
"DE.Controllers.ApplicationController.errorForceSave": "Παρουσιάστηκε σφάλμα κατά την αποθήκευση του αρχείου. Χρησιμοποιήστε την επιλογή «Λήψη ως» για να αποθηκεύσετε το αρχείο στον σκληρό δίσκο του υπολογιστή σας ή δοκιμάστε ξανά αργότερα.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Προέκυψε σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου δεν αντιστοιχούν στην κατάληξή του ονόματός του.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Προέκυψε σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου αντιστοιχούν σε αρχεία κειμένου (π.χ. docx), αλλά το αρχείο έχει ασύμφωνη κατάληξη: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Προέκυψε σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου αντιστοιχούν σε μια από τις ακόλουθες μορφές: pdf/djvu/xps/oxps, αλλά το αρχείο έχει ασύμφωνη κατάληξη: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Προέκυψε σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου αντιστοιχούν σε παρουσιάσεις (π.χ. pptx), αλλά το αρχείο έχει ασύμφωνη κατάληξη: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Προέκυψε σφάλμα κατά το άνοιγμα του αρχείου. Τα περιεχόμενα του αρχείου αντιστοιχούν σε υπολογιστικά φύλλα (π.χ. xlsx), αλλά το αρχείο έχει ασύμφωνη κατάληξη: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Οι γραμματοσειρές δεν έχουν φορτωθεί. Παρακαλούμε επικοινωνήστε με τον διαχειριστή του Εξυπηρετητή Εγγράφων σας.",
"DE.Controllers.ApplicationController.errorServerVersion": "Αναβαθμίστηκε η έκδοση του συντάκτη. Η σελίδα θα φορτωθεί ξανά για να εφαρμοστούν οι αλλαγές.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "Η σύνοδος επεξεργασίας του εγγράφου έληξε. Παρακαλούμε φορτώστε ξανά τη σελίδα.",
diff --git a/apps/documenteditor/forms/locale/en.json b/apps/documenteditor/forms/locale/en.json
index 35aae0701..b0e29eb68 100644
--- a/apps/documenteditor/forms/locale/en.json
+++ b/apps/documenteditor/forms/locale/en.json
@@ -53,7 +53,7 @@
"Common.UI.Window.yesButtonText": "Yes",
"Common.Views.CopyWarningDialog.textDontShow": "Don't show this message again",
"Common.Views.CopyWarningDialog.textMsg": "Copy, cut and paste actions using context menu actions will be performed within this editor tab only. To copy or paste to or from applications outside the editor tab use the following keyboard combinations:",
- "Common.Views.CopyWarningDialog.textTitle": "Copy, Cut and Paste Actions",
+ "Common.Views.CopyWarningDialog.textTitle": "Copy, Cut and Paste actions",
"Common.Views.CopyWarningDialog.textToCopy": "for Copy",
"Common.Views.CopyWarningDialog.textToCut": "for Cut",
"Common.Views.CopyWarningDialog.textToPaste": "for Paste",
@@ -65,7 +65,7 @@
"Common.Views.ImageFromUrlDialog.textUrl": "Paste an image URL:",
"Common.Views.ImageFromUrlDialog.txtEmpty": "This field is required",
"Common.Views.ImageFromUrlDialog.txtNotUrl": "This field should be a URL in the \"http://www.example.com\" format",
- "Common.Views.OpenDialog.closeButtonText": "Close File",
+ "Common.Views.OpenDialog.closeButtonText": "Close file",
"Common.Views.OpenDialog.txtEncoding": "Encoding ",
"Common.Views.OpenDialog.txtIncorrectPwd": "Password is incorrect.",
"Common.Views.OpenDialog.txtOpenFile": "Enter a password to open the file",
@@ -73,12 +73,12 @@
"Common.Views.OpenDialog.txtPreview": "Preview",
"Common.Views.OpenDialog.txtProtected": "Once you enter the password and open the file, the current password to the file will be reset.",
"Common.Views.OpenDialog.txtTitle": "Choose %1 options",
- "Common.Views.OpenDialog.txtTitleProtected": "Protected File",
+ "Common.Views.OpenDialog.txtTitleProtected": "Protected file",
"Common.Views.SaveAsDlg.textLoading": "Loading",
"Common.Views.SaveAsDlg.textTitle": "Folder for save",
"Common.Views.SelectFileDlg.textLoading": "Loading",
- "Common.Views.SelectFileDlg.textTitle": "Select Data Source",
- "Common.Views.ShareDialog.textTitle": "Share Link",
+ "Common.Views.SelectFileDlg.textTitle": "Select data source",
+ "Common.Views.ShareDialog.textTitle": "Share link",
"Common.Views.ShareDialog.txtCopy": "Copy to clipboard",
"Common.Views.ShareDialog.warnCopy": "Browser's error! Use keyboard shortcut [Ctrl] + [C]",
"DE.Controllers.ApplicationController.convertationErrorText": "Conversion failed.",
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "The file size exceeds the limitation set for your server. Please contact your Document Server administrator for details.",
"DE.Controllers.ApplicationController.errorForceSave": "An error occurred while saving the file. Please use the 'Download as' option to save the file to your computer hard drive or try again later.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "An error has occurred while opening the file. The file content does not match the file extension.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "An error has occurred while opening the file. The file content corresponds to text documents (e.g. docx), but the file has the inconsistent extension: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "An error has occurred while opening the file. The file content corresponds to one of the following formats: pdf/djvu/xps/oxps, but the file has the inconsistent extension: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "An error has occurred while opening the file. The file content corresponds to presentations (e.g. pptx), but the file has the inconsistent extension: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "An error has occurred while opening the file. The file content corresponds to spreadsheets (e.g. xlsx), but the file has the inconsistent extension: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Fonts are not loaded. Please contact your Document Server administrator.",
"DE.Controllers.ApplicationController.errorServerVersion": "The editor version has been updated. The page will be reloaded to apply the changes.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "The document editing session has expired. Please reload the page.",
diff --git a/apps/documenteditor/forms/locale/es.json b/apps/documenteditor/forms/locale/es.json
index b0d394af1..67aa5c0fb 100644
--- a/apps/documenteditor/forms/locale/es.json
+++ b/apps/documenteditor/forms/locale/es.json
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "El archivo está protegido por una contraseña y no puede ser abierto.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "El tamaño del archivo excede el límite establecido para su servidor. Por favor póngase en contacto con el administrador del Servidor de Documentos para obtener más información.",
"DE.Controllers.ApplicationController.errorForceSave": "Ha ocurrido un error al guardar el archivo. Por favor, use la opción \"Descargar como\" para guardar el archivo en el disco duro de su ordenador o inténtelo de nuevo más tarde.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Se ha producido un error al abrir el archivo. El contenido del archivo no coincide con la extensión del mismo.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Se ha producido un error al abrir el archivo. El contenido del archivo corresponde a documentos de texto (por ejemplo, docx), pero el archivo tiene extensión inconsistente: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Se ha producido un error al abrir el archivo. El contenido del archivo corresponde a uno de los siguientes formatos: pdf/djvu/xps/oxps, pero el archivo tiene extensión inconsistente: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Se ha producido un error al abrir el archivo. El contenido del archivo corresponde a presentaciones (por ejemplo, pptx), pero el archivo tiene extensión inconsistente: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Se ha producido un error al abrir el archivo. El contenido del archivo corresponde a hojas de cálculo (por ejemplo, xlsx), pero el archivo tiene extensión inconsistente: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Las fuentes no están cargadas. Por favor, póngase en contacto con el administrador del Document Server.",
"DE.Controllers.ApplicationController.errorServerVersion": "La versión del editor ha sido actualizada. La página será recargada para aplicar los cambios.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "La sesión de editar el documento ha expirado. Por favor, recargue la página.",
diff --git a/apps/documenteditor/forms/locale/eu.json b/apps/documenteditor/forms/locale/eu.json
index 5e6d08263..b2418c8b6 100644
--- a/apps/documenteditor/forms/locale/eu.json
+++ b/apps/documenteditor/forms/locale/eu.json
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Fitxategia pasahitzez babestua dago eta ezin da ireki.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "Fitxategiaren tamainak zure zerbitzarirako ezarritako muga gainditzen du. Jarri harremanetan dokumentu-zerbitzariaren administratzailearekin informazio gehiago lortzeko.",
"DE.Controllers.ApplicationController.errorForceSave": "Errore bat gertatu da dokumentua gordetzean. Erabili 'Deskargatu honela' aukera fitxategia zure ordenagailuko disko gogorrera gordetzeko edo saiatu berriro geroago.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia eta luzapena ez datoz bat.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia testu-dokumentu bati dagokio (adibidez, docx), baina fitxategiaren luzapena ez dator bat: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia ondorengo formatuetako bati dagokio: pdf/djvu/xps/oxps, baina fitxategiaren luzapena ez dator bat: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia aurkezpen bati dagokio (adibidez, pptx), baina fitxategiaren luzapena ez dator bat: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Errore bat gertatu da fitxategia irekitzean. Fitxategiaren edukia kalkulu-orri bati dagokio (adibidez, xlsx), baina fitxategiaren luzapena ez dator bat: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Letra-tipoak ez dira kargatu. Jarri zure dokumentu-zerbitzariaren administratzailearekin harremanetan.",
"DE.Controllers.ApplicationController.errorServerVersion": "Editorearen bertsioa eguneratu da. Orria berriz kargatuko da aldaketak aplikatzeko.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "Dokumentua editatzeko saioa iraungi da. Kargatu berriro orria.",
diff --git a/apps/documenteditor/forms/locale/fr.json b/apps/documenteditor/forms/locale/fr.json
index ac69e85f0..94d258b93 100644
--- a/apps/documenteditor/forms/locale/fr.json
+++ b/apps/documenteditor/forms/locale/fr.json
@@ -53,7 +53,7 @@
"Common.UI.Window.yesButtonText": "Oui",
"Common.Views.CopyWarningDialog.textDontShow": "Ne plus afficher ce message",
"Common.Views.CopyWarningDialog.textMsg": "Les fonctions de copier, couper et coller avec des commandes de menu contextuel ne peuvent être effectuées que dans cet onglet de l'éditeur. Pour copier ou coller vers ou depuis des applications en dehors de l'onglet d'éditeur, utilisez les raccourcis clavier suivants :",
- "Common.Views.CopyWarningDialog.textTitle": "Fonctions de Copier, Couper et Coller",
+ "Common.Views.CopyWarningDialog.textTitle": "Actions copier, couper et coller",
"Common.Views.CopyWarningDialog.textToCopy": "pour Copier",
"Common.Views.CopyWarningDialog.textToCut": "pour Couper",
"Common.Views.CopyWarningDialog.textToPaste": "pour Coller",
@@ -65,7 +65,7 @@
"Common.Views.ImageFromUrlDialog.textUrl": "Collez l'URL de l'image :",
"Common.Views.ImageFromUrlDialog.txtEmpty": "Ce champ est obligatoire",
"Common.Views.ImageFromUrlDialog.txtNotUrl": "Ce champ doit être une URL au format \"http://www.example.com\"",
- "Common.Views.OpenDialog.closeButtonText": "Fermer le fichier",
+ "Common.Views.OpenDialog.closeButtonText": "Fermer fichier",
"Common.Views.OpenDialog.txtEncoding": "Codage",
"Common.Views.OpenDialog.txtIncorrectPwd": "Le mot de passe est incorrect.",
"Common.Views.OpenDialog.txtOpenFile": "Entrez le mot de passe pour ouvrir le fichier",
@@ -78,7 +78,7 @@
"Common.Views.SaveAsDlg.textTitle": "Dossier pour enregistrement",
"Common.Views.SelectFileDlg.textLoading": "Chargement",
"Common.Views.SelectFileDlg.textTitle": "Sélectionner la source de données",
- "Common.Views.ShareDialog.textTitle": "Partager un lien",
+ "Common.Views.ShareDialog.textTitle": "Partager le lien",
"Common.Views.ShareDialog.txtCopy": "Copier dans le presse-papiers",
"Common.Views.ShareDialog.warnCopy": "Erreur du navigateur ! Utilisez le raccourci clavier [Ctrl] + [C]",
"DE.Controllers.ApplicationController.convertationErrorText": "Échec de la conversion.",
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Le fichier est protégé par le mot de passe et ne peut pas être ouvert.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "La taille du fichier dépasse les limites établies sur votre serveur. Veuillez contacter votre administrateur de Document Server pour obtenir plus d'informations. ",
"DE.Controllers.ApplicationController.errorForceSave": "Une erreur est survenue lors de l'enregistrement du fichier. Veuillez utiliser l'option «Télécharger en tant que» pour enregistrer le fichier sur le disque dur de votre ordinateur ou réessayer plus tard.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier ne correspond pas à l'extension du fichier.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier correspond à des documents texte (par exemple docx), mais le fichier a une extension incohérente : %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier correspond à l'un des formats suivants : pdf/djvu/xps/oxps, mais le fichier a l'extension incohérente : %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier correspond à des présentations (par exemple pptx), mais le fichier a une extension incohérente : %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Une erreur s'est produite lors de l'ouverture du fichier. Le contenu du fichier correspond à des feuilles de calcul (par exemple xlsx), mais le fichier a une extension incohérente : %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Les polices ne sont pas téléchargées. Veuillez contacter l'administrateur de Document Server.",
"DE.Controllers.ApplicationController.errorServerVersion": "La version de l'éditeur a été mise à jour. La page sera rechargée pour appliquer les modifications.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "La session d'édition du document a expiré. Veuillez recharger la page.",
diff --git a/apps/documenteditor/forms/locale/hy.json b/apps/documenteditor/forms/locale/hy.json
index f62b524a0..3fbb724ec 100644
--- a/apps/documenteditor/forms/locale/hy.json
+++ b/apps/documenteditor/forms/locale/hy.json
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Ֆայլն ունի գաղտնաբառ և չի կարող բացվել։",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "Ֆայլի չափը գերազանցում է ձեր սերվերի համար սահմանված սահմանափակումը: Մանրամասների համար խնդրում ենք կապվել Ձեր փաստաթղթերի սերվերի ադմինիստրատորի հետ:",
"DE.Controllers.ApplicationController.errorForceSave": "Սխալ է տեղի ունեցել ֆայլը պահելիս:Խնդրում ենք օգտագործել «Ներբեռնել որպես» տարբերակը՝ ֆայլը ձեր համակարգչի կոշտ սկավառակում պահելու համար կամ ավելի ուշ նորից փորձեք:",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Ֆայլը բացելիս սխալ է տեղի ունեցել: Ֆայլի բովանդակությունը չի համապատասխանում ֆայլի ընդլայնմանը:",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Ֆայլը բացելիս սխալ է տեղի ունեցել: Ֆայլի բովանդակությունը համապատասխանում է տեքստային փաստաթղթերին (օրինակ՝ docx), սակայն ֆայլն ունի անհամապատասխան ընդլայնում՝ %1:",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Ֆայլը բացելիս սխալ է տեղի ունեցել:Ֆայլի բովանդակությունը համապատասխանում է հետևյալ ձևաչափերից մեկին՝pdf/djvu/xps/oxps,բայց ֆայլն ունի անհամապատասխան ընդլայնում. %1:",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Ֆայլը բացելիս սխալ է տեղի ունեցել: Ֆայլի բովանդակությունը համապատասխանում է ներկայացումներին (օրինակ՝ pptx), սակայն ֆայլն ունի անհամապատասխան ընդլայնում. %1:",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Ֆայլը բացելիս սխալ է տեղի ունեցել: Ֆայլի բովանդակությունը համապատասխանում է աղյուսակներին (օր. xlsx), սակայն ֆայլն ունի անհամապատասխան ընդլայնում. %1:",
"DE.Controllers.ApplicationController.errorLoadingFont": "Տառատեսակները բեռնված չեն: Խնդրում ենք կապվել ձեր փաստաթղթերի սերվերի ադմինիստրատորի հետ:",
"DE.Controllers.ApplicationController.errorServerVersion": "Խմբագրիչի տարբերակը արդիացվել է։ Որպեսզի փոփոխումները տեղի ունենան, էջը նորից կբեռնվի։",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "Փաստաթղթի խմբագրման գործաժամը սպառվել է։ Նորի՛ց բեռնեք էջը։",
diff --git a/apps/documenteditor/forms/locale/id.json b/apps/documenteditor/forms/locale/id.json
index 43700c0d1..15e9db121 100644
--- a/apps/documenteditor/forms/locale/id.json
+++ b/apps/documenteditor/forms/locale/id.json
@@ -53,7 +53,7 @@
"Common.UI.Window.yesButtonText": "Ya",
"Common.Views.CopyWarningDialog.textDontShow": "Jangan tampilkan pesan ini lagi",
"Common.Views.CopyWarningDialog.textMsg": "Copy, cut, dan paste hanya akan dilakukan di tab editor ini. Untuk copy atau paste dari dan ke aplikasi luar tab editor, gunakan kombinasi keyboard ini:",
- "Common.Views.CopyWarningDialog.textTitle": "Salin, Potong dan Tempel",
+ "Common.Views.CopyWarningDialog.textTitle": "Aksi Salin, Potong, dan Tempel",
"Common.Views.CopyWarningDialog.textToCopy": "untuk Salin",
"Common.Views.CopyWarningDialog.textToCut": "untuk Potong",
"Common.Views.CopyWarningDialog.textToPaste": "untuk Tempel",
@@ -63,9 +63,9 @@
"Common.Views.EmbedDialog.txtCopy": "Disalin ke papan klip",
"Common.Views.EmbedDialog.warnCopy": "Browser eror! Gunakan shortcut keyboard [Ctrl] + [C]",
"Common.Views.ImageFromUrlDialog.textUrl": "Tempel URL gambar:",
- "Common.Views.ImageFromUrlDialog.txtEmpty": "Kolom ini harus diisi",
- "Common.Views.ImageFromUrlDialog.txtNotUrl": "Bagian ini harus berupa URL dengn format \"http://www.contoh.com\"",
- "Common.Views.OpenDialog.closeButtonText": "Tutup File",
+ "Common.Views.ImageFromUrlDialog.txtEmpty": "Ruas ini diperlukan",
+ "Common.Views.ImageFromUrlDialog.txtNotUrl": "Ruas ini harus berupa URL dengan format \"http://www.contoh.com\"",
+ "Common.Views.OpenDialog.closeButtonText": "Tutup file",
"Common.Views.OpenDialog.txtEncoding": "Enkoding",
"Common.Views.OpenDialog.txtIncorrectPwd": "Password salah.",
"Common.Views.OpenDialog.txtOpenFile": "Masukkan kata sandi untuk buka file",
@@ -73,7 +73,7 @@
"Common.Views.OpenDialog.txtPreview": "Pratinjau",
"Common.Views.OpenDialog.txtProtected": "Jika Anda memasukkan password dan membuka file, password file saat ini akan di reset.",
"Common.Views.OpenDialog.txtTitle": "Pilih %1 opsi",
- "Common.Views.OpenDialog.txtTitleProtected": "File yang Diproteksi",
+ "Common.Views.OpenDialog.txtTitleProtected": "File terproteksi",
"Common.Views.SaveAsDlg.textLoading": "Memuat",
"Common.Views.SaveAsDlg.textTitle": "Folder untuk simpan",
"Common.Views.SelectFileDlg.textLoading": "Memuat",
@@ -96,13 +96,18 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Dokumen dilindungi dengan kata sandi dan tidak dapat dibuka.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "Ukuran file melewati batas server Anda. Silakan hubungi admin Server Dokumen Anda untuk detail.",
"DE.Controllers.ApplicationController.errorForceSave": "Ada kesalahan saat menyimpan file. Silakan gunakan opsi 'Download sebagai' untuk menyimpan file ke komputer Anda dan coba lagi.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Terjadi kesalahan saat membuka file. Isi file tidak cocok dengan ekstensi file.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Terjadi kesalahan saat membuka file. Isi file berhubungan dengan dokumen teks (mis. docx), tapi file memiliki ekstensi yang tidak konsisten: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Sebuah kesalahan terjadi ketika membuka file. Isi file berhubungan dengan satu dari format berikut: pdf/djvu/xps/oxps, tapi file memiliki ekstensi yang tidak konsisten: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Terjadi kesalahan saat membuka file. Isi file berhubungan dengan presentasi (mis. pptx), tapi file memiliki ekstensi yang tidak konsisten: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Terjadi kesalahan saat membuka file. Isi file berhubungan dengan spreadsheet (mis. xlsx), tapi file memiliki ekstensi yang tidak konsisten: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Font tidak bisa dimuat. Silakan kontak admin Server Dokumen Anda.",
"DE.Controllers.ApplicationController.errorServerVersion": "Versi editor sudah di update. Halaman akan dimuat ulang untuk menerapkan perubahan.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "Waktu edit dokumen sudah selesai. Silakan muat ulang halaman.",
"DE.Controllers.ApplicationController.errorSessionIdle": "Dokumen sudah lama tidak diedit. Silakan muat ulang halaman.",
"DE.Controllers.ApplicationController.errorSessionToken": "Koneksi ke server terganggu. Silakan muat ulang halaman.",
"DE.Controllers.ApplicationController.errorSubmit": "Submit gagal.",
- "DE.Controllers.ApplicationController.errorTextFormWrongFormat": "Nilai yang dimasukkan tidak cocok dengan format bidang.",
+ "DE.Controllers.ApplicationController.errorTextFormWrongFormat": "Nilai yang dimasukkan tidak cocok dengan format ruas.",
"DE.Controllers.ApplicationController.errorToken": "Token keamanan dokumen tidak dibentuk dengan tepat. Silakan hubungi admin Server Dokumen Anda.",
"DE.Controllers.ApplicationController.errorTokenExpire": "Token keamanan dokumen sudah kadaluwarsa. Silakan hubungi admin Server Dokumen Anda.",
"DE.Controllers.ApplicationController.errorUpdateVersion": "Versi file telah diubah. Halaman tidak akan dimuat ulang.",
@@ -113,11 +118,11 @@
"DE.Controllers.ApplicationController.mniImageFromStorage": "Gambar dari Penyimpanan",
"DE.Controllers.ApplicationController.mniImageFromUrl": "Gambar dari URL",
"DE.Controllers.ApplicationController.notcriticalErrorTitle": "Peringatan",
- "DE.Controllers.ApplicationController.openErrorText": "Eror ketika membuka file.",
- "DE.Controllers.ApplicationController.saveErrorText": "Eror ketika menyimpan file.",
+ "DE.Controllers.ApplicationController.openErrorText": "Kesalahan terjadi ketika membuka file.",
+ "DE.Controllers.ApplicationController.saveErrorText": "Terjadi kesalahan ketika menyimpan file.",
"DE.Controllers.ApplicationController.saveErrorTextDesktop": "File tidak bisa disimpan atau dibuat. Alasan yang mungkin adalah: 1. File hanya bisa dibaca. 2. File sedang diedit user lain. 3. Memori penuh atau terkorupsi.",
"DE.Controllers.ApplicationController.scriptLoadError": "Koneksi terlalu lambat dan beberapa komponen tidak bisa dibuka. Silakan muat ulang halaman.",
- "DE.Controllers.ApplicationController.textAnonymous": "Tamu",
+ "DE.Controllers.ApplicationController.textAnonymous": "Anonim",
"DE.Controllers.ApplicationController.textBuyNow": "Kunjungi website",
"DE.Controllers.ApplicationController.textCloseTip": "Klik untuk menutup tip.",
"DE.Controllers.ApplicationController.textContactUs": "Hubungi sales",
@@ -126,10 +131,10 @@
"DE.Controllers.ApplicationController.textLoadingDocument": "Memuat dokumen",
"DE.Controllers.ApplicationController.textNoLicenseTitle": "Batas lisensi sudah tercapai",
"DE.Controllers.ApplicationController.textOf": "dari",
- "DE.Controllers.ApplicationController.textRequired": "Isi semua area yang dibutuhkan untuk mengirim form.",
+ "DE.Controllers.ApplicationController.textRequired": "Isi semua ruas yang dibutuhkan untuk mengirim formulir.",
"DE.Controllers.ApplicationController.textSaveAs": "Simpan sebagai PDF",
"DE.Controllers.ApplicationController.textSaveAsDesktop": "Simpan sebagai",
- "DE.Controllers.ApplicationController.textSubmited": "Form berhasil disubmit Klik untuk menutup tips",
+ "DE.Controllers.ApplicationController.textSubmited": "Formulir berhasil dikirim Klik untuk menutup tips",
"DE.Controllers.ApplicationController.titleLicenseExp": "Lisensi kadaluwarsa",
"DE.Controllers.ApplicationController.titleServerVersion": "Editor mengupdate",
"DE.Controllers.ApplicationController.titleUpdateVersion": "Versi telah diubah",
@@ -153,12 +158,12 @@
"DE.Controllers.ApplicationController.warnLicenseUsersExceeded": "Anda sudah mencapai batas user untuk %1 editor. Hubungi admin Anda untuk mempelajari lebih lanjut.",
"DE.Controllers.ApplicationController.warnNoLicense": "Anda sudah mencapai batas untuk koneksi bersamaan ke %1 editor. Dokumen ini akan dibuka untuk dilihat saja. Hubungi %1 tim sales untuk syarat personal upgrade.",
"DE.Controllers.ApplicationController.warnNoLicenseUsers": "Anda sudah mencapai batas user untuk %1 editor. Hubungi %1 tim sales untuk syarat personal upgrade.",
- "DE.Views.ApplicationView.textClear": "Bersihkan Semua Area",
+ "DE.Views.ApplicationView.textClear": "Bersihkan Semua Ruas",
"DE.Views.ApplicationView.textCopy": "Salin",
"DE.Views.ApplicationView.textCut": "Potong",
"DE.Views.ApplicationView.textFitToPage": "Sesuaikan Halaman",
"DE.Views.ApplicationView.textFitToWidth": "Sesuaikan Lebar",
- "DE.Views.ApplicationView.textNext": "Area Berikutnya",
+ "DE.Views.ApplicationView.textNext": "Ruas Berikutnya",
"DE.Views.ApplicationView.textPaste": "Tempel",
"DE.Views.ApplicationView.textPrintSel": "Print Pilihan",
"DE.Views.ApplicationView.textRedo": "Ulangi",
diff --git a/apps/documenteditor/forms/locale/ja.json b/apps/documenteditor/forms/locale/ja.json
index f30908fb7..9eeb607cb 100644
--- a/apps/documenteditor/forms/locale/ja.json
+++ b/apps/documenteditor/forms/locale/ja.json
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "ドキュメントがパスワードで保護されているため開くことができません",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "ファイルサイズがサーバーで設定された制限を超過しています。 Documentサーバー管理者に詳細をお問い合わせください。",
"DE.Controllers.ApplicationController.errorForceSave": "文書の保存中にエラーが発生しました。コンピューターにファイルを保存するために、「...としてダウンロード」を使用し、または後で再お試しください。",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "ファイルを開くときにエラーが発生しました。 ファイルの内容がファイルの拡張子と一致しません。",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "ファイルを開くときにエラーが発生しました。 ファイルの内容はドキュメント (docx など) に対応していますが、ファイルの拡張子が一致していません: %1",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "ファイルを開くときにエラーが発生しました。 ファイルの内容は次のいずれかの形式に対応しています: pdf/djvu/xps/oxps が、ファイルの拡張子が一致していません: %1",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "ファイルを開くときにエラーが発生しました。 ファイルの内容はプレゼンテーション (pptx など) に対応していますが、ファイルの拡張子が一致していません: %1",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "ファイルを開くときにエラーが発生しました。 ファイルの内容はスプレッドシート (xlsx など) に対応していますが、ファイルの拡張子が一致していません: %1",
"DE.Controllers.ApplicationController.errorLoadingFont": "フォントがダウンロードされませんでした。 文書サーバのアドミニストレータを連絡してください。",
"DE.Controllers.ApplicationController.errorServerVersion": "エディターのバージョンが更新されました。 変更を適用するために、ページが再読み込みされます。",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "ドキュメント編集セッションが終了しました。 ページをリロードしてください。",
@@ -103,8 +108,8 @@
"DE.Controllers.ApplicationController.errorSessionToken": "サーバーとの接続が中断されました。このページをリロードしてください。",
"DE.Controllers.ApplicationController.errorSubmit": "送信に失敗しました。",
"DE.Controllers.ApplicationController.errorTextFormWrongFormat": "入力された値がフィールドのフォーマットと一致しません。",
- "DE.Controllers.ApplicationController.errorToken": "ドキュメント・セキュリティ・トークンが正しく形成されていません。 ドキュメントサーバーの管理者にご連絡ください。",
- "DE.Controllers.ApplicationController.errorTokenExpire": "ドキュメント・セキュリティ・トークンの有効期限が切れています。 ドキュメントサーバーの管理者に連絡してください。",
+ "DE.Controllers.ApplicationController.errorToken": "ドキュメントセキュリティトークンが正しく形成されていません。 ドキュメントサーバーの管理者にご連絡ください。",
+ "DE.Controllers.ApplicationController.errorTokenExpire": "ドキュメントセキュリティトークンの有効期限が切れています。 ドキュメントサーバーの管理者に連絡してください。",
"DE.Controllers.ApplicationController.errorUpdateVersion": "ファイルが変更されました。ページがリロードされます。",
"DE.Controllers.ApplicationController.errorUpdateVersionOnDisconnect": "インターネット接続が復旧し、ファイルのバージョンが更新されています。 作業を継続する前に、ファイルをダウンロードするか内容をコピーして変更が失われていないことを確認してから、このページを再読み込みしてください。",
"DE.Controllers.ApplicationController.errorUserDrop": "今、ファイルにアクセスすることはできません。",
@@ -139,7 +144,7 @@
"DE.Controllers.ApplicationController.txtClose": "閉じる",
"DE.Controllers.ApplicationController.txtEmpty": "(空)",
"DE.Controllers.ApplicationController.txtEnterDate": "日付を入力します",
- "DE.Controllers.ApplicationController.txtPressLink": "リンクをクリックしてCTRLを押してください",
+ "DE.Controllers.ApplicationController.txtPressLink": "Ctrlを押しながらリンクをクリック",
"DE.Controllers.ApplicationController.txtUntitled": "無題",
"DE.Controllers.ApplicationController.unknownErrorText": "不明なエラー",
"DE.Controllers.ApplicationController.unsupportedBrowserErrorText": "お使いのブラウザはサポートされていません。",
diff --git a/apps/documenteditor/forms/locale/pt-pt.json b/apps/documenteditor/forms/locale/pt-pt.json
index ceaa7ec48..c7b620728 100644
--- a/apps/documenteditor/forms/locale/pt-pt.json
+++ b/apps/documenteditor/forms/locale/pt-pt.json
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "O ficheiro está protegido por palavra-passe e não pode ser aberto.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "O tamanho do documento excede o limite permitido pelo servidor. Contacte o administrador do servidor de documentos para mais informações.",
"DE.Controllers.ApplicationController.errorForceSave": "Ocorreu um erro ao guardar o ficheiro. Utilize a opção 'Descarregar como' para guardar o ficheiro no computador ou tente mais tarde.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro não coincide com a sua extensão.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro corresponde a um documento de texto (doc, docx...), mas a extensão de ficheiro não é consistente: %1",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro corresponde a um dos seguintes formatos: pdf/djvu/xps/oxps, mas a extensão de ficheiro não é consistente: %1",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro corresponde a uma apresentação (ppt, pptx...), mas a extensão de ficheiro não é consistente: %1",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Ocorreu um erro ao abrir o ficheiro. O conteúdo do ficheiro corresponde a uma folha de cálculo (xls, xlsx...), mas a extensão de ficheiro não é consistente: %1",
"DE.Controllers.ApplicationController.errorLoadingFont": "Os tipos de letra não foram carregados. Contacte o administrador do servidor de documentos.",
"DE.Controllers.ApplicationController.errorServerVersion": "A versão do editor foi atualizada. A página será recarregada para aplicar as alterações.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "A sessão de edição expirou. Tente recarregar a página.",
diff --git a/apps/documenteditor/forms/locale/pt.json b/apps/documenteditor/forms/locale/pt.json
index 154a25d24..8ac11aff8 100644
--- a/apps/documenteditor/forms/locale/pt.json
+++ b/apps/documenteditor/forms/locale/pt.json
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "O documento é protegido por senha e não pode ser aberto.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "O tamanho do arquivo excede o limite de seu servidor. Por favor, contate seu administrador de Servidor de Documentos para detalhes.",
"DE.Controllers.ApplicationController.errorForceSave": "Ocorreu um erro na gravação. Favor utilizar a opção 'Transferir como' para gravar o arquivo em seu computador ou tente novamente mais tarde.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo não corresponde à extensão do arquivo.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo corresponde a documentos de texto (por exemplo, docx), mas o arquivo tem a extensão inconsistente: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo corresponde a um dos seguintes formatos: pdf/djvu/xps/oxps, mas o arquivo tem a extensão inconsistente: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo corresponde a apresentações (por exemplo, pptx), mas o arquivo tem a extensão inconsistente: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Ocorreu um erro ao abrir o arquivo. O conteúdo do arquivo corresponde a planilhas (por exemplo, xlsx), mas o arquivo tem a extensão inconsistente: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "As fontes não foram carregadas. Entre em contato com o administrador do Document Server.",
"DE.Controllers.ApplicationController.errorServerVersion": "A versão do editor foi atualizada. A página será recarregada para aplicar as alterações.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "A sessão de edição de documentos expirou. Por Favor atualize a página.",
diff --git a/apps/documenteditor/forms/locale/ro.json b/apps/documenteditor/forms/locale/ro.json
index ba086360e..6ded9ac38 100644
--- a/apps/documenteditor/forms/locale/ro.json
+++ b/apps/documenteditor/forms/locale/ro.json
@@ -96,12 +96,18 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Fișierul este protejat cu parolă și deaceea nu poate fi deschis.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "Dimensiunea fișierului depășește limita permisă de serverul Dvs. Pentru detalii, contactați administratorul dumneavoastră de Server Documente.",
"DE.Controllers.ApplicationController.errorForceSave": "S-a produs o eroare în timpul salvării fișierului. Pentru copierea de rezervă pe PC utilizați opțiunea Descărcare ca... sau încercați din nou mai târziu.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "Eroare la deschiderea fișierului. Conținutul fișierului nu corespunde cu extensia numelui de fișier.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Eroare la deschiderea fișierului. Conținutul fișierului corespunde unui format de document text (ex. docx), dar extensia numelui de fișier nu se potrivește: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Eroare la deschiderea fișierului. Conținutul fișierului corespunde unuia dintre următoarele formate: pdf/djvu/xps/oxps, dar extensia numelui de fișier nu se potrivește: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "Eroare la deschiderea fișierului. Conținutul fișierului corespunde unui format de prezentare (ex. pptx), dar extensia numelui de fișier nu se potrivește: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "Eroare la deschiderea fișierului. Conținutul fișierului corespunde unui format de foaie de calcul (ex. xlsx), dar extensia numelui de fișier nu se potrivește: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Fonturile nu sunt încărcate. Contactați administratorul dvs de Server Documente.",
"DE.Controllers.ApplicationController.errorServerVersion": "Editorul a fost actualizat. Pagina va fi reîmprospătată pentru a aplica această actualizare.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "Sesiunea de editare a expirat. Încercați să reîmprospătați pagina.",
"DE.Controllers.ApplicationController.errorSessionIdle": "Acțiunile de editare a documentului nu s-au efectuat de ceva timp. Încercați să reîmprospătați pagina.",
"DE.Controllers.ApplicationController.errorSessionToken": "Conexeunea la server s-a întrerupt. Încercați să reîmprospătati pagina.",
"DE.Controllers.ApplicationController.errorSubmit": "Remiterea eșuată.",
+ "DE.Controllers.ApplicationController.errorTextFormWrongFormat": "Ați introdus o valoare care nu corespunde cu formatul câmpului.",
"DE.Controllers.ApplicationController.errorToken": "Token de securitate din document este format în mod incorect. Contactați administratorul dvs. de Server Documente.",
"DE.Controllers.ApplicationController.errorTokenExpire": "Token de securitate din document a expirat. Contactați administratorul dvs. de Server Documente.",
"DE.Controllers.ApplicationController.errorUpdateVersion": "Versiunea fișierului s-a modificat. Pagina va fi reîmprospătată.",
@@ -162,7 +168,7 @@
"DE.Views.ApplicationView.textPrintSel": "Imprimare selecție",
"DE.Views.ApplicationView.textRedo": "Refacere",
"DE.Views.ApplicationView.textSubmit": "Remitere",
- "DE.Views.ApplicationView.textUndo": "Anulează",
+ "DE.Views.ApplicationView.textUndo": "Anulare",
"DE.Views.ApplicationView.textZoom": "Zoom",
"DE.Views.ApplicationView.txtDarkMode": "Modul Întunecat",
"DE.Views.ApplicationView.txtDownload": "Descărcare",
diff --git a/apps/documenteditor/forms/locale/ru.json b/apps/documenteditor/forms/locale/ru.json
index 5f1b7b09d..989280ef5 100644
--- a/apps/documenteditor/forms/locale/ru.json
+++ b/apps/documenteditor/forms/locale/ru.json
@@ -96,6 +96,11 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Файл защищен паролем и не может быть открыт.",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "Размер файла превышает ограничение, установленное для вашего сервера. Обратитесь к администратору Сервера документов для получения дополнительной информации.",
"DE.Controllers.ApplicationController.errorForceSave": "При сохранении файла произошла ошибка. Используйте опцию 'Скачать как', чтобы сохранить файл на жестком диске компьютера или повторите попытку позже.",
+ "DE.Controllers.ApplicationController.errorInconsistentExt": "При открытии файла произошла ошибка. Содержимое файла не соответствует расширению файла.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "При открытии файла произошла ошибка. Содержимое файла соответствует документам (например, docx), но файл имеет несоответствующее расширение: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "При открытии файла произошла ошибка. Содержимое файла соответствует одному из следующих форматов: pdf/djvu/xps/oxps, но файл имеет несоответствующее расширение: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "При открытии файла произошла ошибка. Содержимое файла соответствует презентациям (например, pptx), но файл имеет несоответствующее расширение: %1.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "При открытии файла произошла ошибка. Содержимое файла соответствует электронным таблицам (например, xlsx), но файл имеет несоответствующее расширение: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Шрифты не загружены. Пожалуйста, обратитесь к администратору Сервера документов.",
"DE.Controllers.ApplicationController.errorServerVersion": "Версия редактора была обновлена. Страница будет перезагружена, чтобы применить изменения.",
"DE.Controllers.ApplicationController.errorSessionAbsolute": "Время сеанса редактирования документа истекло. Пожалуйста, обновите страницу.",
diff --git a/apps/documenteditor/forms/locale/tr.json b/apps/documenteditor/forms/locale/tr.json
index 3f4aabfcf..ab4e83707 100644
--- a/apps/documenteditor/forms/locale/tr.json
+++ b/apps/documenteditor/forms/locale/tr.json
@@ -88,6 +88,7 @@
"DE.Controllers.ApplicationController.errorFilePassProtect": "Döküman şifre korumalı ve açılamadı",
"DE.Controllers.ApplicationController.errorFileSizeExceed": "Dosya boyutu, sunucunuz için belirlenen limiti aşıyor. Ayrıntılar için lütfen Doküman Sunucusu yöneticinizle iletişime geçin.",
"DE.Controllers.ApplicationController.errorForceSave": "Dosya indirilirken bir hata oluştu. Dosyayı bilgisayarınıza kaydetmek için lütfen 'Farklı Kaydet' seçeneğini kullanın veya daha sonra tekrar deneyin.",
+ "DE.Controllers.ApplicationController.errorInconsistentExtDocx": "Dosya açılırken bir hata oluştu. Dosya içeriği metin belgelerine (örn. docx) karşılık geliyor, ancak dosyanın uzantısı tutarsız: %1.",
"DE.Controllers.ApplicationController.errorLoadingFont": "Yazı tipleri yüklenmedi. Lütfen Doküman Sunucusu yöneticinize başvurun.",
"DE.Controllers.ApplicationController.errorServerVersion": "Editör versiyonu güncellendi. Değişikliklerin uygulanabilmesi için sayfa yenilenecek.",
"DE.Controllers.ApplicationController.errorSessionToken": "Sunucu bağlantısı yarıda kesildi. Lütfen sayfayı yeniden yükleyin.",
@@ -150,9 +151,10 @@
"DE.Views.ApplicationView.textRedo": "Yinele",
"DE.Views.ApplicationView.textSubmit": "Kaydet",
"DE.Views.ApplicationView.textUndo": "Geri Al",
+ "DE.Views.ApplicationView.textZoom": "Yakınlaştırma",
"DE.Views.ApplicationView.txtDarkMode": "Karanlık mod",
"DE.Views.ApplicationView.txtDownload": "İndir",
- "DE.Views.ApplicationView.txtDownloadDocx": "docx olarak indir",
+ "DE.Views.ApplicationView.txtDownloadDocx": ".docx olarak indir",
"DE.Views.ApplicationView.txtDownloadPdf": "Pdf olarak indir",
"DE.Views.ApplicationView.txtEmbed": "Gömülü",
"DE.Views.ApplicationView.txtFileLocation": "Dosya konumunu aç",
diff --git a/apps/documenteditor/main/app.js b/apps/documenteditor/main/app.js
index 8e57bd105..9c0e5c263 100644
--- a/apps/documenteditor/main/app.js
+++ b/apps/documenteditor/main/app.js
@@ -127,12 +127,10 @@ require([
'backbone',
'bootstrap',
'core',
- 'sdk',
- 'api',
'analytics',
'gateway',
'locale'
-], function (Backbone, Bootstrap, Core) {
+], function (Sdk, Backbone, Bootstrap, Core) {
if (Backbone.History && Backbone.History.started)
return;
Backbone.history.start();
@@ -158,6 +156,7 @@ require([
'ViewTab',
'Search',
'DocProtection',
+ 'Print',
'Common.Controllers.Fonts',
'Common.Controllers.History'
/** coauthoring begin **/
@@ -193,6 +192,7 @@ require([
'documenteditor/main/app/controller/ViewTab',
'documenteditor/main/app/controller/Search',
'documenteditor/main/app/controller/DocProtection',
+ 'documenteditor/main/app/controller/Print',
'documenteditor/main/app/view/FileMenuPanels',
'documenteditor/main/app/view/ParagraphSettings',
'documenteditor/main/app/view/HeaderFooterSettings',
@@ -226,4 +226,4 @@ require([
window.alert(reqerr);
window.location.reload();
}
-});
\ No newline at end of file
+});
diff --git a/apps/documenteditor/main/app/controller/DocProtection.js b/apps/documenteditor/main/app/controller/DocProtection.js
index 3174987a1..58a482d5a 100644
--- a/apps/documenteditor/main/app/controller/DocProtection.js
+++ b/apps/documenteditor/main/app/controller/DocProtection.js
@@ -116,12 +116,10 @@ define([
onProtectDocClick: function(state) {
this.view.btnProtectDoc.toggle(!state, true);
if (state) {
- var me = this,
- btn,
- win = new DE.Views.ProtectDialog({
+ var me = this;
+ me._docProtectDlg = new DE.Views.ProtectDialog({
props: me.appConfig,
handler: function(result, value, props) {
- btn = result;
if (result == 'ok') {
var protection = me.api.asc_getDocumentProtection() || new AscCommonWord.CDocProtect();
protection.asc_setEditType(props);
@@ -131,14 +129,12 @@ define([
Common.NotificationCenter.trigger('edit:complete');
}
}).on('close', function() {
- if (btn!=='ok')
- me.view.btnProtectDoc.toggle(false, true);
+ me._docProtectDlg = undefined;
});
- win.show();
+ me._docProtectDlg.show();
} else {
var me = this,
- btn,
props = me.api.asc_getDocumentProtection();
if (props && props.asc_getIsPassword()) {
var win = new Common.Views.OpenDialog({
@@ -149,7 +145,6 @@ define([
validatePwd: false,
maxPasswordLength: 15,
handler: function (result, value) {
- btn = result;
if (result == 'ok') {
if (me.api) {
props.asc_setEditType(Asc.c_oAscEDocProtect.None);
@@ -160,8 +155,6 @@ define([
}
}
}).on('close', function() {
- if (btn!=='ok')
- me.view.btnProtectDoc.toggle(true, true);
});
win.show();
@@ -208,6 +201,8 @@ define([
}
props && this.applyRestrictions(props.type);
+ if (this._docProtectDlg && this._docProtectDlg.isVisible())
+ this._docProtectDlg.SetDisabled(!!this._state.lockDocProtect || isProtected);
Common.NotificationCenter.trigger('protect:doclock', props);
},
@@ -246,7 +241,11 @@ define([
},
onLockDocumentProtection: function(state) {
+ this._state.lockDocProtect = state;
this.view && Common.Utils.lockControls(Common.enumLock.protectLock, state, {array: [this.view.btnProtectDoc]});
+ if (this._docProtectDlg && this._docProtectDlg.isVisible())
+ this._docProtectDlg.SetDisabled(state || this._state.docProtection && (this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly ||
+ this._state.docProtection.isCommentsOnly || this._state.docProtection.isReviewOnly));
}
}, DE.Controllers.DocProtection || {}));
diff --git a/apps/documenteditor/main/app/controller/DocumentHolder.js b/apps/documenteditor/main/app/controller/DocumentHolder.js
index 3f087a3b7..3c65257c2 100644
--- a/apps/documenteditor/main/app/controller/DocumentHolder.js
+++ b/apps/documenteditor/main/app/controller/DocumentHolder.js
@@ -212,6 +212,8 @@ define([
this.api.asc_registerCallback('asc_ChangeCropState', _.bind(this.onChangeCropState, this));
this.api.asc_registerCallback('asc_onLockDocumentProps', _.bind(this.onApiLockDocumentProps, this));
this.api.asc_registerCallback('asc_onUnLockDocumentProps', _.bind(this.onApiUnLockDocumentProps, this));
+ this.api.asc_registerCallback('asc_onShowMathTrack', _.bind(this.onShowMathTrack, this));
+ this.api.asc_registerCallback('asc_onHideMathTrack', _.bind(this.onHideMathTrack, this));
}
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect', _.bind(this.onCoAuthoringDisconnect, this));
Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
@@ -425,6 +427,7 @@ define([
view.menuParaTOCSettings.on('click', _.bind(me.onParaTOCSettings, me));
view.menuTableEquation.menu.on('item:click', _.bind(me.convertEquation, me));
view.menuParagraphEquation.menu.on('item:click', _.bind(me.convertEquation, me));
+ view.menuSaveAsPicture.on('click', _.bind(me.saveAsPicture, me));
me.onChangeProtectDocument();
},
@@ -626,6 +629,25 @@ define([
}
}
}
+
+ if (this.mode && this.mode.isEdit) {
+ var i = -1,
+ in_equation = false,
+ locked = false;
+ while (++i < selectedElements.length) {
+ var type = selectedElements[i].get_ObjectType();
+ if (type === Asc.c_oAscTypeSelectElement.Math) {
+ in_equation = true;
+ } else if (type === Asc.c_oAscTypeSelectElement.Paragraph || type === Asc.c_oAscTypeSelectElement.Table || type === Asc.c_oAscTypeSelectElement.Header) {
+ var value = selectedElements[i].get_ObjectValue();
+ value && (locked = locked || value.get_Locked());
+ }
+ }
+ if (in_equation) {
+ this._state.equationLocked = locked;
+ this.disableEquationBar();
+ }
+ }
},
handleDocumentWheel: function(event) {
@@ -697,6 +719,7 @@ define([
me.documentHolder.cmpEl.offset().top - $(window).scrollTop()
];
me._Height = me.documentHolder.cmpEl.height();
+ me._Width = me.documentHolder.cmpEl.width();
me._BodyWidth = $('body').width();
},
@@ -960,6 +983,7 @@ define([
cmpEl.offset().top - $(window).scrollTop()
];
me._Height = cmpEl.height();
+ me._Width = cmpEl.width();
me._BodyWidth = $('body').width();
}
@@ -1260,15 +1284,11 @@ define([
handler: function(dlg, result) {
if (result == 'ok') {
var props = dlg.getSettings();
- var mnu = DE.getController('Toolbar').toolbar.btnPageMargins.menu.items[0];
- mnu.setVisible(true);
- mnu.setChecked(true);
- mnu.options.value = mnu.value = [props.get_TopMargin(), props.get_LeftMargin(), props.get_BottomMargin(), props.get_RightMargin()];
- $(mnu.el).html(mnu.template({id: Common.UI.getId(), caption : mnu.caption, options : mnu.options}));
Common.localStorage.setItem("de-pgmargins-top", props.get_TopMargin());
Common.localStorage.setItem("de-pgmargins-left", props.get_LeftMargin());
Common.localStorage.setItem("de-pgmargins-bottom", props.get_BottomMargin());
Common.localStorage.setItem("de-pgmargins-right", props.get_RightMargin());
+ Common.NotificationCenter.trigger('margins:update', props);
me.api.asc_SetSectionProps(props);
me.editComplete();
@@ -1498,6 +1518,7 @@ define([
SetDisabled: function(state, canProtect, fillFormMode) {
this._isDisabled = state;
this.documentHolder.SetDisabled(state, canProtect, fillFormMode);
+ this.disableEquationBar();
},
onTextLanguage: function(langid) {
@@ -1588,6 +1609,7 @@ define([
cmpEl.offset().top - $(window).scrollTop()
];
me._Height = cmpEl.height();
+ me._Width = cmpEl.width();
me._BodyWidth = $('body').width();
me.onMouseMoveStart();
},
@@ -2307,6 +2329,151 @@ define([
return false;
},
+ onShowMathTrack: function(bounds) {
+ if (bounds[3] < 0) {
+ this.onHideMathTrack();
+ return;
+ }
+ var me = this,
+ documentHolder = me.documentHolder,
+ eqContainer = documentHolder.cmpEl.find('#equation-container');
+
+ // Prepare menu container
+ if (eqContainer.length < 1) {
+ var equationsStore = me.getApplication().getCollection('EquationGroups'),
+ eqStr = '';
+
+ me.getApplication().getController('Toolbar').onMathTypes();
+
+ me.equationBtns = [];
+ for (var i = 0; i < equationsStore.length; ++i) {
+ var style = 'margin-right: 8px;' + (i==0 ? 'margin-left: 5px;' : '');
+ eqStr += '
';
+ }
+ eqStr += '
';
+ eqStr += '
';
+ eqStr += '
';
+ eqContainer = $(eqStr);
+ documentHolder.cmpEl.find('#id_main_view').append(eqContainer);
+ var onShowBefore = function (menu) {
+ var index = menu.options.value,
+ group = equationsStore.at(index);
+ var equationPicker = new Common.UI.DataViewSimple({
+ el: $('#id-document-holder-btn-equation-menu-' + index, menu.cmpEl),
+ parentMenu: menu,
+ store: group.get('groupStore'),
+ scrollAlwaysVisible: true,
+ showLast: false,
+ restoreHeight: 450,
+ itemTemplate: _.template(
+ '')
+ });
+ equationPicker.on('item:click', function(picker, item, record, e) {
+ if (me.api) {
+ if (record)
+ me.api.asc_AddMath(record.get('data').equationType);
+ }
+ });
+ menu.off('show:before', onShowBefore);
+ };
+ var bringForward = function (menu) {
+ eqContainer.addClass('has-open-menu');
+ };
+ var sendBackward = function (menu) {
+ eqContainer.removeClass('has-open-menu');
+ };
+ for (var i = 0; i < equationsStore.length; ++i) {
+ var equationGroup = equationsStore.at(i);
+ var btn = new Common.UI.Button({
+ parentEl: $('#id-document-holder-btn-equation-' + i, documentHolder.cmpEl),
+ cls : 'btn-toolbar no-caret',
+ iconCls : 'svgicon ' + equationGroup.get('groupIcon'),
+ hint : equationGroup.get('groupName'),
+ menu : new Common.UI.Menu({
+ cls: 'menu-shapes',
+ value: i,
+ items: [
+ { template: _.template('') }
+ ]
+ })
+ });
+ btn.menu.on('show:before', onShowBefore);
+ btn.menu.on('show:before', bringForward);
+ btn.menu.on('hide:after', sendBackward);
+ me.equationBtns.push(btn);
+ }
+
+ me.equationSettingsBtn = new Common.UI.Button({
+ parentEl: $('#id-document-holder-btn-equation-settings', documentHolder.cmpEl),
+ cls : 'btn-toolbar no-caret',
+ iconCls : 'toolbar__icon more-vertical',
+ hint : me.documentHolder.advancedEquationText,
+ menu : me.documentHolder.createEquationMenu('popuptbeqinput', 'tl-bl')
+ });
+ me.equationSettingsBtn.menu.options.initMenu = function() {
+ var eq = me.api.asc_GetMathInputType();
+ var menu = me.equationSettingsBtn.menu;
+ menu.items[0].setChecked(eq===Asc.c_oAscMathInputType.Unicode);
+ menu.items[1].setChecked(eq===Asc.c_oAscMathInputType.LaTeX);
+ menu.items[8].setChecked(me.api.asc_IsInlineMath());
+ };
+ me.equationSettingsBtn.menu.on('item:click', _.bind(me.convertEquation, me));
+ me.equationSettingsBtn.menu.on('show:before', function(menu) {
+ menu.options.initMenu();
+ });
+ }
+
+ var showPoint = [(bounds[0] + bounds[2])/2 - eqContainer.outerWidth()/2, bounds[1] - eqContainer.outerHeight() - 10];
+ if (!Common.Utils.InternalSettings.get("de-hidden-rulers")) {
+ showPoint = [showPoint[0] - 19, showPoint[1] - 26];
+ }
+ if (showPoint[1]<0) {
+ showPoint[1] = bounds[3] + 10;
+ !Common.Utils.InternalSettings.get("de-hidden-rulers") && (showPoint[1] -= 26);
+ }
+ showPoint[1] = Math.min(me._Height - eqContainer.outerHeight(), Math.max(0, showPoint[1]));
+ eqContainer.css({left: showPoint[0], top : showPoint[1]});
+
+ var menuAlign = (me._Height - showPoint[1] - eqContainer.outerHeight() < 220) ? 'bl-tl' : 'tl-bl';
+ me.equationBtns.forEach(function(item){
+ item && (item.menu.menuAlign = menuAlign);
+ });
+ me.equationSettingsBtn.menu.menuAlign = menuAlign;
+ if (eqContainer.is(':visible')) {
+ if (me.equationSettingsBtn.menu.isVisible()) {
+ me.equationSettingsBtn.menu.options.initMenu();
+ me.equationSettingsBtn.menu.alignPosition();
+ }
+ } else {
+ eqContainer.show();
+ }
+ me.disableEquationBar();
+ },
+
+ onHideMathTrack: function() {
+ var eqContainer = this.documentHolder.cmpEl.find('#equation-container');
+ if (eqContainer.is(':visible')) {
+ eqContainer.hide();
+ }
+ },
+
+ disableEquationBar: function() {
+ var eqContainer = this.documentHolder.cmpEl.find('#equation-container'),
+ docProtection = this.documentHolder._docProtection,
+ disabled = this._isDisabled || this._state.equationLocked || docProtection.isReadOnly || docProtection.isFormsOnly || docProtection.isCommentsOnly;
+
+ if (eqContainer.length>0 && eqContainer.is(':visible')) {
+ this.equationBtns.forEach(function(item){
+ item && item.setDisabled(!!disabled);
+ });
+ this.equationSettingsBtn.setDisabled(!!disabled);
+ }
+ },
+
convertEquation: function(menu, item, e) {
if (this.api) {
if (item.options.type=='input')
@@ -2318,6 +2485,12 @@ define([
}
},
+ saveAsPicture: function() {
+ if(this.api) {
+ this.api.asc_SaveDrawingAsPicture();
+ }
+ },
+
onChangeProtectDocument: function(props) {
if (!props) {
var docprotect = this.getApplication().getController('DocProtection');
@@ -2325,6 +2498,7 @@ define([
}
if (props && this.documentHolder) {
this.documentHolder._docProtection = props;
+ this.disableEquationBar();
}
},
diff --git a/apps/documenteditor/main/app/controller/LeftMenu.js b/apps/documenteditor/main/app/controller/LeftMenu.js
index 995a75f9d..f454f1769 100644
--- a/apps/documenteditor/main/app/controller/LeftMenu.js
+++ b/apps/documenteditor/main/app/controller/LeftMenu.js
@@ -115,6 +115,7 @@ define([
this.clickMenuFileItem(null, 'history');
}, this));
Common.NotificationCenter.on('protect:doclock', _.bind(this.onChangeProtectDocument, this));
+ Common.NotificationCenter.on('file:print', _.bind(this.clickToolbarPrint, this));
},
onLaunch: function() {
@@ -558,6 +559,13 @@ define([
this.leftMenu.menuFile.hide();
},
+ clickToolbarPrint: function () {
+ if (this.mode.canPreviewPrint)
+ this.leftMenu.showMenu('file:printpreview');
+ else if (this.mode.canPrint)
+ this.clickMenuFileItem(null, 'print');
+ },
+
changeToolbarSaveState: function (state) {
var btnSave = this.leftMenu.menuFile.getButton('save');
btnSave && btnSave.setDisabled(state);
@@ -881,6 +889,7 @@ define([
onShowHideSearch: function (state, findText) {
if (state) {
Common.UI.Menu.Manager.hideAll();
+ this.tryToShowLeftMenu();
this.leftMenu.showMenu('advancedsearch', undefined, true);
this.leftMenu.fireEvent('search:aftershow', this.leftMenu, findText);
} else {
diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js
index eb4077671..193a90d64 100644
--- a/apps/documenteditor/main/app/controller/Main.js
+++ b/apps/documenteditor/main/app/controller/Main.js
@@ -380,6 +380,19 @@ define([
Common.Utils.InternalSettings.set("guest-username", value);
Common.Utils.InternalSettings.set("save-guest-username", !!value);
}
+ if (this.appOptions.customization.font) {
+ if (this.appOptions.customization.font.name && typeof this.appOptions.customization.font.name === 'string') {
+ var arr = this.appOptions.customization.font.name.split(',');
+ for (var i=0; i86)); // if isChrome or isOpera == true use asc_onPrintUrl event
+ Common.NotificationCenter.trigger('file:print');
Common.component.Analytics.trackEvent('Print');
},
@@ -2660,6 +2699,39 @@ define([
if (url) this.iframePrint.src = url;
},
+ onPrintQuick: function() {
+ if (!this.appOptions.canQuickPrint) return;
+
+ var value = Common.localStorage.getBool("de-hide-quick-print-warning"),
+ me = this,
+ handler = function () {
+ var printopt = new Asc.asc_CAdjustPrint();
+ printopt.asc_setNativeOptions({quickPrint: true});
+ var opts = new Asc.asc_CDownloadOptions();
+ opts.asc_setAdvancedOptions(printopt);
+ me.api.asc_Print(opts);
+ Common.component.Analytics.trackEvent('Print');
+ };
+
+ if (value) {
+ handler.call(this);
+ } else {
+ Common.UI.warning({
+ msg: this.textTryQuickPrint,
+ buttons: ['yes', 'no'],
+ primary: 'yes',
+ dontshow: true,
+ maxwidth: 500,
+ callback: function(btn, dontshow){
+ dontshow && Common.localStorage.setBool("de-hide-quick-print-warning", true);
+ if (btn === 'yes') {
+ setTimeout(handler, 1);
+ }
+ }
+ });
+ }
+ },
+
onClearDummyComment: function() {
this.dontCloseDummyComment = false;
},
@@ -2819,19 +2891,38 @@ define([
value = Common.localStorage.getBool("de-settings-autoformat-hyphens", true);
Common.Utils.InternalSettings.set("de-settings-autoformat-hyphens", value);
me.api.asc_SetAutoCorrectHyphensWithDash(value);
-
- value = Common.localStorage.getBool("de-settings-autoformat-fl-sentence", true);
- Common.Utils.InternalSettings.set("de-settings-autoformat-fl-sentence", value);
+
+ value = Common.localStorage.getItem("de-settings-letter-exception-sentence");
+ value = value !== null ? parseInt(value) != 0 : Common.localStorage.getBool("de-settings-autoformat-fl-sentence", true);
+ Common.Utils.InternalSettings.set("de-settings-letter-exception-sentence", value);
me.api.asc_SetAutoCorrectFirstLetterOfSentences(value);
+ value = Common.localStorage.getItem("de-settings-letter-exception-cells");
+ value = value !== null ? parseInt(value) != 0 : Common.localStorage.getBool("de-settings-autoformat-fl-cells", true);
+ Common.Utils.InternalSettings.set("de-settings-letter-exception-cells", value);
+ me.api.asc_SetAutoCorrectFirstLetterOfCells(value);
+
+ [0x0409, 0x0419].forEach(function(lang) {
+ var apiFlManager = me.api.asc_GetAutoCorrectSettings().get_FirstLetterExceptionManager();
+
+ value = Common.localStorage.getItem("de-settings-letter-exception-add-" + lang);
+ Common.Utils.InternalSettings.set("de-settings-letter-exception-add-" + lang, value);
+ arrAdd = value ? JSON.parse(value) : [];
+
+ value = Common.localStorage.getItem("de-settings-letter-exception-rem-" + lang);
+ Common.Utils.InternalSettings.set("de-settings-letter-exception-rem-" + lang, value);
+ arrRem = value ? JSON.parse(value) : [];
+
+ var arrRes = _.union(apiFlManager.get_Exceptions(lang), arrAdd);
+ arrRes = _.difference(arrRes, arrRem);
+ arrRes.sort();
+ apiFlManager.put_Exceptions(arrRes, lang);
+ });
+
value = Common.localStorage.getBool("de-settings-autoformat-hyperlink", true);
Common.Utils.InternalSettings.set("de-settings-autoformat-hyperlink", value);
me.api.asc_SetAutoCorrectHyperlinks(value);
-
- value = Common.localStorage.getBool("de-settings-autoformat-fl-cells", true);
- Common.Utils.InternalSettings.set("de-settings-autoformat-fl-cells", value);
- me.api.asc_SetAutoCorrectFirstLetterOfCells(value);
-
+
value = Common.localStorage.getBool("de-settings-autoformat-double-space", Common.Utils.isMac); // add period with double-space in MacOs by default
Common.Utils.InternalSettings.set("de-settings-autoformat-double-space", value);
me.api.asc_SetAutoCorrectDoubleSpaceWithPeriod(value);
@@ -3287,7 +3378,14 @@ define([
errorPasswordIsNotCorrect: 'The password you supplied is not correct. Verify that the CAPS LOCK key is off and be sure to use the correct capitalization.',
confirmMaxChangesSize: 'The size of actions exceeds the limitation set for your server. Press "Undo" to cancel your last action or press "Continue" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).',
textUndo: 'Undo',
- textContinue: 'Continue'
+ textContinue: 'Continue',
+ errorInconsistentExtDocx: 'An error has occurred while opening the file. The file content corresponds to text documents (e.g. docx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtXlsx: 'An error has occurred while opening the file. The file content corresponds to spreadsheets (e.g. xlsx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtPptx: 'An error has occurred while opening the file. The file content corresponds to presentations (e.g. pptx), but the file has the inconsistent extension: %1.',
+ errorInconsistentExtPdf: 'An error has occurred while opening the file. The file content corresponds to one of the following formats: pdf/djvu/xps/oxps, but the file has the inconsistent extension: %1.',
+ errorInconsistentExt: 'An error has occurred while opening the file. The file content does not match the file extension.',
+ errorCannotPasteImg: 'We can\'t paste this image from the Clipboard, but you can save it to your device and \ninsert it from there, or you can copy the image without text and paste it into the document.',
+ textTryQuickPrint: 'You have selected Quick print: the entire document will be printed on the last selected or default printer. Do you want to continue?'
}
})(), DE.Controllers.Main || {}))
});
\ No newline at end of file
diff --git a/apps/documenteditor/main/app/controller/Print.js b/apps/documenteditor/main/app/controller/Print.js
new file mode 100644
index 000000000..556b303f8
--- /dev/null
+++ b/apps/documenteditor/main/app/controller/Print.js
@@ -0,0 +1,574 @@
+/*
+ *
+ * (c) Copyright Ascensio System SIA 2010-2022
+ *
+ * This program is a free software product. You can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License (AGPL)
+ * version 3 as published by the Free Software Foundation. In accordance with
+ * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
+ * that Ascensio System SIA expressly excludes the warranty of non-infringement
+ * of any third-party rights.
+ *
+ * This program is distributed WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
+ * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
+ *
+ * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
+ * street, Riga, Latvia, EU, LV-1050.
+ *
+ * The interactive user interfaces in modified source and object code versions
+ * of the Program must display Appropriate Legal Notices, as required under
+ * Section 5 of the GNU AGPL version 3.
+ *
+ * Pursuant to Section 7(b) of the License you must retain the original Product
+ * logo when distributing the program. Pursuant to Section 7(e) we decline to
+ * grant you any rights under trademark law for use of our trademarks.
+ *
+ * All the Product's GUI elements, including illustrations and icon sets, as
+ * well as technical writing content are licensed under the terms of the
+ * Creative Commons Attribution-ShareAlike 4.0 International. See the License
+ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
+ *
+*/
+define([
+ 'core',
+ 'documenteditor/main/app/view/FileMenuPanels'
+], function () {
+ 'use strict';
+
+ DE.Controllers.Print = Backbone.Controller.extend(_.extend({
+ views: [
+ 'PrintWithPreview'
+ ],
+
+ initialize: function() {
+ this.adjPrintParams = new Asc.asc_CAdjustPrint();
+ this._state = {
+ lock_doc: false,
+ firstPrintPage: 0
+ };
+
+ this._navigationPreview = {
+ pageCount: false,
+ currentPage: 0,
+ currentPreviewPage: 0
+ };
+
+ this._isPreviewVisible = false;
+
+ this.addListeners({
+ 'PrintWithPreview': {
+ 'show': _.bind(this.onShowMainSettingsPrint, this),
+ 'render:after': _.bind(this.onAfterRender, this)
+ }
+ });
+ },
+
+ onLaunch: function() {
+ this.printSettings = this.createView('PrintWithPreview');
+ },
+
+ onAfterRender: function(view) {
+ var me = this;
+ this.printSettings.menu.on('menu:hide', _.bind(this.onHidePrintMenu, this));
+ this.printSettings.btnPrint.on('click', _.bind(this.onBtnPrint, this, true));
+ this.printSettings.btnPrintPdf.on('click', _.bind(this.onBtnPrint, this, false));
+ this.printSettings.btnPrevPage.on('click', _.bind(this.onChangePreviewPage, this, false));
+ this.printSettings.btnNextPage.on('click', _.bind(this.onChangePreviewPage, this, true));
+ this.printSettings.txtNumberPage.on({
+ 'keypress:after': _.bind(this.onKeypressPageNumber, this),
+ 'keyup:after': _.bind(this.onKeyupPageNumber, this)
+ });
+ this.printSettings.txtNumberPage.cmpEl.find('input').on('blur', _.bind(this.onBlurPageNumber, this));
+ this.printSettings.cmbPaperSize.on('selected', _.bind(this.onPaperSizeSelect, this));
+ this.printSettings.cmbPaperOrientation.on('selected', _.bind(this.onPaperOrientSelect, this));
+ this.printSettings.cmbPaperMargins.on('selected', _.bind(this.onPaperMarginsSelect, this));
+ this.printSettings.cmbRange.on('selected', _.bind(this.comboRangeChange, this));
+ this.printSettings.inputPages.on('changing', _.bind(this.inputPagesChanging, this));
+ this.printSettings.inputPages.validation = function(value) {
+ if (!_.isEmpty(value) && /[0-9,\-]/.test(value)) {
+ var res = [],
+ arr = value.split(',');
+ if (me._isPrint && arr.length>1)
+ return me.txtPrintRangeSingleRange;
+
+ for (var i=0; i1) // more than 1 symbol '-'
+ return me.txtPrintRangeInvalid;
+ if (!str) {// one number
+ var num = parseInt(item)-1;
+ (num>=0) && res.push(num);
+ } else { // range
+ var pages = item.split('-'),
+ start = (pages[0] ? parseInt(pages[0])-1 : 0),
+ end = (pages[1] ? parseInt(pages[1])-1 : me._navigationPreview.pageCount-1);
+ if (start>end) {
+ var num = start;
+ start = end;
+ end = num;
+ }
+ for (var j=start; j<=end; j++) {
+ (j>=0) && res.push(j);
+ }
+ }
+ }
+ if (res.length>0) {
+ me._state.firstPrintPage = res[0];
+ return true;
+ }
+ }
+
+ return me.txtPrintRangeInvalid;
+ };
+
+ Common.NotificationCenter.on('window:resize', _.bind(function () {
+ if (this._isPreviewVisible) {
+ this.api.asc_drawPrintPreview(this._navigationPreview.currentPreviewPage);
+ }
+ }, this));
+ Common.NotificationCenter.on('margins:update', _.bind(this.onUpdateLastCustomMargins, this));
+
+ var eventname = (/Firefox/i.test(navigator.userAgent))? 'DOMMouseScroll' : 'mousewheel';
+ this.printSettings.$previewBox.on(eventname, _.bind(this.onPreviewWheel, this));
+ },
+
+ setMode: function (mode) {
+ this.mode = mode;
+ this.printSettings && this.printSettings.setMode(mode);
+ },
+
+ setApi: function(o) {
+ this.api = o;
+ this.api.asc_registerCallback('asc_onDocSize', _.bind(this.onApiPageSize, this));
+ this.api.asc_registerCallback('asc_onPageOrient', _.bind(this.onApiPageOrient, this));
+ this.api.asc_registerCallback('asc_onSectionProps', _.bind(this.onSectionProps, this));
+ this.api.asc_registerCallback('asc_onCountPages', _.bind(this.onCountPages, this));
+ this.api.asc_registerCallback('asc_onCurrentPage', _.bind(this.onCurrentPage, this));
+ this.api.asc_registerCallback('asc_onLockDocumentProps', _.bind(this.onApiLockDocumentProps, this));
+ this.api.asc_registerCallback('asc_onUnLockDocumentProps', _.bind(this.onApiUnLockDocumentProps, this));
+
+ return this;
+ },
+
+ findPagePreset: function(w, h) {
+ var width = (w count - 1) {
+ this._navigationPreview.currentPreviewPage = Math.max(0, count - 1);
+ if (this.printSettings.isVisible()) {
+ this.api.asc_drawPrintPreview(this._navigationPreview.currentPreviewPage);
+ this.updateNavigationButtons(this._navigationPreview.currentPreviewPage, count);
+ }
+ }
+ },
+
+ onCurrentPage: function(number) {
+ this._navigationPreview.currentPreviewPage = number;
+ if (this.printSettings.isVisible()) {
+ this.api.asc_drawPrintPreview(this._navigationPreview.currentPreviewPage);
+ this.updateNavigationButtons(this._navigationPreview.currentPreviewPage, this._navigationPreview.pageCount);
+ }
+ },
+
+ onShowMainSettingsPrint: function() {
+ var me = this;
+ this.printSettings.$previewBox.removeClass('hidden');
+
+ this.onUpdateLastCustomMargins(this._state.lastmargins);
+ this._state.pgsize && this.onApiPageSize(this._state.pgsize[0], this._state.pgsize[1]);
+ this.onApiPageOrient(this._state.pgorient);
+ this._state.sectionprops && this.onSectionProps(this._state.sectionprops);
+
+ var opts = new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isOpera || Common.Utils.isGecko && Common.Utils.firefoxVersion>86);
+ opts.asc_setAdvancedOptions(this.adjPrintParams);
+ this.api.asc_initPrintPreview('print-preview', opts);
+
+ this._navigationPreview.currentPreviewPage = this._navigationPreview.currentPage = this.api.getCurrentPage();
+ this.api.asc_drawPrintPreview(this._navigationPreview.currentPreviewPage);
+ this.updateNavigationButtons(this._navigationPreview.currentPreviewPage, this._navigationPreview.pageCount);
+ this.SetDisabled();
+ this._isPreviewVisible = true;
+ },
+
+ onPaperSizeSelect: function(combo, record) {
+ this._state.pgsize = [0, 0];
+ if (record.value !== -1) {
+ if (this.checkPageSize(record.size[0], record.size[1])) {
+ var section = this.api.asc_GetSectionProps();
+ this.onApiPageSize(section.get_W(), section.get_H());
+ return;
+ } else
+ this.api.change_DocSize(record.size[0], record.size[1]);
+ } else {
+ var win, props,
+ me = this;
+ win = new DE.Views.PageSizeDialog({
+ checkPageSize: _.bind(this.checkPageSize, this),
+ handler: function(dlg, result) {
+ if (result == 'ok') {
+ props = dlg.getSettings();
+ me.api.change_DocSize(props[0], props[1]);
+ Common.NotificationCenter.trigger('edit:complete');
+ }
+ }
+ });
+ win.show();
+ win.setSettings(me.api.asc_GetSectionProps());
+ }
+
+ Common.NotificationCenter.trigger('edit:complete');
+ },
+
+ onPaperMarginsSelect: function(combo, record) {
+ this._state.pgmargins = undefined;
+ if (record.value !== -1) {
+ if (this.checkPageSize(undefined, undefined, record.size[1], record.size[3], record.size[0], record.size[2])) {
+ this.onSectionProps(this.api.asc_GetSectionProps());
+ return;
+ } else {
+ var props = new Asc.CDocumentSectionProps();
+ props.put_TopMargin(record.size[0]);
+ props.put_LeftMargin(record.size[1]);
+ props.put_BottomMargin(record.size[2]);
+ props.put_RightMargin(record.size[3]);
+ this.api.asc_SetSectionProps(props);
+ }
+ } else {
+ var win, props,
+ me = this;
+ win = new DE.Views.PageMarginsDialog({
+ api: me.api,
+ handler: function(dlg, result) {
+ if (result == 'ok') {
+ props = dlg.getSettings();
+ Common.localStorage.setItem("de-pgmargins-top", props.get_TopMargin());
+ Common.localStorage.setItem("de-pgmargins-left", props.get_LeftMargin());
+ Common.localStorage.setItem("de-pgmargins-bottom", props.get_BottomMargin());
+ Common.localStorage.setItem("de-pgmargins-right", props.get_RightMargin());
+ Common.NotificationCenter.trigger('margins:update', props);
+
+ me.api.asc_SetSectionProps(props);
+ Common.NotificationCenter.trigger('edit:complete');
+ }
+ }
+ });
+ win.show();
+ win.setSettings(me.api.asc_GetSectionProps());
+ }
+
+ Common.NotificationCenter.trigger('edit:complete');
+ },
+
+ onUpdateLastCustomMargins: function(props) {
+ this._state.lastmargins = props;
+ if (this.printSettings.isVisible()) {
+ var top = props ? props.get_TopMargin() : Common.localStorage.getItem("de-pgmargins-top"),
+ left = props ? props.get_LeftMargin() : Common.localStorage.getItem("de-pgmargins-left"),
+ bottom = props ? props.get_BottomMargin() : Common.localStorage.getItem("de-pgmargins-bottom"),
+ right = props ? props.get_RightMargin() : Common.localStorage.getItem("de-pgmargins-right");
+ if ( top!==null && left!==null && bottom!==null && right!==null ) {
+ var rec = this.printSettings.cmbPaperMargins.store.at(0);
+ if (rec.get('value')===-2)
+ rec.set('size', [parseFloat(top), parseFloat(left), parseFloat(bottom), parseFloat(right)]);
+ else
+ this.printSettings.cmbPaperMargins.store.unshift({ value: -2, displayValue: this.textMarginsLast, size: [parseFloat(top), parseFloat(left), parseFloat(bottom), parseFloat(right)]});
+ this.printSettings.cmbPaperMargins.onResetItems();
+ }
+ }
+ },
+
+ onPaperOrientSelect: function(combo, record) {
+ this._state.pgorient = undefined;
+ if (this.api) {
+ this.api.change_PageOrient(record.value === Asc.c_oAscPageOrientation.PagePortrait);
+ }
+
+ Common.NotificationCenter.trigger('edit:complete');
+ },
+
+ checkPageSize: function(width, height, left, right, top, bottom) {
+ var section = this.api.asc_GetSectionProps();
+ (width===undefined) && (width = parseFloat(section.get_W().toFixed(4)));
+ (height===undefined) && (height = parseFloat(section.get_H().toFixed(4)));
+ (left===undefined) && (left = parseFloat(section.get_LeftMargin().toFixed(4)));
+ (right===undefined) && (right = parseFloat(section.get_RightMargin().toFixed(4)));
+ (top===undefined) && (top = parseFloat(section.get_TopMargin().toFixed(4)));
+ (bottom===undefined) && (bottom = parseFloat(section.get_BottomMargin().toFixed(4)));
+ var gutterLeft = section.get_GutterAtTop() ? 0 : parseFloat(section.get_Gutter().toFixed(4)),
+ gutterTop = section.get_GutterAtTop() ? parseFloat(section.get_Gutter().toFixed(4)) : 0;
+
+ var errmsg = null;
+ if (left + right + gutterLeft > width-12.7 )
+ errmsg = this.txtMarginsW;
+ else if (top + bottom + gutterTop > height-2.6 )
+ errmsg = this.txtMarginsH;
+ if (errmsg) {
+ Common.UI.warning({
+ title: this.notcriticalErrorTitle,
+ msg : errmsg,
+ callback: function() {
+ Common.NotificationCenter.trigger('edit:complete');
+ }
+ });
+ return true;
+ }
+ },
+
+ getPrintParams: function() {
+ return this.adjPrintParams;
+ },
+
+ onHidePrintMenu: function () {
+ if (this._isPreviewVisible) {
+ this.api.asc_closePrintPreview && this.api.asc_closePrintPreview();
+ this._isPreviewVisible = false;
+ }
+ },
+
+ onChangePreviewPage: function (next) {
+ var index = this._navigationPreview.currentPreviewPage;
+ if (next) {
+ index++;
+ index = Math.min(index, this._navigationPreview.pageCount - 1);
+ } else {
+ index--;
+ index = Math.max(index, 0);
+ }
+ this.api.goToPage(index);
+ },
+
+ onKeypressPageNumber: function (input, e) {
+ if (e.keyCode === Common.UI.Keys.RETURN) {
+ var box = this.printSettings.$el.find('#print-number-page'),
+ edit = box.find('input[type=text]'), page = parseInt(edit.val());
+ if (!page || page > this._navigationPreview.pageCount || page < 0) {
+ edit.select();
+ this.printSettings.txtNumberPage.setValue(this._navigationPreview.currentPreviewPage + 1);
+ this.printSettings.txtNumberPage.checkValidate();
+ return false;
+ }
+
+ box.focus(); // for IE
+
+ this.api.goToPage(page-1);
+ this.api.asc_enableKeyEvents(true);
+ return false;
+ }
+ },
+
+ onKeyupPageNumber: function (input, e) {
+ if (e.keyCode === Common.UI.Keys.ESC) {
+ var box = this.printSettings.$el.find('#print-number-page');
+ box.focus(); // for IE
+ this.api.asc_enableKeyEvents(true);
+ return false;
+ }
+ },
+
+ onBlurPageNumber: function () {
+ if (this.printSettings.txtNumberPage.getValue() != this._navigationPreview.currentPreviewPage + 1) {
+ this.printSettings.txtNumberPage.setValue(this._navigationPreview.currentPreviewPage + 1);
+ this.printSettings.txtNumberPage.checkValidate();
+ }
+ },
+
+ onPreviewWheel: function (e) {
+ if (e.ctrlKey) {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ }
+ var forward = (e.deltaY || (e.detail && -e.detail) || e.wheelDelta) < 0;
+ this.onChangePreviewPage(forward);
+ },
+
+ updateNavigationButtons: function (page, count) {
+ this._navigationPreview.currentPage = page;
+ this.printSettings.updateCurrentPage(page);
+ this._navigationPreview.pageCount = count;
+ this.printSettings.updateCountOfPages(count);
+ this.disableNavButtons();
+ },
+
+ disableNavButtons: function (force) {
+ if (force) {
+ this.printSettings.btnPrevPage.setDisabled(true);
+ this.printSettings.btnNextPage.setDisabled(true);
+ return;
+ }
+ var curPage = this._navigationPreview.currentPage,
+ pageCount = this._navigationPreview.pageCount;
+ this.printSettings.btnPrevPage.setDisabled(curPage < 1);
+ this.printSettings.btnNextPage.setDisabled(curPage > pageCount - 2);
+ },
+
+ onBtnPrint: function(print) {
+ this._isPrint = print;
+ if (this.printSettings.cmbRange.getValue()===-1 && this.printSettings.inputPages.checkValidate() !== true) {
+ this.printSettings.inputPages.focus();
+ this.isInputFirstChange = true;
+ return;
+ }
+ if (this.printSettings.cmbRange.getValue()==='all')
+ this._state.firstPrintPage = 0;
+ else if (this.printSettings.cmbRange.getValue()==='current')
+ this._state.firstPrintPage = this._navigationPreview.currentPage;
+
+ var size = this.api.asc_getPageSize(this._state.firstPrintPage);
+ this.adjPrintParams.asc_setNativeOptions({
+ pages: this.printSettings.cmbRange.getValue()===-1 ? this.printSettings.inputPages.getValue() : this.printSettings.cmbRange.getValue(),
+ paperSize: {
+ w: size ? size['W'] : undefined,
+ h: size ? size['H'] : undefined,
+ preset: size ? this.findPagePreset(size['W'], size['H']) : undefined
+ },
+ paperOrientation: size ? (size['H'] > size['W'] ? 'portrait' : 'landscape') : null
+ });
+
+ if ( print ) {
+ var opts = new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isOpera || Common.Utils.isGecko && Common.Utils.firefoxVersion>86);
+ opts.asc_setAdvancedOptions(this.adjPrintParams);
+ this.api.asc_Print(opts);
+ } else {
+ var opts = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF);
+ opts.asc_setAdvancedOptions(this.adjPrintParams);
+ this.api.asc_DownloadAs(opts);
+ }
+ this.printSettings.menu.hide();
+ },
+
+ inputPagesChanging: function (input, value) {
+ this.isInputFirstChange && this.printSettings.inputPages.showError();
+ this.isInputFirstChange = false;
+
+ if (value.length<1)
+ this.printSettings.cmbRange.setValue('all');
+ else if (this.printSettings.cmbRange.getValue()!==-1)
+ this.printSettings.cmbRange.setValue(-1);
+ },
+
+ onApiLockDocumentProps: function() {
+ this._state.lock_doc = true;
+ this.SetDisabled();
+ },
+
+ onApiUnLockDocumentProps: function() {
+ this._state.lock_doc = false;
+ this.SetDisabled();
+ },
+
+ SetDisabled: function() {
+ if (this.printSettings.isVisible()) {
+ var disable = !this.mode.isEdit || this._state.lock_doc;
+ this.printSettings.cmbPaperSize.setDisabled(disable);
+ this.printSettings.cmbPaperMargins.setDisabled(disable);
+ this.printSettings.cmbPaperOrientation.setDisabled(disable);
+ }
+ },
+
+ txtCustom: 'Custom',
+ txtPrintRangeInvalid: 'Invalid print range',
+ textMarginsLast: 'Last Custom',
+ txtPrintRangeSingleRange: 'Enter either a single page number or a single page range (for example, 5-12). Or you can Print to PDF.'
+ }, DE.Controllers.Print || {}));
+});
\ No newline at end of file
diff --git a/apps/documenteditor/main/app/controller/Search.js b/apps/documenteditor/main/app/controller/Search.js
index aa35b2b1b..47c16acd6 100644
--- a/apps/documenteditor/main/app/controller/Search.js
+++ b/apps/documenteditor/main/app/controller/Search.js
@@ -124,7 +124,7 @@ define([
for (var l = 0; l < text.length; l++) {
var charCode = text.charCodeAt(l),
char = text.charAt(l);
- if (AscCommon.g_aPunctuation[charCode] !== undefined || char.trim() === '') {
+ if (AscCommon.IsPunctuation(charCode) !== undefined || char.trim() === '') {
isPunctuation = true;
break;
}
diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js
index 12d91e8ff..f6af81f09 100644
--- a/apps/documenteditor/main/app/controller/Toolbar.js
+++ b/apps/documenteditor/main/app/controller/Toolbar.js
@@ -131,6 +131,10 @@ define([
var _main = this.getApplication().getController('Main');
_main.onPrint();
},
+ 'print-quick': function (opts) {
+ var _main = this.getApplication().getController('Main');
+ _main.onPrintQuick();
+ },
'save': function (opts) {
this.api.asc_Save();
},
@@ -1066,9 +1070,7 @@ define([
},
onPrint: function(e) {
- if (this.api)
- this.api.asc_Print(new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isOpera || Common.Utils.isGecko && Common.Utils.firefoxVersion>86)); // if isChrome or isOpera == true use asc_onPrintUrl event
-
+ Common.NotificationCenter.trigger('file:print', this.toolbar);
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
Common.component.Analytics.trackEvent('Print');
@@ -1784,15 +1786,11 @@ define([
handler: function(dlg, result) {
if (result == 'ok') {
props = dlg.getSettings();
- var mnu = me.toolbar.btnPageMargins.menu.items[0];
- mnu.setVisible(true);
- mnu.setChecked(true);
- mnu.options.value = mnu.value = [props.get_TopMargin(), props.get_LeftMargin(), props.get_BottomMargin(), props.get_RightMargin()];
- $(mnu.el).html(mnu.template({id: Common.UI.getId(), caption : mnu.caption, options : mnu.options}));
Common.localStorage.setItem("de-pgmargins-top", props.get_TopMargin());
Common.localStorage.setItem("de-pgmargins-left", props.get_LeftMargin());
Common.localStorage.setItem("de-pgmargins-bottom", props.get_BottomMargin());
Common.localStorage.setItem("de-pgmargins-right", props.get_RightMargin());
+ Common.NotificationCenter.trigger('margins:update', props);
me.api.asc_SetSectionProps(props);
Common.NotificationCenter.trigger('edit:complete', me.toolbar);
@@ -2776,7 +2774,7 @@ define([
items: [
{ template: _.template('') }
+ equationGroup.get('groupHeightStr') + 'margin-left:5px;"> ') }
]
})
});
@@ -2827,16 +2825,21 @@ define([
var me = this;
var onShowBefore = function(menu) {
me.onMathTypes(me._equationTemp);
+ if (me._equationTemp && me._equationTemp.get_Data().length>0)
+ me.fillEquations();
me.toolbar.btnInsertEquation.menu.off('show:before', onShowBefore);
};
me.toolbar.btnInsertEquation.menu.on('show:before', onShowBefore);
},
onMathTypes: function(equation) {
+ equation = equation || this._equationTemp;
+
var equationgrouparray = [],
equationsStore = this.getCollection('EquationGroups');
- equationsStore.reset();
+ if (equationsStore.length>0)
+ return;
// equations groups
@@ -2844,18 +2847,18 @@ define([
// [translate, count cells, scroll]
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Symbol ] = [this.textSymbols, 11];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Fraction ] = [this.textFraction, 4];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Script ] = [this.textScript, 4];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Radical ] = [this.textRadical, 4];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Integral ] = [this.textIntegral, 3, true];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.LargeOperator] = [this.textLargeOperator, 5, true];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Bracket ] = [this.textBracket, 4, true];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Function ] = [this.textFunction, 3, true];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Accent ] = [this.textAccent, 4];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.LimitLog ] = [this.textLimitAndLog, 3];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Operator ] = [this.textOperator, 4];
- c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Matrix ] = [this.textMatrix, 4, true];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Symbol ] = [this.textSymbols, 11, false, 'svg-icon-symbols'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Fraction ] = [this.textFraction, 4, false, 'svg-icon-fraction'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Script ] = [this.textScript, 4, false, 'svg-icon-script'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Radical ] = [this.textRadical, 4, false, 'svg-icon-radical'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Integral ] = [this.textIntegral, 3, true, 'svg-icon-integral'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.LargeOperator] = [this.textLargeOperator, 5, true, 'svg-icon-largeOperator'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Bracket ] = [this.textBracket, 4, true, 'svg-icon-bracket'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Function ] = [this.textFunction, 3, true, 'svg-icon-function'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Accent ] = [this.textAccent, 4, false, 'svg-icon-accent'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.LimitLog ] = [this.textLimitAndLog, 3, false, 'svg-icon-limAndLog'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Operator ] = [this.textOperator, 4, false, 'svg-icon-operator'];
+ c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Matrix ] = [this.textMatrix, 4, true, 'svg-icon-matrix'];
// equations sub groups
@@ -2925,12 +2928,14 @@ define([
groupName : c_oAscMathMainTypeStrings[id][0],
groupStore : store,
groupWidth : width,
- groupHeight : c_oAscMathMainTypeStrings[id][2] ? ' height:'+ normHeight +'px!important; ' : ''
+ groupHeight : normHeight,
+ groupHeightStr : c_oAscMathMainTypeStrings[id][2] ? ' height:'+ normHeight +'px!important; ' : '',
+ groupIcon: c_oAscMathMainTypeStrings[id][3]
});
}
}
equationsStore.add(equationgrouparray);
- this.fillEquations();
+ // this.fillEquations();
}
}
},
diff --git a/apps/documenteditor/main/app/controller/Viewport.js b/apps/documenteditor/main/app/controller/Viewport.js
index ba460e46e..42edcf4c5 100644
--- a/apps/documenteditor/main/app/controller/Viewport.js
+++ b/apps/documenteditor/main/app/controller/Viewport.js
@@ -71,7 +71,8 @@ define([
this.addListeners({
'FileMenu': {
'menu:hide': me.onFileMenu.bind(me, 'hide'),
- 'menu:show': me.onFileMenu.bind(me, 'show')
+ 'menu:show': me.onFileMenu.bind(me, 'show'),
+ 'settings:apply': me.applySettings.bind(me)
},
'Toolbar': {
'render:before' : function (toolbar) {
@@ -79,6 +80,11 @@ define([
toolbar.setExtra('right', me.header.getPanel('right', config));
if (!config.isEdit || config.customization && !!config.customization.compactHeader)
toolbar.setExtra('left', me.header.getPanel('left', config));
+
+ var value = Common.localStorage.getBool("de-settings-quick-print-button", true);
+ Common.Utils.InternalSettings.set("de-settings-quick-print-button", value);
+ if (me.header && me.header.btnPrintQuick)
+ me.header.btnPrintQuick[value ? 'show' : 'hide']();
},
'view:compact' : function (toolbar, state) {
me.viewport.vlayout.getItem('toolbar').height = state ?
@@ -100,6 +106,8 @@ define([
'print:disabled' : function (state) {
if ( me.header.btnPrint )
me.header.btnPrint.setDisabled(state);
+ if ( me.header.btnPrintQuick )
+ me.header.btnPrintQuick.setDisabled(state);
},
'save:disabled' : function (state) {
if ( me.header.btnSave )
@@ -255,12 +263,21 @@ define([
me.header.lockHeaderBtns( 'users', _need_disable );
},
+ applySettings: function () {
+ var value = Common.localStorage.getBool("de-settings-quick-print-button", true);
+ Common.Utils.InternalSettings.set("de-settings-quick-print-button", value);
+ if (this.header && this.header.btnPrintQuick)
+ this.header.btnPrintQuick[value ? 'show' : 'hide']();
+ },
+
onApiCoAuthoringDisconnect: function(enableDownload) {
if (this.header) {
if (this.header.btnDownload && !enableDownload)
this.header.btnDownload.hide();
if (this.header.btnPrint && !enableDownload)
this.header.btnPrint.hide();
+ if (this.header.btnPrintQuick && !enableDownload)
+ this.header.btnPrintQuick.hide();
if (this.header.btnEdit)
this.header.btnEdit.hide();
this.header.lockHeaderBtns( 'rename-user', true);
@@ -283,8 +300,9 @@ define([
return;
}
if (!this.searchBar) {
- var isVisible = leftMenu && leftMenu.leftMenu && leftMenu.leftMenu.isVisible();
- this.searchBar = new Common.UI.SearchBar( !isVisible ? {
+ var hideLeftPanel = this.appConfig.canBrandingExt &&
+ (!Common.UI.LayoutManager.isElementVisible('leftMenu') || this.appConfig.customization && this.appConfig.customization.leftMenu === false);
+ this.searchBar = new Common.UI.SearchBar( hideLeftPanel ? {
showOpenPanel: false,
width: 303
} : {});
diff --git a/apps/documenteditor/main/app/template/FileMenu.template b/apps/documenteditor/main/app/template/FileMenu.template
index 3ad620221..ba1e7d69d 100644
--- a/apps/documenteditor/main/app/template/FileMenu.template
+++ b/apps/documenteditor/main/app/template/FileMenu.template
@@ -8,6 +8,7 @@
+
@@ -34,4 +35,5 @@
+
\ No newline at end of file
diff --git a/apps/documenteditor/main/app/view/ControlSettingsDialog.js b/apps/documenteditor/main/app/view/ControlSettingsDialog.js
index c0a71b0b6..40a6f2619 100644
--- a/apps/documenteditor/main/app/view/ControlSettingsDialog.js
+++ b/apps/documenteditor/main/app/view/ControlSettingsDialog.js
@@ -205,7 +205,7 @@ define([ 'text!documenteditor/main/app/template/ControlSettingsDialog.template',
// date picker
var data = [{ value: 0x042C }, { value: 0x0402 }, { value: 0x0405 }, { value: 0x0C07 }, { value: 0x0407 }, {value: 0x0807}, { value: 0x0408 }, { value: 0x0C09 }, { value: 0x0809 }, { value: 0x0409 }, { value: 0x0C0A }, { value: 0x080A },
{ value: 0x040B }, { value: 0x040C }, { value: 0x100C }, { value: 0x0410 }, { value: 0x0810 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { value: 0x040E }, { value: 0x0413 }, { value: 0x0415 }, { value: 0x0416 },
- { value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }];
+ { value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }, { value: 0x0404 }];
data.forEach(function(item) {
var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value);
item.displayValue = langinfo[1];
diff --git a/apps/documenteditor/main/app/view/DateTimeDialog.js b/apps/documenteditor/main/app/view/DateTimeDialog.js
index c1f62237f..7ae3512ee 100644
--- a/apps/documenteditor/main/app/view/DateTimeDialog.js
+++ b/apps/documenteditor/main/app/view/DateTimeDialog.js
@@ -91,7 +91,7 @@ define([
var data = [{ value: 0x042C }, { value: 0x0402 }, { value: 0x0405 }, { value: 0x0C07 }, { value: 0x0407 }, {value: 0x0807}, { value: 0x0408 }, { value: 0x0C09 }, { value: 0x0809 }, { value: 0x0409 }, { value: 0x0C0A }, { value: 0x080A },
{ value: 0x040B }, { value: 0x040C }, { value: 0x100C }, { value: 0x0410 }, { value: 0x0810 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { value: 0x040E }, { value: 0x0413 }, { value: 0x0415 }, { value: 0x0416 },
- { value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }];
+ { value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }, { value: 0x0404 }];
data.forEach(function(item) {
var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value);
item.displayValue = langinfo[1];
diff --git a/apps/documenteditor/main/app/view/DocumentHolder.js b/apps/documenteditor/main/app/view/DocumentHolder.js
index 4cd6682f9..6276bda84 100644
--- a/apps/documenteditor/main/app/view/DocumentHolder.js
+++ b/apps/documenteditor/main/app/view/DocumentHolder.js
@@ -271,6 +271,12 @@ define([
});
var menuInsertCaptionSeparator = new Common.UI.MenuItem({ caption: '--' });
+ me.menuSaveAsPicture = new Common.UI.MenuItem({
+ caption : me.textSaveAsPicture
+ });
+
+ var menuSaveAsPictureSeparator = new Common.UI.MenuItem({ caption: '--'});
+
me.menuEquationInsertCaption = new Common.UI.MenuItem({
caption : me.txtInsertCaption
});
@@ -455,10 +461,6 @@ define([
caption : me.editChartText
});
- var menuChartEditSeparator = new Common.UI.MenuItem({
- caption : '--'
- });
-
me.menuOriginalSize = new Common.UI.MenuItem({
caption : me.originalSizeText
});
@@ -591,10 +593,6 @@ define([
caption: me.textEditPoints
});
- var menuImgEditPointsSeparator = new Common.UI.MenuItem({
- caption : '--'
- });
-
this.pictureMenu = new Common.UI.Menu({
cls: 'shifted-right',
restoreHeightAndTop: true,
@@ -703,8 +701,6 @@ define([
if (me.menuChartEdit.isVisible())
me.menuChartEdit.setDisabled(islocked || value.imgProps.value.get_SeveralCharts());
- menuChartEditSeparator.setVisible(me.menuChartEdit.isVisible());
-
me.menuOriginalSize.setDisabled(islocked || value.imgProps.value.get_ImageUrl()===null || value.imgProps.value.get_ImageUrl()===undefined);
me.menuImageAdvanced.setDisabled(islocked);
me.menuImageAlign.setDisabled( islocked || (wrapping == Asc.c_oAscWrapStyle2.Inline) );
@@ -738,9 +734,9 @@ define([
me.menuImgPrint.setDisabled(!cancopy);
var lockreview = Common.Utils.InternalSettings.get("de-accept-reject-lock");
- me.menuImgAccept.setVisible(!lockreview);
- me.menuImgReject.setVisible(!lockreview);
- menuImgReviewSeparator.setVisible(!lockreview);
+ me.menuImgAccept.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
+ me.menuImgReject.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
+ menuImgReviewSeparator.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
var signGuid = (value.imgProps && value.imgProps.value && me.mode.isSignatureSupport) ? value.imgProps.value.asc_getSignatureId() : undefined,
isInSign = !!signGuid;
@@ -755,7 +751,6 @@ define([
var canEditPoints = me.api && me.api.asc_canEditGeometry();
me.menuImgEditPoints.setVisible(canEditPoints);
- menuImgEditPointsSeparator.setVisible(canEditPoints);
canEditPoints && me.menuImgEditPoints.setDisabled(islocked);
},
items: [
@@ -773,8 +768,6 @@ define([
me.menuImgRemoveControl,
me.menuImgControlSettings,
menuImgControlSeparator,
- me.menuImgEditPoints,
- menuImgEditPointsSeparator,
me.menuImageArrange,
me.menuImageAlign,
me.menuImageWrap,
@@ -782,11 +775,13 @@ define([
{ caption: '--' },
me.menuInsertCaption,
menuInsertCaptionSeparator,
+ me.menuSaveAsPicture,
+ menuSaveAsPictureSeparator,
me.menuImgCrop,
me.menuOriginalSize,
me.menuImgReplace,
me.menuChartEdit,
- menuChartEditSeparator,
+ me.menuImgEditPoints,
me.menuImageAdvanced
]
}).on('hide:after', function(menu, e, isFromInputControl) {
@@ -1151,64 +1146,7 @@ define([
me.menuTableEquation = new Common.UI.MenuItem({
caption : me.advancedEquationText,
- menu : new Common.UI.Menu({
- cls: 'ppm-toolbar shifted-right',
- menuAlign: 'tl-tr',
- items : [
- new Common.UI.MenuItem({
- caption : me.unicodeText,
- iconCls : 'menu__icon unicode',
- checkable : true,
- checkmark : false,
- checked : false,
- toggleGroup : 'popupparaeqinput',
- type : 'input',
- value : Asc.c_oAscMathInputType.Unicode
- }),
- new Common.UI.MenuItem({
- caption : me.latexText,
- iconCls : 'menu__icon latex',
- checkable : true,
- checkmark : false,
- checked : false,
- toggleGroup : 'popupparaeqinput',
- type : 'input',
- value : Asc.c_oAscMathInputType.LaTeX
- }),
- { caption : '--' },
- new Common.UI.MenuItem({
- caption : me.currProfText,
- iconCls : 'menu__icon professional-equation',
- type : 'view',
- value : {all: false, linear: false}
- }),
- new Common.UI.MenuItem({
- caption : me.currLinearText,
- iconCls : 'menu__icon linear-equation',
- type : 'view',
- value : {all: false, linear: true}
- }),
- new Common.UI.MenuItem({
- caption : me.allProfText,
- iconCls : 'menu__icon professional-equation',
- type : 'view',
- value : {all: true, linear: false}
- }),
- new Common.UI.MenuItem({
- caption : me.allLinearText,
- iconCls : 'menu__icon linear-equation',
- type : 'view',
- value : {all: true, linear: true}
- }),
- { caption : '--' },
- new Common.UI.MenuItem({
- caption : me.eqToInlineText,
- checkable : true,
- checked : false,
- type : 'mode'
- })
- ]
- })
+ menu : me.createEquationMenu('popuptableeqinput', 'tl-tr')
});
me.menuTableSelectText = new Common.UI.MenuItem({
@@ -1370,9 +1308,9 @@ define([
me.menuTablePrint.setDisabled(!cancopy);
var lockreview = Common.Utils.InternalSettings.get("de-accept-reject-lock");
- me.menuTableAccept.setVisible(!lockreview);
- me.menuTableReject.setVisible(!lockreview);
- menuTableReviewSeparator.setVisible(!lockreview);
+ me.menuTableAccept.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
+ me.menuTableReject.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
+ menuTableReviewSeparator.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
// bullets & numbering
var listId = me.api.asc_GetCurrentNumberingId(),
@@ -1661,66 +1599,8 @@ define([
me.menuParagraphEquation = new Common.UI.MenuItem({
caption : me.advancedEquationText,
- menu : new Common.UI.Menu({
- cls: 'ppm-toolbar shifted-right',
- menuAlign: 'tl-tr',
- items : [
- new Common.UI.MenuItem({
- caption : me.unicodeText,
- iconCls : 'menu__icon unicode',
- checkable : true,
- checkmark : false,
- checked : false,
- toggleGroup : 'popupparaeqinput',
- type : 'input',
- value : Asc.c_oAscMathInputType.Unicode
- }),
- new Common.UI.MenuItem({
- caption : me.latexText,
- iconCls : 'menu__icon latex',
- checkable : true,
- checkmark : false,
- checked : false,
- toggleGroup : 'popupparaeqinput',
- type : 'input',
- value : Asc.c_oAscMathInputType.LaTeX
- }),
- { caption : '--' },
- new Common.UI.MenuItem({
- caption : me.currProfText,
- iconCls : 'menu__icon professional-equation',
- type : 'view',
- value : {all: false, linear: false}
- }),
- new Common.UI.MenuItem({
- caption : me.currLinearText,
- iconCls : 'menu__icon linear-equation',
- type : 'view',
- value : {all: false, linear: true}
- }),
- new Common.UI.MenuItem({
- caption : me.allProfText,
- iconCls : 'menu__icon professional-equation',
- type : 'view',
- value : {all: true, linear: false}
- }),
- new Common.UI.MenuItem({
- caption : me.allLinearText,
- iconCls : 'menu__icon linear-equation',
- type : 'view',
- value : {all: true, linear: true}
- }),
- { caption : '--' },
- new Common.UI.MenuItem({
- caption : me.eqToInlineText,
- checkable : true,
- checked : false,
- type : 'mode'
- })
- ]
- })
+ menu : me.createEquationMenu('popupparaeqinput', 'tl-tr')
});
-
/** coauthoring begin **/
var menuCommentSeparatorPara = new Common.UI.MenuItem({
caption : '--'
@@ -2054,9 +1934,9 @@ define([
me.menuParaPrint.setDisabled(!cancopy);
var lockreview = Common.Utils.InternalSettings.get("de-accept-reject-lock");
- me.menuParaAccept.setVisible(!lockreview);
- me.menuParaReject.setVisible(!lockreview);
- menuParaReviewSeparator.setVisible(!lockreview);
+ me.menuParaAccept.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
+ me.menuParaReject.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
+ menuParaReviewSeparator.setVisible(me.mode.canReview && !me.mode.isReviewOnly && !lockreview);
// spellCheck
var spell = (value.spellProps!==undefined && value.spellProps.value.get_Checked()===false);
@@ -2978,6 +2858,67 @@ define([
}
},
+ createEquationMenu: function(toggleGroup, menuAlign) {
+ return new Common.UI.Menu({
+ cls: 'ppm-toolbar shifted-right',
+ menuAlign: menuAlign,
+ items : [
+ new Common.UI.MenuItem({
+ caption : this.unicodeText,
+ iconCls : 'menu__icon unicode',
+ checkable : true,
+ checkmark : false,
+ checked : false,
+ toggleGroup : toggleGroup,
+ type : 'input',
+ value : Asc.c_oAscMathInputType.Unicode
+ }),
+ new Common.UI.MenuItem({
+ caption : this.latexText,
+ iconCls : 'menu__icon latex',
+ checkable : true,
+ checkmark : false,
+ checked : false,
+ toggleGroup : toggleGroup,
+ type : 'input',
+ value : Asc.c_oAscMathInputType.LaTeX
+ }),
+ { caption : '--' },
+ new Common.UI.MenuItem({
+ caption : this.currProfText,
+ iconCls : 'menu__icon professional-equation',
+ type : 'view',
+ value : {all: false, linear: false}
+ }),
+ new Common.UI.MenuItem({
+ caption : this.currLinearText,
+ iconCls : 'menu__icon linear-equation',
+ type : 'view',
+ value : {all: false, linear: true}
+ }),
+ new Common.UI.MenuItem({
+ caption : this.allProfText,
+ iconCls : 'menu__icon professional-equation',
+ type : 'view',
+ value : {all: true, linear: false}
+ }),
+ new Common.UI.MenuItem({
+ caption : this.allLinearText,
+ iconCls : 'menu__icon linear-equation',
+ type : 'view',
+ value : {all: true, linear: true}
+ }),
+ { caption : '--' },
+ new Common.UI.MenuItem({
+ caption : this.eqToInlineText,
+ checkable : true,
+ checked : false,
+ type : 'mode'
+ })
+ ]
+ });
+ },
+
focus: function() {
var me = this;
_.defer(function(){ me.cmpEl.focus(); }, 50);
@@ -3203,6 +3144,7 @@ define([
textCells: 'Cells',
textSeveral: 'Several Rows/Columns',
txtInsertCaption: 'Insert Caption',
+ textSaveAsPicture: 'Save as picture',
txtEmpty: '(Empty)',
textFromStorage: 'From Storage',
advancedDropCapText: 'Drop Cap Settings',
diff --git a/apps/documenteditor/main/app/view/DropcapSettingsAdvanced.js b/apps/documenteditor/main/app/view/DropcapSettingsAdvanced.js
index 26bcc3618..13864acfb 100644
--- a/apps/documenteditor/main/app/view/DropcapSettingsAdvanced.js
+++ b/apps/documenteditor/main/app/view/DropcapSettingsAdvanced.js
@@ -151,8 +151,8 @@ define([
{id: Common.UI.getId(), displayValue: '1.5 ' + txtPt, value: 1.5, pxValue: 2, offsety: 40},
{id: Common.UI.getId(), displayValue: '2.25 ' + txtPt, value: 2.25, pxValue: 3, offsety: 60},
{id: Common.UI.getId(), displayValue: '3 ' + txtPt, value: 3, pxValue: 4, offsety: 80},
- {id: Common.UI.getId(), displayValue: '4.5 ' + txtPt, value: 4.5, pxValue: 5, offsety: 100},
- {id: Common.UI.getId(), displayValue: '6 ' + txtPt, value: 6, pxValue: 6, offsety: 120}
+ {id: Common.UI.getId(), displayValue: '4.5 ' + txtPt, value: 4.5, pxValue: 6, offsety: 100},
+ {id: Common.UI.getId(), displayValue: '6 ' + txtPt, value: 6, pxValue: 8, offsety: 120}
]
}).on('selected', _.bind(function(combo, record) {
this.BorderSize = {ptValue: record.value, pxValue: record.pxValue};
@@ -201,7 +201,8 @@ define([
}
}
var colorstr = (typeof(color) == 'object') ? color.color : color;
- me.tableStyler.setCellsColor(colorstr);
+ me.tableStyler.setTableColor(colorstr);
+ me.tableStyler.redrawTable();
}, this));
this.colorsBack = this.btnBackColor.getPicker();
@@ -667,8 +668,7 @@ define([
},
afterRender: function() {
- this.updateMetricUnit();
- this.updateThemeColors();
+
if (!this.isFrame) {
this.cmbFonts.fillFonts(this.fontStore);
@@ -676,6 +676,13 @@ define([
this._setDefaults(this._originalProps);
+ var colorstr = (typeof(this.paragraphShade) == 'object') ? this.paragraphShade.color : this.paragraphShade;
+ this.tableStyler.setTableColor(colorstr);
+ (colorstr!='transparent') && this.tableStyler.redrawTable();
+
+ this.updateMetricUnit();
+ this.updateThemeColors();
+
if (this.borderProps !== undefined) {
this.btnBorderColor.setColor(this.borderProps.borderColor);
this.btnBorderColor.setAutoColor(this.borderProps.borderColor=='auto');
@@ -692,16 +699,13 @@ define([
this.setTitle((this.isFrame) ? this.textTitleFrame : this.textTitle);
- for (var i=0; i
-1 ) {
- updateBorders.put_Left(this._UpdateBorderStyle(updateBorders.get_Left(), (size>0)));
- if (this.ChangedBorders) {
- this.ChangedBorders.put_Left(new Asc.asc_CTextBorder(updateBorders.get_Left()));
- }
+ updateBorders.put_Between(this._UpdateBorderStyle(updateBorders.get_Between(), (size>0)));
+ if (this.ChangedBorders) {
+ this.ChangedBorders.put_Between(new Asc.asc_CTextBorder(updateBorders.get_Between()));
}
- if ( ct.col== this.tableStylerColumns-1 && border.indexOf('r') > -1 ) {
- updateBorders.put_Right(this._UpdateBorderStyle(updateBorders.get_Right(), (size>0)));
- if (this.ChangedBorders) {
- this.ChangedBorders.put_Right(new Asc.asc_CTextBorder(updateBorders.get_Right()));
- }
- }
-
- if ( ct.row==0 && border.indexOf('t') > -1 ) {
- updateBorders.put_Top(this._UpdateBorderStyle(updateBorders.get_Top(), (size>0)));
- if (this.ChangedBorders) {
- this.ChangedBorders.put_Top(new Asc.asc_CTextBorder(updateBorders.get_Top()));
- }
- }
-
- if ( ct.row== this.tableStylerRows-1 && border.indexOf('b') > -1 ) {
- updateBorders.put_Bottom(this._UpdateBorderStyle(updateBorders.get_Bottom(), (size>0)));
- if (this.ChangedBorders) {
- this.ChangedBorders.put_Bottom(new Asc.asc_CTextBorder(updateBorders.get_Bottom()));
- }
- }
-
- if ( ct.row==0 && border.indexOf('b') > -1 ||
- ct.row== this.tableStylerRows-1 && border.indexOf('t') > -1) {
- updateBorders.put_Between(this._UpdateBorderStyle(updateBorders.get_Between(), (size>0)));
- if (this.ChangedBorders) {
- this.ChangedBorders.put_Between(new Asc.asc_CTextBorder(updateBorders.get_Between()));
- }
- }
},
_UpdateTableBordersStyle: function(ct, border, size, color, destination) {
diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js
index b9700e008..3748d4a7c 100644
--- a/apps/documenteditor/main/app/view/FileMenu.js
+++ b/apps/documenteditor/main/app/view/FileMenu.js
@@ -69,7 +69,7 @@ define([
if (item.options.action === 'help') {
if ( panel.noHelpContents === true && navigator.onLine ) {
this.fireEvent('item:click', [this, 'external-help', true]);
- window.open(panel.urlHelpCenter, '_blank');
+ !!panel.urlHelpCenter && window.open(panel.urlHelpCenter, '_blank');
return;
}
}
@@ -161,6 +161,17 @@ define([
dataHintOffset: [2, 14]
});
+ this.miPrintWithPreview = new Common.UI.MenuItem({
+ el : $markup.elementById('#fm-btn-print-with-preview'),
+ action : 'printpreview',
+ caption : this.btnPrintCaption,
+ canFocused: false,
+ dataHint: 1,
+ dataHintDirection: 'left-top',
+ dataHintOffset: [2, 14],
+ dataHintTitle: 'P'
+ });
+
this.miPrint = new Common.UI.MenuItem({
el : $markup.elementById('#fm-btn-print'),
action : 'print',
@@ -295,6 +306,7 @@ define([
this.miSaveCopyAs,
this.miSaveAs,
this.miPrint,
+ this.miPrintWithPreview,
this.miRename,
this.miProtect,
this.miRecent,
@@ -385,7 +397,8 @@ define([
this.miSaveAs[((this.mode.canDownload || this.mode.canDownloadOrigin) && this.mode.isDesktopApp && this.mode.isOffline)?'show':'hide']();
this.miSave[this.mode.isEdit && Common.UI.LayoutManager.isElementVisible('toolbar-file-save') ?'show':'hide']();
this.miEdit[!this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights ?'show':'hide']();
- this.miPrint[this.mode.canPrint?'show':'hide']();
+ this.miPrint[this.mode.canPrint && !this.mode.canPreviewPrint ?'show':'hide']();
+ this.miPrintWithPreview[this.mode.canPreviewPrint?'show':'hide']();
this.miRename[(this.mode.canRename && !this.mode.isDesktopApp) ?'show':'hide']();
this.miProtect[this.mode.canProtect ?'show':'hide']();
separatorVisible = (this.mode.canDownload || this.mode.canDownloadOrigin || this.mode.isEdit && Common.UI.LayoutManager.isElementVisible('toolbar-file-save') || this.mode.canPrint || this.mode.canProtect ||
@@ -467,6 +480,12 @@ define([
this.panels['help'].setLangConfig(this.mode.lang);
}
+ if (this.mode.canPreviewPrint) {
+ var printPanel = DE.getController('Print').getView('PrintWithPreview');
+ printPanel.menu = this;
+ !this.panels['printpreview'] && (this.panels['printpreview'] = printPanel.render(this.$el.find('#panel-print')));
+ }
+
if ( Common.Controllers.Desktop.isActive() ) {
$(' ').insertAfter($('#fm-btn-recent', this.$el));
this.items.push(
diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js
index a9cf80864..fc7b14c2e 100644
--- a/apps/documenteditor/main/app/view/FileMenuPanels.js
+++ b/apps/documenteditor/main/app/view/FileMenuPanels.js
@@ -56,37 +56,40 @@ define([
{name: 'DOCX', imgCls: 'docx', type: Asc.c_oAscFileType.DOCX},
{name: 'PDF', imgCls: 'pdf', type: Asc.c_oAscFileType.PDF},
{name: 'ODT', imgCls: 'odt', type: Asc.c_oAscFileType.ODT},
- {name: 'TXT', imgCls: 'txt', type: Asc.c_oAscFileType.TXT}
- ],[
- {name: 'DOTX', imgCls: 'dotx', type: Asc.c_oAscFileType.DOTX},
- {name: 'PDFA', imgCls: 'pdfa', type: Asc.c_oAscFileType.PDFA},
- {name: 'OTT', imgCls: 'ott', type: Asc.c_oAscFileType.OTT},
- {name: 'RTF', imgCls: 'rtf', type: Asc.c_oAscFileType.RTF}
- ],[
- {name: 'DOCM', imgCls: 'docm', type: Asc.c_oAscFileType.DOCM},
{name: 'DOCXF', imgCls: 'docxf', type: Asc.c_oAscFileType.DOCXF},
{name: 'OFORM', imgCls: 'oform', type: Asc.c_oAscFileType.OFORM}
],[
- {name: 'HTML (Zipped)', imgCls: 'html', type: Asc.c_oAscFileType.HTML},
+ {name: 'DOTX', imgCls: 'dotx', type: Asc.c_oAscFileType.DOTX},
+ {name: 'DOCM', imgCls: 'docm', type: Asc.c_oAscFileType.DOCM},
+ {name: 'PDFA', imgCls: 'pdfa', type: Asc.c_oAscFileType.PDFA},
+ {name: 'OTT', imgCls: 'ott', type: Asc.c_oAscFileType.OTT}
+ ],[
+ {name: 'RTF', imgCls: 'rtf', type: Asc.c_oAscFileType.RTF},
+ {name: 'TXT', imgCls: 'txt', type: Asc.c_oAscFileType.TXT},
{name: 'FB2', imgCls: 'fb2', type: Asc.c_oAscFileType.FB2},
- {name: 'EPUB', imgCls: 'epub', type: Asc.c_oAscFileType.EPUB}
+ {name: 'EPUB', imgCls: 'epub', type: Asc.c_oAscFileType.EPUB},
+ {name: 'HTML (Zipped)', imgCls: 'html', type: Asc.c_oAscFileType.HTML}
+ ], [
+ {name: 'JPG', imgCls: 'jpg', type: Asc.c_oAscFileType.JPG},
+ {name: 'PNG', imgCls: 'png', type: Asc.c_oAscFileType.PNG}
]],
-
template: _.template([
- '',
- '<% _.each(rows, function(row) { %>',
- '',
- '<% _.each(row, function(item) { %>',
- '<% if (item.type!==Asc.c_oAscFileType.DOCM || fileType=="docm") { %>',
- ' ',
- '<% } %>',
- '<% }) %>',
- ' ',
- '<% }) %>',
- '
'
+ ''
].join('')),
initialize: function(options) {
@@ -95,15 +98,24 @@ define([
this.menu = options.menu;
this.fileType = options.fileType;
this.mode = options.mode;
+
+ Common.NotificationCenter.on({
+ 'window:resize': _.bind(function() {
+ var divided = Common.Utils.innerWidth() >= this.maxWidth;
+ if (this.isDivided !== divided) {
+ this.$el.find('.divider').css('width', divided ? '100%' : '0');
+ this.isDivided = divided;
+ }
+ }, this)
+ });
},
render: function() {
if (/^pdf$/.test(this.fileType)) {
- this.formats[0].splice(1, 1); // remove pdf
- this.formats[1].splice(1, 1); // remove pdfa
- this.formats[3].push({name: 'PDF', imgCls: 'pdf', type: ''}); // original pdf
+ this.formats[0].splice(1, 1, {name: 'PDF', imgCls: 'pdf', type: ''}); // remove pdf
+ this.formats[1].splice(2, 1); // remove pdfa
} else if (/^xps|oxps$/.test(this.fileType)) {
- this.formats[3].push({name: this.fileType.toUpperCase(), imgCls: this.fileType, type: ''}); // original xps/oxps
+ this.formats[0].push({name: this.fileType.toUpperCase(), imgCls: this.fileType, type: ''}); // original xps/oxps
} else if (/^djvu$/.test(this.fileType)) {
this.formats = [[
{name: 'DJVU', imgCls: 'djvu', type: ''}, // original djvu
@@ -112,12 +124,10 @@ define([
}
if (this.mode && !this.mode.canFeatureForms && this.formats.length>2) {
- this.formats[2].splice(1, 2);
- this.formats[2] = this.formats[2].concat(this.formats[3]);
- this.formats[3] = undefined;
+ this.formats[0].splice(3, 2); // remove docxf and oform
}
- this.$el.html(this.template({rows:this.formats, fileType: (this.fileType || 'docx').toLowerCase()}));
+ this.$el.html(this.template({rows:this.formats, fileType: (this.fileType || 'docx').toLowerCase(), header: this.textDownloadAs}));
$('.btn-doc-format',this.el).on('click', _.bind(this.onFormatClick,this));
if (_.isUndefined(this.scroller)) {
@@ -128,6 +138,21 @@ define([
});
}
+ var itemWidth = 70 + 24, // width + margin
+ maxCount = 0;
+ this.formats.forEach(_.bind(function (item, index) {
+ var count = item.length;
+ if (count > maxCount) {
+ maxCount = count;
+ }
+ }, this));
+ this.maxWidth = $('#file-menu-panel .panel-menu').outerWidth() + 20 + 10 + itemWidth * maxCount; // menu + left padding + margin
+
+ if (Common.Utils.innerWidth() >= this.maxWidth) {
+ this.$el.find('.divider').css('width', '100%');
+ this.isDivided = true;
+ }
+
return this;
},
@@ -141,7 +166,9 @@ define([
if (!_.isUndefined(type) && this.menu) {
this.menu.fireEvent('saveas:format', [this.menu, type.value ? parseInt(type.value) : undefined]);
}
- }
+ },
+
+ textDownloadAs: "Download as"
});
DE.Views.FileMenuPanels.ViewSaveCopy = Common.UI.BaseView.extend({
@@ -149,40 +176,44 @@ define([
menu: undefined,
formats: [[
- {name: 'DOCX', imgCls: 'docx', type: Asc.c_oAscFileType.DOCX, ext: '.docx'},
- {name: 'PDF', imgCls: 'pdf', type: Asc.c_oAscFileType.PDF, ext: '.pdf'},
- {name: 'ODT', imgCls: 'odt', type: Asc.c_oAscFileType.ODT, ext: '.odt'},
- {name: 'TXT', imgCls: 'txt', type: Asc.c_oAscFileType.TXT, ext: '.txt'}
+ {name: 'DOCX', imgCls: 'docx', type: Asc.c_oAscFileType.DOCX},
+ {name: 'PDF', imgCls: 'pdf', type: Asc.c_oAscFileType.PDF},
+ {name: 'ODT', imgCls: 'odt', type: Asc.c_oAscFileType.ODT},
+ {name: 'DOCXF', imgCls: 'docxf', type: Asc.c_oAscFileType.DOCXF},
+ {name: 'OFORM', imgCls: 'oform', type: Asc.c_oAscFileType.OFORM}
],[
- {name: 'DOTX', imgCls: 'dotx', type: Asc.c_oAscFileType.DOTX, ext: '.dotx'},
- {name: 'PDFA', imgCls: 'pdfa', type: Asc.c_oAscFileType.PDFA, ext: '.pdf'},
- {name: 'OTT', imgCls: 'ott', type: Asc.c_oAscFileType.OTT, ext: '.ott'},
- {name: 'RTF', imgCls: 'rtf', type: Asc.c_oAscFileType.RTF, ext: '.rtf'}
+ {name: 'DOTX', imgCls: 'dotx', type: Asc.c_oAscFileType.DOTX},
+ {name: 'DOCM', imgCls: 'docm', type: Asc.c_oAscFileType.DOCM},
+ {name: 'PDFA', imgCls: 'pdfa', type: Asc.c_oAscFileType.PDFA},
+ {name: 'OTT', imgCls: 'ott', type: Asc.c_oAscFileType.OTT}
],[
- {name: 'DOCM', imgCls: 'docm', type: Asc.c_oAscFileType.DOCM, ext: '.docm'},
- {name: 'DOCXF', imgCls: 'docxf', type: Asc.c_oAscFileType.DOCXF, ext: '.docxf'},
- {name: 'OFORM', imgCls: 'oform', type: Asc.c_oAscFileType.OFORM, ext: '.oform'}
- ],[
- {name: 'HTML (Zipped)', imgCls: 'html', type: Asc.c_oAscFileType.HTML, ext: '.html'},
- {name: 'FB2', imgCls: 'fb2', type: Asc.c_oAscFileType.FB2, ext: '.fb2'},
- {name: 'EPUB', imgCls: 'epub', type: Asc.c_oAscFileType.EPUB, ext: '.epub'}
+ {name: 'RTF', imgCls: 'rtf', type: Asc.c_oAscFileType.RTF},
+ {name: 'TXT', imgCls: 'txt', type: Asc.c_oAscFileType.TXT},
+ {name: 'FB2', imgCls: 'fb2', type: Asc.c_oAscFileType.FB2},
+ {name: 'EPUB', imgCls: 'epub', type: Asc.c_oAscFileType.EPUB},
+ {name: 'HTML (Zipped)', imgCls: 'html', type: Asc.c_oAscFileType.HTML}
+ ], [
+ {name: 'JPG', imgCls: 'jpg', type: Asc.c_oAscFileType.JPG},
+ {name: 'PNG', imgCls: 'png', type: Asc.c_oAscFileType.PNG}
]],
template: _.template([
- '',
- '<% _.each(rows, function(row) { %>',
- '',
+ ' ',
- '<% }) %>',
- '
'
+ '
',
+ '<% }) %>',
+ ' ',
+ ''
].join('')),
initialize: function(options) {
@@ -191,15 +222,24 @@ define([
this.menu = options.menu;
this.fileType = options.fileType;
this.mode = options.mode;
+
+ Common.NotificationCenter.on({
+ 'window:resize': _.bind(function() {
+ var divided = Common.Utils.innerWidth() >= this.maxWidth;
+ if (this.isDivided !== divided) {
+ this.$el.find('.divider').css('width', divided ? '100%' : '0');
+ this.isDivided = divided;
+ }
+ }, this)
+ });
},
render: function() {
if (/^pdf$/.test(this.fileType)) {
- this.formats[0].splice(1, 1); // remove pdf
- this.formats[1].splice(1, 1); // remove pdfa
- this.formats[3].push({name: 'PDF', imgCls: 'pdf', type: '', ext: true}); // original pdf
+ this.formats[0].splice(1, 1, {name: 'PDF', imgCls: 'pdf', type: '', ext: true}); // remove pdf
+ this.formats[1].splice(2, 1); // remove pdfa
} else if (/^xps|oxps$/.test(this.fileType)) {
- this.formats[3].push({name: this.fileType.toUpperCase(), imgCls: this.fileType, type: '', ext: true}); // original xps/oxps
+ this.formats[0].push({name: this.fileType.toUpperCase(), imgCls: this.fileType, type: '', ext: true}); // original xps/oxps
} else if (/^djvu$/.test(this.fileType)) {
this.formats = [[
{name: 'DJVU', imgCls: 'djvu', type: '', ext: true}, // original djvu
@@ -208,12 +248,10 @@ define([
}
if (this.mode && !this.mode.canFeatureForms && this.formats.length>2) {
- this.formats[2].splice(1, 2);
- this.formats[2] = this.formats[2].concat(this.formats[3]);
- this.formats[3] = undefined;
+ this.formats[0].splice(3, 2); // remove docxf and oform
}
- this.$el.html(this.template({rows:this.formats, fileType: (this.fileType || 'docx').toLowerCase()}));
+ this.$el.html(this.template({rows:this.formats, fileType: (this.fileType || 'docx').toLowerCase(), header: this.textSaveCopyAs}));
$('.btn-doc-format',this.el).on('click', _.bind(this.onFormatClick,this));
if (_.isUndefined(this.scroller)) {
@@ -224,6 +262,21 @@ define([
});
}
+ var itemWidth = 70 + 24, // width + margin
+ maxCount = 0;
+ this.formats.forEach(_.bind(function (item, index) {
+ var count = item.length;
+ if (count > maxCount) {
+ maxCount = count;
+ }
+ }, this));
+ this.maxWidth = $('#file-menu-panel .panel-menu').outerWidth() + 20 + 10 + itemWidth * maxCount; // menu + left padding + margin
+
+ if (Common.Utils.innerWidth() >= this.maxWidth) {
+ this.$el.find('.divider').css('width', '100%');
+ this.isDivided = true;
+ }
+
return this;
},
@@ -238,7 +291,9 @@ define([
if (!_.isUndefined(type) && !_.isUndefined(ext) && this.menu) {
this.menu.fireEvent('saveas:format', [this.menu, type.value ? parseInt(type.value) : undefined, ext.value]);
}
- }
+ },
+
+ textSaveCopyAs: "Save Copy as"
});
DE.Views.FileMenuPanels.Settings = Common.UI.BaseView.extend(_.extend({
@@ -247,7 +302,8 @@ define([
template: _.template([
'