diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index 0c1ec666e..74667b038 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -23,9 +23,11 @@ key: 'key', vkey: 'vkey', info: { - author: 'author name', + author: 'author name', // must be deprecated, use owner instead + owner: 'owner name', folder: 'path to document', - created: '', + created: '', // must be deprecated, use uploaded instead + uploaded: '', sharingSettings: [ { user: 'user name', @@ -63,6 +65,7 @@ saveAsUrl: 'folder for saving files' licenseUrl: , customerId: , + region: // can be 'en-us' or lang code user: { id: 'user id', @@ -129,7 +132,6 @@ }, plugins: { autostart: ['asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}'], - url: '../../../../sdkjs-plugins/', pluginsData: [ "helloworld/config.json", "chess/config.json", @@ -139,7 +141,6 @@ } }, events: { - 'onReady': , // deprecated 'onAppReady': , 'onBack': , 'onDocumentStateChange': @@ -174,7 +175,6 @@ } }, events: { - 'onReady': , // deprecated 'onAppReady': , 'onBack': , 'onError': , @@ -199,12 +199,14 @@ _config.editorConfig.canRequestClose = _config.events && !!_config.events.onRequestClose; _config.editorConfig.canRename = _config.events && !!_config.events.onRequestRename; _config.editorConfig.canMakeActionLink = _config.events && !!_config.events.onMakeActionLink; + _config.editorConfig.canRequestUsers = _config.events && !!_config.events.onRequestUsers; + _config.editorConfig.canRequestSendNotify = _config.events && !!_config.events.onRequestSendNotify; _config.editorConfig.mergeFolderUrl = _config.editorConfig.mergeFolderUrl || _config.editorConfig.saveAsUrl; + _config.editorConfig.canRequestSaveAs = _config.events && !!_config.events.onRequestSaveAs; + _config.editorConfig.canRequestInsertImage = _config.events && !!_config.events.onRequestInsertImage; + _config.editorConfig.canRequestMailMergeRecipients = _config.events && !!_config.events.onRequestMailMergeRecipients; _config.frameEditorId = placeholderId; - _config.events && !!_config.events.onReady && console.log("Obsolete: The onReady event is deprecated. Please use onAppReady instead."); - _config.events && (_config.events.onAppReady = _config.events.onAppReady || _config.events.onReady); - var onMouseUp = function (evt) { _processMouse(evt); }; @@ -537,6 +539,41 @@ }); }; + var _setUsers = function(data) { + _sendCommand({ + command: 'setUsers', + data: data + }); + }; + + var _showSharingSettings = function(data) { + _sendCommand({ + command: 'showSharingSettings', + data: data + }); + }; + + var _setSharingSettings = function(data) { + _sendCommand({ + command: 'setSharingSettings', + data: data + }); + }; + + var _insertImage = function(data) { + _sendCommand({ + command: 'insertImage', + data: data + }); + }; + + var _setMailMergeRecipients = function(data) { + _sendCommand({ + command: 'setMailMergeRecipients', + data: data + }); + }; + var _processMouse = function(evt) { var r = iframe.getBoundingClientRect(); var data = { @@ -576,7 +613,12 @@ serviceCommand : _serviceCommand, attachMouseEvents : _attachMouseEvents, detachMouseEvents : _detachMouseEvents, - destroyEditor : _destroyEditor + destroyEditor : _destroyEditor, + setUsers : _setUsers, + showSharingSettings : _showSharingSettings, + setSharingSettings : _setSharingSettings, + insertImage : _insertImage, + setMailMergeRecipients: _setMailMergeRecipients } }; diff --git a/apps/common/Gateway.js b/apps/common/Gateway.js index a906dedba..b8e90ebad 100644 --- a/apps/common/Gateway.js +++ b/apps/common/Gateway.js @@ -98,6 +98,26 @@ if (Common === undefined) { 'resetFocus': function(data) { $me.trigger('resetfocus', data); + }, + + 'setUsers': function(data) { + $me.trigger('setusers', data); + }, + + 'showSharingSettings': function(data) { + $me.trigger('showsharingsettings', data); + }, + + 'setSharingSettings': function(data) { + $me.trigger('setsharingsettings', data); + }, + + 'insertImage': function(data) { + $me.trigger('insertimage', data); + }, + + 'setMailMergeRecipients': function(data) { + $me.trigger('setmailmergerecipients', data); } }; @@ -238,6 +258,16 @@ if (Common === undefined) { }); }, + requestSaveAs: function(url, title) { + _postMessage({ + event: 'onRequestSaveAs', + data: { + url: url, + title: title + } + }); + }, + collaborativeChanges: function() { _postMessage({event: 'onCollaborativeChanges'}); }, @@ -262,6 +292,22 @@ if (Common === undefined) { _postMessage({event:'onMakeActionLink', data: config}) }, + requestUsers: function () { + _postMessage({event:'onRequestUsers'}) + }, + + requestSendNotify: function (emails) { + _postMessage({event:'onRequestSendNotify', data: emails}) + }, + + requestInsertImage: function () { + _postMessage({event:'onRequestInsertImage'}) + }, + + requestMailMergeRecipients: function () { + _postMessage({event:'onRequestMailMergeRecipients'}) + }, + on: function(event, handler){ var localHandler = function(event, data){ handler.call(me, data) diff --git a/apps/common/embed/lib/util/utils.js b/apps/common/embed/lib/util/utils.js index 0637a0450..0ad2ed91e 100644 --- a/apps/common/embed/lib/util/utils.js +++ b/apps/common/embed/lib/util/utils.js @@ -44,7 +44,7 @@ newDocumentPage.focus(); } } - , dialogPrint: function(url) { + , dialogPrint: function(url, api) { $('#id-print-frame').remove(); if ( !!url ) { @@ -59,10 +59,14 @@ document.body.appendChild(iframePrint); iframePrint.onload = function () { - iframePrint.contentWindow.focus(); - iframePrint.contentWindow.print(); - iframePrint.contentWindow.blur(); - window.focus(); + try { + iframePrint.contentWindow.focus(); + iframePrint.contentWindow.print(); + iframePrint.contentWindow.blur(); + window.focus(); + } catch (e) { + api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF)); + } }; iframePrint.src = url; diff --git a/apps/common/embed/lib/view/modals.js b/apps/common/embed/lib/view/modals.js index 4c9c02e07..030a8f4bc 100644 --- a/apps/common/embed/lib/view/modals.js +++ b/apps/common/embed/lib/view/modals.js @@ -61,10 +61,10 @@ common.view.modals = new(function() { ''; var _tplbody_embed = '
' + - 'Width:' + + '{width}:' + '' + '' + - 'Height:' + + '{height}:' + '
' + ''; @@ -75,22 +75,29 @@ common.view.modals = new(function() { var _$dlg; if (name == 'share') { _$dlg = $(tplDialog - .replace(/\{title}/, 'Share Link') + .replace(/\{title}/, this.txtShare) .replace(/\{body}/, _tplbody_share) - .replace(/\{footer}/, '')) + .replace(/\{footer}/, '')) .appendTo(parent) .attr('id', 'dlg-share'); } else if (name == 'embed') { _$dlg = $(tplDialog - .replace(/\{title}/, 'Embed') + .replace(/\{title}/, this.txtEmbed) .replace(/\{body}/, _tplbody_embed) - .replace(/\{footer}/, '')) + .replace(/\{width}/, this.txtWidth) + .replace(/\{height}/, this.txtHeight) + .replace(/\{footer}/, '')) .appendTo(parent) .attr('id', 'dlg-embed'); } return _$dlg; - } + }, + txtWidth: 'Width', + txtHeight: 'Height', + txtShare: 'Share Link', + txtCopy: 'Copy to clipboard', + txtEmbed: 'Embed' }; })(); diff --git a/apps/common/locale.js b/apps/common/locale.js index 40c9a5f20..3e3bdda3b 100644 --- a/apps/common/locale.js +++ b/apps/common/locale.js @@ -35,29 +35,9 @@ if (Common === undefined) { } Common.Locale = new(function() { + "use strict"; var l10n = {}; - var _createXMLHTTPObject = function() { - var xmlhttp; - if (typeof XMLHttpRequest != 'undefined') { - xmlhttp = new XMLHttpRequest(); - } else { - try { - xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - } - catch (e) { - try { - xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); - } - catch (E) { - xmlhttp = false; - } - } - } - - return xmlhttp; - }; - var _applyLocalization = function() { try { for (var prop in l10n) { @@ -98,25 +78,40 @@ Common.Locale = new(function() { return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); }; - try { - var langParam = _getUrlParameterByName('lang'); - var xhrObj = _createXMLHTTPObject(); - if (xhrObj && langParam) { - var lang = langParam.split(/[\-\_]/)[0]; - xhrObj.open('GET', 'locale/' + lang + '.json', false); - xhrObj.send(''); - l10n = eval("(" + xhrObj.responseText + ")"); - } - } - catch (e) { - try { - xhrObj.open('GET', 'locale/en.json', false); - xhrObj.send(''); - l10n = eval("(" + xhrObj.responseText + ")"); - } - catch (e) { - } - } + var _requireLang = function () { + var lang = (_getUrlParameterByName('lang') || 'en').split(/[\-_]/)[0]; + fetch('locale/' + lang + '.json') + .then(function(response) { + if (!response.ok) { + if (lang != 'en') + /* load default lang if fetch failed */ + return fetch('locale/en.json'); + + throw new Error('server error'); + } + return response.json(); + }).then(function(response) { + if ( response.then ) + return response.json(); + else { + l10n = response; + /* to break promises chain */ + throw new Error('loaded'); + } + }).then(function(json) { + if ( !!json ) l10n = json; + }).catch(function(e) { + if ( e.message == 'loaded' ) { + + } else + console.log('fetch error: ' + e); + }); + }; + + if ( !window.fetch ) { + /* use fetch polifill if native method isn't supported */ + require(['../vendor/fetch/fetch.umd'], _requireLang); + } else _requireLang(); return { apply: _applyLocalization, diff --git a/apps/common/main/lib/component/Button.js b/apps/common/main/lib/component/Button.js index 1d0f3e956..816c88988 100644 --- a/apps/common/main/lib/component/Button.js +++ b/apps/common/main/lib/component/Button.js @@ -513,8 +513,8 @@ define([ }); el.on('mouseout', function(e) { + me.cmpEl.removeClass('over'); if (!me.disabled) { - me.cmpEl.removeClass('over'); me.trigger('mouseout', me, e); } }); diff --git a/apps/common/main/lib/component/CheckBox.js b/apps/common/main/lib/component/CheckBox.js index fa353ba98..5aaa8a112 100644 --- a/apps/common/main/lib/component/CheckBox.js +++ b/apps/common/main/lib/component/CheckBox.js @@ -137,6 +137,9 @@ define([ }, setDisabled: function(disabled) { + if (!this.rendered) + return; + disabled = (disabled===true); if (disabled !== this.disabled) { this.$label.toggleClass('disabled', disabled); diff --git a/apps/common/main/lib/component/ComboBorderSize.js b/apps/common/main/lib/component/ComboBorderSize.js index 3f9cb35f3..a22123a92 100644 --- a/apps/common/main/lib/component/ComboBorderSize.js +++ b/apps/common/main/lib/component/ComboBorderSize.js @@ -111,7 +111,7 @@ define([ editable: false, store: new Common.UI.BordersStore(), data: data, - menuStyle: 'min-width: 150px;' + menuStyle: 'min-width: 160px;' }, options)); }, @@ -209,7 +209,7 @@ define([ editable: true, store: new Common.UI.BordersStore(), data: data, - menuStyle: 'min-width: 150px;' + menuStyle: 'min-width: 160px;' }, options)); }, diff --git a/apps/common/main/lib/component/ComboBox.js b/apps/common/main/lib/component/ComboBox.js index a70154c7e..8b24e3caf 100644 --- a/apps/common/main/lib/component/ComboBox.js +++ b/apps/common/main/lib/component/ComboBox.js @@ -85,12 +85,13 @@ define([ menuStyle : '', displayField: 'displayValue', valueField : 'value', + search : false, scrollAlwaysVisible: false }, template: _.template([ '', - '', + '', '', '', @@ -93,9 +93,12 @@ define([ } })); - this.recent = _.isNumber(options.recent) ? options.recent : 3; + this.recent = _.isNumber(options.recent) ? options.recent : 5; - Common.NotificationCenter.on('fonts:change', _.bind(this.onApiChangeFont, this)); + var filter = Common.localStorage.getKeysFilter(); + this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : ''; + + // Common.NotificationCenter.on('fonts:change', _.bind(this.onApiChangeFont, this)); Common.NotificationCenter.on('fonts:load', _.bind(this.fillFonts, this)); }, @@ -115,8 +118,6 @@ define([ this._input.on('focus', _.bind(function() {this.inFormControl = true;}, this)); this._input.on('blur', _.bind(function() {this.inFormControl = false;}, this)); - this._modalParents = this.cmpEl.closest('.asc-window'); - return this; }, @@ -322,6 +323,13 @@ define([ if (me.recent > 0) { me.store.on('add', me.onInsertItem, me); me.store.on('remove', me.onRemoveItem, me); + + Common.Utils.InternalSettings.set(me.appPrefix + "-settings-recent-fonts", Common.localStorage.getItem(me.appPrefix + "-settings-recent-fonts")); + var arr = Common.Utils.InternalSettings.get(me.appPrefix + "-settings-recent-fonts"); + arr = arr ? arr.split(';') : []; + arr.reverse().forEach(function(item) { + item && me.addItemToRecent(me.store.findWhere({name: item}), true); + }); } }); }, @@ -339,8 +347,6 @@ define([ var name = (_.isFunction(font.get_Name) ? font.get_Name() : font.asc_getName()); if (this.getRawValue() !== name) { - if (this._modalParents.length > 0) return; - var record = this.store.findWhere({ name: name }); @@ -364,17 +370,17 @@ define([ }, itemClicked: function (e) { + Common.UI.ComboBox.prototype.itemClicked.apply(this, arguments); + var el = $(e.target).closest('li'); var record = this.store.findWhere({id: el.attr('id')}); this.addItemToRecent(record); - - Common.UI.ComboBox.prototype.itemClicked.apply(this, arguments); }, onInsertItem: function(item) { $(this.el).find('ul').prepend(_.template([ '
  • ', - '', + '', '
  • ' ].join(''))({ item: item.attributes, @@ -387,6 +393,10 @@ define([ }, onBeforeShowMenu: function(e) { + if (this.store.length<1) { + e.preventDefault(); + return; + } Common.UI.ComboBox.prototype.onBeforeShowMenu.apply(this, arguments); if (!this.getSelectedRecord() && !!this.getRawValue()) { @@ -419,19 +429,29 @@ define([ Common.UI.ComboBox.prototype.onAfterHideMenu.apply(this, arguments); }, - addItemToRecent: function(record) { + addItemToRecent: function(record, silent) { if (this.recent<1) return; - if (record.get('type') != FONT_TYPE_RECENT && - !this.store.findWhere({name: record.get('name'),type:FONT_TYPE_RECENT})) { - var fonts = this.store.where({type:FONT_TYPE_RECENT}); - if (!(fonts.length < this.recent)) { - this.store.remove(fonts[this.recent - 1]); - } + var font = this.store.findWhere({name: record.get('name'),type:FONT_TYPE_RECENT}); + font && this.store.remove(font); - var new_record = record.clone(); - new_record.set({'type': FONT_TYPE_RECENT, 'id': Common.UI.getId(), cloneid: record.id}); - this.store.add(new_record, {at:0}); + var fonts = this.store.where({type:FONT_TYPE_RECENT}); + if (!(fonts.length < this.recent)) { + this.store.remove(fonts[this.recent - 1]); + } + + var new_record = record.clone(); + new_record.set({'type': FONT_TYPE_RECENT, 'id': Common.UI.getId(), cloneid: record.id}); + this.store.add(new_record, {at:0}); + + if (!silent) { + var arr = []; + this.store.where({type:FONT_TYPE_RECENT}).forEach(function(item){ + arr.push(item.get('name')); + }); + arr = arr.join(';'); + Common.localStorage.setItem(this.appPrefix + "-settings-recent-fonts", arr); + Common.Utils.InternalSettings.set(this.appPrefix + "-settings-recent-fonts", arr); } }, diff --git a/apps/common/main/lib/component/ComboDataView.js b/apps/common/main/lib/component/ComboDataView.js index 289b79814..a667aac1f 100644 --- a/apps/common/main/lib/component/ComboDataView.js +++ b/apps/common/main/lib/component/ComboDataView.js @@ -245,11 +245,7 @@ define([ var picker = this.menuPicker; if (picker) { var record = picker.getSelectedRec(); - - if (record) { - record = record[0]; - this.fillComboView(record || picker.store.at(0), !!record, true); - } + this.fillComboView(record || picker.store.at(0), !!record, true); picker.onResize(); } @@ -311,7 +307,7 @@ define([ }, onAfterHideMenu: function(e, isFromInputControl) { - this.menuPicker.selectedBeforeHideRec = this.menuPicker.getSelectedRec()[0]; // for DataView - onKeyDown - Return key + this.menuPicker.selectedBeforeHideRec = this.menuPicker.getSelectedRec(); // for DataView - onKeyDown - Return key (this.showLast) ? this.menuPicker.showLastSelected() : this.menuPicker.deselectAll(); this.trigger('hide:after', this, e, isFromInputControl); }, @@ -387,10 +383,7 @@ define([ var picker = this.menuPicker; if (picker) { var record = picker.getSelectedRec(); - if (record) { - record = record[0]; - this.fillComboView(record || picker.store.at(0), false); - } + this.fillComboView(record || picker.store.at(0), false); } } }, @@ -421,10 +414,11 @@ define([ } } - me.fieldPicker.store.reset([]); // remove all + var indexRec = store.indexOf(record); + if (indexRec < 0) + return; - var indexRec = store.indexOf(record), - countRec = store.length, + var countRec = store.length, maxViewCount = Math.floor(Math.max(fieldPickerEl.width(), me.minWidth) / (me.itemWidth + (me.itemMarginLeft || 0) + (me.itemMarginRight || 0) + (me.itemPaddingLeft || 0) + (me.itemPaddingRight || 0) + (me.itemBorderLeft || 0) + (me.itemBorderRight || 0))), newStyles = []; @@ -432,9 +426,6 @@ define([ if (fieldPickerEl.height() / me.itemHeight > 2) maxViewCount *= Math.floor(fieldPickerEl.height() / me.itemHeight); - if (indexRec < 0) - return; - indexRec = Math.floor(indexRec / maxViewCount) * maxViewCount; if (countRec - indexRec < maxViewCount) indexRec = Math.max(countRec - maxViewCount, 0); @@ -442,7 +433,7 @@ define([ newStyles.push(store.at(index)); } - me.fieldPicker.store.add(newStyles); + me.fieldPicker.store.reset(newStyles); } if (forceSelect) { diff --git a/apps/common/main/lib/component/DataView.js b/apps/common/main/lib/component/DataView.js index 5f8ccbf99..67a027902 100644 --- a/apps/common/main/lib/component/DataView.js +++ b/apps/common/main/lib/component/DataView.js @@ -151,7 +151,7 @@ define([ var tip = el.data('bs.tooltip'); if (tip) { - if (tip.dontShow===undefined) + if (tip.dontShow===undefined && el.is(':hover')) tip.dontShow = true; } @@ -389,17 +389,7 @@ define([ }, getSelectedRec: function() { - if (this.multiSelect) { - - var items = []; - _.each(this.store.where({selected: true}), function(rec){ - items.push(rec); - }); - - return items; - } - - return this.store.where({selected: true}); + return (this.multiSelect) ? this.store.where({selected: true}) : this.store.findWhere({selected: true}); }, onAddItem: function(record, store, opts) { @@ -601,7 +591,7 @@ define([ if (_.indexOf(this.moveKeys, data.keyCode)>-1 || data.keyCode==Common.UI.Keys.RETURN) { data.preventDefault(); data.stopPropagation(); - var rec = this.getSelectedRec()[0]; + var rec = this.getSelectedRec(); if (this.lastSelectedRec===null) this.lastSelectedRec = rec; if (data.keyCode==Common.UI.Keys.RETURN) { @@ -699,8 +689,7 @@ define([ this.scrollToRecord(this.lastSelectedRec); this.lastSelectedRec = null; } else { - var rec = this.getSelectedRec()[0]; - if (rec) this.scrollToRecord(rec); + this.scrollToRecord(this.getSelectedRec()); } }, diff --git a/apps/common/main/lib/component/InputField.js b/apps/common/main/lib/component/InputField.js index 199a2d9ab..054721355 100644 --- a/apps/common/main/lib/component/InputField.js +++ b/apps/common/main/lib/component/InputField.js @@ -239,6 +239,8 @@ define([ }, onKeyDown: function(e) { + this.trigger('keydown:before', this, e); + if (e.isDefaultPrevented()) return; diff --git a/apps/common/main/lib/component/Menu.js b/apps/common/main/lib/component/Menu.js index 67decc1ae..321f2813a 100644 --- a/apps/common/main/lib/component/Menu.js +++ b/apps/common/main/lib/component/Menu.js @@ -76,6 +76,11 @@ * Arrow of the {Common.UI.MenuItem} menu items * * + * @property {Boolean/Number} restoreHeight + * + * Adjust to the browser height and restore to restoreHeight when it's Number + * + * */ if (Common === undefined) @@ -143,7 +148,9 @@ define([ menuAlign : 'tl-bl', menuAlignEl : null, offset : [0, 0], - cyclic : true + cyclic : true, + search : false, + scrollAlwaysVisible: true }, template: _.template([ @@ -162,6 +169,13 @@ define([ this.offset = [0, 0]; this.menuAlign = this.options.menuAlign; this.menuAlignEl = this.options.menuAlignEl; + this.scrollAlwaysVisible = this.options.scrollAlwaysVisible; + this.search = this.options.search; + + if (this.options.restoreHeight) { + this.options.restoreHeight = (typeof (this.options.restoreHeight) == "number") ? this.options.restoreHeight : (this.options.maxHeight ? this.options.maxHeight : 100000); + !this.options.maxHeight && (this.options.maxHeight = this.options.restoreHeight); + } if (!this.options.cyclic) this.options.cls += ' no-cyclic'; @@ -217,6 +231,7 @@ define([ var rootEl = this.cmpEl.parent(), menuRoot = (rootEl.attr('role') === 'menu') ? rootEl : rootEl.find('[role=menu]'); + this.menuRoot = menuRoot; if (menuRoot) { if (!me.rendered) { @@ -228,8 +243,17 @@ define([ }); } + if (this.options.maxHeight) { + menuRoot.css({'max-height': me.options.maxHeight}); + this.scroller = new Common.UI.Scroller({ + el: $(this.el).find('.dropdown-menu '), + minScrollbarLength: 30, + suppressScrollX: true, + alwaysVisibleY: this.scrollAlwaysVisible + }); + } + menuRoot.css({ - 'max-height': me.options.maxHeight||'none', position : 'fixed', right : 'auto', left : -1000, @@ -243,7 +267,6 @@ define([ this.parentEl.on('hide.bs.dropdown', _.bind(me.onBeforeHideMenu, me)); this.parentEl.on('hidden.bs.dropdown', _.bind(me.onAfterHideMenu, me)); this.parentEl.on('keydown.after.bs.dropdown', _.bind(me.onAfterKeydownMenu, me)); - menuRoot.on('scroll', _.bind(me.onScroll, me)); menuRoot.hover( function(e) { me.isOver = true;}, @@ -294,10 +317,7 @@ define([ me.items.splice(index, 0, item); if (this.rendered) { - var menuRoot = (el.attr('role') === 'menu') - ? el - : el.find('[role=menu]'); - + var menuRoot = this.menuRoot; if (menuRoot) { if (index < 0) { menuRoot.append(item.render().el); @@ -313,64 +333,6 @@ define([ } }, - doLayout: function() { - if (this.options.maxHeight > 0) { - if (!this.rendered) { - this.mustLayout = true; - return; - } - - var me = this, - el = this.cmpEl; - - var menuRoot = (el.attr('role') === 'menu') ? el : el.find('[role=menu]'); - - if (!menuRoot.is(':visible')) { - var pos = [menuRoot.css('left'), menuRoot.css('top')]; - menuRoot.css({ - left : '-1000px', - top : '-1000px', - display : 'block' - }); - } - - var $items = menuRoot.find('li'); - - if ($items.height() * $items.length > this.options.maxHeight) { - var scroll = ''; - menuRoot.prepend(scroll); - - scroll = ''; - menuRoot.append(scroll); - - menuRoot.css({ - 'box-shadow' : 'none', - 'overflow-y' : 'hidden', - 'padding-top' : '18px' -// 'padding-bottom' : '18px' - }); - - menuRoot.find('> li:last-of-type').css('margin-bottom',18); - - var addEvent = function( elem, type, fn ) { - elem.addEventListener ? elem.addEventListener( type, fn, false ) : elem.attachEvent( "on" + type, fn ); - }; - - var eventname=(/Firefox/i.test(navigator.userAgent))? 'DOMMouseScroll' : 'mousewheel'; - addEvent(menuRoot[0], eventname, _.bind(this.onMouseWheel,this)); - menuRoot.find('.menu-scroll').on('click', _.bind(this.onScrollClick, this)); - } - - if (pos) { - menuRoot.css({ - display : '', - left : pos[0], - top : pos[1] - }); - } - } - }, - addItem: function(item) { this.insertItem(-1, item); }, @@ -405,19 +367,12 @@ define([ item.off('click').off('toggle'); item.remove(); }); - this.rendered && this.cmpEl.find('.menu-scroll').off('click').remove(); me.items = []; }, onBeforeShowMenu: function(e) { Common.NotificationCenter.trigger('menu:show'); - - if (this.mustLayout) { - delete this.mustLayout; - this.doLayout.call(this); - } - this.trigger('show:before', this, e); this.alignPosition(); }, @@ -425,10 +380,8 @@ define([ onAfterShowMenu: function(e) { this.trigger('show:after', this, e); if (this.scroller) { - if (this.options.restoreHeight) - this.scroller.update(); - - var menuRoot = (this.cmpEl.attr('role') === 'menu') ? this.cmpEl : this.cmpEl.find('[role=menu]'), + this.scroller.update({alwaysVisibleY: this.scrollAlwaysVisible}); + var menuRoot = this.menuRoot, $selected = menuRoot.find('> li .checked'); if ($selected.length) { var itemTop = $selected.position().top, @@ -437,16 +390,10 @@ define([ if (itemTop < 0 || itemTop + itemHeight > listHeight) { menuRoot.scrollTop(menuRoot.scrollTop() + itemTop + itemHeight - (listHeight/2)); } + setTimeout(function(){$selected.focus();}, 1); } } - - if (this.$el.find('> ul > .menu-scroll').length) { - var el = this.$el.find('li .checked')[0]; - if (el) { - var offset = el.offsetTop - this.options.maxHeight / 2; - this.scrollMenu(offset < 0 ? 0 : offset); - } - } + this._search = {}; }, onBeforeHideMenu: function(e) { @@ -462,6 +409,10 @@ define([ }, onAfterKeydownMenu: function(e) { + this.trigger('keydown:before', this, e); + if (e.isDefaultPrevented()) + return; + if (e.keyCode == Common.UI.Keys.RETURN) { var li = $(e.target).closest('li'); if (li.length<=0) li = $(e.target).parent().find('li .dataview'); @@ -477,24 +428,57 @@ define([ } else if (e.keyCode == Common.UI.Keys.ESC) { // Common.NotificationCenter.trigger('menu:afterkeydown', e); // return false; + } else if (this.search && e.keyCode > 64 && e.keyCode < 91 && e.key){ + var me = this; + clearTimeout(this._search.timer); + this._search.timer = setTimeout(function () { me._search = {}; }, 1000); + + (!this._search.text) && (this._search.text = ''); + (!this._search.char) && (this._search.char = e.key); + (this._search.char !== e.key) && (this._search.full = true); + this._search.text += e.key; + if (this._search.index===undefined) { + var $items = this.menuRoot.find('> li').find('> a'); + this._search.index = $items.index($items.filter(':focus')); + } + this.selectCandidate(); } }, - onScroll: function(item, e) { - if (this.scroller) return; + selectCandidate: function() { + var index = this._search.index || 0, + re = new RegExp('^' + ((this._search.full) ? this._search.text : this._search.char), 'i'), + itemCandidate, idxCandidate; - var menuRoot = (this.cmpEl.attr('role') === 'menu') - ? this.cmpEl - : this.cmpEl.find('[role=menu]'), - scrollTop = menuRoot.scrollTop(), - top = menuRoot.find('.menu-scroll.top'), - bottom = menuRoot.find('.menu-scroll.bottom'); - if (this.fromKeyDown) { - top.css('top', scrollTop + 'px'); - bottom.css('bottom', (-scrollTop) + 'px'); + for (var i=0; iindex) { + itemCandidate = item; + idxCandidate = i; + break; + } + } + } + + if (itemCandidate) { + this._search.index = idxCandidate; + var item = itemCandidate.cmpEl.find('a'); + if (this.scroller) { + this.scroller.update({alwaysVisibleY: this.scrollAlwaysVisible}); + var itemTop = item.position().top, + itemHeight = item.height(), + listHeight = this.menuRoot.height(); + if (itemTop < 0 || itemTop + itemHeight > listHeight) { + this.menuRoot.scrollTop(this.menuRoot.scrollTop() + itemTop + itemHeight - (listHeight/2)); + } + } + item.focus(); } - top.toggleClass('disabled', scrollTop<1); - bottom.toggleClass('disabled', scrollTop + this.options.maxHeight > menuRoot[0].scrollHeight-1); }, onItemClick: function(item, e) { @@ -514,32 +498,6 @@ define([ this.trigger('item:toggle', this, item, state, e); }, - onScrollClick: function(e) { - if (/disabled/.test(e.currentTarget.className)) return false; - - this.scrollMenu(/top/.test(e.currentTarget.className)); - return false; - }, - - onMouseWheel: function(e) { - this.scrollMenu(((e.detail && -e.detail) || e.wheelDelta) > 0); - }, - - scrollMenu: function(up) { - this.fromKeyDown = false; - var menuRoot = (this.cmpEl.attr('role') === 'menu') - ? this.cmpEl - : this.cmpEl.find('[role=menu]'), - value = typeof(up)==='boolean' - ? menuRoot.scrollTop() + (up ? -20 : 20) - : up; - - menuRoot.scrollTop(value); - - menuRoot.find('.menu-scroll.top').css('top', menuRoot.scrollTop() + 'px'); - menuRoot.find('.menu-scroll.bottom').css('bottom', (-menuRoot.scrollTop()) + 'px'); - }, - setOffset: function(offsetX, offsetY) { this.offset[0] = _.isUndefined(offsetX) ? this.offset[0] : offsetX; this.offset[1] = _.isUndefined(offsetY) ? this.offset[1] : offsetY; @@ -550,10 +508,8 @@ define([ return this.offset; }, - alignPosition: function() { - var menuRoot = (this.cmpEl.attr('role') === 'menu') - ? this.cmpEl - : this.cmpEl.find('[role=menu]'), + alignPosition: function(fixedAlign, fixedOffset) { + var menuRoot = this.menuRoot, menuParent = this.menuAlignEl || menuRoot.parent(), m = this.menuAlign.match(/^([a-z]+)-([a-z]+)/), offset = menuParent.offset(), @@ -590,15 +546,24 @@ define([ if (typeof (this.options.restoreHeight) == "number") { if (top + menuH > docH) { menuRoot.css('max-height', (docH - top) + 'px'); - menuH = menuRoot.outerHeight(); - } else if ( top + menuH < docH && menuRoot.height() < this.options.restoreHeight ) { + (!this.scroller) && (this.scroller = new Common.UI.Scroller({ + el: $(this.el).find('.dropdown-menu '), + minScrollbarLength: 30, + suppressScrollX: true, + alwaysVisibleY: this.scrollAlwaysVisible + })); + } else if ( top + menuH < docH && menuRoot.height() < this.options.restoreHeight) { menuRoot.css('max-height', (Math.min(docH - top, this.options.restoreHeight)) + 'px'); - menuH = menuRoot.outerHeight(); } } } else { - if (top + menuH > docH) - top = docH - menuH; + if (top + menuH > docH) { + if (fixedAlign && typeof fixedAlign == 'string') { // how to align if menu height > window height + m = fixedAlign.match(/^([a-z]+)-([a-z]+)/); + top = offset.top - posMenu[m[1]][1] + posParent[m[2]][1] + this.offset[1] + (fixedOffset || 0); + } else + top = docH - menuH; + } if (top < 0) top = 0; @@ -607,7 +572,7 @@ define([ if (this.options.additionalAlign) this.options.additionalAlign.call(this, menuRoot, left, top); else - menuRoot.css({left: left, top: top}); + menuRoot.css({left: Math.ceil(left), top: Math.ceil(top)}); }, clearAll: function() { diff --git a/apps/common/main/lib/component/Mixtbar.js b/apps/common/main/lib/component/Mixtbar.js index ba690d3ec..96169d94e 100644 --- a/apps/common/main/lib/component/Mixtbar.js +++ b/apps/common/main/lib/component/Mixtbar.js @@ -286,6 +286,7 @@ define([ if ( $tp.length ) { $tp.addClass('active'); } + this.fireEvent('tab:active', [tab]); } }, diff --git a/apps/common/main/lib/component/MultiSliderGradient.js b/apps/common/main/lib/component/MultiSliderGradient.js index 8a12bef4b..8ad11eaff 100644 --- a/apps/common/main/lib/component/MultiSliderGradient.js +++ b/apps/common/main/lib/component/MultiSliderGradient.js @@ -54,7 +54,11 @@ define([ maxValue: 100, values: [0, 100], colorValues: ['#000000', '#ffffff'], - currentThumb: 0 + currentThumb: 0, + thumbTemplate: '
    ' + + '
    ' + + '
    ' + + '
    ' }, disabled: false, @@ -63,38 +67,20 @@ define([ '
    ', '
    ', '<% _.each(items, function(item) { %>', - '
    ', - '
    ', - '
    ', - '
    ', + '<%= thumbTemplate %>', '<% }); %>', '
    ' ].join('')), initialize : function(options) { - this.styleStr = ''; - if (Common.Utils.isChrome && Common.Utils.chromeVersion<10 || Common.Utils.isSafari && Common.Utils.safariVersion<5.1) - this.styleStr = '-webkit-gradient(linear, left top, right top, color-stop({1}%,{0}), color-stop({3}%,{2})); /* Chrome,Safari4+ */'; - else if (Common.Utils.isChrome || Common.Utils.isSafari) - this.styleStr = '-webkit-linear-gradient(left, {0} {1}%, {2} {3}%)'; - else if (Common.Utils.isGecko) - this.styleStr = '-moz-linear-gradient(left, {0} {1}%, {2} {3}%)'; - else if (Common.Utils.isOpera && Common.Utils.operaVersion>11.0) - this.styleStr = '-o-linear-gradient(left, {0} {1}%, {2} {3}%)'; - else if (Common.Utils.isIE) - this.styleStr = '-ms-linear-gradient(left, {0} {1}%, {2} {3}%)'; - - this.colorValues = this.options.colorValues; - + this.styleStr = {}; Common.UI.MultiSlider.prototype.initialize.call(this, options); }, render : function(parentEl) { Common.UI.MultiSlider.prototype.render.call(this, parentEl); - var me = this, - style = ''; - + var me = this; me.trackEl = me.cmpEl.find('.track'); for (var i=0; i div'); + me.setColorValue(me.options.colorValues[i], i); } - if (me.styleStr!=='') { - style = Common.Utils.String.format(me.styleStr, me.colorValues[0], 0, me.colorValues[1], 100); - me.trackEl.css('background', style); - } - if (Common.Utils.isIE) { - style = Common.Utils.String.format('progid:DXImageTransform.Microsoft.gradient( startColorstr={0}, endColorstr={1},GradientType=1 )', - me.colorValues[0], me.colorValues[1]); - me.trackEl.css('filter', style); - } - style = Common.Utils.String.format('linear-gradient(to right, {0} {1}%, {2} {3}%)', me.colorValues[0], 0, me.colorValues[1], 100); - me.trackEl.css('background', style); - + me.changeSliderStyle(); + me.changeGradientStyle(); me.on('change', _.bind(me.changeGradientStyle, me)); }, setColorValue: function(color, index) { var ind = (index!==undefined) ? index : this.currentThumb; - this.colorValues[ind] = color; + this.thumbs[ind].colorValue = color; this.thumbs[ind].thumbcolor.css('background-color', color); this.changeGradientStyle(); }, getColorValue: function(index) { var ind = (index!==undefined) ? index : this.currentThumb; - return this.colorValues[ind]; + return this.thumbs[ind].colorValue; }, setValue: function(index, value) { @@ -136,32 +113,88 @@ define([ this.changeGradientStyle(); }, + getColorValues: function() { + var values = []; + _.each (this.thumbs, function(thumb) { + values.push(thumb.colorValue); + }); + + return values; + }, + changeGradientStyle: function() { if (!this.rendered) return; var style; - if (this.styleStr!=='') { - style = Common.Utils.String.format(this.styleStr, this.colorValues[0], this.getValue(0), this.colorValues[1], this.getValue(1)); + if (this.styleStr.specific) { + style = Common.Utils.String.format(this.styleStr.specific, this.getColorValues().concat(this.getValues())); this.trackEl.css('background', style); } if (Common.Utils.isIE) { style = Common.Utils.String.format('progid:DXImageTransform.Microsoft.gradient( startColorstr={0}, endColorstr={1},GradientType=1 )', - this.colorValues[0], this.colorValues[1]); + this.getColorValue(0), this.getColorValue(this.thumbs.length-1)); this.trackEl.css('filter', style); } - style = Common.Utils.String.format('linear-gradient(to right, {0} {1}%, {2} {3}%)', this.colorValues[0], this.getValue(0), this.colorValues[1], this.getValue(1)); - this.trackEl.css('background', style); + if (this.styleStr.common) { + style = Common.Utils.String.format(this.styleStr.common, this.getColorValues().concat(this.getValues())); + this.trackEl.css('background', style); + } }, sortThumbs: function() { - var recalc_indexes = Common.UI.MultiSlider.prototype.sortThumbs.call(this), - new_colors = [], - me = this; - _.each (recalc_indexes, function(recalc_index) { - new_colors.push(me.colorValues[recalc_index]); - }); - this.colorValues = new_colors; - this.trigger('sortthumbs', me, recalc_indexes); + var recalc_indexes = Common.UI.MultiSlider.prototype.sortThumbs.call(this); + this.trigger('sortthumbs', this, recalc_indexes); return recalc_indexes; + }, + + addThumb: function() { + Common.UI.MultiSlider.prototype.addThumb.call(this); + + var me = this, + index = me.thumbs.length-1; + me.thumbs[index].thumb.on('dblclick', null, function() { + me.trigger('thumbdblclick', me); + }); + me.thumbs[index].thumbcolor = me.thumbs[index].thumb.find('> div'); + (index>0) && this.setColorValue(this.getColorValue(index-1), index); + me.changeSliderStyle(); + }, + + removeThumb: function(index) { + if (index===undefined) index = this.thumbs.length-1; + if (index>0) { + this.thumbs[index].thumb.remove(); + this.thumbs.splice(index, 1); + this.changeSliderStyle(); + } + }, + + changeSliderStyle: function() { + this.styleStr = { + specific: '', + common: 'linear-gradient(to right' + }; + + if (Common.Utils.isChrome && Common.Utils.chromeVersion<10 || Common.Utils.isSafari && Common.Utils.safariVersion<5.1) + this.styleStr.specific = '-webkit-gradient(linear, left top, right top'; /* Chrome,Safari4+ */ + else if (Common.Utils.isChrome || Common.Utils.isSafari) + this.styleStr.specific = '-webkit-linear-gradient(left'; + else if (Common.Utils.isGecko) + this.styleStr.specific = '-moz-linear-gradient(left'; + else if (Common.Utils.isOpera && Common.Utils.operaVersion>11.0) + this.styleStr.specific = '-o-linear-gradient(left'; + else if (Common.Utils.isIE) + this.styleStr.specific = '-ms-linear-gradient(left'; + + for (var i=0; i' }, disabled: false, @@ -290,7 +291,7 @@ define([ '
    ', '', '<% _.each(items, function(item) { %>', - '
    ', + '<%= thumbTemplate %>', '<% }); %>', '' ].join('')), @@ -317,7 +318,8 @@ define([ if (!me.rendered) { this.cmpEl = $(this.template({ - items: this.options.values + items: this.options.values, + thumbTemplate: this.options.thumbTemplate })); if (parentEl) { @@ -353,8 +355,8 @@ define([ if (need_sort) me.sortThumbs(); - $(document).off('mouseup', onMouseUp); - $(document).off('mousemove', onMouseMove); + $(document).off('mouseup', me.binding.onMouseUp); + $(document).off('mousemove', me.binding.onMouseMove); me._dragstart = undefined; me.trigger('changecomplete', me, value, lastValue); @@ -399,8 +401,8 @@ define([ (index == idx) ? item.thumb.css('z-index', 500) : item.thumb.css('z-index', ''); }); - $(document).on('mouseup', null, e.data, onMouseUp); - $(document).on('mousemove', null, e.data, onMouseMove); + $(document).on('mouseup', null, e.data, me.binding.onMouseUp); + $(document).on('mousemove', null, e.data, me.binding.onMouseMove); }; var onTrackMouseDown = function (e) { @@ -443,6 +445,12 @@ define([ return index; }; + this.binding = { + onMouseUp: _.bind(onMouseUp, this), + onMouseMove: _.bind(onMouseMove, this), + onMouseDown: _.bind(onMouseDown, this) + }; + this.$thumbs = el.find('.thumb'); _.each(this.$thumbs, function(item, index) { var thumb = $(item); @@ -451,7 +459,7 @@ define([ index: index }); me.setValue(index, me.options.values[index]); - thumb.on('mousedown', null, me.thumbs[index], onMouseDown); + thumb.on('mousedown', null, me.thumbs[index], me.binding.onMouseDown); }); me.setActiveThumb(0, true); @@ -481,7 +489,6 @@ define([ this.setThumbPosition(index, Math.round((value-this.minValue)*this.delta)); }, - getValue: function(index) { return this.thumbs[index].value; }, @@ -511,6 +518,35 @@ define([ thumb.index = index; }); return recalc_indexes; + }, + + setThumbs: function(count) { + var length = this.thumbs.length; + if (length==count) return; + + for (var i=0; i0) && this.setValue(index, this.getValue(index-1)); + thumb.on('mousedown', null, this.thumbs[index], this.binding.onMouseDown); + }, + + removeThumb: function(index) { + if (index===undefined) index = this.thumbs.length-1; + if (index>0) { + this.thumbs[index].thumb.remove(); + this.thumbs.splice(index, 1); + } } }); }); diff --git a/apps/common/main/lib/component/Window.js b/apps/common/main/lib/component/Window.js index cab94d7c4..76432c6f2 100644 --- a/apps/common/main/lib/component/Window.js +++ b/apps/common/main/lib/component/Window.js @@ -164,7 +164,7 @@ define([ '<% if (closable!==false) %>' + '
    ' + '<% %>' + - '<%= title %> ' + + '
    <%= title %>
    ' + '' + '<% } %>' + '
    <%= tpl %>
    ' + @@ -639,7 +639,10 @@ define([ show: function(x,y) { if (this.initConfig.modal) { var mask = _getMask(); - if (this.options.animate !== false) { + if (this.options.animate === false || this.options.animate && this.options.animate.mask === false) { // animate.mask = false -> don't animate mask + mask.attr('counter', parseInt(mask.attr('counter'))+1); + mask.show(); + } else { var opacity = mask.css('opacity'); mask.css('opacity', 0); mask.attr('counter', parseInt(mask.attr('counter'))+1); @@ -648,9 +651,6 @@ define([ setTimeout(function () { mask.css(_getTransformation(opacity)); }, 1); - } else { - mask.attr('counter', parseInt(mask.attr('counter'))+1); - mask.show(); } Common.NotificationCenter.trigger('modal:show', this); diff --git a/apps/common/main/lib/controller/Comments.js b/apps/common/main/lib/controller/Comments.js index cbef9afe9..b8f30b6c4 100644 --- a/apps/common/main/lib/controller/Comments.js +++ b/apps/common/main/lib/controller/Comments.js @@ -252,6 +252,7 @@ define([ ascComment.asc_putUserId(comment.get('userid')); ascComment.asc_putUserName(comment.get('username')); ascComment.asc_putSolved(!comment.get('resolved')); + ascComment.asc_putGuid(comment.get('guid')); if (!_.isUndefined(ascComment.asc_putDocumentFlag)) { ascComment.asc_putDocumentFlag(comment.get('unattached')); @@ -344,6 +345,7 @@ define([ ascComment.asc_putUserId(t.currentUserId); ascComment.asc_putUserName(t.currentUserName); ascComment.asc_putSolved(comment.get('resolved')); + ascComment.asc_putGuid(comment.get('guid')); if (!_.isUndefined(ascComment.asc_putDocumentFlag)) { ascComment.asc_putDocumentFlag(comment.get('unattached')); @@ -400,6 +402,7 @@ define([ ascComment.asc_putUserId(comment.get('userid')); ascComment.asc_putUserName(comment.get('username')); ascComment.asc_putSolved(comment.get('resolved')); + ascComment.asc_putGuid(comment.get('guid')); if (!_.isUndefined(ascComment.asc_putDocumentFlag)) { ascComment.asc_putDocumentFlag(comment.get('unattached')); @@ -462,6 +465,7 @@ define([ ascComment.asc_putUserId(comment.get('userid')); ascComment.asc_putUserName(comment.get('username')); ascComment.asc_putSolved(comment.get('resolved')); + ascComment.asc_putGuid(comment.get('guid')); if (!_.isUndefined(ascComment.asc_putDocumentFlag)) { ascComment.asc_putDocumentFlag(comment.get('unattached')); @@ -495,6 +499,7 @@ define([ ascComment.asc_addReply(addReply); me.api.asc_changeComment(id, ascComment); + me.mode && me.mode.canRequestUsers && me.view.pickEMail(ascComment.asc_getGuid(), replyVal); return true; } @@ -519,6 +524,7 @@ define([ ascComment.asc_putUserId(comment.get('userid')); ascComment.asc_putUserName(comment.get('username')); ascComment.asc_putSolved(comment.get('resolved')); + ascComment.asc_putGuid(comment.get('guid')); if (!_.isUndefined(ascComment.asc_putDocumentFlag)) { ascComment.asc_putDocumentFlag(comment.get('unattached')); @@ -1125,7 +1131,9 @@ define([ if (_.isUndefined(this.popover)) { this.popover = Common.Views.ReviewPopover.prototype.getPopover({ commentsStore : this.popoverComments, - renderTo : this.sdkViewName + renderTo : this.sdkViewName, + canRequestUsers: (this.mode) ? this.mode.canRequestUsers : undefined, + canRequestSendNotify: (this.mode) ? this.mode.canRequestSendNotify : undefined }); this.popover.setCommentsStore(this.popoverComments); } @@ -1190,6 +1198,7 @@ define([ groupname = id.substr(0, id.lastIndexOf('_')+1).match(/^(doc|sheet[0-9_]+)_/); var comment = new Common.Models.Comment({ uid : id, + guid : data.asc_getGuid(), userid : data.asc_getUserId(), username : data.asc_getUserName(), usercolor : (user) ? user.get('color') : null, @@ -1345,7 +1354,7 @@ define([ this.api.asc_addComment(comment); this.view.showEditContainer(false); - + this.mode && this.mode.canRequestUsers && this.view.pickEMail(comment.asc_getGuid(), commentVal); if (!_.isUndefined(this.api.asc_SetDocumentPlaceChangedEnabled)) { this.api.asc_SetDocumentPlaceChangedEnabled(false); } diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js index 17408b32e..ba7bd7336 100644 --- a/apps/common/main/lib/controller/Desktop.js +++ b/apps/common/main/lib/controller/Desktop.js @@ -125,6 +125,12 @@ define([ if ( opts == 'preloader:hide' ) { app.execCommand('editor:onready', ''); return true; + } else + if ( opts == 'create:new' ) { + if (config.createUrl == 'desktop://create.new') { + app.LocalFileCreate(!!window.SSE ? 2 : !!window.PE ? 1 : 0); + return true; + } } } diff --git a/apps/common/main/lib/controller/Fonts.js b/apps/common/main/lib/controller/Fonts.js index 570f000e2..a20c68604 100644 --- a/apps/common/main/lib/controller/Fonts.js +++ b/apps/common/main/lib/controller/Fonts.js @@ -48,10 +48,10 @@ define([ 'common/main/lib/collection/Fonts' ], function () { 'use strict'; Common.Controllers.Fonts = Backbone.Controller.extend((function() { - var FONT_TYPE_USERUSED = 4; + var FONT_TYPE_RECENT = 4; function isFontSaved(store, rec) { - var out = rec.get('type') == FONT_TYPE_USERUSED, + var out = rec.get('type') == FONT_TYPE_RECENT, i = -1, c = store.length, su, @@ -59,7 +59,7 @@ define([ while (!out && ++i < c) { su = store.at(i); - if (su.get('type') != FONT_TYPE_USERUSED) + if (su.get('type') != FONT_TYPE_RECENT) break; out = su.get('name') == n; @@ -78,7 +78,7 @@ define([ // name: data.name, // imgidx: data.imgidx, // cloneid: node.querySelector('img').id, -// type: FONT_TYPE_USERUSED +// type: FONT_TYPE_RECENT // }; // combo.getStore().insert(0,[font]); // @@ -93,7 +93,7 @@ define([ // } // // font = combo.getStore().getAt(5); -// if (font.data.type==FONT_TYPE_USERUSED) { +// if (font.data.type==FONT_TYPE_RECENT) { // combo.getStore().remove(font); // } else { // var plugin = combo.getPlugin('scrollpane'); diff --git a/apps/common/main/lib/controller/History.js b/apps/common/main/lib/controller/History.js index 8e8978193..056183ee3 100644 --- a/apps/common/main/lib/controller/History.js +++ b/apps/common/main/lib/controller/History.js @@ -113,7 +113,7 @@ define([ Common.Gateway.requestRestore(record.get('revision')); else { this.isFromSelectRevision = record.get('revision'); - this.api.asc_DownloadAs(Asc.c_oAscFileType.DOCX, true); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.DOCX, true)); } return; } diff --git a/apps/common/main/lib/controller/Plugins.js b/apps/common/main/lib/controller/Plugins.js index 47d214327..cb4c0eae6 100644 --- a/apps/common/main/lib/controller/Plugins.js +++ b/apps/common/main/lib/controller/Plugins.js @@ -45,6 +45,9 @@ define([ Common.Controllers.Plugins = Backbone.Controller.extend(_.extend({ models: [], + appOptions: {}, + configPlugins: {autostart:[]},// {config: 'from editor config', plugins: 'loaded plugins', UIplugins: 'loaded customization plugins', autostart: 'autostart guids'} + serverPlugins: {autostart:[]},// {config: 'from editor config', plugins: 'loaded plugins', autostart: 'autostart guids'} collections: [ 'Common.Collections.Plugins' ], @@ -95,7 +98,54 @@ define([ this._moveOffset = {x:0, y:0}; - this.autostart = null; + this.autostart = []; + + Common.Gateway.on('init', this.loadConfig.bind(this)); + Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this)); + }, + + loadConfig: function(data) { + var me = this; + me.configPlugins.config = data.config.plugins; + me.editor = !!window.DE ? 'word' : !!window.PE ? 'slide' : 'cell'; + }, + + loadPlugins: function() { + if (this.configPlugins.config) { + this.getPlugins(this.configPlugins.config.pluginsData) + .then(function(loaded) + { + me.configPlugins.plugins = loaded; + me.mergePlugins(); + }) + .catch(function(err) + { + me.configPlugins.plugins = false; + }); + } else + this.configPlugins.plugins = false; + + var server_plugins_url = '../../../../plugins.json', + me = this; + Common.Utils.loadConfig(server_plugins_url, function (obj) { + if ( obj != 'error' ) { + me.serverPlugins.config = obj; + me.getPlugins(me.serverPlugins.config.pluginsData) + .then(function(loaded) + { + me.serverPlugins.plugins = loaded; + me.mergePlugins(); + }) + .catch(function(err) + { + me.serverPlugins.plugins = false; + }); + } else + me.serverPlugins.plugins = false; + }); + }, + + onAppShowed: function (config) { }, setApi: function(api) { @@ -106,14 +156,18 @@ define([ this.api.asc_registerCallback("asc_onPluginResize", _.bind(this.onPluginResize, this)); this.api.asc_registerCallback("asc_onPluginMouseUp", _.bind(this.onPluginMouseUp, this)); this.api.asc_registerCallback("asc_onPluginMouseMove", _.bind(this.onPluginMouseMove, this)); + this.api.asc_registerCallback('asc_onPluginsReset', _.bind(this.resetPluginsList, this)); + this.api.asc_registerCallback('asc_onPluginsInit', _.bind(this.onPluginsInit, this)); + this.loadPlugins(); return this; }, setMode: function(mode) { - if (mode.canPlugins) { - this.updatePluginsList(); - } + this.appOptions = mode; + this.customPluginsComplete = !this.appOptions.canBrandingExt; + if (this.appOptions.canBrandingExt) + this.getAppCustomPlugins(this.configPlugins); return this; }, @@ -138,7 +192,7 @@ define([ }); }, - updatePluginsList: function() { + refreshPluginsList: function() { var me = this; var storePlugins = this.getApplication().getCollection('Common.Collections.Plugins'), arr = []; @@ -147,6 +201,7 @@ define([ plugin.set_Name(item.get('name')); plugin.set_Guid(item.get('guid')); plugin.set_BaseUrl(item.get('baseUrl')); + var variations = item.get('variations'), variationsArr = []; variations.forEach(function(itemVar){ @@ -168,8 +223,10 @@ define([ variation.set_Size(itemVar.get('size')); variation.set_InitOnSelectionChanged(itemVar.get('initOnSelectionChanged')); variation.set_Events(itemVar.get('events')); + variationsArr.push(variation); }); + plugin.set_Variations(variationsArr); item.set('pluginObj', plugin); arr.push(plugin); @@ -193,6 +250,7 @@ define([ onResetPlugins: function (collection) { var me = this; + me.appOptions.canPlugins = !collection.isEmpty(); if ( me.$toolbarPanelPlugins ) { me.$toolbarPanelPlugins.empty(); @@ -217,6 +275,8 @@ define([ rank = new_rank; }); _group.appendTo(me.$toolbarPanelPlugins); + } else { + console.error('toolbar panel isnot created'); } }, @@ -357,7 +417,7 @@ define([ else if (this.panelPlugins.iframePlugin) this.panelPlugins.closeInsideMode(); this.panelPlugins.closedPluginMode(plugin.get_Guid()); - this.runAutoStartPlugins(this.autostart); + this.runAutoStartPlugins(); }, onPluginResize: function(size, minSize, maxSize, callback ) { @@ -396,13 +456,229 @@ define([ Common.NotificationCenter.trigger('frame:mousemove', { pageX: x*Common.Utils.zoom()+this._moveOffset.x, pageY: y*Common.Utils.zoom()+this._moveOffset.y }); }, - runAutoStartPlugins: function(autostart) { - if (autostart && autostart.length>0) { - var guid = autostart.shift(); - this.autostart = autostart; - this.api.asc_pluginRun(guid, 0, ''); - } - } + onPluginsInit: function(pluginsdata) { + !(pluginsdata instanceof Array) && (pluginsdata = pluginsdata["pluginsData"]); + this.parsePlugins(pluginsdata) + }, + runAutoStartPlugins: function() { + if (this.autostart && this.autostart.length > 0) { + this.api.asc_pluginRun(this.autostart.shift(), 0, ''); + } + }, + + resetPluginsList: function() { + this.getApplication().getCollection('Common.Collections.Plugins').reset(); + }, + + applyUICustomization: function () { + var me = this; + return new Promise(function(resolve, reject) { + var timer_sl = setInterval(function() { + if ( me.customPluginsComplete ) { + clearInterval(timer_sl); + try { + me.configPlugins.UIplugins && me.configPlugins.UIplugins.forEach(function (c) { + if ( c.code ) eval(c.code); + }); + } catch (e) {} + resolve(); + } + }, 10); + }); + }, + + parsePlugins: function(pluginsdata, uiCustomize) { + var me = this; + var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), + isEdit = me.appOptions.isEdit, + editor = me.editor; + if ( pluginsdata instanceof Array ) { + var arr = [], arrUI = [], + lang = me.appOptions.lang.split(/[\-_]/)[0]; + pluginsdata.forEach(function(item){ + if ( arr.some(function(i) { + return (i.get('baseUrl') == item.baseUrl || i.get('guid') == item.guid); + } + ) || pluginStore.findWhere({baseUrl: item.baseUrl}) || pluginStore.findWhere({guid: item.guid})) + { + return; + } + + var variationsArr = [], + pluginVisible = false; + item.variations.forEach(function(itemVar){ + var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, editor) && !itemVar.isSystem; + if ( visible ) pluginVisible = true; + + if (item.isUICustomizer ) { + visible && arrUI.push({ + url: item.baseUrl + itemVar.url + }); + } else { + var model = new Common.Models.PluginVariation(itemVar); + var description = itemVar.description; + if (typeof itemVar.descriptionLocale == 'object') + description = itemVar.descriptionLocale[lang] || itemVar.descriptionLocale['en'] || description || ''; + + _.each(itemVar.buttons, function(b, index){ + if (typeof b.textLocale == 'object') + b.text = b.textLocale[lang] || b.textLocale['en'] || b.text || ''; + b.visible = (isEdit || b.isViewer !== false); + }); + + model.set({ + description: description, + index: variationsArr.length, + url: itemVar.url, + icons: itemVar.icons, + buttons: itemVar.buttons, + visible: visible + }); + + variationsArr.push(model); + } + }); + + if (variationsArr.length > 0 && !item.isUICustomizer) { + var name = item.name; + if (typeof item.nameLocale == 'object') + name = item.nameLocale[lang] || item.nameLocale['en'] || name || ''; + + arr.push(new Common.Models.Plugin({ + name : name, + guid: item.guid, + baseUrl : item.baseUrl, + variations: variationsArr, + currentVariation: 0, + visible: pluginVisible, + groupName: (item.group) ? item.group.name : '', + groupRank: (item.group) ? item.group.rank : 0 + })); + } + }); + + if ( uiCustomize!==false ) // from ui customizer in editor config or desktop event + me.configPlugins.UIplugins = arrUI; + + if ( !uiCustomize && pluginStore) + { + arr = pluginStore.models.concat(arr); + arr.sort(function(a, b){ + var rank_a = a.get('groupRank'), + rank_b = b.get('groupRank'); + if (rank_a < rank_b) + return (rank_a==0) ? 1 : -1; + if (rank_a > rank_b) + return (rank_b==0) ? -1 : 1; + return 0; + }); + pluginStore.reset(arr); + this.appOptions.canPlugins = !pluginStore.isEmpty(); + } + } + else if (!uiCustomize){ + this.appOptions.canPlugins = false; + } + + if (!uiCustomize) + this.getApplication().getController('LeftMenu').enablePlugins(); + + if (this.appOptions.canPlugins) { + this.refreshPluginsList(); + this.runAutoStartPlugins(); + } + }, + + getPlugins: function(pluginsData, fetchFunction) { + if (!pluginsData || pluginsData.length<1) + return Promise.resolve([]); + + fetchFunction = fetchFunction || function (url) { + return fetch(url) + .then(function(response) { + if ( response.ok ) return response.json(); + else return Promise.reject(url); + }).then(function(json) { + json.baseUrl = url.substring(0, url.lastIndexOf("config.json")); + return json; + }); + }; + + var loaded = []; + return pluginsData.map(fetchFunction).reduce(function (previousPromise, currentPromise) { + return previousPromise + .then(function() + { + return currentPromise; + }) + .then(function(item) + { + loaded.push(item); + return Promise.resolve(item); + }) + .catch(function(item) + { + return Promise.resolve(item); + }); + + }, Promise.resolve()) + .then(function () + { + return Promise.resolve(loaded); + }); + }, + + mergePlugins: function() { + if (this.serverPlugins.plugins !== undefined && this.configPlugins.plugins !== undefined) { // undefined - plugins are loading + var autostart = [], + arr = [], + plugins = this.configPlugins, + warn = false; + if (plugins.plugins && plugins.plugins.length>0) { + arr = plugins.plugins; + var val = plugins.config.autostart || plugins.config.autoStartGuid; + if (typeof (val) == 'string') + val = [val]; + warn = !!plugins.config.autoStartGuid; + autostart = val || []; + } + plugins = this.serverPlugins; + if (plugins.plugins && plugins.plugins.length>0) { + arr = arr.concat(plugins.plugins); + var val = plugins.config.autostart || plugins.config.autoStartGuid; + if (typeof (val) == 'string') + val = [val]; + (warn || plugins.config.autoStartGuid) && console.warn("Obsolete: The autoStartGuid parameter is deprecated. Please check the documentation for new plugin connection configuration."); + autostart = autostart.concat(val || []); + } + this.autostart = autostart; + this.parsePlugins(arr, false); + } + }, + + getAppCustomPlugins: function (plugins) { + var me = this, + funcComplete = function() {me.customPluginsComplete = true;}; + if ( plugins.config ) { + this.getPlugins(plugins.config.UIpluginsData) + .then(function(loaded) + { + me.parsePlugins(loaded, true); + me.getPlugins(plugins.UIplugins, function(item) { + return fetch(item.url) + .then(function(response) { + if ( response.ok ) return response.text(); + else return Promise.reject(); + }) + .then(function(text) { + item.code = text; + return text; + }); + }).then(funcComplete, funcComplete); + }, funcComplete); + } else + funcComplete(); + } }, Common.Controllers.Plugins || {})); }); diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js index d1cef5bfe..f6c966be0 100644 --- a/apps/common/main/lib/controller/ReviewChanges.js +++ b/apps/common/main/lib/controller/ReviewChanges.js @@ -545,7 +545,7 @@ define([ Common.localStorage.setItem(this.view.appPrefix + "settings-spellcheck", state ? 1 : 0); this.api.asc_setSpellCheck(state); - Common.Utils.InternalSettings.set("de-settings-spellcheck", state); + Common.Utils.InternalSettings.set(this.view.appPrefix + "settings-spellcheck", state); }, onReviewViewClick: function(menu, item, e) { @@ -670,13 +670,13 @@ define([ } }); } else if (config.canViewReview) { - config.canViewReview = me.api.asc_HaveRevisionsChanges(true); // check revisions from all users + config.canViewReview = (config.isEdit || me.api.asc_HaveRevisionsChanges(true)); // check revisions from all users if (config.canViewReview) { var val = Common.localStorage.getItem(me.view.appPrefix + "review-mode"); if (val===null) val = me.appConfig.customization && /^(original|final|markup)$/i.test(me.appConfig.customization.reviewDisplay) ? me.appConfig.customization.reviewDisplay.toLocaleLowerCase() : 'original'; - me.turnDisplayMode(config.isRestrictedEdit ? 'markup' : val); // load display mode only in viewer - me.view.turnDisplayMode(config.isRestrictedEdit ? 'markup' : val); + me.turnDisplayMode((config.isEdit || config.isRestrictedEdit) ? 'markup' : val); // load display mode only in viewer + me.view.turnDisplayMode((config.isEdit || config.isRestrictedEdit) ? 'markup' : val); } } diff --git a/apps/common/main/lib/extend/Bootstrap.js b/apps/common/main/lib/extend/Bootstrap.js index a69a8e174..b7d4a582f 100755 --- a/apps/common/main/lib/extend/Bootstrap.js +++ b/apps/common/main/lib/extend/Bootstrap.js @@ -41,8 +41,8 @@ function onDropDownKeyDown(e) { var $this = $(this), $parent = $this.parent(), - beforeEvent = jQuery.Event('keydown.before.bs.dropdown'), - afterEvent = jQuery.Event('keydown.after.bs.dropdown'); + beforeEvent = jQuery.Event('keydown.before.bs.dropdown', {keyCode: e.keyCode}), + afterEvent = jQuery.Event('keydown.after.bs.dropdown', {keyCode: e.keyCode}); $parent.trigger(beforeEvent); @@ -111,17 +111,9 @@ function patchDropDownKeyDown(e) { var mnu = $('> [role=menu]', li), $subitems = mnu.find('> li:not(.divider):not(.disabled):visible > a'), $dataviews = mnu.find('> li:not(.divider):not(.disabled):visible .dataview'), - focusIdx = 0; - if (mnu.find('> .menu-scroll').length>0) { - var offset = mnu.scrollTop(); - for (var i=0; i<$subitems.length; i++) { - if ($subitems[i].offsetTop > offset) { - focusIdx = i; break; - } - } - } - if ($subitems.length>0 && $dataviews.length<1) - $subitems.eq(focusIdx).focus(); + $internal_menu = mnu.find('> li:not(.divider):not(.disabled):visible ul.internal-menu'); + if ($subitems.length>0 && $dataviews.length<1 && $internal_menu.length<1) + ($subitems.index($subitems.filter(':focus'))<0) && $subitems.eq(0).focus(); }, 250); } } else if (e.keyCode == 37) { // left diff --git a/apps/common/main/lib/model/Comment.js b/apps/common/main/lib/model/Comment.js index 54f30d973..776de9c22 100644 --- a/apps/common/main/lib/model/Comment.js +++ b/apps/common/main/lib/model/Comment.js @@ -53,6 +53,7 @@ define([ Common.Models.Comment = Backbone.Model.extend({ defaults: { uid : 0, // asc + guid : '', userid : 0, username : 'Guest', usercolor : null, diff --git a/apps/common/main/lib/template/CommentsPopover.template b/apps/common/main/lib/template/CommentsPopover.template index 45b112b7d..78f0d4a5a 100644 --- a/apps/common/main/lib/template/CommentsPopover.template +++ b/apps/common/main/lib/template/CommentsPopover.template @@ -10,7 +10,7 @@
    <%=scope.pickLink(comment)%>
    <% } else { %>
    - + <% if (hideAddReply) { %> <% } else { %> diff --git a/apps/common/main/lib/util/LanguageInfo.js b/apps/common/main/lib/util/LanguageInfo.js index 442a913be..ee19f55bb 100644 --- a/apps/common/main/lib/util/LanguageInfo.js +++ b/apps/common/main/lib/util/LanguageInfo.js @@ -446,9 +446,11 @@ Common.util.LanguageInfo = new(function() { }, getLocalLanguageCode: function(name) { - for (var code in localLanguageName) { - if (localLanguageName[code][0].toLowerCase()===name.toLowerCase()) - return code; + if (name) { + for (var code in localLanguageName) { + if (localLanguageName[code][0].toLowerCase()===name.toLowerCase()) + return code; + } } return null; }, diff --git a/apps/common/main/lib/util/utils.js b/apps/common/main/lib/util/utils.js index 5e9fd14ac..fe3601e45 100644 --- a/apps/common/main/lib/util/utils.js +++ b/apps/common/main/lib/util/utils.js @@ -90,6 +90,7 @@ Common.Utils = _.extend(new(function() { hostnameRe = /^(((https?)|(ftps?)):\/\/)?([\-\wа-яё]*:?[\-\wа-яё]*@)?(([\-\wа-яё]+\.)+[\wа-яё\-]{2,}(:\d+)?(\/[%\-\wа-яё]*(\.[\wа-яё]{2,})?(([\wа-яё\-\.\?\\\/+@&#;:`'~=%!,\(\)]*)(\.[\wа-яё]{2,})?)*)*\/?)/i, localRe = /^(((https?)|(ftps?)):\/\/)([\-\wа-яё]*:?[\-\wа-яё]*@)?(([\-\wа-яё]+)(:\d+)?(\/[%\-\wа-яё]*(\.[\wа-яё]{2,})?(([\wа-яё\-\.\?\\\/+@&#;:`'~=%!,\(\)]*)(\.[\wа-яё]{2,})?)*)*\/?)/i, emailStrongRe = /(mailto:)?([a-z0-9'\._-]+@[a-z0-9\.-]+\.[a-z0-9]{2,4})([a-яё0-9\._%+-=\?:&]*)/ig, + emailAddStrongRe = /(mailto:|\s[@]|\s[+])?([a-z0-9'\._-]+@[a-z0-9\.-]+\.[a-z0-9]{2,4})([a-яё0-9\._%+-=\?:&]*)/ig, ipStrongRe = /(((https?)|(ftps?)):\/\/([\-\wа-яё]*:?[\-\wа-яё]*@)?)(((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.){3}(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]))(:\d+)?(\/[%\-\wа-яё]*(\.[\wа-яё]{2,})?(([\wа-яё\-\.\?\\\/+@&#;:`~=%!,\(\)]*)(\.[\wа-яё]{2,})?)*)*\/?/ig, hostnameStrongRe = /((((https?)|(ftps?)):\/\/([\-\wа-яё]*:?[\-\wа-яё]*@)?)|(([\-\wа-яё]*:?[\-\wа-яё]*@)?www\.))((([\-\wа-яё]+\.)+[\wа-яё\-]{2,}|([\-\wа-яё]+))(:\d+)?(\/[%\-\wа-яё]*(\.[\wа-яё]{2,})?(([\wа-яё\-\.\?\\\/+@&#;:`~=%!,\(\)]*)(\.[\wа-яё]{2,})?)*)*\/?)/ig, documentSettingsType = { @@ -207,6 +208,7 @@ Common.Utils = _.extend(new(function() { hostnameRe: hostnameRe, localRe: localRe, emailStrongRe: emailStrongRe, + emailAddStrongRe: emailAddStrongRe, ipStrongRe: ipStrongRe, hostnameStrongRe: hostnameStrongRe, documentSettingsType: documentSettingsType, @@ -542,6 +544,8 @@ Common.Utils.String = new (function() { return { format: function(format) { var args = _.toArray(arguments).slice(1); + if (args.length && typeof args[0] == 'object') + args = args[0]; return format.replace(/\{(\d+)\}/g, function(s, i) { return args[i]; }); @@ -684,16 +688,7 @@ Common.Utils.applyCustomizationPlugins = function(plugins) { Common.Utils.fillUserInfo = function(info, lang, defname) { var _user = info || {}; !_user.id && (_user.id = ('uid-' + Date.now())); - if (_.isEmpty(_user.name)) { - _.isEmpty(_user.firstname) && _.isEmpty(_user.lastname) && (_user.firstname = defname); - if (_.isEmpty(_user.firstname)) - _user.fullname = _user.lastname; - else if (_.isEmpty(_user.lastname)) - _user.fullname = _user.firstname; - else - _user.fullname = /^ru/.test(lang) ? _user.lastname + ' ' + _user.firstname : _user.firstname + ' ' + _user.lastname; - } else - _user.fullname = _user.name; + _user.fullname = _.isEmpty(_user.name) ? defname : _user.name; return _user; }; @@ -734,21 +729,18 @@ Common.Utils.getConfigJson = function (url) { return null; }; -Common.Utils.getConfigJson = function (url) { - if ( url ) { - try { - var xhrObj = Common.Utils.createXhr(); - if ( xhrObj ) { - xhrObj.open('GET', url, false); - xhrObj.send(''); +Common.Utils.loadConfig = function(url, callback) { + "use strict"; - return JSON.parse(xhrObj.responseText); - } - } catch (e) {} - } - - return null; -} + fetch(url) + .then(function(response){ + if ( response.ok ) + return response.json(); + else return 'error'; + }).then(function(json){ + callback(json); + }); +}; Common.Utils.asyncCall = function (callback, scope, args) { (new Promise(function (resolve, reject) { @@ -784,6 +776,76 @@ Common.Utils.InternalSettings = new(function() { } }); +Common.Utils.lockControls = function(causes, lock, opts, defControls) { + !opts && (opts = {}); + + var controls = opts.array || defControls; + opts.merge && (controls = _.union(defControls,controls)); + + function doLock(cmp, cause) { + if ( cmp && _.contains(cmp.options.lock, cause) ) { + var index = cmp.keepState.indexOf(cause); + if (lock) { + if (index < 0) { + cmp.keepState.push(cause); + } + } else { + if (!(index < 0)) { + cmp.keepState.splice(index, 1); + } + } + } + } + + _.each(controls, function(item) { + if (item && _.isFunction(item.setDisabled)) { + !item.keepState && (item.keepState = []); + if (opts.clear && opts.clear.length > 0 && item.keepState.length > 0) { + item.keepState = _.difference(item.keepState, opts.clear); + } + + _.isArray(causes) ? _.each(causes, function(c) {doLock(item, c)}) : doLock(item, causes); + + if (!(item.keepState.length > 0)) { + item.isDisabled() && item.setDisabled(false); + } else { + !item.isDisabled() && item.setDisabled(true); + } + } + }); +}; + +Common.Utils.injectButtons = function($slots, id, iconCls, caption, lock, split, menu, toggle) { + var btnsArr = createButtonSet(); + btnsArr.setDisabled(true); + id = id || ("id-toolbar-" + iconCls); + $slots.each(function(index, el) { + var _cls = 'btn-toolbar'; + /x-huge/.test(el.className) && (_cls += ' x-huge icon-top'); + + var button = new Common.UI.Button({ + id: id + index, + cls: _cls, + iconCls: iconCls, + caption: caption, + split: split || false, + menu: menu || false, + enableToggle: toggle || false, + lock: lock, + disabled: true + }).render( $slots.eq(index) ); + + btnsArr.add(button); + }); + return btnsArr; +}; + +Common.Utils.injectComponent = function ($slot, cmp) { + if (cmp && $slot.length) { + cmp.rendered ? $slot.append(cmp.$el) : cmp.render($slot); + } +}; + Common.Utils.InternalSettings.set('toolbar-height-tabs', 32); Common.Utils.InternalSettings.set('toolbar-height-tabs-top-title', 28); Common.Utils.InternalSettings.set('toolbar-height-controls', 67); diff --git a/apps/common/main/lib/view/Comments.js b/apps/common/main/lib/view/Comments.js index 5d4619ee0..788a1df3b 100644 --- a/apps/common/main/lib/view/Comments.js +++ b/apps/common/main/lib/view/Comments.js @@ -700,6 +700,24 @@ define([ return str_res; }, + pickEMail: function (commentId, message) { + var arr = Common.Utils.String.htmlEncode(message).match(/\B[@+][A-Z0-9._%+-]+@[A-Z0-9._]+\.[A-Z]+\b/gi); + arr = _.map(arr, function(str){ + return str.slice(1, str.length); + }); + (arr.length>0) && Common.Gateway.requestSendNotify({ + emails: arr, + actionId: commentId, // comment id + actionLink: { + action: { + type: "comment", + data: commentId + } + }, + message: message //comment text + }); + }, + textComments : 'Comments', textAnonym : 'Guest', textAddCommentToDoc : 'Add Comment to Document', diff --git a/apps/common/main/lib/view/LanguageDialog.js b/apps/common/main/lib/view/LanguageDialog.js index ec068553f..45a06a46c 100644 --- a/apps/common/main/lib/view/LanguageDialog.js +++ b/apps/common/main/lib/view/LanguageDialog.js @@ -85,7 +85,7 @@ define([ this.cmbLanguage = new Common.UI.ComboBox({ el: $window.find('#id-document-language'), cls: 'input-group-nr', - menuStyle: 'min-width: 318px; max-height: 300px;', + menuStyle: 'min-width: 318px; max-height: 285px;', editable: false, template: _.template([ '', @@ -104,7 +104,8 @@ define([ '', '' ].join('')), - data: this.options.languages + data: this.options.languages, + search: true }); if (this.cmbLanguage.scroller) this.cmbLanguage.scroller.update({alwaysVisibleY: true}); @@ -130,8 +131,8 @@ define([ }, onLangSelect: function(cmb, rec, e) { - cmb.$el.find('.input-icon').toggleClass('spellcheck-lang', rec.spellcheck); - cmb._input.css('padding-left', rec.spellcheck ? 25 : 3); + cmb.$el.find('.input-icon').toggleClass('spellcheck-lang', rec && rec.spellcheck); + cmb._input.css('padding-left', rec && rec.spellcheck ? 25 : 3); }, onPrimary: function() { diff --git a/apps/common/main/lib/view/OpenDialog.js b/apps/common/main/lib/view/OpenDialog.js index 79b608529..aa7a80a92 100644 --- a/apps/common/main/lib/view/OpenDialog.js +++ b/apps/common/main/lib/view/OpenDialog.js @@ -339,14 +339,14 @@ define([ switch (this.type) { case Common.Utils.importTextType.CSV: - this.api.asc_decodeBuffer(this.preview, new Asc.asc_CCSVAdvancedOptions(encoding, delimiter, delimiterChar), _.bind(this.previewCallback, this)); + this.api.asc_decodeBuffer(this.preview, new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar), _.bind(this.previewCallback, this)); break; case Common.Utils.importTextType.TXT: - this.api.asc_decodeBuffer(this.preview, new Asc.asc_CTXTAdvancedOptions(encoding), _.bind(this.previewCallback, this)); + this.api.asc_decodeBuffer(this.preview, new Asc.asc_CTextOptions(encoding), _.bind(this.previewCallback, this)); break; case Common.Utils.importTextType.Paste: case Common.Utils.importTextType.Columns: - this.api.asc_TextImport(new Asc.asc_CCSVAdvancedOptions(encoding, delimiter, delimiterChar), _.bind(this.previewCallback, this), this.type == Common.Utils.importTextType.Paste); + this.api.asc_TextImport(new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar), _.bind(this.previewCallback, this), this.type == Common.Utils.importTextType.Paste); break; } }, @@ -426,6 +426,7 @@ define([ onCmbDelimiterSelect: function(combo, record){ this.inputDelimiter.setVisible(record.value == -1); + (record.value == -1) && this.inputDelimiter.cmpEl.find('input').focus(); if (this.preview) this.updatePreview(); }, diff --git a/apps/common/main/lib/view/ReviewPopover.js b/apps/common/main/lib/view/ReviewPopover.js index 3c8aa20b8..c2f1a922d 100644 --- a/apps/common/main/lib/view/ReviewPopover.js +++ b/apps/common/main/lib/view/ReviewPopover.js @@ -100,14 +100,23 @@ define([ this.commentsStore = options.commentsStore; this.reviewStore = options.reviewStore; + this.canRequestUsers = options.canRequestUsers; + this.canRequestSendNotify = options.canRequestSendNotify; + this.externalUsers = []; this._state = {commentsVisible: false, reviewVisible: false}; _options.tpl = _.template(this.template)(_options); - this.arrow = {margin: 20, width: 12, height: 34}; + this.arrow = {margin: 20, width: 10, height: 30}; this.sdkBounds = {width: 0, height: 0, padding: 10, paddingTop: 20}; Common.UI.Window.prototype.initialize.call(this, _options); + + if (this.canRequestUsers) { + Common.Gateway.on('setusers', _.bind(this.setUsers, this)); + Common.NotificationCenter.on('mentions:clearusers', _.bind(this.clearUsers, this)); + } + return this; }, render: function (comments, review) { @@ -234,7 +243,8 @@ define([ textEdit: me.textEdit, textReply: me.textReply, textClose: me.textClose, - maxCommLength: Asc.c_oAscMaxCellOrCommentLength + maxCommLength: Asc.c_oAscMaxCellOrCommentLength, + textMention: me.canRequestSendNotify ? me.textMention : '' }) ) }); @@ -457,6 +467,25 @@ define([ } } }); + + this.emailMenu = new Common.UI.Menu({ + maxHeight: 190, + cyclic: false, + items: [] + }).on('render:after', function(mnu) { + this.scroller = new Common.UI.Scroller({ + el: $(this.el).find('.dropdown-menu '), + useKeyboard: this.enableKeyEvents && !this.handleSelect, + minScrollbarLength : 40, + alwaysVisibleY: true + }); + }).on('show:after', function () { + this.scroller.update({alwaysVisibleY: true}); + me.$window.css({zIndex: '1001'}); + }).on('hide:after', function () { + me.$window.css({zIndex: '990'}); + }); + me.on({ 'show': function () { me.commentsView.autoHeightTextBox(); @@ -753,6 +782,10 @@ define([ topPos = Math.min(sdkBoundsTop + sdkBoundsHeight - outerHeight, this.arrowPosY + sdkBoundsTop - this.arrow.height); topPos = Math.max(topPos, sdkBoundsTopPos); + if (parseInt(arrowView.css('top')) + this.arrow.height > outerHeight) { + arrowView.css({top: (outerHeight-this.arrow.height) + 'px'}); + } + this.$window.css('top', topPos + 'px'); } } @@ -821,7 +854,7 @@ define([ commentsView.css({height: sdkBoundsHeight - sdkPanelHeight - 3 + 'px'}); // arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - sdkPanelHeight - this.arrow.width); - arrowPosY = Math.min(arrowPosY, sdkBoundsHeight - (sdkPanelHeight + this.arrow.margin + this.arrow.width)); + arrowPosY = Math.min(arrowPosY, sdkBoundsHeight - (sdkPanelHeight + this.arrow.margin + this.arrow.height)); arrowView.css({top: arrowPosY + 'px'}); this.scroller.scrollTop(scrollPos); @@ -838,8 +871,8 @@ define([ } } - arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - (sdkBoundsHeight - outerHeight) - this.arrow.width); - arrowPosY = Math.min(arrowPosY, outerHeight - this.arrow.margin - this.arrow.width); + arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - (sdkBoundsHeight - outerHeight) - this.arrow.height); + arrowPosY = Math.min(arrowPosY, outerHeight - this.arrow.margin - this.arrow.height); arrowView.css({top: arrowPosY + 'px'}); } @@ -918,6 +951,47 @@ define([ me.e = event; }); + + if (this.canRequestUsers) { + textBox && textBox.keydown(function (event) { + if ( event.keyCode == Common.UI.Keys.SPACE || + event.keyCode == Common.UI.Keys.HOME || event.keyCode == Common.UI.Keys.END || event.keyCode == Common.UI.Keys.RIGHT || + event.keyCode == Common.UI.Keys.LEFT || event.keyCode == Common.UI.Keys.UP) { + // hide email menu + me.onEmailListMenu(); + } else if (event.keyCode == Common.UI.Keys.DOWN) { + if (me.emailMenu && me.emailMenu.rendered && me.emailMenu.isVisible()) + _.delay(function() { + var selected = me.emailMenu.cmpEl.find('li:not(.divider):first'); + selected = selected.find('a'); + selected.focus(); + }, 10); + } + me.e = event; + }); + textBox && textBox.on('input', function (event) { + var $this = $(this), + start = this.selectionStart, + val = $this.val().replace(/[\n]$/, ""), + left = 0, right = val.length-1; + for (var i=start-1; i>=0; i--) { + if (val.charCodeAt(i) == 32 /*space*/ || val.charCodeAt(i) == 13 || val.charCodeAt(i) == 10 || val.charCodeAt(i) == 9) { + left = i+1; break; + } + } + for (var i=start; i<=right; i++) { + if (val.charCodeAt(i) == 32 || val.charCodeAt(i) == 13 || val.charCodeAt(i) == 10 || val.charCodeAt(i) == 9) { + right = i-1; break; + } + } + var str = val.substring(left, right+1), + res = str.match(/^(?:[@]|[+](?!1))(\S*)/); + if (res && res.length>1) { + str = res[1]; // send to show email menu + me.onEmailListMenu(str, left, right); + } + }); + } }, hideTips: function () { @@ -955,6 +1029,17 @@ define([ this.commentsView.setStore(this.commentsStore); }, + setUsers: function(data) { + this.externalUsers = data.users || []; + this.isUsersLoading = false; + this._state.emailSearch && this.onEmailListMenu(this._state.emailSearch.str, this._state.emailSearch.left, this._state.emailSearch.right); + this._state.emailSearch = null; + }, + + clearUsers: function() { + this.externalUsers = []; + }, + getPopover: function(options) { if (!this.popover) this.popover = new Common.Views.ReviewPopover(options); @@ -979,6 +1064,107 @@ define([ } }, + onEmailListMenu: function(str, left, right, show) { + var me = this, + users = me.externalUsers, + menu = me.emailMenu; + + if (users.length<1) { + this._state.emailSearch = { + str: str, + left: left, + right: right + }; + + if (this.isUsersLoading) return; + + this.isUsersLoading = true; + Common.Gateway.requestUsers(); + return; + } + if (typeof str == 'string') { + var menuContainer = me.$window.find(Common.Utils.String.format('#menu-container-{0}', menu.id)), + textbox = this.commentsView.getTextBox(), + textboxDom = textbox ? textbox[0] : null, + showPoint = textboxDom ? [textboxDom.offsetLeft, textboxDom.offsetTop + textboxDom.clientHeight + 3] : [0, 0]; + + if (!menu.rendered) { + // Prepare menu container + if (menuContainer.length < 1) { + menuContainer = $(Common.Utils.String.format('', menu.id)); + me.$window.append(menuContainer); + } + + menu.render(menuContainer); + menu.cmpEl.css('min-width', textboxDom ? textboxDom.clientWidth : 220); + menu.cmpEl.attr({tabindex: "-1"}); + menu.on('hide:after', function(){ + setTimeout(function(){ + var tb = me.commentsView.getTextBox(); + tb && tb.focus(); + }, 10); + }); + } + + for (var i = 0; i < menu.items.length; i++) { + menu.removeItem(menu.items[i]); + i--; + } + + if (users.length>0) { + str = str.toLowerCase(); + if (str.length>0) { + users = _.filter(users, function(item) { + return (item.email && 0 === item.email.toLowerCase().indexOf(str) || item.name && 0 === item.name.toLowerCase().indexOf(str)) + }); + } + var tpl = _.template('
    <%= Common.Utils.String.htmlEncode(caption) %>
    <%= Common.Utils.String.htmlEncode(options.value) %>
    '), + divider = false; + _.each(users, function(menuItem, index) { + if (divider && !menuItem.hasAccess) { + divider = false; + menu.addItem(new Common.UI.MenuItem({caption: '--'})); + } + + if (menuItem.email && menuItem.name) { + var mnu = new Common.UI.MenuItem({ + caption : menuItem.name, + value : menuItem.email, + template : tpl + }).on('click', function(item, e) { + me.insertEmailToTextbox(item.options.value, left, right); + }); + menu.addItem(mnu); + if (menuItem.hasAccess) + divider = true; + } + }); + } + + if (menu.items.length>0) { + menuContainer.css({left: showPoint[0], top : showPoint[1]}); + menu.menuAlignEl = textbox; + menu.show(); + menu.cmpEl.css('display', ''); + menu.alignPosition('bl-tl', -5); + menu.scroller.update({alwaysVisibleY: true}); + } else { + menu.rendered && menu.cmpEl.css('display', 'none'); + } + } else { + menu.rendered && menu.cmpEl.css('display', 'none'); + } + }, + + insertEmailToTextbox: function(str, left, right) { + var textBox = this.commentsView.getTextBox(), + val = textBox.val(); + textBox.val(val.substring(0, left) + '+' + str + val.substring(right+1, val.length)); + setTimeout(function(){ + textBox[0].selectionStart = textBox[0].selectionEnd = left + str.length + 1; + }, 10); + }, + textAddReply : 'Add Reply', textAdd : "Add", textCancel : 'Cancel', @@ -987,6 +1173,7 @@ define([ textClose : 'Close', textResolve : 'Resolve', textOpenAgain : "Open Again", - textFollowMove : 'Follow Move' + textFollowMove : 'Follow Move', + textMention : '+mention will provide access to the document and send an email' }, Common.Views.ReviewPopover || {})) }); \ No newline at end of file diff --git a/apps/common/main/lib/view/SearchDialog.js b/apps/common/main/lib/view/SearchDialog.js index 5b9e90b91..dbad485c9 100644 --- a/apps/common/main/lib/view/SearchDialog.js +++ b/apps/common/main/lib/view/SearchDialog.js @@ -249,6 +249,7 @@ this.txtSearch.addClass('clear'); this.btnOptions.hide(); } + this.menuLookin && this.menuLookin.menu.items[1].setDisabled(false); this.setHeight(170); } else { @@ -261,6 +262,7 @@ $inputs.eq(1).hide(); this.$window.find('.btn[result=replace]').hide(); this.$window.find('.btn[result=replaceall]').hide(); + this.menuLookin && this.menuLookin.menu.items[1].setDisabled(false); this.setHeight(200); } else { $inputs.eq(2).show(); @@ -268,6 +270,10 @@ $inputs.eq(1).show(); this.$window.find('.btn[result=replace]').show(); this.$window.find('.btn[result=replaceall]').show(); + if (this.menuLookin) { + this.menuLookin.menu.items[0].setChecked(true); + this.menuLookin.menu.items[1].setDisabled(true); + } this.setHeight(230); } } @@ -293,8 +299,8 @@ getSettings: function() { return { textsearch: this.txtSearch.val(), - casesensitive: this.miMatchCase.checked, - wholewords: this.miMatchWord.checked }; + matchcase: this.miMatchCase.checked, + matchword: this.miMatchWord.checked }; }, textTitle : 'Search & Replace', diff --git a/apps/common/main/resources/img/controls/toolbar-menu-ru.png b/apps/common/main/resources/img/controls/toolbar-menu-ru.png new file mode 100644 index 000000000..a098b6666 Binary files /dev/null and b/apps/common/main/resources/img/controls/toolbar-menu-ru.png differ diff --git a/apps/common/main/resources/img/controls/toolbar-menu-ru@2x.png b/apps/common/main/resources/img/controls/toolbar-menu-ru@2x.png new file mode 100644 index 000000000..5a28943e8 Binary files /dev/null and b/apps/common/main/resources/img/controls/toolbar-menu-ru@2x.png differ diff --git a/apps/common/main/resources/img/controls/toolbarbig.png b/apps/common/main/resources/img/controls/toolbarbig.png index 4972964bf..16aaf8a45 100644 Binary files a/apps/common/main/resources/img/controls/toolbarbig.png and b/apps/common/main/resources/img/controls/toolbarbig.png differ diff --git a/apps/common/main/resources/img/controls/toolbarbig@2x.png b/apps/common/main/resources/img/controls/toolbarbig@2x.png index bf6e5d9e4..f68309906 100644 Binary files a/apps/common/main/resources/img/controls/toolbarbig@2x.png and b/apps/common/main/resources/img/controls/toolbarbig@2x.png differ diff --git a/apps/common/main/resources/img/toolbar/shapetypes.svg b/apps/common/main/resources/img/toolbar/shapetypes.svg new file mode 100644 index 000000000..da2a7ac9f --- /dev/null +++ b/apps/common/main/resources/img/toolbar/shapetypes.svg @@ -0,0 +1,605 @@ + diff --git a/apps/common/main/resources/less/buttons.less b/apps/common/main/resources/less/buttons.less index ca71178c7..e85961ac6 100644 --- a/apps/common/main/resources/less/buttons.less +++ b/apps/common/main/resources/less/buttons.less @@ -198,6 +198,10 @@ .btn.small; + &.bg-white { + background-color: #fff; + } + &:before, &:after { content: ""; @@ -404,7 +408,7 @@ &.split { - &.over, + &.over:not(.disabled), &.open { box-shadow: inset 0 0 0 1px @color-gray; @@ -413,7 +417,7 @@ } } - &.over { + &.over:not(.disabled) { button { &:not(.active) { &:hover { diff --git a/apps/common/main/resources/less/combobox.less b/apps/common/main/resources/less/combobox.less index b2f25aa99..9b87f75da 100644 --- a/apps/common/main/resources/less/combobox.less +++ b/apps/common/main/resources/less/combobox.less @@ -99,4 +99,11 @@ display: none; } } + + .font-item { + vertical-align:middle; + margin: 0 0 0 -10px; + padding-top: 0; + padding-bottom: 0; + } } diff --git a/apps/common/main/resources/less/dropdown-menu.less b/apps/common/main/resources/less/dropdown-menu.less index 797244129..5aa203037 100644 --- a/apps/common/main/resources/less/dropdown-menu.less +++ b/apps/common/main/resources/less/dropdown-menu.less @@ -16,6 +16,15 @@ } } + &.internal-menu { + border: none; + border-radius: 0; + .box-shadow(none); + margin: 0; + padding: 0; + overflow: hidden; + } + li { & > a { padding: 5px 20px; @@ -60,47 +69,4 @@ background-repeat: no-repeat; } } - - .menu-scroll { - position: absolute; - background-color: @dropdown-bg; - height: 16px; - width: 100%; - cursor: pointer; - - &.top { - top: 0; - - &::before { - content: ''; - position: absolute; - left: 48%; - top: 7px; - border-top: none; - border-bottom: 3px solid; - border-right: 3px solid transparent; - border-left: 3px solid transparent; - } - } - - &.bottom { - bottom: 0; - - &::before { - content: ''; - position: absolute; - left: 48%; - top: 7px; - border-bottom: none; - border-top: 3px solid; - border-right: 3px solid transparent; - border-left: 3px solid transparent; - } - } - - &.disabled { - opacity: 0.3; - cursor: default; - } - } } \ No newline at end of file diff --git a/apps/common/main/resources/less/toolbar.less b/apps/common/main/resources/less/toolbar.less index fc5f96878..76220cbc1 100644 --- a/apps/common/main/resources/less/toolbar.less +++ b/apps/common/main/resources/less/toolbar.less @@ -301,7 +301,7 @@ .style-off-tabs { .toolbar { - @underscore_height: 2px; + @underscore_height: 3px; .tabs, .extra { background-color: transparent; @@ -329,6 +329,7 @@ &.active { background-color: transparent; + font-weight: bold; &:after { opacity: 1; @@ -343,6 +344,17 @@ > a { color: @gray-deep; + + &::after { + display:block; + content:attr(data-title); + font-weight:bold; + height:1px; + color:transparent; + overflow:hidden; + visibility:hidden; + margin-bottom:-1px; + } } } } @@ -501,4 +513,65 @@ .button-normal-icon(~'x-huge .btn-select-pivot', 55, @toolbar-big-icon-size); .button-normal-icon(~'x-huge .btn-bookmarks', 56, @toolbar-big-icon-size); .button-normal-icon(btn-blankpage, 57, @toolbar-big-icon-size); -.button-normal-icon(btn-print-area, 58, @toolbar-big-icon-size); \ No newline at end of file +.button-normal-icon(btn-print-area, 58, @toolbar-big-icon-size); +.button-normal-icon(btn-cell-group, 59, @toolbar-big-icon-size); +.button-normal-icon(btn-cell-ungroup, 60, @toolbar-big-icon-size); +.button-normal-icon(btn-to-columns, 61, @toolbar-big-icon-size); +.button-normal-icon(btn-watermark, 63, @toolbar-big-icon-size); +.button-normal-icon(btn-color-schema, 64, @toolbar-big-icon-size); +.button-normal-icon(btn-ins-formula, 65, @toolbar-big-icon-size); +.button-normal-icon(btn-autosumm, 66, @toolbar-big-icon-size); +.button-normal-icon(btn-recent, 67, @toolbar-big-icon-size); +.button-normal-icon(btn-finance, 68, @toolbar-big-icon-size); +.button-normal-icon(btn-logic, 69, @toolbar-big-icon-size); +.button-normal-icon(btn-func-text, 70, @toolbar-big-icon-size); +.button-normal-icon(btn-datetime, 71, @toolbar-big-icon-size); +.button-normal-icon(btn-lookup, 72, @toolbar-big-icon-size); +.button-normal-icon(btn-func-math, 73, @toolbar-big-icon-size); +.button-normal-icon(btn-more, 74, @toolbar-big-icon-size); +.button-normal-icon(btn-pagenum, 75, @toolbar-big-icon-size); + +[applang=ru] { + .btn-toolbar { + &:not(.x-huge) { + .icon:not(svg) { + &.btn-bold, &.btn-italic, &.btn-strikeout, &.btn-underline, &.btn-ic-docspell, &.btn-sort-down, &.btn-sort-up, &.btn-currency-style { + .background-ximage('@{common-image-path}/controls/toolbar-menu-ru.png', '@{common-image-path}/controls/toolbar-menu-ru@2x.png', 60px); + } + } + } + } + + .img-toolbarmenu.btn-ic-docspell { + .background-ximage('@{common-image-path}/controls/toolbar-menu-ru.png', '@{common-image-path}/controls/toolbar-menu-ru@2x.png', 60px); + } + + .button-normal-icon(btn-notes, 77, @toolbar-big-icon-size); + .button-normal-icon(btn-controls, 78, @toolbar-big-icon-size); + + .button-normal-icon(btn-bold, 0, @toolbar-icon-size); + .button-normal-icon(btn-italic, 1, @toolbar-icon-size); + .button-normal-icon(btn-strikeout, 2, @toolbar-icon-size); + .button-normal-icon(btn-underline, 3, @toolbar-icon-size); + .button-normal-icon(btn-ic-docspell, 4, @toolbar-icon-size); + .button-normal-icon(btn-sort-down, 5, @toolbar-icon-size); + .button-normal-icon(btn-sort-up, 6, @toolbar-icon-size); + .button-normal-icon(btn-currency-style, 7, @toolbar-icon-size); +} + + +.item-shape { + .icon { + width: 20px; + height: 20px; + } + + svg.icon { + display: inline-block; + vertical-align: middle; + fill: #444444; + } + + width: 20px; + height: 20px; +} diff --git a/apps/common/main/resources/less/window.less b/apps/common/main/resources/less/window.less index f0661610f..77f8bc5e5 100644 --- a/apps/common/main/resources/less/window.less +++ b/apps/common/main/resources/less/window.less @@ -85,6 +85,12 @@ &.resizing { cursor: inherit !important; } + + .title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } } > .body { diff --git a/apps/common/mobile/lib/controller/Collaboration.js b/apps/common/mobile/lib/controller/Collaboration.js new file mode 100644 index 000000000..f4b57afb3 --- /dev/null +++ b/apps/common/mobile/lib/controller/Collaboration.js @@ -0,0 +1,956 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ + +/** + * Collaboration.js + * + * Created by Julia Svinareva on 12/7/19 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +if (Common === undefined) + var Common = {}; + +Common.Controllers = Common.Controllers || {}; + +define([ + 'core', + 'jquery', + 'underscore', + 'backbone', + 'common/mobile/lib/view/Collaboration' +], function (core, $, _, Backbone) { + 'use strict'; + + Common.Controllers.Collaboration = Backbone.Controller.extend(_.extend((function() { + // Private + var rootView, + _userId, + editUsers = [], + editor = !!window.DE ? 'DE' : !!window.PE ? 'PE' : 'SSE', + displayMode = "markup", + canViewReview, + arrChangeReview = [], + dateChange = [], + _fileKey; + + + return { + models: [], + collections: [], + views: [ + 'Common.Views.Collaboration' + ], + + initialize: function() { + var me = this; + me.addListeners({ + 'Common.Views.Collaboration': { + 'page:show' : me.onPageShow + } + }); + Common.NotificationCenter.on('comments:filterchange', _.bind(this.onFilterChange, this)); + }, + + setApi: function(api) { + this.api = api; + this.api.asc_registerCallback('asc_onAuthParticipantsChanged', _.bind(this.onChangeEditUsers, this)); + this.api.asc_registerCallback('asc_onParticipantsChanged', _.bind(this.onChangeEditUsers, this)); + this.api.asc_registerCallback('asc_onAddComment', _.bind(this.onApiAddComment, this)); + this.api.asc_registerCallback('asc_onAddComments', _.bind(this.onApiAddComments, this)); + this.api.asc_registerCallback('asc_onChangeCommentData', _.bind(this.onApiChangeCommentData, this)); + this.api.asc_registerCallback('asc_onRemoveComment', _.bind(this.onApiRemoveComment, this)); + if (editor === 'DE') { + this.api.asc_registerCallback('asc_onShowRevisionsChange', _.bind(this.changeReview, this)); + } + }, + + onLaunch: function () { + this.createView('Common.Views.Collaboration').render(); + }, + + setMode: function(mode) { + this.appConfig = mode; + _userId = mode.user.id; + if (editor === 'DE') { + _fileKey = mode.fileKey; + } + return this; + }, + + + showModal: function() { + var me = this, + isAndroid = Framework7.prototype.device.android === true, + modalView, + appPrefix = !!window.DE ? DE : !!window.PE ? PE : SSE, + mainView = appPrefix.getController('Editor').getView('Editor').f7View; + + uiApp.closeModal(); + + if (Common.SharedSettings.get('phone')) { + modalView = $$(uiApp.pickerModal( + '
    ' + + '' + + '
    ' + )).on('opened', function () { + if (_.isFunction(me.api.asc_OnShowContextMenu)) { + me.api.asc_OnShowContextMenu() + } + }).on('close', function (e) { + mainView.showNavbar(); + }).on('closed', function () { + if (_.isFunction(me.api.asc_OnHideContextMenu)) { + me.api.asc_OnHideContextMenu() + } + }); + mainView.hideNavbar(); + } else { + modalView = uiApp.popover( + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '' + + '
    ' + + '
    ' + + '
    ', + $$('#toolbar-collaboration') + ); + } + + if (Framework7.prototype.device.android === true) { + $$('.view.collaboration-root-view.navbar-through').removeClass('navbar-through').addClass('navbar-fixed'); + $$('.view.collaboration-root-view .navbar').prependTo('.view.collaboration-root-view > .pages > .page'); + } + + rootView = uiApp.addView('.collaboration-root-view', { + dynamicNavbar: true, + domCache: true + }); + + if (!Common.SharedSettings.get('phone')) { + this.picker = $$(modalView); + var $overlay = $('.modal-overlay'); + + $$(this.picker).on('opened', function () { + $overlay.on('removeClass', function () { + if (!$overlay.hasClass('modal-overlay-visible')) { + $overlay.addClass('modal-overlay-visible') + } + }); + }).on('close', function () { + $overlay.off('removeClass'); + $overlay.removeClass('modal-overlay-visible') + }); + } + + Common.NotificationCenter.trigger('collaborationcontainer:show'); + this.onPageShow(this.getView('Common.Views.Collaboration')); + + appPrefix.getController('Toolbar').getView('Toolbar').hideSearch(); + }, + + rootView : function() { + return rootView; + }, + + onPageShow: function(view, pageId) { + var me = this; + + if ('#reviewing-settings-view' == pageId) { + me.initReviewingSettingsView(); + Common.Utils.addScrollIfNeed('.page[data-page=reviewing-settings-view]', '.page[data-page=reviewing-settings-view] .page-content'); + } else if ('#display-mode-view' == pageId) { + me.initDisplayMode(); + Common.Utils.addScrollIfNeed('.page[data-page=display-mode-view]', '.page[data-page=display-mode-view] .page-content'); + } else if('#change-view' == pageId) { + me.initChange(); + Common.Utils.addScrollIfNeed('.page[data-page=change-view]', '.page[data-page=change-view] .page-content'); + } else if('#edit-users-view' == pageId) { + me.initEditUsers(); + Common.Utils.addScrollIfNeed('.page[data-page=edit-users-view]', '.page[data-page=edit-users-view] .page-content'); + } else if ('#comments-view' == pageId) { + me.initComments(); + Common.Utils.addScrollIfNeed('.page[data-page=comments-view]', '.page[data-page=comments-view] .page-content'); + } else { + if(editor === 'DE' && !this.appConfig.canReview && !canViewReview) { + $('#reviewing-settings').hide(); + } + } + }, + + //Edit users + + onChangeEditUsers: function(users) { + editUsers = users; + }, + + initEditUsers: function() { + var usersArray = []; + _.each(editUsers, function(item){ + var fio = item.asc_getUserName().split(' '); + var initials = fio[0].substring(0, 1).toUpperCase(); + if (fio.length > 1) { + initials += fio[fio.length - 1].substring(0, 1).toUpperCase(); + } + if(!item.asc_getView()) { + var userAttr = { + color: item.asc_getColor(), + id: item.asc_getId(), + idOriginal: item.asc_getIdOriginal(), + name: item.asc_getUserName(), + view: item.asc_getView(), + initial: initials + }; + if(item.asc_getIdOriginal() == _userId) { + usersArray.unshift(userAttr); + } else { + usersArray.push(userAttr); + } + } + }); + var userSort = _.chain(usersArray).groupBy('idOriginal').value(); + var templateUserItem = _.template([ + '<% _.each(users, function (user) { %>', + '
  • ' + + '
    ' + + '
    <%= user[0].initial %>
    '+ + '' + + '<% if (user.length>1) { %><% } %>' + + '
    '+ + '
  • ', + '<% }); %>'].join('')); + var templateUserList = _.template( + '
    ' + + this.textEditUser + + '
    ' + + '
      ' + + templateUserItem({users: userSort}) + + '
    '); + $('#user-list').html(templateUserList()); + }, + + //Review + + initReviewingSettingsView: function () { + var me = this; + $('#settings-review input:checkbox').attr('checked', this.appConfig.isReviewOnly || Common.localStorage.getBool("de-mobile-track-changes-" + (_fileKey || ''))); + $('#settings-review input:checkbox').single('change', _.bind(me.onTrackChanges, me)); + $('#settings-accept-all').single('click', _.bind(me.onAcceptAllClick, me)); + $('#settings-reject-all').single('click', _.bind(me.onRejectAllClick, me)); + if(this.appConfig.isReviewOnly || displayMode == "final" || displayMode == "original" ) { + $('#settings-accept-all').addClass('disabled'); + $('#settings-reject-all').addClass('disabled'); + $('#settings-review').addClass('disabled'); + } else { + $('#settings-accept-all').removeClass('disabled'); + $('#settings-reject-all').removeClass('disabled'); + $('#settings-review').removeClass('disabled'); + } + if (!this.appConfig.canReview) { + $('#settings-review').hide(); + $('#settings-accept-all').hide(); + $('#settings-reject-all').hide(); + } + }, + + onTrackChanges: function(e) { + var $checkbox = $(e.currentTarget), + state = $checkbox.is(':checked'); + if ( this.appConfig.isReviewOnly ) { + $checkbox.attr('checked', true); + } else { + this.api.asc_SetTrackRevisions(state); + var prefix = !!window.DE ? 'de' : !!window.PE ? 'pe' : 'sse'; + Common.localStorage.setItem(prefix + "-mobile-track-changes-" + (_fileKey || ''), state ? 1 : 0); + } + }, + + onAcceptAllClick: function() { + if (this.api) { + this.api.asc_AcceptAllChanges(); + } + }, + + onRejectAllClick: function() { + if (this.api) { + this.api.asc_RejectAllChanges(); + } + }, + + initDisplayMode: function() { + var me = this; + $('input:radio').single('change', _.bind(me.onReviewViewClick, me)); + var value = displayMode; + if (value == null || value === "markup") { + $('input[value="markup"]').attr('checked', true); + } else if (value === 'final') { + $('input[value="final"]').attr('checked', true); + } else if (value === 'original') { + $('input[value="original"]').attr('checked', true); + } + }, + + getDisplayMode: function() { + return displayMode; + }, + + setCanViewReview: function(config) { + canViewReview = config; + }, + + onReviewViewClick: function(event) { + var value = $(event.currentTarget).val(); + this.turnDisplayMode(value); + !this.appConfig.canReview && Common.localStorage.setItem("de-view-review-mode", value); + }, + + turnDisplayMode: function(value, suppressEvent) { + displayMode = value.toLocaleLowerCase(); + if (this.api) { + if (displayMode === 'final') + this.api.asc_BeginViewModeInReview(true); + + else if (displayMode === 'original') + this.api.asc_BeginViewModeInReview(false); + else + this.api.asc_EndViewModeInReview(); + } + !suppressEvent && this.initReviewingSettingsView(); + DE.getController('Toolbar').setDisplayMode(displayMode); + }, + + + initChange: function() { + var goto = false; + if(arrChangeReview.length == 0) { + this.api.asc_GetNextRevisionsChange(); + } + if(arrChangeReview.length == 0) { + $('#current-change').css('display','none'); + } else { + $('#current-change #date-change').html(arrChangeReview[0].date); + $('#current-change #user-name').html(arrChangeReview[0].user); + $('#current-change #text-change').html(arrChangeReview[0].changetext); + goto = arrChangeReview[0].goto; + } + if (goto) { + $('#btn-goto-change').show(); + } else { + $('#btn-goto-change').hide(); + } + $('#btn-prev-change').single('click', _.bind(this.onPrevChange, this)); + $('#btn-next-change').single('click', _.bind(this.onNextChange, this)); + $('#btn-accept-change').single('click', _.bind(this.onAcceptCurrentChange, this)); + $('#btn-reject-change').single('click', _.bind(this.onRejectCurrentChange, this)); + $('#btn-goto-change').single('click', _.bind(this.onGotoNextChange, this)); + + if(this.appConfig.isReviewOnly) { + $('#btn-accept-change').remove(); + $('#btn-reject-change').remove(); + if(arrChangeReview.length != 0 && arrChangeReview[0].editable) { + $('.accept-reject').html('
    '); + $('#btn-delete-change').single('click', _.bind(this.onDeleteChange, this)); + } + } + if(displayMode == "final" || displayMode == "original") { + $('#btn-accept-change').addClass('disabled'); + $('#btn-reject-change').addClass('disabled'); + $('#btn-prev-change').addClass('disabled'); + $('#btn-next-change').addClass('disabled'); + } + if (!this.appConfig.canReview) { + $('#btn-accept-change').addClass('disabled'); + $('#btn-reject-change').addClass('disabled'); + } + }, + + onPrevChange: function() { + this.api.asc_GetPrevRevisionsChange(); + }, + + onNextChange: function() { + this.api.asc_GetNextRevisionsChange(); + }, + + onAcceptCurrentChange: function() { + var me = this; + if (this.api) { + this.api.asc_AcceptChanges(dateChange[0]); + setTimeout(function () { + me.api.asc_GetNextRevisionsChange(); + }, 10); + } + }, + + onRejectCurrentChange: function() { + var me = this; + if (this.api) { + this.api.asc_RejectChanges(dateChange[0]); + setTimeout(function () { + me.api.asc_GetNextRevisionsChange(); + }, 10); + } + }, + + updateInfoChange: function() { + if($("[data-page=change-view]").length > 0) { + if (arrChangeReview.length == 0) { + $('#current-change #date-change').empty(); + $('#current-change #user-name').empty(); + $('#current-change #text-change').empty(); + $('#current-change').hide(); + $('#btn-goto-change').hide(); + $('#btn-delete-change').hide(); + } else { + $('#current-change').show(); + this.initChange(); + } + } + }, + + changeReview: function (data) { + if (data && data.length>0) { + var me = this, arr = []; + _.each(data, function (item) { + var changetext = '', proptext = '', + value = item.get_Value(), + movetype = item.get_MoveType(), + settings = false; + switch (item.get_Type()) { + case Asc.c_oAscRevisionsChangeType.TextAdd: + changetext = (movetype==Asc.c_oAscRevisionsMove.NoMove) ? me.textInserted : me.textParaMoveTo; + if (typeof value == 'object') { + _.each(value, function (obj) { + if (typeof obj === 'string') + changetext += (' ' + Common.Utils.String.htmlEncode(obj)); + else { + switch (obj) { + case 0: + changetext += (' <' + me.textImage + '>'); + break; + case 1: + changetext += (' <' + me.textShape + '>'); + break; + case 2: + changetext += (' <' + me.textChart + '>'); + break; + case 3: + changetext += (' <' + me.textEquation + '>'); + break; + } + } + }) + } else if (typeof value === 'string') { + changetext += (' ' + Common.Utils.String.htmlEncode(value)); + } + break; + case Asc.c_oAscRevisionsChangeType.TextRem: + changetext = (movetype==Asc.c_oAscRevisionsMove.NoMove) ? me.textDeleted : (item.is_MovedDown() ? me.textParaMoveFromDown : me.textParaMoveFromUp); + if (typeof value == 'object') { + _.each(value, function (obj) { + if (typeof obj === 'string') + changetext += (' ' + Common.Utils.String.htmlEncode(obj)); + else { + switch (obj) { + case 0: + changetext += (' <' + me.textImage + '>'); + break; + case 1: + changetext += (' <' + me.textShape + '>'); + break; + case 2: + changetext += (' <' + me.textChart + '>'); + break; + case 3: + changetext += (' <' + me.textEquation + '>'); + break; + } + } + }) + } else if (typeof value === 'string') { + changetext += (' ' + Common.Utils.String.htmlEncode(value)); + } + break; + case Asc.c_oAscRevisionsChangeType.ParaAdd: + changetext = me.textParaInserted; + break; + case Asc.c_oAscRevisionsChangeType.ParaRem: + changetext = me.textParaDeleted; + break; + case Asc.c_oAscRevisionsChangeType.TextPr: + changetext = '' + me.textFormatted; + if (value.Get_Bold() !== undefined) + proptext += ((value.Get_Bold() ? '' : me.textNot) + me.textBold + ', '); + if (value.Get_Italic() !== undefined) + proptext += ((value.Get_Italic() ? '' : me.textNot) + me.textItalic + ', '); + if (value.Get_Underline() !== undefined) + proptext += ((value.Get_Underline() ? '' : me.textNot) + me.textUnderline + ', '); + if (value.Get_Strikeout() !== undefined) + proptext += ((value.Get_Strikeout() ? '' : me.textNot) + me.textStrikeout + ', '); + if (value.Get_DStrikeout() !== undefined) + proptext += ((value.Get_DStrikeout() ? '' : me.textNot) + me.textDStrikeout + ', '); + if (value.Get_Caps() !== undefined) + proptext += ((value.Get_Caps() ? '' : me.textNot) + me.textCaps + ', '); + if (value.Get_SmallCaps() !== undefined) + proptext += ((value.Get_SmallCaps() ? '' : me.textNot) + me.textSmallCaps + ', '); + if (value.Get_VertAlign() !== undefined) + proptext += (((value.Get_VertAlign() == 1) ? me.textSuperScript : ((value.Get_VertAlign() == 2) ? me.textSubScript : me.textBaseline)) + ', '); + if (value.Get_Color() !== undefined) + proptext += (me.textColor + ', '); + if (value.Get_Highlight() !== undefined) + proptext += (me.textHighlight + ', '); + if (value.Get_Shd() !== undefined) + proptext += (me.textShd + ', '); + if (value.Get_FontFamily() !== undefined) + proptext += (value.Get_FontFamily() + ', '); + if (value.Get_FontSize() !== undefined) + proptext += (value.Get_FontSize() + ', '); + if (value.Get_Spacing() !== undefined) + proptext += (me.textSpacing + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_Spacing()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); + if (value.Get_Position() !== undefined) + proptext += (me.textPosition + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_Position()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); + if (value.Get_Lang() !== undefined) + proptext += (Common.util.LanguageInfo.getLocalLanguageName(value.Get_Lang())[1] + ', '); + + if (!_.isEmpty(proptext)) { + changetext += ': '; + proptext = proptext.substring(0, proptext.length - 2); + } + changetext += ''; + changetext += proptext; + break; + case Asc.c_oAscRevisionsChangeType.ParaPr: + changetext = '' + me.textParaFormatted; + if (value.Get_ContextualSpacing()) + proptext += ((value.Get_ContextualSpacing() ? me.textContextual : me.textNoContextual) + ', '); + if (value.Get_IndLeft() !== undefined) + proptext += (me.textIndentLeft + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_IndLeft()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); + if (value.Get_IndRight() !== undefined) + proptext += (me.textIndentRight + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_IndRight()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); + if (value.Get_IndFirstLine() !== undefined) + proptext += (me.textFirstLine + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_IndFirstLine()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); + if (value.Get_Jc() !== undefined) { + switch (value.Get_Jc()) { + case 0: + proptext += (me.textRight + ', '); + break; + case 1: + proptext += (me.textLeft + ', '); + break; + case 2: + proptext += (me.textCenter + ', '); + break; + case 3: + proptext += (me.textJustify + ', '); + break; + + } + } + if (value.Get_KeepLines() !== undefined) + proptext += ((value.Get_KeepLines() ? me.textKeepLines : me.textNoKeepLines) + ', '); + if (value.Get_KeepNext()) + proptext += ((value.Get_KeepNext() ? me.textKeepNext : me.textNoKeepNext) + ', '); + if (value.Get_PageBreakBefore()) + proptext += ((value.Get_PageBreakBefore() ? me.textBreakBefore : me.textNoBreakBefore) + ', '); + if (value.Get_SpacingLineRule() !== undefined && value.Get_SpacingLine() !== undefined) { + proptext += me.textLineSpacing; + proptext += (((value.Get_SpacingLineRule() == c_paragraphLinerule.LINERULE_LEAST) ? me.textAtLeast : ((value.Get_SpacingLineRule() == c_paragraphLinerule.LINERULE_AUTO) ? me.textMultiple : me.textExact)) + ' '); + proptext += (((value.Get_SpacingLineRule() == c_paragraphLinerule.LINERULE_AUTO) ? value.Get_SpacingLine() : Common.Utils.Metric.fnRecalcFromMM(value.Get_SpacingLine()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName()) + ', '); + } + if (value.Get_SpacingBeforeAutoSpacing()) + proptext += (me.textSpacingBefore + ' ' + me.textAuto + ', '); + else if (value.Get_SpacingBefore() !== undefined) + proptext += (me.textSpacingBefore + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_SpacingBefore()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); + if (value.Get_SpacingAfterAutoSpacing()) + proptext += (me.textSpacingAfter + ' ' + me.textAuto + ', '); + else if (value.Get_SpacingAfter() !== undefined) + proptext += (me.textSpacingAfter + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_SpacingAfter()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); + if (value.Get_WidowControl()) + proptext += ((value.Get_WidowControl() ? me.textWidow : me.textNoWidow) + ', '); + if (value.Get_Tabs() !== undefined) + proptext += proptext += (me.textTabs + ', '); + if (value.Get_NumPr() !== undefined) + proptext += proptext += (me.textNum + ', '); + if (value.Get_PStyle() !== undefined) { + var style = me.api.asc_GetStyleNameById(value.Get_PStyle()); + if (!_.isEmpty(style)) proptext += (style + ', '); + } + + if (!_.isEmpty(proptext)) { + changetext += ': '; + proptext = proptext.substring(0, proptext.length - 2); + } + changetext += ''; + changetext += proptext; + break; + case Asc.c_oAscRevisionsChangeType.TablePr: + changetext = me.textTableChanged; + break; + case Asc.c_oAscRevisionsChangeType.RowsAdd: + changetext = me.textTableRowsAdd; + break; + case Asc.c_oAscRevisionsChangeType.RowsRem: + changetext = me.textTableRowsDel; + break; + + } + var date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime()), + user = item.get_UserName(), + goto = (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom); + date = me.dateToLocaleTimeString(date); + var editable = (item.get_UserId() == _userId); + + + arr.push({date: date, user: user, changetext: changetext, goto: goto, editable: editable}); + }); + arrChangeReview = arr; + dateChange = data; + } else { + arrChangeReview = []; + dateChange = []; + } + this.updateInfoChange(); + }, + + dateToLocaleTimeString: function (date) { + function format(date) { + var strTime, + hours = date.getHours(), + minutes = date.getMinutes(), + ampm = hours >= 12 ? 'pm' : 'am'; + + hours = hours % 12; + hours = hours ? hours : 12; // the hour '0' should be '12' + minutes = minutes < 10 ? '0'+minutes : minutes; + strTime = hours + ':' + minutes + ' ' + ampm; + + return strTime; + } + + // MM/dd/yyyy hh:mm AM + return (date.getMonth() + 1) + '/' + (date.getDate()) + '/' + date.getFullYear() + ' ' + format(date); + }, + + onDeleteChange: function() { + if (this.api) { + this.api.asc_RejectChanges(dateChange[0]); + } + }, + + onGotoNextChange: function() { + if (this.api) { + this.api.asc_FollowRevisionMove(dateChange[0]); + } + }, + + //Comments + + groupCollectionComments: [], + collectionComments: [], + groupCollectionFilter: [], + filter: [], + + initComments: function() { + this.getView('Common.Views.Collaboration').renderComments((this.groupCollectionFilter.length !== 0) ? this.groupCollectionFilter : (this.collectionComments.length !== 0) ? this.collectionComments : false); + $('.comment-quote').single('click', _.bind(this.onSelectComment, this)); + }, + + readSDKReplies: function (data) { + var i = 0, + replies = [], + date = null; + var repliesCount = data.asc_getRepliesCount(); + if (repliesCount) { + for (i = 0; i < repliesCount; ++i) { + date = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) : + ((data.asc_getReply(i).asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getReply(i).asc_getTime()))); + + var user = _.findWhere(editUsers, {idOriginal: data.asc_getReply(i).asc_getUserId()}); + replies.push({ + userid : data.asc_getReply(i).asc_getUserId(), + username : data.asc_getReply(i).asc_getUserName(), + usercolor : (user) ? user.asc_getColor() : null, + date : this.dateToLocaleTimeString(date), + reply : data.asc_getReply(i).asc_getText(), + time : date.getTime() + }); + } + } + return replies; + }, + + readSDKComment: function(id, data) { + var date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) : + ((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime()))); + var user = _.findWhere(editUsers, {idOriginal: data.asc_getUserId()}), + groupname = id.substr(0, id.lastIndexOf('_')+1).match(/^(doc|sheet[0-9_]+)_/); + var comment = { + uid : id, + userid : data.asc_getUserId(), + username : data.asc_getUserName(), + usercolor : (user) ? user.asc_getColor() : null, + date : this.dateToLocaleTimeString(date), + quote : data.asc_getQuoteText(), + comment : data.asc_getText(), + resolved : data.asc_getSolved(), + unattached : !_.isUndefined(data.asc_getDocumentFlag) ? data.asc_getDocumentFlag() : false, + time : date.getTime(), + replys : [], + groupName : (groupname && groupname.length>1) ? groupname[1] : null + } + if (comment) { + var replies = this.readSDKReplies(data); + if (replies.length) { + comment.replys = replies; + } + } + return comment; + }, + + onApiChangeCommentData: function(id, data) { + var me = this, + i = 0, + date = null, + replies = null, + repliesCount = 0, + dateReply = null, + comment = _.findWhere(me.collectionComments, {uid: id}) || this.findCommentInGroup(id); + + if (comment) { + + date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) : + ((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime()))); + + var user = _.findWhere(editUsers, {idOriginal: data.asc_getUserId()}); + comment.comment = data.asc_getText(); + comment.userid = data.asc_getUserId(); + comment.username = data.asc_getUserName(); + comment.usercolor = (user) ? user.asc_getColor() : null; + comment.resolved = data.asc_getSolved(); + comment.quote = data.asc_getQuoteText(); + comment.time = date.getTime(); + comment.date = me.dateToLocaleTimeString(date); + + replies = _.clone(comment.replys); + + replies.length = 0; + + repliesCount = data.asc_getRepliesCount(); + for (i = 0; i < repliesCount; ++i) { + + dateReply = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) : + ((data.asc_getReply(i).asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getReply(i).asc_getTime()))); + + user = _.findWhere(editUsers, {idOriginal: data.asc_getReply(i).asc_getUserId()}); + replies.push({ + userid : data.asc_getReply(i).asc_getUserId(), + username : data.asc_getReply(i).asc_getUserName(), + usercolor : (user) ? user.asc_getColor() : null, + date : me.dateToLocaleTimeString(dateReply), + reply : data.asc_getReply(i).asc_getText(), + time : dateReply.getTime() + }); + } + comment.replys = replies; + if($('.page-comments').length > 0) { + this.initComments(); + } + } + }, + + onApiAddComment: function (id, data) { + var comment = this.readSDKComment(id, data); + if (comment) { + comment.groupName ? this.addCommentToGroupCollection(comment) : this.collectionComments.push(comment); + } + if($('.page-comments').length > 0) { + this.initComments(); + } + }, + + onApiAddComments: function (data) { + for (var i = 0; i < data.length; ++i) { + var comment = this.readSDKComment(data[i].asc_getId(), data[i]); + comment.groupName ? this.addCommentToGroupCollection(comment) : this.collectionComments.push(comment); + } + if($('.page-comments').length > 0) { + this.initComments(); + } + }, + + stringOOToLocalDate: function (date) { + if (typeof date === 'string') + return parseInt(date); + return 0; + }, + + addCommentToGroupCollection: function (comment) { + var groupname = comment.groupName; + if (!this.groupCollectionComments[groupname]) + this.groupCollectionComments[groupname] = []; + this.groupCollectionComments[groupname].push(comment); + if (this.filter.indexOf(groupname) != -1) { + this.groupCollectionFilter.push(comment); + } + }, + + findCommentInGroup: function (id) { + for (var name in this.groupCollectionComments) { + var store = this.groupCollectionComments[name], + model = _.findWhere(store, {uid: id}); + if (model) return model; + } + }, + + onApiRemoveComment: function (id) { + function remove (collection, key) { + if(collection instanceof Array) { + var index = collection.indexOf(key); + if(index != -1) { + collection.splice(index, 1); + } + } + } + if (this.groupCollectionComments) { + for (var name in this.groupCollectionComments) { + var store = this.groupCollectionComments[name], + comment = _.findWhere(store, {uid: id}); + if (comment) { + remove(this.groupCollectionComments[name], comment); + if (this.filter.indexOf(name) != -1) { + remove(this.groupCollectionFilter, comment); + } + } + } + } + if (this.collectionComments.length > 0) { + var comment = _.findWhere(this.collectionComments, {uid: id}); + if (comment) { + remove(this.collectionComments, comment); + } + } + if($('.page-comments').length > 0) { + this.initComments(); + } + }, + + onFilterChange: function (filter) { + if (filter) { + var me = this, + comments = []; + this.filter = filter; + filter.forEach(function(item){ + if (!me.groupCollectionComments[item]) + me.groupCollectionComments[item] = []; + comments = comments.concat(me.groupCollectionComments[item]); + }); + this.groupCollectionFilter = comments; + } + }, + + onSelectComment: function (e) { + var id = $(e.currentTarget).data('id'); + this.api.asc_selectComment(id); + }, + + + textInserted: 'Inserted:', + textDeleted: 'Deleted:', + textParaInserted: 'Paragraph Inserted ', + textParaDeleted: 'Paragraph Deleted ', + textFormatted: 'Formatted', + textParaFormatted: 'Paragraph Formatted', + textNot: 'Not ', + textBold: 'Bold', + textItalic: 'Italic', + textStrikeout: 'Strikeout', + textUnderline: 'Underline', + textColor: 'Font color', + textBaseline: 'Baseline', + textSuperScript: 'Superscript', + textSubScript: 'Subscript', + textHighlight: 'Highlight color', + textSpacing: 'Spacing', + textDStrikeout: 'Double strikeout', + textCaps: 'All caps', + textSmallCaps: 'Small caps', + textPosition: 'Position', + textShd: 'Background color', + textContextual: 'Don\'t add interval between paragraphs of the same style', + textNoContextual: 'Add interval between paragraphs of the same style', + textIndentLeft: 'Indent left', + textIndentRight: 'Indent right', + textFirstLine: 'First line', + textRight: 'Align right', + textLeft: 'Align left', + textCenter: 'Align center', + textJustify: 'Align justify', + textBreakBefore: 'Page break before', + textKeepNext: 'Keep with next', + textKeepLines: 'Keep lines together', + textNoBreakBefore: 'No page break before', + textNoKeepNext: 'Don\'t keep with next', + textNoKeepLines: 'Don\'t keep lines together', + textLineSpacing: 'Line Spacing: ', + textMultiple: 'multiple', + textAtLeast: 'at least', + textExact: 'exactly', + textSpacingBefore: 'Spacing before', + textSpacingAfter: 'Spacing after', + textAuto: 'auto', + textWidow: 'Widow control', + textNoWidow: 'No widow control', + textTabs: 'Change tabs', + textNum: 'Change numbering', + textEquation: 'Equation', + textImage: 'Image', + textChart: 'Chart', + textShape: 'Shape', + textTableChanged: 'Table Settings Changed', + textTableRowsAdd: 'Table Rows Added', + textTableRowsDel: 'Table Rows Deleted', + textParaMoveTo: 'Moved:', + textParaMoveFromUp: 'Moved Up:', + textParaMoveFromDown: 'Moved Down:', + textEditUser: 'Document is currently being edited by several users.' + + } + })(), Common.Controllers.Collaboration || {})) +}); \ No newline at end of file diff --git a/apps/common/mobile/lib/controller/Plugins.js b/apps/common/mobile/lib/controller/Plugins.js new file mode 100644 index 000000000..f4159b109 --- /dev/null +++ b/apps/common/mobile/lib/controller/Plugins.js @@ -0,0 +1,310 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ + +/** + * Plugins.js + * + * Created by Julia Svinareva on 8/7/19 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +if (Common === undefined) + var Common = {}; + +Common.Controllers = Common.Controllers || {}; + +define([ + 'core', + 'jquery', + 'underscore', + 'backbone' +], function (core, $, _, Backbone) { + 'use strict'; + + Common.Controllers.Plugins = Backbone.Controller.extend(_.extend((function() { + // Private + var modal; + + return { + configPlugins: {autostart:[]},// {config: 'from editor config', plugins: 'loaded plugins', UIplugins: 'loaded customization plugins', autostart: 'autostart guids'} + serverPlugins: {autostart:[]}, + models: [], + collections: [], + views: [ + ], + + initialize: function() { + var me = this; + }, + + setApi: function(api) { + this.api = api; + this.api.asc_registerCallback("asc_onPluginShow", _.bind(this.showPluginModal, this)); + this.api.asc_registerCallback("asc_onPluginClose", _.bind(this.pluginClose, this)); + this.api.asc_registerCallback("asc_onPluginResize", _.bind(this.pluginResize, this)); + this.api.asc_registerCallback('asc_onPluginsInit', _.bind(this.registerPlugins, this)); + }, + + onLaunch: function () { + Common.Gateway.on('init', this.loadConfig.bind(this)); + }, + + setMode: function(mode) { + this.appConfig = mode; + this.loadPlugins(); + }, + + + showPluginModal: function(plugin, variationIndex, frameId, urlAddition) { + var me = this, + isAndroid = Framework7.prototype.device.android === true; + + var variation = plugin.get_Variations()[variationIndex]; + if (variation.get_Visual()) { + var url = variation.get_Url(); + url = ((plugin.get_BaseUrl().length == 0) ? url : plugin.get_BaseUrl()) + url; + if (urlAddition) + url += urlAddition; + var isCustomWindow = variation.get_CustomWindow(), + arrBtns = variation.get_Buttons(), + newBtns = [], + size = variation.get_Size(); //size[0] - width, size[1] - height + if (_.isArray(arrBtns)) { + _.each(arrBtns, function(b, index){ + if ((me.appConfig.isEdit || b.isViewer !== false)) + newBtns[index] = { + text: b.text, + attributes: {result: index} + }; + }); + } + uiApp.closeModal(); + + modal = uiApp.modal({ + title: '', + text: '', + afterText: + '
    '+ + '
    ', + buttons: isCustomWindow ? undefined : newBtns + }); + $('#plugin-frame').html('
    '); + me.iframe = document.createElement("iframe"); + me.iframe.id = frameId; + me.iframe.name = 'pluginFrameEditor'; + me.iframe.width = '100%'; + me.iframe.height = '100%'; + me.iframe.align = "top"; + me.iframe.frameBorder = 0; + me.iframe.scrolling = "no"; + me.iframe.src = url; + setTimeout(function () { + $('#plugin-frame').html(me.iframe); + }, 100); + $$(modal).find('.modal-button').on('click', _.bind(me.onDlgBtnClick, me)); + $$(modal).css({ + margin: '0', + width: '90%', + left: '5%', + height: 'auto', + top: '20px' + }); + $$(modal).find('.modal-inner').css({padding: '0'}); + if (Common.SharedSettings.get('phone')) { + var height = Math.min(size[1], 240); + $$(modal).find('#plugin-frame').css({height: height + 'px'}); + } else { + var height = Math.min(size[1], 500); + $$(modal).find('#plugin-frame').css({height: height + 'px'}); + } + + if (Framework7.prototype.device.android === true) { + $$('.view.collaboration-root-view.navbar-through').removeClass('navbar-through').addClass('navbar-fixed'); + $$('.view.collaboration-root-view .navbar').prependTo('.view.collaboration-root-view > .pages > .page'); + } + } + }, + + onDlgBtnClick: function (e) { + var index = $(e.currentTarget).index(); + this.api.asc_pluginButtonClick(index); + }, + + pluginClose: function (plugin) { + if (this.iframe) { + this.iframe = null; + } + }, + + pluginResize: function(size) { + if (Common.SharedSettings.get('phone')) { + var height = Math.min(size[1], 240); + $$(modal).find('#plugin-frame').css({height: height + 'px'}); + } else { + var height = Math.min(size[1], 500); + $$(modal).find('#plugin-frame').css({height: height + 'px'}); + } + }, + + loadConfig: function(data) { + this.configPlugins.config = data.config.plugins; + }, + + loadPlugins: function() { + var me = this; + if (me.configPlugins.config) { + me.getPlugins(me.configPlugins.config.pluginsData) + .then(function(loaded) + { + me.configPlugins.plugins = loaded; + me.mergePlugins(); + }); + } else { + me.configPlugins.plugins = false; + } + var server_plugins_url = '../../../../plugins.json'; + Common.Utils.loadConfig(server_plugins_url, function (obj) { + if ( obj != 'error' ) { + me.serverPlugins.config = obj; + me.getPlugins(me.serverPlugins.config.pluginsData) + .then(function(loaded) + { + me.serverPlugins.plugins = loaded; + me.mergePlugins(); + }); + } else + me.serverPlugins.plugins = false; + }); + }, + + mergePlugins: function() { + var me = this; + if (me.serverPlugins.plugins !== undefined && me.configPlugins.plugins !== undefined) { + var arr = [], + plugins = this.configPlugins; + if (plugins.plugins && plugins.plugins.length>0) { + arr = plugins.plugins; + } + plugins = this.serverPlugins; + if (plugins.plugins && plugins.plugins.length>0) { + arr = arr.concat(plugins.plugins); + } + this.registerPlugins(arr); + } + }, + + registerPlugins: function(plugins) { + var me = this; + var arr = []; + plugins.forEach(function(item){ + var plugin = new Asc.CPlugin(); + plugin.set_Name(item['name']); + plugin.set_Guid(item['guid']); + plugin.set_BaseUrl(item['baseUrl']); + + var variations = item['variations'], + variationsArr = []; + variations.forEach(function(itemVar){ + var variation = new Asc.CPluginVariation(); + variation.set_Description(itemVar['description']); + variation.set_Url(itemVar['url']); + variation.set_Icons(itemVar['icons']); + variation.set_Visual(itemVar['isVisual']); + variation.set_CustomWindow(itemVar['isCustomWindow']); + variation.set_System(itemVar['isSystem']); + variation.set_Viewer(itemVar['isViewer']); + variation.set_EditorsSupport(itemVar['EditorsSupport']); + variation.set_Modal(itemVar['isModal']); + variation.set_InsideMode(itemVar['isInsideMode']); + variation.set_InitDataType(itemVar['initDataType']); + variation.set_InitData(itemVar['initData']); + variation.set_UpdateOleOnResize(itemVar['isUpdateOleOnResize']); + variation.set_Buttons(itemVar['buttons']); + variation.set_Size(itemVar['size']); + variation.set_InitOnSelectionChanged(itemVar['initOnSelectionChanged']); + variation.set_Events(itemVar['events']); + + variationsArr.push(variation); + }); + + plugin["set_Variations"](variationsArr); + arr.push(plugin); + }); + me.api.asc_pluginsRegister('', arr); + }, + + getPlugins: function(pluginsData, fetchFunction) { + if (!pluginsData || pluginsData.length<1) + return Promise.resolve([]); + + fetchFunction = fetchFunction || function (url) { + return fetch(url) + .then(function(response) { + if ( response.ok ) return response.json(); + else return Promise.reject(url); + }).then(function(json) { + json.baseUrl = url.substring(0, url.lastIndexOf("config.json")); + return json; + }); + }; + + var loaded = []; + return pluginsData.map(fetchFunction).reduce(function (previousPromise, currentPromise) { + return previousPromise + .then(function() + { + return currentPromise; + }) + .then(function(item) + { + loaded.push(item); + return Promise.resolve(item); + }) + .catch(function(item) + { + return Promise.resolve(item); + }); + + }, Promise.resolve()) + .then(function () + { + return Promise.resolve(loaded); + }); + }, + + textCancel: 'Cancel', + textLoading: 'Loading' + } + })(), Common.Controllers.Plugins || {})) +}); \ No newline at end of file diff --git a/apps/common/mobile/lib/template/Collaboration.template b/apps/common/mobile/lib/template/Collaboration.template new file mode 100644 index 000000000..ec41861a4 --- /dev/null +++ b/apps/common/mobile/lib/template/Collaboration.template @@ -0,0 +1,239 @@ + +
    + + +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + + +
    + +
    +
    +
    +
    +
      +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    +
    + +
    +
    +
    +
    + + +
    + +
    +
    +
    +
    + + + + + + + + + + + +
    +
    +

    +

    +

    +
    +
    +
    +
    +
    + + +
    + +
    +
    +
    +
    +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/apps/common/mobile/lib/view/Collaboration.js b/apps/common/mobile/lib/view/Collaboration.js new file mode 100644 index 000000000..a9d54cd89 --- /dev/null +++ b/apps/common/mobile/lib/view/Collaboration.js @@ -0,0 +1,215 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ + +/** + * Collaboration.js + * + * Created by Julia Svinareva on 12/7/19 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +if (Common === undefined) + var Common = {}; + +Common.Views = Common.Views || {}; + +define([ + 'text!common/mobile/lib/template/Collaboration.template', + 'jquery', + 'underscore', + 'backbone' +], function (settingsTemplate, $, _, Backbone) { + 'use strict'; + + Common.Views.Collaboration = Backbone.View.extend(_.extend((function() { + // private + + return { + + template: _.template(settingsTemplate), + + events: { + // + }, + + initialize: function() { + Common.NotificationCenter.on('collaborationcontainer:show', _.bind(this.initEvents, this)); + this.on('page:show', _.bind(this.updateItemHandlers, this)); + }, + + initEvents: function () { + var me = this; + + Common.Utils.addScrollIfNeed('.view[data-page=collaboration-root-view] .pages', '.view[data-page=collaboration-root-view] .page'); + me.updateItemHandlers(); + }, + + initControls: function() { + // + }, + + // Render layout + render: function() { + this.layout = $('
      ').append(this.template({ + android : Common.SharedSettings.get('android'), + phone : Common.SharedSettings.get('phone'), + orthography: Common.SharedSettings.get('sailfish'), + scope : this, + editor : !!window.DE ? 'DE' : !!window.PE ? 'PE' : 'SSE' + })); + + return this; + }, + + updateItemHandlers: function () { + var selectorsDynamicPage = [ + '.page[data-page=collaboration-root-view]', + '.page[data-page=reviewing-settings-view]' + ].map(function (selector) { + return selector + ' a.item-link[data-page]'; + }).join(', '); + + $(selectorsDynamicPage).single('click', _.bind(this.onItemClick, this)); + }, + + onItemClick: function (e) { + var $target = $(e.currentTarget), + page = $target.data('page'); + + if (page && page.length > 0 ) { + this.showPage(page); + } + }, + + rootLayout: function () { + if (this.layout) { + var $layour = this.layout.find('#collaboration-root-view'), + isPhone = Common.SharedSettings.get('phone'); + + return $layour.html(); + } + + return ''; + }, + + showPage: function(templateId, animate) { + var me = this; + var prefix = !!window.DE ? DE : !!window.PE ? PE : SSE; + var rootView = prefix.getController('Common.Controllers.Collaboration').rootView(); + + + if (rootView && this.layout) { + var $content = this.layout.find(templateId); + + // Android fix for navigation + if (Framework7.prototype.device.android) { + $content.find('.page').append($content.find('.navbar')); + } + + rootView.router.load({ + content: $content.html(), + animatePages: animate !== false + }); + + this.fireEvent('page:show', [this, templateId]); + } + }, + + renderComments: function (comments) { + var $pageComments = $('.page-comments .page-content'); + if (!comments) { + if ($('.comment').length > 0) { + $('.comment').remove(); + } + var template = '
      ' + this.textNoComments + '
      '; + $pageComments.append(_.template(template)); + } else { + if ($('#no-comments').length > 0) { + $('#no-comments').remove(); + } + var $listComments = $('#comments-list'), + items = []; + _.each(comments, function (comment) { + var itemTemplate = [ + '
    • ', + '
      ', + '

      <%= item.username %>

      ', + '

      <%= item.date %>

      ', + '<% if(item.quote) {%>', + '

      <%= item.quote %>

      ', + '<% } %>', + '

      <%= item.comment %>

      ', + '<% if(replys > 0) {%>', + '
        ', + '<% _.each(item.replys, function (reply) { %>', + '
      • ', + '

        <%= reply.username %>

        ', + '

        <%= reply.date %>

        ', + '

        <%= reply.reply %>

        ', + '
      • ', + '<% }); %>', + '
      ', + '<% } %>', + '
      ', + '
    • ' + ].join(''); + items.push(_.template(itemTemplate)({ + android: Framework7.prototype.device.android, + item: comment, + replys: comment.replys.length, + })); + }); + $listComments.html(items); + } + }, + + + + textCollaboration: 'Collaboration', + textReviewing: 'Review', + textСomments: 'Сomments', + textBack: 'Back', + textReview: 'Track Changes', + textAcceptAllChanges: 'Accept All Changes', + textRejectAllChanges: 'Reject All Changes', + textDisplayMode: 'Display Mode', + textMarkup: 'Markup', + textFinal: 'Final', + textOriginal: 'Original', + textChange: 'Review Change', + textEditUsers: 'Users', + textNoComments: "This document doesn\'t contain comments" + } + })(), Common.Views.Collaboration || {})) +}); \ No newline at end of file diff --git a/apps/common/mobile/resources/img/about/onlyoffice.svg b/apps/common/mobile/resources/img/about/logo.svg similarity index 100% rename from apps/common/mobile/resources/img/about/onlyoffice.svg rename to apps/common/mobile/resources/img/about/logo.svg diff --git a/apps/common/mobile/resources/img/controls/flags.png b/apps/common/mobile/resources/img/controls/flags.png new file mode 100644 index 000000000..21e559123 Binary files /dev/null and b/apps/common/mobile/resources/img/controls/flags.png differ diff --git a/apps/common/mobile/resources/img/controls/flags@2x.png b/apps/common/mobile/resources/img/controls/flags@2x.png new file mode 100644 index 000000000..07b0ea13a Binary files /dev/null and b/apps/common/mobile/resources/img/controls/flags@2x.png differ diff --git a/apps/common/mobile/resources/less/ios/_about.less b/apps/common/mobile/resources/less/ios/_about.less index 031a94ebf..28d7460f2 100644 --- a/apps/common/mobile/resources/less/ios/_about.less +++ b/apps/common/mobile/resources/less/ios/_about.less @@ -32,7 +32,7 @@ } .logo { - background: url('../../../../common/mobile/resources/img/about/onlyoffice.svg') no-repeat center; + background: url('../../../../common/mobile/resources/img/about/logo.svg') no-repeat center; margin-top: 20px; } } \ No newline at end of file diff --git a/apps/common/mobile/resources/less/ios/_collaboration.less b/apps/common/mobile/resources/less/ios/_collaboration.less new file mode 100644 index 000000000..37361bc8e --- /dev/null +++ b/apps/common/mobile/resources/less/ios/_collaboration.less @@ -0,0 +1,157 @@ +.page-change { + .block-description { + background-color: #fff; + padding-top: 15px; + padding-bottom: 15px; + margin: 0; + max-width: 100%; + word-wrap: break-word; + } + #user-name { + font-size: 17px; + line-height: 22px; + color: #000000; + margin: 0; + } + #date-change { + font-size: 14px; + line-height: 18px; + color: #6d6d72; + margin: 0; + margin-top: 3px; + } + #text-change { + color: #000000; + font-size: 15px; + line-height: 20px; + margin: 0; + margin-top: 10px; + } + .block-btn, .content-block.block-btn:first-child { + display: flex; + flex-direction: row; + justify-content: space-around; + margin: 26px 0; + + #btn-next-change, #btn-reject-change { + margin-left: 20px; + } + #btn-goto-change { + margin-right: 20px; + } + .right-buttons { + display: flex; + } + .link { + display: inline-block; + } + } +} +.navbar .center-collaboration { + display: flex; + justify-content: space-around; +} +.container-collaboration { + .navbar .right.close-collaboration { + position: absolute; + right: 10px; + } + .page-content .list-block:first-child { + margin-top: -1px; + } +} + +//Edit users +@initialEditUser: #373737; + +#user-list { + .item-content { + padding-left: 0; + } + .item-inner { + justify-content: flex-start; + padding-left: 15px; + } + .length { + margin-left: 4px; + } + .color { + min-width: 40px; + min-height: 40px; + margin-right: 20px; + text-align: center; + border-radius: 50px; + line-height: 40px; + color: @initialEditUser; + font-weight: 500; + + } + ul:before { + content: none; + } +} + +//Comments +.page-comments { + .list-block .item-inner { + display: block; + padding: 16px 0; + word-wrap: break-word; + } + p { + margin: 0; + } + .user-name { + font-size: 17px; + line-height: 22px; + color: #000000; + margin: 0; + font-weight: bold; + } + .comment-date, .reply-date { + font-size: 12px; + line-height: 18px; + color: #6d6d72; + margin: 0; + margin-top: 0px; + } + .comment-text, .reply-text { + color: #000000; + font-size: 15px; + line-height: 25px; + margin: 0; + max-width: 100%; + padding-right: 15px; + } + .reply-item { + margin-top: 15px; + .user-name { + padding-top: 16px; + } + &:before { + content: ''; + position: absolute; + left: auto; + bottom: 0; + right: auto; + top: 0; + height: 1px; + width: 100%; + background-color: @listBlockBorderColor; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; + } + } + .comment-quote { + color: @themeColor; + border-left: 1px solid @themeColor; + padding-left: 10px; + margin: 5px 0; + font-size: 15px; + } +} +.settings.popup .list-block ul.list-reply:last-child:after, .settings.popover .list-block ul.list-reply:last-child:after { + display: none; +} \ No newline at end of file diff --git a/apps/common/mobile/resources/less/ios/_color-schema.less b/apps/common/mobile/resources/less/ios/_color-schema.less new file mode 100644 index 000000000..ce527c340 --- /dev/null +++ b/apps/common/mobile/resources/less/ios/_color-schema.less @@ -0,0 +1,25 @@ +.color-schemes-menu { + cursor: pointer; + display: block; + background-color: #fff; + .item-content { + padding-left: 0; + } + .item-inner { + justify-content: flex-start; + padding-left: 16px; + } + .color-schema-block { + display: flex; + } + .color { + min-width: 26px; + min-height: 26px; + margin: 0 2px 0 0; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset; + } + .text { + margin-left: 20px; + color: #212121; + } +} \ No newline at end of file diff --git a/apps/common/mobile/resources/less/ios/_container.less b/apps/common/mobile/resources/less/ios/_container.less index a51aa98e8..de81509ef 100644 --- a/apps/common/mobile/resources/less/ios/_container.less +++ b/apps/common/mobile/resources/less/ios/_container.less @@ -1,6 +1,8 @@ // Container .phone.ios { - .container-edit { + .container-edit, + .container-collaboration, + .container-filter { .navbar { .hairline(top, @toolbarBorderColor); } @@ -15,7 +17,9 @@ .container-edit, .container-add, -.container-settings { +.container-settings, +.container-collaboration, +.container-filter { &.popover { width: 360px; } diff --git a/apps/common/mobile/resources/less/material/_about.less b/apps/common/mobile/resources/less/material/_about.less index c317b5939..ce52c8b3e 100644 --- a/apps/common/mobile/resources/less/material/_about.less +++ b/apps/common/mobile/resources/less/material/_about.less @@ -33,6 +33,6 @@ } .logo { - background: url('../../../../common/mobile/resources/img/about/onlyoffice.svg') no-repeat center; + background: url('../../../../common/mobile/resources/img/about/logo.svg') no-repeat center; } } \ No newline at end of file diff --git a/apps/common/mobile/resources/less/material/_collaboration.less b/apps/common/mobile/resources/less/material/_collaboration.less new file mode 100644 index 000000000..ea3cdf0f0 --- /dev/null +++ b/apps/common/mobile/resources/less/material/_collaboration.less @@ -0,0 +1,156 @@ +.page-change { + .block-description { + background-color: #fff; + padding-top: 15px; + padding-bottom: 15px; + margin: 0; + max-width: 100%; + word-wrap: break-word; + } + #user-name { + font-size: 17px; + line-height: 22px; + color: #000000; + margin: 0; + } + #date-change { + font-size: 14px; + line-height: 18px; + color: #6d6d72; + margin: 0; + margin-top: 3px; + } + #text-change { + color: #000000; + font-size: 15px; + line-height: 20px; + margin: 0; + margin-top: 10px; + } + .block-btn { + display: flex; + flex-direction: row; + justify-content: space-around; + margin: 0; + padding: 26px 0; + background-color: #EFEFF4; + + #btn-next-change, #btn-reject-change { + margin-left: 20px; + } + #btn-goto-change { + margin-right: 20px; + } + .right-buttons { + display: flex; + } + .link { + display: inline-block; + } + } +} +.container-collaboration { + .navbar .right.close-collaboration { + position: absolute; + right: 5px; + } + .page-content .list-block:first-child { + margin-top: -1px; + } +} + + +//Edit users +@initialEditUser: #373737; + +#user-list { + .item-content { + padding-left: 0; + } + .item-inner { + justify-content: flex-start; + padding-left: 15px; + } + .length { + margin-left: 4px; + } + .color { + min-width: 40px; + min-height: 40px; + margin-right: 20px; + text-align: center; + border-radius: 50px; + line-height: 40px; + color: @initialEditUser; + font-weight: 400; + } + ul:before { + content: none; + } +} + + +//Comments +.page-comments { + .list-block .item-inner { + display: block; + padding: 16px 0; + word-wrap: break-word; + } + p { + margin: 0; + } + .user-name { + font-size: 17px; + line-height: 22px; + color: #000000; + margin: 0; + font-weight: bold; + } + .comment-date, .reply-date { + font-size: 12px; + line-height: 18px; + color: #6d6d72; + margin: 0; + margin-top: 0px; + } + .comment-text, .reply-text { + color: #000000; + font-size: 15px; + line-height: 25px; + margin: 0; + max-width: 100%; + padding-right: 15px; + } + .reply-item { + margin-top: 15px; + .user-name { + padding-top: 16px; + } + &:before { + content: ''; + position: absolute; + left: auto; + bottom: 0; + right: auto; + top: 0; + height: 1px; + width: 100%; + background-color: @listBlockBorderColor; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; + } + } + .comment-quote { + color: @themeColor; + border-left: 1px solid @themeColor; + padding-left: 10px; + margin: 5px 0; + font-size: 15px; + } +} +.settings.popup .list-block ul.list-reply:last-child:after, .settings.popover .list-block ul.list-reply:last-child:after { + display: none; +} \ No newline at end of file diff --git a/apps/common/mobile/resources/less/material/_color-schema.less b/apps/common/mobile/resources/less/material/_color-schema.less new file mode 100644 index 000000000..ce527c340 --- /dev/null +++ b/apps/common/mobile/resources/less/material/_color-schema.less @@ -0,0 +1,25 @@ +.color-schemes-menu { + cursor: pointer; + display: block; + background-color: #fff; + .item-content { + padding-left: 0; + } + .item-inner { + justify-content: flex-start; + padding-left: 16px; + } + .color-schema-block { + display: flex; + } + .color { + min-width: 26px; + min-height: 26px; + margin: 0 2px 0 0; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset; + } + .text { + margin-left: 20px; + color: #212121; + } +} \ No newline at end of file diff --git a/apps/common/mobile/resources/less/material/_container.less b/apps/common/mobile/resources/less/material/_container.less index 8caf0af92..04df376e4 100644 --- a/apps/common/mobile/resources/less/material/_container.less +++ b/apps/common/mobile/resources/less/material/_container.less @@ -1,7 +1,9 @@ // Container .phone.android { - .container-edit { + .container-edit, + .container-collaboration, + .container-filter { .page-content { .list-block:first-child { @@ -13,7 +15,9 @@ .container-edit, .container-add, -.container-settings { +.container-settings, +.container-collaboration, +.container-filter { &.popover { width: 360px; } diff --git a/apps/documenteditor/embed/index.html b/apps/documenteditor/embed/index.html index 5a37da3b2..4042fb812 100644 --- a/apps/documenteditor/embed/index.html +++ b/apps/documenteditor/embed/index.html @@ -164,7 +164,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -175,7 +175,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #fff; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -241,14 +241,26 @@ window.frameEditorId = params["frameEditorId"]; - if ( lang == 'de') loading = 'Ladevorgang...'; - else if ( lang == 'es') loading = 'Cargando...'; - else if ( lang == 'fr') loading = 'Chargement en cours...'; - else if ( lang == 'it') loading = 'Caricamento in corso...'; - else if ( lang == 'pt') loading = 'Carregando...'; - else if ( lang == 'ru') loading = 'Загрузка...'; - else if ( lang == 'sl') loading = 'Nalaganje...'; - else if ( lang == 'tr') loading = 'Yükleniyor...'; + if ( lang == 'de') loading = 'Ladevorgang...'; + else if ( lang == 'es') loading = 'Cargando...'; + else if ( lang == 'fr') loading = 'Chargement en cours...'; + else if ( lang == 'it') loading = 'Caricamento in corso...'; + else if ( lang == 'pt') loading = 'Carregando...'; + else if ( lang == 'ru') loading = 'Загрузка...'; + else if ( lang == 'sl') loading = 'Nalaganje...'; + else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; document.write( '
      ' + @@ -330,6 +342,7 @@ + diff --git a/apps/documenteditor/embed/index.html.deploy b/apps/documenteditor/embed/index.html.deploy index 813f064a5..bac45e2be 100644 --- a/apps/documenteditor/embed/index.html.deploy +++ b/apps/documenteditor/embed/index.html.deploy @@ -162,7 +162,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -173,7 +173,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #fff; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -241,6 +241,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; document.write( '
      ' + diff --git a/apps/documenteditor/embed/js/ApplicationController.js b/apps/documenteditor/embed/js/ApplicationController.js index cbf9ed383..07d2debb1 100644 --- a/apps/documenteditor/embed/js/ApplicationController.js +++ b/apps/documenteditor/embed/js/ApplicationController.js @@ -30,7 +30,7 @@ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ -var ApplicationController = new(function(){ +DE.ApplicationController = new(function(){ var me, api, config = {}, @@ -51,7 +51,7 @@ var ApplicationController = new(function(){ // ------------------------- if (typeof isBrowserSupported !== 'undefined' && !isBrowserSupported()){ - Common.Gateway.reportError(undefined, 'Your browser is not supported.'); + Common.Gateway.reportError(undefined, this.unsupportedBrowserErrorText); return; } @@ -122,7 +122,7 @@ var ApplicationController = new(function(){ function onCountPages(count) { maxPages = count; - $('#pages').text('of ' + count); + $('#pages').text(me.textOf + " " + count); } function onCurrentPage(number) { @@ -134,10 +134,10 @@ var ApplicationController = new(function(){ switch (id) { case Asc.c_oAscAsyncAction['Print']: - text = 'Downloading document...'; + text = me.downloadTextText; break; default: - text = 'Please wait...'; + text = me.waitText; break; } @@ -204,11 +204,11 @@ var ApplicationController = new(function(){ function onPrint() { if ( permissions.print!==false ) - api.asc_Print($.browser.chrome || $.browser.safari || $.browser.opera); + api.asc_Print(new Asc.asc_CDownloadOptions(null, $.browser.chrome || $.browser.safari || $.browser.opera)); } function onPrintUrl(url) { - common.utils.dialogPrint(url); + common.utils.dialogPrint(url, api); } function hidePreloader() { @@ -248,18 +248,18 @@ var ApplicationController = new(function(){ Common.Gateway.on('processmouse', onProcessMouse); Common.Gateway.on('downloadas', onDownloadAs); - ApplicationView.tools.get('#idt-fullscreen') + DE.ApplicationView.tools.get('#idt-fullscreen') .on('click', function(){ common.utils.openLink(embedConfig.fullscreenUrl); }); - ApplicationView.tools.get('#idt-download') + DE.ApplicationView.tools.get('#idt-download') .on('click', function(){ if ( !!embedConfig.saveUrl ){ common.utils.openLink(embedConfig.saveUrl); } else if (api && permissions.print!==false){ - api.asc_Print($.browser.chrome || $.browser.safari || $.browser.opera); + api.asc_Print(new Asc.asc_CDownloadOptions(null, $.browser.chrome || $.browser.safari || $.browser.opera)); } Common.Analytics.trackEvent('Save'); @@ -354,14 +354,14 @@ var ApplicationController = new(function(){ function onOpenDocument(progress) { var proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount()); - $('#loadmask-text').html('Loading document: ' + Math.min(Math.round(proc * 100), 100) + '%'); + $('#loadmask-text').html(me.textLoadingDocument + ': ' + Math.min(Math.round(proc * 100), 100) + '%'); } function onError(id, level, errData) { if (id == Asc.c_oAscError.ID.LoadingScriptError) { $('#id-critical-error-title').text(me.criticalErrorTitle); $('#id-critical-error-message').text(me.scriptLoadError); - $('#id-critical-error-close').off().on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ window.location.reload(); }); $('#id-critical-error-dialog').css('z-index', 20002).modal('show'); @@ -410,8 +410,7 @@ var ApplicationController = new(function(){ $('#id-critical-error-title').text(me.criticalErrorTitle); $('#id-critical-error-message').text(message); - $('#id-critical-error-close').off(); - $('#id-critical-error-close').on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ window.location.reload(); }); } @@ -420,8 +419,7 @@ var ApplicationController = new(function(){ $('#id-critical-error-title').text(me.notcriticalErrorTitle); $('#id-critical-error-message').text(message); - $('#id-critical-error-close').off(); - $('#id-critical-error-close').on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ $('#id-critical-error-dialog').modal('hide'); }); } @@ -434,7 +432,7 @@ var ApplicationController = new(function(){ function onExternalMessage(error) { if (error) { hidePreloader(); - $('#id-error-mask-title').text('Error'); + $('#id-error-mask-title').text(me.criticalErrorTitle); $('#id-error-mask-text').text(error.msg); $('#id-error-mask').css('display', 'block'); @@ -460,7 +458,7 @@ var ApplicationController = new(function(){ Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, me.errorAccessDeny); return; } - if (api) api.asc_DownloadAs(Asc.c_oAscFileType.DOCX, true); + if (api) api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.DOCX, true)); } // Helpers @@ -541,14 +539,20 @@ var ApplicationController = new(function(){ create : createController, errorDefaultMessage : 'Error code: %1', unknownErrorText : 'Unknown error.', - convertationTimeoutText : 'Convertation timeout exceeded.', - convertationErrorText : 'Convertation failed.', + convertationTimeoutText : 'Conversion timeout exceeded.', + convertationErrorText : 'Conversion failed.', downloadErrorText : 'Download failed.', criticalErrorTitle : 'Error', notcriticalErrorTitle : 'Warning', scriptLoadError: 'The connection is too slow, some of the components could not be loaded. Please reload the page.', errorFilePassProtect: 'The file is password protected and cannot be opened.', errorAccessDeny: 'You are trying to perform an action you do not have rights for.
      Please contact your Document Server administrator.', - errorUserDrop: 'The file cannot be accessed right now.' + errorUserDrop: 'The file cannot be accessed right now.', + unsupportedBrowserErrorText: 'Your browser is not supported.', + textOf: 'of', + downloadTextText: 'Downloading document...', + waitText: 'Please, wait...', + textLoadingDocument: 'Loading document', + txtClose: 'Close' } })(); \ No newline at end of file diff --git a/apps/documenteditor/embed/js/ApplicationView.js b/apps/documenteditor/embed/js/ApplicationView.js index 41fb404d8..1c3aca46f 100644 --- a/apps/documenteditor/embed/js/ApplicationView.js +++ b/apps/documenteditor/embed/js/ApplicationView.js @@ -30,7 +30,11 @@ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ -var ApplicationView = new(function(){ +if (DE === undefined) { + var DE = {}; +} + +DE.ApplicationView = new(function(){ var $btnTools; // Initialize view @@ -41,10 +45,10 @@ var ApplicationView = new(function(){ $btnTools.addClass('dropdown-toggle').attr('data-toggle', 'dropdown').attr('aria-expanded', 'true'); $btnTools.parent().append( ''); } @@ -56,6 +60,11 @@ var ApplicationView = new(function(){ create: createView , tools: { get: getTools - } + }, + + txtDownload: 'Download', + txtShare: 'Share', + txtEmbed: 'Embed', + txtFullScreen: 'Full Screen' } })(); diff --git a/apps/documenteditor/embed/js/application.js b/apps/documenteditor/embed/js/application.js index 785fd189e..9045fe155 100644 --- a/apps/documenteditor/embed/js/application.js +++ b/apps/documenteditor/embed/js/application.js @@ -31,6 +31,7 @@ * */ +function ($) { - ApplicationView.create(); - ApplicationController.create(); + Common.Locale.apply(); + DE.ApplicationView.create(); + DE.ApplicationController.create(); }(); diff --git a/apps/documenteditor/embed/locale/bg.json b/apps/documenteditor/embed/locale/bg.json new file mode 100644 index 000000000..63690dfe8 --- /dev/null +++ b/apps/documenteditor/embed/locale/bg.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Копиране в клипборда", + "common.view.modals.txtEmbed": "Вграждане", + "common.view.modals.txtHeight": "Височина", + "common.view.modals.txtShare": "Споделяне на връзка", + "common.view.modals.txtWidth": "Широчина", + "DE.ApplicationController.convertationErrorText": "Конвертирането е неуспешно.", + "DE.ApplicationController.convertationTimeoutText": "Превишава се времето на изтичане на реализациите.", + "DE.ApplicationController.criticalErrorTitle": "Грешка", + "DE.ApplicationController.downloadErrorText": "Изтеглянето се провали.", + "DE.ApplicationController.downloadTextText": "Документът се изтегли ...", + "DE.ApplicationController.errorAccessDeny": "Опитвате се да извършите действие, за което нямате права.
      Моля, свържете се с администратора на сървъра за документи.", + "DE.ApplicationController.errorDefaultMessage": "Код на грешка: %1", + "DE.ApplicationController.errorFilePassProtect": "Файлът е защитен с парола и не може да бъде отворен.", + "DE.ApplicationController.errorUserDrop": "Файлът не може да бъде достъпен в момента.", + "DE.ApplicationController.notcriticalErrorTitle": "Внимание", + "DE.ApplicationController.scriptLoadError": "Връзката е твърде бавна, някои от компонентите не могат да бъдат заредени. Моля, презаредете страницата.", + "DE.ApplicationController.textLoadingDocument": "Зареждане на документ", + "DE.ApplicationController.textOf": "на", + "DE.ApplicationController.txtClose": "Затвори", + "DE.ApplicationController.unknownErrorText": "Неизвестна грешка.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Вашият браузър не се поддържа.", + "DE.ApplicationController.waitText": "Моля изчакай...", + "DE.ApplicationView.txtDownload": "Изтегли", + "DE.ApplicationView.txtEmbed": "Вграждане", + "DE.ApplicationView.txtFullScreen": "Цял екран", + "DE.ApplicationView.txtShare": "Дял" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/cs.json b/apps/documenteditor/embed/locale/cs.json new file mode 100644 index 000000000..53aee7c51 --- /dev/null +++ b/apps/documenteditor/embed/locale/cs.json @@ -0,0 +1,24 @@ +{ + "common.view.modals.txtCopy": "Zkopírovat do schránky", + "common.view.modals.txtHeight": "Výška", + "common.view.modals.txtWidth": "Šířka", + "DE.ApplicationController.convertationErrorText": "Konverze selhala.", + "DE.ApplicationController.convertationTimeoutText": "Vypršel čas konverze.", + "DE.ApplicationController.criticalErrorTitle": "Chyba", + "DE.ApplicationController.downloadErrorText": "Stahování selhalo.", + "DE.ApplicationController.downloadTextText": "Stahování dokumentu...", + "DE.ApplicationController.errorAccessDeny": "Pokoušíte se provést akci, na kterou nemáte oprávnění.
      Prosím, kontaktujte administrátora vašeho Dokumentového serveru.", + "DE.ApplicationController.errorDefaultMessage": "Kód chyby: %1", + "DE.ApplicationController.errorFilePassProtect": "Dokument je chráněn heslem a nelze otevřít.", + "DE.ApplicationController.errorUserDrop": "Tento soubor není nyní přístupný.", + "DE.ApplicationController.notcriticalErrorTitle": "Varování", + "DE.ApplicationController.textLoadingDocument": "Načítání dokumentu", + "DE.ApplicationController.textOf": "z", + "DE.ApplicationController.txtClose": "Zavřít", + "DE.ApplicationController.unknownErrorText": "Neznámá chyba.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Váš prohlížeč není podporován.", + "DE.ApplicationController.waitText": "Prosím, čekejte...", + "DE.ApplicationView.txtDownload": "Stáhnout", + "DE.ApplicationView.txtFullScreen": "Celá obrazovka", + "DE.ApplicationView.txtShare": "Sdílet" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/de.json b/apps/documenteditor/embed/locale/de.json new file mode 100644 index 000000000..9e9088315 --- /dev/null +++ b/apps/documenteditor/embed/locale/de.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "In die Zwischenablage kopieren", + "common.view.modals.txtEmbed": "Einbetten", + "common.view.modals.txtHeight": "Höhe", + "common.view.modals.txtShare": "Link teilen", + "common.view.modals.txtWidth": "Breite", + "DE.ApplicationController.convertationErrorText": "Konvertierung ist fehlgeschlagen.", + "DE.ApplicationController.convertationTimeoutText": "Timeout für die Konvertierung wurde überschritten.", + "DE.ApplicationController.criticalErrorTitle": "Fehler", + "DE.ApplicationController.downloadErrorText": "Herunterladen ist fehlgeschlagen.", + "DE.ApplicationController.downloadTextText": "Dokument wird heruntergeladen...", + "DE.ApplicationController.errorAccessDeny": "Sie haben versucht die Änderungen im Dokument, zu dem Sie keine Berechtigungen haben, vorzunehemen.
      Wenden Sie sich an Ihren Serveradministrator.", + "DE.ApplicationController.errorDefaultMessage": "Fehlercode: %1", + "DE.ApplicationController.errorFilePassProtect": "Das Dokument ist kennwortgeschützt und kann nicht geöffnet werden.", + "DE.ApplicationController.errorUserDrop": "Kein Zugriff auf diese Datei ist möglich.", + "DE.ApplicationController.notcriticalErrorTitle": "Warnung", + "DE.ApplicationController.scriptLoadError": "Die Verbindung ist zu langsam, einige der Komponenten konnten nicht geladen werden. Bitte laden Sie die Seite erneut.", + "DE.ApplicationController.textLoadingDocument": "Dokument wird geladen...", + "DE.ApplicationController.textOf": "von", + "DE.ApplicationController.txtClose": "Schließen", + "DE.ApplicationController.unknownErrorText": "Unbekannter Fehler.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Ihr Webbrowser wird nicht unterstützt.", + "DE.ApplicationController.waitText": "Bitte warten...", + "DE.ApplicationView.txtDownload": "Herunterladen", + "DE.ApplicationView.txtEmbed": "Einbetten", + "DE.ApplicationView.txtFullScreen": "Vollbild-Modus", + "DE.ApplicationView.txtShare": "Freigeben" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/en.json b/apps/documenteditor/embed/locale/en.json new file mode 100644 index 000000000..77a8b48f8 --- /dev/null +++ b/apps/documenteditor/embed/locale/en.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copy to clipboard", + "common.view.modals.txtEmbed": "Embed", + "common.view.modals.txtHeight": "Height", + "common.view.modals.txtShare": "Share Link", + "common.view.modals.txtWidth": "Width", + "DE.ApplicationController.convertationErrorText": "Conversion failed.", + "DE.ApplicationController.convertationTimeoutText": "Conversion timeout exceeded.", + "DE.ApplicationController.criticalErrorTitle": "Error", + "DE.ApplicationController.downloadErrorText": "Download failed.", + "DE.ApplicationController.downloadTextText": "Downloading document...", + "DE.ApplicationController.errorAccessDeny": "You are trying to perform an action you do not have rights for.
      Please contact your Document Server administrator.", + "DE.ApplicationController.errorDefaultMessage": "Error code: %1", + "DE.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.", + "DE.ApplicationController.errorUserDrop": "The file cannot be accessed right now.", + "DE.ApplicationController.notcriticalErrorTitle": "Warning", + "DE.ApplicationController.scriptLoadError": "The connection is too slow, some of the components could not be loaded. Please reload the page.", + "DE.ApplicationController.textLoadingDocument": "Loading document", + "DE.ApplicationController.textOf": "of", + "DE.ApplicationController.txtClose": "Close", + "DE.ApplicationController.unknownErrorText": "Unknown error.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Your browser is not supported.", + "DE.ApplicationController.waitText": "Please, wait...", + "DE.ApplicationView.txtDownload": "Download", + "DE.ApplicationView.txtEmbed": "Embed", + "DE.ApplicationView.txtFullScreen": "Full Screen", + "DE.ApplicationView.txtShare": "Share" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/es.json b/apps/documenteditor/embed/locale/es.json new file mode 100644 index 000000000..ea08f6722 --- /dev/null +++ b/apps/documenteditor/embed/locale/es.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copiar al portapapeles", + "common.view.modals.txtEmbed": "Incorporar", + "common.view.modals.txtHeight": "Altura", + "common.view.modals.txtShare": "Compartir enlace", + "common.view.modals.txtWidth": "Ancho", + "DE.ApplicationController.convertationErrorText": "Fallo de conversión.", + "DE.ApplicationController.convertationTimeoutText": "Límite de tiempo de conversión está superado.", + "DE.ApplicationController.criticalErrorTitle": "Error", + "DE.ApplicationController.downloadErrorText": "Fallo en descarga.", + "DE.ApplicationController.downloadTextText": "Cargando documento...", + "DE.ApplicationController.errorAccessDeny": "Usted no tiene permisos para realizar la acción que está intentando hacer.
      Por favor, contacte con su Administrador del Servidor de Documentos.", + "DE.ApplicationController.errorDefaultMessage": "Código de error: %1", + "DE.ApplicationController.errorFilePassProtect": "El archivo está protegido por una contraseña y no puede ser abierto.", + "DE.ApplicationController.errorUserDrop": "No se puede acceder al archivo ahora mismo.", + "DE.ApplicationController.notcriticalErrorTitle": "Aviso", + "DE.ApplicationController.scriptLoadError": "La conexión a Internet es demasiado lenta, no se podía cargar algunos componentes. Por favor, recargue la página.", + "DE.ApplicationController.textLoadingDocument": "Cargando documento", + "DE.ApplicationController.textOf": "de", + "DE.ApplicationController.txtClose": "Cerrar", + "DE.ApplicationController.unknownErrorText": "Error desconocido.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Su navegador no está soportado.", + "DE.ApplicationController.waitText": "Por favor, espere...", + "DE.ApplicationView.txtDownload": "Descargar", + "DE.ApplicationView.txtEmbed": "Incorporar", + "DE.ApplicationView.txtFullScreen": "Pantalla Completa", + "DE.ApplicationView.txtShare": "Compartir" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/fr.json b/apps/documenteditor/embed/locale/fr.json new file mode 100644 index 000000000..1145973e3 --- /dev/null +++ b/apps/documenteditor/embed/locale/fr.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copier dans le Presse-papiers", + "common.view.modals.txtEmbed": "Incorporer", + "common.view.modals.txtHeight": "Hauteur", + "common.view.modals.txtShare": "Partager un lien", + "common.view.modals.txtWidth": "Largeur", + "DE.ApplicationController.convertationErrorText": "Échec de la conversion.", + "DE.ApplicationController.convertationTimeoutText": "Délai d'attente de la conversion dépassé ", + "DE.ApplicationController.criticalErrorTitle": "Erreur", + "DE.ApplicationController.downloadErrorText": "Échec du téléchargement.", + "DE.ApplicationController.downloadTextText": "Téléchargement du document...", + "DE.ApplicationController.errorAccessDeny": "Vous tentez d'exéсuter une action pour laquelle vous ne disposez pas des droits.
      Veuillez contacter l'administrateur de Document Server.", + "DE.ApplicationController.errorDefaultMessage": "Code d'erreur: %1", + "DE.ApplicationController.errorFilePassProtect": "Le fichier est protégé par le mot de passe et ne peut pas être ouvert.", + "DE.ApplicationController.errorUserDrop": "Impossible d'accéder au fichier.", + "DE.ApplicationController.notcriticalErrorTitle": "Avertissement", + "DE.ApplicationController.scriptLoadError": "La connexion est trop lente, certains éléments ne peuvent pas être chargés. Veuillez recharger la page.", + "DE.ApplicationController.textLoadingDocument": "Chargement du document", + "DE.ApplicationController.textOf": "de", + "DE.ApplicationController.txtClose": "Fermer", + "DE.ApplicationController.unknownErrorText": "Erreur inconnue.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Votre navigateur n'est pas pris en charge.", + "DE.ApplicationController.waitText": "Veuillez patienter...", + "DE.ApplicationView.txtDownload": "Télécharger", + "DE.ApplicationView.txtEmbed": "Incorporer", + "DE.ApplicationView.txtFullScreen": "Plein écran", + "DE.ApplicationView.txtShare": "Partager" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/hu.json b/apps/documenteditor/embed/locale/hu.json new file mode 100644 index 000000000..ee0f1b332 --- /dev/null +++ b/apps/documenteditor/embed/locale/hu.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Másolás a vágólapra", + "common.view.modals.txtEmbed": "Beágyaz", + "common.view.modals.txtHeight": "Magasság", + "common.view.modals.txtShare": "Hivatkozás megosztása", + "common.view.modals.txtWidth": "Szélesség", + "DE.ApplicationController.convertationErrorText": "Az átalakítás nem sikerült.", + "DE.ApplicationController.convertationTimeoutText": "Időtúllépés az átalakítás során.", + "DE.ApplicationController.criticalErrorTitle": "Hiba", + "DE.ApplicationController.downloadErrorText": "Sikertelen letöltés.", + "DE.ApplicationController.downloadTextText": "Dokumentum letöltése...", + "DE.ApplicationController.errorAccessDeny": "Olyan műveletet próbál végrehajtani, melyre nincs jogosultsága.
      Vegye fel a kapcsolatot a Document Server adminisztrátorával.", + "DE.ApplicationController.errorDefaultMessage": "Hibakód: %1", + "DE.ApplicationController.errorFilePassProtect": "A dokumentum jelszóval védett, és nem nyitható meg.", + "DE.ApplicationController.errorUserDrop": "A dokumentum jelenleg nem elérhető", + "DE.ApplicationController.notcriticalErrorTitle": "Figyelmeztetés", + "DE.ApplicationController.scriptLoadError": "A kapcsolat túl lassú, néhány komponens nem töltődött be. Frissítse az oldalt.", + "DE.ApplicationController.textLoadingDocument": "Dokumentum betöltése", + "DE.ApplicationController.textOf": "of", + "DE.ApplicationController.txtClose": "Bezár", + "DE.ApplicationController.unknownErrorText": "Ismeretlen hiba.", + "DE.ApplicationController.unsupportedBrowserErrorText": "A böngészője nem támogatott.", + "DE.ApplicationController.waitText": "Kérjük várjon...", + "DE.ApplicationView.txtDownload": "Letöltés", + "DE.ApplicationView.txtEmbed": "Beágyaz", + "DE.ApplicationView.txtFullScreen": "Teljes képernyő", + "DE.ApplicationView.txtShare": "Megosztás" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/it.json b/apps/documenteditor/embed/locale/it.json new file mode 100644 index 000000000..327a968e2 --- /dev/null +++ b/apps/documenteditor/embed/locale/it.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copia negli appunti", + "common.view.modals.txtEmbed": "Incorpora", + "common.view.modals.txtHeight": "Altezza", + "common.view.modals.txtShare": "Condividi collegamento", + "common.view.modals.txtWidth": "Larghezza", + "DE.ApplicationController.convertationErrorText": "Conversione fallita.", + "DE.ApplicationController.convertationTimeoutText": "È stato superato il tempo limite della conversione.", + "DE.ApplicationController.criticalErrorTitle": "Errore", + "DE.ApplicationController.downloadErrorText": "Scaricamento fallito", + "DE.ApplicationController.downloadTextText": "Scaricamento del documento in corso...", + "DE.ApplicationController.errorAccessDeny": "Stai tentando di eseguire un'azione per la quale non disponi di permessi sufficienti.
      Si prega di contattare l'amministratore del Server dei Documenti.", + "DE.ApplicationController.errorDefaultMessage": "Codice errore: %1", + "DE.ApplicationController.errorFilePassProtect": "Il file è protetto da una password. Impossibile aprirlo.", + "DE.ApplicationController.errorUserDrop": "Impossibile accedere al file subito.", + "DE.ApplicationController.notcriticalErrorTitle": "Avviso", + "DE.ApplicationController.scriptLoadError": "La connessione è troppo lenta, alcuni componenti non possono essere caricati. Si prega di ricaricare la pagina.", + "DE.ApplicationController.textLoadingDocument": "Caricamento del documento", + "DE.ApplicationController.textOf": "di", + "DE.ApplicationController.txtClose": "Chiudi", + "DE.ApplicationController.unknownErrorText": "Errore sconosciuto.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Il tuo browser non è supportato.", + "DE.ApplicationController.waitText": "Per favore, attendi...", + "DE.ApplicationView.txtDownload": "Scarica", + "DE.ApplicationView.txtEmbed": "Incorpora", + "DE.ApplicationView.txtFullScreen": "Schermo intero", + "DE.ApplicationView.txtShare": "Condividi" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/ja.json b/apps/documenteditor/embed/locale/ja.json new file mode 100644 index 000000000..e3dfc777e --- /dev/null +++ b/apps/documenteditor/embed/locale/ja.json @@ -0,0 +1,21 @@ +{ + "common.view.modals.txtHeight": "高さ", + "common.view.modals.txtWidth": "幅", + "DE.ApplicationController.convertationErrorText": "変換に失敗しました", + "DE.ApplicationController.convertationTimeoutText": "変換のタイムアウトを超過しました。", + "DE.ApplicationController.criticalErrorTitle": "エラー", + "DE.ApplicationController.downloadErrorText": "ダウンロードに失敗しました", + "DE.ApplicationController.downloadTextText": "ドキュメントのダウンロード中...", + "DE.ApplicationController.errorDefaultMessage": "エラー コード: %1", + "DE.ApplicationController.errorFilePassProtect": "ドキュメントがパスワードで保護されているため開くことができません", + "DE.ApplicationController.errorUserDrop": "今、ファイルにアクセスすることはできません。", + "DE.ApplicationController.notcriticalErrorTitle": "警告", + "DE.ApplicationController.textLoadingDocument": "ドキュメントを読み込んでいます", + "DE.ApplicationController.textOf": "から", + "DE.ApplicationController.txtClose": "閉じる", + "DE.ApplicationController.unknownErrorText": "不明なエラー", + "DE.ApplicationController.unsupportedBrowserErrorText": "お使いのブラウザがサポートされていません。", + "DE.ApplicationView.txtDownload": "ダウンロード", + "DE.ApplicationView.txtFullScreen": "全画面表示", + "DE.ApplicationView.txtShare": "シェア" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/ko.json b/apps/documenteditor/embed/locale/ko.json new file mode 100644 index 000000000..bbafcc9f6 --- /dev/null +++ b/apps/documenteditor/embed/locale/ko.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "클립보드로 복사", + "common.view.modals.txtEmbed": "퍼가기", + "common.view.modals.txtHeight": "높이", + "common.view.modals.txtShare": "링크 공유", + "common.view.modals.txtWidth": "너비", + "DE.ApplicationController.convertationErrorText": "변환 실패", + "DE.ApplicationController.convertationTimeoutText": "전환 시간 초과를 초과했습니다.", + "DE.ApplicationController.criticalErrorTitle": "오류", + "DE.ApplicationController.downloadErrorText": "다운로드하지 못했습니다.", + "DE.ApplicationController.downloadTextText": "문서 다운로드 중 ...", + "DE.ApplicationController.errorAccessDeny": "권한이없는 작업을 수행하려고합니다.
      Document Server 관리자에게 문의하십시오.", + "DE.ApplicationController.errorDefaultMessage": "오류 코드 : %1", + "DE.ApplicationController.errorFilePassProtect": "이 문서는 암호로 보호되어있어 열 수 없습니다.", + "DE.ApplicationController.errorUserDrop": "파일에 지금 액세스 할 수 없습니다.", + "DE.ApplicationController.notcriticalErrorTitle": "경고", + "DE.ApplicationController.scriptLoadError": "연결 속도가 느려, 일부 요소들이 로드되지 않았습니다. 페이지를 다시 새로 고침해주세요.", + "DE.ApplicationController.textLoadingDocument": "문서로드 중", + "DE.ApplicationController.textOf": "중", + "DE.ApplicationController.txtClose": "완료", + "DE.ApplicationController.unknownErrorText": "알 수없는 오류.", + "DE.ApplicationController.unsupportedBrowserErrorText": "사용중인 브라우저가 지원되지 않습니다.", + "DE.ApplicationController.waitText": "잠시만 기달려주세요...", + "DE.ApplicationView.txtDownload": "다운로드", + "DE.ApplicationView.txtEmbed": "퍼가기", + "DE.ApplicationView.txtFullScreen": "전체 화면", + "DE.ApplicationView.txtShare": "공유" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/lv.json b/apps/documenteditor/embed/locale/lv.json new file mode 100644 index 000000000..eab88f7f9 --- /dev/null +++ b/apps/documenteditor/embed/locale/lv.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Nokopēts starpliktuvē", + "common.view.modals.txtHeight": "Augstums", + "common.view.modals.txtWidth": "Platums", + "DE.ApplicationController.convertationErrorText": "Konversija neizdevās.", + "DE.ApplicationController.convertationTimeoutText": "Konversijas taimauts pārsniegts.", + "DE.ApplicationController.criticalErrorTitle": "Kļūda", + "DE.ApplicationController.downloadErrorText": "Lejuplāde neizdevās.", + "DE.ApplicationController.downloadTextText": "Lejuplādē dokumentu...", + "DE.ApplicationController.errorAccessDeny": "Jūs mēģināt veikt darbību, kuru nedrīkstat veikt.
      Lūdzu, sazinieties ar savu dokumentu servera administratoru.", + "DE.ApplicationController.errorDefaultMessage": "Kļūdas kods: %1", + "DE.ApplicationController.errorFilePassProtect": "Fails ir aizsargāts ar paroli un to nevar atvērt.", + "DE.ApplicationController.errorUserDrop": "Failam šobrīd nevar piekļūt.", + "DE.ApplicationController.notcriticalErrorTitle": "Brīdinājums", + "DE.ApplicationController.textLoadingDocument": "Ielādē dokumentu", + "DE.ApplicationController.textOf": "no", + "DE.ApplicationController.txtClose": "Aizvērt", + "DE.ApplicationController.unknownErrorText": "Nezināma kļūda.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Jūsu pārlūkprogramma nav atbalstīta.", + "DE.ApplicationView.txtDownload": "Lejupielādēt", + "DE.ApplicationView.txtShare": "Dalīties" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/nl.json b/apps/documenteditor/embed/locale/nl.json new file mode 100644 index 000000000..93c687f69 --- /dev/null +++ b/apps/documenteditor/embed/locale/nl.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Kopieer naar klembord", + "common.view.modals.txtHeight": "Hoogte", + "common.view.modals.txtWidth": "Breedte", + "DE.ApplicationController.convertationTimeoutText": "Time-out voor conversie overschreden.", + "DE.ApplicationController.criticalErrorTitle": "Fout", + "DE.ApplicationController.downloadErrorText": "Download mislukt.", + "DE.ApplicationController.downloadTextText": "Document wordt gedownload...", + "DE.ApplicationController.errorAccessDeny": "U probeert een actie uit te voeren waarvoor u geen rechten hebt.
      Neem contact op met de beheerder van de documentserver.", + "DE.ApplicationController.errorDefaultMessage": "Foutcode: %1", + "DE.ApplicationController.errorFilePassProtect": "Het bestand is beschermd met een wachtwoord en kan niet worden geopend.", + "DE.ApplicationController.errorUserDrop": "Toegang tot het bestand is op dit moment niet mogelijk.", + "DE.ApplicationController.notcriticalErrorTitle": "Waarschuwing", + "DE.ApplicationController.scriptLoadError": "De verbinding is te langzaam, sommige componenten konden niet geladen worden. Laad de pagina opnieuw.", + "DE.ApplicationController.textLoadingDocument": "Document wordt geladen", + "DE.ApplicationController.textOf": "van", + "DE.ApplicationController.txtClose": "Sluiten", + "DE.ApplicationController.unknownErrorText": "Onbekende fout.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Uw browser wordt niet ondersteund.", + "DE.ApplicationView.txtDownload": "Downloaden", + "DE.ApplicationView.txtFullScreen": "Volledig scherm", + "DE.ApplicationView.txtShare": "Delen" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/pl.json b/apps/documenteditor/embed/locale/pl.json new file mode 100644 index 000000000..8e01748c2 --- /dev/null +++ b/apps/documenteditor/embed/locale/pl.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Skopiuj do schowka", + "common.view.modals.txtHeight": "Wysokość", + "common.view.modals.txtWidth": "Szerokość", + "DE.ApplicationController.convertationTimeoutText": "Przekroczono limit czasu konwersji.", + "DE.ApplicationController.criticalErrorTitle": "Błąd", + "DE.ApplicationController.downloadErrorText": "Pobieranie nieudane.", + "DE.ApplicationController.downloadTextText": "Pobieranie dokumentu...", + "DE.ApplicationController.errorAccessDeny": "Próbujesz wykonać działanie, na które nie masz uprawnień.
      Proszę skontaktować się z administratorem serwera dokumentów.", + "DE.ApplicationController.errorDefaultMessage": "Kod błędu: %1", + "DE.ApplicationController.errorFilePassProtect": "Dokument jest chroniony hasłem i nie może być otwarty.", + "DE.ApplicationController.errorUserDrop": "Nie można uzyskać dostępu do tego pliku.", + "DE.ApplicationController.notcriticalErrorTitle": "Ostrzeżenie", + "DE.ApplicationController.textLoadingDocument": "Ładowanie dokumentu", + "DE.ApplicationController.textOf": "z", + "DE.ApplicationController.txtClose": "Zamknij", + "DE.ApplicationController.unknownErrorText": "Nieznany błąd.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Twoja przeglądarka nie jest wspierana.", + "DE.ApplicationController.waitText": "Proszę czekać...", + "DE.ApplicationView.txtDownload": "Pobierz", + "DE.ApplicationView.txtFullScreen": "Pełny ekran", + "DE.ApplicationView.txtShare": "Udostępnij" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/pt.json b/apps/documenteditor/embed/locale/pt.json new file mode 100644 index 000000000..42280f39c --- /dev/null +++ b/apps/documenteditor/embed/locale/pt.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Copiar para a área de transferência", + "common.view.modals.txtHeight": "Altura", + "common.view.modals.txtWidth": "Largura", + "DE.ApplicationController.convertationTimeoutText": "Tempo limite de conversão excedido.", + "DE.ApplicationController.criticalErrorTitle": "Erro", + "DE.ApplicationController.downloadErrorText": "Falha ao baixar", + "DE.ApplicationController.downloadTextText": "Baixando documento...", + "DE.ApplicationController.errorAccessDeny": "Você está tentando executar uma ação para a qual não tem direitos.
      Entre em contato com o administrador do Document Server.", + "DE.ApplicationController.errorDefaultMessage": "Código do erro: %1", + "DE.ApplicationController.errorFilePassProtect": "O documento é protegido por senha e não pode ser aberto.", + "DE.ApplicationController.errorUserDrop": "O arquivo não pode ser acessado agora.", + "DE.ApplicationController.notcriticalErrorTitle": "Aviso", + "DE.ApplicationController.textLoadingDocument": "Carregando documento", + "DE.ApplicationController.textOf": "de", + "DE.ApplicationController.txtClose": "Fechar", + "DE.ApplicationController.unknownErrorText": "Erro desconhecido.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Seu navegador não é suportado.", + "DE.ApplicationController.waitText": "Aguarde...", + "DE.ApplicationView.txtDownload": "Baixar", + "DE.ApplicationView.txtShare": "Compartilhar" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/ru.json b/apps/documenteditor/embed/locale/ru.json new file mode 100644 index 000000000..ea575e0d1 --- /dev/null +++ b/apps/documenteditor/embed/locale/ru.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Скопировать в буфер", + "common.view.modals.txtEmbed": "Встроить", + "common.view.modals.txtHeight": "Высота", + "common.view.modals.txtShare": "Поделиться ссылкой", + "common.view.modals.txtWidth": "Ширина", + "DE.ApplicationController.convertationErrorText": "Конвертация не удалась.", + "DE.ApplicationController.convertationTimeoutText": "Превышено время ожидания конвертации.", + "DE.ApplicationController.criticalErrorTitle": "Ошибка", + "DE.ApplicationController.downloadErrorText": "Загрузка не удалась.", + "DE.ApplicationController.downloadTextText": "Загрузка документа...", + "DE.ApplicationController.errorAccessDeny": "Вы пытаетесь выполнить действие, на которое у вас нет прав.
      Пожалуйста, обратитесь к администратору Сервера документов.", + "DE.ApplicationController.errorDefaultMessage": "Код ошибки: %1", + "DE.ApplicationController.errorFilePassProtect": "Файл защищен паролем и не может быть открыт.", + "DE.ApplicationController.errorUserDrop": "В настоящий момент файл недоступен.", + "DE.ApplicationController.notcriticalErrorTitle": "Внимание", + "DE.ApplicationController.scriptLoadError": "Слишком медленное подключение, некоторые компоненты не удалось загрузить. Пожалуйста, обновите страницу.", + "DE.ApplicationController.textLoadingDocument": "Загрузка документа", + "DE.ApplicationController.textOf": "из", + "DE.ApplicationController.txtClose": "Закрыть", + "DE.ApplicationController.unknownErrorText": "Неизвестная ошибка.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Ваш браузер не поддерживается.", + "DE.ApplicationController.waitText": "Пожалуйста, подождите...", + "DE.ApplicationView.txtDownload": "Скачать файл", + "DE.ApplicationView.txtEmbed": "Встроить", + "DE.ApplicationView.txtFullScreen": "Во весь экран", + "DE.ApplicationView.txtShare": "Поделиться" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/sk.json b/apps/documenteditor/embed/locale/sk.json new file mode 100644 index 000000000..c28aa45a6 --- /dev/null +++ b/apps/documenteditor/embed/locale/sk.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Skopírovať do schránky", + "common.view.modals.txtHeight": "Výška", + "common.view.modals.txtWidth": "Šírka", + "DE.ApplicationController.convertationTimeoutText": "Prekročený čas konverzie.", + "DE.ApplicationController.criticalErrorTitle": "Chyba", + "DE.ApplicationController.downloadErrorText": "Sťahovanie zlyhalo.", + "DE.ApplicationController.downloadTextText": "Sťahovanie dokumentu...", + "DE.ApplicationController.errorAccessDeny": "Pokúšate sa vykonať akciu, na ktorú nemáte práva.
      Prosím, kontaktujte svojho správcu dokumentového servera.", + "DE.ApplicationController.errorDefaultMessage": "Kód chyby: %1", + "DE.ApplicationController.errorFilePassProtect": "Dokument je chránený heslom a nie je možné ho otvoriť.", + "DE.ApplicationController.errorUserDrop": "K súboru nie je možné práve teraz získať prístup.", + "DE.ApplicationController.notcriticalErrorTitle": "Upozornenie", + "DE.ApplicationController.textLoadingDocument": "Načítavanie dokumentu", + "DE.ApplicationController.textOf": "z", + "DE.ApplicationController.txtClose": "Zatvoriť", + "DE.ApplicationController.unknownErrorText": "Neznáma chyba.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Váš prehliadač nie je podporovaný.", + "DE.ApplicationController.waitText": "Prosím čakajte...", + "DE.ApplicationView.txtDownload": "Stiahnuť", + "DE.ApplicationView.txtFullScreen": "Celá obrazovka", + "DE.ApplicationView.txtShare": "Zdieľať" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/sl.json b/apps/documenteditor/embed/locale/sl.json new file mode 100644 index 000000000..16f100dfc --- /dev/null +++ b/apps/documenteditor/embed/locale/sl.json @@ -0,0 +1,21 @@ +{ + "common.view.modals.txtCopy": "Kopiraj v odložišče", + "common.view.modals.txtHeight": "Višina", + "common.view.modals.txtWidth": "Širina", + "DE.ApplicationController.convertationErrorText": "Pretvorba ni uspela.", + "DE.ApplicationController.convertationTimeoutText": "Pretvorbena prekinitev presežena.", + "DE.ApplicationController.criticalErrorTitle": "Napaka", + "DE.ApplicationController.downloadErrorText": "Prenos ni uspel.", + "DE.ApplicationController.downloadTextText": "Prenašanje dokumenta...", + "DE.ApplicationController.errorDefaultMessage": "Koda napake: %1", + "DE.ApplicationController.errorFilePassProtect": "Dokument je zaščiten z geslom in ga ni mogoče odpreti.", + "DE.ApplicationController.errorUserDrop": "Do datoteke v tem trenutku ni možno dostopati.", + "DE.ApplicationController.notcriticalErrorTitle": "Opozorilo", + "DE.ApplicationController.textLoadingDocument": "Nalaganje dokumenta", + "DE.ApplicationController.textOf": "od", + "DE.ApplicationController.txtClose": "Zapri", + "DE.ApplicationController.unknownErrorText": "Neznana napaka.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Vaš brskalnik ni podprt.", + "DE.ApplicationView.txtDownload": "Prenesi", + "DE.ApplicationView.txtShare": "Deli" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/tr.json b/apps/documenteditor/embed/locale/tr.json new file mode 100644 index 000000000..709222c29 --- /dev/null +++ b/apps/documenteditor/embed/locale/tr.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Panoya kopyala", + "common.view.modals.txtEmbed": "Gömülü", + "common.view.modals.txtHeight": "Yükseklik", + "common.view.modals.txtShare": "Bağlantıyı Paylaş", + "common.view.modals.txtWidth": "Genişlik", + "DE.ApplicationController.convertationErrorText": "Değişim başarısız oldu.", + "DE.ApplicationController.convertationTimeoutText": "Değişim süresi aşıldı.", + "DE.ApplicationController.criticalErrorTitle": "Hata", + "DE.ApplicationController.downloadErrorText": "Yükleme başarısız oldu.", + "DE.ApplicationController.downloadTextText": "Döküman yükleniyor...", + "DE.ApplicationController.errorAccessDeny": "Hakkınız olmayan bir eylem gerçekleştirmeye çalışıyorsunuz.
      Lütfen Belge Sunucu yöneticinize başvurun.", + "DE.ApplicationController.errorDefaultMessage": "Hata kodu: %1", + "DE.ApplicationController.errorFilePassProtect": "Döküman şifre korumalı ve açılamadı", + "DE.ApplicationController.errorUserDrop": "Belgeye şu an erişilemiyor.", + "DE.ApplicationController.notcriticalErrorTitle": "Uyarı", + "DE.ApplicationController.scriptLoadError": "Bağlantı çok yavaş, bileşenlerin bazıları yüklenemedi. Lütfen sayfayı yenileyin.", + "DE.ApplicationController.textLoadingDocument": "Döküman yükleniyor", + "DE.ApplicationController.textOf": "'in", + "DE.ApplicationController.txtClose": "Kapat", + "DE.ApplicationController.unknownErrorText": "Bilinmeyen hata.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Tarayıcınız desteklenmiyor.", + "DE.ApplicationController.waitText": "Lütfen bekleyin...", + "DE.ApplicationView.txtDownload": "İndir", + "DE.ApplicationView.txtEmbed": "Gömülü", + "DE.ApplicationView.txtFullScreen": "Tam Ekran", + "DE.ApplicationView.txtShare": "Paylaş" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/uk.json b/apps/documenteditor/embed/locale/uk.json new file mode 100644 index 000000000..51db5f43e --- /dev/null +++ b/apps/documenteditor/embed/locale/uk.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Копіювати в буфер обміну", + "common.view.modals.txtHeight": "Висота", + "common.view.modals.txtWidth": "Ширина", + "DE.ApplicationController.convertationTimeoutText": "Термін переходу перевищено.", + "DE.ApplicationController.criticalErrorTitle": "Помилка", + "DE.ApplicationController.downloadErrorText": "Завантаження не вдалося", + "DE.ApplicationController.downloadTextText": "Завантаження документу...", + "DE.ApplicationController.errorAccessDeny": "Ви намагаєтеся виконати дію, на яку у вас немає прав.
      Будь ласка, зв'яжіться з адміністратором вашого Сервера документів.", + "DE.ApplicationController.errorDefaultMessage": "Код помилки: %1", + "DE.ApplicationController.errorFilePassProtect": "Документ захищений паролем і його неможливо відкрити.", + "DE.ApplicationController.errorUserDrop": "На даний момент файл не доступний.", + "DE.ApplicationController.notcriticalErrorTitle": "Застереження", + "DE.ApplicationController.textLoadingDocument": "Завантаження документа", + "DE.ApplicationController.textOf": "з", + "DE.ApplicationController.txtClose": "Закрити", + "DE.ApplicationController.unknownErrorText": "Невідома помилка.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Ваш браузер не підтримується", + "DE.ApplicationView.txtDownload": "Завантажити", + "DE.ApplicationView.txtFullScreen": "Повноекранний режим", + "DE.ApplicationView.txtShare": "Доступ" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/vi.json b/apps/documenteditor/embed/locale/vi.json new file mode 100644 index 000000000..ad3225af9 --- /dev/null +++ b/apps/documenteditor/embed/locale/vi.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Sao chép vào khay nhớ tạm", + "common.view.modals.txtHeight": "Chiều cao", + "common.view.modals.txtWidth": "Chiều rộng", + "DE.ApplicationController.convertationTimeoutText": "Đã quá thời gian chờ chuyển đổi.", + "DE.ApplicationController.criticalErrorTitle": "Lỗi", + "DE.ApplicationController.downloadErrorText": "Tải về không thành công.", + "DE.ApplicationController.downloadTextText": "Đang tải tài liệu...", + "DE.ApplicationController.errorAccessDeny": "Bạn đang cố gắng thực hiện hành động mà bạn không có quyền.
      Vui lòng liên hệ với quản trị viên Server Tài liệu của bạn.", + "DE.ApplicationController.errorDefaultMessage": "Mã lỗi: %1", + "DE.ApplicationController.errorFilePassProtect": "Tài liệu được bảo vệ bằng mật khẩu và không thể mở được.", + "DE.ApplicationController.errorUserDrop": "Không thể truy cập file ngay lúc này.", + "DE.ApplicationController.notcriticalErrorTitle": "Cảnh báo", + "DE.ApplicationController.textLoadingDocument": "Đang tải tài liệu", + "DE.ApplicationController.textOf": "trên", + "DE.ApplicationController.txtClose": "Đóng", + "DE.ApplicationController.unknownErrorText": "Lỗi không xác định.", + "DE.ApplicationController.unsupportedBrowserErrorText": "Trình duyệt của bạn không được hỗ trợ.", + "DE.ApplicationView.txtDownload": "Tải về", + "DE.ApplicationView.txtFullScreen": "Toàn màn hình", + "DE.ApplicationView.txtShare": "Chia sẻ" +} \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/zh.json b/apps/documenteditor/embed/locale/zh.json new file mode 100644 index 000000000..c2ac84814 --- /dev/null +++ b/apps/documenteditor/embed/locale/zh.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "复制到剪贴板", + "common.view.modals.txtEmbed": "嵌入", + "common.view.modals.txtHeight": "高度", + "common.view.modals.txtShare": "分享链接", + "common.view.modals.txtWidth": "宽度", + "DE.ApplicationController.convertationErrorText": "转换失败", + "DE.ApplicationController.convertationTimeoutText": "转换超时", + "DE.ApplicationController.criticalErrorTitle": "错误", + "DE.ApplicationController.downloadErrorText": "下载失败", + "DE.ApplicationController.downloadTextText": "正在下载文件...", + "DE.ApplicationController.errorAccessDeny": "您正在尝试执行您没有权限的操作。
      请联系您的文档服务器管理员.", + "DE.ApplicationController.errorDefaultMessage": "错误代码:%1", + "DE.ApplicationController.errorFilePassProtect": "该文档受密码保护,无法被打开。", + "DE.ApplicationController.errorUserDrop": "该文件现在无法访问。", + "DE.ApplicationController.notcriticalErrorTitle": "警告", + "DE.ApplicationController.scriptLoadError": "连接速度过慢,部分组件无法被加载。请重新加载页面。", + "DE.ApplicationController.textLoadingDocument": "文件加载中…", + "DE.ApplicationController.textOf": "的", + "DE.ApplicationController.txtClose": "关闭", + "DE.ApplicationController.unknownErrorText": "示知错误", + "DE.ApplicationController.unsupportedBrowserErrorText": "你的浏览器不支持", + "DE.ApplicationController.waitText": "请稍候...", + "DE.ApplicationView.txtDownload": "下载", + "DE.ApplicationView.txtEmbed": "嵌入", + "DE.ApplicationView.txtFullScreen": "全屏", + "DE.ApplicationView.txtShare": "共享" +} \ No newline at end of file diff --git a/apps/documenteditor/main/app/controller/DocumentHolder.js b/apps/documenteditor/main/app/controller/DocumentHolder.js index 68271c84a..18f1a82d5 100644 --- a/apps/documenteditor/main/app/controller/DocumentHolder.js +++ b/apps/documenteditor/main/app/controller/DocumentHolder.js @@ -46,6 +46,19 @@ var c_paragraphLinerule = { LINERULE_EXACT: 2 }; +var c_paragraphSpecial = { + NONE_SPECIAL: 0, + FIRST_LINE: 1, + HANGING: 2 +}; + +var c_paragraphTextAlignment = { + RIGHT: 0, + LEFT: 1, + CENTERED: 2, + JUSTIFIED: 3 +}; + var c_pageNumPosition = { PAGE_NUM_POSITION_TOP: 0x01, PAGE_NUM_POSITION_BOTTOM: 0x02, diff --git a/apps/documenteditor/main/app/controller/LeftMenu.js b/apps/documenteditor/main/app/controller/LeftMenu.js index c7b99a405..fd86037ef 100644 --- a/apps/documenteditor/main/app/controller/LeftMenu.js +++ b/apps/documenteditor/main/app/controller/LeftMenu.js @@ -237,7 +237,7 @@ define([ if ( isopts ) close_menu = false; else this.clickSaveCopyAsFormat(undefined); break; - case 'print': this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); break; + case 'print': this.api.asc_Print(new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera)); break; case 'exit': Common.NotificationCenter.trigger('goback'); break; case 'edit': this.getApplication().getController('Statusbar').setStatusCaption(this.requestEditRightsText); @@ -302,13 +302,39 @@ define([ buttons: ['ok', 'cancel'], callback: _.bind(function(btn){ if (btn == 'ok') { - this.api.asc_DownloadAs(format); + if (format == Asc.c_oAscFileType.TXT) + Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.TXT, this.api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format)); + else + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format)); menu.hide(); } }, this) }); + } else if (format == Asc.c_oAscFileType.DOCX) { + if (!Common.Utils.InternalSettings.get("de-settings-compatible") && !Common.localStorage.getBool("de-hide-save-compatible") && this.api.asc_isCompatibilityMode()) { + Common.UI.warning({ + closable: false, + width: 600, + title: this.notcriticalErrorTitle, + msg: this.txtCompatible, + buttons: ['ok', 'cancel'], + dontshow: true, + callback: _.bind(function(btn, dontshow){ + if (dontshow) Common.localStorage.setItem("de-hide-save-compatible", 1); + if (btn == 'ok') { + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format)); + menu.hide(); + } + }, this) + }); + } else { + var opts = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.DOCX); + opts.asc_setCompatible(!!Common.Utils.InternalSettings.get("de-settings-compatible")); + this.api.asc_DownloadAs(opts); + menu.hide(); + } } else { - this.api.asc_DownloadAs(format); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format)); menu.hide(); } } else @@ -326,14 +352,42 @@ define([ callback: _.bind(function(btn){ if (btn == 'ok') { this.isFromFileDownloadAs = ext; - this.api.asc_DownloadAs(format, true); + if (format == Asc.c_oAscFileType.TXT) + Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.TXT, this.api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format, true)); + else + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format, true)); menu.hide(); } }, this) }); + } else if (format == Asc.c_oAscFileType.DOCX) { + if (!Common.Utils.InternalSettings.get("de-settings-compatible") && !Common.localStorage.getBool("de-hide-save-compatible") && this.api.asc_isCompatibilityMode()) { + Common.UI.warning({ + closable: false, + width: 600, + title: this.notcriticalErrorTitle, + msg: this.txtCompatible, + buttons: ['ok', 'cancel'], + dontshow: true, + callback: _.bind(function(btn, dontshow){ + if (dontshow) Common.localStorage.setItem("de-hide-save-compatible", 1); + if (btn == 'ok') { + this.isFromFileDownloadAs = ext; + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format, true)); + menu.hide(); + } + }, this) + }); + } else { + this.isFromFileDownloadAs = ext; + var opts = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.DOCX, true); + opts.asc_setCompatible(!!Common.Utils.InternalSettings.get("de-settings-compatible")); + this.api.asc_DownloadAs(opts); + menu.hide(); + } } else { this.isFromFileDownloadAs = ext; - this.api.asc_DownloadAs(format, true); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format, true)); menu.hide(); } } else { @@ -354,27 +408,31 @@ define([ defFileName = defFileName.substring(0, idx) + this.isFromFileDownloadAs; } - me._saveCopyDlg = new Common.Views.SaveAsDlg({ - saveFolderUrl: me.mode.saveAsUrl, - saveFileUrl: url, - defFileName: defFileName - }); - me._saveCopyDlg.on('saveaserror', function(obj, err){ - var config = { - closable: false, - title: me.notcriticalErrorTitle, - msg: err, - iconCls: 'warn', - buttons: ['ok'], - callback: function(btn){ - Common.NotificationCenter.trigger('edit:complete', me); - } - }; - Common.UI.alert(config); - }).on('close', function(obj){ - me._saveCopyDlg = undefined; - }); - me._saveCopyDlg.show(); + if (me.mode.canRequestSaveAs) { + Common.Gateway.requestSaveAs(url, defFileName); + } else { + me._saveCopyDlg = new Common.Views.SaveAsDlg({ + saveFolderUrl: me.mode.saveAsUrl, + saveFileUrl: url, + defFileName: defFileName + }); + me._saveCopyDlg.on('saveaserror', function(obj, err){ + var config = { + closable: false, + title: me.notcriticalErrorTitle, + msg: err, + iconCls: 'warn', + buttons: ['ok'], + callback: function(btn){ + Common.NotificationCenter.trigger('edit:complete', me); + } + }; + Common.UI.alert(config); + }).on('close', function(obj){ + me._saveCopyDlg = undefined; + }); + me._saveCopyDlg.show(); + } } this.isFromFileDownloadAs = false; }, @@ -436,8 +494,10 @@ define([ }, onCreateNew: function(menu, type) { - var newDocumentPage = window.open(type == 'blank' ? this.mode.createUrl : type, "_blank"); - if (newDocumentPage) newDocumentPage.focus(); + if ( !Common.Controllers.Desktop.process('create:new') ) { + var newDocumentPage = window.open(type == 'blank' ? this.mode.createUrl : type, "_blank"); + if (newDocumentPage) newDocumentPage.focus(); + } if (menu) { menu.hide(); @@ -820,6 +880,8 @@ define([ leavePageText: 'All unsaved changes in this document will be lost.
      Click \'Cancel\' then \'Save\' to save them. Click \'OK\' to discard all the unsaved changes.', warnDownloadAs : 'If you continue saving in this format all features except the text will be lost.
      Are you sure you want to continue?', warnDownloadAsRTF : 'If you continue saving in this format some of the formatting might be lost.
      Are you sure you want to continue?', - txtUntitled: 'Untitled' + txtUntitled: 'Untitled', + txtCompatible: 'The document will be saved to the new format. It will allow to use all the editor features, but might affect the document layout.
      Use the \'Compatibility\' option of the advanced settings if you want to make the files compatible with older MS Word versions.' + }, DE.Controllers.LeftMenu || {})); }); \ No newline at end of file diff --git a/apps/documenteditor/main/app/controller/Links.js b/apps/documenteditor/main/app/controller/Links.js index 20196414e..1e034c149 100644 --- a/apps/documenteditor/main/app/controller/Links.js +++ b/apps/documenteditor/main/app/controller/Links.js @@ -78,6 +78,9 @@ define([ this._state = { prcontrolsdisable:undefined }; + Common.Gateway.on('setactionlink', function (url) { + console.log('url with actions: ' + url); + }.bind(this)); }, setApi: function (api) { @@ -146,22 +149,14 @@ define([ control_plain = (control_props) ? (control_props.get_ContentControlType()==Asc.c_oAscSdtLevelType.Inline) : false; var need_disable = paragraph_locked || in_equation || in_image || in_header || control_plain; - _.each (this.view.btnsNotes, function(item){ - item.setDisabled(need_disable); - }, this); + this.view.btnsNotes.setDisabled(need_disable); need_disable = paragraph_locked || header_locked || in_header || control_plain; this.view.btnBookmarks.setDisabled(need_disable); }, onApiCanAddHyperlink: function(value) { - var need_disable = !value || this._state.prcontrolsdisable; - - if ( this.toolbar.editMode ) { - _.each (this.view.btnsHyperlink, function(item){ - item.setDisabled(need_disable); - }, this); - } + this.toolbar.editMode && this.view.btnsHyperlink.setDisabled(!value || this._state.prcontrolsdisable); }, onHyperlinkClick: function(btn) { @@ -299,7 +294,9 @@ define([ if (settings) { me.api.asc_SetFootnoteProps(settings.props, settings.applyToAll); if (result == 'insert') - me.api.asc_AddFootnote(settings.custom); + setTimeout(function() { + me.api.asc_AddFootnote(settings.custom); + }, 1); } Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 23666d8f8..25986829a 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -195,14 +195,13 @@ define([ Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); Common.NotificationCenter.on('goback', _.bind(this.goBack, this)); + Common.NotificationCenter.on('download:advanced', _.bind(this.onAdvancedOptions, this)); this.isShowOpenDialog = false; // Initialize api gateway this.editorConfig = {}; this.appOptions = {}; - this.plugins = undefined; - this.UICustomizePlugins = []; Common.Gateway.on('init', _.bind(this.loadConfig, this)); Common.Gateway.on('showmessage', _.bind(this.onExternalMessage, this)); Common.Gateway.on('opendocument', _.bind(this.loadDocument, this)); @@ -230,11 +229,13 @@ define([ }); $(document.body).on('blur', 'input, textarea', function(e) { - if (!me.isModalShowed) { + if (!me.isModalShowed && !me.getApplication().getController('LeftMenu').getView('LeftMenu').getMenu('file').isVisible()) { if (/form-control/.test(e.target.className)) me.inFormControl = false; if (!e.relatedTarget || - !/area_id/.test(e.target.id) && ($(e.target).parent().find(e.relatedTarget).length<1 || e.target.localName == 'textarea') /* Check if focus in combobox goes from input to it's menu button or menu items, or from comment editing area to Ok/Cancel button */ + !/area_id/.test(e.target.id) + && !(e.target.localName == 'input' && $(e.target).parent().find(e.relatedTarget).length>0) /* Check if focus in combobox goes from input to it's menu button or menu items, or from comment editing area to Ok/Cancel button */ + && !(e.target.localName == 'textarea' && $(e.target).closest('.asc-window').find(e.relatedTarget).length>0) /* Check if focus in comment goes from textarea to it's email menu */ && (e.relatedTarget.localName != 'input' || !/form-control/.test(e.relatedTarget.className)) /* Check if focus goes to text input with class "form-control" */ && (e.relatedTarget.localName != 'textarea' || /area_id/.test(e.relatedTarget.id))) /* Check if focus goes to textarea, but not to "area_id" */ { if (Common.Utils.isIE && e.originalEvent && e.originalEvent.target && /area_id/.test(e.originalEvent.target.id) && (e.originalEvent.target === e.originalEvent.srcElement)) @@ -316,7 +317,7 @@ define([ }); } - me.defaultTitleText = me.defaultTitleText || '{{APP_TITLE_TEXT}}'; + me.defaultTitleText = '{{APP_TITLE_TEXT}}'; me.warnNoLicense = me.warnNoLicense.replace('%1', '{{COMPANY_NAME}}'); me.warnNoLicenseUsers = me.warnNoLicenseUsers.replace('%1', '{{COMPANY_NAME}}'); me.textNoLicenseTitle = me.textNoLicenseTitle.replace('%1', '{{COMPANY_NAME}}'); @@ -328,7 +329,7 @@ define([ this.editorConfig.user = this.appOptions.user = Common.Utils.fillUserInfo(this.editorConfig.user, this.editorConfig.lang, this.textAnonymous); this.appOptions.isDesktopApp = this.editorConfig.targetApp == 'desktop'; - this.appOptions.canCreateNew = !_.isEmpty(this.editorConfig.createUrl) && !this.appOptions.isDesktopApp; + this.appOptions.canCreateNew = !_.isEmpty(this.editorConfig.createUrl); this.appOptions.canOpenRecent = this.editorConfig.recent !== undefined && !this.appOptions.isDesktopApp; this.appOptions.templates = this.editorConfig.templates; this.appOptions.recent = this.editorConfig.recent; @@ -345,8 +346,12 @@ define([ && (typeof (this.editorConfig.customization.goback) == 'object') && !_.isEmpty(this.editorConfig.customization.goback.url); this.appOptions.canBack = this.appOptions.canBackToFolder === true; this.appOptions.canPlugins = false; - this.plugins = this.editorConfig.plugins; this.appOptions.canMakeActionLink = this.editorConfig.canMakeActionLink; + this.appOptions.canRequestUsers = this.editorConfig.canRequestUsers; + this.appOptions.canRequestSendNotify = this.editorConfig.canRequestSendNotify; + this.appOptions.canRequestSaveAs = this.editorConfig.canRequestSaveAs; + this.appOptions.canRequestInsertImage = this.editorConfig.canRequestInsertImage; + this.appOptions.canRequestMailMergeRecipients = this.editorConfig.canRequestMailMergeRecipients; appHeader = this.getApplication().getController('Viewport').getView('Common.Views.Header'); appHeader.setCanBack(this.appOptions.canBackToFolder === true, (this.appOptions.canBackToFolder) ? this.editorConfig.customization.goback.text : '') @@ -389,7 +394,6 @@ define([ docInfo.put_Token(data.doc.token); docInfo.put_Permissions(_permissions); // docInfo.put_Review(this.permissions.review); -// docInfo.put_OfflineApp(this.editorConfig.nativeApp === true); // used in sdk for testing var type = /^(?:(pdf|djvu|xps))$/.exec(data.doc.fileType); if (type && typeof type[1] === 'string') { @@ -463,7 +467,7 @@ define([ if ( !_format || _supported.indexOf(_format) < 0 ) _format = Asc.c_oAscFileType.DOCX; - this.api.asc_DownloadAs(_format, true); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(_format, true)); } }, @@ -890,6 +894,9 @@ define([ Common.Utils.InternalSettings.set("de-settings-spellcheck", value); me.api.asc_setSpellCheck(value); + value = Common.localStorage.getBool("de-settings-compatible", false); + Common.Utils.InternalSettings.set("de-settings-compatible", value); + Common.Utils.InternalSettings.set("de-settings-showsnaplines", me.api.get_ShowSnapLines()); function checkWarns() { @@ -969,9 +976,6 @@ define([ application.getController('Common.Controllers.ExternalMergeEditor').setApi(this.api).loadConfig({config:this.editorConfig, customization: this.editorConfig.customization}); pluginsController.setApi(me.api); - me.requestPlugins('../../../../plugins.json'); - me.api.asc_registerCallback('asc_onPluginsInit', _.bind(me.updatePluginsList, me)); - me.api.asc_registerCallback('asc_onPluginsReset', _.bind(me.resetPluginsList, me)); documentHolderController.setApi(me.api); documentHolderController.createDelayedElements(); @@ -1197,10 +1201,8 @@ define([ appHeader.setBranding(this.editorConfig.customization); this.appOptions.canRename && appHeader.setCanRename(true); - this.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof this.editorConfig.customization == 'object' || this.editorConfig.plugins); - if (this.appOptions.canBrandingExt) - this.updatePlugins(this.plugins, true); + this.getApplication().getController('Common.Controllers.Plugins').setMode(this.appOptions); if (this.appOptions.canComments) Common.NotificationCenter.on('comments:cleardummy', _.bind(this.onClearDummyComment, this)); @@ -1682,6 +1684,7 @@ define([ }, hidePreloader: function() { + var promise; if (!this._state.customizationDone) { this._state.customizationDone = true; if (this.appOptions.customization) { @@ -1693,14 +1696,17 @@ define([ Common.Utils.applyCustomization(this.appOptions.customization, mapCustomizationElements); if (this.appOptions.canBrandingExt) { Common.Utils.applyCustomization(this.appOptions.customization, mapCustomizationExtElements); - Common.Utils.applyCustomizationPlugins(this.UICustomizePlugins); + promise = this.getApplication().getController('Common.Controllers.Plugins').applyUICustomization(); } } - Common.NotificationCenter.trigger('layout:changed', 'main'); - $('#loading-mask').hide().remove(); - Common.Controllers.Desktop.process('preloader:hide'); + (promise || (new Promise(function(resolve, reject) { + resolve(); + }))).then(function() { + $('#loading-mask').hide().remove(); + Common.Controllers.Desktop.process('preloader:hide'); + }); }, onDownloadUrl: function(url) { @@ -1809,7 +1815,6 @@ define([ _.each(shapes[index], function(shape, idx){ store.add({ - imageUrl : shape.Image, data : {shapeType: shape.Type}, tip : me['txtShape_' + shape.Type] || (me.textShape + ' ' + (idx+1)), allowSelected : true, @@ -1877,7 +1882,10 @@ define([ Common.Utils.ThemeColor.setColors(colors, standart_colors); if (window.styles_loaded) { this.updateThemeColors(); - this.fillTextArt(this.api.asc_getTextArtPreviews()); + var me = this; + setTimeout(function(){ + me.fillTextArt(me.api.asc_getTextArtPreviews()); + }, 1); } }, @@ -1947,25 +1955,28 @@ define([ this.getApplication().getController('Toolbar').getView().updateMetricUnit(); }, - onAdvancedOptions: function(advOptions, mode) { + onAdvancedOptions: function(type, advOptions, mode, formatOptions) { if (this._state.openDlg) return; - var type = advOptions.asc_getOptionId(), - me = this; + var me = this; if (type == Asc.c_oAscAdvancedOptionsID.TXT) { me._state.openDlg = new Common.Views.OpenDialog({ title: Common.Views.OpenDialog.prototype.txtTitle.replace('%1', 'TXT'), closable: (mode==2), // if save settings type: Common.Utils.importTextType.TXT, - preview: advOptions.asc_getOptions().asc_getData(), - codepages: advOptions.asc_getOptions().asc_getCodePages(), - settings: advOptions.asc_getOptions().asc_getRecommendedSettings(), + preview: advOptions.asc_getData(), + codepages: advOptions.asc_getCodePages(), + settings: advOptions.asc_getRecommendedSettings(), api: me.api, handler: function (result, encoding) { me.isShowOpenDialog = false; if (result == 'ok') { if (me && me.api) { - me.api.asc_setAdvancedOptions(type, new Asc.asc_CTXTAdvancedOptions(encoding)); + if (mode==2) { + formatOptions && formatOptions.asc_setAdvancedOptions(new Asc.asc_CTextOptions(encoding)); + me.api.asc_DownloadAs(formatOptions); + } else + me.api.asc_setAdvancedOptions(type, new Asc.asc_CTextOptions(encoding)); me.loadMask && me.loadMask.show(); } } @@ -2004,7 +2015,7 @@ define([ }, onTryUndoInFastCollaborative: function() { - if (!window.localStorage.getBool("de-hide-try-undoredo")) + if (!Common.localStorage.getBool("de-hide-try-undoredo")) Common.UI.info({ width: 500, msg: this.textTryUndoRedo, @@ -2014,7 +2025,7 @@ define([ customButtonText: this.textStrict, dontshow: true, callback: _.bind(function(btn, dontshow){ - if (dontshow) window.localStorage.setItem("de-hide-try-undoredo", 1); + if (dontshow) Common.localStorage.setItem("de-hide-try-undoredo", 1); if (btn == 'custom') { Common.localStorage.setItem("de-settings-coauthmode", 0); Common.Utils.InternalSettings.set("de-settings-coauthmode", false); @@ -2072,7 +2083,7 @@ define([ if (!this.appOptions.canPrint || this.isModalShowed) return; if (this.api) - this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event + this.api.asc_Print(new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera)); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event Common.component.Analytics.trackEvent('Print'); }, @@ -2092,153 +2103,19 @@ define([ this.iframePrint.style.bottom = "0"; document.body.appendChild(this.iframePrint); this.iframePrint.onload = function() { + try { me.iframePrint.contentWindow.focus(); me.iframePrint.contentWindow.print(); me.iframePrint.contentWindow.blur(); window.focus(); + } catch (e) { + me.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF)); + } }; } if (url) this.iframePrint.src = url; }, - requestPlugins: function(pluginsPath) { // request plugins - if (!pluginsPath) return; - - var config_plugins = (this.plugins && this.plugins.pluginsData && this.plugins.pluginsData.length>0) ? this.updatePlugins(this.plugins, false) : null, // return plugins object - request_plugins = this.updatePlugins( Common.Utils.getConfigJson(pluginsPath), false ); - - this.updatePluginsList({ - autostart: (config_plugins&&config_plugins.autostart ? config_plugins.autostart : []).concat(request_plugins&&request_plugins.autostart ? request_plugins.autostart : []), - pluginsData: (config_plugins ? config_plugins.pluginsData : []).concat(request_plugins ? request_plugins.pluginsData : []) - }, false); - }, - - updatePlugins: function(plugins, uiCustomize) { // plugins from config - if (!plugins) return; - - var pluginsData = (uiCustomize) ? plugins.UIpluginsData : plugins.pluginsData; - if (!pluginsData || pluginsData.length<1) return; - - var arr = []; - pluginsData.forEach(function(item){ - var value = Common.Utils.getConfigJson(item); - if (value) { - value.baseUrl = item.substring(0, item.lastIndexOf("config.json")); - arr.push(value); - } - }); - - if (arr.length>0) { - var autostart = plugins.autostart || plugins.autoStartGuid; - if (typeof (autostart) == 'string') - autostart = [autostart]; - plugins.autoStartGuid && console.warn("Obsolete: The autoStartGuid parameter is deprecated. Please check the documentation for new plugin connection configuration."); - - if (uiCustomize) - this.updatePluginsList({ - autostart: autostart, - pluginsData: arr - }, !!uiCustomize); - else return { - autostart: autostart, - pluginsData: arr - }; - } - }, - - updatePluginsList: function(plugins, uiCustomize) { - var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), - isEdit = this.appOptions.isEdit; - if (plugins) { - var arr = [], arrUI = [], - lang = this.appOptions.lang.split(/[\-\_]/)[0]; - plugins.pluginsData.forEach(function(item){ - if (_.find(arr, function(arritem) { - return (arritem.get('baseUrl') == item.baseUrl || arritem.get('guid') == item.guid); - }) || pluginStore.findWhere({baseUrl: item.baseUrl}) || pluginStore.findWhere({guid: item.guid})) - return; - - var variationsArr = [], - pluginVisible = false; - item.variations.forEach(function(itemVar){ - var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, 'word') && !itemVar.isSystem; - if ( visible ) pluginVisible = true; - - if (item.isUICustomizer ) { - visible && arrUI.push(item.baseUrl + itemVar.url); - } else { - var model = new Common.Models.PluginVariation(itemVar); - var description = itemVar.description; - if (typeof itemVar.descriptionLocale == 'object') - description = itemVar.descriptionLocale[lang] || itemVar.descriptionLocale['en'] || description || ''; - - _.each(itemVar.buttons, function(b, index){ - if (typeof b.textLocale == 'object') - b.text = b.textLocale[lang] || b.textLocale['en'] || b.text || ''; - b.visible = (isEdit || b.isViewer !== false); - }); - - model.set({ - description: description, - index: variationsArr.length, - url: itemVar.url, - icons: itemVar.icons, - buttons: itemVar.buttons, - visible: visible - }); - - variationsArr.push(model); - } - }); - - if (variationsArr.length>0 && !item.isUICustomizer) { - var name = item.name; - if (typeof item.nameLocale == 'object') - name = item.nameLocale[lang] || item.nameLocale['en'] || name || ''; - - arr.push(new Common.Models.Plugin({ - name : name, - guid: item.guid, - baseUrl : item.baseUrl, - variations: variationsArr, - currentVariation: 0, - visible: pluginVisible, - groupName: (item.group) ? item.group.name : '', - groupRank: (item.group) ? item.group.rank : 0 - })); - } - }); - - if ( uiCustomize!==false ) // from ui customizer in editor config or desktop event - this.UICustomizePlugins = arrUI; - - if ( !uiCustomize && pluginStore) { - arr = pluginStore.models.concat(arr); - arr.sort(function(a, b){ - var rank_a = a.get('groupRank'), - rank_b = b.get('groupRank'); - if (rank_a < rank_b) - return (rank_a==0) ? 1 : -1; - if (rank_a > rank_b) - return (rank_b==0) ? -1 : 1; - return 0; - }); - pluginStore.reset(arr); - this.appOptions.canPlugins = !pluginStore.isEmpty(); - } - } else if (!uiCustomize){ - this.appOptions.canPlugins = false; - } - if (!uiCustomize) this.getApplication().getController('LeftMenu').enablePlugins(); - if (this.appOptions.canPlugins) { - this.getApplication().getController('Common.Controllers.Plugins').setMode(this.appOptions).runAutoStartPlugins(plugins.autostart); - } - }, - - resetPluginsList: function() { - this.getApplication().getCollection('Common.Collections.Plugins').reset(); - }, - onClearDummyComment: function() { this.dontCloseDummyComment = false; }, @@ -2247,6 +2124,17 @@ define([ this.beforeShowDummyComment = true; }, + DisableMailMerge: function() { + this.appOptions.mergeFolderUrl = ""; + var toolbarController = this.getApplication().getController('Toolbar'); + toolbarController && toolbarController.DisableMailMerge(); + }, + + DisableVersionHistory: function() { + this.editorConfig.canUseHistory = false; + this.appOptions.canUseHistory = false; + }, + leavePageText: 'You have unsaved changes in this document. Click \'Stay on this Page\' then \'Save\' to save them. Click \'Leave this Page\' to discard all the unsaved changes.', criticalErrorTitle: 'Error', notcriticalErrorTitle: 'Warning', diff --git a/apps/documenteditor/main/app/controller/Statusbar.js b/apps/documenteditor/main/app/controller/Statusbar.js index 96d232761..9c4c0e6c3 100644 --- a/apps/documenteditor/main/app/controller/Statusbar.js +++ b/apps/documenteditor/main/app/controller/Statusbar.js @@ -99,7 +99,7 @@ define([ $('.statusbar #label-zoom').css('min-width', 80); if ( cfg.isEdit ) { - var review = DE.getController('Common.Controllers.ReviewChanges').getView(); + var review = me.getApplication().getController('Common.Controllers.ReviewChanges').getView(); if (cfg.canReview) { me.btnTurnReview = review.getButton('turn', 'statusbar'); me.btnTurnReview.render(me.statusbar.$layout.find('#btn-doc-review')); diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index 4bd68ba8f..7bbd02381 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -55,7 +55,8 @@ define([ 'documenteditor/main/app/view/PageSizeDialog', 'documenteditor/main/app/controller/PageLayout', 'documenteditor/main/app/view/CustomColumnsDialog', - 'documenteditor/main/app/view/ControlSettingsDialog' + 'documenteditor/main/app/view/ControlSettingsDialog', + 'documenteditor/main/app/view/WatermarkSettingsDialog' ], function () { 'use strict'; @@ -151,7 +152,7 @@ define([ if ( !_format || _supported.indexOf(_format) < 0 ) _format = Asc.c_oAscFileType.PDF; - _main.api.asc_DownloadAs(_format); + _main.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(_format)); }, 'go:editor': function() { Common.Gateway.requestEditRights(); @@ -304,10 +305,12 @@ define([ toolbar.btnColumns.menu.on('item:click', _.bind(this.onColumnsSelect, this)); toolbar.btnPageOrient.menu.on('item:click', _.bind(this.onPageOrientSelect, this)); toolbar.btnPageMargins.menu.on('item:click', _.bind(this.onPageMarginsSelect, this)); + toolbar.btnWatermark.menu.on('item:click', _.bind(this.onWatermarkSelect, this)); toolbar.btnClearStyle.on('click', _.bind(this.onClearStyleClick, this)); toolbar.btnCopyStyle.on('toggle', _.bind(this.onCopyStyleToggle, this)); toolbar.mnuPageSize.on('item:click', _.bind(this.onPageSizeClick, this)); toolbar.mnuColorSchema.on('item:click', _.bind(this.onColorSchemaClick, this)); + toolbar.mnuColorSchema.on('show:after', _.bind(this.onColorSchemaShow, this)); toolbar.btnMailRecepients.on('click', _.bind(this.onSelectRecepientsClick, this)); toolbar.mnuInsertChartPicker.on('item:click', _.bind(this.onSelectChart, this)); toolbar.mnuPageNumberPosPicker.on('item:click', _.bind(this.onInsertPageNumberClick, this)); @@ -321,6 +324,8 @@ define([ toolbar.btnInsertEquation.on('click', _.bind(this.onInsertEquationClick, this)); toolbar.mnuNoControlsColor.on('click', _.bind(this.onNoControlsColor, this)); toolbar.mnuControlsColorPicker.on('select', _.bind(this.onSelectControlsColor, this)); + Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); + Common.Gateway.on('setmailmergerecipients', _.bind(this.setMailMergeRecipients, this)); $('#id-toolbar-menu-new-control-color').on('click', _.bind(this.onNewControlsColor, this)); $('#id-save-style-plus, #id-save-style-link', toolbar.$el).on('click', this.onMenuSaveStyle.bind(this)); @@ -371,6 +376,7 @@ define([ this.api.asc_registerCallback('asc_onContextMenu', _.bind(this.onContextMenu, this)); this.api.asc_registerCallback('asc_onShowParaMarks', _.bind(this.onShowParaMarks, this)); this.api.asc_registerCallback('asc_onChangeSdtGlobalSettings', _.bind(this.onChangeSdtGlobalSettings, this)); + Common.NotificationCenter.on('fonts:change', _.bind(this.onApiChangeFont, this)); } else if (this.mode.isRestrictedEdit) { this.api.asc_registerCallback('asc_onFocusObject', _.bind(this.onApiFocusObjectRestrictedEdit, this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect', _.bind(this.onApiCoAuthoringDisconnect, this)); @@ -400,6 +406,10 @@ define([ this.toolbar.collapse(); }, + onApiChangeFont: function(font) { + !this.getApplication().getController('Main').isModalShowed && this.toolbar.cmbFontName.onApiChangeFont(font); + }, + onApiFontSize: function(size) { if (this._state.fontsize !== size) { this.toolbar.cmbFontSize.setValue(size); @@ -818,6 +828,8 @@ define([ if ( this.btnsComment && this.btnsComment.length > 0 ) this.btnsComment.setDisabled(need_disable); + toolbar.btnWatermark.setDisabled(header_locked); + this._state.in_equation = in_equation; }, @@ -957,7 +969,7 @@ define([ onPrint: function(e) { if (this.api) - this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event + this.api.asc_Print(new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera)); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event Common.NotificationCenter.trigger('edit:complete', this.toolbar); @@ -1418,13 +1430,23 @@ define([ } })).show(); } else if (item.value === 'storage') { - (new Common.Views.SelectFileDlg({ - fileChoiceUrl: this.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "").replace("{documentType}", "ImagesOnly") - })).on('selectfile', function(obj, file){ - me.toolbar.fireEvent('insertimage', me.toolbar); - me.api.AddImageUrl(file.url, undefined, true);// for loading from storage - Common.component.Analytics.trackEvent('ToolBar', 'Image'); - }).show(); + if (this.toolbar.mode.canRequestInsertImage) { + Common.Gateway.requestInsertImage(); + } else { + (new Common.Views.SelectFileDlg({ + fileChoiceUrl: this.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "").replace("{documentType}", "ImagesOnly") + })).on('selectfile', function(obj, file){ + me.insertImage(file); + }).show(); + } + } + }, + + insertImage: function(data) { + if (data && data.url) { + this.toolbar.fireEvent('insertimage', this.toolbar); + this.api.AddImageUrl(data.url, undefined, data.token);// for loading from storage + Common.component.Analytics.trackEvent('ToolBar', 'Image'); } }, @@ -1570,6 +1592,14 @@ define([ Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, + onColorSchemaShow: function(menu) { + if (this.api) { + var value = this.api.asc_GetCurrentColorSchemeName(); + var item = _.find(menu.items, function(item) { return item.value == value; }); + (item) ? item.setChecked(true) : menu.clearAll(); + } + }, + onDropCapSelect: function(menu, item) { if (_.isUndefined(item.value)) return; @@ -1900,6 +1930,41 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Blank Page'); }, + onWatermarkSelect: function(menu, item) { + if (this.api) { + if (item.value == 'remove') + this.api.asc_WatermarkRemove(); + else { + var me = this; + if (_.isUndefined(me.fontstore)) { + me.fontstore = new Common.Collections.Fonts(); + var fonts = me.toolbar.cmbFontName.store.toJSON(); + var arr = []; + _.each(fonts, function(font, index){ + if (!font.cloneid) { + arr.push(_.clone(font)); + } + }); + me.fontstore.add(arr); + } + + (new DE.Views.WatermarkSettingsDialog({ + props: me.api.asc_GetWatermarkProps(), + api: me.api, + fontStore: me.fontstore, + handler: function(result, value) { + if (result == 'ok') { + me.api.asc_SetWatermarkProps(value); + } + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + })).show(); + } + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + Common.component.Analytics.trackEvent('ToolBar', 'Edit ' + item.value); + } + }, + onListStyleSelect: function(combo, record) { this._state.prstyle = undefined; if (this.api) @@ -2281,7 +2346,7 @@ define([ store: shapeGroup.get('groupStore'), parentMenu: menuItem.menu, showLast: false, - itemTemplate: _.template('
      ') + itemTemplate: _.template('
      \">
      ') }); shapePicker.on('item:click', function(picker, item, record, e) { @@ -2550,7 +2615,7 @@ define([ this.toolbar.btnRedo.setDisabled(this._state.can_redo!==true); this.toolbar.btnCopy.setDisabled(this._state.can_copycut!==true); this.toolbar.btnPrint.setDisabled(!this.toolbar.mode.canPrint); - if (this.toolbar.mode.fileChoiceUrl) + if (!this._state.mmdisable && (this.toolbar.mode.fileChoiceUrl || this.toolbar.mode.canRequestMailMergeRecipients)) this.toolbar.btnMailRecepients.setDisabled(false); this._state.activated = true; @@ -2558,6 +2623,11 @@ define([ this.onApiPageSize(props.get_W(), props.get_H()); }, + DisableMailMerge: function() { + this._state.mmdisable = true; + this.toolbar && this.toolbar.btnMailRecepients && this.toolbar.btnMailRecepients.setDisabled(true); + }, + updateThemeColors: function() { var updateColors = function(picker, defaultColorIndex) { if (picker) { @@ -2616,17 +2686,17 @@ define([ return; } - listStyles.menuPicker.store.reset([]); // remove all - + var arr = []; var mainController = this.getApplication().getController('Main'); _.each(styles.get_MergedStyles(), function(style){ - listStyles.menuPicker.store.add({ + arr.push({ imageUrl: style.asc_getImage(), title : style.get_Name(), tip : mainController.translationTable[style.get_Name()] || style.get_Name(), id : Common.UI.getId() }); }); + listStyles.menuPicker.store.reset(arr); // remove all if (listStyles.menuPicker.store.length > 0 && listStyles.rendered){ var styleRec; @@ -2748,22 +2818,28 @@ define([ onSelectRecepientsClick: function() { if (this._mailMergeDlg) return; - var me = this; - me._mailMergeDlg = new Common.Views.SelectFileDlg({ - fileChoiceUrl: this.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "xlsx").replace("{documentType}", "") - }); - me._mailMergeDlg.on('selectfile', function(obj, recepients){ - me.api.asc_StartMailMerge(recepients); - if (!me.mergeEditor) - me.mergeEditor = me.getApplication().getController('Common.Controllers.ExternalMergeEditor').getView('Common.Views.ExternalMergeEditor'); - if (me.mergeEditor) - me.mergeEditor.setEditMode(false); + if (this.toolbar.mode.canRequestMailMergeRecipients) { + Common.Gateway.requestMailMergeRecipients(); + } else { + var me = this; + me._mailMergeDlg = new Common.Views.SelectFileDlg({ + fileChoiceUrl: this.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "xlsx").replace("{documentType}", "") + }); + me._mailMergeDlg.on('selectfile', function(obj, recepients){ + me.setMailMergeRecipients(recepients); + }).on('close', function(obj){ + me._mailMergeDlg = undefined; + }); + me._mailMergeDlg.show(); + } + }, - }).on('close', function(obj){ - me._mailMergeDlg = undefined; - }); - - me._mailMergeDlg.show(); + setMailMergeRecipients: function(recepients) { + this.api.asc_StartMailMerge(recepients); + if (!this.mergeEditor) + this.mergeEditor = this.getApplication().getController('Common.Controllers.ExternalMergeEditor').getView('Common.Views.ExternalMergeEditor'); + if (this.mergeEditor) + this.mergeEditor.setEditMode(false); }, createDelayedElements: function() { @@ -2827,22 +2903,7 @@ define([ me.appOptions = config; if ( config.canCoAuthoring && config.canComments ) { - this.btnsComment = createButtonSet(); - var slots = me.toolbar.$el.find('.slot-comment'); - slots.each(function(index, el) { - var _cls = 'btn-toolbar'; - /x-huge/.test(el.className) && (_cls += ' x-huge icon-top'); - - var button = new Common.UI.Button({ - id: 'tlbtn-addcomment-' + index, - cls: _cls, - iconCls: 'btn-menu-comments', - caption: me.toolbar.capBtnComment - }).render( slots.eq(index) ); - - me.btnsComment.add(button); - }); - + this.btnsComment = Common.Utils.injectButtons(this.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'btn-menu-comments', this.toolbar.capBtnComment); if ( this.btnsComment.length ) { var _comments = DE.getController('Common.Controllers.Comments').getView(); this.btnsComment.forEach(function (btn) { diff --git a/apps/documenteditor/main/app/controller/Viewport.js b/apps/documenteditor/main/app/controller/Viewport.js index 17a0fd5d9..eef6af3e7 100644 --- a/apps/documenteditor/main/app/controller/Viewport.js +++ b/apps/documenteditor/main/app/controller/Viewport.js @@ -154,6 +154,8 @@ define([ var $filemenu = $('.toolbar-fullview-panel'); $filemenu.css('top', _intvars.get('toolbar-height-tabs')); + me.viewport.$el.attr('applang', me.appConfig.lang.split(/[\-_]/)[0]); + if ( !config.isEdit || ( !Common.localStorage.itemExists("de-compact-toolbar") && config.customization && config.customization.compactToolbar )) { diff --git a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template index 6dc19d04e..c510b0b83 100644 --- a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template @@ -1,23 +1,66 @@
      - - - - - - -
      - -
      -
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      +
      +
      -
      + +
      -
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      -
      +
      +
      @@ -44,15 +87,15 @@
      -
      +
      -
      -
      +
      +
      @@ -70,114 +113,94 @@
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      -
      + +
      -
      -
      -
      -
      -
      +
      +
      +
      +
      +
      -
      - -
      -
      -
      - -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      -
      -
      - - - -
      +
      + +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + +
      - - - - - - - - - -
      +
      +
      -
      + +
      -
      + + +
      +
      -
      + +
      -
      +
      +
      \ No newline at end of file diff --git a/apps/documenteditor/main/app/template/ShapeSettings.template b/apps/documenteditor/main/app/template/ShapeSettings.template index e6169facb..d080de792 100644 --- a/apps/documenteditor/main/app/template/ShapeSettings.template +++ b/apps/documenteditor/main/app/template/ShapeSettings.template @@ -177,6 +177,16 @@
      + + +
      + + + + +
      + +
      diff --git a/apps/documenteditor/main/app/template/Toolbar.template b/apps/documenteditor/main/app/template/Toolbar.template index 22dd0684d..e9d7ae2c0 100644 --- a/apps/documenteditor/main/app/template/Toolbar.template +++ b/apps/documenteditor/main/app/template/Toolbar.template @@ -134,6 +134,10 @@ +
      +
      + +
      diff --git a/apps/documenteditor/main/app/template/WatermarkSettings.template b/apps/documenteditor/main/app/template/WatermarkSettings.template new file mode 100644 index 000000000..afe3b0f56 --- /dev/null +++ b/apps/documenteditor/main/app/template/WatermarkSettings.template @@ -0,0 +1,71 @@ + + + + + + +
      +
      +
      +
      +
      + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + + + + + + + + + + +
      + + + + +
      +
      +
      +
      + +
      +
      +
      diff --git a/apps/documenteditor/main/app/view/BookmarksDialog.js b/apps/documenteditor/main/app/view/BookmarksDialog.js index fc77ab283..685ac1ea4 100644 --- a/apps/documenteditor/main/app/view/BookmarksDialog.js +++ b/apps/documenteditor/main/app/view/BookmarksDialog.js @@ -314,9 +314,7 @@ define([ gotoBookmark: function(btn, eOpts){ var rec = this.bookmarksList.getSelectedRec(); - if (rec.length>0) { - this.props.asc_SelectBookmark(rec[0].get('value')); - } + rec && this.props.asc_SelectBookmark(rec.get('value')); }, addBookmark: function(btn, eOpts){ @@ -333,11 +331,11 @@ define([ deleteBookmark: function(btn, eOpts){ var rec = this.bookmarksList.getSelectedRec(); - if (rec.length>0) { - this.props.asc_RemoveBookmark(rec[0].get('value')); + if (rec) { + this.props.asc_RemoveBookmark(rec.get('value')); var store = this.bookmarksList.store; - var idx = _.indexOf(store.models, rec[0]); - store.remove(rec[0]); + var idx = _.indexOf(store.models, rec); + store.remove(rec); this.txtName.setValue(''); this.btnAdd.setDisabled(true); this.btnGoto.setDisabled(true); @@ -350,13 +348,11 @@ define([ if (btn.cmpEl && btn.cmpEl.parent().hasClass('open')) return; var rec = this.bookmarksList.getSelectedRec(); - if (rec.length>0) { - Common.Gateway.requestMakeActionLink({ - action: { - type: "bookmark", data: rec[0].get('value') - } - }); - } + rec && Common.Gateway.requestMakeActionLink({ + action: { + type: "bookmark", data: rec.get('value') + } + }); }, onRadioSort: function(field, newValue, eOpts) { diff --git a/apps/documenteditor/main/app/view/ChartSettings.js b/apps/documenteditor/main/app/view/ChartSettings.js index 631c95813..c0eedc91d 100644 --- a/apps/documenteditor/main/app/view/ChartSettings.js +++ b/apps/documenteditor/main/app/view/ChartSettings.js @@ -167,7 +167,7 @@ define([ if (this._isChartStylesChanged) { if (rec) - this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.getSelectedRec()[0],true); + this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.getSelectedRec(),true); else this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.store.at(0), true); } @@ -486,16 +486,16 @@ define([ if (count>0 && count==styles.length) { var data = stylesStore.models; _.each(styles, function(style, index){ - data[index].set('imageUrl', style.asc_getImageUrl()); + data[index].set('imageUrl', style.asc_getImage()); }); } else { var stylearray = [], selectedIdx = -1; _.each(styles, function(item, index){ stylearray.push({ - imageUrl: item.asc_getImageUrl(), - data : item.asc_getStyle(), - tip : me.textStyle + ' ' + item.asc_getStyle() + imageUrl: item.asc_getImage(), + data : item.asc_getName(), + tip : me.textStyle + ' ' + item.asc_getName() }); }); stylesStore.reset(stylearray, {silent: false}); diff --git a/apps/documenteditor/main/app/view/DocumentHolder.js b/apps/documenteditor/main/app/view/DocumentHolder.js index b2dc03600..3c435dd5e 100644 --- a/apps/documenteditor/main/app/view/DocumentHolder.js +++ b/apps/documenteditor/main/app/view/DocumentHolder.js @@ -780,7 +780,7 @@ define([ }; this.addWordVariants = function(isParagraph) { - if (!me.textMenu) return; + if (!me.textMenu || !me.textMenu.isVisible() && !me.tableMenu.isVisible()) return; if (_.isUndefined(isParagraph)) { isParagraph = me.textMenu.isVisible(); @@ -1871,6 +1871,18 @@ define([ me.fireEvent('editcomplete', me); }, + onPrintSelection: function(item){ + if (this.api){ + var printopt = new Asc.asc_CAdjustPrint(); + printopt.asc_setPrintType(Asc.c_oAscPrintType.Selection); + var opts = new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event + opts.asc_setAdvancedOptions(printopt); + this.api.asc_Print(opts); + this.fireEvent('editcomplete', this); + Common.component.Analytics.trackEvent('DocumentHolder', 'Print Selection'); + } + }, + onControlsSelect: function(item, e) { var me = this; var props = this.api.asc_GetContentControlProperties(); @@ -2351,6 +2363,10 @@ define([ value : 'cut' }).on('click', _.bind(me.onCutCopyPaste, me)); + var menuImgPrint = new Common.UI.MenuItem({ + caption : me.txtPrintSelection + }).on('click', _.bind(me.onPrintSelection, me)); + var menuSignatureEditSign = new Common.UI.MenuItem({caption: this.strSign, value: 0 }).on('click', _.bind(me.onSignatureClick, me)); var menuSignatureEditSetup = new Common.UI.MenuItem({caption: this.strSetup, value: 2 }).on('click', _.bind(me.onSignatureClick, me)); var menuEditSignSeparator = new Common.UI.MenuItem({ caption: '--' }); @@ -2481,7 +2497,7 @@ define([ if (menuChartEdit.isVisible()) menuChartEdit.setDisabled(islocked || value.imgProps.value.get_SeveralCharts()); - me.pictureMenu.items[16].setVisible(menuChartEdit.isVisible()); + me.pictureMenu.items[17].setVisible(menuChartEdit.isVisible()); me.menuOriginalSize.setDisabled(islocked || value.imgProps.value.get_ImageUrl()===null || value.imgProps.value.get_ImageUrl()===undefined); menuImageAdvanced.setDisabled(islocked); @@ -2506,6 +2522,8 @@ define([ menuImgCopy.setDisabled(!cancopy); menuImgCut.setDisabled(islocked || !cancopy); menuImgPaste.setDisabled(islocked); + menuImgPrint.setVisible(me.mode.canPrint); + menuImgPrint.setDisabled(!cancopy); var signGuid = (value.imgProps && value.imgProps.value && me.mode.isSignatureSupport) ? value.imgProps.value.asc_getSignatureId() : undefined, isInSign = !!signGuid; @@ -2522,6 +2540,7 @@ define([ menuImgCut, menuImgCopy, menuImgPaste, + menuImgPrint, { caption: '--' }, menuSignatureEditSign, menuSignatureEditSetup, @@ -2711,6 +2730,7 @@ define([ caption : me.moreText, menu : new Common.UI.Menu({ menuAlign: 'tl-tr', + restoreHeight: true, items : [ ] }) @@ -2721,19 +2741,9 @@ define([ menu : new Common.UI.Menu({ cls: 'lang-menu', menuAlign: 'tl-tr', - maxHeight: 300, - restoreHeight: 300, - items : [ - ] - }).on('show:before', function (mnu) { - if (!this.scroller) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength: 30, - alwaysVisibleY: true - }); - } + restoreHeight: 285, + items : [], + search: true }) }); @@ -2755,6 +2765,13 @@ define([ } }); + var menuToDictionaryTable = new Common.UI.MenuItem({ + caption : me.toDictionaryText + }).on('click', function(item, e) { + me.api.asc_spellCheckAddToDictionary(me._currentSpellObj); + me.fireEvent('editcomplete', me); + }); + var menuIgnoreSpellTableSeparator = new Common.UI.MenuItem({ caption : '--' }); @@ -2773,6 +2790,7 @@ define([ menuIgnoreSpellTableSeparator, menuIgnoreSpellTable, menuIgnoreAllSpellTable, + menuToDictionaryTable, { caption: '--' }, me.langTableMenu ] @@ -2794,6 +2812,11 @@ define([ value : 'cut' }).on('click', _.bind(me.onCutCopyPaste, me)); + var menuTablePrint = new Common.UI.MenuItem({ + caption : me.txtPrintSelection + }).on('click', _.bind(me.onPrintSelection, me)); + + var menuEquationSeparatorInTable = new Common.UI.MenuItem({ caption : '--' }); @@ -2899,7 +2922,7 @@ define([ var isEquation= (value.mathProps && value.mathProps.value); - for (var i = 7; i < 24; i++) { + for (var i = 8; i < 25; i++) { me.tableMenu.items[i].setVisible(!isEquation); } @@ -2914,8 +2937,8 @@ define([ me.menuTableDirect270.setChecked(dir == Asc.c_oAscCellTextDirection.BTLR); var disabled = value.tableProps.locked || (value.headerProps!==undefined && value.headerProps.locked); - me.tableMenu.items[10].setDisabled(disabled); me.tableMenu.items[11].setDisabled(disabled); + me.tableMenu.items[12].setDisabled(disabled); if (me.api) { mnuTableMerge.setDisabled(disabled || !me.api.CheckBeforeMergeCells()); @@ -2933,6 +2956,8 @@ define([ menuTableCopy.setDisabled(!cancopy); menuTableCut.setDisabled(disabled || !cancopy); menuTablePaste.setDisabled(disabled); + menuTablePrint.setVisible(me.mode.canPrint); + menuTablePrint.setDisabled(!cancopy); // bullets & numbering var listId = me.api.asc_GetCurrentNumberingId(), @@ -2996,6 +3021,7 @@ define([ menuParagraphAdvancedInTable.setDisabled(disabled); me.menuSpellCheckTable.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); + menuToDictionaryTable.setVisible(me.mode.isDesktopApp); menuSpellcheckTableSeparator.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); me.langTableMenu.setDisabled(disabled); @@ -3015,9 +3041,9 @@ define([ //equation menu var eqlen = 0; if (isEquation) { - eqlen = me.addEquationMenu(false, 6); + eqlen = me.addEquationMenu(false, 7); } else - me.clearEquationMenu(false, 6); + me.clearEquationMenu(false, 7); menuEquationSeparatorInTable.setVisible(isEquation && eqlen>0); var in_toc = me.api.asc_GetTableOfContentsPr(true), @@ -3045,6 +3071,7 @@ define([ menuTableCut, menuTableCopy, menuTablePaste, + menuTablePrint, { caption: '--' }, menuEquationSeparatorInTable, menuTableRefreshField, @@ -3345,9 +3372,8 @@ define([ caption : me.moreText, menu : new Common.UI.Menu({ menuAlign: 'tl-tr', - style : 'max-height: 300px;', - items: [ - ] + restoreHeight: true, + items: [] }) }); @@ -3356,19 +3382,9 @@ define([ menu : new Common.UI.Menu({ cls: 'lang-menu', menuAlign: 'tl-tr', - maxHeight: 300, - restoreHeight: 300, - items : [ - ] - }).on('show:before', function (mnu) { - if (!this.scroller) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength: 30, - alwaysVisibleY: true - }); - } + restoreHeight: 285, + items : [], + search: true }) }); @@ -3386,6 +3402,13 @@ define([ me.fireEvent('editcomplete', me); }); + var menuToDictionaryPara = new Common.UI.MenuItem({ + caption : me.toDictionaryText + }).on('click', function(item, e) { + me.api.asc_spellCheckAddToDictionary(me._currentSpellObj); + me.fireEvent('editcomplete', me); + }); + var menuIgnoreSpellParaSeparator = new Common.UI.MenuItem({ caption : '--' }); @@ -3409,6 +3432,10 @@ define([ value : 'cut' }).on('click', _.bind(me.onCutCopyPaste, me)); + var menuParaPrint = new Common.UI.MenuItem({ + caption : me.txtPrintSelection + }).on('click', _.bind(me.onPrintSelection, me)); + var menuEquationSeparator = new Common.UI.MenuItem({ caption : '--' }); @@ -3571,17 +3598,21 @@ define([ menuParaCopy.setDisabled(!cancopy); menuParaCut.setDisabled(disabled || !cancopy); menuParaPaste.setDisabled(disabled); + menuParaPrint.setVisible(me.mode.canPrint); + menuParaPrint.setDisabled(!cancopy); // spellCheck - me.menuSpellPara.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); - menuSpellcheckParaSeparator.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); - menuIgnoreSpellPara.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); - menuIgnoreAllSpellPara.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); - me.langParaMenu.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); + var spell = (value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); + me.menuSpellPara.setVisible(spell); + menuSpellcheckParaSeparator.setVisible(spell); + menuIgnoreSpellPara.setVisible(spell); + menuIgnoreAllSpellPara.setVisible(spell); + menuToDictionaryPara.setVisible(spell && me.mode.isDesktopApp); + me.langParaMenu.setVisible(spell); me.langParaMenu.setDisabled(disabled); - menuIgnoreSpellParaSeparator.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); + menuIgnoreSpellParaSeparator.setVisible(spell); - if (value.spellProps!==undefined && value.spellProps.value.get_Checked()===false && value.spellProps.value.get_Variants() !== null && value.spellProps.value.get_Variants() !== undefined) { + if (spell && value.spellProps.value.get_Variants() !== null && value.spellProps.value.get_Variants() !== undefined) { me.addWordVariants(true); } else { me.menuSpellPara.setCaption(me.loadSpellText, true); @@ -3596,9 +3627,9 @@ define([ //equation menu var eqlen = 0; if (isEquation) { - eqlen = me.addEquationMenu(true, 11); + eqlen = me.addEquationMenu(true, 13); } else - me.clearEquationMenu(true, 11); + me.clearEquationMenu(true, 13); menuEquationSeparator.setVisible(isEquation && eqlen>0); menuFrameAdvanced.setVisible(value.paraProps.value.get_FramePr() !== undefined); @@ -3655,11 +3686,13 @@ define([ menuSpellcheckParaSeparator, menuIgnoreSpellPara, menuIgnoreAllSpellPara, + menuToDictionaryPara, me.langParaMenu, menuIgnoreSpellParaSeparator, menuParaCut, menuParaCopy, menuParaPaste, + menuParaPrint, { caption: '--' }, menuEquationSeparator, menuParaRemoveControl, @@ -4075,7 +4108,9 @@ define([ textCrop: 'Crop', textCropFill: 'Fill', textCropFit: 'Fit', - textFollow: 'Follow move' + textFollow: 'Follow move', + toDictionaryText: 'Add to Dictionary', + txtPrintSelection: 'Print Selection' }, DE.Views.DocumentHolder || {})); }); \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js index 42b20e6ba..bbf120cf3 100644 --- a/apps/documenteditor/main/app/view/FileMenu.js +++ b/apps/documenteditor/main/app/view/FileMenu.js @@ -250,22 +250,21 @@ define([ }, applyMode: function() { + this.miDownload[((this.mode.canDownload || this.mode.canDownloadOrigin) && (!this.mode.isDesktopApp || !this.mode.isOffline))?'show':'hide'](); + this.miSaveCopyAs[((this.mode.canDownload || this.mode.canDownloadOrigin) && (!this.mode.isDesktopApp || !this.mode.isOffline)) && (this.mode.canRequestSaveAs || this.mode.saveAsUrl) ?'show':'hide'](); + this.miSaveAs[((this.mode.canDownload || this.mode.canDownloadOrigin) && this.mode.isDesktopApp && this.mode.isOffline)?'show':'hide'](); + this.miSave[this.mode.isEdit?'show':'hide'](); + this.miEdit[!this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights ?'show':'hide'](); this.miPrint[this.mode.canPrint?'show':'hide'](); this.miRename[(this.mode.canRename && !this.mode.isDesktopApp) ?'show':'hide'](); this.miProtect[this.mode.canProtect ?'show':'hide'](); - this.miProtect.$el.find('+.devider')[!this.mode.isDisconnected?'show':'hide'](); + var isVisible = this.mode.canDownload || this.mode.canDownloadOrigin || this.mode.isEdit || this.mode.canPrint || this.mode.canProtect || + !this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights || this.mode.canRename && !this.mode.isDesktopApp; + this.miProtect.$el.find('+.devider')[isVisible && !this.mode.isDisconnected?'show':'hide'](); this.miRecent[this.mode.canOpenRecent?'show':'hide'](); this.miNew[this.mode.canCreateNew?'show':'hide'](); this.miNew.$el.find('+.devider')[this.mode.canCreateNew?'show':'hide'](); - this.miDownload[((this.mode.canDownload || this.mode.canDownloadOrigin) && (!this.mode.isDesktopApp || !this.mode.isOffline))?'show':'hide'](); - this.miSaveCopyAs[((this.mode.canDownload || this.mode.canDownloadOrigin) && (!this.mode.isDesktopApp || !this.mode.isOffline)) && this.mode.saveAsUrl ?'show':'hide'](); - this.miSaveAs[((this.mode.canDownload || this.mode.canDownloadOrigin) && this.mode.isDesktopApp && this.mode.isOffline)?'show':'hide'](); -// this.hkSaveAs[this.mode.canDownload?'enable':'disable'](); - - this.miSave[this.mode.isEdit?'show':'hide'](); - this.miEdit[!this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights ?'show':'hide'](); - this.miAccess[(!this.mode.isOffline && !this.mode.isReviewOnly && this.document&&this.document.info && (this.document.info.sharingSettings&&this.document.info.sharingSettings.length>0 || this.mode.sharingSettingsUrl&&this.mode.sharingSettingsUrl.length))?'show':'hide'](); @@ -306,7 +305,7 @@ define([ } else if (this.mode.canDownloadOrigin) $('a',this.miDownload.$el).text(this.textDownload); - if (this.mode.canDownload && this.mode.saveAsUrl) { + if (this.mode.canDownload && (this.mode.canRequestSaveAs || this.mode.saveAsUrl)) { this.panels['save-copy'] = ((new DE.Views.FileMenuPanels.ViewSaveCopy({menu: this})).render()); } diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js index 3154ccfd8..6f44e1424 100644 --- a/apps/documenteditor/main/app/view/FileMenuPanels.js +++ b/apps/documenteditor/main/app/view/FileMenuPanels.js @@ -198,6 +198,10 @@ define([ '', '', '','', + '', + '', + '', + '','', '', '', '', @@ -270,6 +274,11 @@ define([ labelText: this.strSpellCheckMode }); + this.chCompatible = new Common.UI.CheckBox({ + el: $('#fms-chb-compatible'), + labelText: this.textOldVersions + }); + this.chAutosave = new Common.UI.CheckBox({ el: $('#fms-chb-autosave'), labelText: this.strAutosave @@ -448,6 +457,7 @@ define([ this.chSpell.setValue(Common.Utils.InternalSettings.get("de-settings-spellcheck")); this.chAlignGuides.setValue(Common.Utils.InternalSettings.get("de-settings-showsnaplines")); + this.chCompatible.setValue(Common.Utils.InternalSettings.get("de-settings-compatible")); }, applySettings: function() { @@ -469,6 +479,8 @@ define([ if (this.mode.canForcesave) Common.localStorage.setItem("de-settings-forcesave", this.chForcesave.isChecked() ? 1 : 0); Common.localStorage.setItem("de-settings-spellcheck", this.chSpell.isChecked() ? 1 : 0); + Common.localStorage.setItem("de-settings-compatible", this.chCompatible.isChecked() ? 1 : 0); + Common.Utils.InternalSettings.set("de-settings-compatible", this.chCompatible.isChecked() ? 1 : 0); Common.Utils.InternalSettings.set("de-settings-showsnaplines", this.chAlignGuides.isChecked()); Common.localStorage.save(); @@ -531,7 +543,9 @@ define([ txtFitWidth: 'Fit to Width', textForceSave: 'Save to Server', strForcesave: 'Always save to server (otherwise save to server on document close)', - strResolvedComment: 'Turn on display of the resolved comments' + strResolvedComment: 'Turn on display of the resolved comments', + textCompatible: 'Compatibility', + textOldVersions: 'Make the files compatible with older MS Word versions when saved as DOCX' }, DE.Views.FileMenuPanels.Settings || {})); DE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({ @@ -673,50 +687,84 @@ define([ this.template = _.template([ '', '', - '', - '', - '', - '', - '', - '', - '', - '', '', '', '', - '', - '', - '', - '', - '', - '', - '', - '', - '', '', - '', - '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + // '', + // '', + // '', + // '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', '', @@ -726,21 +774,125 @@ define([ this.infoObj = {PageCount: 0, WordsCount: 0, ParagraphCount: 0, SymbolsCount: 0, SymbolsWSCount:0}; this.inProgress = false; this.menu = options.menu; + this.coreProps = null; + this.authors = []; + this._locked = false; }, render: function() { $(this.el).html(this.template()); - this.lblTitle = $('#id-info-title'); + var me = this; + + // server info this.lblPlacement = $('#id-info-placement'); - this.lblDate = $('#id-info-date'); - this.lblAuthor = $('#id-info-author'); - this.lblApplication = $('#id-info-appname'); + this.lblOwner = $('#id-info-owner'); + this.lblUploaded = $('#id-info-uploaded'); + + // statistic info this.lblStatPages = $('#id-info-pages'); this.lblStatWords = $('#id-info-words'); this.lblStatParagraphs = $('#id-info-paragraphs'); this.lblStatSymbols = $('#id-info-symbols'); this.lblStatSpaces = $('#id-info-spaces'); + // this.lblEditTime = $('#id-info-edittime'); + + // edited info + var keyDownBefore = function(input, e){ + if (e.keyCode === Common.UI.Keys.ESC) { + var newVal = input._input.val(), + oldVal = input.getValue(); + if (newVal !== oldVal) { + input.setValue(oldVal); + e.stopPropagation(); + } + } + }; + + this.inputTitle = new Common.UI.InputField({ + el : $('#id-info-title'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putTitle(me.inputTitle.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + this.inputSubject = new Common.UI.InputField({ + el : $('#id-info-subject'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putSubject(me.inputSubject.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + this.inputComment = new Common.UI.InputField({ + el : $('#id-info-comment'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putDescription(me.inputComment.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + + // modify info + this.lblModifyDate = $('#id-info-modify-date'); + this.lblModifyBy = $('#id-info-modify-by'); + + // creation info + this.lblDate = $('#id-info-date'); + this.lblApplication = $('#id-info-appname'); + this.tblAuthor = $('#id-info-author table'); + this.trAuthor = $('#id-info-add-author').closest('tr'); + this.authorTpl = ''; + + this.tblAuthor.on('click', function(e) { + var btn = $(e.target); + if (btn.hasClass('close') && !btn.hasClass('disabled')) { + var el = btn.closest('tr'), + idx = me.tblAuthor.find('tr').index(el); + el.remove(); + me.authors.splice(idx, 1); + if (me.coreProps && me.api) { + me.coreProps.asc_putCreator(me.authors.join(';')); + me.api.asc_setCoreProps(me.coreProps); + } + } + }); + + this.inputAuthor = new Common.UI.InputField({ + el : $('#id-info-add-author'), + style : 'width: 200px;', + validateOnBlur: false, + placeHolder: this.txtAddAuthor + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue == oldValue) return; + + var val = newValue.trim(); + if (!!val && val !== oldValue.trim()) { + val.split(/\s*[,;]\s*/).forEach(function(item){ + var str = item.trim(); + if (str) { + var div = $(Common.Utils.String.format(me.authorTpl, Common.Utils.String.htmlEncode(str))); + me.trAuthor.before(div); + me.authors.push(item); + } + }); + me.inputAuthor.setValue(''); + if (me.coreProps && me.api) { + me.coreProps.asc_putCreator(me.authors.join(';')); + me.api.asc_setCoreProps(me.coreProps); + } + } + }).on('keydown:before', keyDownBefore); this.rendered = true; @@ -760,6 +912,7 @@ define([ Common.UI.BaseView.prototype.show.call(this,arguments); this.updateStatisticInfo(); + this.updateFileInfo(); }, hide: function() { @@ -769,41 +922,108 @@ define([ }, updateInfo: function(doc) { + if (!this.doc && doc && doc.info) { + doc.info.author && console.log("Obsolete: The 'author' parameter of the document 'info' section is deprecated. Please use 'owner' instead."); + doc.info.created && console.log("Obsolete: The 'created' parameter of the document 'info' section is deprecated. Please use 'uploaded' instead."); + } + this.doc = doc; if (!this.rendered) return; + var visible = false; doc = doc || {}; - this.lblTitle.text((doc.title) ? doc.title : '-'); - if (doc.info) { - if (doc.info.author) - this.lblAuthor.text(doc.info.author); - this._ShowHideInfoItem('author', doc.info.author!==undefined && doc.info.author!==null); - if (doc.info.created ) - this.lblDate.text( doc.info.created ); - this._ShowHideInfoItem('date', doc.info.created!==undefined && doc.info.created!==null); + // server info if (doc.info.folder ) this.lblPlacement.text( doc.info.folder ); - this._ShowHideInfoItem('placement', doc.info.folder!==undefined && doc.info.folder!==null); + visible = this._ShowHideInfoItem(this.lblPlacement, doc.info.folder!==undefined && doc.info.folder!==null) || visible; + var value = doc.info.owner || doc.info.author; + if (value) + this.lblOwner.text(value); + visible = this._ShowHideInfoItem(this.lblOwner, !!value) || visible; + value = doc.info.uploaded || doc.info.created; + if (value) + this.lblUploaded.text(value); + visible = this._ShowHideInfoItem(this.lblUploaded, !!value) || visible; } else this._ShowHideDocInfo(false); + $('tr.divider.general', this.el)[visible?'show':'hide'](); + var appname = (this.api) ? this.api.asc_getAppProps() : null; if (appname) { appname = (appname.asc_getApplication() || '') + ' ' + (appname.asc_getAppVersion() || ''); this.lblApplication.text(appname); } - this._ShowHideInfoItem('appname', !!appname); + this._ShowHideInfoItem(this.lblApplication, !!appname); + + this.coreProps = (this.api) ? this.api.asc_getCoreProps() : null; + if (this.coreProps) { + var value = this.coreProps.asc_getCreated(); + if (value) + this.lblDate.text(value.toLocaleString()); + this._ShowHideInfoItem(this.lblDate, !!value); + } }, - _ShowHideInfoItem: function(cls, visible) { - $('tr.'+cls, this.el)[visible?'show':'hide'](); + updateFileInfo: function() { + if (!this.rendered) + return; + + var me = this, + props = (this.api) ? this.api.asc_getCoreProps() : null, + value; + + this.coreProps = props; + // var app = (this.api) ? this.api.asc_getAppProps() : null; + // if (app) { + // value = app.asc_getTotalTime(); + // if (value) + // this.lblEditTime.text(value + ' ' + this.txtMinutes); + // } + // this._ShowHideInfoItem(this.lblEditTime, !!value); + + if (props) { + var visible = false; + value = props.asc_getModified(); + if (value) + this.lblModifyDate.text(value.toLocaleString()); + visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible; + value = props.asc_getLastModifiedBy(); + if (value) + this.lblModifyBy.text(value); + visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible; + $('tr.divider.modify', this.el)[visible?'show':'hide'](); + + value = props.asc_getTitle(); + this.inputTitle.setValue(value || ''); + value = props.asc_getSubject(); + this.inputSubject.setValue(value || ''); + value = props.asc_getDescription(); + this.inputComment.setValue(value || ''); + + this.tblAuthor.find('tr:not(:last-of-type)').remove(); + this.authors = []; + value = props.asc_getCreator();//"123\"\"\"\<\>,456"; + value && value.split(/\s*[,;]\s*/).forEach(function(item) { + var div = $(Common.Utils.String.format(me.authorTpl, Common.Utils.String.htmlEncode(item))); + me.trAuthor.before(div); + me.authors.push(item); + }); + this.tblAuthor.find('.close').toggleClass('hidden', !this.mode.isEdit); + } + this.SetDisabled(); + }, + + _ShowHideInfoItem: function(el, visible) { + el.closest('tr')[visible?'show':'hide'](); + return visible; }, _ShowHideDocInfo: function(visible) { - this._ShowHideInfoItem('date', visible); - this._ShowHideInfoItem('placement', visible); - this._ShowHideInfoItem('author', visible); + this._ShowHideInfoItem(this.lblPlacement, visible); + this._ShowHideInfoItem(this.lblOwner, visible); + this._ShowHideInfoItem(this.lblUploaded, visible); }, updateStatisticInfo: function() { @@ -824,12 +1044,17 @@ define([ this.api.asc_registerCallback('asc_onGetDocInfoStop', _.bind(this._onGetDocInfoEnd, this)); this.api.asc_registerCallback('asc_onDocInfo', _.bind(this._onDocInfo, this)); this.api.asc_registerCallback('asc_onGetDocInfoEnd', _.bind(this._onGetDocInfoEnd, this)); - this.api.asc_registerCallback('asc_onDocumentName', _.bind(this.onDocumentName, this)); + // this.api.asc_registerCallback('asc_onDocumentName', _.bind(this.onDocumentName, this)); + this.api.asc_registerCallback('asc_onLockCore', _.bind(this.onLockCore, this)); this.updateInfo(this.doc); return this; }, setMode: function(mode) { + this.mode = mode; + this.inputAuthor.setVisible(mode.isEdit); + this.tblAuthor.find('.close').toggleClass('hidden', !mode.isEdit); + this.SetDisabled(); return this; }, @@ -873,21 +1098,45 @@ define([ }, onDocumentName: function(name) { - this.lblTitle.text((name) ? name : '-'); + // this.lblTitle.text((name) ? name : '-'); }, - txtTitle: 'Document Title', - txtAuthor: 'Author', - txtPlacement: 'Placement', - txtDate: 'Creation Date', - txtStatistics: 'Statistics', + onLockCore: function(lock) { + this._locked = lock; + this.updateFileInfo(); + }, + + SetDisabled: function() { + var disable = !this.mode.isEdit || this._locked; + this.inputTitle.setDisabled(disable); + this.inputSubject.setDisabled(disable); + this.inputComment.setDisabled(disable); + this.inputAuthor.setDisabled(disable); + this.tblAuthor.find('.close').toggleClass('disabled', this._locked); + this.tblAuthor.toggleClass('disabled', disable); + }, + + txtPlacement: 'Location', + txtOwner: 'Owner', + txtUploaded: 'Uploaded', txtPages: 'Pages', txtWords: 'Words', txtParagraphs: 'Paragraphs', txtSymbols: 'Symbols', txtSpaces: 'Symbols with spaces', txtLoading: 'Loading...', - txtAppName: 'Application' + txtAppName: 'Application', + txtEditTime: 'Total Editing time', + txtTitle: 'Title', + txtSubject: 'Subject', + txtComment: 'Comment', + txtModifyDate: 'Last Modified', + txtModifyBy: 'Last Modified By', + txtCreated: 'Created', + txtAuthor: 'Author', + txtAddAuthor: 'Add Author', + txtAddText: 'Add Text', + txtMinutes: 'min' }, DE.Views.FileMenuPanels.DocumentInfo || {})); DE.Views.FileMenuPanels.DocumentRights = Common.UI.BaseView.extend(_.extend({ @@ -989,20 +1238,20 @@ define([ setMode: function(mode) { this.sharingSettingsUrl = mode.sharingSettingsUrl; + !!this.sharingSettingsUrl && this.sharingSettingsUrl.length && Common.Gateway.on('showsharingsettings', _.bind(this.changeAccessRights, this)); + !!this.sharingSettingsUrl && this.sharingSettingsUrl.length && Common.Gateway.on('setsharingsettings', _.bind(this.setSharingSettings, this)); return this; }, changeAccessRights: function(btn,event,opts) { - if (this._docAccessDlg) return; + if (this._docAccessDlg || this._readonlyRights) return; var me = this; me._docAccessDlg = new Common.Views.DocumentAccessDialog({ settingsurl: this.sharingSettingsUrl }); me._docAccessDlg.on('accessrights', function(obj, rights){ - me.doc.info.sharingSettings = rights; - me._ShowHideInfoItem('rights', me.doc.info.sharingSettings!==undefined && me.doc.info.sharingSettings!==null && me.doc.info.sharingSettings.length>0); - me.cntRights.html(me.templateRights({users: me.doc.info.sharingSettings})); + me.updateSharingSettings(rights); }).on('close', function(obj){ me._docAccessDlg = undefined; }); @@ -1010,6 +1259,17 @@ define([ me._docAccessDlg.show(); }, + setSharingSettings: function(data) { + data && this.updateSharingSettings(data.sharingSettings); + }, + + updateSharingSettings: function(rights) { + this.doc.info.sharingSettings = rights; + this._ShowHideInfoItem('rights', this.doc.info.sharingSettings!==undefined && this.doc.info.sharingSettings!==null && this.doc.info.sharingSettings.length>0); + this.cntRights.html(this.templateRights({users: this.doc.info.sharingSettings})); + Common.NotificationCenter.trigger('mentions:clearusers', this); + }, + onLostEditRights: function() { this._readonlyRights = true; if (!this.rendered) diff --git a/apps/documenteditor/main/app/view/HyperlinkSettingsDialog.js b/apps/documenteditor/main/app/view/HyperlinkSettingsDialog.js index ddd2328a2..34bdb9c88 100644 --- a/apps/documenteditor/main/app/view/HyperlinkSettingsDialog.js +++ b/apps/documenteditor/main/app/view/HyperlinkSettingsDialog.js @@ -252,7 +252,7 @@ define([ store.reset(arr); } var rec = this.internalList.getSelectedRec(); - this.btnOk.setDisabled(rec.length<1 || rec[0].get('level')==0 && rec[0].get('index')>0); + this.btnOk.setDisabled(!rec || rec.get('level')==0 && rec.get('index')>0); } else this.btnOk.setDisabled(false); @@ -338,14 +338,14 @@ define([ display = url; } else { var rec = this.internalList.getSelectedRec(); - if (rec.length>0) { - props.put_Bookmark(rec[0].get('name')); - if (rec[0].get('index')==0) + if (rec) { + props.put_Bookmark(rec.get('name')); + if (rec.get('index')==0) props.put_TopOfDocument(); - var para = rec[0].get('headingParagraph'); + var para = rec.get('headingParagraph'); if (para) props.put_Heading(para); - display = rec[0].get('name'); + display = rec.get('name'); } } @@ -382,7 +382,7 @@ define([ } } else { var rec = this.internalList.getSelectedRec(); - if (rec.length<1 || rec[0].get('level')==0 && rec[0].get('index')>0) + if (!rec || rec.get('level')==0 && rec.get('index')>0) return; } if (this.inputDisplay.checkValidate() !== true) { diff --git a/apps/documenteditor/main/app/view/ImageSettingsAdvanced.js b/apps/documenteditor/main/app/view/ImageSettingsAdvanced.js index e899abffd..0191463e3 100644 --- a/apps/documenteditor/main/app/view/ImageSettingsAdvanced.js +++ b/apps/documenteditor/main/app/view/ImageSettingsAdvanced.js @@ -1294,13 +1294,14 @@ define([ 'text!documenteditor/main/app/template/ImageSettingsAdvanced.templat var shapeprops = props.get_ShapeProperties(); var chartprops = props.get_ChartProperties(); + var pluginGuid = props.asc_getPluginGuid(); this.btnOriginalSize.setVisible(!(shapeprops || chartprops)); this.btnOriginalSize.setDisabled(props.get_ImageUrl()===null || props.get_ImageUrl()===undefined); this.btnsCategory[5].setVisible(shapeprops!==null && !shapeprops.get_FromChart()); // Shapes this.btnsCategory[6].setVisible(shapeprops!==null && !shapeprops.get_FromChart()); // Margins this.btnsCategory[3].setDisabled(props.get_FromGroup()); // Wrapping - this.btnsCategory[2].setVisible(!chartprops); // Rotation + this.btnsCategory[2].setVisible(!chartprops && (pluginGuid === null || pluginGuid === undefined)); // Rotation if (shapeprops) { this._objectType = Asc.c_oAscTypeSelectElement.Shape; diff --git a/apps/documenteditor/main/app/view/Links.js b/apps/documenteditor/main/app/view/Links.js index c85f74462..c9b83f9d4 100644 --- a/apps/documenteditor/main/app/view/Links.js +++ b/apps/documenteditor/main/app/view/Links.js @@ -115,44 +115,17 @@ define([ Common.UI.BaseView.prototype.initialize.call(this); this.toolbar = options.toolbar; - this.btnsContents = []; - this.btnsNotes = []; this.btnsPrevNote = []; this.btnsNextNote = []; - this.btnsHyperlink = []; this.paragraphControls = []; var me = this, $host = me.toolbar.$el; - var _injectComponent = function (id, cmp) { - var $slot = $host.find(id); - if ($slot.length) - cmp.rendered ? $slot.append(cmp.$el) : cmp.render($slot); - }; - var _injectComponents = function ($slots, iconCls, split, menu, caption, btnsArr) { - $slots.each(function(index, el) { - var _cls = 'btn-toolbar'; - /x-huge/.test(el.className) && (_cls += ' x-huge icon-top'); - - var button = new Common.UI.Button({ - id: "id-toolbar-" + iconCls + index, - cls: _cls, - iconCls: iconCls, - caption: caption, - split: split, - menu: menu, - disabled: true - }).render( $slots.eq(index) ); - - btnsArr.push(button); - me.paragraphControls.push(button); - }); - }; - - _injectComponents($host.find('.btn-slot.btn-contents'), 'btn-contents', true, true, me.capBtnInsContents, me.btnsContents); - _injectComponents($host.find('.btn-slot.slot-notes'), 'btn-notes', true, true, me.capBtnInsFootnote, me.btnsNotes); - _injectComponents($host.find('.btn-slot.slot-inshyperlink'), 'btn-inserthyperlink', false, false, me.capBtnInsLink, me.btnsHyperlink); + this.btnsContents = Common.Utils.injectButtons($host.find('.btn-slot.btn-contents'), '', 'btn-contents', me.capBtnInsContents, undefined, true, true ); + this.btnsNotes = Common.Utils.injectButtons($host.find('.btn-slot.slot-notes'), '', 'btn-notes', me.capBtnInsFootnote, undefined, true, true); + this.btnsHyperlink = Common.Utils.injectButtons($host.find('.btn-slot.slot-inshyperlink'), '', 'btn-inserthyperlink', me.capBtnInsLink); + Array.prototype.push.apply(this.paragraphControls, this.btnsContents.concat(this.btnsNotes, this.btnsHyperlink)); this.btnContentsUpdate = new Common.UI.Button({ cls: 'btn-toolbar x-huge icon-top', @@ -162,7 +135,7 @@ define([ menu: true, disabled: true }); - _injectComponent('#slot-btn-contents-update', this.btnContentsUpdate); + Common.Utils.injectComponent($host.find('#slot-btn-contents-update'), this.btnContentsUpdate); this.paragraphControls.push(this.btnContentsUpdate); this.btnBookmarks = new Common.UI.Button({ @@ -171,7 +144,7 @@ define([ caption: this.capBtnBookmarks, disabled: true }); - _injectComponent('#slot-btn-bookmarks', this.btnBookmarks); + Common.Utils.injectComponent($host.find('#slot-btn-bookmarks'), this.btnBookmarks); this.paragraphControls.push(this.btnBookmarks); this._state = {disabled: false}; @@ -258,7 +231,7 @@ define([ el: $('#id-menu-goto-footnote-prev-'+index), cls: 'btn-toolbar' })); - me.btnsNextNote.push(me.mnuGotoFootNext = new Common.UI.Button({ + me.btnsNextNote.push(new Common.UI.Button({ el: $('#id-menu-goto-footnote-next-'+index), cls: 'btn-toolbar' })); diff --git a/apps/documenteditor/main/app/view/MailMergeSettings.js b/apps/documenteditor/main/app/view/MailMergeSettings.js index 2713692bc..fa32bd838 100644 --- a/apps/documenteditor/main/app/view/MailMergeSettings.js +++ b/apps/documenteditor/main/app/view/MailMergeSettings.js @@ -101,13 +101,6 @@ define([ style: 'min-width: 190px;max-width: 400px;', maxHeight: 200, items: [] - }).on('render:after', function(mnu) { - this.scroller = new Common.UI.Scroller({ - el: this.$el.find('.dropdown-menu'), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - suppressScrollX: true, - minScrollbarLength : 40 - }); }) }); this.btnInsField.render( $('#mmerge-btn-ins-field',me.$el)) ; @@ -372,7 +365,7 @@ define([ this.$el.on('click', '#mmerge-readmore-link', _.bind(this.openHelp, this)); if (this.mode) { - if (!this.mode.mergeFolderUrl) + if (!this.mode.canRequestSaveAs && !this.mode.mergeFolderUrl) this.btnPortal.setVisible(false); if (!this.mode.canSendEmailAddresses) { this._arrMergeSrc.pop(); @@ -433,7 +426,7 @@ define([ if (num>this._state.recipientsCount-1) num = this._state.recipientsCount-1; this.lockControls(DE.enumLockMM.noRecipients, this._state.recipientsCount<1, { - array: (this.mode.mergeFolderUrl) ? [this.btnPortal] : [], + array: (this.mode.canRequestSaveAs || this.mode.mergeFolderUrl) ? [this.btnPortal] : [], merge: true }); @@ -544,28 +537,33 @@ define([ if (this._mailMergeDlg) return; var me = this; if (this.cmbMergeTo.getValue() != Asc.c_oAscFileType.HTML) { - me._mailMergeDlg = new Common.Views.SaveAsDlg({ - saveFolderUrl: me.mode.mergeFolderUrl, - saveFileUrl: url, - defFileName: me.defFileName + ((this.cmbMergeTo.getValue() == Asc.c_oAscFileType.PDF) ? '.pdf' : '.docx') - }); - me._mailMergeDlg.on('saveasfolder', function(obj, folder){ // save last folder - }).on('saveaserror', function(obj, err){ // save last folder - var config = { - closable: false, - title: me.notcriticalErrorTitle, - msg: err, - iconCls: 'warn', - buttons: ['ok'], - callback: function(btn){ - me.fireEvent('editcomplete', me); - } - }; - Common.UI.alert(config); - }).on('close', function(obj){ - me._mailMergeDlg = undefined; - }); - me._mailMergeDlg.show(); + var defFileName = me.defFileName + ((this.cmbMergeTo.getValue() == Asc.c_oAscFileType.PDF) ? '.pdf' : '.docx'); + if (me.mode.canRequestSaveAs) { + Common.Gateway.requestSaveAs(url, defFileName); + } else { + me._mailMergeDlg = new Common.Views.SaveAsDlg({ + saveFolderUrl: me.mode.mergeFolderUrl, + saveFileUrl: url, + defFileName: defFileName + }); + me._mailMergeDlg.on('saveasfolder', function(obj, folder){ // save last folder + }).on('saveaserror', function(obj, err){ // save last folder + var config = { + closable: false, + title: me.notcriticalErrorTitle, + msg: err, + iconCls: 'warn', + buttons: ['ok'], + callback: function(btn){ + me.fireEvent('editcomplete', me); + } + }; + Common.UI.alert(config); + }).on('close', function(obj){ + me._mailMergeDlg = undefined; + }); + me._mailMergeDlg.show(); + } } }, @@ -773,7 +771,7 @@ define([ onCmbMergeToSelect: function(combo, record) { var mergeVisible = (record.value == Asc.c_oAscFileType.HTML); this.btnMerge.setVisible(mergeVisible); - this.btnPortal.setVisible(!mergeVisible && this.mode.mergeFolderUrl); + this.btnPortal.setVisible(!mergeVisible && (this.mode.canRequestSaveAs || this.mode.mergeFolderUrl)); this.btnDownload.setVisible(!mergeVisible); }, @@ -783,9 +781,9 @@ define([ disableControls: function(disable) { if (this._initSettings) return; - + this.lockControls(DE.enumLockMM.lostConnect, disable, { - array: _.union([this.btnEditData, this.btnInsField, this.chHighlight], (this.mode.mergeFolderUrl) ? [this.btnPortal] : []), + array: _.union([this.btnEditData, this.btnInsField, this.chHighlight], (this.mode.canRequestSaveAs || this.mode.mergeFolderUrl) ? [this.btnPortal] : []), merge: true }); }, @@ -833,42 +831,7 @@ define([ }, lockControls: function(causes, lock, opts) { - !opts && (opts = {}); - - var controls = opts.array || this.emptyDBControls; - opts.merge && (controls = _.union(this.emptyDBControls,controls)); - - function doLock(cmp, cause) { - if ( _.contains(cmp.options.lock, cause) ) { - var index = cmp.keepState.indexOf(cause); - if (lock) { - if (index < 0) { - cmp.keepState.push(cause); - } - } else { - if (!(index < 0)) { - cmp.keepState.splice(index, 1); - } - } - } - } - - _.each(controls, function(item) { - if (_.isFunction(item.setDisabled)) { - !item.keepState && (item.keepState = []); - if (opts.clear && opts.clear.length > 0 && item.keepState.length > 0) { - item.keepState = _.difference(item.keepState, opts.clear); - } - - _.isArray(causes) ? _.each(causes, function(c) {doLock(item, c)}) : doLock(item, causes); - - if (!(item.keepState.length > 0)) { - item.isDisabled() && item.setDisabled(false); - } else { - !item.isDisabled() && item.setDisabled(true); - } - } - }); + Common.Utils.lockControls(causes, lock, opts, this.emptyDBControls); }, textDataSource: 'Data Source', diff --git a/apps/documenteditor/main/app/view/NoteSettingsDialog.js b/apps/documenteditor/main/app/view/NoteSettingsDialog.js index 9a3f841b4..e5571e63e 100644 --- a/apps/documenteditor/main/app/view/NoteSettingsDialog.js +++ b/apps/documenteditor/main/app/view/NoteSettingsDialog.js @@ -123,7 +123,7 @@ define([ '', '' ].join('') @@ -271,17 +271,17 @@ define([ }, onDlgBtnClick: function(event) { - var me = this; - var state = (typeof(event) == 'object') ? event.currentTarget.attributes['result'].value : event; - if (state == 'insert' || state == 'apply') { - this.handler && this.handler.call(this, state, (state == 'insert' || state == 'apply') ? this.getSettings() : undefined); - } - - this.close(); + this._handleInput((typeof(event) == 'object') ? event.currentTarget.attributes['result'].value : event); }, onPrimary: function() { - return true; + this._handleInput('insert'); + return false; + }, + + _handleInput: function(state) { + this.handler && this.handler.call(this, state, (state == 'insert' || state == 'apply') ? this.getSettings() : undefined); + this.close(); }, onFormatSelect: function(combo, record) { diff --git a/apps/documenteditor/main/app/view/ParagraphSettings.js b/apps/documenteditor/main/app/view/ParagraphSettings.js index e9e931b85..1814951ca 100644 --- a/apps/documenteditor/main/app/view/ParagraphSettings.js +++ b/apps/documenteditor/main/app/view/ParagraphSettings.js @@ -183,8 +183,9 @@ define([ setApi: function(api) { this.api = api; - if (this.api) + if (this.api) { this.api.asc_registerCallback('asc_onParaSpacingLine', _.bind(this._onLineSpacing, this)); + } return this; }, diff --git a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js index dfa5b1de4..243acbb1a 100644 --- a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js @@ -51,17 +51,19 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem DE.Views.ParagraphSettingsAdvanced = Common.Views.AdvancedSettingsWindow.extend(_.extend({ options: { - contentWidth: 335, + contentWidth: 370, height: 394, toggleGroup: 'paragraph-adv-settings-group', storageName: 'de-para-settings-adv-category' }, initialize : function(options) { + var me = this; _.extend(this.options, { title: this.textTitle, items: [ {panelId: 'id-adv-paragraph-indents', panelCaption: this.strParagraphIndents}, + {panelId: 'id-adv-paragraph-line', panelCaption: this.strParagraphLine}, {panelId: 'id-adv-paragraph-borders', panelCaption: this.strBorders}, {panelId: 'id-adv-paragraph-font', panelCaption: this.strParagraphFont}, {panelId: 'id-adv-paragraph-tabs', panelCaption: this.strTabs}, @@ -84,6 +86,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.Margins = undefined; this.FirstLine = undefined; this.LeftIndent = undefined; + this.Spacing = null; this.spinners = []; this.tableStylerRows = this.options.tableStylerRows; @@ -92,6 +95,55 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.api = this.options.api; this._originalProps = new Asc.asc_CParagraphProperty(this.options.paragraphProps); this.isChart = this.options.isChart; + + this.CurLineRuleIdx = this._originalProps.get_Spacing().get_LineRule(); + + this._arrLineRule = [ + {displayValue: this.textAtLeast,defaultValue: 5, value: c_paragraphLinerule.LINERULE_LEAST, minValue: 0.03, step: 0.01, defaultUnit: 'cm'}, + {displayValue: this.textAuto, defaultValue: 1, value: c_paragraphLinerule.LINERULE_AUTO, minValue: 0.5, step: 0.01, defaultUnit: ''}, + {displayValue: this.textExact, defaultValue: 5, value: c_paragraphLinerule.LINERULE_EXACT, minValue: 0.03, step: 0.01, defaultUnit: 'cm'} + ]; + + this._arrSpecial = [ + {displayValue: this.textNoneSpecial, value: c_paragraphSpecial.NONE_SPECIAL, defaultValue: 0}, + {displayValue: this.textFirstLine, value: c_paragraphSpecial.FIRST_LINE, defaultValue: 12.7}, + {displayValue: this.textHanging, value: c_paragraphSpecial.HANGING, defaultValue: 12.7} + ]; + this.CurSpecial = undefined; + + this._arrTextAlignment = [ + {displayValue: this.textTabLeft, value: c_paragraphTextAlignment.LEFT}, + {displayValue: this.textTabCenter, value: c_paragraphTextAlignment.CENTERED}, + {displayValue: this.textTabRight, value: c_paragraphTextAlignment.RIGHT}, + {displayValue: this.textJustified, value: c_paragraphTextAlignment.JUSTIFIED} + ]; + + this._arrOutlinelevel = [{displayValue: this.textBodyText, value: -1}]; + for (var i=0; i<9; i++) { + this._arrOutlinelevel.push({displayValue: this.textLevel + ' ' + (i+1), value: i}); + } + + this._arrTabAlign = [ + { value: 1, displayValue: this.textTabLeft }, + { value: 3, displayValue: this.textTabCenter }, + { value: 2, displayValue: this.textTabRight } + ]; + this._arrKeyTabAlign = []; + this._arrTabAlign.forEach(function(item) { + me._arrKeyTabAlign[item.value] = item.displayValue; + }); + + this._arrTabLeader = [ + { value: Asc.c_oAscTabLeader.None, displayValue: this.textNone }, + { value: Asc.c_oAscTabLeader.Dot, displayValue: '....................' }, + { value: Asc.c_oAscTabLeader.Hyphen, displayValue: '-----------------' }, + { value: Asc.c_oAscTabLeader.MiddleDot, displayValue: '·················' }, + { value: Asc.c_oAscTabLeader.Underscore,displayValue: '__________' } + ]; + this._arrKeyTabLeader = []; + this._arrTabLeader.forEach(function(item) { + me._arrKeyTabLeader[item.value] = item.displayValue; + }); }, render: function() { @@ -101,25 +153,6 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem // Indents & Placement - this.numFirstLine = new Common.UI.MetricSpinner({ - el: $('#paragraphadv-spin-first-line'), - step: .1, - width: 85, - defaultUnit : "cm", - defaultValue : 0, - value: '0 cm', - maxValue: 55.87, - minValue: -55.87 - }); - this.numFirstLine.on('change', _.bind(function(field, newValue, oldValue, eOpts){ - if (this._changedProps) { - if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined) - this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); - this._changedProps.get_Ind().put_FirstLine(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - } - }, this)); - this.spinners.push(this.numFirstLine); - this.numIndentsLeft = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-indent-left'), step: .1, @@ -158,6 +191,121 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem }, this)); this.spinners.push(this.numIndentsRight); + this.numSpacingBefore = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-before'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingBefore.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.Before = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingBefore); + + this.numSpacingAfter = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-after'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingAfter.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.After = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingAfter); + + this.cmbLineRule = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-line-rule'), + cls: 'input-group-nr', + editable: false, + data: this._arrLineRule, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbLineRule.setValue(this.CurLineRuleIdx); + this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this)); + + this.numLineHeight = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-line-height'), + step: .01, + width: 85, + value: '', + defaultUnit : "", + maxValue: 132, + minValue: 0.5 + }); + this.spinners.push(this.numLineHeight); + this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this)); + + this.chAddInterval = new Common.UI.CheckBox({ + el: $('#paragraphadv-checkbox-add-interval'), + labelText: this.strSomeParagraphSpace + }); + + this.cmbSpecial = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-special'), + cls: 'input-group-nr', + editable: false, + data: this._arrSpecial, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbSpecial.setValue(''); + this.cmbSpecial.on('selected', _.bind(this.onSpecialSelect, this)); + + this.numSpecialBy = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-special-by'), + step: .1, + width: 85, + defaultUnit : "cm", + defaultValue : 0, + value: '0 cm', + maxValue: 55.87, + minValue: 0 + }); + this.spinners.push(this.numSpecialBy); + this.numSpecialBy.on('change', _.bind(this.onFirstLineChange, this)); + + this.cmbTextAlignment = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-text-alignment'), + cls: 'input-group-nr', + editable: false, + data: this._arrTextAlignment, + style: 'width: 173px;', + menuStyle : 'min-width: 173px;' + }); + this.cmbTextAlignment.setValue(''); + + this.cmbOutlinelevel = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-outline-level'), + cls: 'input-group-nr', + editable: false, + data: this._arrOutlinelevel, + style: 'width: 174px;', + menuStyle : 'min-width: 174px;' + }); + this.cmbOutlinelevel.setValue(-1); + this.cmbOutlinelevel.on('selected', _.bind(this.onOutlinelevelSelect, this)); + + // Line & Page Breaks + this.chBreakBefore = new Common.UI.CheckBox({ el: $('#paragraphadv-checkbox-break-before'), labelText: this.strBreakBefore @@ -326,7 +474,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.numSpacing = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-spacing'), step: .01, - width: 100, + width: 90, defaultUnit : "cm", defaultValue : 0, value: '0 cm', @@ -348,7 +496,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.numPosition = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-position'), step: .01, - width: 100, + width: 90, defaultUnit : "cm", defaultValue : 0, value: '0 cm', @@ -371,7 +519,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.numTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-tab'), step: .1, - width: 180, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -382,7 +530,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.numDefaultTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-default-tab'), step: .1, - width: 107, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -398,7 +546,15 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.tabList = new Common.UI.ListView({ el: $('#paraadv-list-tabs'), emptyText: this.noTabs, - store: new Common.UI.DataViewStore() + store: new Common.UI.DataViewStore(), + template: _.template(['
      '].join('')), + itemTemplate: _.template([ + '
      ', + '
      <%= value %>
      ', + '
      <%= displayTabAlign %>
      ', + '
      <%= displayTabLeader %>
      ', + '
      ' + ].join('')) }); this.tabList.store.comparator = function(rec) { return rec.get("tabPos"); @@ -415,31 +571,21 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.cmbAlign = new Common.UI.ComboBox({ el : $('#paraadv-cmb-align'), - style : 'width: 85px;', - menuStyle : 'min-width: 85px;', + style : 'width: 108px;', + menuStyle : 'min-width: 108px;', editable : false, cls : 'input-group-nr', - data : [ - { value: 1, displayValue: this.textTabLeft }, - { value: 3, displayValue: this.textTabCenter }, - { value: 2, displayValue: this.textTabRight } - ] + data : this._arrTabAlign }); this.cmbAlign.setValue(1); this.cmbLeader = new Common.UI.ComboBox({ el : $('#paraadv-cmb-leader'), - style : 'width: 85px;', - menuStyle : 'min-width: 85px;', + style : 'width: 108px;', + menuStyle : 'min-width: 108px;', editable : false, cls : 'input-group-nr', - data : [ - { value: Asc.c_oAscTabLeader.None, displayValue: this.textNone }, - { value: Asc.c_oAscTabLeader.Dot, displayValue: '....................' }, - { value: Asc.c_oAscTabLeader.Hyphen, displayValue: '-----------------' }, - { value: Asc.c_oAscTabLeader.MiddleDot, displayValue: '·················' }, - { value: Asc.c_oAscTabLeader.Underscore,displayValue: '__________' } - ] + data : this._arrTabLeader }); this.cmbLeader.setValue(Asc.c_oAscTabLeader.None); @@ -600,6 +746,16 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem } } + if (this.Spacing !== null) { + this._changedProps.asc_putSpacing(this.Spacing); + } + + var spaceBetweenPrg = this.chAddInterval.getValue(); + this._changedProps.asc_putContextualSpacing(spaceBetweenPrg == 'checked'); + + var horizontalAlign = this.cmbTextAlignment.getValue(); + this._changedProps.asc_putJc((horizontalAlign !== undefined && horizontalAlign !== null) ? horizontalAlign : c_paragraphTextAlignment.LEFT); + return { paragraphProps: this._changedProps, borderProps: {borderSize: this.BorderSize, borderColor: this.btnBorderColor.color} }; }, @@ -610,13 +766,34 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.hideTextOnlySettings(this.isChart); this.FirstLine = (props.get_Ind() !== null) ? props.get_Ind().get_FirstLine() : null; - this.numFirstLine.setValue(this.FirstLine!== null ? Common.Utils.Metric.fnRecalcFromMM(this.FirstLine) : '', true); this.LeftIndent = (props.get_Ind() !== null) ? props.get_Ind().get_Left() : null; if (this.FirstLine<0 && this.LeftIndent !== null) this.LeftIndent = this.LeftIndent + this.FirstLine; this.numIndentsLeft.setValue(this.LeftIndent!==null ? Common.Utils.Metric.fnRecalcFromMM(this.LeftIndent) : '', true); this.numIndentsRight.setValue((props.get_Ind() !== null && props.get_Ind().get_Right() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Ind().get_Right()) : '', true); + this.numSpacingBefore.setValue((props.get_Spacing() !== null && props.get_Spacing().get_Before() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_Before()) : '', true); + this.numSpacingAfter.setValue((props.get_Spacing() !== null && props.get_Spacing().get_After() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_After()) : '', true); + + var linerule = props.get_Spacing().get_LineRule(); + this.cmbLineRule.setValue((linerule !== null) ? linerule : '', true); + + if(props.get_Spacing() !== null && props.get_Spacing().get_Line() !== null) { + this.numLineHeight.setValue((linerule==c_paragraphLinerule.LINERULE_AUTO) ? props.get_Spacing().get_Line() : Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_Line()), true); + } else { + this.numLineHeight.setValue('', true); + } + + this.chAddInterval.setValue((props.get_ContextualSpacing() !== null && props.get_ContextualSpacing() !== undefined) ? props.get_ContextualSpacing() : 'indeterminate', true); + + if(this.CurSpecial === undefined) { + this.CurSpecial = (props.get_Ind().get_FirstLine() === 0) ? c_paragraphSpecial.NONE_SPECIAL : ((props.get_Ind().get_FirstLine() > 0) ? c_paragraphSpecial.FIRST_LINE : c_paragraphSpecial.HANGING); + } + this.cmbSpecial.setValue(this.CurSpecial); + this.numSpecialBy.setValue(this.FirstLine!== null ? Math.abs(Common.Utils.Metric.fnRecalcFromMM(this.FirstLine)) : '', true); + + this.cmbTextAlignment.setValue((props.get_Jc() !== undefined && props.get_Jc() !== null) ? props.get_Jc() : c_paragraphTextAlignment.LEFT, true); + this.chKeepLines.setValue((props.get_KeepLines() !== null && props.get_KeepLines() !== undefined) ? props.get_KeepLines() : 'indeterminate', true); this.chBreakBefore.setValue((props.get_PageBreakBefore() !== null && props.get_PageBreakBefore() !== undefined) ? props.get_PageBreakBefore() : 'indeterminate', true); @@ -702,7 +879,9 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem tabPos: pos, value: parseFloat(pos.toFixed(3)) + ' ' + Common.Utils.Metric.getCurrentMetricName(), tabAlign: tab.get_Value(), - tabLeader: tab.asc_getLeader() + tabLeader: tab.get_Leader(), + displayTabLeader: this._arrKeyTabLeader[tab.get_Leader()], + displayTabAlign: this._arrKeyTabAlign[tab.get_Value()] }); arr.push(rec); } @@ -711,6 +890,9 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.tabList.selectByIndex(0); } + this.cmbOutlinelevel.setValue((props.get_OutlineLvl() === undefined || props.get_OutlineLvl()===null) ? -1 : props.get_OutlineLvl()); + this.cmbOutlinelevel.setDisabled(!!props.get_OutlineLvlStyle()); + this._noApply = false; this._changedProps = new Asc.asc_CParagraphProperty(); @@ -723,13 +905,19 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem for (var i=0; i0) { + if (rec) { var store = this.tabList.store; - var idx = _.indexOf(store.models, rec[0]); - store.remove(rec[0]); + var idx = _.indexOf(store.models, rec); + store.remove(rec); if (idx>store.length-1) idx = store.length-1; if (store.length>0) { this.tabList.selectByIndex(idx); @@ -1158,15 +1352,91 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem hideTextOnlySettings: function(value) { this.TextOnlySettings.toggleClass('hidden', value==true); - this.btnsCategory[1].setVisible(!value); // Borders - this.btnsCategory[4].setVisible(!value); // Paddings + this.btnsCategory[1].setVisible(!value); // Line & Page Breaks + this.btnsCategory[2].setVisible(!value); // Borders + this.btnsCategory[5].setVisible(!value); // Paddings + }, + + onLineRuleSelect: function(combo, record) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.LineRule = record.value; + if ( this.CurLineRuleIdx !== this.Spacing.LineRule ) { + this.numLineHeight.setDefaultUnit(this._arrLineRule[record.value].defaultUnit); + this.numLineHeight.setMinValue(this._arrLineRule[record.value].minValue); + this.numLineHeight.setStep(this._arrLineRule[record.value].step); + var value = this.numLineHeight.getNumberValue(); + if (this.Spacing.LineRule === c_paragraphLinerule.LINERULE_AUTO) { + this.numLineHeight.setValue(this._arrLineRule[record.value].defaultValue); + } else if (this.CurLineRuleIdx === c_paragraphLinerule.LINERULE_AUTO) { + this.numLineHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(this._arrLineRule[record.value].defaultValue)); + } else { + this.numLineHeight.setValue(value); + } + this.CurLineRuleIdx = record.value; + } + }, + + onNumLineHeightChange: function(field, newValue, oldValue, eOpts) { + if ( this.cmbLineRule.getRawValue() === '' ) + return; + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.Line = (this.cmbLineRule.getValue()==c_paragraphLinerule.LINERULE_AUTO) ? field.getNumberValue() : Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, + + onSpecialSelect: function(combo, record) { + this.CurSpecial = record.value; + if (this.CurSpecial === c_paragraphSpecial.NONE_SPECIAL) { + this.numSpecialBy.setValue(0, true); + } + if (this._changedProps) { + if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined) + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + var value = Common.Utils.Metric.fnRecalcToMM(this.numSpecialBy.getNumberValue()); + if (value === 0) { + this.numSpecialBy.setValue(Common.Utils.Metric.fnRecalcFromMM(this._arrSpecial[record.value].defaultValue), true); + value = this._arrSpecial[record.value].defaultValue; + } + if (this.CurSpecial === c_paragraphSpecial.HANGING) { + value = -value; + } + this._changedProps.get_Ind().put_FirstLine(value); + } + }, + + onFirstLineChange: function(field, newValue, oldValue, eOpts){ + if (this._changedProps) { + if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined) + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + var value = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + if (this.CurSpecial === c_paragraphSpecial.HANGING) { + value = -value; + } else if (this.CurSpecial === c_paragraphSpecial.NONE_SPECIAL && value > 0 ) { + this.CurSpecial = c_paragraphSpecial.FIRST_LINE; + this.cmbSpecial.setValue(c_paragraphSpecial.FIRST_LINE); + } else if (value === 0) { + this.CurSpecial = c_paragraphSpecial.NONE_SPECIAL; + this.cmbSpecial.setValue(c_paragraphSpecial.NONE_SPECIAL); + } + this._changedProps.get_Ind().put_FirstLine(value); + } + }, + + onOutlinelevelSelect: function(combo, record) { + if (this._changedProps) { + this._changedProps.put_OutlineLvl(record.value>-1 ? record.value: null); + } }, textTitle: 'Paragraph - Advanced Settings', - strIndentsFirstLine: 'First line', strIndentsLeftText: 'Left', strIndentsRightText: 'Right', - strParagraphIndents: 'Indents & Placement', + strParagraphIndents: 'Indents & Spacing', strParagraphPosition: 'Placement', strParagraphFont: 'Font', strBreakBefore: 'Page break before', @@ -1217,6 +1487,26 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem tipOuter: 'Set Outer Border Only', noTabs: 'The specified tabs will appear in this field', textLeader: 'Leader', - textNone: 'None' + textNone: 'None', + strParagraphLine: 'Line & Page Breaks', + strIndentsSpacingBefore: 'Before', + strIndentsSpacingAfter: 'After', + strIndentsLineSpacing: 'Line Spacing', + txtAutoText: 'Auto', + textAuto: 'Multiple', + textAtLeast: 'At least', + textExact: 'Exactly', + strSomeParagraphSpace: 'Don\'t add interval between paragraphs of the same style', + strIndentsSpecial: 'Special', + textNoneSpecial: '(none)', + textFirstLine: 'First line', + textHanging: 'Hanging', + textJustified: 'Justified', + textBodyText: 'Basic Text', + textLevel: 'Level', + strIndentsOutlinelevel: 'Outline level', + strIndent: 'Indents', + strSpacing: 'Spacing' + }, DE.Views.ParagraphSettingsAdvanced || {})); }); \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/RightMenu.js b/apps/documenteditor/main/app/view/RightMenu.js index 6afb0a335..e33266c43 100644 --- a/apps/documenteditor/main/app/view/RightMenu.js +++ b/apps/documenteditor/main/app/view/RightMenu.js @@ -187,7 +187,8 @@ define([ asctype: Common.Utils.documentSettingsType.MailMerge, enableToggle: true, disabled: true, - toggleGroup: 'tabpanelbtnsGroup' + toggleGroup: 'tabpanelbtnsGroup', + allowMouseEventsOnDisabled: true }); this._settings[Common.Utils.documentSettingsType.MailMerge] = {panel: "id-mail-merge-settings", btn: this.btnMailMerge}; @@ -202,7 +203,8 @@ define([ asctype: Common.Utils.documentSettingsType.Signature, enableToggle: true, disabled: true, - toggleGroup: 'tabpanelbtnsGroup' + toggleGroup: 'tabpanelbtnsGroup', + allowMouseEventsOnDisabled: true }); this._settings[Common.Utils.documentSettingsType.Signature] = {panel: "id-signature-settings", btn: this.btnSignature}; diff --git a/apps/documenteditor/main/app/view/ShapeSettings.js b/apps/documenteditor/main/app/view/ShapeSettings.js index ce9931af6..b856e4a8c 100644 --- a/apps/documenteditor/main/app/view/ShapeSettings.js +++ b/apps/documenteditor/main/app/view/ShapeSettings.js @@ -182,6 +182,9 @@ define([ fill.get_fill().put_linear_scale(true); } if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { + this.GradColor.values = [0, 100]; + this.GradColor.colors = [this.GradColor.colors[0], this.GradColor.colors[this.GradColor.colors.length - 1]]; + this.GradColor.currentIdx = 0; var HexColor0 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]).get_color().get_hex(), HexColor1 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1]).get_color().get_hex(); @@ -486,14 +489,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + var arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); } props.put_fill(fill); this.imgprops.put_ShapeProperties(props); @@ -531,14 +542,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + var arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); } props.put_fill(fill); this.imgprops.put_ShapeProperties(props); @@ -826,7 +845,7 @@ define([ this.FGColor = (this.ShapeColor.Color!=='transparent') ? {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color)} : {Value: 1, Color: '000000'}; this.BGColor = {Value: 1, Color: 'ffffff'}; this.GradColor.colors[0] = (this.ShapeColor.Color!=='transparent') ? Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color) : '000000'; - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_BLIP) { fill = fill.get_fill(); this.BlipFillType = fill.get_type(); // null - не совпадают у нескольких фигур @@ -874,7 +893,7 @@ define([ this.OriginalFillType = Asc.c_oAscFill.FILL_TYPE_PATT; this.ShapeColor = {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color)}; this.GradColor.colors[0] = Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color); - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_GRAD) { fill = fill.get_fill(); var gradfilltype = fill.get_grad_type(); // null - не совпадают у нескольких фигур @@ -905,49 +924,37 @@ define([ } } - var colors = fill.get_colors(); - if (colors && colors.length>0) { - color = colors[0]; + var me = this; + var colors = fill.get_colors(), + positions = fill.get_positions(), + length = colors.length; + this.sldrGradient.setThumbs(length); + if (this.GradColor.colors.length>length) { + this.GradColor.colors.splice(length, this.GradColor.colors.length - length); + this.GradColor.values.splice(length, this.GradColor.colors.length - length); + this.GradColor.currentIdx = 0; + } + colors && colors.forEach(function(color, index) { if (color) { if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[0] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[0]); + me.GradColor.colors[index] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; + Common.Utils.ThemeColor.colorValue2EffectId(me.GradColor.colors[index]); } else { - this.GradColor.colors[0] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); + me.GradColor.colors[index] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); } } else - this.GradColor.colors[0] = '000000'; + me.GradColor.colors[index] = '000000'; - color = colors[1]; - if (color) { - if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[1] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[1]); - } else { - this.GradColor.colors[1] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); - } - } else - this.GradColor.colors[1] = 'ffffff'; - - } - var positions = fill.get_positions(); - if (positions && positions.length>0) { - var position = positions[0]; + var position = positions[index]; if (position!==null) { position = position/1000; - this.GradColor.values[0] = position; - } - - position = positions[1]; - if (position!==null) { - position = position/1000; - this.GradColor.values[1] = position; + me.GradColor.values[index] = position; } + }); + for (var index=0; index') + itemTemplate: _.template('
      ') }); mnuTexturePicker.on('item:click', _.bind(this.onSelectTexture, this)); } @@ -1584,6 +1600,16 @@ define([ this.fireEvent('editcomplete', this); }, + onCheckShadow: function(field, newValue, oldValue, eOpts) { + if (this.api) { + var props = new Asc.asc_CShapeProperty(); + props.asc_putShadow((field.getValue()=='checked') ? new Asc.asc_CShadowProperty() : null); + this.imgprops.put_ShapeProperties(props); + this.api.ImgApply(this.imgprops); + } + this.fireEvent('editcomplete', this); + }, + fillAutoShapes: function() { var me = this, shapesStore = this.application.getCollection('ShapeGroups'); @@ -1612,7 +1638,7 @@ define([ store: store, parentMenu: menuItem.menu, showLast: false, - itemTemplate: _.template('
      ') + itemTemplate: _.template('
      \">
      ') }); shapePicker.on('item:click', function(picker, item, record, e) { @@ -1844,9 +1870,10 @@ define([ textRotation: 'Rotation', textRotate90: 'Rotate 90°', textFlip: 'Flip', - textHint270: 'Rotate Left 90°', - textHint90: 'Rotate Right 90°', + textHint270: 'Rotate 90° Counterclockwise', + textHint90: 'Rotate 90° Clockwise', textHintFlipV: 'Flip Vertically', - textHintFlipH: 'Flip Horizontally' + textHintFlipH: 'Flip Horizontally', + strShadow: 'Show shadow' }, DE.Views.ShapeSettings || {})); }); diff --git a/apps/documenteditor/main/app/view/Statusbar.js b/apps/documenteditor/main/app/view/Statusbar.js index 76787407c..f8131e80d 100644 --- a/apps/documenteditor/main/app/view/Statusbar.js +++ b/apps/documenteditor/main/app/view/Statusbar.js @@ -231,24 +231,15 @@ define([ this.langMenu = new Common.UI.Menu({ cls: 'lang-menu', style: 'margin-top:-5px;', - maxHeight: 300, - restoreHeight: 300, + restoreHeight: 285, itemTemplate: _.template([ '', '', '<%= caption %>', '' ].join('')), - menuAlign: 'bl-tl' - }).on('show:before', function (mnu) { - if (!this.scroller) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength: 30, - alwaysVisibleY: true - }); - } + menuAlign: 'bl-tl', + search: true }); this.zoomMenu = new Common.UI.Menu({ @@ -373,12 +364,13 @@ define([ this.langMenu.prevTip = info.value; - var index = $parent.find('ul li a:contains("'+info.displayValue+'")').parent().index(); - if (index < 0) { + var lang = _.find(this.langMenu.items, function(item) { return item.caption == info.displayValue; }); + if (lang) + lang.setChecked(true); + else { this.langMenu.saved = info.displayValue; this.langMenu.clearAll(); - } else - this.langMenu.items[index].setChecked(true); + } } }, diff --git a/apps/documenteditor/main/app/view/StyleTitleDialog.js b/apps/documenteditor/main/app/view/StyleTitleDialog.js index 9a0deabee..238efe689 100644 --- a/apps/documenteditor/main/app/view/StyleTitleDialog.js +++ b/apps/documenteditor/main/app/view/StyleTitleDialog.js @@ -71,6 +71,7 @@ define([ ].join(''); this.options.tpl = _.template(this.template)(this.options); + this.options.formats = this.options.formats || []; Common.UI.Window.prototype.initialize.call(this, this.options); }, @@ -100,6 +101,7 @@ define([ $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + this.options.formats.unshift({value: -1, displayValue: this.txtSameAs}); this.cmbNextStyle = new Common.UI.ComboBox({ el : $('#id-dlg-style-next-par'), style : 'width: 100%;', @@ -109,8 +111,7 @@ define([ data : this.options.formats, disabled : (this.options.formats.length==0) }); - if (this.options.formats.length>0) - this.cmbNextStyle.setValue(this.options.formats[0].value); + this.cmbNextStyle.setValue(-1); }, show: function() { @@ -128,8 +129,8 @@ define([ }, getNextStyle: function () { - var me = this; - return (me.options.formats.length>0) ? me.cmbNextStyle.getValue() : null; + var val = this.cmbNextStyle.getValue(); + return (val!=-1) ? val : null; }, onBtnClick: function(event) { @@ -161,7 +162,8 @@ define([ textHeader: 'Create New Style', txtEmpty: 'This field is required', txtNotEmpty: 'Field must not be empty', - textNextStyle: 'Next paragraph style' + textNextStyle: 'Next paragraph style', + txtSameAs: 'Same as created new style' }, DE.Views.StyleTitleDialog || {})) diff --git a/apps/documenteditor/main/app/view/TableSettings.js b/apps/documenteditor/main/app/view/TableSettings.js index 128ccf110..ad1d1f911 100644 --- a/apps/documenteditor/main/app/view/TableSettings.js +++ b/apps/documenteditor/main/app/view/TableSettings.js @@ -473,7 +473,7 @@ define([ if (this._isTemplatesChanged) { if (rec) - this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.getSelectedRec()[0],true); + this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.getSelectedRec(),true); else this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.store.at(0), true); } @@ -712,16 +712,17 @@ define([ if (count>0 && count==Templates.length) { var data = self.cmbTableTemplate.menuPicker.store.models; _.each(Templates, function(template, index){ - data[index].set('imageUrl', template.get_Image()); + data[index].set('imageUrl', template.asc_getImage()); }); } else { self.cmbTableTemplate.menuPicker.store.reset([]); var arr = []; _.each(Templates, function(template){ arr.push({ - imageUrl: template.get_Image(), + imageUrl: template.asc_getImage(), id : Common.UI.getId(), - templateId: template.get_Id() + templateId: template.asc_getId(), + tip : template.asc_getDisplayName() }); }); self.cmbTableTemplate.menuPicker.store.add(arr); diff --git a/apps/documenteditor/main/app/view/TextArtSettings.js b/apps/documenteditor/main/app/view/TextArtSettings.js index 4a4acdd9b..663bd9537 100644 --- a/apps/documenteditor/main/app/view/TextArtSettings.js +++ b/apps/documenteditor/main/app/view/TextArtSettings.js @@ -153,6 +153,9 @@ define([ fill.get_fill().put_linear_scale(true); } if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { + this.GradColor.values = [0, 100]; + this.GradColor.colors = [this.GradColor.colors[0], this.GradColor.colors[this.GradColor.colors.length - 1]]; + this.GradColor.currentIdx = 0; var HexColor0 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]).get_color().get_hex(), HexColor1 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1]).get_color().get_hex(); @@ -352,14 +355,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + var arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); } props.asc_putFill(fill); this.shapeprops.put_TextArtProperties(props); @@ -397,14 +408,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + var arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); } props.asc_putFill(fill); this.shapeprops.put_TextArtProperties(props); @@ -565,7 +584,7 @@ define([ this.ShapeColor = {Value: 0, Color: 'transparent'}; this.OriginalFillType = Asc.c_oAscFill.FILL_TYPE_SOLID; this.GradColor.colors[0] = (this.ShapeColor.Color!=='transparent') ? Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color) : '000000'; - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_GRAD) { fill = fill.get_fill(); var gradfilltype = fill.get_grad_type(); // null - не совпадают у нескольких фигур @@ -596,49 +615,37 @@ define([ } } - var colors = fill.get_colors(); - if (colors && colors.length>0) { - color = colors[0]; + var me = this; + var colors = fill.get_colors(), + positions = fill.get_positions(), + length = colors.length; + this.sldrGradient.setThumbs(length); + if (this.GradColor.colors.length>length) { + this.GradColor.colors.splice(length, this.GradColor.colors.length - length); + this.GradColor.values.splice(length, this.GradColor.colors.length - length); + this.GradColor.currentIdx = 0; + } + colors && colors.forEach(function(color, index) { if (color) { if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[0] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[0]); + me.GradColor.colors[index] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; + Common.Utils.ThemeColor.colorValue2EffectId(me.GradColor.colors[index]); } else { - this.GradColor.colors[0] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); + me.GradColor.colors[index] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); } } else - this.GradColor.colors[0] = '000000'; + me.GradColor.colors[index] = '000000'; - color = colors[1]; - if (color) { - if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[1] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[1]); - } else { - this.GradColor.colors[1] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); - } - } else - this.GradColor.colors[1] = 'ffffff'; - - } - var positions = fill.get_positions(); - if (positions && positions.length>0) { - var position = positions[0]; + var position = positions[index]; if (position!==null) { position = position/1000; - this.GradColor.values[0] = position; - } - - position = positions[1]; - if (position!==null) { - position = position/1000; - this.GradColor.values[1] = position; + me.GradColor.values[index] = position; } + }); + for (var index=0; index-1); + this.mnuInsertImage.items[2].setVisible(this.mode.canRequestInsertImage || this.mode.fileChoiceUrl && this.mode.fileChoiceUrl.indexOf("{documentType}")>-1); }, onSendThemeColorSchemes: function (schemas) { @@ -2081,14 +2069,7 @@ define([ if (this.mnuColorSchema == null) { this.mnuColorSchema = new Common.UI.Menu({ - maxHeight: 560, - restoreHeight: 560 - }).on('show:before', function (mnu) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength: 40 - }); + restoreHeight: true }); } this.mnuColorSchema.items = []; @@ -2116,15 +2097,17 @@ define([ this.mnuColorSchema.addItem({ caption: '--' }); - } else { - this.mnuColorSchema.addItem({ - template: itemTemplate, - cls: 'color-schemas-menu', - colors: schemecolors, - caption: (index < 21) ? (me.SchemeNames[index] || schema.get_name()) : schema.get_name(), - value: index - }); } + var name = schema.get_name(); + this.mnuColorSchema.addItem({ + template: itemTemplate, + cls: 'color-schemas-menu', + colors: schemecolors, + caption: (index < 21) ? (me.SchemeNames[index] || name) : name, + value: name, + checkable: true, + toggleGroup: 'menuSchema' + }); }, this); }, @@ -2297,7 +2280,7 @@ define([ textTitleError: 'Error', textInsertPageNumber: 'Insert page number', textToCurrent: 'To Current Position', - tipEditHeader: 'Edit Document Header or Footer', + tipEditHeader: 'Edit header or footer', mniEditHeader: 'Edit Document Header', mniEditFooter: 'Edit Document Footer', mniHiddenChars: 'Nonprinting Characters', @@ -2396,7 +2379,7 @@ define([ capBtnInsTextart: 'Text Art', capBtnInsDropcap: 'Drop Cap', capBtnInsEquation: 'Equation', - capBtnInsHeader: 'Headers/Footers', + capBtnInsHeader: 'Header/Footer', capBtnColumns: 'Columns', capBtnPageOrient: 'Orientation', capBtnMargins: 'Margins', @@ -2432,7 +2415,11 @@ define([ txtDistribVert: 'Distribute Vertically', txtPageAlign: 'Align to Page', txtMarginAlign: 'Align to Margin', - txtObjectsAlign: 'Align Selected Objects' + txtObjectsAlign: 'Align Selected Objects', + capBtnWatermark: 'Watermark', + textEditWatermark: 'Custom Watermark', + textRemWatermark: 'Remove Watermark', + tipWatermark: 'Edit watermark' } })(), DE.Views.Toolbar || {})); }); diff --git a/apps/documenteditor/main/app/view/WatermarkSettingsDialog.js b/apps/documenteditor/main/app/view/WatermarkSettingsDialog.js new file mode 100644 index 000000000..e4174cfc5 --- /dev/null +++ b/apps/documenteditor/main/app/view/WatermarkSettingsDialog.js @@ -0,0 +1,677 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ + +/** + * WatermarkSettingsDialog.js.js + * + * Created by Julia Radzhabova on 04.04.2019 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +define(['text!documenteditor/main/app/template/WatermarkSettings.template', + 'common/main/lib/util/utils', + 'common/main/lib/component/RadioBox', + 'common/main/lib/component/InputField', + 'common/main/lib/view/AdvancedSettingsWindow' +], function (template) { 'use strict'; + + DE.Views.WatermarkText = new(function() { + var langs; + var _get = function() { + return langs; + }; + var _load = function(callback) { + langs = []; + Common.Utils.loadConfig('resources/watermark/wm-text.json', function (langJson) { + for (var lang in langJson) { + var val = Common.util.LanguageInfo.getLocalLanguageCode(lang); + if (val) { + langs.push({code: val, name: Common.util.LanguageInfo.getLocalLanguageName(val)[1], shortname: Common.util.LanguageInfo.getLocalLanguageName(val)[0], text: langJson[lang]}); + } + } + langs.sort(function(a, b) { + if (a.shortname < b.shortname) return -1; + if (a.shortname > b.shortname) return 1; + return 0; + }); + callback && callback(langs); + }); + }; + return { + get: _get, + load: _load + }; + })(); + + DE.Views.WatermarkSettingsDialog = Common.Views.AdvancedSettingsWindow.extend(_.extend({ + options: { + contentWidth: 400, + height: 442 + }, + + initialize : function(options) { + var me = this; + + _.extend(this.options, { + title: this.textTitle, + template: _.template( + [ + '
      ', + '
      ', + '
      ', + template, + '
      ', + '
      ', + '
      ', + '' + ].join('') + )({ + scope: this + }) + }, options); + + this.handler = options.handler; + this.props = options.props; + this.fontStore = options.fontStore; + this.api = options.api; + this.textControls = []; + this.imageControls = []; + this.fontName = 'Arial'; + this.lang = {value: 'en', displayValue: 'English'}; + this.text = ''; + this.isAutoColor = false; + this.isImageLoaded = false; + + Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options); + }, + + render: function() { + Common.Views.AdvancedSettingsWindow.prototype.render.call(this); + var me = this; + + this.radioNone = new Common.UI.RadioBox({ + el: $('#watermark-radio-none'), + name: 'asc-radio-watermark-type', + labelText: this.textNone, + checked: false + }); + this.radioNone.on('change', _.bind(function(field, newValue, eOpts) { + if (newValue) { + // disable text and image + this.props.put_Type(Asc.c_oAscWatermarkType.None); + this.disableControls(Asc.c_oAscWatermarkType.None); + } + }, this)); + + this.radioImage = new Common.UI.RadioBox({ + el: $('#watermark-radio-image'), + name: 'asc-radio-watermark-type', + labelText: this.textImageW, + checked: false + }); + this.radioImage.on('change', _.bind(function(field, newValue, eOpts) { + if (newValue) { + // disable text + this.props.put_Type(Asc.c_oAscWatermarkType.Image); + this.disableControls(Asc.c_oAscWatermarkType.Image); + } + }, this)); + + this.radioText = new Common.UI.RadioBox({ + el: $('#watermark-radio-text'), + name: 'asc-radio-watermark-type', + labelText: this.textTextW, + checked: true + }); + this.radioText.on('change', _.bind(function(field, newValue, eOpts) { + if (newValue) { + // disable image + this.props.put_Type(Asc.c_oAscWatermarkType.Text); + this.disableControls(Asc.c_oAscWatermarkType.Text); + } + }, this)); + + // Image watermark + this.btnFromFile = new Common.UI.Button({ + el: $('#watermark-from-file') + }); + this.btnFromFile.on('click', _.bind(function(btn){ + this.props.showFileDialog(); + }, this)); + this.imageControls.push(this.btnFromFile); + + this.btnFromUrl = new Common.UI.Button({ + el: $('#watermark-from-url') + }); + this.btnFromUrl.on('click', _.bind(this.insertFromUrl, this)); + this.imageControls.push(this.btnFromUrl); + + this._arrScale = [ + {displayValue: this.textAuto, value: -1}, + {displayValue: '500%', value: 500}, + {displayValue: '200%', value: 200}, + {displayValue: '150%', value: 150}, + {displayValue: '100%', value: 100}, + {displayValue: '50%', value: 50} + ]; + this.cmbScale = new Common.UI.ComboBox({ + el : $('#watermark-combo-scale'), + cls : 'input-group-nr', + menuStyle : 'min-width: 90px;', + data : this._arrScale + }).on('selected', _.bind(function(combo, record) { + }, this)); + this.cmbScale.setValue(this._arrScale[0].value); + this.imageControls.push(this.cmbScale); + + // Text watermark + this.cmbLang = new Common.UI.ComboBox({ + el : $('#watermark-combo-lang'), + cls : 'input-group-nr', + editable : false, + menuStyle : 'min-width: 100%;max-height: 210px;', + scrollAlwaysVisible: true, + data : [] + }).on('selected', _.bind(this.onSelectLang, this)); + this.cmbLang.setValue(Common.util.LanguageInfo.getLocalLanguageName(9)[1]);//en + this.textControls.push(this.cmbLang); + + this.cmbText = new Common.UI.ComboBox({ + el : $('#watermark-combo-text'), + cls : 'input-group-nr', + menuStyle : 'min-width: 100%;max-height: 210px;', + scrollAlwaysVisible: true, + displayField: 'value', + data : [{value: "ASAP"}, {value: "CONFIDENTIAL"}, {value: "COPY"}, {value: "DO NOT COPY"}, {value: "DRAFT"}, {value: "ORIGINAL"}, {value: "PERSONAL"}, {value: "SAMPLE"}, {value: "TOP SECRET"}, {value: "URGENT"} ] + }).on('selected', _.bind(function(combo, record) { + }, this)); + this.cmbText.setValue(this.cmbText.options.data[0].value); + this.textControls.push(this.cmbText); + + this.cmbFonts = new Common.UI.ComboBoxFonts({ + el : $('#watermark-fonts'), + cls : 'input-group-nr', + style : 'width: 142px;', + menuCls : 'scrollable-menu', + menuStyle : 'min-width: 100%;max-height: 270px;', + store : new Common.Collections.Fonts(), + recent : 0, + hint : this.tipFontName + }).on('selected', _.bind(function(combo, record) { + this.fontName = record.name; + }, this)); + this.textControls.push(this.cmbFonts); + + var data = [ + { value: -1, displayValue: this.textAuto }, + { value: 36, displayValue: "36" }, + { value: 40, displayValue: "40" }, + { value: 44, displayValue: "44" }, + { value: 48, displayValue: "48" }, + { value: 54, displayValue: "54" }, + { value: 60, displayValue: "60" }, + { value: 66, displayValue: "66" }, + { value: 72, displayValue: "72" }, + { value: 80, displayValue: "80" }, + { value: 90, displayValue: "90" }, + { value: 96, displayValue: "96" }, + { value: 105, displayValue: "105" }, + { value: 120, displayValue: "120" }, + { value: 144, displayValue: "144" } + ]; + this.cmbFontSize = new Common.UI.ComboBox({ + el: $('#watermark-font-size'), + cls: 'input-group-nr', + style: 'width: 55px;', + menuCls : 'scrollable-menu', + menuStyle: 'min-width: 55px;max-height: 270px;', + hint: this.tipFontSize, + data: data + }); + this.cmbFontSize.setValue(-1); + this.textControls.push(this.cmbFontSize); + + this.btnBold = new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-bold', + enableToggle: true, + hint: this.textBold + }); + this.btnBold.render($('#watermark-bold')) ; + this.textControls.push(this.btnBold); + + this.btnItalic = new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-italic', + enableToggle: true, + hint: this.textItalic + }); + this.btnItalic.render($('#watermark-italic')) ; + this.textControls.push(this.btnItalic); + + this.btnUnderline = new Common.UI.Button({ + cls : 'btn-toolbar', + iconCls : 'btn-underline', + enableToggle: true, + hint: this.textUnderline + }); + this.btnUnderline.render($('#watermark-underline')) ; + this.textControls.push(this.btnUnderline); + + this.btnStrikeout = new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-strikeout', + enableToggle: true, + hint: this.textStrikeout + }); + this.btnStrikeout.render($('#watermark-strikeout')) ; + this.textControls.push(this.btnStrikeout); + + var initNewColor = function(btn, picker_el) { + if (btn && btn.cmpEl) { + btn.currentColor = '#c0c0c0'; + var colorVal = $('
      '); + $('button:first-child', btn.cmpEl).append(colorVal); + colorVal.css('background-color', btn.currentColor); + var picker = new Common.UI.ThemeColorPalette({ + el: $(picker_el) + }); + } + btn.menu.cmpEl.on('click', picker_el+'-new', _.bind(function() { + picker.addNewColor((typeof(btn.color) == 'object') ? btn.color.color : btn.color); + }, me)); + picker.on('select', _.bind(me.onColorSelect, me)); + return picker; + }; + this.btnTextColor = new Common.UI.Button({ + cls : 'btn-toolbar', + iconCls : 'btn-fontcolor', + hint : this.textColor, + menu : new Common.UI.Menu({ + items: [ + { + id: 'watermark-auto-color', + caption: this.textAuto, + template: _.template('<%= caption %>') + }, + {caption: '--'}, + { template: _.template('
      ') }, + { template: _.template('' + this.textNewColor + '') } + ] + }) + }); + this.btnTextColor.render($('#watermark-textcolor')); + this.mnuTextColorPicker = initNewColor(this.btnTextColor, "#watermark-menu-textcolor"); + $('#watermark-auto-color').on('click', _.bind(this.onAutoColor, this)); + this.textControls.push(this.btnTextColor); + + this.chTransparency = new Common.UI.CheckBox({ + el: $('#watermark-chb-transparency'), + labelText: this.textTransparency, + value: true + }); + this.textControls.push(this.chTransparency); + + this.radioDiag = new Common.UI.RadioBox({ + el: $('#watermark-radio-diag'), + name: 'asc-radio-watermark-layout', + labelText: this.textDiagonal, + checked: true + }); + this.textControls.push(this.radioDiag); + + this.radioHor = new Common.UI.RadioBox({ + el: $('#watermark-radio-hor'), + name: 'asc-radio-watermark-layout', + labelText: this.textHor + }); + this.textControls.push(this.radioHor); + + this.btnOk = new Common.UI.Button({ + el: this.$window.find('.primary'), + disabled: true + }); + + this.afterRender(); + }, + + onColorSelect: function(picker, color) { + var clr_item = this.btnTextColor.menu.$el.find('#watermark-auto-color > a'); + clr_item.hasClass('selected') && clr_item.removeClass('selected'); + this.isAutoColor = false; + + var clr = (typeof(color) == 'object') ? color.color : color; + this.btnTextColor.currentColor = color; + $('.btn-color-value-line', this.btnTextColor.cmpEl).css('background-color', '#' + clr); + }, + + updateThemeColors: function() { + this.mnuTextColorPicker.updateColors(Common.Utils.ThemeColor.getEffectColors(), Common.Utils.ThemeColor.getStandartColors()); + }, + + addNewColor: function(picker, btn) { + picker.addNewColor((typeof(btn.color) == 'object') ? btn.color.color : btn.color); + }, + + onAutoColor: function(e) { + var clr_item = this.btnTextColor.menu.$el.find('#watermark-auto-color > a'); + !clr_item.hasClass('selected') && clr_item.addClass('selected'); + this.isAutoColor = true; + + var color = "000"; + this.btnTextColor.currentColor = color; + $('.btn-color-value-line', this.btnTextColor.cmpEl).css('background-color', '#' + color); + this.mnuTextColorPicker.clearSelection(); + }, + + afterRender: function() { + this.cmbFonts.fillFonts(this.fontStore); + this.cmbFonts.selectRecord(this.fontStore.findWhere({name: this.fontName})); + + this.updateThemeColors(); + this._setDefaults(this.props); + + var me = this; + var onApiWMLoaded = function() { + me.isImageLoaded = true; + me.btnOk.setDisabled(false); + }; + this.api.asc_registerCallback('asc_onWatermarkImageLoaded', onApiWMLoaded); + this.on('close', function(obj){ + me.api.asc_unregisterCallback('asc_onWatermarkImageLoaded', onApiWMLoaded); + }); + }, + + show: function() { + Common.Views.AdvancedSettingsWindow.prototype.show.apply(this, arguments); + }, + + loadLanguages: function() { + var me = this; + var callback = function(languages) { + var data = []; + me.languages = languages; + me.languages && me.languages.forEach(function(item) { + data.push({displayValue: item.name, value: item.shortname, wmtext: item.text}); + }); + if (data.length) { + me.cmbLang.setData(data); + me.cmbLang.setValue(me.lang.displayValue); + me.loadWMText(me.lang.value); + me.cmbLang.setDisabled(!me.radioText.getValue()); + me.text && me.cmbText.setValue(me.text); + } else + me.cmbLang.setDisabled(true); + }; + var languages = DE.Views.WatermarkText.get(); + if (languages) + callback(languages); + else + DE.Views.WatermarkText.load(callback); + }, + + onSelectLang: function(combo, record) { + if (!record) return; + + var data = []; + record.wmtext.forEach(function(item) { + data.push({value: item}); + }); + this.lang = record; + if (data.length>0) { + this.cmbText.setData(data); + this.cmbText.setValue(data[0].value); + } + }, + + loadWMText: function(lang) { + if (!lang) return; + + var data = []; + var item = this.cmbLang.store.findWhere({value: lang}); + if (!item) + item = this.cmbLang.store.findWhere({value: lang.split(/[\-\_]/)[0]}); + if (!item) + item = this.cmbLang.store.findWhere({value: 'en'}); + if (!item) + item = this.cmbLang.store.at(0); + + item && item.get('wmtext').forEach(function(item) { + data.push({value: item}); + }); + if (data.length>0) { + this.cmbText.setData(data); + this.cmbText.setValue(data[0].value); + } + }, + + insertFromUrl: function() { + var me = this; + (new Common.Views.ImageFromUrlDialog({ + handler: function(result, value) { + if (result == 'ok') { + var checkUrl = value.replace(/ /g, ''); + if (!_.isEmpty(checkUrl)) { + me.props.put_ImageUrl(checkUrl); + } + } + } + })).show(); + }, + + _setDefaults: function (props) { + this.loadLanguages(); + if (props) { + props.put_DivId('watermark-texture-img'); + props.put_Api(this.api); + + var val, + type = props.get_Type(); + if (type == Asc.c_oAscWatermarkType.None) { + this.radioNone.setValue(true, true); + } else if (type == Asc.c_oAscWatermarkType.Image) { + this.radioImage.setValue(true, true); + this.isImageLoaded = !!props.get_ImageUrl(); + val = props.get_Scale() || -1; + this.cmbScale.setValue((val<0) ? -1 : Math.round(val*100), Math.round(val*100) + ' %'); + } else { + this.radioText.setValue(true, true); + !props.get_IsDiagonal() && this.radioHor.setValue(true); + this.chTransparency.setValue(props.get_Opacity()<255); + + val = props.get_TextPr(); + if (val) { + var lang = Common.util.LanguageInfo.getLocalLanguageName(val.get_Lang()); + this.lang = {value: lang[0], displayValue: lang[1]}; + this.cmbLang.setValue(lang[1]); + this.loadWMText(lang[0]); + + var font = val.get_FontFamily().get_Name(); + if (font) { + var rec = this.cmbFonts.store.findWhere({name: font}); + this.fontName = (rec) ? rec.get('name') : font; + this.cmbFonts.setValue(this.fontName); + } + + this.cmbFontSize.setValue(val.get_FontSize()); + this.btnBold.toggle(val.get_Bold()); + this.btnItalic.toggle(val.get_Italic()); + this.btnUnderline.toggle(val.get_Underline()); + this.btnStrikeout.toggle(val.get_Strikeout()); + var color = val.get_Color(), + clr_item = this.btnTextColor.menu.$el.find('#watermark-auto-color > a'), + clr = "c0c0c0"; + + if (color.get_auto()) { + clr = "000"; + this.isAutoColor = true; + this.mnuTextColorPicker.clearSelection(); + !clr_item.hasClass('selected') && clr_item.addClass('selected'); + } else { + clr_item.hasClass('selected') && clr_item.removeClass('selected'); + if (color) { + color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME ? + clr = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()} : + clr = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); + } + if ( typeof(clr) == 'object' ) { + var isselected = false; + for (var i=0; i<10; i++) { + if ( Common.Utils.ThemeColor.ThemeValues[i] == clr.effectValue ) { + this.mnuTextColorPicker.select(clr,true); + isselected = true; + break; + } + } + if (!isselected) this.mnuTextColorPicker.clearSelection(); + } else { + this.mnuTextColorPicker.select(clr,true); + } + } + this.btnTextColor.currentColor = clr; + $('.btn-color-value-line', this.btnTextColor.cmpEl).css('background-color', '#' + ((typeof(clr) == 'object') ? clr.color : clr)); + } + val = props.get_Text(); + val && this.cmbText.setValue(val); + this.text = val || ''; + } + this.disableControls(type); + } + }, + + getSettings: function () { + var props = this.props; + + var val = this.props.get_Type(); + if (val == Asc.c_oAscWatermarkType.Image) { + val = this.cmbScale.getValue(); + val = props.put_Scale((val<0) ? val : val/100); + } else { + props.put_Text(this.cmbText.getValue()); + props.put_IsDiagonal(this.radioDiag.getValue()); + props.put_Opacity((this.chTransparency.getValue()=='checked') ? 128: 255); + + val = props.get_TextPr() || new Asc.CTextProp(); + if (val) { + val.put_FontSize(this.cmbFontSize.getValue()); + var font = new AscCommon.asc_CTextFontFamily(); + font.put_Name(this.fontName); + font.put_Index(-1); + val.put_FontFamily(font); + val.put_Bold(this.btnBold.pressed); + val.put_Italic(this.btnItalic.pressed); + val.put_Underline(this.btnUnderline.pressed); + val.put_Strikeout(this.btnStrikeout.pressed); + + val.put_Lang(parseInt(Common.util.LanguageInfo.getLocalLanguageCode(this.lang.value))); + + var color = new Asc.asc_CColor(); + if (this.isAutoColor) { + color.put_auto(true); + } else { + color = Common.Utils.ThemeColor.getRgbColor(this.btnTextColor.currentColor); + } + val.put_Color(color); + props.put_TextPr(val); + } + } + + return this.props; + }, + + disableControls: function(type) {// 0 - none, 1 - text, 2 - image + var disable = (type!=Asc.c_oAscWatermarkType.Image); + _.each(this.imageControls, function(item) { + item.setDisabled(disable); + }); + + disable = (type!=Asc.c_oAscWatermarkType.Text); + _.each(this.textControls, function(item) { + item.setDisabled(disable); + }); + this.cmbLang.setDisabled(disable || !this.languages || this.languages.length<1); + this.btnOk.setDisabled(type==Asc.c_oAscWatermarkType.Image && !this.isImageLoaded); + }, + + onDlgBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + onPrimary: function() { + this._handleInput('ok'); + return false; + }, + + _handleInput: function(state) { + if (this.handler) { + if (state == 'ok' && this.btnOk.isDisabled()) { + return; + } + this.handler.call(this, state, this.getSettings()); + } + + this.close(); + }, + + textTitle: 'Watermark Settings', + textNone: 'None', + textImageW: 'Image watermark', + textTextW: 'Text watermark', + textFromUrl: 'From URL', + textFromFile: 'From File', + textScale: 'Scale', + textAuto: 'Auto', + textText: 'Text', + textFont: 'Font', + tipFontName: 'Font Name', + tipFontSize: 'Font Size', + textBold: 'Bold', + textItalic: 'Italic', + textUnderline: 'Underline', + textStrikeout: 'Strikeout', + textTransparency: 'Semitransparent', + textLayout: 'Layout', + textDiagonal: 'Diagonal', + textHor: 'Horizontal', + cancelButtonText: 'Cancel', + okButtonText: 'Ok', + textColor: 'Text color', + textNewColor: 'Add New Custom Color', + textLanguage: 'Language' + + }, DE.Views.WatermarkSettingsDialog || {})) +}); \ No newline at end of file diff --git a/apps/documenteditor/main/index.html b/apps/documenteditor/main/index.html index 487055e52..145a0b453 100644 --- a/apps/documenteditor/main/index.html +++ b/apps/documenteditor/main/index.html @@ -19,7 +19,7 @@ overflow: hidden; border: none; background-color: #f4f4f4; - z-index: 100; + z-index: 1001; } .loader-page { @@ -160,7 +160,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -171,7 +171,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #fff; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -243,6 +243,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; if ( !stopLoading ) document.write( @@ -270,6 +282,7 @@ + diff --git a/apps/documenteditor/main/index.html.deploy b/apps/documenteditor/main/index.html.deploy index 5f23726b8..45faf2f30 100644 --- a/apps/documenteditor/main/index.html.deploy +++ b/apps/documenteditor/main/index.html.deploy @@ -20,7 +20,7 @@ overflow: hidden; border: none; background-color: #f4f4f4; - z-index: 100; + z-index: 1001; } .loader-page { @@ -161,7 +161,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -172,7 +172,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -242,6 +242,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; if ( !stopLoading ) document.write( @@ -301,6 +313,7 @@ +
      diff --git a/apps/documenteditor/main/locale/bg.json b/apps/documenteditor/main/locale/bg.json index ce5b798b6..07d62b2c7 100644 --- a/apps/documenteditor/main/locale/bg.json +++ b/apps/documenteditor/main/locale/bg.json @@ -1,33 +1,32 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Внимание", "Common.Controllers.Chat.textEnterMessage": "Въведете съобщението си тук", - "Common.Controllers.Chat.textUserLimit": "Използвате ONLYOFFICE Free Edition.
      Само двама потребители могат да редактират документа едновременно.
      Искате ли повече? Помислете за закупуване на ONLYOFFICE Enterprise Edition.
      Прочетете повече ", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Анонимен", - "Common.Controllers.ExternalDiagramEditor.textClose": "Близо", + "Common.Controllers.ExternalDiagramEditor.textClose": "Затвори", "Common.Controllers.ExternalDiagramEditor.warningText": "Обектът е деактивиран, защото се редактира от друг потребител.", "Common.Controllers.ExternalDiagramEditor.warningTitle": "Внимание", "Common.Controllers.ExternalMergeEditor.textAnonymous": "Анонимен", - "Common.Controllers.ExternalMergeEditor.textClose": "Близо", + "Common.Controllers.ExternalMergeEditor.textClose": "Затвори", "Common.Controllers.ExternalMergeEditor.warningText": "Обектът е деактивиран, защото се редактира от друг потребител.", "Common.Controllers.ExternalMergeEditor.warningTitle": "Внимание", "Common.Controllers.History.notcriticalErrorTitle": "Внимание", - "Common.Controllers.ReviewChanges.textAtLeast": "Поне", - "Common.Controllers.ReviewChanges.textAuto": "Автоматичен", + "Common.Controllers.ReviewChanges.textAtLeast": "поне", + "Common.Controllers.ReviewChanges.textAuto": "автоматичен", "Common.Controllers.ReviewChanges.textBaseline": "Изходна", "Common.Controllers.ReviewChanges.textBold": "Получер", "Common.Controllers.ReviewChanges.textBreakBefore": "Страницата е прекъсната преди", "Common.Controllers.ReviewChanges.textCaps": "Всички шапки", "Common.Controllers.ReviewChanges.textCenter": "Подравняване в центъра", - "Common.Controllers.ReviewChanges.textChart": "диаграма", + "Common.Controllers.ReviewChanges.textChart": "Диаграма", "Common.Controllers.ReviewChanges.textColor": "Цвят на шрифта", "Common.Controllers.ReviewChanges.textContextual": "Не добавяйте интервал между параграфите от същия стил", "Common.Controllers.ReviewChanges.textDeleted": "Изтрито:", "Common.Controllers.ReviewChanges.textDStrikeout": "Двойно зачертаване", - "Common.Controllers.ReviewChanges.textEquation": "уравнение", + "Common.Controllers.ReviewChanges.textEquation": "Уравнение", "Common.Controllers.ReviewChanges.textExact": "точно", "Common.Controllers.ReviewChanges.textFirstLine": "Първа линия", "Common.Controllers.ReviewChanges.textFontSize": "Размер на шрифта", - "Common.Controllers.ReviewChanges.textFormatted": "форматиран", + "Common.Controllers.ReviewChanges.textFormatted": "Форматиран", "Common.Controllers.ReviewChanges.textHighlight": "Маркирайте цвета", "Common.Controllers.ReviewChanges.textImage": "Изображение", "Common.Controllers.ReviewChanges.textIndentLeft": "Отстъпът наляво", @@ -52,10 +51,10 @@ "Common.Controllers.ReviewChanges.textParaInserted": "Вмъкнат е параграф", "Common.Controllers.ReviewChanges.textParaMoveFromDown": "Преместени надолу:", "Common.Controllers.ReviewChanges.textParaMoveFromUp": "Преместени нагоре:", - "Common.Controllers.ReviewChanges.textParaMoveTo": "<Ь>преместен", - "Common.Controllers.ReviewChanges.textPosition": "позиция", + "Common.Controllers.ReviewChanges.textParaMoveTo": "<Ь>Преместен", + "Common.Controllers.ReviewChanges.textPosition": "Позиция", "Common.Controllers.ReviewChanges.textRight": "Подравняване надясно", - "Common.Controllers.ReviewChanges.textShape": "форма", + "Common.Controllers.ReviewChanges.textShape": "Форма", "Common.Controllers.ReviewChanges.textShd": "Цвят на фона", "Common.Controllers.ReviewChanges.textSmallCaps": "Малки букви", "Common.Controllers.ReviewChanges.textSpacing": "Разстояние", @@ -68,16 +67,16 @@ "Common.Controllers.ReviewChanges.textTableRowsAdd": "Редовете на таблиците се добавят", "Common.Controllers.ReviewChanges.textTableRowsDel": "Таблици са изтрити", "Common.Controllers.ReviewChanges.textTabs": "Промяна на разделите", - "Common.Controllers.ReviewChanges.textUnderline": "подчертавам", + "Common.Controllers.ReviewChanges.textUnderline": "Подчертавам", "Common.Controllers.ReviewChanges.textWidow": "Управление на вдовицата", "Common.UI.ComboBorderSize.txtNoBorders": "Няма граници", "Common.UI.ComboBorderSizeEditable.txtNoBorders": "Няма граници", "Common.UI.ComboDataView.emptyComboText": "Няма стилове", "Common.UI.ExtendedColorDialog.addButtonText": "Добави", "Common.UI.ExtendedColorDialog.cancelButtonText": "Откажи ", - "Common.UI.ExtendedColorDialog.textCurrent": "текущ", + "Common.UI.ExtendedColorDialog.textCurrent": "Текущ", "Common.UI.ExtendedColorDialog.textHexErr": "Въведената стойност е неправилна.
      Моля, въведете стойност между 000000 и FFFFFF.", - "Common.UI.ExtendedColorDialog.textNew": "нов", + "Common.UI.ExtendedColorDialog.textNew": "Нов", "Common.UI.ExtendedColorDialog.textRGBErr": "Въведената стойност е неправилна.
      Въведете числова стойност между 0 и 255.", "Common.UI.HSBColorPicker.textNoColor": "Няма цвят", "Common.UI.SearchDialog.textHighlight": "Маркирайте резултатите", @@ -85,7 +84,7 @@ "Common.UI.SearchDialog.textReplaceDef": "Въведете заместащия текст", "Common.UI.SearchDialog.textSearchStart": "Въведете текст тук", "Common.UI.SearchDialog.textTitle": "Намерете и заменете", - "Common.UI.SearchDialog.textTitle2": "намирам", + "Common.UI.SearchDialog.textTitle2": "Намирам", "Common.UI.SearchDialog.textWholeWords": "Само цели думи", "Common.UI.SearchDialog.txtBtnHideReplace": "Скриване на замяна", "Common.UI.SearchDialog.txtBtnReplace": "Заменете", @@ -95,15 +94,15 @@ "Common.UI.ThemeColorPalette.textStandartColors": "Стандартни цветове", "Common.UI.ThemeColorPalette.textThemeColors": "Цветовете на темата", "Common.UI.Window.cancelButtonText": "Откажи", - "Common.UI.Window.closeButtonText": "Близо", + "Common.UI.Window.closeButtonText": "Затвори", "Common.UI.Window.noButtonText": "Не", "Common.UI.Window.okButtonText": "Добре", - "Common.UI.Window.textConfirmation": "потвърждаване", + "Common.UI.Window.textConfirmation": "Потвърждаване", "Common.UI.Window.textDontShow": "Не показвайте това съобщение отново", "Common.UI.Window.textError": "Грешка", "Common.UI.Window.textInformation": "Информация", "Common.UI.Window.textWarning": "Внимание", - "Common.UI.Window.yesButtonText": "да", + "Common.UI.Window.yesButtonText": "Да", "Common.Utils.Metric.txtCm": "см", "Common.Utils.Metric.txtPt": "pt", "Common.Views.About.txtAddress": "адрес:", @@ -112,37 +111,37 @@ "Common.Views.About.txtMail": "електронна поща:", "Common.Views.About.txtPoweredBy": "Задвижвани от", "Common.Views.About.txtTel": "тел .: ", - "Common.Views.About.txtVersion": "версия ", + "Common.Views.About.txtVersion": "Версия ", "Common.Views.AdvancedSettingsWindow.cancelButtonText": "Откажи", "Common.Views.AdvancedSettingsWindow.okButtonText": "Добре", - "Common.Views.Chat.textSend": "изпращам", + "Common.Views.Chat.textSend": "Изпращам", "Common.Views.Comments.textAdd": "Добави", "Common.Views.Comments.textAddComment": "Добави", - "Common.Views.Comments.textAddCommentToDoc": "Добави Коментар към Документа", + "Common.Views.Comments.textAddCommentToDoc": "Добави коментар към документа", "Common.Views.Comments.textAddReply": "Добави отговор", "Common.Views.Comments.textAnonym": "Гост", "Common.Views.Comments.textCancel": "Откажи", - "Common.Views.Comments.textClose": "Близо", + "Common.Views.Comments.textClose": "Затвори", "Common.Views.Comments.textComments": "Коментари", "Common.Views.Comments.textEdit": "Добре", "Common.Views.Comments.textEnterCommentHint": "Въведете коментара си тук", "Common.Views.Comments.textHintAddComment": "Добави коментар", "Common.Views.Comments.textOpenAgain": "Отвори отново", "Common.Views.Comments.textReply": "Отговор", - "Common.Views.Comments.textResolve": "решение", + "Common.Views.Comments.textResolve": "Решение", "Common.Views.Comments.textResolved": "Решен", "Common.Views.CopyWarningDialog.textDontShow": "Не показвайте това съобщение отново", "Common.Views.CopyWarningDialog.textMsg": "Действия за копиране, извличане и поставяне с помощта на инструментите на ръководителя и действията в контекста на менюто се изпълняват само в този раздел на редактора.

      За да копирате или поставите в или от приложенията на издателите, използвайте следните комбинации от клавиатури:", "Common.Views.CopyWarningDialog.textTitle": "Действия за копиране, изтегляне и поставяне", - "Common.Views.CopyWarningDialog.textToCopy": "за Копиране", + "Common.Views.CopyWarningDialog.textToCopy": "за копиране", "Common.Views.CopyWarningDialog.textToCut": "за изрязване", - "Common.Views.CopyWarningDialog.textToPaste": "за Поставяне", + "Common.Views.CopyWarningDialog.textToPaste": "за поставяне", "Common.Views.DocumentAccessDialog.textLoading": "Зареждане...", "Common.Views.DocumentAccessDialog.textTitle": "Настройки за споделяне", - "Common.Views.ExternalDiagramEditor.textClose": "Близо", + "Common.Views.ExternalDiagramEditor.textClose": "Затвори", "Common.Views.ExternalDiagramEditor.textSave": "Запазване и изход", "Common.Views.ExternalDiagramEditor.textTitle": "Редактор на диаграми", - "Common.Views.ExternalMergeEditor.textClose": "Близо", + "Common.Views.ExternalMergeEditor.textClose": "Затвори", "Common.Views.ExternalMergeEditor.textSave": "Запазване и изход", "Common.Views.ExternalMergeEditor.textTitle": "Получатели на обединяване на поща", "Common.Views.Header.labelCoUsersDescr": "Поставяне на документа да се редактира от няколко потребители.", @@ -160,15 +159,15 @@ "Common.Views.Header.tipDownload": "Свали файл", "Common.Views.Header.tipGoEdit": "Редактиране на текущия файл", "Common.Views.Header.tipPrint": "Печат на файл", - "Common.Views.Header.tipRedo": "ремонтирам", + "Common.Views.Header.tipRedo": "Повтори", "Common.Views.Header.tipSave": "Запази", - "Common.Views.Header.tipUndo": "премахвам", + "Common.Views.Header.tipUndo": "Отмени", "Common.Views.Header.tipViewSettings": "Преглед на настройките", "Common.Views.Header.tipViewUsers": "Преглеждайте потребителите и управлявайте правата за достъп до документи", "Common.Views.Header.txtAccessRights": "Промяна на правото за достъп", - "Common.Views.Header.txtRename": "преименувам", + "Common.Views.Header.txtRename": "Преименувам", "Common.Views.History.textCloseHistory": "Затваряне на историята", - "Common.Views.History.textHide": "колапс", + "Common.Views.History.textHide": "Свиване", "Common.Views.History.textHideAll": "Скриване на подробни промени", "Common.Views.History.textRestore": "Възстанови", "Common.Views.History.textShow": "Разширете", @@ -212,7 +211,7 @@ "Common.Views.Plugins.groupCaption": "Добавки", "Common.Views.Plugins.strPlugins": "Добавки", "Common.Views.Plugins.textLoading": "Зареждане", - "Common.Views.Plugins.textStart": "начало", + "Common.Views.Plugins.textStart": "Начало", "Common.Views.Plugins.textStop": "Спри се", "Common.Views.Protection.hintAddPwd": "Шифроване с парола", "Common.Views.Protection.hintPwd": "Промяна или изтриване на парола", @@ -232,7 +231,7 @@ "Common.Views.ReviewChanges.hintPrev": "Към предишна промяна", "Common.Views.ReviewChanges.strFast": "Бърз", "Common.Views.ReviewChanges.strFastDesc": "Съвместно редактиране в реално време. Всички промени се запазват автоматично.", - "Common.Views.ReviewChanges.strStrict": "стриктен", + "Common.Views.ReviewChanges.strStrict": "Стриктен", "Common.Views.ReviewChanges.strStrictDesc": "Използвайте бутона „Запазване“, за да синхронизирате промените, които правите вие ​​и другите.", "Common.Views.ReviewChanges.tipAcceptCurrent": "Приеми текущата промяна", "Common.Views.ReviewChanges.tipCoAuthMode": "Задайте режим на съвместно редактиране", @@ -244,21 +243,21 @@ "Common.Views.ReviewChanges.tipSetSpelling": "Проверка на правописа", "Common.Views.ReviewChanges.tipSharing": "Управление на правата за достъп до документи", "Common.Views.ReviewChanges.txtAccept": "Приемам", - "Common.Views.ReviewChanges.txtAcceptAll": "Приеми Всички Промени", + "Common.Views.ReviewChanges.txtAcceptAll": "Приеми всички промени", "Common.Views.ReviewChanges.txtAcceptChanges": "Приемане на промените", "Common.Views.ReviewChanges.txtAcceptCurrent": "Приеми текущата промяна", "Common.Views.ReviewChanges.txtChat": "Чат", - "Common.Views.ReviewChanges.txtClose": "Близо", + "Common.Views.ReviewChanges.txtClose": "Затвори", "Common.Views.ReviewChanges.txtCoAuthMode": "Режим на съвместно редактиране", - "Common.Views.ReviewChanges.txtDocLang": "език", - "Common.Views.ReviewChanges.txtFinal": "Всички промени са приети (Визуализация)", + "Common.Views.ReviewChanges.txtDocLang": "Език", + "Common.Views.ReviewChanges.txtFinal": "Всички промени са приети (визуализация)", "Common.Views.ReviewChanges.txtFinalCap": "Финал", "Common.Views.ReviewChanges.txtHistory": "История на версиите", - "Common.Views.ReviewChanges.txtMarkup": "Всички промени (Редактиране)", - "Common.Views.ReviewChanges.txtMarkupCap": "промени", + "Common.Views.ReviewChanges.txtMarkup": "Всички промени (редактиране)", + "Common.Views.ReviewChanges.txtMarkupCap": "Промени", "Common.Views.ReviewChanges.txtNext": "Следващия", "Common.Views.ReviewChanges.txtOriginal": "Всички отхвърлени промени (предварителен преглед)", - "Common.Views.ReviewChanges.txtOriginalCap": "оригинал", + "Common.Views.ReviewChanges.txtOriginalCap": "Оригинал", "Common.Views.ReviewChanges.txtPrev": "Предишен", "Common.Views.ReviewChanges.txtReject": "Отхвърляне", "Common.Views.ReviewChanges.txtRejectAll": "Отхвърляне на всички промени", @@ -270,7 +269,7 @@ "Common.Views.ReviewChanges.txtView": "Режим на дисплея", "Common.Views.ReviewChangesDialog.textTitle": "Прегледайте промените", "Common.Views.ReviewChangesDialog.txtAccept": "Приемам", - "Common.Views.ReviewChangesDialog.txtAcceptAll": "Приеми Всички Промени", + "Common.Views.ReviewChangesDialog.txtAcceptAll": "Приеми всички промени", "Common.Views.ReviewChangesDialog.txtAcceptCurrent": "Приеми текущата промяна", "Common.Views.ReviewChangesDialog.txtNext": "За следващата промяна", "Common.Views.ReviewChangesDialog.txtPrev": "Към предишна промяна", @@ -280,26 +279,26 @@ "Common.Views.ReviewPopover.textAdd": "Добави", "Common.Views.ReviewPopover.textAddReply": "Добави отговор", "Common.Views.ReviewPopover.textCancel": "Откажи", - "Common.Views.ReviewPopover.textClose": "Близо", + "Common.Views.ReviewPopover.textClose": "Затвори", "Common.Views.ReviewPopover.textEdit": "Добре", "Common.Views.ReviewPopover.textFollowMove": "Следвайте хода", "Common.Views.ReviewPopover.textOpenAgain": "Отвори отново", "Common.Views.ReviewPopover.textReply": "Отговор", - "Common.Views.ReviewPopover.textResolve": "решение", + "Common.Views.ReviewPopover.textResolve": "Решение", "Common.Views.SaveAsDlg.textLoading": "Зареждане", "Common.Views.SaveAsDlg.textTitle": "Папка за запис", "Common.Views.SelectFileDlg.textLoading": "Зареждане", - "Common.Views.SelectFileDlg.textTitle": "Изберете Източник на данни", + "Common.Views.SelectFileDlg.textTitle": "Изберете източник на данни", "Common.Views.SignDialog.cancelButtonText": "Откажи", "Common.Views.SignDialog.okButtonText": "Добре", "Common.Views.SignDialog.textBold": "Получер", - "Common.Views.SignDialog.textCertificate": "сертификат", - "Common.Views.SignDialog.textChange": "промяна", + "Common.Views.SignDialog.textCertificate": "Сертификат", + "Common.Views.SignDialog.textChange": "Промяна", "Common.Views.SignDialog.textInputName": "Въведете името на подписалия", "Common.Views.SignDialog.textItalic": "Курсив", "Common.Views.SignDialog.textPurpose": "Цел за подписване на този документ", "Common.Views.SignDialog.textSelect": "Изберете", - "Common.Views.SignDialog.textSelectImage": "Изберете Изображение", + "Common.Views.SignDialog.textSelectImage": "Изберете изображение", "Common.Views.SignDialog.textSignature": "Подписът изглежда като", "Common.Views.SignDialog.textTitle": "Подпишете документ", "Common.Views.SignDialog.textUseImage": "или кликнете върху „Избор на изображение“, за да използвате снимка като подпис", @@ -311,13 +310,13 @@ "Common.Views.SignSettingsDialog.textAllowComment": "Позволете на сигналиста да добави коментар в диалога за подпис", "Common.Views.SignSettingsDialog.textInfo": "Информация за подписания", "Common.Views.SignSettingsDialog.textInfoEmail": "Електронна поща", - "Common.Views.SignSettingsDialog.textInfoName": "име", + "Common.Views.SignSettingsDialog.textInfoName": "Име", "Common.Views.SignSettingsDialog.textInfoTitle": "Заглавие на подписващия", - "Common.Views.SignSettingsDialog.textInstructions": "Инструкции за Signer", + "Common.Views.SignSettingsDialog.textInstructions": "Инструкции за подписващия", "Common.Views.SignSettingsDialog.textShowDate": "Покажете датата на знака в реда за подпис", "Common.Views.SignSettingsDialog.textTitle": "Настройка на подпис", "Common.Views.SignSettingsDialog.txtEmpty": "Това поле е задължително", - "DE.Controllers.LeftMenu.leavePageText": "Кликнете върху „ОК“, за да отхвърлите всички незапазени промени.", + "DE.Controllers.LeftMenu.leavePageText": "Всички незапазени промени в този документ ще бъдат загубени.
      Кликнете върху „Отказ“ и след това върху „Запазване“, за да ги запазите. Кликнете върху „ОК“, за да отхвърлите всички незапазени промени.", "DE.Controllers.LeftMenu.newDocumentTitle": "Неназован документ", "DE.Controllers.LeftMenu.notcriticalErrorTitle": "Внимание", "DE.Controllers.LeftMenu.requestEditRightsText": "Заявка за права за редактиране ...", @@ -325,7 +324,7 @@ "DE.Controllers.LeftMenu.textNoTextFound": "Данните, които търсите, не можаха да бъдат намерени. Моля, коригирайте опциите си за търсене.", "DE.Controllers.LeftMenu.textReplaceSkipped": "Замяната е направена. {0} събития бяха пропуснати.", "DE.Controllers.LeftMenu.textReplaceSuccess": "Търсенето е направено. Заместени случаи: {0}", - "DE.Controllers.LeftMenu.txtUntitled": "неозаглавен", + "DE.Controllers.LeftMenu.txtUntitled": "Неозаглавен", "DE.Controllers.LeftMenu.warnDownloadAs": "Ако продължите да записвате в този формат, всички функции, с изключение на текста, ще бъдат загубени.
      Сигурни ли сте, че искате да продължите?", "DE.Controllers.LeftMenu.warnDownloadAsRTF": "Ако продължите да записвате в този формат, някои от форматирането може да се загубят.
      Наистина ли искате да продължите?", "DE.Controllers.Main.applyChangesTextText": "Промените се зареждат ...", @@ -333,7 +332,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Превишава се времето на изтичане на реализация. ", "DE.Controllers.Main.criticalErrorExtText": "Натиснете \"OK\", за да се върнете към списъка с документи.", "DE.Controllers.Main.criticalErrorTitle": "Грешка", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Редактор на документи", "DE.Controllers.Main.downloadErrorText": "Изтеглянето се провали.", "DE.Controllers.Main.downloadMergeText": "Изтегля се ...", "DE.Controllers.Main.downloadMergeTitle": "Изтеглянето", @@ -342,7 +340,7 @@ "DE.Controllers.Main.errorAccessDeny": "Опитвате се да извършите действие, за което нямате права.
      Моля, свържете се с администратора на сървъра за документи.", "DE.Controllers.Main.errorBadImageUrl": "URL адресът на изображението е неправилен", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Връзката със сървъра е загубена. Документът не може да бъде редактиран в момента.", - "DE.Controllers.Main.errorConnectToServer": "Документът не можа да бъде запазен. Моля, проверете настройките за връзка или се свържете с администратора си.
      Когато щракнете върху бутона 'OK', ще бъдете подканени да изтеглите документа.

      Намерете повече информация за свързването на сървъра за документи тук ", + "DE.Controllers.Main.errorConnectToServer": "Документът не може да бъде запасен. Моля, проверете настройките за връзка или се свържете с администратора си.
      Когато щракнете върху бутона 'OK', ще бъдете подканени да изтеглите документа.

      Намерете повече информация за свързването на сървър за документи тук", "DE.Controllers.Main.errorDatabaseConnection": "Външна грешка.
      Грешка при свързване към база данни. Моля, свържете се с екипа за поддръжка, в случай че грешката продължава.", "DE.Controllers.Main.errorDataEncrypted": "Получени са криптирани промени, които не могат да бъдат дешифрирани.", "DE.Controllers.Main.errorDataRange": "Неправилен обхват от данни.", @@ -361,13 +359,13 @@ "DE.Controllers.Main.errorSessionAbsolute": "Сесията за редактиране на документ изтече. Моля, презаредете страницата.", "DE.Controllers.Main.errorSessionIdle": "Документът не е редактиран дълго време. Моля, презаредете страницата.", "DE.Controllers.Main.errorSessionToken": "Връзката със сървъра е прекъсната. Моля, презаредете страницата.", - "DE.Controllers.Main.errorStockChart": "Неправилен ред на ред. За изграждане на борсова карта поставете данните на листа в следния ред:
      цена на отваряне, максимална цена, мин. Цена, цена на затваряне.", - "DE.Controllers.Main.errorToken": "Токенът за защита на документа не е правилно оформен.", + "DE.Controllers.Main.errorStockChart": "Неправилен ред на ред. За изграждане на борсова карта поставете данните на листа в следния ред:
      цена на отваряне, максимална цена, мин. цена, цена на затваряне.", + "DE.Controllers.Main.errorToken": "Токенът за защита на документа не е правилно оформен.
      Моля, свържете се с вашия администратор на сървър за документи.", "DE.Controllers.Main.errorTokenExpire": "Токенът за защита на документа е изтекъл.
      Моля, свържете се с администратора на документа.", "DE.Controllers.Main.errorUpdateVersion": "Версията на файла е променена. Страницата ще бъде презаредена.", "DE.Controllers.Main.errorUserDrop": "Файлът не може да бъде достъпен в момента.", "DE.Controllers.Main.errorUsersExceed": "Превишен е броят на потребителите, позволени от плана за ценообразуване", - "DE.Controllers.Main.errorViewerDisconnect": "Всичко от това можете да прегледате документа, но няма да можете да изтеглите или отпечатате, ако дойде време за възстановяване.", + "DE.Controllers.Main.errorViewerDisconnect": "Връзката е загубена. Все още можете да преглеждате документа,
      но няма да можете да го изтеглите или отпечатате, докато връзката бъде възстановена.", "DE.Controllers.Main.leavePageText": "Имате незапазени промени в този документ. Кликнете върху „Остани на тази страница“, след това върху „Запазване“, за да ги запазите. Кликнете върху „Напускане на тази страница“, за да отхвърлите всички незапазени промени.", "DE.Controllers.Main.loadFontsTextText": "Данните се зареждат ...", "DE.Controllers.Main.loadFontsTitleText": "Зареждане на данни", @@ -390,7 +388,7 @@ "DE.Controllers.Main.reloadButtonText": "Презареждане на страницата", "DE.Controllers.Main.requestEditFailedMessageText": "Някой редактира този документ в момента. Моля, опитайте отново по-късно.", "DE.Controllers.Main.requestEditFailedTitleText": "Достъп отказан", - "DE.Controllers.Main.saveErrorText": "Въздушна грешка при запазване на файла Въздушна грешка при запазване на", + "DE.Controllers.Main.saveErrorText": "Възникна грешка при запазването на файла", "DE.Controllers.Main.savePreparingText": "Подготовка за запазване", "DE.Controllers.Main.savePreparingTitle": "Подготовка за запазване. Моля Изчакай...", "DE.Controllers.Main.saveTextText": "Документът се запазва ...", @@ -404,41 +402,41 @@ "DE.Controllers.Main.textAnonymous": "Анонимен", "DE.Controllers.Main.textBuyNow": "Посетете уебсайта", "DE.Controllers.Main.textChangesSaved": "Всички промени са запазени", - "DE.Controllers.Main.textClose": "Близо", + "DE.Controllers.Main.textClose": "Затвори", "DE.Controllers.Main.textCloseTip": "Кликнете, за да затворите отгоре", "DE.Controllers.Main.textContactUs": "Свържете се с продажбите", "DE.Controllers.Main.textCustomLoader": "Моля, имайте предвид, че според условията на лиценза нямате право да сменяте товарача.
      Моля, свържете се с нашия отдел Продажби, за да получите оферта.", "DE.Controllers.Main.textLoadingDocument": "Зареждане на документ", "DE.Controllers.Main.textNoLicenseTitle": "Ограничение за връзка ONLYOFFICE", "DE.Controllers.Main.textPaidFeature": "Платена функция", - "DE.Controllers.Main.textShape": "форма", + "DE.Controllers.Main.textShape": "Форма", "DE.Controllers.Main.textStrict": "Строг режим", "DE.Controllers.Main.textTryUndoRedo": "Функциите за отмяна / възстановяване са деактивирани за режима Бързо съвместно редактиране.
      Кликнете върху бутона „Строг режим“, за да превключите в режим на стриктно съвместно редактиране, за да редактирате файла без намеса на други потребители и да изпращате промените само след като ги запазите тях. Можете да превключвате между режимите за съвместно редактиране с помощта на редактора Разширени настройки.", "DE.Controllers.Main.titleLicenseExp": "Лицензът е изтекъл", "DE.Controllers.Main.titleServerVersion": "Редакторът е актуализиран", "DE.Controllers.Main.titleUpdateVersion": "Версията е променена", - "DE.Controllers.Main.txtAbove": "Над", + "DE.Controllers.Main.txtAbove": "над", "DE.Controllers.Main.txtArt": "Вашият текст тук", "DE.Controllers.Main.txtBasicShapes": "Основни форми", - "DE.Controllers.Main.txtBelow": "По-долу", + "DE.Controllers.Main.txtBelow": "по-долу", "DE.Controllers.Main.txtBookmarkError": "Грешка! Маркерът не е дефиниран.", "DE.Controllers.Main.txtButtons": "Бутони", "DE.Controllers.Main.txtCallouts": "Допълнителни описания", - "DE.Controllers.Main.txtCharts": "Графики", + "DE.Controllers.Main.txtCharts": "Диаграми", "DE.Controllers.Main.txtCurrentDocument": "Текущ документ", - "DE.Controllers.Main.txtDiagramTitle": "Заглавие на английски диалог", + "DE.Controllers.Main.txtDiagramTitle": "Заглавие на диаграмата", "DE.Controllers.Main.txtEditingMode": "Задаване на режим на редактиране ...", "DE.Controllers.Main.txtEndOfFormula": "Неочакван край на формулата", "DE.Controllers.Main.txtErrorLoadHistory": "Неуспешно зареждане на историята", "DE.Controllers.Main.txtEvenPage": "Дори страница", "DE.Controllers.Main.txtFiguredArrows": "Фигурни стрели", "DE.Controllers.Main.txtFirstPage": "Първа страница", - "DE.Controllers.Main.txtFooter": "долния", + "DE.Controllers.Main.txtFooter": "Долния", "DE.Controllers.Main.txtFormulaNotInTable": "Формулата не е в таблица", - "DE.Controllers.Main.txtHeader": "Заглавие", + "DE.Controllers.Main.txtHeader": "Горен колонтитул", "DE.Controllers.Main.txtHyperlink": "Хипервръзка", "DE.Controllers.Main.txtIndTooLarge": "Индексът е твърде голям", - "DE.Controllers.Main.txtLines": "линии", + "DE.Controllers.Main.txtLines": "Линии", "DE.Controllers.Main.txtMath": "Математик", "DE.Controllers.Main.txtMissArg": "Липсващ аргумент", "DE.Controllers.Main.txtMissOperator": "Липсващ оператор", @@ -447,16 +445,16 @@ "DE.Controllers.Main.txtNotInTable": "Не е в таблица", "DE.Controllers.Main.txtOddPage": "Нечетна страница", "DE.Controllers.Main.txtOnPage": "на страница", - "DE.Controllers.Main.txtRectangles": "правоъгълници", + "DE.Controllers.Main.txtRectangles": "Правоъгълници", "DE.Controllers.Main.txtSameAsPrev": "Същото като предишното", "DE.Controllers.Main.txtSection": "-Раздел", - "DE.Controllers.Main.txtSeries": "серия", + "DE.Controllers.Main.txtSeries": "Серия", "DE.Controllers.Main.txtShape_accentBorderCallout1": "Извикваща линия 1 (граница и акцент)", "DE.Controllers.Main.txtShape_accentBorderCallout2": "Извивка на линия 2 (граница и акцент)", "DE.Controllers.Main.txtShape_accentBorderCallout3": "Извикваща линия 3 (граница и акцент)", - "DE.Controllers.Main.txtShape_accentCallout1": "Позиция от ред 1 (Акцентна лента)", + "DE.Controllers.Main.txtShape_accentCallout1": "Позиция от ред 1 (акцентна лента)", "DE.Controllers.Main.txtShape_accentCallout2": "Извикваща линия 2 (акцент)", - "DE.Controllers.Main.txtShape_accentCallout3": "Извикваща линия 3 (Акцентна лента)", + "DE.Controllers.Main.txtShape_accentCallout3": "Извикваща линия 3 (акцентна лента)", "DE.Controllers.Main.txtShape_actionButtonBackPrevious": "Бутон \"Назад\" или \"Предишен\"", "DE.Controllers.Main.txtShape_actionButtonBeginning": "Начален бутон", "DE.Controllers.Main.txtShape_actionButtonBlank": "Празен бутон", @@ -475,8 +473,8 @@ "DE.Controllers.Main.txtShape_bentConnector5WithArrow": "Съединител за стрелки с лакът", "DE.Controllers.Main.txtShape_bentConnector5WithTwoArrows": "Конектор с двойна стрелка", "DE.Controllers.Main.txtShape_bentUpArrow": "Сгъната стрелка нагоре", - "DE.Controllers.Main.txtShape_bevel": "откос", - "DE.Controllers.Main.txtShape_blockArc": "Блок Arc", + "DE.Controllers.Main.txtShape_bevel": "Откос", + "DE.Controllers.Main.txtShape_blockArc": "Блок arc", "DE.Controllers.Main.txtShape_borderCallout1": "Извикваща линия 1", "DE.Controllers.Main.txtShape_borderCallout2": "Извикваща линия 2", "DE.Controllers.Main.txtShape_borderCallout3": "Линия за линия 3", @@ -485,13 +483,13 @@ "DE.Controllers.Main.txtShape_callout2": "Очертание от ред 2 (без граница)", "DE.Controllers.Main.txtShape_callout3": "Обложка за линия 3 (без граница)", "DE.Controllers.Main.txtShape_can": "Мога", - "DE.Controllers.Main.txtShape_chevron": "орнамент във формата на", - "DE.Controllers.Main.txtShape_chord": "акорд", + "DE.Controllers.Main.txtShape_chevron": "Орнамент във формата на", + "DE.Controllers.Main.txtShape_chord": "Акорд", "DE.Controllers.Main.txtShape_circularArrow": "Кръгла стрелка", - "DE.Controllers.Main.txtShape_cloud": "облак", - "DE.Controllers.Main.txtShape_cloudCallout": "Cloud Callout", - "DE.Controllers.Main.txtShape_corner": "ъглов", - "DE.Controllers.Main.txtShape_cube": "куб", + "DE.Controllers.Main.txtShape_cloud": "Облак", + "DE.Controllers.Main.txtShape_cloudCallout": "Облаковидно изнесено означение", + "DE.Controllers.Main.txtShape_corner": "Ъглов", + "DE.Controllers.Main.txtShape_cube": "Куб", "DE.Controllers.Main.txtShape_curvedConnector3": "Извитият конектор", "DE.Controllers.Main.txtShape_curvedConnector3WithArrow": "Съединител с крива стрелка", "DE.Controllers.Main.txtShape_curvedConnector3WithTwoArrows": "Съединител с двойна стрелка", @@ -499,15 +497,15 @@ "DE.Controllers.Main.txtShape_curvedLeftArrow": "Лява стрелка", "DE.Controllers.Main.txtShape_curvedRightArrow": "Извита дясна стрелка", "DE.Controllers.Main.txtShape_curvedUpArrow": "Извита стрелка нагоре", - "DE.Controllers.Main.txtShape_decagon": "десетоъгълник", + "DE.Controllers.Main.txtShape_decagon": "Десетоъгълник", "DE.Controllers.Main.txtShape_diagStripe": "Диагонална лента", - "DE.Controllers.Main.txtShape_diamond": "диамант", - "DE.Controllers.Main.txtShape_dodecagon": "дванадесетоъгълник", + "DE.Controllers.Main.txtShape_diamond": "Диамант", + "DE.Controllers.Main.txtShape_dodecagon": "Дванадесетоъгълник", "DE.Controllers.Main.txtShape_donut": "Поничка", "DE.Controllers.Main.txtShape_doubleWave": "Двойна вълна", "DE.Controllers.Main.txtShape_downArrow": "Стрелка надолу", "DE.Controllers.Main.txtShape_downArrowCallout": "Стрелка надолу", - "DE.Controllers.Main.txtShape_ellipse": "елипса", + "DE.Controllers.Main.txtShape_ellipse": "Елипса", "DE.Controllers.Main.txtShape_ellipseRibbon": "Лентата е извита надолу", "DE.Controllers.Main.txtShape_ellipseRibbon2": "Лентата е извита нагоре", "DE.Controllers.Main.txtShape_flowChartAlternateProcess": "Блок-схема: Алтернативен процес", @@ -519,31 +517,31 @@ "DE.Controllers.Main.txtShape_flowChartDocument": "Блок-схема: Документ", "DE.Controllers.Main.txtShape_flowChartExtract": "Блок-схема: Извличане", "DE.Controllers.Main.txtShape_flowChartInputOutput": "Блок-схема: Данни", - "DE.Controllers.Main.txtShape_flowChartInternalStorage": "Блок-схема: вътрешна памет", + "DE.Controllers.Main.txtShape_flowChartInternalStorage": "Блок-схема: Вътрешна памет", "DE.Controllers.Main.txtShape_flowChartMagneticDisk": "Блок-схема: Магнитен диск", "DE.Controllers.Main.txtShape_flowChartMagneticDrum": "Блок-схема: Съхранение с директен достъп", - "DE.Controllers.Main.txtShape_flowChartMagneticTape": "Блок-схема: съхранение с последователен достъп", + "DE.Controllers.Main.txtShape_flowChartMagneticTape": "Блок-схема: Съхранение с последователен достъп", "DE.Controllers.Main.txtShape_flowChartManualInput": "Блок-схема: Ръчен вход", "DE.Controllers.Main.txtShape_flowChartManualOperation": "Блок-схема: Ръчна операция", "DE.Controllers.Main.txtShape_flowChartMerge": "Блок-схема: Обединяване", "DE.Controllers.Main.txtShape_flowChartMultidocument": "Блок-схема: Мултидокумент", "DE.Controllers.Main.txtShape_flowChartOffpageConnector": "Блок-схема: Съединител извън страницата", "DE.Controllers.Main.txtShape_flowChartOnlineStorage": "Блок-схема: Съхранени данни", - "DE.Controllers.Main.txtShape_flowChartOr": "Блок-схема: Or", - "DE.Controllers.Main.txtShape_flowChartPredefinedProcess": "Блок-схема: предвестник дефиниран процес", + "DE.Controllers.Main.txtShape_flowChartOr": "Блок-схема: Или", + "DE.Controllers.Main.txtShape_flowChartPredefinedProcess": "Блок-схема: предварително дефиниран процес", "DE.Controllers.Main.txtShape_flowChartPreparation": "Блок-схема: Подготовка", "DE.Controllers.Main.txtShape_flowChartProcess": "Блок-схема: Процес", "DE.Controllers.Main.txtShape_flowChartPunchedCard": "Блок-схема: Карта", "DE.Controllers.Main.txtShape_flowChartPunchedTape": "Блок-схема: Перфорирана лента", "DE.Controllers.Main.txtShape_flowChartSort": "Блок-схема: Сортиране", - "DE.Controllers.Main.txtShape_flowChartSummingJunction": "Блок-схема: сумираща свързване", - "DE.Controllers.Main.txtShape_flowChartTerminator": "Блок-схема: Терминатор", + "DE.Controllers.Main.txtShape_flowChartSummingJunction": "Блок-схема: Сумираща свързване", + "DE.Controllers.Main.txtShape_flowChartTerminator": "Блок-схема: Знак за край", "DE.Controllers.Main.txtShape_foldedCorner": "Сгънат ъгъл", "DE.Controllers.Main.txtShape_frame": "Кадър", "DE.Controllers.Main.txtShape_halfFrame": "Половин кадър", - "DE.Controllers.Main.txtShape_heart": "сърце", - "DE.Controllers.Main.txtShape_heptagon": "седмоъгълник", - "DE.Controllers.Main.txtShape_hexagon": "шестоъгълник", + "DE.Controllers.Main.txtShape_heart": "Сърце", + "DE.Controllers.Main.txtShape_heptagon": "Седмоъгълник", + "DE.Controllers.Main.txtShape_hexagon": "Шестоъгълник", "DE.Controllers.Main.txtShape_homePlate": "Пентагона", "DE.Controllers.Main.txtShape_horizontalScroll": "Хоризонтален превъртане", "DE.Controllers.Main.txtShape_irregularSeal1": "Експлозия 1", @@ -557,29 +555,29 @@ "DE.Controllers.Main.txtShape_leftRightUpArrow": "Стрелка наклонено нагоре", "DE.Controllers.Main.txtShape_leftUpArrow": "Стрелка наклонено нагоре", "DE.Controllers.Main.txtShape_lightningBolt": "Светкавица", - "DE.Controllers.Main.txtShape_line": "линия", + "DE.Controllers.Main.txtShape_line": "Линия", "DE.Controllers.Main.txtShape_lineWithArrow": "Стрелка", "DE.Controllers.Main.txtShape_lineWithTwoArrows": "Двойна стрелка", - "DE.Controllers.Main.txtShape_mathDivide": "делене", - "DE.Controllers.Main.txtShape_mathEqual": "равен", - "DE.Controllers.Main.txtShape_mathMinus": "минус", + "DE.Controllers.Main.txtShape_mathDivide": "Делене", + "DE.Controllers.Main.txtShape_mathEqual": "Равен", + "DE.Controllers.Main.txtShape_mathMinus": "Минус", "DE.Controllers.Main.txtShape_mathMultiply": "Умножение", "DE.Controllers.Main.txtShape_mathNotEqual": "Не е равно", - "DE.Controllers.Main.txtShape_mathPlus": "плюс", + "DE.Controllers.Main.txtShape_mathPlus": "Плюс", "DE.Controllers.Main.txtShape_moon": "Луна", "DE.Controllers.Main.txtShape_noSmoking": "Символ \"Не\"", "DE.Controllers.Main.txtShape_notchedRightArrow": "Стрелка надясно", - "DE.Controllers.Main.txtShape_octagon": "осмоъгълник", - "DE.Controllers.Main.txtShape_parallelogram": "успоредник", + "DE.Controllers.Main.txtShape_octagon": "Осмоъгълник", + "DE.Controllers.Main.txtShape_parallelogram": "Успоредник", "DE.Controllers.Main.txtShape_pentagon": "Пентагона", - "DE.Controllers.Main.txtShape_pie": "пай", + "DE.Controllers.Main.txtShape_pie": "Кръгова", "DE.Controllers.Main.txtShape_plaque": "Знак", - "DE.Controllers.Main.txtShape_plus": "плюс", - "DE.Controllers.Main.txtShape_polyline1": "драсканица", + "DE.Controllers.Main.txtShape_plus": "Плюс", + "DE.Controllers.Main.txtShape_polyline1": "Драсканица", "DE.Controllers.Main.txtShape_polyline2": "Свободна форма", "DE.Controllers.Main.txtShape_quadArrow": "Четириядрена стрелка", "DE.Controllers.Main.txtShape_quadArrowCallout": "Квартална стрелка", - "DE.Controllers.Main.txtShape_rect": "правоъгълник", + "DE.Controllers.Main.txtShape_rect": "Правоъгълник", "DE.Controllers.Main.txtShape_ribbon": "Долна лента", "DE.Controllers.Main.txtShape_ribbon2": "Лентата нагоре", "DE.Controllers.Main.txtShape_rightArrow": "Дясна стрелка", @@ -596,7 +594,7 @@ "DE.Controllers.Main.txtShape_snip2DiagRect": "Правоъгълник с диагонален ъгъл", "DE.Controllers.Main.txtShape_snip2SameRect": "Отрязан правоъгълник от същия страничен ъгъл", "DE.Controllers.Main.txtShape_snipRoundRect": "Правоъгълник с изрязани и кръгли ъгли", - "DE.Controllers.Main.txtShape_spline": "крива", + "DE.Controllers.Main.txtShape_spline": "Крива", "DE.Controllers.Main.txtShape_star10": "10-точкова звезда", "DE.Controllers.Main.txtShape_star12": "12-точкова звезда", "DE.Controllers.Main.txtShape_star16": "16-точкова звезда", @@ -608,11 +606,11 @@ "DE.Controllers.Main.txtShape_star7": "7-точкова звезда", "DE.Controllers.Main.txtShape_star8": "8-точкова звезда", "DE.Controllers.Main.txtShape_stripedRightArrow": "Стрелка надясно", - "DE.Controllers.Main.txtShape_sun": "слънце", + "DE.Controllers.Main.txtShape_sun": "Слънце", "DE.Controllers.Main.txtShape_teardrop": "Капко образно", "DE.Controllers.Main.txtShape_textRect": "Текстово поле", - "DE.Controllers.Main.txtShape_trapezoid": "трапец", - "DE.Controllers.Main.txtShape_triangle": "триъгълник", + "DE.Controllers.Main.txtShape_trapezoid": "Трапец", + "DE.Controllers.Main.txtShape_triangle": "Триъгълник", "DE.Controllers.Main.txtShape_upArrow": "Стрелка нагоре", "DE.Controllers.Main.txtShape_upArrowCallout": "Стрелка нагоре", "DE.Controllers.Main.txtShape_upDownArrow": "Стрелка нагоре надолу", @@ -636,18 +634,18 @@ "DE.Controllers.Main.txtStyle_Intense_Quote": "Интензивен цитат", "DE.Controllers.Main.txtStyle_List_Paragraph": "Параграф Списък", "DE.Controllers.Main.txtStyle_No_Spacing": "Без интервал", - "DE.Controllers.Main.txtStyle_Normal": "нормален", - "DE.Controllers.Main.txtStyle_Quote": "цитат", - "DE.Controllers.Main.txtStyle_Subtitle": "подзаглавие", + "DE.Controllers.Main.txtStyle_Normal": "Нормален", + "DE.Controllers.Main.txtStyle_Quote": "Цитат", + "DE.Controllers.Main.txtStyle_Subtitle": "Подзаглавие", "DE.Controllers.Main.txtStyle_Title": "Заглавие", "DE.Controllers.Main.txtSyntaxError": "Синтактична грешка", - "DE.Controllers.Main.txtTableInd": "Табличен индекс Не може да бъде нула", + "DE.Controllers.Main.txtTableInd": "Табличен индекс не може да бъде нула", "DE.Controllers.Main.txtTableOfContents": "Съдържание", "DE.Controllers.Main.txtTooLarge": "Брой твърде голям за форматиране", "DE.Controllers.Main.txtUndefBookmark": "Недефинирана отметка", "DE.Controllers.Main.txtXAxis": "X ос", "DE.Controllers.Main.txtYAxis": "Y ос", - "DE.Controllers.Main.txtZeroDivide": "нула дивизия", + "DE.Controllers.Main.txtZeroDivide": "Нула дивизия", "DE.Controllers.Main.unknownErrorText": "Неизвестна грешка.", "DE.Controllers.Main.unsupportedBrowserErrorText": "Вашият браузър не се поддържа.", "DE.Controllers.Main.uploadImageExtMessage": "Неизвестен формат на изображението.", @@ -661,8 +659,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Броят на едновременните връзки към сървъра за документи е превишен и документът ще бъде отворен само за преглед.
      За повече информация се обърнете към администратора.", "DE.Controllers.Main.warnLicenseExp": "Вашият лиценз е изтекъл.
      Моля, актуализирайте лиценза си и опреснете страницата.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Броят на едновременните потребители е надхвърлен и документът ще бъде отворен само за преглед.
      За повече информация се свържете с администратора си.", - "DE.Controllers.Main.warnNoLicense": "Тази версия на редакторите на ONLYOFFICE има някои ограничения за едновременни връзки към сървъра за документи.
      Ако имате нужда от повече, моля обмислете закупуването на търговски лиценз.", - "DE.Controllers.Main.warnNoLicenseUsers": "Тази версия на редакторите на ONLYOFFICE има някои ограничения за едновременни потребители.
      Ако имате нужда от повече, моля обмислете закупуването на търговски лиценз.", + "DE.Controllers.Main.warnNoLicense": "Тази версия на редакторите на %1 има някои ограничения за едновременни връзки към сървъра за документи.
      Ако имате нужда от повече, моля обмислете закупуването на търговски лиценз.", + "DE.Controllers.Main.warnNoLicenseUsers": "Тази версия на редакторите на %1 има някои ограничения за едновременни потребители.
      Ако имате нужда от повече, моля обмислете закупуването на търговски лиценз.", "DE.Controllers.Main.warnProcessRightsChange": "На вас е отказано правото да редактирате файла.", "DE.Controllers.Navigation.txtBeginning": "Начало на документа", "DE.Controllers.Navigation.txtGotoBeginning": "Отидете в началото на документа", @@ -678,20 +676,20 @@ "DE.Controllers.Toolbar.textFontSizeErr": "Въведената стойност е неправилна.
      Въведете числова стойност между 1 и 100", "DE.Controllers.Toolbar.textFraction": "Фракции", "DE.Controllers.Toolbar.textFunction": "Функция", - "DE.Controllers.Toolbar.textIntegral": "интеграли", + "DE.Controllers.Toolbar.textIntegral": "Интеграли", "DE.Controllers.Toolbar.textLargeOperator": "Големи оператори", "DE.Controllers.Toolbar.textLimitAndLog": "Граници и логаритми", "DE.Controllers.Toolbar.textMatrix": "Матрици", "DE.Controllers.Toolbar.textOperator": "Операторите", "DE.Controllers.Toolbar.textRadical": "Радикалите", - "DE.Controllers.Toolbar.textScript": "Scripts", + "DE.Controllers.Toolbar.textScript": "Скриптове", "DE.Controllers.Toolbar.textSymbols": "Символи", "DE.Controllers.Toolbar.textWarning": "Внимание", - "DE.Controllers.Toolbar.txtAccent_Accent": "остър", + "DE.Controllers.Toolbar.txtAccent_Accent": "Остър", "DE.Controllers.Toolbar.txtAccent_ArrowD": "Стрелка горе вдясно", "DE.Controllers.Toolbar.txtAccent_ArrowL": "Стрелка наляво по-горе", "DE.Controllers.Toolbar.txtAccent_ArrowR": "Стрелка нагоре отдясно", - "DE.Controllers.Toolbar.txtAccent_Bar": "бар", + "DE.Controllers.Toolbar.txtAccent_Bar": "Бар", "DE.Controllers.Toolbar.txtAccent_BarBot": "Долен ред", "DE.Controllers.Toolbar.txtAccent_BarTop": "Бар горе", "DE.Controllers.Toolbar.txtAccent_BorderBox": "Буквена формула (с маркер)", @@ -700,20 +698,20 @@ "DE.Controllers.Toolbar.txtAccent_CurveBracketBot": "Долна скоба", "DE.Controllers.Toolbar.txtAccent_CurveBracketTop": "Горна скоба", "DE.Controllers.Toolbar.txtAccent_Custom_1": "Вектор А", - "DE.Controllers.Toolbar.txtAccent_Custom_2": "ABC с Overbar", - "DE.Controllers.Toolbar.txtAccent_Custom_3": "x XOR y с overbar", + "DE.Controllers.Toolbar.txtAccent_Custom_2": "ABC с горна черта", + "DE.Controllers.Toolbar.txtAccent_Custom_3": "x XOR y с горна черта", "DE.Controllers.Toolbar.txtAccent_DDDot": "Тройна точка", "DE.Controllers.Toolbar.txtAccent_DDot": "Двойна точка", - "DE.Controllers.Toolbar.txtAccent_Dot": "точка", + "DE.Controllers.Toolbar.txtAccent_Dot": "Точка", "DE.Controllers.Toolbar.txtAccent_DoubleBar": "Двойна лента", - "DE.Controllers.Toolbar.txtAccent_Grave": "гроб", + "DE.Controllers.Toolbar.txtAccent_Grave": "Ударение", "DE.Controllers.Toolbar.txtAccent_GroupBot": "Групирането по-долу", "DE.Controllers.Toolbar.txtAccent_GroupTop": "Символът за групиране по-горе", "DE.Controllers.Toolbar.txtAccent_HarpoonL": "Ляв харпун отгоре", "DE.Controllers.Toolbar.txtAccent_HarpoonR": "Отдясно се намира харпунът по-горе", "DE.Controllers.Toolbar.txtAccent_Hat": "Шапка", - "DE.Controllers.Toolbar.txtAccent_Smile": "знак за кратко", - "DE.Controllers.Toolbar.txtAccent_Tilde": "тилда", + "DE.Controllers.Toolbar.txtAccent_Smile": "Знак за кратко", + "DE.Controllers.Toolbar.txtAccent_Tilde": "Тилда", "DE.Controllers.Toolbar.txtBracket_Angle": "Скоби", "DE.Controllers.Toolbar.txtBracket_Angle_Delimiter_2": "Скоби със сепаратори", "DE.Controllers.Toolbar.txtBracket_Angle_Delimiter_3": "Скоби със сепаратори", @@ -756,10 +754,10 @@ "DE.Controllers.Toolbar.txtBracket_UppLim_NoneOpen": "Единична скоба", "DE.Controllers.Toolbar.txtBracket_UppLim_OpenNone": "Единична скоба", "DE.Controllers.Toolbar.txtFractionDiagonal": "Изкривена фракция", - "DE.Controllers.Toolbar.txtFractionDifferential_1": "диференциал", - "DE.Controllers.Toolbar.txtFractionDifferential_2": "диференциал", - "DE.Controllers.Toolbar.txtFractionDifferential_3": "диференциал", - "DE.Controllers.Toolbar.txtFractionDifferential_4": "диференциал", + "DE.Controllers.Toolbar.txtFractionDifferential_1": "Диференциал", + "DE.Controllers.Toolbar.txtFractionDifferential_2": "Диференциал", + "DE.Controllers.Toolbar.txtFractionDifferential_3": "Диференциал", + "DE.Controllers.Toolbar.txtFractionDifferential_4": "Диференциал", "DE.Controllers.Toolbar.txtFractionHorizontal": "Линейна фракция", "DE.Controllers.Toolbar.txtFractionPi_2": "Пи над 2", "DE.Controllers.Toolbar.txtFractionSmall": "Малка фракция", @@ -770,7 +768,7 @@ "DE.Controllers.Toolbar.txtFunction_1_Coth": "Хиперболична инверсна котангенс функция", "DE.Controllers.Toolbar.txtFunction_1_Csc": "Обратна косекантна функция", "DE.Controllers.Toolbar.txtFunction_1_Csch": "Хиперболична обратна косекантна функция", - "DE.Controllers.Toolbar.txtFunction_1_Sec": "Функция за обратна секунда", + "DE.Controllers.Toolbar.txtFunction_1_Sec": "Обратна секансова функция", "DE.Controllers.Toolbar.txtFunction_1_Sech": "Хиперболична инверсна секундна функция", "DE.Controllers.Toolbar.txtFunction_1_Sin": "Обратна функция на синуса", "DE.Controllers.Toolbar.txtFunction_1_Sinh": "Хиперболична инверсна синусова функция", @@ -778,24 +776,24 @@ "DE.Controllers.Toolbar.txtFunction_1_Tanh": "Хиперболична инверсна тангенциална функция", "DE.Controllers.Toolbar.txtFunction_Cos": "Косинусна функция", "DE.Controllers.Toolbar.txtFunction_Cosh": "Хиперболична косинусна функция", - "DE.Controllers.Toolbar.txtFunction_Cot": "Косинусна функция", + "DE.Controllers.Toolbar.txtFunction_Cot": "Котангенсова функция", "DE.Controllers.Toolbar.txtFunction_Coth": "Хиперболична котангенсна функция", "DE.Controllers.Toolbar.txtFunction_Csc": "Функция на косекант", "DE.Controllers.Toolbar.txtFunction_Csch": "Хиперболична косекантна функция", "DE.Controllers.Toolbar.txtFunction_Custom_1": "Sine theta", - "DE.Controllers.Toolbar.txtFunction_Custom_2": "Cos 2x", + "DE.Controllers.Toolbar.txtFunction_Custom_2": "Косинус 2x", "DE.Controllers.Toolbar.txtFunction_Custom_3": "Формула на допирателната", - "DE.Controllers.Toolbar.txtFunction_Sec": "Защитна функция", + "DE.Controllers.Toolbar.txtFunction_Sec": "Секансова функция", "DE.Controllers.Toolbar.txtFunction_Sech": "Хиперболична секундна функция", - "DE.Controllers.Toolbar.txtFunction_Sin": "Функция синус", + "DE.Controllers.Toolbar.txtFunction_Sin": "Синусова функция", "DE.Controllers.Toolbar.txtFunction_Sinh": "Хиперболична функция на синуса", "DE.Controllers.Toolbar.txtFunction_Tan": "Функция на допирателната", "DE.Controllers.Toolbar.txtFunction_Tanh": "Хиперболична допирателна функция", - "DE.Controllers.Toolbar.txtIntegral": "интеграл", + "DE.Controllers.Toolbar.txtIntegral": "Интеграл", "DE.Controllers.Toolbar.txtIntegral_dtheta": "Диференциална тета", "DE.Controllers.Toolbar.txtIntegral_dx": "Диференциал x", "DE.Controllers.Toolbar.txtIntegral_dy": "Диференциал y", - "DE.Controllers.Toolbar.txtIntegralCenterSubSup": "интеграл", + "DE.Controllers.Toolbar.txtIntegralCenterSubSup": "Интеграл", "DE.Controllers.Toolbar.txtIntegralDouble": "Двойна интегрална", "DE.Controllers.Toolbar.txtIntegralDoubleCenterSubSup": "Двойна интегрална", "DE.Controllers.Toolbar.txtIntegralDoubleSubSup": "Двойна интегрална", @@ -808,7 +806,7 @@ "DE.Controllers.Toolbar.txtIntegralOrientedTriple": "Интегрален обем", "DE.Controllers.Toolbar.txtIntegralOrientedTripleCenterSubSup": "Интегрален обем", "DE.Controllers.Toolbar.txtIntegralOrientedTripleSubSup": "Интегрален обем", - "DE.Controllers.Toolbar.txtIntegralSubSup": "интеграл", + "DE.Controllers.Toolbar.txtIntegralSubSup": "Интеграл", "DE.Controllers.Toolbar.txtIntegralTriple": "Троен интеграл", "DE.Controllers.Toolbar.txtIntegralTripleCenterSubSup": "Троен интеграл", "DE.Controllers.Toolbar.txtIntegralTripleSubSup": "Троен интеграл", @@ -817,49 +815,49 @@ "DE.Controllers.Toolbar.txtLargeOperator_Conjunction_CenterSubSup": "Клин", "DE.Controllers.Toolbar.txtLargeOperator_Conjunction_Sub": "Клин", "DE.Controllers.Toolbar.txtLargeOperator_Conjunction_SubSup": "Клин", - "DE.Controllers.Toolbar.txtLargeOperator_CoProd": "Съпътстващ продукт", - "DE.Controllers.Toolbar.txtLargeOperator_CoProd_CenterSub": "Съпътстващ продукт", - "DE.Controllers.Toolbar.txtLargeOperator_CoProd_CenterSubSup": "Съпътстващ продукт", - "DE.Controllers.Toolbar.txtLargeOperator_CoProd_Sub": "Съпътстващ продукт", - "DE.Controllers.Toolbar.txtLargeOperator_CoProd_SubSup": "Съпътстващ продукт", - "DE.Controllers.Toolbar.txtLargeOperator_Custom_1": "сумиране", - "DE.Controllers.Toolbar.txtLargeOperator_Custom_2": "сумиране", - "DE.Controllers.Toolbar.txtLargeOperator_Custom_3": "сумиране", - "DE.Controllers.Toolbar.txtLargeOperator_Custom_4": "продукт", - "DE.Controllers.Toolbar.txtLargeOperator_Custom_5": "съюз", + "DE.Controllers.Toolbar.txtLargeOperator_CoProd": "Ко-произведение", + "DE.Controllers.Toolbar.txtLargeOperator_CoProd_CenterSub": "Ко-произведение", + "DE.Controllers.Toolbar.txtLargeOperator_CoProd_CenterSubSup": "Ко-произведение", + "DE.Controllers.Toolbar.txtLargeOperator_CoProd_Sub": "Ко-произведение", + "DE.Controllers.Toolbar.txtLargeOperator_CoProd_SubSup": "Ко-произведение", + "DE.Controllers.Toolbar.txtLargeOperator_Custom_1": "Сумиране", + "DE.Controllers.Toolbar.txtLargeOperator_Custom_2": "Сумиране", + "DE.Controllers.Toolbar.txtLargeOperator_Custom_3": "Сумиране", + "DE.Controllers.Toolbar.txtLargeOperator_Custom_4": "Произведение", + "DE.Controllers.Toolbar.txtLargeOperator_Custom_5": "Съюз", "DE.Controllers.Toolbar.txtLargeOperator_Disjunction": "V-образна", "DE.Controllers.Toolbar.txtLargeOperator_Disjunction_CenterSub": "V-образна", "DE.Controllers.Toolbar.txtLargeOperator_Disjunction_CenterSubSup": "V-образна", "DE.Controllers.Toolbar.txtLargeOperator_Disjunction_Sub": "V-образна", "DE.Controllers.Toolbar.txtLargeOperator_Disjunction_SubSup": "V-образна", - "DE.Controllers.Toolbar.txtLargeOperator_Intersection": "пресичане", - "DE.Controllers.Toolbar.txtLargeOperator_Intersection_CenterSub": "пресичане", - "DE.Controllers.Toolbar.txtLargeOperator_Intersection_CenterSubSup": "пресичане", - "DE.Controllers.Toolbar.txtLargeOperator_Intersection_Sub": "пресичане", - "DE.Controllers.Toolbar.txtLargeOperator_Intersection_SubSup": "пресичане", - "DE.Controllers.Toolbar.txtLargeOperator_Prod": "продукт", - "DE.Controllers.Toolbar.txtLargeOperator_Prod_CenterSub": "продукт", - "DE.Controllers.Toolbar.txtLargeOperator_Prod_CenterSubSup": "продукт", - "DE.Controllers.Toolbar.txtLargeOperator_Prod_Sub": "продукт", - "DE.Controllers.Toolbar.txtLargeOperator_Prod_SubSup": "продукт", - "DE.Controllers.Toolbar.txtLargeOperator_Sum": "сумиране", - "DE.Controllers.Toolbar.txtLargeOperator_Sum_CenterSub": "сумиране", - "DE.Controllers.Toolbar.txtLargeOperator_Sum_CenterSubSup": "сумиране", - "DE.Controllers.Toolbar.txtLargeOperator_Sum_Sub": "сумиране", - "DE.Controllers.Toolbar.txtLargeOperator_Sum_SubSup": "сумиране", - "DE.Controllers.Toolbar.txtLargeOperator_Union": "съюз", - "DE.Controllers.Toolbar.txtLargeOperator_Union_CenterSub": "съюз", - "DE.Controllers.Toolbar.txtLargeOperator_Union_CenterSubSup": "съюз", - "DE.Controllers.Toolbar.txtLargeOperator_Union_Sub": "съюз", - "DE.Controllers.Toolbar.txtLargeOperator_Union_SubSup": "съюз", + "DE.Controllers.Toolbar.txtLargeOperator_Intersection": "Пресичане", + "DE.Controllers.Toolbar.txtLargeOperator_Intersection_CenterSub": "Пресичане", + "DE.Controllers.Toolbar.txtLargeOperator_Intersection_CenterSubSup": "Пресичане", + "DE.Controllers.Toolbar.txtLargeOperator_Intersection_Sub": "Пресичане", + "DE.Controllers.Toolbar.txtLargeOperator_Intersection_SubSup": "Пресичане", + "DE.Controllers.Toolbar.txtLargeOperator_Prod": "Произведение", + "DE.Controllers.Toolbar.txtLargeOperator_Prod_CenterSub": "Произведение", + "DE.Controllers.Toolbar.txtLargeOperator_Prod_CenterSubSup": "Произведение", + "DE.Controllers.Toolbar.txtLargeOperator_Prod_Sub": "Произведение", + "DE.Controllers.Toolbar.txtLargeOperator_Prod_SubSup": "Произведение", + "DE.Controllers.Toolbar.txtLargeOperator_Sum": "Сумиране", + "DE.Controllers.Toolbar.txtLargeOperator_Sum_CenterSub": "Сумиране", + "DE.Controllers.Toolbar.txtLargeOperator_Sum_CenterSubSup": "Сумиране", + "DE.Controllers.Toolbar.txtLargeOperator_Sum_Sub": "Сумиране", + "DE.Controllers.Toolbar.txtLargeOperator_Sum_SubSup": "Сумиране", + "DE.Controllers.Toolbar.txtLargeOperator_Union": "Съюз", + "DE.Controllers.Toolbar.txtLargeOperator_Union_CenterSub": "Съюз", + "DE.Controllers.Toolbar.txtLargeOperator_Union_CenterSubSup": "Съюз", + "DE.Controllers.Toolbar.txtLargeOperator_Union_Sub": "Съюз", + "DE.Controllers.Toolbar.txtLargeOperator_Union_SubSup": "Съюз", "DE.Controllers.Toolbar.txtLimitLog_Custom_1": "Ограничен пример", "DE.Controllers.Toolbar.txtLimitLog_Custom_2": "Максимален пример", - "DE.Controllers.Toolbar.txtLimitLog_Lim": "лимит", + "DE.Controllers.Toolbar.txtLimitLog_Lim": "Лимит", "DE.Controllers.Toolbar.txtLimitLog_Ln": "Естествен логаритъм", - "DE.Controllers.Toolbar.txtLimitLog_Log": "логаритъм", - "DE.Controllers.Toolbar.txtLimitLog_LogBase": "логаритъм", - "DE.Controllers.Toolbar.txtLimitLog_Max": "максимален", - "DE.Controllers.Toolbar.txtLimitLog_Min": "минимум", + "DE.Controllers.Toolbar.txtLimitLog_Log": "Логаритъм", + "DE.Controllers.Toolbar.txtLimitLog_LogBase": "Логаритъм", + "DE.Controllers.Toolbar.txtLimitLog_Max": "Максимален", + "DE.Controllers.Toolbar.txtLimitLog_Min": "Минимум", "DE.Controllers.Toolbar.txtMarginsH": "Горната и долната граници са твърде високи за дадена височина на страницата", "DE.Controllers.Toolbar.txtMarginsW": "Лявото и дясното поле са твърде широки за дадена ширина на страницата", "DE.Controllers.Toolbar.txtMatrix_1_2": "Празна матрица 1 x 2", @@ -894,7 +892,7 @@ "DE.Controllers.Toolbar.txtOperator_Custom_1": "Добивите", "DE.Controllers.Toolbar.txtOperator_Custom_2": "Делта добиви", "DE.Controllers.Toolbar.txtOperator_Definition": "Равен на дефиницията", - "DE.Controllers.Toolbar.txtOperator_DeltaEquals": "Delta е равно на", + "DE.Controllers.Toolbar.txtOperator_DeltaEquals": "Делта е равно на", "DE.Controllers.Toolbar.txtOperator_DoubleArrowD_Bot": "Долу с дясна лява стрелка", "DE.Controllers.Toolbar.txtOperator_DoubleArrowD_Top": "Стрелка горе вдясно", "DE.Controllers.Toolbar.txtOperator_DoubleArrowL_Bot": "Стрелка наляво долу", @@ -905,48 +903,48 @@ "DE.Controllers.Toolbar.txtOperator_MinusEquals": "Минус равен", "DE.Controllers.Toolbar.txtOperator_PlusEquals": "Плюс равни", "DE.Controllers.Toolbar.txtOperator_UnitOfMeasure": "Измерено от", - "DE.Controllers.Toolbar.txtRadicalCustom_1": "радикален", - "DE.Controllers.Toolbar.txtRadicalCustom_2": "радикален", + "DE.Controllers.Toolbar.txtRadicalCustom_1": "Радикален", + "DE.Controllers.Toolbar.txtRadicalCustom_2": "Радикален", "DE.Controllers.Toolbar.txtRadicalRoot_2": "Квадратен корен със степен", "DE.Controllers.Toolbar.txtRadicalRoot_3": "Кубичен корен", "DE.Controllers.Toolbar.txtRadicalRoot_n": "Радикално със степен", "DE.Controllers.Toolbar.txtRadicalSqrt": "Корен квадратен", - "DE.Controllers.Toolbar.txtScriptCustom_1": "писменост", - "DE.Controllers.Toolbar.txtScriptCustom_2": "писменост", - "DE.Controllers.Toolbar.txtScriptCustom_3": "писменост", - "DE.Controllers.Toolbar.txtScriptCustom_4": "писменост", + "DE.Controllers.Toolbar.txtScriptCustom_1": "Скрипт", + "DE.Controllers.Toolbar.txtScriptCustom_2": "Скрипт", + "DE.Controllers.Toolbar.txtScriptCustom_3": "Скрипт", + "DE.Controllers.Toolbar.txtScriptCustom_4": "Скрипт", "DE.Controllers.Toolbar.txtScriptSub": "Долен", "DE.Controllers.Toolbar.txtScriptSubSup": "Долен-горен", "DE.Controllers.Toolbar.txtScriptSubSupLeft": "Ляв индекс-горен индекс", "DE.Controllers.Toolbar.txtScriptSup": "Горен индекс", - "DE.Controllers.Toolbar.txtSymbol_about": "приблизително", + "DE.Controllers.Toolbar.txtSymbol_about": "Приблизително", "DE.Controllers.Toolbar.txtSymbol_additional": "Допълнение", "DE.Controllers.Toolbar.txtSymbol_aleph": "Алеф", - "DE.Controllers.Toolbar.txtSymbol_alpha": "алфа", + "DE.Controllers.Toolbar.txtSymbol_alpha": "Алфа", "DE.Controllers.Toolbar.txtSymbol_approx": "Почти равно на", "DE.Controllers.Toolbar.txtSymbol_ast": "Оператор на звездичка", "DE.Controllers.Toolbar.txtSymbol_beta": "Бета", - "DE.Controllers.Toolbar.txtSymbol_beth": "поставяне", + "DE.Controllers.Toolbar.txtSymbol_beth": "Поставяне", "DE.Controllers.Toolbar.txtSymbol_bullet": "Оператор на куршум", - "DE.Controllers.Toolbar.txtSymbol_cap": "пресичане", - "DE.Controllers.Toolbar.txtSymbol_cbrt": "Cube root", + "DE.Controllers.Toolbar.txtSymbol_cap": "Пресичане", + "DE.Controllers.Toolbar.txtSymbol_cbrt": "Кубичен корен", "DE.Controllers.Toolbar.txtSymbol_cdots": "Хоризонтална елипса на средна линия", "DE.Controllers.Toolbar.txtSymbol_celsius": "Градуса по Целзий", - "DE.Controllers.Toolbar.txtSymbol_chi": "Chi", + "DE.Controllers.Toolbar.txtSymbol_chi": "Хи", "DE.Controllers.Toolbar.txtSymbol_cong": "Приблизително равно на", - "DE.Controllers.Toolbar.txtSymbol_cup": "съюз", + "DE.Controllers.Toolbar.txtSymbol_cup": "Съюз", "DE.Controllers.Toolbar.txtSymbol_ddots": "Долу в дясно диагонално елипса", - "DE.Controllers.Toolbar.txtSymbol_degree": "степени", - "DE.Controllers.Toolbar.txtSymbol_delta": "делта", + "DE.Controllers.Toolbar.txtSymbol_degree": "Степени", + "DE.Controllers.Toolbar.txtSymbol_delta": "Делта", "DE.Controllers.Toolbar.txtSymbol_div": "Знак за разделяне", "DE.Controllers.Toolbar.txtSymbol_downarrow": "Стрелка надолу", "DE.Controllers.Toolbar.txtSymbol_emptyset": "Празен комплект", "DE.Controllers.Toolbar.txtSymbol_epsilon": "Епсилон", - "DE.Controllers.Toolbar.txtSymbol_equals": "равен", + "DE.Controllers.Toolbar.txtSymbol_equals": "Равен", "DE.Controllers.Toolbar.txtSymbol_equiv": "Идентичен на", "DE.Controllers.Toolbar.txtSymbol_eta": "Ета", "DE.Controllers.Toolbar.txtSymbol_exists": "Съществуват", - "DE.Controllers.Toolbar.txtSymbol_factorial": "факториел", + "DE.Controllers.Toolbar.txtSymbol_factorial": "Факториел", "DE.Controllers.Toolbar.txtSymbol_fahrenheit": "Градуси по Фаренхайт", "DE.Controllers.Toolbar.txtSymbol_forall": "За всички", "DE.Controllers.Toolbar.txtSymbol_gamma": "Гама", @@ -954,111 +952,111 @@ "DE.Controllers.Toolbar.txtSymbol_gg": "Много по-голяма от", "DE.Controllers.Toolbar.txtSymbol_greater": "По-голям от", "DE.Controllers.Toolbar.txtSymbol_in": "Елемент на", - "DE.Controllers.Toolbar.txtSymbol_inc": "увеличение", - "DE.Controllers.Toolbar.txtSymbol_infinity": "безкрайност", - "DE.Controllers.Toolbar.txtSymbol_iota": "йота", - "DE.Controllers.Toolbar.txtSymbol_kappa": "капа", - "DE.Controllers.Toolbar.txtSymbol_lambda": "ламбда", + "DE.Controllers.Toolbar.txtSymbol_inc": "Увеличение", + "DE.Controllers.Toolbar.txtSymbol_infinity": "Безкрайност", + "DE.Controllers.Toolbar.txtSymbol_iota": "Йота", + "DE.Controllers.Toolbar.txtSymbol_kappa": "Капа", + "DE.Controllers.Toolbar.txtSymbol_lambda": "Ламбда", "DE.Controllers.Toolbar.txtSymbol_leftarrow": "Лява стрелка", "DE.Controllers.Toolbar.txtSymbol_leftrightarrow": "Стрелка наляво-надясно", "DE.Controllers.Toolbar.txtSymbol_leq": "По-малко или равно на", "DE.Controllers.Toolbar.txtSymbol_less": "По-малко от", "DE.Controllers.Toolbar.txtSymbol_ll": "Много по-малко", - "DE.Controllers.Toolbar.txtSymbol_minus": "минус", + "DE.Controllers.Toolbar.txtSymbol_minus": "Минус", "DE.Controllers.Toolbar.txtSymbol_mp": "Минус плюс", "DE.Controllers.Toolbar.txtSymbol_mu": "Му", - "DE.Controllers.Toolbar.txtSymbol_nabla": "Nabla", + "DE.Controllers.Toolbar.txtSymbol_nabla": "Набла", "DE.Controllers.Toolbar.txtSymbol_neq": "Не е равно на", "DE.Controllers.Toolbar.txtSymbol_ni": "Съдържа като член", "DE.Controllers.Toolbar.txtSymbol_not": "Не се подписва", "DE.Controllers.Toolbar.txtSymbol_notexists": "Не съществува", "DE.Controllers.Toolbar.txtSymbol_nu": "Ну", "DE.Controllers.Toolbar.txtSymbol_o": "Омикрон", - "DE.Controllers.Toolbar.txtSymbol_omega": "омега", + "DE.Controllers.Toolbar.txtSymbol_omega": "Омега", "DE.Controllers.Toolbar.txtSymbol_partial": "Частичен диференциал", "DE.Controllers.Toolbar.txtSymbol_percent": "Процент", "DE.Controllers.Toolbar.txtSymbol_phi": "Фи", - "DE.Controllers.Toolbar.txtSymbol_pi": "пи", - "DE.Controllers.Toolbar.txtSymbol_plus": "плюс", + "DE.Controllers.Toolbar.txtSymbol_pi": "Пи", + "DE.Controllers.Toolbar.txtSymbol_plus": "Плюс", "DE.Controllers.Toolbar.txtSymbol_pm": "Плюс минус", "DE.Controllers.Toolbar.txtSymbol_propto": "Пропорционално на", "DE.Controllers.Toolbar.txtSymbol_psi": "Пси", "DE.Controllers.Toolbar.txtSymbol_qdrt": "Четвърти корен", "DE.Controllers.Toolbar.txtSymbol_qed": "Край на доказателството", "DE.Controllers.Toolbar.txtSymbol_rddots": "До дясната диагонална точка", - "DE.Controllers.Toolbar.txtSymbol_rho": "Rho", + "DE.Controllers.Toolbar.txtSymbol_rho": "Ро", "DE.Controllers.Toolbar.txtSymbol_rightarrow": "Дясна стрелка", - "DE.Controllers.Toolbar.txtSymbol_sigma": "Sigma", + "DE.Controllers.Toolbar.txtSymbol_sigma": "Сигма", "DE.Controllers.Toolbar.txtSymbol_sqrt": "Радикален знак", - "DE.Controllers.Toolbar.txtSymbol_tau": "тау", + "DE.Controllers.Toolbar.txtSymbol_tau": "Тау", "DE.Controllers.Toolbar.txtSymbol_therefore": "Следователно", - "DE.Controllers.Toolbar.txtSymbol_theta": "Theta", + "DE.Controllers.Toolbar.txtSymbol_theta": "Тета", "DE.Controllers.Toolbar.txtSymbol_times": "Знак за умножение", "DE.Controllers.Toolbar.txtSymbol_uparrow": "Стрелка нагоре", "DE.Controllers.Toolbar.txtSymbol_upsilon": "Ипсилон", - "DE.Controllers.Toolbar.txtSymbol_varepsilon": "Епсилон Вариант", + "DE.Controllers.Toolbar.txtSymbol_varepsilon": "Епсилон вариант", "DE.Controllers.Toolbar.txtSymbol_varphi": "Фи вариант", "DE.Controllers.Toolbar.txtSymbol_varpi": "Пи вариант", - "DE.Controllers.Toolbar.txtSymbol_varrho": "Rho вариант", + "DE.Controllers.Toolbar.txtSymbol_varrho": "Ро вариант", "DE.Controllers.Toolbar.txtSymbol_varsigma": "Сигма вариант", "DE.Controllers.Toolbar.txtSymbol_vartheta": "Тета вариант", "DE.Controllers.Toolbar.txtSymbol_vdots": "Вертикална елипса", "DE.Controllers.Toolbar.txtSymbol_xsi": "Xi", - "DE.Controllers.Toolbar.txtSymbol_zeta": "Zeta", + "DE.Controllers.Toolbar.txtSymbol_zeta": "Зета", "DE.Controllers.Viewport.textFitPage": "Побиране в страницата", "DE.Controllers.Viewport.textFitWidth": "Поставя се в ширина", "DE.Views.BookmarksDialog.textAdd": "Добави", "DE.Views.BookmarksDialog.textBookmarkName": "Име на отметката", - "DE.Views.BookmarksDialog.textClose": "Близо", + "DE.Views.BookmarksDialog.textClose": "Затвори", "DE.Views.BookmarksDialog.textCopy": "Копирай", "DE.Views.BookmarksDialog.textDelete": "Изтрий", "DE.Views.BookmarksDialog.textGetLink": "Получаване на връзка", "DE.Views.BookmarksDialog.textGoto": "Отиди на", "DE.Views.BookmarksDialog.textHidden": "Скрити отметки", - "DE.Views.BookmarksDialog.textLocation": "местоположение", - "DE.Views.BookmarksDialog.textName": "име", + "DE.Views.BookmarksDialog.textLocation": "Местоположение", + "DE.Views.BookmarksDialog.textName": "Име", "DE.Views.BookmarksDialog.textSort": "Сортиране по", "DE.Views.BookmarksDialog.textTitle": "Отбелязани", "DE.Views.BookmarksDialog.txtInvalidName": "Името на отметката може да съдържа само букви, цифри и долни черти и трябва да започва с буквата", "DE.Views.ChartSettings.textAdvanced": "Показване на разширените настройки", - "DE.Views.ChartSettings.textArea": "площ", - "DE.Views.ChartSettings.textBar": "бар", - "DE.Views.ChartSettings.textChartType": "Промяна на типа на диаметъра", + "DE.Views.ChartSettings.textArea": "Площ", + "DE.Views.ChartSettings.textBar": "Бар", + "DE.Views.ChartSettings.textChartType": "Промяна на типа на диаграмата", "DE.Views.ChartSettings.textColumn": "Колона", "DE.Views.ChartSettings.textEditData": "Редактиране на данни", "DE.Views.ChartSettings.textHeight": "Височина", - "DE.Views.ChartSettings.textLine": "линия", + "DE.Views.ChartSettings.textLine": "Линия", "DE.Views.ChartSettings.textOriginalSize": "Размер по подразбиране", - "DE.Views.ChartSettings.textPie": "пай", - "DE.Views.ChartSettings.textPoint": "XY (Скатер)", + "DE.Views.ChartSettings.textPie": "Кръгова", + "DE.Views.ChartSettings.textPoint": "XY (точкова)", "DE.Views.ChartSettings.textSize": "Размер", - "DE.Views.ChartSettings.textStock": "Наличност", - "DE.Views.ChartSettings.textStyle": "стил", - "DE.Views.ChartSettings.textSurface": "повърхност", + "DE.Views.ChartSettings.textStock": "Борсова", + "DE.Views.ChartSettings.textStyle": "Стил", + "DE.Views.ChartSettings.textSurface": "Повърхност", "DE.Views.ChartSettings.textUndock": "Откачете от панела", "DE.Views.ChartSettings.textWidth": "Ширина", "DE.Views.ChartSettings.textWrap": "Стил на опаковане", - "DE.Views.ChartSettings.txtBehind": "зад", + "DE.Views.ChartSettings.txtBehind": "Зад", "DE.Views.ChartSettings.txtInFront": "Отпред", "DE.Views.ChartSettings.txtInline": "В текста", "DE.Views.ChartSettings.txtSquare": "Квадрат", "DE.Views.ChartSettings.txtThrough": "През", - "DE.Views.ChartSettings.txtTight": "стегнат", - "DE.Views.ChartSettings.txtTitle": "диаграма", + "DE.Views.ChartSettings.txtTight": "Стегнат", + "DE.Views.ChartSettings.txtTitle": "Диаграма", "DE.Views.ChartSettings.txtTopAndBottom": "Отгоре и отдолу", "DE.Views.ControlSettingsDialog.cancelButtonText": "Откажи", "DE.Views.ControlSettingsDialog.okButtonText": "Добре", "DE.Views.ControlSettingsDialog.textAppearance": "Външен вид", "DE.Views.ControlSettingsDialog.textApplyAll": "Прилага за всички", "DE.Views.ControlSettingsDialog.textBox": "Ограничителна кутия", - "DE.Views.ControlSettingsDialog.textColor": "цвят", + "DE.Views.ControlSettingsDialog.textColor": "Цвят", "DE.Views.ControlSettingsDialog.textLock": "Заключване", "DE.Views.ControlSettingsDialog.textName": "Заглавие", - "DE.Views.ControlSettingsDialog.textNewColor": "Нов Потребителски Цвят", + "DE.Views.ControlSettingsDialog.textNewColor": "Нов потребителски цвят", "DE.Views.ControlSettingsDialog.textNone": "Нито един", "DE.Views.ControlSettingsDialog.textShowAs": "Покажете като", "DE.Views.ControlSettingsDialog.textSystemColor": "Система", - "DE.Views.ControlSettingsDialog.textTag": "свободен край", + "DE.Views.ControlSettingsDialog.textTag": "Свободен край", "DE.Views.ControlSettingsDialog.textTitle": "Настройки за контрол на съдържанието", "DE.Views.ControlSettingsDialog.txtLockDelete": "Контролът на съдържанието не може да бъде изтрит", "DE.Views.ControlSettingsDialog.txtLockEdit": "Съдържанието не може да се редактира", @@ -1067,9 +1065,9 @@ "DE.Views.CustomColumnsDialog.textColumns": "Брой колони", "DE.Views.CustomColumnsDialog.textSeparator": "Разделител на колони", "DE.Views.CustomColumnsDialog.textSpacing": "Разстояние между колоните", - "DE.Views.CustomColumnsDialog.textTitle": "колони", + "DE.Views.CustomColumnsDialog.textTitle": "Колони", "DE.Views.DocumentHolder.aboveText": "Над", - "DE.Views.DocumentHolder.addCommentText": "Добави Коментар", + "DE.Views.DocumentHolder.addCommentText": "Добави коментар", "DE.Views.DocumentHolder.advancedFrameText": "Разширени настройки", "DE.Views.DocumentHolder.advancedParagraphText": "Раздел „Разширени настройки“", "DE.Views.DocumentHolder.advancedTableText": "Таблица Разширени настройки", @@ -1079,9 +1077,9 @@ "DE.Views.DocumentHolder.breakBeforeText": "Страницата е прекъсната преди", "DE.Views.DocumentHolder.bulletsText": "Маркери и номериране", "DE.Views.DocumentHolder.cellAlignText": "Подравняване на клетката", - "DE.Views.DocumentHolder.cellText": "клетка", + "DE.Views.DocumentHolder.cellText": "Клетка", "DE.Views.DocumentHolder.centerText": "Центрирано", - "DE.Views.DocumentHolder.chartText": "Разширени настройки на диалог", + "DE.Views.DocumentHolder.chartText": "Разширени настройки на диаграмата", "DE.Views.DocumentHolder.columnText": "Колона", "DE.Views.DocumentHolder.deleteColumnText": "Изтриване на колона", "DE.Views.DocumentHolder.deleteRowText": "Изтриване на ред", @@ -1089,7 +1087,7 @@ "DE.Views.DocumentHolder.deleteText": "Изтрий", "DE.Views.DocumentHolder.direct270Text": "Завъртете текста нагоре", "DE.Views.DocumentHolder.direct90Text": "Завъртете текста надолу", - "DE.Views.DocumentHolder.directHText": "хоризонтален", + "DE.Views.DocumentHolder.directHText": "Хоризонтален", "DE.Views.DocumentHolder.directionText": "Текстова посока", "DE.Views.DocumentHolder.editChartText": "Редактиране на данни", "DE.Views.DocumentHolder.editFooterText": "Редактиране на долен колонтитул", @@ -1098,7 +1096,7 @@ "DE.Views.DocumentHolder.guestText": "Гост", "DE.Views.DocumentHolder.hyperlinkText": "Хипервръзка", "DE.Views.DocumentHolder.ignoreAllSpellText": "Игнорирай всичко", - "DE.Views.DocumentHolder.ignoreSpellText": "игнорирам", + "DE.Views.DocumentHolder.ignoreSpellText": "Игнорирам", "DE.Views.DocumentHolder.imageText": "Разширени настройки на изображението", "DE.Views.DocumentHolder.insertColumnLeftText": "Колона вляво", "DE.Views.DocumentHolder.insertColumnRightText": "Колона вдясно", @@ -1115,15 +1113,15 @@ "DE.Views.DocumentHolder.moreText": "Още варианти ...", "DE.Views.DocumentHolder.noSpellVariantsText": "Няма варианти", "DE.Views.DocumentHolder.originalSizeText": "Размер по подразбиране", - "DE.Views.DocumentHolder.paragraphText": "параграф", + "DE.Views.DocumentHolder.paragraphText": "Параграф", "DE.Views.DocumentHolder.removeHyperlinkText": "Премахване на хипервръзка", - "DE.Views.DocumentHolder.rightText": "прав", - "DE.Views.DocumentHolder.rowText": "ред", + "DE.Views.DocumentHolder.rightText": "Прав", + "DE.Views.DocumentHolder.rowText": "Ред", "DE.Views.DocumentHolder.saveStyleText": "Създайте нов стил", - "DE.Views.DocumentHolder.selectCellText": "Изберете Cell", + "DE.Views.DocumentHolder.selectCellText": "Изберете клетка", "DE.Views.DocumentHolder.selectColumnText": "Изберете колона", - "DE.Views.DocumentHolder.selectRowText": "Изберете Ред", - "DE.Views.DocumentHolder.selectTableText": "Изберете Таблица", + "DE.Views.DocumentHolder.selectRowText": "Изберете ред", + "DE.Views.DocumentHolder.selectTableText": "Изберете таблица", "DE.Views.DocumentHolder.selectText": "Изберете", "DE.Views.DocumentHolder.shapeText": "Разширени настройки за формата", "DE.Views.DocumentHolder.spellcheckText": "Проверка на правописа", @@ -1134,7 +1132,7 @@ "DE.Views.DocumentHolder.strSetup": "Настройка на подпис", "DE.Views.DocumentHolder.strSign": "Знак", "DE.Views.DocumentHolder.styleText": "Форматиране като стил", - "DE.Views.DocumentHolder.tableText": "маса", + "DE.Views.DocumentHolder.tableText": "Таблица", "DE.Views.DocumentHolder.textAlign": "Изравнете", "DE.Views.DocumentHolder.textArrange": "Подредете", "DE.Views.DocumentHolder.textArrangeBack": "Изпращане до фона", @@ -1143,25 +1141,25 @@ "DE.Views.DocumentHolder.textArrangeFront": "Доведете до преден план", "DE.Views.DocumentHolder.textContentControls": "Контрол на съдържанието", "DE.Views.DocumentHolder.textContinueNumbering": "Продължете с номерацията", - "DE.Views.DocumentHolder.textCopy": "копие", + "DE.Views.DocumentHolder.textCopy": "Копие", "DE.Views.DocumentHolder.textCrop": "Изрежете", "DE.Views.DocumentHolder.textCropFill": "Напълнете", - "DE.Views.DocumentHolder.textCropFit": "регулирате", + "DE.Views.DocumentHolder.textCropFit": "Регулирате", "DE.Views.DocumentHolder.textCut": "Изрежи", "DE.Views.DocumentHolder.textDistributeCols": "Разпределете колони", "DE.Views.DocumentHolder.textDistributeRows": "Разпределете редове", "DE.Views.DocumentHolder.textEditControls": "Настройки за контрол на съдържанието", - "DE.Views.DocumentHolder.textEditWrapBoundary": "Редактирайте Wrap Boundary", - "DE.Views.DocumentHolder.textFlipH": "Отрязва по хоринзонтала", + "DE.Views.DocumentHolder.textEditWrapBoundary": "Редактирайте границата на обтичане", + "DE.Views.DocumentHolder.textFlipH": "Отрязва по хоризонтала", "DE.Views.DocumentHolder.textFlipV": "Отрязване по вертикала", "DE.Views.DocumentHolder.textFollow": "Следвайте хода", - "DE.Views.DocumentHolder.textFromFile": "От файла", + "DE.Views.DocumentHolder.textFromFile": "От файл", "DE.Views.DocumentHolder.textFromUrl": "От URL", "DE.Views.DocumentHolder.textJoinList": "Присъединете се към предишния списък", "DE.Views.DocumentHolder.textNest": "Маса на гнездото", "DE.Views.DocumentHolder.textNextPage": "Следваща страница", "DE.Views.DocumentHolder.textNumberingValue": "Стойност на номерирането", - "DE.Views.DocumentHolder.textPaste": "паста", + "DE.Views.DocumentHolder.textPaste": "Паста", "DE.Views.DocumentHolder.textPrevPage": "Предишна страница", "DE.Views.DocumentHolder.textRefreshField": "Обновяване на полето", "DE.Views.DocumentHolder.textRemove": "Премахване", @@ -1182,7 +1180,7 @@ "DE.Views.DocumentHolder.textStartNumberingFrom": "Задайте стойност за номериране", "DE.Views.DocumentHolder.textTOC": "Съдържание", "DE.Views.DocumentHolder.textTOCSettings": "Настройки на съдържанието", - "DE.Views.DocumentHolder.textUndo": "премахвам", + "DE.Views.DocumentHolder.textUndo": "Отмени", "DE.Views.DocumentHolder.textUpdateAll": "Обновете цялата таблица", "DE.Views.DocumentHolder.textUpdatePages": "Обновете само номерата на страниците", "DE.Views.DocumentHolder.textUpdateTOC": "Обновяване на съдържанието", @@ -1198,9 +1196,9 @@ "DE.Views.DocumentHolder.txtAddTop": "Добавяне на горната граница", "DE.Views.DocumentHolder.txtAddVer": "Добавете вертикална линия", "DE.Views.DocumentHolder.txtAlignToChar": "Подравняване по характер", - "DE.Views.DocumentHolder.txtBehind": "зад", + "DE.Views.DocumentHolder.txtBehind": "Зад", "DE.Views.DocumentHolder.txtBorderProps": "Гранични свойства", - "DE.Views.DocumentHolder.txtBottom": "дъно", + "DE.Views.DocumentHolder.txtBottom": "Дъно", "DE.Views.DocumentHolder.txtColumnAlign": "Изравняване на колона", "DE.Views.DocumentHolder.txtDecreaseArg": "Намалете размера на аргумента", "DE.Views.DocumentHolder.txtDeleteArg": "Изтриване на аргумент", @@ -1211,13 +1209,13 @@ "DE.Views.DocumentHolder.txtDeleteGroupChar": "Изтриване на char", "DE.Views.DocumentHolder.txtDeleteRadical": "Изтриване на радикал", "DE.Views.DocumentHolder.txtDistribHor": "Разпределете хоризонтално", - "DE.Views.DocumentHolder.txtDistribVert": "Разпределете Вертикално", + "DE.Views.DocumentHolder.txtDistribVert": "Разпределете вертикално", "DE.Views.DocumentHolder.txtFractionLinear": "Промяна към линейна фракция", "DE.Views.DocumentHolder.txtFractionSkewed": "Промяна на изкривена фракция", "DE.Views.DocumentHolder.txtFractionStacked": "Промяна на натрупаната фракция", "DE.Views.DocumentHolder.txtGroup": "Група", "DE.Views.DocumentHolder.txtGroupCharOver": "Char над текста", - "DE.Views.DocumentHolder.txtGroupCharUnder": "Char под текст", + "DE.Views.DocumentHolder.txtGroupCharUnder": "Char под текста", "DE.Views.DocumentHolder.txtHideBottom": "Скриване на долната граница", "DE.Views.DocumentHolder.txtHideBottomLimit": "Скриване на долния лимит", "DE.Views.DocumentHolder.txtHideCloseBracket": "Скриване на затварящата скоба", @@ -1268,7 +1266,7 @@ "DE.Views.DocumentHolder.txtSquare": "Квадрат", "DE.Views.DocumentHolder.txtStretchBrackets": "Разтягащи скоби", "DE.Views.DocumentHolder.txtThrough": "През", - "DE.Views.DocumentHolder.txtTight": "стегнат", + "DE.Views.DocumentHolder.txtTight": "Стегнат", "DE.Views.DocumentHolder.txtTop": "Връх", "DE.Views.DocumentHolder.txtTopAndBottom": "Отгоре и отдолу", "DE.Views.DocumentHolder.txtUnderbar": "Бар под текст", @@ -1287,35 +1285,35 @@ "DE.Views.DropcapSettingsAdvanced.textBorderColor": "Цвят на границата", "DE.Views.DropcapSettingsAdvanced.textBorderDesc": "Кликнете върху диаграмата или използвайте бутони, за да изберете граници", "DE.Views.DropcapSettingsAdvanced.textBorderWidth": "Размер на границата", - "DE.Views.DropcapSettingsAdvanced.textBottom": "дъно", + "DE.Views.DropcapSettingsAdvanced.textBottom": "Дъно", "DE.Views.DropcapSettingsAdvanced.textCenter": "Центрирано", "DE.Views.DropcapSettingsAdvanced.textColumn": "Колона", "DE.Views.DropcapSettingsAdvanced.textDistance": "Разстояние от текста", - "DE.Views.DropcapSettingsAdvanced.textExact": "точно", + "DE.Views.DropcapSettingsAdvanced.textExact": "Точно", "DE.Views.DropcapSettingsAdvanced.textFlow": "Поточна рамка", "DE.Views.DropcapSettingsAdvanced.textFont": "Шрифт", "DE.Views.DropcapSettingsAdvanced.textFrame": "Кадър", "DE.Views.DropcapSettingsAdvanced.textHeight": "Височина", - "DE.Views.DropcapSettingsAdvanced.textHorizontal": "хоризонтален", + "DE.Views.DropcapSettingsAdvanced.textHorizontal": "Хоризонтален", "DE.Views.DropcapSettingsAdvanced.textInline": "Вградена рамка", "DE.Views.DropcapSettingsAdvanced.textInMargin": "По марджин", "DE.Views.DropcapSettingsAdvanced.textInText": "В текст", "DE.Views.DropcapSettingsAdvanced.textLeft": "Наляво", - "DE.Views.DropcapSettingsAdvanced.textMargin": "марж", + "DE.Views.DropcapSettingsAdvanced.textMargin": "Марж", "DE.Views.DropcapSettingsAdvanced.textMove": "Преместване с текст", - "DE.Views.DropcapSettingsAdvanced.textNewColor": "Нов Потребителски Цвят", + "DE.Views.DropcapSettingsAdvanced.textNewColor": "Нов потребителски цвят", "DE.Views.DropcapSettingsAdvanced.textNone": "Нито един", - "DE.Views.DropcapSettingsAdvanced.textPage": "страница", - "DE.Views.DropcapSettingsAdvanced.textParagraph": "параграф", + "DE.Views.DropcapSettingsAdvanced.textPage": "Страница", + "DE.Views.DropcapSettingsAdvanced.textParagraph": "Параграф", "DE.Views.DropcapSettingsAdvanced.textParameters": "Параметри", - "DE.Views.DropcapSettingsAdvanced.textPosition": "позиция", + "DE.Views.DropcapSettingsAdvanced.textPosition": "Позиция", "DE.Views.DropcapSettingsAdvanced.textRelative": "Свързано с", - "DE.Views.DropcapSettingsAdvanced.textRight": "прав", - "DE.Views.DropcapSettingsAdvanced.textRowHeight": "Виочина в редове", - "DE.Views.DropcapSettingsAdvanced.textTitle": "Drop Cap - Разширени настройки", - "DE.Views.DropcapSettingsAdvanced.textTitleFrame": "Frame - Разширени настройки", + "DE.Views.DropcapSettingsAdvanced.textRight": "Прав", + "DE.Views.DropcapSettingsAdvanced.textRowHeight": "Височина в редове", + "DE.Views.DropcapSettingsAdvanced.textTitle": "Пуснете капачка - Разширени настройки", + "DE.Views.DropcapSettingsAdvanced.textTitleFrame": "Кадър - Разширени настройки", "DE.Views.DropcapSettingsAdvanced.textTop": "Връх", - "DE.Views.DropcapSettingsAdvanced.textVertical": "вертикален", + "DE.Views.DropcapSettingsAdvanced.textVertical": "Вертикален", "DE.Views.DropcapSettingsAdvanced.textWidth": "Ширина", "DE.Views.DropcapSettingsAdvanced.tipFontName": "Шрифт", "DE.Views.DropcapSettingsAdvanced.txtNoBorders": "Няма граници", @@ -1326,8 +1324,8 @@ "DE.Views.FileMenu.btnHelpCaption": "Помощ...", "DE.Views.FileMenu.btnHistoryCaption": "История на версиите", "DE.Views.FileMenu.btnInfoCaption": "Информация за документа ...", - "DE.Views.FileMenu.btnPrintCaption": "Отпечатване", - "DE.Views.FileMenu.btnProtectCaption": "защитавам", + "DE.Views.FileMenu.btnPrintCaption": "Печат", + "DE.Views.FileMenu.btnProtectCaption": "Защитавам", "DE.Views.FileMenu.btnRecentFilesCaption": "Отваряне на последните ...", "DE.Views.FileMenu.btnRenameCaption": "Преименуване ...", "DE.Views.FileMenu.btnReturnCaption": "Назад към документа", @@ -1345,19 +1343,18 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Няма шаблони", "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Приложение", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Автор", - "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Промяна на английски език за Достъп", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Дата на създаването", + "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Промяна на правото за достъп", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Зареждане...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Страници", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Параграфи", - "DE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "местоположение", + "DE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Местоположение", "DE.Views.FileMenuPanels.DocumentInfo.txtRights": "Лица, които имат права", "DE.Views.FileMenuPanels.DocumentInfo.txtSpaces": "Символи с интервали", "DE.Views.FileMenuPanels.DocumentInfo.txtStatistics": "Статистика", "DE.Views.FileMenuPanels.DocumentInfo.txtSymbols": "Символи", "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Заглавие на документ", "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Думи", - "DE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Промяна на английски език за Достъп", + "DE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Промяна на правото за достъп", "DE.Views.FileMenuPanels.DocumentRights.txtRights": "Лица, които имат права", "DE.Views.FileMenuPanels.ProtectDoc.notcriticalErrorTitle": "Внимание", "DE.Views.FileMenuPanels.ProtectDoc.strEncrypt": "С парола", @@ -1385,7 +1382,7 @@ "DE.Views.FileMenuPanels.Settings.strResolvedComment": "Включете показването на разрешените коментари", "DE.Views.FileMenuPanels.Settings.strShowChanges": "Промени в сътрудничеството в реално време", "DE.Views.FileMenuPanels.Settings.strSpellCheckMode": "Включване на опцията за проверка на правописа", - "DE.Views.FileMenuPanels.Settings.strStrict": "стриктен", + "DE.Views.FileMenuPanels.Settings.strStrict": "Стриктен", "DE.Views.FileMenuPanels.Settings.strUnit": "Единица за измерване", "DE.Views.FileMenuPanels.Settings.strZoom": "Стойност на мащаба по подразбиране", "DE.Views.FileMenuPanels.Settings.text10Minutes": "На всеки 10 минути", @@ -1395,7 +1392,7 @@ "DE.Views.FileMenuPanels.Settings.textAlignGuides": "Ръководства за подравняване", "DE.Views.FileMenuPanels.Settings.textAutoRecover": "Автовъзстановяване", "DE.Views.FileMenuPanels.Settings.textAutoSave": "Автоматично записване", - "DE.Views.FileMenuPanels.Settings.textDisabled": "хора с увреждания", + "DE.Views.FileMenuPanels.Settings.textDisabled": "Хора с увреждания", "DE.Views.FileMenuPanels.Settings.textForceSave": "Запазване в сървър", "DE.Views.FileMenuPanels.Settings.textMinute": "Всяка минута", "DE.Views.FileMenuPanels.Settings.txtAll": "Виж всички", @@ -1408,7 +1405,7 @@ "DE.Views.FileMenuPanels.Settings.txtLiveComment": "Коментиране на дисплея", "DE.Views.FileMenuPanels.Settings.txtMac": "като OS X", "DE.Views.FileMenuPanels.Settings.txtNative": "Местен", - "DE.Views.FileMenuPanels.Settings.txtNone": "Изглед Няма", + "DE.Views.FileMenuPanels.Settings.txtNone": "Изглед няма", "DE.Views.FileMenuPanels.Settings.txtPt": "Точка", "DE.Views.FileMenuPanels.Settings.txtSpellCheck": "Проверка на правописа", "DE.Views.FileMenuPanels.Settings.txtWin": "като Windows", @@ -1425,7 +1422,7 @@ "DE.Views.HeaderFooterSettings.textOptions": "Настроики", "DE.Views.HeaderFooterSettings.textPageNum": "Вмъкване на номер на страница", "DE.Views.HeaderFooterSettings.textPageNumbering": "Номериране на страници", - "DE.Views.HeaderFooterSettings.textPosition": "позиция", + "DE.Views.HeaderFooterSettings.textPosition": "Позиция", "DE.Views.HeaderFooterSettings.textPrev": "Продължете от предишния раздел", "DE.Views.HeaderFooterSettings.textSameAs": "Връзка към предишна", "DE.Views.HeaderFooterSettings.textTopCenter": "Нагоре в центъра", @@ -1435,8 +1432,8 @@ "DE.Views.HyperlinkSettingsDialog.cancelButtonText": "Откажи", "DE.Views.HyperlinkSettingsDialog.okButtonText": "Добре", "DE.Views.HyperlinkSettingsDialog.textDefault": "Избран фрагмент от текст", - "DE.Views.HyperlinkSettingsDialog.textDisplay": "показ", - "DE.Views.HyperlinkSettingsDialog.textExternal": "външен линк", + "DE.Views.HyperlinkSettingsDialog.textDisplay": "Показ", + "DE.Views.HyperlinkSettingsDialog.textExternal": "Външен линк", "DE.Views.HyperlinkSettingsDialog.textInternal": "Поставете в документ", "DE.Views.HyperlinkSettingsDialog.textTitle": "Настройки за хипервръзки", "DE.Views.HyperlinkSettingsDialog.textTooltip": "Текст на екрана", @@ -1449,17 +1446,17 @@ "DE.Views.ImageSettings.textAdvanced": "Показване на разширените настройки", "DE.Views.ImageSettings.textCrop": "Изрежете", "DE.Views.ImageSettings.textCropFill": "Напълнете", - "DE.Views.ImageSettings.textCropFit": "регулирате", - "DE.Views.ImageSettings.textEdit": "редактиране", + "DE.Views.ImageSettings.textCropFit": "Регулирате", + "DE.Views.ImageSettings.textEdit": "Редактиране", "DE.Views.ImageSettings.textEditObject": "Редактиране на обект", "DE.Views.ImageSettings.textFitMargins": "Подходящ за марджин", - "DE.Views.ImageSettings.textFlip": "отразява", + "DE.Views.ImageSettings.textFlip": "Отразява", "DE.Views.ImageSettings.textFromFile": "От файл", "DE.Views.ImageSettings.textFromUrl": "От URL", "DE.Views.ImageSettings.textHeight": "Височина", "DE.Views.ImageSettings.textHint270": "Завъртете на 90 ° обратно на часовниковата стрелка", - "DE.Views.ImageSettings.textHint90": "Завъртете надясно на 90 °", - "DE.Views.ImageSettings.textHintFlipH": "Обърнете наляво-надясно", + "DE.Views.ImageSettings.textHint90": "Завъртете на 90 ° по посока на часовниковата стрелка", + "DE.Views.ImageSettings.textHintFlipH": "Отрязва по хоризонтала", "DE.Views.ImageSettings.textHintFlipV": "Отрязване по вертикала", "DE.Views.ImageSettings.textInsert": "Замяна на изображението", "DE.Views.ImageSettings.textOriginalSize": "Размер по подразбиране", @@ -1468,12 +1465,12 @@ "DE.Views.ImageSettings.textSize": "Размер", "DE.Views.ImageSettings.textWidth": "Ширина", "DE.Views.ImageSettings.textWrap": "Стил на опаковане", - "DE.Views.ImageSettings.txtBehind": "зад", + "DE.Views.ImageSettings.txtBehind": "Зад", "DE.Views.ImageSettings.txtInFront": "Отпред", "DE.Views.ImageSettings.txtInline": "В текста", "DE.Views.ImageSettings.txtSquare": "Квадрат", "DE.Views.ImageSettings.txtThrough": "През", - "DE.Views.ImageSettings.txtTight": "стегнат", + "DE.Views.ImageSettings.txtTight": "Стегнат", "DE.Views.ImageSettings.txtTopAndBottom": "Отгоре и отдолу", "DE.Views.ImageSettingsAdvanced.cancelButtonText": "Откажи ", "DE.Views.ImageSettingsAdvanced.okButtonText": "Добре", @@ -1484,47 +1481,47 @@ "DE.Views.ImageSettingsAdvanced.textAltDescription": "Описание", "DE.Views.ImageSettingsAdvanced.textAltTip": "Алтернативното текстово представяне на визуалната информация за обекта, което ще бъде прочетено на хората с визуални или когнитивни увреждания, за да им помогне да разберат по-добре каква информация има в изображението, автосистемата, диаграмата или таблицата.", "DE.Views.ImageSettingsAdvanced.textAltTitle": "Заглавие", - "DE.Views.ImageSettingsAdvanced.textAngle": "ъгъл", - "DE.Views.ImageSettingsAdvanced.textArrows": "стрелките", + "DE.Views.ImageSettingsAdvanced.textAngle": "Ъгъл", + "DE.Views.ImageSettingsAdvanced.textArrows": "Стрелките", "DE.Views.ImageSettingsAdvanced.textAspectRatio": "Заключване на пропорциите", "DE.Views.ImageSettingsAdvanced.textBeginSize": "Начален размер", "DE.Views.ImageSettingsAdvanced.textBeginStyle": "Започнете стила", - "DE.Views.ImageSettingsAdvanced.textBelow": "По-долу", - "DE.Views.ImageSettingsAdvanced.textBevel": "откос", - "DE.Views.ImageSettingsAdvanced.textBottom": "дъно", + "DE.Views.ImageSettingsAdvanced.textBelow": "по-долу", + "DE.Views.ImageSettingsAdvanced.textBevel": "Откос", + "DE.Views.ImageSettingsAdvanced.textBottom": "Дъно", "DE.Views.ImageSettingsAdvanced.textBottomMargin": "Долен праг", "DE.Views.ImageSettingsAdvanced.textBtnWrap": "Опаковане на текст", "DE.Views.ImageSettingsAdvanced.textCapType": "Тип на капачката", "DE.Views.ImageSettingsAdvanced.textCenter": "Центрирано", - "DE.Views.ImageSettingsAdvanced.textCharacter": "характер", + "DE.Views.ImageSettingsAdvanced.textCharacter": "Знак", "DE.Views.ImageSettingsAdvanced.textColumn": "Колона", "DE.Views.ImageSettingsAdvanced.textDistance": "Разстояние от текста", "DE.Views.ImageSettingsAdvanced.textEndSize": "Размер на края", "DE.Views.ImageSettingsAdvanced.textEndStyle": "Краен стил", - "DE.Views.ImageSettingsAdvanced.textFlat": "Апартамент", + "DE.Views.ImageSettingsAdvanced.textFlat": "Плосък", "DE.Views.ImageSettingsAdvanced.textFlipped": "Огледален", "DE.Views.ImageSettingsAdvanced.textHeight": "Височина", - "DE.Views.ImageSettingsAdvanced.textHorizontal": "хоризонтален", + "DE.Views.ImageSettingsAdvanced.textHorizontal": "Хоризонтален", "DE.Views.ImageSettingsAdvanced.textHorizontally": "Хоризонтално", "DE.Views.ImageSettingsAdvanced.textJoinType": "Тип на присъединяване", "DE.Views.ImageSettingsAdvanced.textKeepRatio": "Постоянни пропорции", "DE.Views.ImageSettingsAdvanced.textLeft": "Наляво", "DE.Views.ImageSettingsAdvanced.textLeftMargin": "Ляв марж", - "DE.Views.ImageSettingsAdvanced.textLine": "линия", + "DE.Views.ImageSettingsAdvanced.textLine": "Линия", "DE.Views.ImageSettingsAdvanced.textLineStyle": "Стил на линията", - "DE.Views.ImageSettingsAdvanced.textMargin": "марж", - "DE.Views.ImageSettingsAdvanced.textMiter": "митра", + "DE.Views.ImageSettingsAdvanced.textMargin": "Марж", + "DE.Views.ImageSettingsAdvanced.textMiter": "Митра", "DE.Views.ImageSettingsAdvanced.textMove": "Преместване на обект с текст", "DE.Views.ImageSettingsAdvanced.textOptions": "Настроики", "DE.Views.ImageSettingsAdvanced.textOriginalSize": "Размер по подразбиране", "DE.Views.ImageSettingsAdvanced.textOverlap": "Разрешаване на припокриване", - "DE.Views.ImageSettingsAdvanced.textPage": "страница", - "DE.Views.ImageSettingsAdvanced.textParagraph": "параграф", - "DE.Views.ImageSettingsAdvanced.textPosition": "позиция", + "DE.Views.ImageSettingsAdvanced.textPage": "Страница", + "DE.Views.ImageSettingsAdvanced.textParagraph": "Параграф", + "DE.Views.ImageSettingsAdvanced.textPosition": "Позиция", "DE.Views.ImageSettingsAdvanced.textPositionPc": "Относителна позиция", "DE.Views.ImageSettingsAdvanced.textRelative": "свързано с", - "DE.Views.ImageSettingsAdvanced.textRelativeWH": "относителен", - "DE.Views.ImageSettingsAdvanced.textRight": "прав", + "DE.Views.ImageSettingsAdvanced.textRelativeWH": "Относителен", + "DE.Views.ImageSettingsAdvanced.textRight": "Прав", "DE.Views.ImageSettingsAdvanced.textRightMargin": "Дясно поле", "DE.Views.ImageSettingsAdvanced.textRightOf": "вдясно от", "DE.Views.ImageSettingsAdvanced.textRotation": "Завъртане", @@ -1537,22 +1534,22 @@ "DE.Views.ImageSettingsAdvanced.textTitleShape": "Форма - Разширени настройки", "DE.Views.ImageSettingsAdvanced.textTop": "Връх", "DE.Views.ImageSettingsAdvanced.textTopMargin": "Топ марж", - "DE.Views.ImageSettingsAdvanced.textVertical": "вертикален", - "DE.Views.ImageSettingsAdvanced.textVertically": "вертикално", + "DE.Views.ImageSettingsAdvanced.textVertical": "Вертикален", + "DE.Views.ImageSettingsAdvanced.textVertically": "Вертикално", "DE.Views.ImageSettingsAdvanced.textWeightArrows": "Теглилки и стрелки", "DE.Views.ImageSettingsAdvanced.textWidth": "Ширина", "DE.Views.ImageSettingsAdvanced.textWrap": "Стил на опаковане", - "DE.Views.ImageSettingsAdvanced.textWrapBehindTooltip": "зад", + "DE.Views.ImageSettingsAdvanced.textWrapBehindTooltip": "Зад", "DE.Views.ImageSettingsAdvanced.textWrapInFrontTooltip": "Отпред", "DE.Views.ImageSettingsAdvanced.textWrapInlineTooltip": "В текста", "DE.Views.ImageSettingsAdvanced.textWrapSquareTooltip": "Квадрат", "DE.Views.ImageSettingsAdvanced.textWrapThroughTooltip": "През", - "DE.Views.ImageSettingsAdvanced.textWrapTightTooltip": "стегнат", + "DE.Views.ImageSettingsAdvanced.textWrapTightTooltip": "Стегнат", "DE.Views.ImageSettingsAdvanced.textWrapTopbottomTooltip": "Отгоре и отдолу", "DE.Views.LeftMenu.tipAbout": "Относно", "DE.Views.LeftMenu.tipChat": "Чат", "DE.Views.LeftMenu.tipComments": "Коментари", - "DE.Views.LeftMenu.tipNavigation": "навигация", + "DE.Views.LeftMenu.tipNavigation": "Навигация", "DE.Views.LeftMenu.tipPlugins": "Добавки", "DE.Views.LeftMenu.tipSearch": "Търсене", "DE.Views.LeftMenu.tipSupport": "Обратна връзка и поддръжка", @@ -1562,7 +1559,7 @@ "DE.Views.Links.capBtnBookmarks": "Отбелязан", "DE.Views.Links.capBtnContentsUpdate": "Обновяване", "DE.Views.Links.capBtnInsContents": "Съдържание", - "DE.Views.Links.capBtnInsFootnote": "бележка под линия", + "DE.Views.Links.capBtnInsFootnote": "Бележка под линия", "DE.Views.Links.capBtnInsLink": "Хипервръзка", "DE.Views.Links.confirmDeleteFootnotes": "Искате ли да изтриете всички бележки под линия?", "DE.Views.Links.mniDelFootnote": "Изтрийте всички бележки под линия", @@ -1570,25 +1567,25 @@ "DE.Views.Links.mniNoteSettings": "Настройки за бележки", "DE.Views.Links.textContentsRemove": "Премахване на съдържанието", "DE.Views.Links.textContentsSettings": "Настройки", - "DE.Views.Links.textGotoFootnote": "Отидете в Бележки под линия", + "DE.Views.Links.textGotoFootnote": "Отидете в бележки под линия", "DE.Views.Links.textUpdateAll": "Обновете цялата таблица", "DE.Views.Links.textUpdatePages": "Обновете само номерата на страниците", "DE.Views.Links.tipBookmarks": "Създайте маркер", "DE.Views.Links.tipContents": "Поставете съдържанието", "DE.Views.Links.tipContentsUpdate": "Обновяване на съдържанието", - "DE.Views.Links.tipInsertHyperlink": "Добави Връзка", + "DE.Views.Links.tipInsertHyperlink": "Добави връзка", "DE.Views.Links.tipNotes": "Вмъкване или редактиране на бележки под линия", "DE.Views.MailMergeEmailDlg.cancelButtonText": "Откажи", "DE.Views.MailMergeEmailDlg.filePlaceholder": "PDF", - "DE.Views.MailMergeEmailDlg.okButtonText": "изпращам", - "DE.Views.MailMergeEmailDlg.subjectPlaceholder": "тема", + "DE.Views.MailMergeEmailDlg.okButtonText": "Изпращам", + "DE.Views.MailMergeEmailDlg.subjectPlaceholder": "Тема", "DE.Views.MailMergeEmailDlg.textAttachDocx": "Прикачи като DOCX", "DE.Views.MailMergeEmailDlg.textAttachPdf": "Прикачване като PDF", "DE.Views.MailMergeEmailDlg.textFileName": "Име на файла", "DE.Views.MailMergeEmailDlg.textFormat": "Формат на пощата", "DE.Views.MailMergeEmailDlg.textFrom": "От", "DE.Views.MailMergeEmailDlg.textHTML": "HTML", - "DE.Views.MailMergeEmailDlg.textMessage": "съобщение", + "DE.Views.MailMergeEmailDlg.textMessage": "Съобщение", "DE.Views.MailMergeEmailDlg.textSubject": "Предмет", "DE.Views.MailMergeEmailDlg.textTitle": "Изпращане до имейл", "DE.Views.MailMergeEmailDlg.textTo": "Да се", @@ -1603,14 +1600,14 @@ "DE.Views.MailMergeSettings.textDataSource": "Източник на данни", "DE.Views.MailMergeSettings.textDocx": "Docx", "DE.Views.MailMergeSettings.textDownload": "Изтегли", - "DE.Views.MailMergeSettings.textEditData": "Редактирате Секция с получатели", - "DE.Views.MailMergeSettings.textEmail": "електронна поща", + "DE.Views.MailMergeSettings.textEditData": "Редактирате секция с получатели", + "DE.Views.MailMergeSettings.textEmail": "Електронна поща", "DE.Views.MailMergeSettings.textFrom": "От", - "DE.Views.MailMergeSettings.textGoToMail": "Отидете в Mail", + "DE.Views.MailMergeSettings.textGoToMail": "Отидете в Поща", "DE.Views.MailMergeSettings.textHighlight": "Маркирайте полета за сливане", "DE.Views.MailMergeSettings.textInsertField": "Вмъкване на поле за сливане", "DE.Views.MailMergeSettings.textMaxRecepients": "Макс. 100 получатели.", - "DE.Views.MailMergeSettings.textMerge": "сливам", + "DE.Views.MailMergeSettings.textMerge": "Сливам", "DE.Views.MailMergeSettings.textMergeFields": "Обединяване на полета", "DE.Views.MailMergeSettings.textMergeTo": "Обединяване с", "DE.Views.MailMergeSettings.textPdf": "PDF", @@ -1624,10 +1621,10 @@ "DE.Views.MailMergeSettings.txtLast": "За последния запис", "DE.Views.MailMergeSettings.txtNext": "За следващия запис", "DE.Views.MailMergeSettings.txtPrev": "Към предишния запис", - "DE.Views.MailMergeSettings.txtUntitled": "неозаглавен", + "DE.Views.MailMergeSettings.txtUntitled": "Неозаглавен", "DE.Views.MailMergeSettings.warnProcessMailMerge": "Започването на сливане не бе успешно", "DE.Views.Navigation.txtCollapse": "Свиване на всички", - "DE.Views.Navigation.txtDemote": "понижавам", + "DE.Views.Navigation.txtDemote": "Понижавам", "DE.Views.Navigation.txtEmpty": "Този документ не съдържа заглавия", "DE.Views.Navigation.txtEmptyItem": "Празно заглавие", "DE.Views.Navigation.txtExpand": "Разгънете всички", @@ -1640,15 +1637,15 @@ "DE.Views.NoteSettingsDialog.textApply": "Приложи", "DE.Views.NoteSettingsDialog.textApplyTo": "Прилагане на промените към", "DE.Views.NoteSettingsDialog.textCancel": "Откажи", - "DE.Views.NoteSettingsDialog.textContinue": "непрекъснат", + "DE.Views.NoteSettingsDialog.textContinue": "Непрекъснат", "DE.Views.NoteSettingsDialog.textCustom": "Персонализирана марка", "DE.Views.NoteSettingsDialog.textDocument": "Целият документ", "DE.Views.NoteSettingsDialog.textEachPage": "Рестартирайте всяка страница", "DE.Views.NoteSettingsDialog.textEachSection": "Рестартирайте всяка секция", - "DE.Views.NoteSettingsDialog.textFootnote": "бележка под линия", - "DE.Views.NoteSettingsDialog.textFormat": "формат", + "DE.Views.NoteSettingsDialog.textFootnote": "Бележка под линия", + "DE.Views.NoteSettingsDialog.textFormat": "Формат", "DE.Views.NoteSettingsDialog.textInsert": "Вмъкни", - "DE.Views.NoteSettingsDialog.textLocation": "местоположение", + "DE.Views.NoteSettingsDialog.textLocation": "Местоположение", "DE.Views.NoteSettingsDialog.textNumbering": "Номериране", "DE.Views.NoteSettingsDialog.textNumFormat": "Формат на номера", "DE.Views.NoteSettingsDialog.textPageBottom": "В долната част на страницата", @@ -1661,9 +1658,9 @@ "DE.Views.PageMarginsDialog.cancelButtonText": "Откажи", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Внимание", "DE.Views.PageMarginsDialog.okButtonText": "Добре", - "DE.Views.PageMarginsDialog.textBottom": "дъно", + "DE.Views.PageMarginsDialog.textBottom": "Дъно", "DE.Views.PageMarginsDialog.textLeft": "Наляво", - "DE.Views.PageMarginsDialog.textRight": "прав", + "DE.Views.PageMarginsDialog.textRight": "Прав", "DE.Views.PageMarginsDialog.textTitle": "Полета", "DE.Views.PageMarginsDialog.textTop": "Връх", "DE.Views.PageMarginsDialog.txtMarginsH": "Горната и долната граници са твърде високи за дадена височина на страницата", @@ -1681,12 +1678,12 @@ "DE.Views.ParagraphSettings.strSpacingAfter": "След", "DE.Views.ParagraphSettings.strSpacingBefore": "Преди", "DE.Views.ParagraphSettings.textAdvanced": "Показване на разширените настройки", - "DE.Views.ParagraphSettings.textAt": "при", + "DE.Views.ParagraphSettings.textAt": "При", "DE.Views.ParagraphSettings.textAtLeast": "Поне", "DE.Views.ParagraphSettings.textAuto": "Многократни", "DE.Views.ParagraphSettings.textBackColor": "Цвят на фона", - "DE.Views.ParagraphSettings.textExact": "точно", - "DE.Views.ParagraphSettings.textNewColor": "Нов Потребителски Цвят", + "DE.Views.ParagraphSettings.textExact": "Точно", + "DE.Views.ParagraphSettings.textNewColor": "Нов потребителски цвят", "DE.Views.ParagraphSettings.txtAutoText": "Автоматичен", "DE.Views.ParagraphSettingsAdvanced.cancelButtonText": "Откажи", "DE.Views.ParagraphSettingsAdvanced.noTabs": "Посочените раздели ще се появят в това поле", @@ -1697,14 +1694,14 @@ "DE.Views.ParagraphSettingsAdvanced.strDoubleStrike": "Двойно зачертаване", "DE.Views.ParagraphSettingsAdvanced.strIndentsFirstLine": "Първа линия", "DE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "Наляво", - "DE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "прав", + "DE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "Прав", "DE.Views.ParagraphSettingsAdvanced.strKeepLines": "Поддържайте линиите заедно", "DE.Views.ParagraphSettingsAdvanced.strKeepNext": "Продължете със следващия", "DE.Views.ParagraphSettingsAdvanced.strMargins": "Прокладки", "DE.Views.ParagraphSettingsAdvanced.strOrphan": "Контрол на сираци", "DE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Шрифт", "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отстъп и разположение", - "DE.Views.ParagraphSettingsAdvanced.strParagraphPosition": "поставяне", + "DE.Views.ParagraphSettingsAdvanced.strParagraphPosition": "Поставяне", "DE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Малки букви", "DE.Views.ParagraphSettingsAdvanced.strStrike": "Зачеркнато", "DE.Views.ParagraphSettingsAdvanced.strSubscript": "Долен", @@ -1713,26 +1710,26 @@ "DE.Views.ParagraphSettingsAdvanced.textAlign": "Подравняване", "DE.Views.ParagraphSettingsAdvanced.textBackColor": "Цвят на фона", "DE.Views.ParagraphSettingsAdvanced.textBorderColor": "Цвят на границата", - "DE.Views.ParagraphSettingsAdvanced.textBorderDesc": "Кликнете върху диалога или използвайте бутоните, за да изберете граници и да приложите избрания стил към тях", + "DE.Views.ParagraphSettingsAdvanced.textBorderDesc": "Кликнете върху диаграмата или използвайте бутони, за да изберете граници и да приложите избрания стил към тях", "DE.Views.ParagraphSettingsAdvanced.textBorderWidth": "Размер на границата", - "DE.Views.ParagraphSettingsAdvanced.textBottom": "дъно", + "DE.Views.ParagraphSettingsAdvanced.textBottom": "Дъно", "DE.Views.ParagraphSettingsAdvanced.textCharacterSpacing": "Разстояние между знаците", "DE.Views.ParagraphSettingsAdvanced.textDefault": "Разделът по подразбиране", - "DE.Views.ParagraphSettingsAdvanced.textEffects": "вещи", - "DE.Views.ParagraphSettingsAdvanced.textLeader": "водач", + "DE.Views.ParagraphSettingsAdvanced.textEffects": "Ефекти", + "DE.Views.ParagraphSettingsAdvanced.textLeader": "Водач", "DE.Views.ParagraphSettingsAdvanced.textLeft": "Наляво", - "DE.Views.ParagraphSettingsAdvanced.textNewColor": "Нов Потребителски Цвят", + "DE.Views.ParagraphSettingsAdvanced.textNewColor": "Нов потребителски цвят", "DE.Views.ParagraphSettingsAdvanced.textNone": "Нито един", - "DE.Views.ParagraphSettingsAdvanced.textPosition": "позиция", + "DE.Views.ParagraphSettingsAdvanced.textPosition": "Позиция", "DE.Views.ParagraphSettingsAdvanced.textRemove": "Премахване", "DE.Views.ParagraphSettingsAdvanced.textRemoveAll": "Премахнете всички", - "DE.Views.ParagraphSettingsAdvanced.textRight": "прав", + "DE.Views.ParagraphSettingsAdvanced.textRight": "Прав", "DE.Views.ParagraphSettingsAdvanced.textSet": "Посочете", "DE.Views.ParagraphSettingsAdvanced.textSpacing": "Разстояние", "DE.Views.ParagraphSettingsAdvanced.textTabCenter": "Центрирано", "DE.Views.ParagraphSettingsAdvanced.textTabLeft": "Наляво", "DE.Views.ParagraphSettingsAdvanced.textTabPosition": "Позиция на раздела", - "DE.Views.ParagraphSettingsAdvanced.textTabRight": "прав", + "DE.Views.ParagraphSettingsAdvanced.textTabRight": "Прав", "DE.Views.ParagraphSettingsAdvanced.textTitle": "Параграф - Разширени настройки", "DE.Views.ParagraphSettingsAdvanced.textTop": "Връх", "DE.Views.ParagraphSettingsAdvanced.tipAll": "Задайте външната граница и всички вътрешни линии", @@ -1744,7 +1741,7 @@ "DE.Views.ParagraphSettingsAdvanced.tipRight": "Задайте правилната граница само", "DE.Views.ParagraphSettingsAdvanced.tipTop": "Задайте само горната граница", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "Няма граници", - "DE.Views.RightMenu.txtChartSettings": "Настройки на диалог", + "DE.Views.RightMenu.txtChartSettings": "Настройки на диаграмата", "DE.Views.RightMenu.txtHeaderFooterSettings": "Настройки на горен и долен колонтитул", "DE.Views.RightMenu.txtImageSettings": "Настройки на изображението", "DE.Views.RightMenu.txtMailMergeSettings": "Настройки за обединяване на поща", @@ -1754,60 +1751,60 @@ "DE.Views.RightMenu.txtTableSettings": "Настройки на таблицата", "DE.Views.RightMenu.txtTextArtSettings": "Настройки за текстово изкуство", "DE.Views.ShapeSettings.strBackground": "Цвят на фона", - "DE.Views.ShapeSettings.strChange": "Промяна на Autoshape", - "DE.Views.ShapeSettings.strColor": "цвят", + "DE.Views.ShapeSettings.strChange": "Промяна на автоматична форма", + "DE.Views.ShapeSettings.strColor": "Цвят", "DE.Views.ShapeSettings.strFill": "Напълнете", "DE.Views.ShapeSettings.strForeground": "Цвят на преден план", - "DE.Views.ShapeSettings.strPattern": "модел", + "DE.Views.ShapeSettings.strPattern": "Модел", "DE.Views.ShapeSettings.strSize": "Размер", "DE.Views.ShapeSettings.strStroke": "Удар", - "DE.Views.ShapeSettings.strTransparency": "непрозрачност", + "DE.Views.ShapeSettings.strTransparency": "Непрозрачност", "DE.Views.ShapeSettings.strType": "Тип", "DE.Views.ShapeSettings.textAdvanced": "Показване на разширените настройки", "DE.Views.ShapeSettings.textBorderSizeErr": "Въведената стойност е неправилна.
      Въведете стойност между 0 pt и 1584 pt.", "DE.Views.ShapeSettings.textColor": "Цветово пълнене", "DE.Views.ShapeSettings.textDirection": "Посока", "DE.Views.ShapeSettings.textEmptyPattern": "Без модел", - "DE.Views.ShapeSettings.textFlip": "отразява", + "DE.Views.ShapeSettings.textFlip": "Отразява", "DE.Views.ShapeSettings.textFromFile": "От файл", "DE.Views.ShapeSettings.textFromUrl": "От URL", "DE.Views.ShapeSettings.textGradient": "Градиент", "DE.Views.ShapeSettings.textGradientFill": "Градиентно запълване", "DE.Views.ShapeSettings.textHint270": "Завъртете на 90 ° обратно на часовниковата стрелка", "DE.Views.ShapeSettings.textHint90": "Завъртете на 90 ° по посока на часовниковата стрелка", - "DE.Views.ShapeSettings.textHintFlipH": "Обърнете наляво-надясно", + "DE.Views.ShapeSettings.textHintFlipH": "Отрязва по хоризонтала", "DE.Views.ShapeSettings.textHintFlipV": "Отрязване по вертикала", "DE.Views.ShapeSettings.textImageTexture": "Картина или текстура", - "DE.Views.ShapeSettings.textLinear": "линеен", - "DE.Views.ShapeSettings.textNewColor": "Нов Потребителски Цвят", + "DE.Views.ShapeSettings.textLinear": "Линеен", + "DE.Views.ShapeSettings.textNewColor": "Нов потребителски цвят", "DE.Views.ShapeSettings.textNoFill": "Без попълване", - "DE.Views.ShapeSettings.textPatternFill": "модел", - "DE.Views.ShapeSettings.textRadial": "радиален", + "DE.Views.ShapeSettings.textPatternFill": "Модел", + "DE.Views.ShapeSettings.textRadial": "Радиален", "DE.Views.ShapeSettings.textRotate90": "Завъртане на 90 °", "DE.Views.ShapeSettings.textRotation": "Завъртане", "DE.Views.ShapeSettings.textSelectTexture": "Изберете", - "DE.Views.ShapeSettings.textStretch": "Опъвам, разтягам", - "DE.Views.ShapeSettings.textStyle": "стил", + "DE.Views.ShapeSettings.textStretch": "Разтягане", + "DE.Views.ShapeSettings.textStyle": "Стил", "DE.Views.ShapeSettings.textTexture": "От текстура", - "DE.Views.ShapeSettings.textTile": "плочка", + "DE.Views.ShapeSettings.textTile": "Плочка", "DE.Views.ShapeSettings.textWrap": "Стил на опаковане", - "DE.Views.ShapeSettings.txtBehind": "зад", + "DE.Views.ShapeSettings.txtBehind": "Зад", "DE.Views.ShapeSettings.txtBrownPaper": "Кафява хартия", "DE.Views.ShapeSettings.txtCanvas": "Платно", - "DE.Views.ShapeSettings.txtCarton": "картонена кутия", + "DE.Views.ShapeSettings.txtCarton": "Картонена кутия", "DE.Views.ShapeSettings.txtDarkFabric": "Тъмна тъкан", "DE.Views.ShapeSettings.txtGrain": "Зърно", "DE.Views.ShapeSettings.txtGranite": "Гранит", "DE.Views.ShapeSettings.txtGreyPaper": "Сива хартия", "DE.Views.ShapeSettings.txtInFront": "Отпред", "DE.Views.ShapeSettings.txtInline": "В текста", - "DE.Views.ShapeSettings.txtKnit": "плета", + "DE.Views.ShapeSettings.txtKnit": "Плета", "DE.Views.ShapeSettings.txtLeather": "Кожа", "DE.Views.ShapeSettings.txtNoBorders": "Няма линия", - "DE.Views.ShapeSettings.txtPapyrus": "папирус", + "DE.Views.ShapeSettings.txtPapyrus": "Папирус", "DE.Views.ShapeSettings.txtSquare": "Квадрат", "DE.Views.ShapeSettings.txtThrough": "През", - "DE.Views.ShapeSettings.txtTight": "стегнат", + "DE.Views.ShapeSettings.txtTight": "Стегнат", "DE.Views.ShapeSettings.txtTopAndBottom": "Отгоре и отдолу", "DE.Views.ShapeSettings.txtWood": "Дърво", "DE.Views.SignatureSettings.notcriticalErrorTitle": "Внимание", @@ -1818,10 +1815,10 @@ "DE.Views.SignatureSettings.strSetup": "Настройка на подпис", "DE.Views.SignatureSettings.strSign": "Знак", "DE.Views.SignatureSettings.strSignature": "Подпис", - "DE.Views.SignatureSettings.strSigner": "синьор", + "DE.Views.SignatureSettings.strSigner": "Подписал", "DE.Views.SignatureSettings.strValid": "Валидни подписи", "DE.Views.SignatureSettings.txtContinueEditing": "Все пак редактирайте", - "DE.Views.SignatureSettings.txtEditWarning": "Редактиране ще премахне подписите от документа.
      Наистина ли искате да продавате?", + "DE.Views.SignatureSettings.txtEditWarning": "Редактирането ще премахне подписите от документа.
      Наистина ли искате да продължите?", "DE.Views.SignatureSettings.txtRequestedSignatures": "Този документ трябва да бъде подписан.", "DE.Views.SignatureSettings.txtSigned": "Към документа са добавени валидни подписи. Документът е защитен от редактиране.", "DE.Views.SignatureSettings.txtSignedInvalid": "Някои от цифровите подписи в документа са невалидни или не могат да бъдат проверени. Документът е защитен от редактиране.", @@ -1839,11 +1836,11 @@ "DE.Views.StyleTitleDialog.textTitle": "Заглавие", "DE.Views.StyleTitleDialog.txtEmpty": "Това поле е задължително", "DE.Views.StyleTitleDialog.txtNotEmpty": "Полето не трябва да е празно", - "DE.Views.TableFormulaDialog.cancelButtonText": "Отказ", + "DE.Views.TableFormulaDialog.cancelButtonText": "Откажи", "DE.Views.TableFormulaDialog.okButtonText": "Добре", "DE.Views.TableFormulaDialog.textBookmark": "Поставяне на отметката", "DE.Views.TableFormulaDialog.textFormat": "Формат на номера", - "DE.Views.TableFormulaDialog.textFormula": "формула", + "DE.Views.TableFormulaDialog.textFormula": "Формула", "DE.Views.TableFormulaDialog.textInsertFunction": "Функция за поставяне", "DE.Views.TableFormulaDialog.textTitle": "Настройки на формулата", "DE.Views.TableOfContentsSettings.cancelButtonText": "Откажи", @@ -1852,20 +1849,20 @@ "DE.Views.TableOfContentsSettings.strLinks": "Форматиране на съдържанието като връзки", "DE.Views.TableOfContentsSettings.strShowPages": "Показване на номера на страници", "DE.Views.TableOfContentsSettings.textBuildTable": "Създайте съдържание от", - "DE.Views.TableOfContentsSettings.textLeader": "водач", - "DE.Views.TableOfContentsSettings.textLevel": "ниво", - "DE.Views.TableOfContentsSettings.textLevels": "нива", + "DE.Views.TableOfContentsSettings.textLeader": "Водач", + "DE.Views.TableOfContentsSettings.textLevel": "Ниво", + "DE.Views.TableOfContentsSettings.textLevels": "Нива", "DE.Views.TableOfContentsSettings.textNone": "Нито един", "DE.Views.TableOfContentsSettings.textRadioLevels": "Очертани нива", "DE.Views.TableOfContentsSettings.textRadioStyles": "Избрани стилове", - "DE.Views.TableOfContentsSettings.textStyle": "стил", + "DE.Views.TableOfContentsSettings.textStyle": "Стил", "DE.Views.TableOfContentsSettings.textStyles": "Стилове", "DE.Views.TableOfContentsSettings.textTitle": "Съдържание", - "DE.Views.TableOfContentsSettings.txtClassic": "класически", - "DE.Views.TableOfContentsSettings.txtCurrent": "текущ", - "DE.Views.TableOfContentsSettings.txtModern": "модерен", - "DE.Views.TableOfContentsSettings.txtSimple": "прост", - "DE.Views.TableOfContentsSettings.txtStandard": "стандарт", + "DE.Views.TableOfContentsSettings.txtClassic": "Класически", + "DE.Views.TableOfContentsSettings.txtCurrent": "Текущ", + "DE.Views.TableOfContentsSettings.txtModern": "Модерен", + "DE.Views.TableOfContentsSettings.txtSimple": "Прост", + "DE.Views.TableOfContentsSettings.txtStandard": "Стандарт", "DE.Views.TableSettings.deleteColumnText": "Изтриване на колона", "DE.Views.TableSettings.deleteRowText": "Изтриване на ред", "DE.Views.TableSettings.deleteTableText": "Изтриване на таблицата", @@ -1876,35 +1873,35 @@ "DE.Views.TableSettings.mergeCellsText": "Сливане на клетки", "DE.Views.TableSettings.selectCellText": "Изберете клетка", "DE.Views.TableSettings.selectColumnText": "Изберете колона", - "DE.Views.TableSettings.selectRowText": "Изберете Ред", - "DE.Views.TableSettings.selectTableText": "Изберете Таблица", + "DE.Views.TableSettings.selectRowText": "Изберете ред", + "DE.Views.TableSettings.selectTableText": "Изберете таблица", "DE.Views.TableSettings.splitCellsText": "Разделяне на клетка ...", "DE.Views.TableSettings.splitCellTitleText": "Разделена клетка", "DE.Views.TableSettings.strRepeatRow": "Повторете като заглавен ред в горната част на всяка страница", "DE.Views.TableSettings.textAddFormula": "Добавете формула", "DE.Views.TableSettings.textAdvanced": "Показване на разширените настройки", "DE.Views.TableSettings.textBackColor": "Цвят на фона", - "DE.Views.TableSettings.textBanded": "на ивици", - "DE.Views.TableSettings.textBorderColor": "цвят", + "DE.Views.TableSettings.textBanded": "На ивици", + "DE.Views.TableSettings.textBorderColor": "Цвят", "DE.Views.TableSettings.textBorders": "Стил на границите", "DE.Views.TableSettings.textCancel": "Откажи", "DE.Views.TableSettings.textCellSize": "Размер на клетката", - "DE.Views.TableSettings.textColumns": "колони", + "DE.Views.TableSettings.textColumns": "Колони", "DE.Views.TableSettings.textDistributeCols": "Разпределете колони", "DE.Views.TableSettings.textDistributeRows": "Разпределете редове", "DE.Views.TableSettings.textEdit": "Редове и колони", "DE.Views.TableSettings.textEmptyTemplate": "Няма шаблони", - "DE.Views.TableSettings.textFirst": "първи", + "DE.Views.TableSettings.textFirst": "Първи", "DE.Views.TableSettings.textHeader": "Заглавие", - "DE.Views.TableSettings.textHeight": "височина", - "DE.Views.TableSettings.textLast": "последно", - "DE.Views.TableSettings.textNewColor": "Нов Потребителски Цвят", + "DE.Views.TableSettings.textHeight": "Височина", + "DE.Views.TableSettings.textLast": "Последно", + "DE.Views.TableSettings.textNewColor": "Нов потребителски цвят", "DE.Views.TableSettings.textOK": "Добре", "DE.Views.TableSettings.textRows": "Редове", "DE.Views.TableSettings.textSelectBorders": "Изберете граници, които искате да промените, като използвате избрания по-горе стил", - "DE.Views.TableSettings.textTemplate": "Изберете От шаблон", + "DE.Views.TableSettings.textTemplate": "Изберете от шаблон", "DE.Views.TableSettings.textTotal": "Обща сума", - "DE.Views.TableSettings.textWidth": "широчина", + "DE.Views.TableSettings.textWidth": "Ширина", "DE.Views.TableSettings.tipAll": "Задайте външната граница и всички вътрешни линии", "DE.Views.TableSettings.tipBottom": "Задайте само външната долна граница", "DE.Views.TableSettings.tipInner": "Задайте само вътрешни линии", @@ -1928,47 +1925,47 @@ "DE.Views.TableSettingsAdvanced.textAnchorText": "Текст", "DE.Views.TableSettingsAdvanced.textAutofit": "Автоматично оразмеряване, за да се побере съдържанието", "DE.Views.TableSettingsAdvanced.textBackColor": "Клетъчен фон", - "DE.Views.TableSettingsAdvanced.textBelow": "По-долу", + "DE.Views.TableSettingsAdvanced.textBelow": "по-долу", "DE.Views.TableSettingsAdvanced.textBorderColor": "Цвят на границата", - "DE.Views.TableSettingsAdvanced.textBorderDesc": "Кликнете върху диалога или използвайте бутоните, за да изберете граници и да приложите избрания стил към тях", + "DE.Views.TableSettingsAdvanced.textBorderDesc": "Кликнете върху диаграмата или използвайте бутони, за да изберете граници и да приложите избрания стил към тях", "DE.Views.TableSettingsAdvanced.textBordersBackgroung": "Граници и фон", "DE.Views.TableSettingsAdvanced.textBorderWidth": "Размер на границата", - "DE.Views.TableSettingsAdvanced.textBottom": "дъно", + "DE.Views.TableSettingsAdvanced.textBottom": "Дъно", "DE.Views.TableSettingsAdvanced.textCellOptions": "Опции на клетката", - "DE.Views.TableSettingsAdvanced.textCellProps": "клетка", + "DE.Views.TableSettingsAdvanced.textCellProps": "Клетка", "DE.Views.TableSettingsAdvanced.textCellSize": "Размер на клетката", "DE.Views.TableSettingsAdvanced.textCenter": "Центрирано", "DE.Views.TableSettingsAdvanced.textCenterTooltip": "Центрирано", "DE.Views.TableSettingsAdvanced.textCheckMargins": "Използвайте полетата по подразбиране", "DE.Views.TableSettingsAdvanced.textDefaultMargins": "Стандартни маржове на клетките", "DE.Views.TableSettingsAdvanced.textDistance": "Разстояние от текста", - "DE.Views.TableSettingsAdvanced.textHorizontal": "хоризонтален", + "DE.Views.TableSettingsAdvanced.textHorizontal": "Хоризонтален", "DE.Views.TableSettingsAdvanced.textIndLeft": "Отстъп отляво", "DE.Views.TableSettingsAdvanced.textLeft": "Наляво", "DE.Views.TableSettingsAdvanced.textLeftTooltip": "Наляво", - "DE.Views.TableSettingsAdvanced.textMargin": "марж", + "DE.Views.TableSettingsAdvanced.textMargin": "Марж", "DE.Views.TableSettingsAdvanced.textMargins": "Маржове на клетките", "DE.Views.TableSettingsAdvanced.textMeasure": "Измерете инча", "DE.Views.TableSettingsAdvanced.textMove": "Преместване на обект с текст", - "DE.Views.TableSettingsAdvanced.textNewColor": "Нов Потребителски Цвят", + "DE.Views.TableSettingsAdvanced.textNewColor": "Нов потребителски цвят", "DE.Views.TableSettingsAdvanced.textOnlyCells": "Само за избрани клетки", "DE.Views.TableSettingsAdvanced.textOptions": "Настроики", "DE.Views.TableSettingsAdvanced.textOverlap": "Разрешаване на припокриване", - "DE.Views.TableSettingsAdvanced.textPage": "страница", - "DE.Views.TableSettingsAdvanced.textPosition": "позиция", + "DE.Views.TableSettingsAdvanced.textPage": "Страница", + "DE.Views.TableSettingsAdvanced.textPosition": "Позиция", "DE.Views.TableSettingsAdvanced.textPrefWidth": "Предпочитана ширина", - "DE.Views.TableSettingsAdvanced.textPreview": "предварителен преглед", + "DE.Views.TableSettingsAdvanced.textPreview": "Предварителен преглед", "DE.Views.TableSettingsAdvanced.textRelative": "свързано с", - "DE.Views.TableSettingsAdvanced.textRight": "прав", + "DE.Views.TableSettingsAdvanced.textRight": "Прав", "DE.Views.TableSettingsAdvanced.textRightOf": "вдясно от", - "DE.Views.TableSettingsAdvanced.textRightTooltip": "прав", - "DE.Views.TableSettingsAdvanced.textTable": "маса", + "DE.Views.TableSettingsAdvanced.textRightTooltip": "Прав", + "DE.Views.TableSettingsAdvanced.textTable": "Таблица", "DE.Views.TableSettingsAdvanced.textTableBackColor": "Фон на таблицата", "DE.Views.TableSettingsAdvanced.textTablePosition": "Позиция на таблицата", "DE.Views.TableSettingsAdvanced.textTableSize": "Размер на таблицата", "DE.Views.TableSettingsAdvanced.textTitle": "Таблица - Разширени настройки", "DE.Views.TableSettingsAdvanced.textTop": "Връх", - "DE.Views.TableSettingsAdvanced.textVertical": "вертикален", + "DE.Views.TableSettingsAdvanced.textVertical": "Вертикален", "DE.Views.TableSettingsAdvanced.textWidth": "Ширина", "DE.Views.TableSettingsAdvanced.textWidthSpaces": "Ширина и интервал", "DE.Views.TableSettingsAdvanced.textWrap": "Опаковане на текст", @@ -1989,44 +1986,44 @@ "DE.Views.TableSettingsAdvanced.txtCm": "Сантиметър", "DE.Views.TableSettingsAdvanced.txtInch": "Инч", "DE.Views.TableSettingsAdvanced.txtNoBorders": "Няма граници", - "DE.Views.TableSettingsAdvanced.txtPercent": "на сто", + "DE.Views.TableSettingsAdvanced.txtPercent": "На сто", "DE.Views.TableSettingsAdvanced.txtPt": "Точка", - "DE.Views.TextArtSettings.strColor": "цвят", + "DE.Views.TextArtSettings.strColor": "Цвят", "DE.Views.TextArtSettings.strFill": "Напълнете", "DE.Views.TextArtSettings.strSize": "Размер", "DE.Views.TextArtSettings.strStroke": "Удар", - "DE.Views.TextArtSettings.strTransparency": "непрозрачност", + "DE.Views.TextArtSettings.strTransparency": "Непрозрачност", "DE.Views.TextArtSettings.strType": "Тип", "DE.Views.TextArtSettings.textBorderSizeErr": "Въведената стойност е неправилна.
      Въведете стойност между 0 pt и 1584 pt.", "DE.Views.TextArtSettings.textColor": "Цветово пълнене", "DE.Views.TextArtSettings.textDirection": "Посока", "DE.Views.TextArtSettings.textGradient": "Градиент", "DE.Views.TextArtSettings.textGradientFill": "Градиентно запълване", - "DE.Views.TextArtSettings.textLinear": "линеен", - "DE.Views.TextArtSettings.textNewColor": "Нов Потребителски Цвят", + "DE.Views.TextArtSettings.textLinear": "Линеен", + "DE.Views.TextArtSettings.textNewColor": "Нов потребителски цвят", "DE.Views.TextArtSettings.textNoFill": "Без попълване", - "DE.Views.TextArtSettings.textRadial": "радиален", + "DE.Views.TextArtSettings.textRadial": "Радиален", "DE.Views.TextArtSettings.textSelectTexture": "Изберете", - "DE.Views.TextArtSettings.textStyle": "стил", + "DE.Views.TextArtSettings.textStyle": "Стил", "DE.Views.TextArtSettings.textTemplate": "Шаблон", "DE.Views.TextArtSettings.textTransform": "Трансформирайте", "DE.Views.TextArtSettings.txtNoBorders": "Няма линия", - "DE.Views.Toolbar.capBtnBlankPage": "Празна Страница", - "DE.Views.Toolbar.capBtnColumns": "колони", + "DE.Views.Toolbar.capBtnBlankPage": "Празна страница", + "DE.Views.Toolbar.capBtnColumns": "Колони", "DE.Views.Toolbar.capBtnComment": "Коментар", - "DE.Views.Toolbar.capBtnInsChart": "диаграма", + "DE.Views.Toolbar.capBtnInsChart": "Диаграма", "DE.Views.Toolbar.capBtnInsControls": "Контроли на съдържанието", "DE.Views.Toolbar.capBtnInsDropcap": "Пуснете капачка", - "DE.Views.Toolbar.capBtnInsEquation": "уравнение", - "DE.Views.Toolbar.capBtnInsHeader": "Header/Footer", + "DE.Views.Toolbar.capBtnInsEquation": "Уравнение", + "DE.Views.Toolbar.capBtnInsHeader": "Горен/долен колонтитул", "DE.Views.Toolbar.capBtnInsImage": "Изображение", "DE.Views.Toolbar.capBtnInsPagebreak": "Прекъсвания", - "DE.Views.Toolbar.capBtnInsShape": "форма", - "DE.Views.Toolbar.capBtnInsTable": "маса", + "DE.Views.Toolbar.capBtnInsShape": "Форма", + "DE.Views.Toolbar.capBtnInsTable": "Таблица", "DE.Views.Toolbar.capBtnInsTextart": "Текст Чл", "DE.Views.Toolbar.capBtnInsTextbox": "Текстово поле", "DE.Views.Toolbar.capBtnMargins": "Полета", - "DE.Views.Toolbar.capBtnPageOrient": "ориентация", + "DE.Views.Toolbar.capBtnPageOrient": "Ориентация", "DE.Views.Toolbar.capBtnPageSize": "Размер", "DE.Views.Toolbar.capImgAlign": "Изравнете", "DE.Views.Toolbar.capImgBackward": "Изпращане назад", @@ -2045,19 +2042,19 @@ "DE.Views.Toolbar.mniImageFromStorage": "Изображение от хранилището", "DE.Views.Toolbar.mniImageFromUrl": "Изображение от URL адрес", "DE.Views.Toolbar.strMenuNoFill": "Без попълване", - "DE.Views.Toolbar.textArea": "площ", - "DE.Views.Toolbar.textAutoColor": "автоматичен", - "DE.Views.Toolbar.textBar": "бар", + "DE.Views.Toolbar.textArea": "Площ", + "DE.Views.Toolbar.textAutoColor": "Автоматичен", + "DE.Views.Toolbar.textBar": "Бар", "DE.Views.Toolbar.textBold": "Получер", "DE.Views.Toolbar.textBottom": "Долу:", - "DE.Views.Toolbar.textCharts": "Графики", + "DE.Views.Toolbar.textCharts": "Диаграми", "DE.Views.Toolbar.textColumn": "Колона", "DE.Views.Toolbar.textColumnsCustom": "Персонализирани графи", "DE.Views.Toolbar.textColumnsLeft": "Наляво", - "DE.Views.Toolbar.textColumnsOne": "един", - "DE.Views.Toolbar.textColumnsRight": "прав", + "DE.Views.Toolbar.textColumnsOne": "Един", + "DE.Views.Toolbar.textColumnsRight": "Прав", "DE.Views.Toolbar.textColumnsThree": "Три", - "DE.Views.Toolbar.textColumnsTwo": "две", + "DE.Views.Toolbar.textColumnsTwo": "Две", "DE.Views.Toolbar.textContPage": "Непрекъсната страница", "DE.Views.Toolbar.textEvenPage": "Дори страница", "DE.Views.Toolbar.textInMargin": "По марджин", @@ -2068,30 +2065,30 @@ "DE.Views.Toolbar.textInsSectionBreak": "Вмъкване на разделителна секция", "DE.Views.Toolbar.textInText": "В текст", "DE.Views.Toolbar.textItalic": "Курсив", - "DE.Views.Toolbar.textLandscape": "пейзаж", + "DE.Views.Toolbar.textLandscape": "Пейзаж", "DE.Views.Toolbar.textLeft": "Наляво: ", - "DE.Views.Toolbar.textLine": "линия", + "DE.Views.Toolbar.textLine": "Линия", "DE.Views.Toolbar.textMarginsLast": "Последно персонализирано", - "DE.Views.Toolbar.textMarginsModerate": "умерен", - "DE.Views.Toolbar.textMarginsNarrow": "тесен", - "DE.Views.Toolbar.textMarginsNormal": "нормален", + "DE.Views.Toolbar.textMarginsModerate": "Умерен", + "DE.Views.Toolbar.textMarginsNarrow": "Тесен", + "DE.Views.Toolbar.textMarginsNormal": "Нормален", "DE.Views.Toolbar.textMarginsUsNormal": "Нормално за САЩ", "DE.Views.Toolbar.textMarginsWide": "Широк", - "DE.Views.Toolbar.textNewColor": "Нов Потребителски Цвят", + "DE.Views.Toolbar.textNewColor": "Нов потребителски цвят", "DE.Views.Toolbar.textNextPage": "Следваща страница", "DE.Views.Toolbar.textNoHighlight": "Няма подчертаване", "DE.Views.Toolbar.textNone": "Нито един", "DE.Views.Toolbar.textOddPage": "Нечетна страница", "DE.Views.Toolbar.textPageMarginsCustom": "Персонализирани полета", "DE.Views.Toolbar.textPageSizeCustom": "Персонализиран размер на страницата", - "DE.Views.Toolbar.textPie": "пай", + "DE.Views.Toolbar.textPie": "Кръгова", "DE.Views.Toolbar.textPlainControl": "Вмъкване на контрол на съдържанието в обикновен текст", - "DE.Views.Toolbar.textPoint": "XY (Скатер)", + "DE.Views.Toolbar.textPoint": "XY (точкова)", "DE.Views.Toolbar.textPortrait": "Портрет", "DE.Views.Toolbar.textRemoveControl": "Премахване на контрола на съдържанието", "DE.Views.Toolbar.textRichControl": "Вмъкване на контрол върху съдържанието на богатия текст", "DE.Views.Toolbar.textRight": "Дясно: ", - "DE.Views.Toolbar.textStock": "Наличност", + "DE.Views.Toolbar.textStock": "Борсова", "DE.Views.Toolbar.textStrikeout": "Зачеркнато", "DE.Views.Toolbar.textStyleMenuDelete": "Изтриване на стил", "DE.Views.Toolbar.textStyleMenuDeleteAll": "Изтрийте всички персонализирани стилове", @@ -2101,31 +2098,31 @@ "DE.Views.Toolbar.textStyleMenuUpdate": "Актуализация от избора", "DE.Views.Toolbar.textSubscript": "Долен", "DE.Views.Toolbar.textSuperscript": "Горен индекс", - "DE.Views.Toolbar.textSurface": "повърхност", + "DE.Views.Toolbar.textSurface": "Повърхност", "DE.Views.Toolbar.textTabCollaboration": "Сътрудничество", - "DE.Views.Toolbar.textTabFile": "досие", + "DE.Views.Toolbar.textTabFile": "Файл", "DE.Views.Toolbar.textTabHome": "У дома", "DE.Views.Toolbar.textTabInsert": "Вмъкни", - "DE.Views.Toolbar.textTabLayout": "оформление", + "DE.Views.Toolbar.textTabLayout": "Оформление", "DE.Views.Toolbar.textTabLinks": "Препратки", - "DE.Views.Toolbar.textTabProtect": "защита", - "DE.Views.Toolbar.textTabReview": "преглед", + "DE.Views.Toolbar.textTabProtect": "Защита", + "DE.Views.Toolbar.textTabReview": "Преглед", "DE.Views.Toolbar.textTitleError": "Грешка", "DE.Views.Toolbar.textToCurrent": "Към текущата позиция", "DE.Views.Toolbar.textTop": "Връх: ", - "DE.Views.Toolbar.textUnderline": "подчертавам", + "DE.Views.Toolbar.textUnderline": "Подчертавам", "DE.Views.Toolbar.tipAlignCenter": "Подравняване в центъра", - "DE.Views.Toolbar.tipAlignJust": "Оправдани", + "DE.Views.Toolbar.tipAlignJust": "Двустранно", "DE.Views.Toolbar.tipAlignLeft": "Подравняване вляво", "DE.Views.Toolbar.tipAlignRight": "Подравняване надясно", - "DE.Views.Toolbar.tipBack": "обратно", + "DE.Views.Toolbar.tipBack": "Обратно", "DE.Views.Toolbar.tipBlankPage": "Вмъкване на празна страница", - "DE.Views.Toolbar.tipChangeChart": "Промяна на типа на графиката", + "DE.Views.Toolbar.tipChangeChart": "Промяна на типа на диаграмата", "DE.Views.Toolbar.tipClearStyle": "Изчисти стила", "DE.Views.Toolbar.tipColorSchemas": "Промяна на цветовата схема", "DE.Views.Toolbar.tipColumns": "Вмъкване на колони", "DE.Views.Toolbar.tipControls": "Вмъкване на контроли за съдържание", - "DE.Views.Toolbar.tipCopy": "копие", + "DE.Views.Toolbar.tipCopy": "Копие", "DE.Views.Toolbar.tipCopyStyle": "Стил на копиране", "DE.Views.Toolbar.tipDecFont": "Размер на шрифта", "DE.Views.Toolbar.tipDecPrLeft": "Намалете отстъп", @@ -2159,41 +2156,41 @@ "DE.Views.Toolbar.tipPageOrient": "Ориентация на страницата", "DE.Views.Toolbar.tipPageSize": "Размер на страницата", "DE.Views.Toolbar.tipParagraphStyle": "Стил на абзаца", - "DE.Views.Toolbar.tipPaste": "паста", + "DE.Views.Toolbar.tipPaste": "Паста", "DE.Views.Toolbar.tipPrColor": "Цвят на фона на абзаца", - "DE.Views.Toolbar.tipPrint": "Отпечатване", - "DE.Views.Toolbar.tipRedo": "ремонтирам", + "DE.Views.Toolbar.tipPrint": "Печат", + "DE.Views.Toolbar.tipRedo": "Повтори", "DE.Views.Toolbar.tipSave": "Запази", "DE.Views.Toolbar.tipSaveCoauth": "Запазете промените си, за да ги видят другите потребители.", "DE.Views.Toolbar.tipSendBackward": "Изпращане назад", "DE.Views.Toolbar.tipSendForward": "Изведи напред", "DE.Views.Toolbar.tipShowHiddenChars": "Ненаписани знаци", "DE.Views.Toolbar.tipSynchronize": "Документът е променен от друг потребител. Моля, кликнете, за да запазите промените си и да презаредите актуализациите.", - "DE.Views.Toolbar.tipUndo": "премахвам", + "DE.Views.Toolbar.tipUndo": "Отмени", "DE.Views.Toolbar.txtDistribHor": "Разпределете хоризонтално", - "DE.Views.Toolbar.txtDistribVert": "Разпределете Вертикално", + "DE.Views.Toolbar.txtDistribVert": "Разпределете вертикално", "DE.Views.Toolbar.txtMarginAlign": "Подравняване с марж", "DE.Views.Toolbar.txtObjectsAlign": "Подравняване на избраните обекти", "DE.Views.Toolbar.txtPageAlign": "Подравняване към страница", - "DE.Views.Toolbar.txtScheme1": "офис", + "DE.Views.Toolbar.txtScheme1": "Офис", "DE.Views.Toolbar.txtScheme10": "Медиана", - "DE.Views.Toolbar.txtScheme11": "метро", - "DE.Views.Toolbar.txtScheme12": "модул", - "DE.Views.Toolbar.txtScheme13": "разкошен", - "DE.Views.Toolbar.txtScheme14": "еркер", - "DE.Views.Toolbar.txtScheme15": "произход", - "DE.Views.Toolbar.txtScheme16": "хартия", - "DE.Views.Toolbar.txtScheme17": "слънцестоене", - "DE.Views.Toolbar.txtScheme18": "техника", - "DE.Views.Toolbar.txtScheme19": "дълго и мъчително пътуване", - "DE.Views.Toolbar.txtScheme2": "нюанси на сивото", - "DE.Views.Toolbar.txtScheme20": "градски", - "DE.Views.Toolbar.txtScheme21": "ентусиазъм", - "DE.Views.Toolbar.txtScheme3": "връх", - "DE.Views.Toolbar.txtScheme4": "аспект", - "DE.Views.Toolbar.txtScheme5": "Civic", - "DE.Views.Toolbar.txtScheme6": "стечение", - "DE.Views.Toolbar.txtScheme7": "справедливост", + "DE.Views.Toolbar.txtScheme11": "Метро", + "DE.Views.Toolbar.txtScheme12": "Модул", + "DE.Views.Toolbar.txtScheme13": "Разкошен", + "DE.Views.Toolbar.txtScheme14": "Еркер", + "DE.Views.Toolbar.txtScheme15": "Произход", + "DE.Views.Toolbar.txtScheme16": "Хартия", + "DE.Views.Toolbar.txtScheme17": "Слънцестоене", + "DE.Views.Toolbar.txtScheme18": "Техника", + "DE.Views.Toolbar.txtScheme19": "Пътуване", + "DE.Views.Toolbar.txtScheme2": "Нюанси на сивото", + "DE.Views.Toolbar.txtScheme20": "Градски", + "DE.Views.Toolbar.txtScheme21": "Ентусиазъм", + "DE.Views.Toolbar.txtScheme3": "Връх", + "DE.Views.Toolbar.txtScheme4": "Аспект", + "DE.Views.Toolbar.txtScheme5": "Градски", + "DE.Views.Toolbar.txtScheme6": "Стечение", + "DE.Views.Toolbar.txtScheme7": "Справедливост", "DE.Views.Toolbar.txtScheme8": "Поток", "DE.Views.Toolbar.txtScheme9": "леярна" } \ No newline at end of file diff --git a/apps/documenteditor/main/locale/cs.json b/apps/documenteditor/main/locale/cs.json index bcffb8c29..d6f6aecca 100644 --- a/apps/documenteditor/main/locale/cs.json +++ b/apps/documenteditor/main/locale/cs.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Varování", "Common.Controllers.Chat.textEnterMessage": "Zde napište svou zprávu", - "Common.Controllers.Chat.textUserLimit": "Používáte ONLYOFFICE bezplatnou edici.
      Pouze dva uživatelé mohou zároveň upravovat dokument.
      Chcete více? Zvažte zakoupení ONLYOFFICE Enterprise edice.
      Více informací", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonymní", "Common.Controllers.ExternalDiagramEditor.textClose": "Zavřít", "Common.Controllers.ExternalDiagramEditor.warningText": "Objekt je vypnut, protože je upravován jiným uživatelem.", @@ -243,7 +242,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Vypršel čas konverze.", "DE.Controllers.Main.criticalErrorExtText": "Kliněte na \"OK\" pro návrat k seznamu dokumentů", "DE.Controllers.Main.criticalErrorTitle": "Chyba", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Editor dokumentů", "DE.Controllers.Main.downloadErrorText": "Stahování selhalo.", "DE.Controllers.Main.downloadMergeText": "Stahování...", "DE.Controllers.Main.downloadMergeTitle": "Stahuji", @@ -252,7 +250,7 @@ "DE.Controllers.Main.errorAccessDeny": "Pokoušíte se provést akci, na kterou nemáte oprávnění.
      Prosím, kontaktujte administrátora vašeho Dokumentového serveru.", "DE.Controllers.Main.errorBadImageUrl": "Adresa URL obrázku je nesprávná", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Spojení se serverem ztraceno. Dokument nyní nelze upravovat.", - "DE.Controllers.Main.errorConnectToServer": "The document could not be saved. Please check connection settings or contact your administrator.
      When you click the 'OK' button, you will be prompted to download the document.

      Find more information about connecting Document Server here", + "DE.Controllers.Main.errorConnectToServer": "Dokument nelze uložit. Prosím, zkontrolujte nastavení vašeho připojení nebo kontaktujte vašeho administrátora.
      Při kliknutí na tlačítko \"OK\" budete vyzváni ke stažení dokumentu.

      Více informací o připojení najdete v Dokumentovém serveru here", "DE.Controllers.Main.errorDatabaseConnection": "Externí chyba.
      Chyba spojení s databází. Prosím kontaktujte podporu, pokud chyba přetrvává.", "DE.Controllers.Main.errorDataRange": "Nesprávný datový rozsah.", "DE.Controllers.Main.errorDefaultMessage": "Kód chyby: %1", @@ -362,7 +360,7 @@ "DE.Controllers.Main.warnBrowserIE9": "Aplikace má slabou podporu v IE9. Použíjte IE10 nebo vyšší", "DE.Controllers.Main.warnBrowserZoom": "Aktuální přiblížení prohlížeče není plně podporováno. Obnovte prosím původní přiblížení stiknem CTRL+0.", "DE.Controllers.Main.warnLicenseExp": "Platnost vaší licence vypršela.
      Prosím, aktualizujte vaší licenci a obnovte stránku.", - "DE.Controllers.Main.warnNoLicense": "Používáte verzi open source ONLYOFFICE. Verze má omezení pro souběžné připojení k dokumentovému serveru (20 připojení najednou).
      Pokud budete potřebovat více, tak prosím zvažte koupi komerční licence.", + "DE.Controllers.Main.warnNoLicense": "Používáte verzi open source %1. Verze má omezení pro souběžné připojení k dokumentovému serveru (20 připojení najednou).
      Pokud budete potřebovat více, tak prosím zvažte koupi komerční licence.", "DE.Controllers.Main.warnProcessRightsChange": "Bylo Vám odebráno právo upravovat tento soubor", "DE.Controllers.Statusbar.textHasChanges": "New changes have been tracked", "DE.Controllers.Statusbar.textTrackChanges": "The document is opened with the Track Changes mode enabled", @@ -969,7 +967,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Nejsou zde žádné šablony.", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Autor", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Změnit přístupová práva", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Datum vytvoření", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Nahrávám ...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Stránky", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Odstavce", diff --git a/apps/documenteditor/main/locale/de.json b/apps/documenteditor/main/locale/de.json index fab5f7340..67c6cd4d3 100644 --- a/apps/documenteditor/main/locale/de.json +++ b/apps/documenteditor/main/locale/de.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Achtung", "Common.Controllers.Chat.textEnterMessage": "Geben Sie Ihre Nachricht hier ein", - "Common.Controllers.Chat.textUserLimit": "Sie benutzen ONLYOFFICE Free Edition.
      Nur zwei Benutzer können das Dokument gleichzeitig bearbeiten.
      Möchten Sie mehr? Erwerben Sie kommerzielle Version von ONLYOFFICE Enterprise Edition.
      Lesen Sie mehr davon", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonym", "Common.Controllers.ExternalDiagramEditor.textClose": "Schließen", "Common.Controllers.ExternalDiagramEditor.warningText": "Das Objekt ist deaktiviert, weil es momentan von einem anderen Benutzer bearbeitet wird.", @@ -333,7 +332,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Timeout für die Konvertierung wurde überschritten.", "DE.Controllers.Main.criticalErrorExtText": "Klicken Sie auf \"OK\", um in die Dokumentenliste zu gelangen.", "DE.Controllers.Main.criticalErrorTitle": "Fehler", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Herunterladen ist fehlgeschlagen.", "DE.Controllers.Main.downloadMergeText": "Wird heruntergeladen...", "DE.Controllers.Main.downloadMergeTitle": "Wird heruntergeladen", @@ -342,7 +340,7 @@ "DE.Controllers.Main.errorAccessDeny": "Sie haben versucht die Änderungen im Dokument, zu dem Sie keine Berechtigungen haben, vorzunehemen.
      Wenden Sie sich an Ihren Serveradministrator.", "DE.Controllers.Main.errorBadImageUrl": "URL des Bildes ist falsch", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Verbindung zum Server ist verloren gegangen. Das Dokument kann momentan nicht bearbeitet werden.", - "DE.Controllers.Main.errorConnectToServer": "Das Dokument konnte nicht gespeichert werden. Bitte überprüfen Sie die Verbindungseinstellungen oder wenden Sie sich an Ihren Administrator.
      Wenn Sie auf die Schaltfläche \"OK\" klicken, werden Sie aufgefordert das Dokument herunterzuladen.

      Mehr Informationen über die Verbindung zum Dokumentenserver finden Sie hier", + "DE.Controllers.Main.errorConnectToServer": "Das Dokument konnte nicht gespeichert werden. Bitte überprüfen Sie die Verbindungseinstellungen oder wenden Sie sich an Ihren Administrator.
      Wenn Sie auf die Schaltfläche \"OK\" klicken, werden Sie aufgefordert das Dokument herunterzuladen.

      Mehr Informationen über die Verbindung zum Dokumentenserver finden Sie hier", "DE.Controllers.Main.errorDatabaseConnection": "Externer Fehler.
      Fehler beim Verbinden zur Datenbank. Bitte wenden Sie sich an den Kundendienst, falls der Fehler bestehen bleibt.", "DE.Controllers.Main.errorDataEncrypted": "Änderungen wurden verschlüsselt. Sie können nicht entschlüsselt werden.", "DE.Controllers.Main.errorDataRange": "Falscher Datenbereich.", @@ -661,8 +659,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Die Anzahl gleichzeitiger Verbindungen zum Document Server wurde überschritten und das Dokument wird nur zum Anzeigen geöffnet.
      Wenden Sie sich an den Administrator, um weitere Informationen zu erhalten.", "DE.Controllers.Main.warnLicenseExp": "Ihre Lizenz ist abgelaufen.
      Bitte aktualisieren Sie Ihre Lizenz und laden Sie die Seite neu.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Die Anzahl der gleichzeitigen Benutzer wurde überschritten und das Dokument wird nur zum Anzeigen geöffnet.
      Wenden Sie sich an den Administrator, um weitere Informationen zu erhalten.", - "DE.Controllers.Main.warnNoLicense": "Diese Version von ONLYOFFICE Editoren hat gewisse Einschränkungen für gleichzeitige Verbindungen zum Dokumentenserver.
      Wenn Sie mehr Verbindungen benötigen, erwerben Sie eine kommerzielle Lizenz.", - "DE.Controllers.Main.warnNoLicenseUsers": "Diese Version von ONLYOFFICE Editoren hat bestimmte Einschränkungen für gleichzeitige Benutzer.
      Wenn Sie mehr Verbindungen benötigen, erwerben Sie eine kommerzielle Lizenz.", + "DE.Controllers.Main.warnNoLicense": "Diese Version von %1 Editoren hat gewisse Einschränkungen für gleichzeitige Verbindungen zum Dokumentenserver.
      Wenn Sie mehr Verbindungen benötigen, erwerben Sie eine kommerzielle Lizenz.", + "DE.Controllers.Main.warnNoLicenseUsers": "Diese Version von %1 Editoren hat bestimmte Einschränkungen für gleichzeitige Benutzer.
      Wenn Sie mehr Verbindungen benötigen, erwerben Sie eine kommerzielle Lizenz.", "DE.Controllers.Main.warnProcessRightsChange": "Das Recht, die Datei zu bearbeiten, wurde Ihnen verweigert.", "DE.Controllers.Navigation.txtBeginning": "Anfang des Dokuments", "DE.Controllers.Navigation.txtGotoBeginning": "Zum Anfang des Dokuments übergehnen", @@ -1346,7 +1344,6 @@ "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Anwendung", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Verfasser", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Zugriffsrechte ändern", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Erstellungsdatum", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Ladevorgang...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Seiten", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Absätze", diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index 2945b269a..fe28eb861 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Warning", "Common.Controllers.Chat.textEnterMessage": "Enter your message here", - "del_Common.Controllers.Chat.textUserLimit": "You are using ONLYOFFICE Free Edition.
      Only two users can co-edit the document simultaneously.
      Want more? Consider buying ONLYOFFICE Enterprise Edition.
      Read more", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonymous", "Common.Controllers.ExternalDiagramEditor.textClose": "Close", "Common.Controllers.ExternalDiagramEditor.warningText": "The object is disabled because it is being edited by another user.", @@ -163,11 +162,11 @@ "Common.Views.Header.tipRedo": "Redo", "Common.Views.Header.tipSave": "Save", "Common.Views.Header.tipUndo": "Undo", + "Common.Views.Header.tipUndock": "Undock into separate window", "Common.Views.Header.tipViewSettings": "View settings", "Common.Views.Header.tipViewUsers": "View users and manage document access rights", "Common.Views.Header.txtAccessRights": "Change access rights", "Common.Views.Header.txtRename": "Rename", - "Common.Views.Header.tipUndock": "Undock into separate window", "Common.Views.History.textCloseHistory": "Close History", "Common.Views.History.textHide": "Collapse", "Common.Views.History.textHideAll": "Hide detailed changes", @@ -284,6 +283,7 @@ "Common.Views.ReviewPopover.textClose": "Close", "Common.Views.ReviewPopover.textEdit": "OK", "Common.Views.ReviewPopover.textFollowMove": "Follow Move", + "Common.Views.ReviewPopover.textMention": "+mention will provide access to the document and send an email", "Common.Views.ReviewPopover.textOpenAgain": "Open Again", "Common.Views.ReviewPopover.textReply": "Reply", "Common.Views.ReviewPopover.textResolve": "Resolve", @@ -326,6 +326,7 @@ "DE.Controllers.LeftMenu.textNoTextFound": "The data you have been searching for could not be found. Please adjust your search options.", "DE.Controllers.LeftMenu.textReplaceSkipped": "The replacement has been made. {0} occurrences were skipped.", "DE.Controllers.LeftMenu.textReplaceSuccess": "The search has been done. Occurrences replaced: {0}", + "DE.Controllers.LeftMenu.txtCompatible": "The document will be saved to the new format. It will allow to use all the editor features, but might affect the document layout.
      Use the 'Compatibility' option of the advanced settings if you want to make the files compatible with older MS Word versions.", "DE.Controllers.LeftMenu.txtUntitled": "Untitled", "DE.Controllers.LeftMenu.warnDownloadAs": "If you continue saving in this format all features except the text will be lost.
      Are you sure you want to continue?", "DE.Controllers.LeftMenu.warnDownloadAsRTF": "If you continue saving in this format some of the formatting might be lost.
      Are you sure you want to continue?", @@ -334,7 +335,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Conversion timeout exceeded.", "DE.Controllers.Main.criticalErrorExtText": "Press \"OK\" to return to document list.", "DE.Controllers.Main.criticalErrorTitle": "Error", - "del_DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Download failed.", "DE.Controllers.Main.downloadMergeText": "Downloading...", "DE.Controllers.Main.downloadMergeTitle": "Downloading", @@ -1189,6 +1189,7 @@ "DE.Views.DocumentHolder.textUpdateTOC": "Refresh table of contents", "DE.Views.DocumentHolder.textWrap": "Wrapping Style", "DE.Views.DocumentHolder.tipIsLocked": "This element is currently being edited by another user.", + "DE.Views.DocumentHolder.toDictionaryText": "Add to Dictionary", "DE.Views.DocumentHolder.txtAddBottom": "Add bottom border", "DE.Views.DocumentHolder.txtAddFractionBar": "Add fraction bar", "DE.Views.DocumentHolder.txtAddHor": "Add horizontal line", @@ -1251,6 +1252,7 @@ "DE.Views.DocumentHolder.txtOverwriteCells": "Overwrite cells", "DE.Views.DocumentHolder.txtPasteSourceFormat": "Keep source formatting", "DE.Views.DocumentHolder.txtPressLink": "Press CTRL and click link", + "DE.Views.DocumentHolder.txtPrintSelection": "Print Selection", "DE.Views.DocumentHolder.txtRemFractionBar": "Remove fraction bar", "DE.Views.DocumentHolder.txtRemLimit": "Remove limit", "DE.Views.DocumentHolder.txtRemoveAccentChar": "Remove accent character", @@ -1344,19 +1346,27 @@ "DE.Views.FileMenuPanels.CreateNew.newDescriptionText": "Create a new blank text document which you will be able to style and format after it is created during the editing. Or choose one of the templates to start a document of a certain type or purpose where some styles have already been pre-applied.", "DE.Views.FileMenuPanels.CreateNew.newDocumentText": "New Text Document", "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "There are no templates", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddAuthor": "Add Author", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddText": "Add Text", "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Application", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Author", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Change access rights", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Creation Date", + "DE.Views.FileMenuPanels.DocumentInfo.txtComment": "Comment", + "DE.Views.FileMenuPanels.DocumentInfo.txtCreated": "Created", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Loading...", + "DE.Views.FileMenuPanels.DocumentInfo.txtModifyBy": "Last Modified By", + "DE.Views.FileMenuPanels.DocumentInfo.txtModifyDate": "Last Modified", + "DE.Views.FileMenuPanels.DocumentInfo.txtOwner": "Owner", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Pages", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Paragraphs", "DE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Location", "DE.Views.FileMenuPanels.DocumentInfo.txtRights": "Persons who have rights", "DE.Views.FileMenuPanels.DocumentInfo.txtSpaces": "Symbols with spaces", "DE.Views.FileMenuPanels.DocumentInfo.txtStatistics": "Statistics", + "DE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Subject", "DE.Views.FileMenuPanels.DocumentInfo.txtSymbols": "Symbols", - "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Document Title", + "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Title", + "DE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Uploaded", "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Words", "DE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Change access rights", "DE.Views.FileMenuPanels.DocumentRights.txtRights": "Persons who have rights", @@ -1396,9 +1406,11 @@ "DE.Views.FileMenuPanels.Settings.textAlignGuides": "Alignment Guides", "DE.Views.FileMenuPanels.Settings.textAutoRecover": "Autorecover", "DE.Views.FileMenuPanels.Settings.textAutoSave": "Autosave", + "DE.Views.FileMenuPanels.Settings.textCompatible": "Compatibility", "DE.Views.FileMenuPanels.Settings.textDisabled": "Disabled", "DE.Views.FileMenuPanels.Settings.textForceSave": "Save to Server", "DE.Views.FileMenuPanels.Settings.textMinute": "Every Minute", + "DE.Views.FileMenuPanels.Settings.textOldVersions": "Make the files compatible with older MS Word versions when saved as DOCX", "DE.Views.FileMenuPanels.Settings.txtAll": "View All", "DE.Views.FileMenuPanels.Settings.txtCm": "Centimeter", "DE.Views.FileMenuPanels.Settings.txtFitPage": "Fit to Page", @@ -1696,34 +1708,53 @@ "DE.Views.ParagraphSettingsAdvanced.strBorders": "Borders & Fill", "DE.Views.ParagraphSettingsAdvanced.strBreakBefore": "Page break before", "DE.Views.ParagraphSettingsAdvanced.strDoubleStrike": "Double strikethrough", - "DE.Views.ParagraphSettingsAdvanced.strIndentsFirstLine": "First Line", + "DE.Views.ParagraphSettingsAdvanced.strIndent": "Indents", + "del_DE.Views.ParagraphSettingsAdvanced.strIndentsFirstLine": "First Line", "DE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "Left", + "DE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Line Spacing", + "DE.Views.ParagraphSettingsAdvanced.strIndentsOutlinelevel": "Outline level", "DE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "Right", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "After", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Before", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Special", "DE.Views.ParagraphSettingsAdvanced.strKeepLines": "Keep lines together", "DE.Views.ParagraphSettingsAdvanced.strKeepNext": "Keep with next", "DE.Views.ParagraphSettingsAdvanced.strMargins": "Paddings", "DE.Views.ParagraphSettingsAdvanced.strOrphan": "Orphan control", "DE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Font", - "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Indents & Placement", + "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Indents & Spacing", + "DE.Views.ParagraphSettingsAdvanced.strParagraphLine": "Line & Page Breaks", "DE.Views.ParagraphSettingsAdvanced.strParagraphPosition": "Placement", "DE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Small caps", + "DE.Views.ParagraphSettingsAdvanced.strSomeParagraphSpace": "Don't add interval between paragraphs of the same style", + "DE.Views.ParagraphSettingsAdvanced.strSpacing": "Spacing", "DE.Views.ParagraphSettingsAdvanced.strStrike": "Strikethrough", "DE.Views.ParagraphSettingsAdvanced.strSubscript": "Subscript", "DE.Views.ParagraphSettingsAdvanced.strSuperscript": "Superscript", "DE.Views.ParagraphSettingsAdvanced.strTabs": "Tabs", "DE.Views.ParagraphSettingsAdvanced.textAlign": "Alignment", + "DE.Views.ParagraphSettingsAdvanced.textAtLeast": "At least", + "DE.Views.ParagraphSettingsAdvanced.textAuto": "Multiple", "DE.Views.ParagraphSettingsAdvanced.textBackColor": "Background Color", + "DE.Views.ParagraphSettingsAdvanced.textBodyText": "Basic Text", "DE.Views.ParagraphSettingsAdvanced.textBorderColor": "Border Color", "DE.Views.ParagraphSettingsAdvanced.textBorderDesc": "Click on diagram or use buttons to select borders and apply chosen style to them", "DE.Views.ParagraphSettingsAdvanced.textBorderWidth": "Border Size", "DE.Views.ParagraphSettingsAdvanced.textBottom": "Bottom", + "DE.Views.ParagraphSettingsAdvanced.textCentered": "Centered", "DE.Views.ParagraphSettingsAdvanced.textCharacterSpacing": "Character Spacing", "DE.Views.ParagraphSettingsAdvanced.textDefault": "Default Tab", "DE.Views.ParagraphSettingsAdvanced.textEffects": "Effects", + "DE.Views.ParagraphSettingsAdvanced.textExact": "Exactly", + "DE.Views.ParagraphSettingsAdvanced.textFirstLine": "First line", + "DE.Views.ParagraphSettingsAdvanced.textHanging": "Hanging", + "DE.Views.ParagraphSettingsAdvanced.textJustified": "Justified", "DE.Views.ParagraphSettingsAdvanced.textLeader": "Leader", "DE.Views.ParagraphSettingsAdvanced.textLeft": "Left", + "DE.Views.ParagraphSettingsAdvanced.textLevel": "Level", "DE.Views.ParagraphSettingsAdvanced.textNewColor": "Add New Custom Color", "DE.Views.ParagraphSettingsAdvanced.textNone": "None", + "DE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(none)", "DE.Views.ParagraphSettingsAdvanced.textPosition": "Position", "DE.Views.ParagraphSettingsAdvanced.textRemove": "Remove", "DE.Views.ParagraphSettingsAdvanced.textRemoveAll": "Remove All", @@ -1744,6 +1775,7 @@ "DE.Views.ParagraphSettingsAdvanced.tipOuter": "Set outer border only", "DE.Views.ParagraphSettingsAdvanced.tipRight": "Set right border only", "DE.Views.ParagraphSettingsAdvanced.tipTop": "Set top border only", + "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Auto", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "No borders", "DE.Views.RightMenu.txtChartSettings": "Chart settings", "DE.Views.RightMenu.txtHeaderFooterSettings": "Header and footer settings", @@ -1760,6 +1792,7 @@ "DE.Views.ShapeSettings.strFill": "Fill", "DE.Views.ShapeSettings.strForeground": "Foreground color", "DE.Views.ShapeSettings.strPattern": "Pattern", + "DE.Views.ShapeSettings.strShadow": "Show shadow", "DE.Views.ShapeSettings.strSize": "Size", "DE.Views.ShapeSettings.strStroke": "Stroke", "DE.Views.ShapeSettings.strTransparency": "Opacity", @@ -1840,6 +1873,7 @@ "DE.Views.StyleTitleDialog.textTitle": "Title", "DE.Views.StyleTitleDialog.txtEmpty": "This field is required", "DE.Views.StyleTitleDialog.txtNotEmpty": "Field must not be empty", + "DE.Views.StyleTitleDialog.txtSameAs": "Same as created new style", "DE.Views.TableFormulaDialog.cancelButtonText": "Cancel", "DE.Views.TableFormulaDialog.okButtonText": "OK", "DE.Views.TableFormulaDialog.textBookmark": "Paste Bookmark", @@ -2029,6 +2063,7 @@ "DE.Views.Toolbar.capBtnMargins": "Margins", "DE.Views.Toolbar.capBtnPageOrient": "Orientation", "DE.Views.Toolbar.capBtnPageSize": "Size", + "DE.Views.Toolbar.capBtnWatermark": "Watermark", "DE.Views.Toolbar.capImgAlign": "Align", "DE.Views.Toolbar.capImgBackward": "Send Backward", "DE.Views.Toolbar.capImgForward": "Bring Forward", @@ -2060,6 +2095,7 @@ "DE.Views.Toolbar.textColumnsThree": "Three", "DE.Views.Toolbar.textColumnsTwo": "Two", "DE.Views.Toolbar.textContPage": "Continuous Page", + "DE.Views.Toolbar.textEditWatermark": "Custom Watermark", "DE.Views.Toolbar.textEvenPage": "Even Page", "DE.Views.Toolbar.textInMargin": "In Margin", "DE.Views.Toolbar.textInsColumnBreak": "Insert Column Break", @@ -2090,6 +2126,7 @@ "DE.Views.Toolbar.textPoint": "XY (Scatter)", "DE.Views.Toolbar.textPortrait": "Portrait", "DE.Views.Toolbar.textRemoveControl": "Remove content control", + "DE.Views.Toolbar.textRemWatermark": "Remove Watermark", "DE.Views.Toolbar.textRichControl": "Insert rich text content control", "DE.Views.Toolbar.textRight": "Right: ", "DE.Views.Toolbar.textStock": "Stock", @@ -2171,6 +2208,7 @@ "DE.Views.Toolbar.tipShowHiddenChars": "Nonprinting characters", "DE.Views.Toolbar.tipSynchronize": "The document has been changed by another user. Please click to save your changes and reload the updates.", "DE.Views.Toolbar.tipUndo": "Undo", + "DE.Views.Toolbar.tipWatermark": "Edit watermark", "DE.Views.Toolbar.txtDistribHor": "Distribute Horizontally", "DE.Views.Toolbar.txtDistribVert": "Distribute Vertically", "DE.Views.Toolbar.txtMarginAlign": "Align to Margin", @@ -2196,5 +2234,30 @@ "DE.Views.Toolbar.txtScheme6": "Concourse", "DE.Views.Toolbar.txtScheme7": "Equity", "DE.Views.Toolbar.txtScheme8": "Flow", - "DE.Views.Toolbar.txtScheme9": "Foundry" + "DE.Views.Toolbar.txtScheme9": "Foundry", + "DE.Views.WatermarkSettingsDialog.cancelButtonText": "Cancel", + "DE.Views.WatermarkSettingsDialog.okButtonText": "OK", + "DE.Views.WatermarkSettingsDialog.textAuto": "Auto", + "DE.Views.WatermarkSettingsDialog.textBold": "Bold", + "DE.Views.WatermarkSettingsDialog.textColor": "Text color", + "DE.Views.WatermarkSettingsDialog.textDiagonal": "Diagonal", + "DE.Views.WatermarkSettingsDialog.textFont": "Font", + "DE.Views.WatermarkSettingsDialog.textFromFile": "From File", + "DE.Views.WatermarkSettingsDialog.textFromUrl": "From URL", + "DE.Views.WatermarkSettingsDialog.textHor": "Horizontal", + "DE.Views.WatermarkSettingsDialog.textImageW": "Image watermark", + "DE.Views.WatermarkSettingsDialog.textItalic": "Italic", + "DE.Views.WatermarkSettingsDialog.textLanguage": "Language", + "DE.Views.WatermarkSettingsDialog.textLayout": "Layout", + "DE.Views.WatermarkSettingsDialog.textNewColor": "Add New Custom Color", + "DE.Views.WatermarkSettingsDialog.textNone": "None", + "DE.Views.WatermarkSettingsDialog.textScale": "Scale", + "DE.Views.WatermarkSettingsDialog.textStrikeout": "Strikeout", + "DE.Views.WatermarkSettingsDialog.textText": "Text", + "DE.Views.WatermarkSettingsDialog.textTextW": "Text watermark", + "DE.Views.WatermarkSettingsDialog.textTitle": "Watermark Settings", + "DE.Views.WatermarkSettingsDialog.textTransparency": "Semitransparent", + "DE.Views.WatermarkSettingsDialog.textUnderline": "Underline", + "DE.Views.WatermarkSettingsDialog.tipFontName": "Font Name", + "DE.Views.WatermarkSettingsDialog.tipFontSize": "Font Size" } \ No newline at end of file diff --git a/apps/documenteditor/main/locale/es.json b/apps/documenteditor/main/locale/es.json index f505b86b1..00be95128 100644 --- a/apps/documenteditor/main/locale/es.json +++ b/apps/documenteditor/main/locale/es.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Aviso", "Common.Controllers.Chat.textEnterMessage": "Introduzca su mensaje aquí", - "Common.Controllers.Chat.textUserLimit": "Usted está usando la edición ONLYOFFICE gratuita.
      Sólo dos usuarios pueden editar el documento simultáneamente.
      ¿Quiere más? Compre ONLYOFFICE Enterprise Edition.
      Saber más", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anónimo", "Common.Controllers.ExternalDiagramEditor.textClose": "Cerrar", "Common.Controllers.ExternalDiagramEditor.warningText": "El objeto está desactivado porque se está editando por otro usuario.", @@ -163,6 +162,7 @@ "Common.Views.Header.tipRedo": "Rehacer", "Common.Views.Header.tipSave": "Guardar", "Common.Views.Header.tipUndo": "Deshacer", + "Common.Views.Header.tipUndock": "Desacoplar en una ventana independiente", "Common.Views.Header.tipViewSettings": "Mostrar ajustes", "Common.Views.Header.tipViewUsers": "Ver usuarios y administrar derechos de acceso al documento", "Common.Views.Header.txtAccessRights": "Cambiar derechos de acceso", @@ -333,7 +333,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Tiempo de conversión está superado.", "DE.Controllers.Main.criticalErrorExtText": "Pulse \"OK\" para regresar al documento.", "DE.Controllers.Main.criticalErrorTitle": "Error", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Error de descarga.", "DE.Controllers.Main.downloadMergeText": "Descargando...", "DE.Controllers.Main.downloadMergeTitle": "Descargando", @@ -342,7 +341,7 @@ "DE.Controllers.Main.errorAccessDeny": "Usted no tiene permisos para realizar la acción que está intentando hacer.
      Por favor, contacte con el Administrador del Servidor de Documentos.", "DE.Controllers.Main.errorBadImageUrl": "URL de imagen es incorrecto", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Se ha perdido la conexión con servidor. El documento no puede ser editado ahora.", - "DE.Controllers.Main.errorConnectToServer": "No se pudo guardar el documento. Por favor, compruebe la configuración de conexión o póngase en contacto con el administrador.
      Al hacer clic en el botón \"Aceptar\", se le pedirá que descargue el documento.
      Encuentre más información acerca de la conexión Servidor de Documentosaquí", + "DE.Controllers.Main.errorConnectToServer": "No se consiguió guardar el documento. Por favor, compruebe los ajustes de conexión o póngase en contacto con su administrador.
      Al hacer clic en el botón 'OK' se le solicitará que descargue el documento.

      Encuentre más información acerca de la conexión de Servidor de Documentos aquí", "DE.Controllers.Main.errorDatabaseConnection": "Error externo.
      Error de conexión de base de datos. Por favor póngase en contacto con soporte si el error se mantiene.", "DE.Controllers.Main.errorDataEncrypted": "Se han recibido cambios cifrados, ellos no pueden ser descifrados.", "DE.Controllers.Main.errorDataRange": "Rango de datos incorrecto.", @@ -409,7 +408,7 @@ "DE.Controllers.Main.textContactUs": "Contactar con equipo de ventas", "DE.Controllers.Main.textCustomLoader": "Note, por favor, que según los términos de la licencia Usted no tiene derecho a cambiar el cargador.
      Por favor, póngase en contacto con nuestro Departamento de Ventas para obtener una cotización.", "DE.Controllers.Main.textLoadingDocument": "Cargando documento", - "DE.Controllers.Main.textNoLicenseTitle": "Conexión ONLYOFFICE", + "DE.Controllers.Main.textNoLicenseTitle": "%1 limitación de conexiones", "DE.Controllers.Main.textPaidFeature": "Función de pago", "DE.Controllers.Main.textShape": "Forma", "DE.Controllers.Main.textStrict": "Modo estricto", @@ -661,8 +660,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Se ha excedido el número permitido de las conexiones simultáneas al servidor de documentos, y el documento se abrirá para sólo lectura.
      Por favor, contacte con su administrador para recibir más información.", "DE.Controllers.Main.warnLicenseExp": "Su licencia ha expirado.
      Por favor, actualice su licencia y después recargue la página.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Se ha excedido el número permitido de los usuarios simultáneos, y el documento se abrirá para sólo lectura.
      Por favor, contacte con su administrador para recibir más información.", - "DE.Controllers.Main.warnNoLicense": "Esta versión de los Editores de ONLYOFFICE tiene ciertas limitaciones para el número de conexiones simultáneas al servidor de documentos.
      Si se requiere más, por favor, considere comprar una licencia comercial.", - "DE.Controllers.Main.warnNoLicenseUsers": "Esta versión de Editores de ONLYOFFICE tiene ciertas limitaciones para usuarios simultáneos.
      Si se requiere más, por favor, considere comprar una licencia comercial.", + "DE.Controllers.Main.warnNoLicense": "Esta versión de los editores %1 tiene ciertas limitaciones para el número de conexiones simultáneas al servidor de documentos.
      Si necesita más, por favor, considere comprar una licencia comercial.", + "DE.Controllers.Main.warnNoLicenseUsers": "Esta versión de editores %1 tiene ciertas limitaciones para usuarios simultáneos.
      Si necesita más, por favor, considere comprar una licencia comercial.", "DE.Controllers.Main.warnProcessRightsChange": "El derecho de edición del archivo es denegado", "DE.Controllers.Navigation.txtBeginning": "Principio del documento", "DE.Controllers.Navigation.txtGotoBeginning": "Ir al principio de", @@ -1343,19 +1342,27 @@ "DE.Views.FileMenuPanels.CreateNew.newDescriptionText": "Cree un nuevo documento de texto en blanco para trabajar con el estilo y el formato y editarlo según sus necesidades. O seleccione una de las plantillas para iniciar documento de cierto tipo o propósito donde algunos estilos se han aplicado ya.", "DE.Views.FileMenuPanels.CreateNew.newDocumentText": "Nuevo documento de texto", "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "No hay ningunas plantillas", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddAuthor": "Añadir autor", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddText": "Añadir texto", "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Aplicación", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Autor", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Cambiar derechos de acceso", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Fecha de creación", + "DE.Views.FileMenuPanels.DocumentInfo.txtComment": "Comentario", + "DE.Views.FileMenuPanels.DocumentInfo.txtCreated": "Creado", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Cargando...", + "DE.Views.FileMenuPanels.DocumentInfo.txtModifyBy": "Última modificación por", + "DE.Views.FileMenuPanels.DocumentInfo.txtModifyDate": "Última modificación", + "DE.Views.FileMenuPanels.DocumentInfo.txtOwner": "Propietario", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Páginas", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Párrafos", "DE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Ubicación", "DE.Views.FileMenuPanels.DocumentInfo.txtRights": "Personas que tienen derechos", "DE.Views.FileMenuPanels.DocumentInfo.txtSpaces": "Símbolos con espacios", "DE.Views.FileMenuPanels.DocumentInfo.txtStatistics": "Estadísticas", + "DE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Asunto", "DE.Views.FileMenuPanels.DocumentInfo.txtSymbols": "Símbolos", - "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Título de documento", + "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Título", + "DE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Subido", "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Palabras", "DE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Cambiar derechos de acceso", "DE.Views.FileMenuPanels.DocumentRights.txtRights": "Personas que tienen derechos", @@ -2028,6 +2035,7 @@ "DE.Views.Toolbar.capBtnMargins": "Márgenes", "DE.Views.Toolbar.capBtnPageOrient": "Orientación", "DE.Views.Toolbar.capBtnPageSize": "Tamaño", + "DE.Views.Toolbar.capBtnWatermark": "Marca de agua", "DE.Views.Toolbar.capImgAlign": "Alinear", "DE.Views.Toolbar.capImgBackward": "Enviar atrás", "DE.Views.Toolbar.capImgForward": "Una capa adelante", @@ -2059,6 +2067,7 @@ "DE.Views.Toolbar.textColumnsThree": "Tres", "DE.Views.Toolbar.textColumnsTwo": "Dos", "DE.Views.Toolbar.textContPage": "Página continua", + "DE.Views.Toolbar.textEditWatermark": "Marca de agua personalizada", "DE.Views.Toolbar.textEvenPage": "Página par", "DE.Views.Toolbar.textInMargin": "En margen", "DE.Views.Toolbar.textInsColumnBreak": "Insertar Grieta de Columna", @@ -2089,6 +2098,7 @@ "DE.Views.Toolbar.textPoint": "XY (Dispersión)", "DE.Views.Toolbar.textPortrait": "Vertical", "DE.Views.Toolbar.textRemoveControl": "Elimine el control de contenido", + "DE.Views.Toolbar.textRemWatermark": "Quitar marca de agua", "DE.Views.Toolbar.textRichControl": "Introducir contenido de texto rico", "DE.Views.Toolbar.textRight": "Derecho: ", "DE.Views.Toolbar.textStock": "De cotizaciones", @@ -2170,6 +2180,7 @@ "DE.Views.Toolbar.tipShowHiddenChars": "Caracteres no imprimibles", "DE.Views.Toolbar.tipSynchronize": "El documento ha sido cambiado por otro usuario. Por favor haga clic para guardar sus cambios y recargue las actualizaciones.", "DE.Views.Toolbar.tipUndo": "Deshacer", + "DE.Views.Toolbar.tipWatermark": "Editar marca de agua", "DE.Views.Toolbar.txtDistribHor": "Distribuir horizontalmente", "DE.Views.Toolbar.txtDistribVert": "Distribuir verticalmente", "DE.Views.Toolbar.txtMarginAlign": "Alinear al margen", @@ -2195,5 +2206,30 @@ "DE.Views.Toolbar.txtScheme6": "Concurrencia", "DE.Views.Toolbar.txtScheme7": "Equidad ", "DE.Views.Toolbar.txtScheme8": "Flujo", - "DE.Views.Toolbar.txtScheme9": "Fundición" + "DE.Views.Toolbar.txtScheme9": "Fundición", + "DE.Views.WatermarkSettingsDialog.cancelButtonText": "Cancelar", + "DE.Views.WatermarkSettingsDialog.okButtonText": "OK", + "DE.Views.WatermarkSettingsDialog.textAuto": "Auto", + "DE.Views.WatermarkSettingsDialog.textBold": "Negrita", + "DE.Views.WatermarkSettingsDialog.textColor": "Color de texto", + "DE.Views.WatermarkSettingsDialog.textDiagonal": "Diagonal", + "DE.Views.WatermarkSettingsDialog.textFont": "Fuente", + "DE.Views.WatermarkSettingsDialog.textFromFile": "De archivo", + "DE.Views.WatermarkSettingsDialog.textFromUrl": "De URL", + "DE.Views.WatermarkSettingsDialog.textHor": "Horizontal ", + "DE.Views.WatermarkSettingsDialog.textImageW": "Marca de agua de imagen", + "DE.Views.WatermarkSettingsDialog.textItalic": "Cursiva", + "DE.Views.WatermarkSettingsDialog.textLanguage": "Idioma", + "DE.Views.WatermarkSettingsDialog.textLayout": "Disposición", + "DE.Views.WatermarkSettingsDialog.textNewColor": "Añadir nuevo color personalizado", + "DE.Views.WatermarkSettingsDialog.textNone": "Ninguno", + "DE.Views.WatermarkSettingsDialog.textScale": "Escala", + "DE.Views.WatermarkSettingsDialog.textStrikeout": "Tachado", + "DE.Views.WatermarkSettingsDialog.textText": "Texto", + "DE.Views.WatermarkSettingsDialog.textTextW": "Marca de agua de texto", + "DE.Views.WatermarkSettingsDialog.textTitle": "Ajustes de Marca de agua", + "DE.Views.WatermarkSettingsDialog.textTransparency": "Semitransparente", + "DE.Views.WatermarkSettingsDialog.textUnderline": "Subrayado", + "DE.Views.WatermarkSettingsDialog.tipFontName": "Nombre de fuente", + "DE.Views.WatermarkSettingsDialog.tipFontSize": "Tamaño de fuente" } \ No newline at end of file diff --git a/apps/documenteditor/main/locale/fr.json b/apps/documenteditor/main/locale/fr.json index 9992a90de..8836db53d 100644 --- a/apps/documenteditor/main/locale/fr.json +++ b/apps/documenteditor/main/locale/fr.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Avertissement", "Common.Controllers.Chat.textEnterMessage": "Entrez votre message ici", - "Common.Controllers.Chat.textUserLimit": "Vous êtes en train d'utiliser ONLYOFFICE Free Edition.
      Ce ne sont que deux utilisateurs qui peuvent éditer le document simultanément.
      Voulez plus ? Envisagez d'acheter ONLYOFFICE Enterprise Edition.
      En savoir plus", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonyme", "Common.Controllers.ExternalDiagramEditor.textClose": "Fermer", "Common.Controllers.ExternalDiagramEditor.warningText": "L'objet est désactivé car il est en cours de modification par un autre utilisateur.", @@ -163,6 +162,7 @@ "Common.Views.Header.tipRedo": "Rétablir", "Common.Views.Header.tipSave": "Enregistrer", "Common.Views.Header.tipUndo": "Annuler", + "Common.Views.Header.tipUndock": "Détacher en fenêtre séparée", "Common.Views.Header.tipViewSettings": "Paramètres d'affichage", "Common.Views.Header.tipViewUsers": "Afficher les utilisateurs et gérer les droits d'accès aux documents", "Common.Views.Header.txtAccessRights": "Modifier les droits d'accès", @@ -333,7 +333,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Délai de conversion expiré.", "DE.Controllers.Main.criticalErrorExtText": "Cliquez sur \"OK\" pour revenir à la liste des documents.", "DE.Controllers.Main.criticalErrorTitle": "Erreur", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Échec du téléchargement.", "DE.Controllers.Main.downloadMergeText": "Téléchargement en cours...", "DE.Controllers.Main.downloadMergeTitle": "Téléchargement en cours", @@ -342,7 +341,7 @@ "DE.Controllers.Main.errorAccessDeny": "Vous tentez d'exéсuter une action pour laquelle vous ne disposez pas des droits.
      Veuillez contacter l'administrateur de Document Server.", "DE.Controllers.Main.errorBadImageUrl": "L'URL de l'image est incorrecte", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Connexion au serveur perdue. Le document ne peut être modifié en ce moment.", - "DE.Controllers.Main.errorConnectToServer": "Le document n'a pas pu être enregistré. Veuillez vérifier les paramètres de connexion ou contactez votre administrateur.
      Lorsque vous cliquez sur le bouton 'OK', vous serez invité à télécharger le document.

      Trouvez plus d'informations sur la connexion de Document Serverici", + "DE.Controllers.Main.errorConnectToServer": "Impossible d'enregistrer le document. Veuillez vérifier vos paramètres de connexion ou contactez l'administrateur.
      Lorsque vous cliquez sur le bouton 'OK', vous serez invité à télécharger le document.

      Trouvez plus d'informations sur la connexion au Serveur de Documents ici", "DE.Controllers.Main.errorDatabaseConnection": "Erreur externe.
      Erreur de connexion à la base de données. Si l'erreur persiste veillez contactez l'assistance technique.", "DE.Controllers.Main.errorDataEncrypted": "Les modifications chiffrées ont été reçues, elle ne peuvent pas être déchiffrées.", "DE.Controllers.Main.errorDataRange": "Plage de données incorrecte.", @@ -661,8 +660,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Le nombre de connexions simultanées a été dépassée et le document sera ouvert en mode lecture seule.
      Veuillez contacter votre administrateur pour plus d'informations.", "DE.Controllers.Main.warnLicenseExp": "Votre licence a expiré.
      Veuillez mettre à jour votre licence et actualisez la page.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Le nombre d'utilisateurs simultanés a été dépassé et le document sera ouvert en mode lecture seule.
      Veuillez contacter votre administrateur pour plus d'informations.", - "DE.Controllers.Main.warnNoLicense": "Cette version de ONLYOFFICE Editors a certaines limitations pour les connexions simultanées au serveur de documents.
      Si vous avez besoin de plus, considérez la possibilité de mettre à jour votre licence actuelle ou d'acheter une licence commerciale.", - "DE.Controllers.Main.warnNoLicenseUsers": "Cette version de ONLYOFFICE Editors a certaines limitations pour les utilisateurs simultanés.
      Si vous avez besoin de plus, considérez la possibilité de mettre à jour votre licence actuelle ou d'acheter une licence commerciale.", + "DE.Controllers.Main.warnNoLicense": "Cette version de %1 editors a certaines limitations pour les connexions simultanées au serveur de documents.
      Si vous avez besoin de plus, considérez la possibilité de mettre à jour votre licence actuelle ou d'acheter une licence commerciale.", + "DE.Controllers.Main.warnNoLicenseUsers": "Cette version de %1 editors a certaines limitations pour les utilisateurs simultanés.
      Si vous avez besoin de plus, considérez la possibilité de mettre à jour votre licence actuelle ou d'acheter une licence commerciale.", "DE.Controllers.Main.warnProcessRightsChange": "Le droit d'édition du fichier vous a été refusé.", "DE.Controllers.Navigation.txtBeginning": "Début du document", "DE.Controllers.Navigation.txtGotoBeginning": "Aller au début du document", @@ -1343,10 +1342,13 @@ "DE.Views.FileMenuPanels.CreateNew.newDescriptionText": "Créez un nouveau document texte vierge que vous serez en mesure de styliser et de formater après sa création au cours de la modification. Ou choisissez un des modèles où certains styles sont déjà pré-appliqués pour commencer un document d'un certain type ou objectif.", "DE.Views.FileMenuPanels.CreateNew.newDocumentText": "Nouveau document texte ", "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Pas de modèles", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddAuthor": "Ajouter un auteur", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddText": "Ajouter du texte", "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Application", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Auteur", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Changer les droits d'accès", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Date de création", + "DE.Views.FileMenuPanels.DocumentInfo.txtComment": "Commentaire", + "DE.Views.FileMenuPanels.DocumentInfo.txtCreated": "Créé", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Chargement en cours...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Pages", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Paragraphes", @@ -1356,6 +1358,7 @@ "DE.Views.FileMenuPanels.DocumentInfo.txtStatistics": "Statistiques", "DE.Views.FileMenuPanels.DocumentInfo.txtSymbols": "Symboles", "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Titre du document", + "DE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Chargé", "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Mots", "DE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Changer les droits d'accès", "DE.Views.FileMenuPanels.DocumentRights.txtRights": "Personnes qui ont des droits", @@ -2028,6 +2031,7 @@ "DE.Views.Toolbar.capBtnMargins": "Marges", "DE.Views.Toolbar.capBtnPageOrient": "Orientation", "DE.Views.Toolbar.capBtnPageSize": "Taille", + "DE.Views.Toolbar.capBtnWatermark": "Filigrane", "DE.Views.Toolbar.capImgAlign": "Aligner", "DE.Views.Toolbar.capImgBackward": "Reculer", "DE.Views.Toolbar.capImgForward": "Déplacer vers l'avant", @@ -2059,6 +2063,7 @@ "DE.Views.Toolbar.textColumnsThree": "Trois", "DE.Views.Toolbar.textColumnsTwo": "Deux", "DE.Views.Toolbar.textContPage": "Page continue", + "DE.Views.Toolbar.textEditWatermark": "Filigrane personnalisé", "DE.Views.Toolbar.textEvenPage": "Page paire", "DE.Views.Toolbar.textInMargin": "Dans la Marge", "DE.Views.Toolbar.textInsColumnBreak": "Insérer un saut de colonne", @@ -2195,5 +2200,14 @@ "DE.Views.Toolbar.txtScheme6": "Rotonde", "DE.Views.Toolbar.txtScheme7": "Capitaux", "DE.Views.Toolbar.txtScheme8": "Flux", - "DE.Views.Toolbar.txtScheme9": "Fonderie" + "DE.Views.Toolbar.txtScheme9": "Fonderie", + "DE.Views.WatermarkSettingsDialog.cancelButtonText": "Annuler", + "DE.Views.WatermarkSettingsDialog.textAuto": "Auto", + "DE.Views.WatermarkSettingsDialog.textBold": "Gras", + "DE.Views.WatermarkSettingsDialog.textColor": "Couleur du texte", + "DE.Views.WatermarkSettingsDialog.textNewColor": "Ajouter une nouvelle couleur personnalisée", + "DE.Views.WatermarkSettingsDialog.textText": "Texte", + "DE.Views.WatermarkSettingsDialog.textTextW": "Filigrane de texte", + "DE.Views.WatermarkSettingsDialog.textTitle": "Paramètres de filigrane", + "DE.Views.WatermarkSettingsDialog.textUnderline": "Souligné" } \ No newline at end of file diff --git a/apps/documenteditor/main/locale/hu.json b/apps/documenteditor/main/locale/hu.json index ba97f62f3..79648d6e5 100644 --- a/apps/documenteditor/main/locale/hu.json +++ b/apps/documenteditor/main/locale/hu.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Figyelmeztetés", "Common.Controllers.Chat.textEnterMessage": "Írja be ide az üzenetet", - "Common.Controllers.Chat.textUserLimit": "Ön az ONLYOFFICE Ingyenes Kiadást használja.
      Csak két felhasználó szerkesztheti egyszerre a dokumentumot.
      Többet szeretne? Fontolja meg az ONLYOFFICE Vállalati Kiadás megvásárlását
      Tudjon meg többet", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Névtelen", "Common.Controllers.ExternalDiagramEditor.textClose": "Bezár", "Common.Controllers.ExternalDiagramEditor.warningText": "Az objektum le van tiltva, mert azt egy másik felhasználó szerkeszti.", @@ -326,7 +325,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Időtúllépés az átalakítás során.", "DE.Controllers.Main.criticalErrorExtText": "Nyomja meg az \"OK\" gombot a dokumentumlistához való visszatéréshez.", "DE.Controllers.Main.criticalErrorTitle": "Hiba", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Dokumentum Szerkesztő", "DE.Controllers.Main.downloadErrorText": "Sikertelen letöltés.", "DE.Controllers.Main.downloadMergeText": "Letöltés...", "DE.Controllers.Main.downloadMergeTitle": "Letöltés", @@ -335,7 +333,7 @@ "DE.Controllers.Main.errorAccessDeny": "Olyan műveletet próbál végrehajtani, melyre nincs jogosultsága.
      Vegye fel a kapcsolatot a Document Server adminisztrátorával.", "DE.Controllers.Main.errorBadImageUrl": "Hibás kép URL", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Elveszett a kapcsolat a szerverrel. A dokumentum jelenleg nem szerkeszthető.", - "DE.Controllers.Main.errorConnectToServer": "A dokumentum mentése nem lehetséges. Kérjük ellenőrizze a kapcsolódási beállításokat vagy lépjen kapcsolatba a rendszer adminisztrátorral.
      Ha az 'OK'-ra kattint letöltheti a dokumentumot.

      Bővebb információk a Dokumentum Szerverhez kapcsolódásról itt találhat.", + "DE.Controllers.Main.errorConnectToServer": "A dokumentum mentése nem lehetséges. Kérjük ellenőrizze a kapcsolódási beállításokat vagy lépjen kapcsolatba a rendszer adminisztrátorral.
      Ha az 'OK'-ra kattint letöltheti a dokumentumot.

      Bővebb információk a Dokumentum Szerverhez kapcsolódásról itt találhat.", "DE.Controllers.Main.errorDatabaseConnection": "Külső hiba.
      Adatbázis-kapcsolati hiba. Ha a hiba továbbra is fennáll, lépjen kapcsolatba a rendszer támogatással.", "DE.Controllers.Main.errorDataEncrypted": "Titkosított változások érkeztek, melyek feloldása sikertelen.", "DE.Controllers.Main.errorDataRange": "Hibás adattartomány.", @@ -399,6 +397,7 @@ "DE.Controllers.Main.textClose": "Bezár", "DE.Controllers.Main.textCloseTip": "Kattintson, a tippek bezárásához", "DE.Controllers.Main.textContactUs": "Értékesítés elérhetősége", + "DE.Controllers.Main.textCustomLoader": "Kérjük, vegye figyelembe, hogy az engedély feltételei szerint nem jogosult a betöltő cseréjére.
      Kérjük, forduljon értékesítési osztályunkhoz, hogy árajánlatot kapjon.", "DE.Controllers.Main.textLoadingDocument": "Dokumentum betöltése", "DE.Controllers.Main.textNoLicenseTitle": "ONLYOFFICE kapcsolódási limitáció", "DE.Controllers.Main.textPaidFeature": "Fizetett funkció", @@ -425,6 +424,7 @@ "DE.Controllers.Main.txtFirstPage": "Első oldal", "DE.Controllers.Main.txtFooter": "Lábléc", "DE.Controllers.Main.txtHeader": "Fejléc", + "DE.Controllers.Main.txtHyperlink": "Hivatkozás", "DE.Controllers.Main.txtLines": "Vonalak", "DE.Controllers.Main.txtMath": "Matematika", "DE.Controllers.Main.txtNeedSynchronize": "Frissítés elérhető", @@ -520,14 +520,19 @@ "DE.Controllers.Main.txtShape_leftRightArrowCallout": "Jelmagyarázat jobbra-balra", "DE.Controllers.Main.txtShape_leftRightUpArrow": "Jobbra-balra-felfele nyíl", "DE.Controllers.Main.txtShape_leftUpArrow": "Balra felfele nyíl", + "DE.Controllers.Main.txtShape_line": "Vonal", "DE.Controllers.Main.txtShape_lineWithArrow": "Nyíl", "DE.Controllers.Main.txtShape_lineWithTwoArrows": "Dupla nyíl", "DE.Controllers.Main.txtShape_mathDivide": "Osztás", "DE.Controllers.Main.txtShape_mathEqual": "Egyenlő", + "DE.Controllers.Main.txtShape_mathMinus": "Mínusz", + "DE.Controllers.Main.txtShape_mathPlus": "Plusz", "DE.Controllers.Main.txtShape_noSmoking": "\"Nem\" szimbólum", "DE.Controllers.Main.txtShape_plaque": "Aláír", + "DE.Controllers.Main.txtShape_plus": "Plusz", "DE.Controllers.Main.txtShape_polyline2": "Szabad forma", "DE.Controllers.Main.txtShape_ribbon": "Dupla szalag", + "DE.Controllers.Main.txtShape_rightArrow": "Jobbra nyíl", "DE.Controllers.Main.txtShape_spline": "Görbe", "DE.Controllers.Main.txtShape_star10": "10 pontos csillag", "DE.Controllers.Main.txtShape_star12": "12 pontos csillag", @@ -578,8 +583,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "A párhuzamos kapcsolódások száma elérte a maximumot, így a dokumentum csak olvasható módban nyílik meg.
      Kérjük lépjen kapcsolatba a rendszer adminisztrátorral bővebb információkért.", "DE.Controllers.Main.warnLicenseExp": "A licence lejárt.
      Kérem frissítse a licencét, majd az oldalt.", "DE.Controllers.Main.warnLicenseUsersExceeded": "A párhuzamos felhasználók száma elérte a maximumot, így a dokumentum csak olvasható módban nyílik meg.
      Kérjük lépjen kapcsolatba a rendszer adminisztrátorral bővebb információkért.", - "DE.Controllers.Main.warnNoLicense": "Ez a verziója az ONLYOFFICE Szerkesztőnek bizonyos limitációkat tartalmaz párhuzamos kapcsolódások terén a dokumentum szerverhez.
      Amennyiben többre van szüksége, fontolja meg hogy kereskedelmi licenc megvásárlását.", - "DE.Controllers.Main.warnNoLicenseUsers": "Ez a verziója az ONLYOFFICE Szerkesztőnek bizonyos limitációkat tartalmaz párhuzamosan kapcsolódott felhasználók terén.
      Amennyiben többre van szüksége, fontolja meg hogy kereskedelmi licenc megvásárlását.", + "DE.Controllers.Main.warnNoLicense": "Ez a verziója az %1 szerkesztőnek bizonyos limitációkat tartalmaz párhuzamos kapcsolódások terén a dokumentum szerverhez.
      Amennyiben többre van szüksége, fontolja meg hogy kereskedelmi licenc megvásárlását.", + "DE.Controllers.Main.warnNoLicenseUsers": "Ez a verziója az %1 szerkesztőnek bizonyos limitációkat tartalmaz párhuzamosan kapcsolódott felhasználók terén.
      Amennyiben többre van szüksége, fontolja meg hogy kereskedelmi licenc megvásárlását.", "DE.Controllers.Main.warnProcessRightsChange": "Nincs joga szerkeszteni a fájl-t.", "DE.Controllers.Navigation.txtBeginning": "Dokumentum eleje", "DE.Controllers.Navigation.txtGotoBeginning": "Ugorj a dokumentum elejére", @@ -1081,6 +1086,8 @@ "DE.Views.DocumentHolder.textRemove": "Eltávolít", "DE.Views.DocumentHolder.textRemoveControl": "Tartalomkezelő eltávolítása", "DE.Views.DocumentHolder.textReplace": "Képet cserél", + "DE.Views.DocumentHolder.textRotate270": "Elforgat balra 90 fokkal", + "DE.Views.DocumentHolder.textRotate90": "Elforgat jobbra 90 fokkal", "DE.Views.DocumentHolder.textSeparateList": "Szeparált lista", "DE.Views.DocumentHolder.textSettings": "Beállítások", "DE.Views.DocumentHolder.textShapeAlignBottom": "Alulra rendez", @@ -1257,7 +1264,6 @@ "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Applikáció", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Szerző", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Hozzáférési jogok módosítása", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Létrehozás dátuma", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Betöltés...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Oldalak", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Bekezdések", @@ -1751,6 +1757,8 @@ "DE.Views.StyleTitleDialog.txtEmpty": "Ez egy szükséges mező", "DE.Views.StyleTitleDialog.txtNotEmpty": "A mező nem lehet üres", "DE.Views.TableFormulaDialog.cancelButtonText": "Mégse", + "DE.Views.TableFormulaDialog.okButtonText": "OK", + "DE.Views.TableFormulaDialog.textFormat": "Számformátum", "DE.Views.TableFormulaDialog.textFormula": "Függvény", "DE.Views.TableFormulaDialog.textTitle": "Függvény beállítások", "DE.Views.TableOfContentsSettings.cancelButtonText": "Mégsem", diff --git a/apps/documenteditor/main/locale/it.json b/apps/documenteditor/main/locale/it.json index fa752168e..adba75904 100644 --- a/apps/documenteditor/main/locale/it.json +++ b/apps/documenteditor/main/locale/it.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Avviso", "Common.Controllers.Chat.textEnterMessage": "Scrivi il tuo messaggio qui", - "Common.Controllers.Chat.textUserLimit": "Stai usando ONLYOFFICE Free Edition.
      Solo due utenti possono modificare il documento contemporaneamente.
      Si desidera di più? Considera l'acquisto di ONLYOFFICE Enterprise Edition.
      Ulteriori informazioni", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonimo", "Common.Controllers.ExternalDiagramEditor.textClose": "Chiudi", "Common.Controllers.ExternalDiagramEditor.warningText": "L'oggetto è disabilitato perché si sta modificando da un altro utente.", @@ -50,6 +49,9 @@ "Common.Controllers.ReviewChanges.textParaDeleted": "Paragrafo Eliminato", "Common.Controllers.ReviewChanges.textParaFormatted": "Paragraph Formatted", "Common.Controllers.ReviewChanges.textParaInserted": "Paragrafo Inserito", + "Common.Controllers.ReviewChanges.textParaMoveFromDown": "Spostato in basso:", + "Common.Controllers.ReviewChanges.textParaMoveFromUp": "Spostato in alto:", + "Common.Controllers.ReviewChanges.textParaMoveTo": "Spostato:", "Common.Controllers.ReviewChanges.textPosition": "Position", "Common.Controllers.ReviewChanges.textRight": "Align right", "Common.Controllers.ReviewChanges.textShape": "Shape", @@ -61,7 +63,10 @@ "Common.Controllers.ReviewChanges.textStrikeout": "Strikeout", "Common.Controllers.ReviewChanges.textSubScript": "Subscript", "Common.Controllers.ReviewChanges.textSuperScript": "Superscript", - "Common.Controllers.ReviewChanges.textTabs": "Modifica tabelle", + "Common.Controllers.ReviewChanges.textTableChanged": "Impostazioni tabella modificate", + "Common.Controllers.ReviewChanges.textTableRowsAdd": "Righe tabella aggiunte", + "Common.Controllers.ReviewChanges.textTableRowsDel": "Righe tabella eliminate", + "Common.Controllers.ReviewChanges.textTabs": "Modifica Schede", "Common.Controllers.ReviewChanges.textUnderline": "Sottolineato", "Common.Controllers.ReviewChanges.textWidow": "Widow control", "Common.UI.ComboBorderSize.txtNoBorders": "Nessun bordo", @@ -157,6 +162,7 @@ "Common.Views.Header.tipRedo": "Ripristina", "Common.Views.Header.tipSave": "Salva", "Common.Views.Header.tipUndo": "Annulla", + "Common.Views.Header.tipUndock": "Sgancia in una finestra separata", "Common.Views.Header.tipViewSettings": "Mostra impostazioni", "Common.Views.Header.tipViewUsers": "Mostra gli utenti e gestisci i diritti di accesso al documento", "Common.Views.Header.txtAccessRights": "Modifica diritti di accesso", @@ -255,13 +261,13 @@ "Common.Views.ReviewChanges.txtOriginalCap": "Originale", "Common.Views.ReviewChanges.txtPrev": "Precedente", "Common.Views.ReviewChanges.txtReject": "Reject", - "Common.Views.ReviewChanges.txtRejectAll": "Reject All Changes", + "Common.Views.ReviewChanges.txtRejectAll": "Annulla tutte le modifiche", "Common.Views.ReviewChanges.txtRejectChanges": "Rifiuta modifiche", - "Common.Views.ReviewChanges.txtRejectCurrent": "Reject Current Changes", + "Common.Views.ReviewChanges.txtRejectCurrent": "Annulla le modifiche attuali", "Common.Views.ReviewChanges.txtSharing": "Condivisione", "Common.Views.ReviewChanges.txtSpelling": "Controllo ortografia", "Common.Views.ReviewChanges.txtTurnon": "Traccia cambiamenti", - "Common.Views.ReviewChanges.txtView": "Modalità display", + "Common.Views.ReviewChanges.txtView": "Modalità Visualizzazione", "Common.Views.ReviewChangesDialog.textTitle": "Cambi di Revisione", "Common.Views.ReviewChangesDialog.txtAccept": "Accetta", "Common.Views.ReviewChangesDialog.txtAcceptAll": "Accetta tutte le modifiche", @@ -276,6 +282,8 @@ "Common.Views.ReviewPopover.textCancel": "Annulla", "Common.Views.ReviewPopover.textClose": "Chiudi", "Common.Views.ReviewPopover.textEdit": "OK", + "Common.Views.ReviewPopover.textFollowMove": "Segui mossa", + "Common.Views.ReviewPopover.textMention": "+mention fornirà l'accesso al documento e invierà un'e-mail", "Common.Views.ReviewPopover.textOpenAgain": "Apri di nuovo", "Common.Views.ReviewPopover.textReply": "Rispondi", "Common.Views.ReviewPopover.textResolve": "Risolvere", @@ -318,6 +326,7 @@ "DE.Controllers.LeftMenu.textNoTextFound": "I dati da cercare non sono stati trovati. Modifica i parametri di ricerca.", "DE.Controllers.LeftMenu.textReplaceSkipped": "La sostituzione è stata effettuata. {0} occorrenze sono state saltate.", "DE.Controllers.LeftMenu.textReplaceSuccess": "La ricerca è stata effettuata. Occorrenze sostituite: {0}", + "DE.Controllers.LeftMenu.txtCompatible": "Il documento verrà salvato nel nuovo formato questo consentirà di utilizzare tutte le funzionalità dell'editor, ma potrebbe influire sul layout del documento.
      Utilizzare l'opzione \"Compatibilità\" nelle impostazioni avanzate se si desidera rendere i file compatibili con le versioni precedenti di MS Word.", "DE.Controllers.LeftMenu.txtUntitled": "Senza titolo", "DE.Controllers.LeftMenu.warnDownloadAs": "Se continua a salvare in questo formato tutte le caratteristiche tranne il testo saranno perse.
      Sei sicuro di voler continuare?", "DE.Controllers.LeftMenu.warnDownloadAsRTF": "Se si continua a salvare in questo formato, parte della formattazione potrebbe andare persa.
      Vuoi continuare?", @@ -326,7 +335,6 @@ "DE.Controllers.Main.convertationTimeoutText": "E' stato superato il tempo limite della conversione.", "DE.Controllers.Main.criticalErrorExtText": "Clicca su \"OK\" per ritornare all'elenco dei documenti", "DE.Controllers.Main.criticalErrorTitle": "Errore", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Download fallito.", "DE.Controllers.Main.downloadMergeText": "Downloading...", "DE.Controllers.Main.downloadMergeTitle": "Downloading", @@ -335,7 +343,7 @@ "DE.Controllers.Main.errorAccessDeny": "Stai tentando di eseguire un'azione per la quale non disponi di permessi sufficienti.
      Si prega di contattare l'amministratore del Server dei Documenti.", "DE.Controllers.Main.errorBadImageUrl": "URL dell'immagine non corretto", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Connessione al server persa. Impossibile modificare il documento.", - "DE.Controllers.Main.errorConnectToServer": "Il documento non può essere salvato. Controllare le impostazioni di rete o contatta l'Amministratore.
      Quando clicchi 'OK' Ti verrà richiesto di scaricare il documento.

      Per maggiori dettagli sulla connessione al Document Server clicca qui", + "DE.Controllers.Main.errorConnectToServer": "Il documento non può essere salvato. Controllare le impostazioni di rete o contatta l'Amministratore.
      Quando clicchi 'OK' Ti verrà richiesto di scaricare il documento.

      Per maggiori dettagli sulla connessione al Document Server clicca qui", "DE.Controllers.Main.errorDatabaseConnection": "Errore esterno.
      Errore di connessione a banca dati. Si prega di contattare l'assistenza tecnica nel caso in cui l'errore persiste.", "DE.Controllers.Main.errorDataEncrypted": "Le modifiche crittografate sono state ricevute, non possono essere decifrate.", "DE.Controllers.Main.errorDataRange": "Intervallo di dati non corretto.", @@ -402,21 +410,21 @@ "DE.Controllers.Main.textContactUs": "Contatta il team di vendite", "DE.Controllers.Main.textCustomLoader": "Si noti che in base ai termini della licenza non si ha il diritto di cambiare il caricatore.
      Si prega di contattare il nostro ufficio vendite per ottenere un preventivo.", "DE.Controllers.Main.textLoadingDocument": "Caricamento del documento", - "DE.Controllers.Main.textNoLicenseTitle": "ONLYOFFICE® limite connessione", + "DE.Controllers.Main.textNoLicenseTitle": "%1 limite connessione", "DE.Controllers.Main.textPaidFeature": "Caratteristica a pagamento", "DE.Controllers.Main.textShape": "Forma", "DE.Controllers.Main.textStrict": "Modalità Rigorosa", "DE.Controllers.Main.textTryUndoRedo": "Le funzioni Annulla/Ripristina sono disabilitate per la Modalità di Co-editing Veloce.
      Clicca il pulsante 'Modalità Rigorosa' per passare alla Modalità di Co-editing Rigorosa per poter modificare il file senza l'interferenza di altri utenti e inviare le modifiche solamente dopo averle salvate. Puoi passare da una modalità all'altra di co-editing utilizzando le Impostazioni avanzate dell'editor.", "DE.Controllers.Main.titleLicenseExp": "La licenza è scaduta", "DE.Controllers.Main.titleServerVersion": "L'editor è stato aggiornato", - "DE.Controllers.Main.titleUpdateVersion": "Version changed", + "DE.Controllers.Main.titleUpdateVersion": "Versione Modificata", "DE.Controllers.Main.txtAbove": "Sopra", "DE.Controllers.Main.txtArt": "Il tuo testo qui", "DE.Controllers.Main.txtBasicShapes": "Figure di base", "DE.Controllers.Main.txtBelow": "sotto", "DE.Controllers.Main.txtBookmarkError": "Errore! Segnalibro non definito.", "DE.Controllers.Main.txtButtons": "Bottoni", - "DE.Controllers.Main.txtCallouts": "Chiamate", + "DE.Controllers.Main.txtCallouts": "Callout", "DE.Controllers.Main.txtCharts": "Grafici", "DE.Controllers.Main.txtCurrentDocument": "Documento Corrente", "DE.Controllers.Main.txtDiagramTitle": "Titolo diagramma", @@ -429,6 +437,8 @@ "DE.Controllers.Main.txtFooter": "Piè di pagina", "DE.Controllers.Main.txtFormulaNotInTable": "La formula non in tabella", "DE.Controllers.Main.txtHeader": "Intestazione", + "DE.Controllers.Main.txtHyperlink": "Collegamento ipertestuale", + "DE.Controllers.Main.txtIndTooLarge": "Indice troppo grande", "DE.Controllers.Main.txtLines": "Linee", "DE.Controllers.Main.txtMath": "Matematica", "DE.Controllers.Main.txtMissArg": "Argomento mancante", @@ -442,6 +452,12 @@ "DE.Controllers.Main.txtSameAsPrev": "come in precedenza", "DE.Controllers.Main.txtSection": "-Sezione", "DE.Controllers.Main.txtSeries": "Serie", + "DE.Controllers.Main.txtShape_accentBorderCallout1": "Callout Linea con bordo e barra in risalto", + "DE.Controllers.Main.txtShape_accentBorderCallout2": "Callout Linea piegata con bordo e barra in risalto", + "DE.Controllers.Main.txtShape_accentBorderCallout3": "Callout Doppia linea piegata con barra e bordo in risalto", + "DE.Controllers.Main.txtShape_accentCallout1": "Callout Linea con barra in risalto", + "DE.Controllers.Main.txtShape_accentCallout2": "Callout Linea piegata con barra in risalto", + "DE.Controllers.Main.txtShape_accentCallout3": "Callout Doppia linea piegata con barra in risalto", "DE.Controllers.Main.txtShape_actionButtonBackPrevious": "Indietro o Pulsante Precedente", "DE.Controllers.Main.txtShape_actionButtonBeginning": "Pulsante di Inizio", "DE.Controllers.Main.txtShape_actionButtonBlank": "Pulsante Vuoto", @@ -451,18 +467,39 @@ "DE.Controllers.Main.txtShape_actionButtonHelp": "Pulsante Aiuto", "DE.Controllers.Main.txtShape_actionButtonHome": "Pulsante Home", "DE.Controllers.Main.txtShape_actionButtonInformation": "Pulsante Informazioni", + "DE.Controllers.Main.txtShape_actionButtonMovie": "Pulsante Film", "DE.Controllers.Main.txtShape_actionButtonReturn": "Pulsante Invio", "DE.Controllers.Main.txtShape_actionButtonSound": "Pulsante Suono", "DE.Controllers.Main.txtShape_arc": "Arco", "DE.Controllers.Main.txtShape_bentArrow": "Freccia piegata", + "DE.Controllers.Main.txtShape_bentConnector5": "Connettore a gomito", + "DE.Controllers.Main.txtShape_bentConnector5WithArrow": "Connettore freccia a gomito", + "DE.Controllers.Main.txtShape_bentConnector5WithTwoArrows": "Connettore doppia freccia a gomito", "DE.Controllers.Main.txtShape_bentUpArrow": "Freccia curva in alto", "DE.Controllers.Main.txtShape_bevel": "Smussato", "DE.Controllers.Main.txtShape_blockArc": "Arco a tutto sesto", - "DE.Controllers.Main.txtShape_chevron": "Gallone", + "DE.Controllers.Main.txtShape_borderCallout1": "Callout Linea", + "DE.Controllers.Main.txtShape_borderCallout2": "Callout Linea piegata", + "DE.Controllers.Main.txtShape_borderCallout3": "Callout Doppia linea piegata", + "DE.Controllers.Main.txtShape_bracePair": "Doppia parentesi graffa", + "DE.Controllers.Main.txtShape_callout1": "Callout Linea senza bordo", + "DE.Controllers.Main.txtShape_callout2": "Callout Linea piegata senza bordo ", + "DE.Controllers.Main.txtShape_callout3": "Callout Doppia linea piegata senza bordo", + "DE.Controllers.Main.txtShape_can": "Cilindro", + "DE.Controllers.Main.txtShape_chevron": "freccia a Gallone", + "DE.Controllers.Main.txtShape_chord": "Corda", "DE.Controllers.Main.txtShape_circularArrow": "Freccia circolare", "DE.Controllers.Main.txtShape_cloud": "Nuvola", "DE.Controllers.Main.txtShape_cloudCallout": "Cloud Callout", + "DE.Controllers.Main.txtShape_corner": "Angolo", "DE.Controllers.Main.txtShape_cube": "Cubo", + "DE.Controllers.Main.txtShape_curvedConnector3": "Connettore curvo", + "DE.Controllers.Main.txtShape_curvedConnector3WithArrow": "Connettore a freccia curva", + "DE.Controllers.Main.txtShape_curvedConnector3WithTwoArrows": "Connettore a doppia freccia curva", + "DE.Controllers.Main.txtShape_curvedDownArrow": "Freccia curva in basso", + "DE.Controllers.Main.txtShape_curvedLeftArrow": "Freccia curva a sinistra", + "DE.Controllers.Main.txtShape_curvedRightArrow": "Freccia curva a destra", + "DE.Controllers.Main.txtShape_curvedUpArrow": "Freccia curva in su", "DE.Controllers.Main.txtShape_decagon": "Decagono", "DE.Controllers.Main.txtShape_diagStripe": "Striscia diagonale", "DE.Controllers.Main.txtShape_diamond": "Diamante", @@ -470,7 +507,10 @@ "DE.Controllers.Main.txtShape_donut": "Ciambella", "DE.Controllers.Main.txtShape_doubleWave": "Onda doppia", "DE.Controllers.Main.txtShape_downArrow": "Freccia in giù", + "DE.Controllers.Main.txtShape_downArrowCallout": "Callout Freccia in basso", "DE.Controllers.Main.txtShape_ellipse": "Ellisse", + "DE.Controllers.Main.txtShape_ellipseRibbon": "Nastro curvo e inclinato in basso", + "DE.Controllers.Main.txtShape_ellipseRibbon2": "Nastro curvato in alto", "DE.Controllers.Main.txtShape_flowChartAlternateProcess": "Diagramma di flusso: processo alternativo", "DE.Controllers.Main.txtShape_flowChartCollate": "Diagramma di flusso: Fascicolazione", "DE.Controllers.Main.txtShape_flowChartConnector": "Diagramma di flusso: Connettore", @@ -499,7 +539,9 @@ "DE.Controllers.Main.txtShape_flowChartSort": "Diagramma di flusso: Ordinamento", "DE.Controllers.Main.txtShape_flowChartSummingJunction": "Diagramma di flusso: Giunzione di somma", "DE.Controllers.Main.txtShape_flowChartTerminator": "Diagramma di flusso: Terminatore", + "DE.Controllers.Main.txtShape_foldedCorner": "angolo ripiegato", "DE.Controllers.Main.txtShape_frame": "Cornice", + "DE.Controllers.Main.txtShape_halfFrame": "Mezza Cornice", "DE.Controllers.Main.txtShape_heart": "Cuore", "DE.Controllers.Main.txtShape_heptagon": "Ettagono", "DE.Controllers.Main.txtShape_hexagon": "Esagono", @@ -508,16 +550,26 @@ "DE.Controllers.Main.txtShape_irregularSeal1": "Esplosione 1", "DE.Controllers.Main.txtShape_irregularSeal2": "Esplosione 2", "DE.Controllers.Main.txtShape_leftArrow": "Freccia Sinistra", + "DE.Controllers.Main.txtShape_leftArrowCallout": "Callout Freccia a sinistra", + "DE.Controllers.Main.txtShape_leftBrace": "Parentesi graffa aperta", + "DE.Controllers.Main.txtShape_leftBracket": "Parentesi quadra aperta", + "DE.Controllers.Main.txtShape_leftRightArrow": "Freccia bidirezionale sinistra destra", + "DE.Controllers.Main.txtShape_leftRightArrowCallout": "Callout Freccia bidirezionane sinistra destra", + "DE.Controllers.Main.txtShape_leftRightUpArrow": "Freccia tridirezionale sinistra destra alto", + "DE.Controllers.Main.txtShape_leftUpArrow": "Freccia bidirezionale sinistra alto", + "DE.Controllers.Main.txtShape_lightningBolt": "Fulmine", "DE.Controllers.Main.txtShape_line": "Linea", "DE.Controllers.Main.txtShape_lineWithArrow": "Freccia", "DE.Controllers.Main.txtShape_lineWithTwoArrows": "Freccia doppia", "DE.Controllers.Main.txtShape_mathDivide": "Divisione", "DE.Controllers.Main.txtShape_mathEqual": "Uguale", "DE.Controllers.Main.txtShape_mathMinus": "Meno", + "DE.Controllers.Main.txtShape_mathMultiply": "Moltiplicazione", "DE.Controllers.Main.txtShape_mathNotEqual": "Non uguale", "DE.Controllers.Main.txtShape_mathPlus": "Più", "DE.Controllers.Main.txtShape_moon": "Luna", "DE.Controllers.Main.txtShape_noSmoking": "Simbolo \"No\"", + "DE.Controllers.Main.txtShape_notchedRightArrow": "Freccia dentellata a destra ", "DE.Controllers.Main.txtShape_octagon": "Ottagono", "DE.Controllers.Main.txtShape_parallelogram": "Parallelogramma", "DE.Controllers.Main.txtShape_pentagon": "Pentagono", @@ -526,9 +578,25 @@ "DE.Controllers.Main.txtShape_plus": "Più", "DE.Controllers.Main.txtShape_polyline1": "Bozza", "DE.Controllers.Main.txtShape_polyline2": "Forma libera", + "DE.Controllers.Main.txtShape_quadArrow": "Freccia a incrocio", + "DE.Controllers.Main.txtShape_quadArrowCallout": "Callout Freccia a incrocio", "DE.Controllers.Main.txtShape_rect": "Rettangolo", + "DE.Controllers.Main.txtShape_ribbon": "Nastro inclinato in basso", + "DE.Controllers.Main.txtShape_ribbon2": "Nastro inclinato in alto", "DE.Controllers.Main.txtShape_rightArrow": "Freccia destra", + "DE.Controllers.Main.txtShape_rightArrowCallout": "Callout Freccia a destra", + "DE.Controllers.Main.txtShape_rightBrace": "Parentesi graffa chiusa", + "DE.Controllers.Main.txtShape_rightBracket": "Parentesi quadra chiusa", + "DE.Controllers.Main.txtShape_round1Rect": "Rettangolo ad angolo singolo smussato", + "DE.Controllers.Main.txtShape_round2DiagRect": "Rettangolo ad angolo diagonale smussato", + "DE.Controllers.Main.txtShape_round2SameRect": "Rettangolo smussato dallo stesso lato", + "DE.Controllers.Main.txtShape_roundRect": "Rettangolo ad angoli smussati", + "DE.Controllers.Main.txtShape_rtTriangle": "Triangolo rettangolo", "DE.Controllers.Main.txtShape_smileyFace": "Faccia sorridente", + "DE.Controllers.Main.txtShape_snip1Rect": "Ritaglia rettangolo ad angolo singolo", + "DE.Controllers.Main.txtShape_snip2DiagRect": "Ritaglia rettangolo ad angolo diagonale", + "DE.Controllers.Main.txtShape_snip2SameRect": "Ritaglia Rettangolo smussato dallo stesso lato", + "DE.Controllers.Main.txtShape_snipRoundRect": "Ritaglia e smussa singolo angolo rettangolo", "DE.Controllers.Main.txtShape_spline": "Curva", "DE.Controllers.Main.txtShape_star10": "Stella a 10 punte", "DE.Controllers.Main.txtShape_star12": "Stella a 12 punte", @@ -540,14 +608,21 @@ "DE.Controllers.Main.txtShape_star6": "Stella a 6 punte", "DE.Controllers.Main.txtShape_star7": "Stella a 7 punte", "DE.Controllers.Main.txtShape_star8": "Stella a 8 punte", + "DE.Controllers.Main.txtShape_stripedRightArrow": "Freccia a strisce verso destra ", "DE.Controllers.Main.txtShape_sun": "Sole", "DE.Controllers.Main.txtShape_teardrop": "Goccia", "DE.Controllers.Main.txtShape_textRect": "Casella di testo", "DE.Controllers.Main.txtShape_trapezoid": "Trapezio", - "DE.Controllers.Main.txtShape_triangle": "Triangolo", + "DE.Controllers.Main.txtShape_triangle": "Triangolo isoscele", "DE.Controllers.Main.txtShape_upArrow": "Freccia su", + "DE.Controllers.Main.txtShape_upArrowCallout": "Callout Freccia in alto", + "DE.Controllers.Main.txtShape_upDownArrow": "Freccia bidirezionale su giù", + "DE.Controllers.Main.txtShape_uturnArrow": "Freccia a inversione", "DE.Controllers.Main.txtShape_verticalScroll": "Scorrimento verticale", "DE.Controllers.Main.txtShape_wave": "Onda", + "DE.Controllers.Main.txtShape_wedgeEllipseCallout": "Callout Ovale", + "DE.Controllers.Main.txtShape_wedgeRectCallout": "Callout Rettangolare", + "DE.Controllers.Main.txtShape_wedgeRoundRectCallout": "Callout Rettangolare arrotondato", "DE.Controllers.Main.txtStarsRibbons": "Stelle e nastri", "DE.Controllers.Main.txtStyle_footnote_text": "Nota a piè di pagina", "DE.Controllers.Main.txtStyle_Heading_1": "Titolo 1", @@ -569,9 +644,11 @@ "DE.Controllers.Main.txtSyntaxError": "Errore di sintassi", "DE.Controllers.Main.txtTableInd": "L'indice della tabella non può essere zero", "DE.Controllers.Main.txtTableOfContents": "Sommario", + "DE.Controllers.Main.txtTooLarge": "Numero troppo grande per essere formattato", "DE.Controllers.Main.txtUndefBookmark": "Segnalibro indefinito", "DE.Controllers.Main.txtXAxis": "Asse X", "DE.Controllers.Main.txtYAxis": "Asse Y", + "DE.Controllers.Main.txtZeroDivide": "Diviso Zero", "DE.Controllers.Main.unknownErrorText": "Errore sconosciuto.", "DE.Controllers.Main.unsupportedBrowserErrorText": "Il tuo browser non è supportato.", "DE.Controllers.Main.uploadImageExtMessage": "Formato immagine sconosciuto.", @@ -585,12 +662,12 @@ "DE.Controllers.Main.warnLicenseExceeded": "Il numero di connessioni simultanee al server dei documenti è stato superato e il documento verrà aperto solo per la visualizzazione.
      Contattare l'amministratore per ulteriori informazioni.", "DE.Controllers.Main.warnLicenseExp": "La tua licenza è scaduta.
      Si prega di aggiornare la licenza e ricaricare la pagina.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Il numero di utenti simultaei è stato superato e il documento verrà aperto solo per la visualizzazione.
      Per ulteriori informazioni, contattare l'amministratore.", - "DE.Controllers.Main.warnNoLicense": "Questa versione di ONLYOFFICE® Editors presenta delle limitazioni per le connessioni simultanee al server dei documenti.
      Se necessiti di avere di più, considera l'acquisto di una licenza commerciale.", - "DE.Controllers.Main.warnNoLicenseUsers": "Questa versione di ONLYOFFICE® Editors presenta delle limitazioni per le connessioni simultanee al server dei documenti.
      Se necessiti di avere di più, considera l'acquisto di una licenza commerciale.", + "DE.Controllers.Main.warnNoLicense": "Questa versione di %1 editors presenta delle limitazioni per le connessioni simultanee al server dei documenti.
      Se necessiti di avere di più, considera l'acquisto di una licenza commerciale.", + "DE.Controllers.Main.warnNoLicenseUsers": "Questa versione di %1 editors presenta delle limitazioni per le connessioni simultanee al server dei documenti.
      Se necessiti di avere di più, considera l'acquisto di una licenza commerciale.", "DE.Controllers.Main.warnProcessRightsChange": "Ci stato negato il diritto alla modifica del file.", "DE.Controllers.Navigation.txtBeginning": "Inizio del documento", "DE.Controllers.Navigation.txtGotoBeginning": "Vai all'inizio del documento", - "DE.Controllers.Statusbar.textHasChanges": "New changes have been tracked", + "DE.Controllers.Statusbar.textHasChanges": "Sono state tracciate nuove modifiche", "DE.Controllers.Statusbar.textTrackChanges": "Il documento è aperto in modalità Traccia Revisioni attivata", "DE.Controllers.Statusbar.tipReview": "Traccia cambiamenti", "DE.Controllers.Statusbar.zoomText": "Zoom {0}%", @@ -1068,6 +1145,9 @@ "DE.Views.DocumentHolder.textContentControls": "Controllo Contenuto", "DE.Views.DocumentHolder.textContinueNumbering": "Continua la numerazione", "DE.Views.DocumentHolder.textCopy": "Copia", + "DE.Views.DocumentHolder.textCrop": "Ritaglia", + "DE.Views.DocumentHolder.textCropFill": "Riempimento", + "DE.Views.DocumentHolder.textCropFit": "Adatta", "DE.Views.DocumentHolder.textCut": "Taglia", "DE.Views.DocumentHolder.textDistributeCols": "Distribuisci colonne", "DE.Views.DocumentHolder.textDistributeRows": "Distribuisci righe", @@ -1075,6 +1155,7 @@ "DE.Views.DocumentHolder.textEditWrapBoundary": "Modifica bordi disposizione testo", "DE.Views.DocumentHolder.textFlipH": "Capovolgi orizzontalmente", "DE.Views.DocumentHolder.textFlipV": "Capovolgi verticalmente", + "DE.Views.DocumentHolder.textFollow": "Segui mossa", "DE.Views.DocumentHolder.textFromFile": "Da file", "DE.Views.DocumentHolder.textFromUrl": "Da URL", "DE.Views.DocumentHolder.textJoinList": "Iscriviti alla lista precedente", @@ -1108,6 +1189,7 @@ "DE.Views.DocumentHolder.textUpdateTOC": "Aggiorna Sommario", "DE.Views.DocumentHolder.textWrap": "Stile di disposizione testo", "DE.Views.DocumentHolder.tipIsLocked": "Questo elemento sta modificando da un altro utente.", + "DE.Views.DocumentHolder.toDictionaryText": "Aggiungi al Dizionario", "DE.Views.DocumentHolder.txtAddBottom": "Aggiungi bordo inferiore", "DE.Views.DocumentHolder.txtAddFractionBar": "Aggiungi barra di frazione", "DE.Views.DocumentHolder.txtAddHor": "Aggiungi linea orizzontale", @@ -1170,6 +1252,7 @@ "DE.Views.DocumentHolder.txtOverwriteCells": "Sovrascrivi celle", "DE.Views.DocumentHolder.txtPasteSourceFormat": "Mantieni la formattazione sorgente", "DE.Views.DocumentHolder.txtPressLink": "Premi CTRL e clicca sul collegamento", + "DE.Views.DocumentHolder.txtPrintSelection": "Stampa Selezione", "DE.Views.DocumentHolder.txtRemFractionBar": "Rimuovi la barra di frazione", "DE.Views.DocumentHolder.txtRemLimit": "Remove limit", "DE.Views.DocumentHolder.txtRemoveAccentChar": "Remove accent character", @@ -1263,19 +1346,27 @@ "DE.Views.FileMenuPanels.CreateNew.newDescriptionText": "Crea un nuovo documento di testo vuoto che potrai formattare in seguito durante la modifica. Oppure scegli uno dei modelli per creare un documento di un certo tipo al quale sono già applicati certi stili.", "DE.Views.FileMenuPanels.CreateNew.newDocumentText": "Nuovo documento di testo", "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Nessun modello", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddAuthor": "Aggiungi Autore", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddText": "Aggiungi testo", "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Applicazione", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Autore", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Cambia diritti di accesso", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Data di creazione", + "DE.Views.FileMenuPanels.DocumentInfo.txtComment": "Commento", + "DE.Views.FileMenuPanels.DocumentInfo.txtCreated": "Creato", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Caricamento in corso...", + "DE.Views.FileMenuPanels.DocumentInfo.txtModifyBy": "Ultima modifica di", + "DE.Views.FileMenuPanels.DocumentInfo.txtModifyDate": "Ultima modifica", + "DE.Views.FileMenuPanels.DocumentInfo.txtOwner": "Proprietario", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Pagine", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Paragrafi", "DE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Percorso", "DE.Views.FileMenuPanels.DocumentInfo.txtRights": "Persone con diritti", "DE.Views.FileMenuPanels.DocumentInfo.txtSpaces": "Simboli con spazi", "DE.Views.FileMenuPanels.DocumentInfo.txtStatistics": "Statistiche", + "DE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Oggetto", "DE.Views.FileMenuPanels.DocumentInfo.txtSymbols": "Simboli", "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Titolo documento", + "DE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Caricato", "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Parole", "DE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Cambia diritti di accesso", "DE.Views.FileMenuPanels.DocumentRights.txtRights": "Persone con diritti", @@ -1295,7 +1386,7 @@ "DE.Views.FileMenuPanels.Settings.strAutoRecover": "Attiva il ripristino automatico", "DE.Views.FileMenuPanels.Settings.strAutosave": "Attiva salvataggio automatico", "DE.Views.FileMenuPanels.Settings.strCoAuthMode": "Modalità di co-editing", - "DE.Views.FileMenuPanels.Settings.strCoAuthModeDescFast": "Other users will see your changes at once", + "DE.Views.FileMenuPanels.Settings.strCoAuthModeDescFast": "Gli altri utenti vedranno immediatamente i tuoi cambiamenti", "DE.Views.FileMenuPanels.Settings.strCoAuthModeDescStrict": "Dovrai accettare i cambiamenti prima di poterli visualizzare.", "DE.Views.FileMenuPanels.Settings.strFast": "Fast", "DE.Views.FileMenuPanels.Settings.strFontRender": "Hinting dei caratteri", @@ -1315,9 +1406,11 @@ "DE.Views.FileMenuPanels.Settings.textAlignGuides": "Guide di allineamento", "DE.Views.FileMenuPanels.Settings.textAutoRecover": "Recupero automatico", "DE.Views.FileMenuPanels.Settings.textAutoSave": "Salvataggio automatico", + "DE.Views.FileMenuPanels.Settings.textCompatible": "Compatibilità", "DE.Views.FileMenuPanels.Settings.textDisabled": "Disattivato", "DE.Views.FileMenuPanels.Settings.textForceSave": "Salva sul server", "DE.Views.FileMenuPanels.Settings.textMinute": "Ogni minuto", + "DE.Views.FileMenuPanels.Settings.textOldVersions": "Rendi i file compatibili con le versioni precedenti di MS Word quando vengono salvati come DOCX", "DE.Views.FileMenuPanels.Settings.txtAll": "Tutte", "DE.Views.FileMenuPanels.Settings.txtCm": "Centimetro", "DE.Views.FileMenuPanels.Settings.txtFitPage": "Adatta alla pagina", @@ -1367,6 +1460,9 @@ "DE.Views.HyperlinkSettingsDialog.txtHeadings": "Intestazioni", "DE.Views.HyperlinkSettingsDialog.txtNotUrl": "Il formato URL richiesto è \"http://www.example.com\"", "DE.Views.ImageSettings.textAdvanced": "Mostra impostazioni avanzate", + "DE.Views.ImageSettings.textCrop": "Ritaglia", + "DE.Views.ImageSettings.textCropFill": "Riempimento", + "DE.Views.ImageSettings.textCropFit": "Adatta", "DE.Views.ImageSettings.textEdit": "Modifica", "DE.Views.ImageSettings.textEditObject": "Modifica oggetto", "DE.Views.ImageSettings.textFitMargins": "Adatta al margine", @@ -1612,34 +1708,53 @@ "DE.Views.ParagraphSettingsAdvanced.strBorders": "Bordi e riempimento", "DE.Views.ParagraphSettingsAdvanced.strBreakBefore": "Anteponi interruzione", "DE.Views.ParagraphSettingsAdvanced.strDoubleStrike": "Barrato doppio", + "DE.Views.ParagraphSettingsAdvanced.strIndent": "Rientri", "DE.Views.ParagraphSettingsAdvanced.strIndentsFirstLine": "Prima riga", "DE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "A sinistra", + "DE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Interlinea", + "DE.Views.ParagraphSettingsAdvanced.strIndentsOutlinelevel": "Livello del contorno", "DE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "A destra", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "Dopo", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Prima", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Speciale", "DE.Views.ParagraphSettingsAdvanced.strKeepLines": "Mantieni assieme le righe", "DE.Views.ParagraphSettingsAdvanced.strKeepNext": "Mantieni con il successivo", "DE.Views.ParagraphSettingsAdvanced.strMargins": "Spaziatura interna", "DE.Views.ParagraphSettingsAdvanced.strOrphan": "Controllo righe isolate", "DE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Tipo di carattere", - "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Rientri e posizionamento", + "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Rientri e spaziatura", + "DE.Views.ParagraphSettingsAdvanced.strParagraphLine": "Interruzioni di riga e di pagina", "DE.Views.ParagraphSettingsAdvanced.strParagraphPosition": "Posizionamento", "DE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Minuscole", + "DE.Views.ParagraphSettingsAdvanced.strSomeParagraphSpace": "Non aggiungere intervallo tra paragrafi dello stesso stile", + "DE.Views.ParagraphSettingsAdvanced.strSpacing": "Spaziatura", "DE.Views.ParagraphSettingsAdvanced.strStrike": "Barrato", "DE.Views.ParagraphSettingsAdvanced.strSubscript": "Pedice", "DE.Views.ParagraphSettingsAdvanced.strSuperscript": "Apice", "DE.Views.ParagraphSettingsAdvanced.strTabs": "Tabulazione", "DE.Views.ParagraphSettingsAdvanced.textAlign": "Allineamento", + "DE.Views.ParagraphSettingsAdvanced.textAtLeast": "Minima", + "DE.Views.ParagraphSettingsAdvanced.textAuto": "Multiplo", "DE.Views.ParagraphSettingsAdvanced.textBackColor": "Colore sfondo", + "DE.Views.ParagraphSettingsAdvanced.textBodyText": "Corpo del testo", "DE.Views.ParagraphSettingsAdvanced.textBorderColor": "Colore bordo", "DE.Views.ParagraphSettingsAdvanced.textBorderDesc": "Clicca sul diagramma o utilizza i pulsanti per selezionare i bordi e applicare lo stile selezionato ad essi", "DE.Views.ParagraphSettingsAdvanced.textBorderWidth": "Dimensioni bordo", "DE.Views.ParagraphSettingsAdvanced.textBottom": "In basso", + "DE.Views.ParagraphSettingsAdvanced.textCentered": "Centrato", "DE.Views.ParagraphSettingsAdvanced.textCharacterSpacing": "Spaziatura caratteri", "DE.Views.ParagraphSettingsAdvanced.textDefault": "Predefinita", "DE.Views.ParagraphSettingsAdvanced.textEffects": "Effetti", + "DE.Views.ParagraphSettingsAdvanced.textExact": "Esatta", + "DE.Views.ParagraphSettingsAdvanced.textFirstLine": "Prima riga", + "DE.Views.ParagraphSettingsAdvanced.textHanging": "Sospensione", + "DE.Views.ParagraphSettingsAdvanced.textJustified": "Giustificato", "DE.Views.ParagraphSettingsAdvanced.textLeader": "Leader", "DE.Views.ParagraphSettingsAdvanced.textLeft": "A sinistra", + "DE.Views.ParagraphSettingsAdvanced.textLevel": "Livello", "DE.Views.ParagraphSettingsAdvanced.textNewColor": "Colore personalizzato", "DE.Views.ParagraphSettingsAdvanced.textNone": "Nessuno", + "DE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(nessuna)", "DE.Views.ParagraphSettingsAdvanced.textPosition": "Posizione", "DE.Views.ParagraphSettingsAdvanced.textRemove": "Elimina", "DE.Views.ParagraphSettingsAdvanced.textRemoveAll": "Elimina tutto", @@ -1660,6 +1775,7 @@ "DE.Views.ParagraphSettingsAdvanced.tipOuter": "Imposta solo bordi esterni", "DE.Views.ParagraphSettingsAdvanced.tipRight": "Imposta solo bordo destro", "DE.Views.ParagraphSettingsAdvanced.tipTop": "Imposta solo bordo superiore", + "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Auto", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "Nessun bordo", "DE.Views.RightMenu.txtChartSettings": "Impostazioni grafico", "DE.Views.RightMenu.txtHeaderFooterSettings": "Impostazioni intestazione e piè di pagina", @@ -1676,6 +1792,7 @@ "DE.Views.ShapeSettings.strFill": "Riempimento", "DE.Views.ShapeSettings.strForeground": "Colore primo piano", "DE.Views.ShapeSettings.strPattern": "Modello", + "DE.Views.ShapeSettings.strShadow": "Mostra ombra", "DE.Views.ShapeSettings.strSize": "Dimensione", "DE.Views.ShapeSettings.strStroke": "Tratto", "DE.Views.ShapeSettings.strTransparency": "Opacità", @@ -1945,6 +2062,7 @@ "DE.Views.Toolbar.capBtnMargins": "Margini", "DE.Views.Toolbar.capBtnPageOrient": "Orientamento", "DE.Views.Toolbar.capBtnPageSize": "Dimensione", + "DE.Views.Toolbar.capBtnWatermark": "Filigrana", "DE.Views.Toolbar.capImgAlign": "Allinea", "DE.Views.Toolbar.capImgBackward": "Porta indietro", "DE.Views.Toolbar.capImgForward": "Porta avanti", @@ -1976,6 +2094,7 @@ "DE.Views.Toolbar.textColumnsThree": "Tre", "DE.Views.Toolbar.textColumnsTwo": "Two", "DE.Views.Toolbar.textContPage": "Pagina continua", + "DE.Views.Toolbar.textEditWatermark": "Filigrana personalizzata", "DE.Views.Toolbar.textEvenPage": "Pagina pari", "DE.Views.Toolbar.textInMargin": "Nel margine", "DE.Views.Toolbar.textInsColumnBreak": "Insert Column Break", @@ -2006,6 +2125,7 @@ "DE.Views.Toolbar.textPoint": "XY (A dispersione)", "DE.Views.Toolbar.textPortrait": "Verticale", "DE.Views.Toolbar.textRemoveControl": "Rimuovi il controllo del contenuto", + "DE.Views.Toolbar.textRemWatermark": "Rimuovi filigrana", "DE.Views.Toolbar.textRichControl": "Inserisci il controllo del contenuto RTF", "DE.Views.Toolbar.textRight": "Right: ", "DE.Views.Toolbar.textStock": "Azionario", @@ -2081,12 +2201,13 @@ "DE.Views.Toolbar.tipPrint": "Stampa", "DE.Views.Toolbar.tipRedo": "Ripristina", "DE.Views.Toolbar.tipSave": "Salva", - "DE.Views.Toolbar.tipSaveCoauth": "Save your changes for the other users to see them.", + "DE.Views.Toolbar.tipSaveCoauth": "Salva i tuoi cambiamenti per renderli disponibili agli altri utenti.", "DE.Views.Toolbar.tipSendBackward": "Porta indietro", "DE.Views.Toolbar.tipSendForward": "Porta avanti", "DE.Views.Toolbar.tipShowHiddenChars": "Caratteri non stampabili", "DE.Views.Toolbar.tipSynchronize": "Il documento è stato modificato da un altro utente. Clicca per salvare le modifiche e ricaricare gli aggiornamenti.", "DE.Views.Toolbar.tipUndo": "Annulla", + "DE.Views.Toolbar.tipWatermark": "Modifica filigrana", "DE.Views.Toolbar.txtDistribHor": "Distribuisci orizzontalmente", "DE.Views.Toolbar.txtDistribVert": "Distribuisci verticalmente", "DE.Views.Toolbar.txtMarginAlign": "Allinea al margine", @@ -2112,5 +2233,30 @@ "DE.Views.Toolbar.txtScheme6": "Viale", "DE.Views.Toolbar.txtScheme7": "Universo", "DE.Views.Toolbar.txtScheme8": "Flusso", - "DE.Views.Toolbar.txtScheme9": "Galassia" + "DE.Views.Toolbar.txtScheme9": "Galassia", + "DE.Views.WatermarkSettingsDialog.cancelButtonText": "Annulla", + "DE.Views.WatermarkSettingsDialog.okButtonText": "OK", + "DE.Views.WatermarkSettingsDialog.textAuto": "Auto", + "DE.Views.WatermarkSettingsDialog.textBold": "Grassetto", + "DE.Views.WatermarkSettingsDialog.textColor": "Colore del testo", + "DE.Views.WatermarkSettingsDialog.textDiagonal": "Diagonale", + "DE.Views.WatermarkSettingsDialog.textFont": "Carattere", + "DE.Views.WatermarkSettingsDialog.textFromFile": "Da file", + "DE.Views.WatermarkSettingsDialog.textFromUrl": "Da URL", + "DE.Views.WatermarkSettingsDialog.textHor": "Orizzontale", + "DE.Views.WatermarkSettingsDialog.textImageW": "Immagine filigrana", + "DE.Views.WatermarkSettingsDialog.textItalic": "Corsivo", + "DE.Views.WatermarkSettingsDialog.textLanguage": "Lingua", + "DE.Views.WatermarkSettingsDialog.textLayout": "Layout", + "DE.Views.WatermarkSettingsDialog.textNewColor": "Colore personalizzato", + "DE.Views.WatermarkSettingsDialog.textNone": "Nessuno", + "DE.Views.WatermarkSettingsDialog.textScale": "Ridimensiona", + "DE.Views.WatermarkSettingsDialog.textStrikeout": "Barrato", + "DE.Views.WatermarkSettingsDialog.textText": "Testo", + "DE.Views.WatermarkSettingsDialog.textTextW": "Testo filigrana", + "DE.Views.WatermarkSettingsDialog.textTitle": "Impostazioni Filigrana", + "DE.Views.WatermarkSettingsDialog.textTransparency": "Semitrasparente", + "DE.Views.WatermarkSettingsDialog.textUnderline": "Sottolineato", + "DE.Views.WatermarkSettingsDialog.tipFontName": "Nome carattere", + "DE.Views.WatermarkSettingsDialog.tipFontSize": "Dimensione carattere" } \ No newline at end of file diff --git a/apps/documenteditor/main/locale/ja.json b/apps/documenteditor/main/locale/ja.json index 757eb077f..351481f2c 100644 --- a/apps/documenteditor/main/locale/ja.json +++ b/apps/documenteditor/main/locale/ja.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "警告", "Common.Controllers.Chat.textEnterMessage": "メッセージをここに挿入する", - "Common.Controllers.Chat.textUserLimit": "ONLYOFFICE無料版を使用しています。
      同時に2人のユーザのみは文書を編集することができます。
      もっとが必要ですか。ONLYOFFICEエンタープライズ版の購入を検討してください。
      Read more", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "匿名", "Common.Controllers.ExternalDiagramEditor.textClose": "閉じる", "Common.Controllers.ExternalDiagramEditor.warningText": "他のユーザは編集しているのためオブジェクトが無効になります。", @@ -177,14 +176,13 @@ "DE.Controllers.Main.convertationTimeoutText": "変換のタイムアウトを超過しました。", "DE.Controllers.Main.criticalErrorExtText": "OKボタンを押すと文書リストに戻ることができます。", "DE.Controllers.Main.criticalErrorTitle": "エラー", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "ダウンロード失敗", "DE.Controllers.Main.downloadMergeText": "ダウンロード中...", "DE.Controllers.Main.downloadMergeTitle": "ダウンロード中", "DE.Controllers.Main.downloadTextText": "ドキュメントのダウンロード中...", "DE.Controllers.Main.downloadTitleText": "ドキュメントのダウンロード中", "DE.Controllers.Main.errorCoAuthoringDisconnect": "サーバーとの接続が失われました。今、文書を編集することができません。", - "DE.Controllers.Main.errorConnectToServer": "文書を保存できませんでした。接続設定を確認するか、管理者にお問い合わせください。
      OKボタンをクリックするとドキュメントをダウンロードするように求められます。

      ドキュメントサーバーの接続の詳細情報を見つけます:here", + "DE.Controllers.Main.errorConnectToServer": "文書を保存できませんでした。接続設定を確認するか、管理者にお問い合わせください。
      OKボタンをクリックするとドキュメントをダウンロードするように求められます。

      ドキュメントサーバーの接続の詳細情報を見つけます:ここに", "DE.Controllers.Main.errorDatabaseConnection": "外部エラーです。
      データベース接続エラーです。この問題は解決しない場合は、サポートにお問い合わせください。", "DE.Controllers.Main.errorDataRange": "データ範囲が正しくありません", "DE.Controllers.Main.errorDefaultMessage": "エラー コード:%1", @@ -854,7 +852,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "テンプレートなし", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "作成者", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "アクセス許可の変更", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "作成日時", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "読み込み中...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "ページ", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "段落", diff --git a/apps/documenteditor/main/locale/ko.json b/apps/documenteditor/main/locale/ko.json index d7441b33f..e0e631514 100644 --- a/apps/documenteditor/main/locale/ko.json +++ b/apps/documenteditor/main/locale/ko.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "경고", "Common.Controllers.Chat.textEnterMessage": "여기에 메시지를 입력하십시오", - "Common.Controllers.Chat.textUserLimit": "ONLYOFFICE 무료 버전을 사용하고 있습니다.
      두 명의 사용자 만이 문서를 동시에 편집 할 수 있습니다.
      ONLYOFFICE Enterprise Edition 구입 고려하십시오.
      자세히보기 ", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "익명", "Common.Controllers.ExternalDiagramEditor.textClose": "닫기", "Common.Controllers.ExternalDiagramEditor.warningText": "다른 사용자가 편집 중이므로 개체를 사용할 수 없습니다.", @@ -310,7 +309,6 @@ "DE.Controllers.Main.convertationTimeoutText": "전환 시간 초과를 초과했습니다.", "DE.Controllers.Main.criticalErrorExtText": "문서 목록으로 돌아가려면 \"OK\"를 누르십시오.", "DE.Controllers.Main.criticalErrorTitle": "오류", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE 문서 편집기", "DE.Controllers.Main.downloadErrorText": "다운로드하지 못했습니다.", "DE.Controllers.Main.downloadMergeText": "다운로드 중 ...", "DE.Controllers.Main.downloadMergeTitle": "다운로드 중", @@ -319,7 +317,7 @@ "DE.Controllers.Main.errorAccessDeny": "권한이없는 작업을 수행하려고합니다.
      문서 관리자에게 문의하십시오.", "DE.Controllers.Main.errorBadImageUrl": "이미지 URL이 잘못되었습니다.", "DE.Controllers.Main.errorCoAuthoringDisconnect": "서버 연결이 끊어졌습니다. 지금 문서를 편집 할 수 없습니다.", - "DE.Controllers.Main.errorConnectToServer": "문서를 저장할 수 없습니다. 연결 설정을 확인하거나 관리자에게 문의하십시오.
      '확인'버튼을 클릭하면 문서를 다운로드하라는 메시지가 나타납니다.

      Document Server 연결에 대한 추가 정보 찾기 여기 ", + "DE.Controllers.Main.errorConnectToServer": "문서를 저장할 수 없습니다. 연결 설정을 확인하거나 관리자에게 문의하십시오.
      '확인'버튼을 클릭하면 문서를 다운로드하라는 메시지가 나타납니다.

      Document Server 연결에 대한 추가 정보 찾기 여기 ", "DE.Controllers.Main.errorDatabaseConnection": "외부 오류.
      데이터베이스 연결 오류입니다. 오류가 계속 발생하면 지원부에 문의하십시오.", "DE.Controllers.Main.errorDataRange": "잘못된 데이터 범위입니다.", "DE.Controllers.Main.errorDefaultMessage": "오류 코드 : % 1", @@ -444,8 +442,8 @@ "DE.Controllers.Main.warnBrowserIE9": "응용 프로그램의 기능이 IE9에서 부족합니다. IE10 이상을 사용하십시오.", "DE.Controllers.Main.warnBrowserZoom": "브라우저의 현재 확대 / 축소 설정이 완전히 지원되지 않습니다. Ctrl + 0을 눌러 기본 확대 / 축소로 재설정하십시오.", "DE.Controllers.Main.warnLicenseExp": "귀하의 라이센스가 만료되었습니다.
      라이센스를 업데이트하고 페이지를 새로 고침하십시오.", - "DE.Controllers.Main.warnNoLicense": "이 버전의 ONLYOFFICE 편집자는 문서 서버에 대한 동시 연결에 특정 제한 사항이 있습니다.
      더 많은 정보가 필요하면 현재 라이센스를 업그레이드하거나 상업용 라이센스를 구입하십시오.", - "DE.Controllers.Main.warnNoLicenseUsers": "ONLYOFFICE 편집자의이 버전은 동시 사용자에게 일정한 제한이 있습니다.
      더 필요한 것이 있으면 현재 라이센스를 업그레이드하거나 상용 라이센스를 구입하십시오.", + "DE.Controllers.Main.warnNoLicense": "이 버전의 %1 편집자는 문서 서버에 대한 동시 연결에 특정 제한 사항이 있습니다.
      더 많은 정보가 필요하면 현재 라이센스를 업그레이드하거나 상업용 라이센스를 구입하십시오.", + "DE.Controllers.Main.warnNoLicenseUsers": "%1 편집자의이 버전은 동시 사용자에게 일정한 제한이 있습니다.
      더 필요한 것이 있으면 현재 라이센스를 업그레이드하거나 상용 라이센스를 구입하십시오.", "DE.Controllers.Main.warnProcessRightsChange": "파일 편집 권한이 거부되었습니다.", "DE.Controllers.Navigation.txtBeginning": "문서의 시작", "DE.Controllers.Navigation.txtGotoBeginning": "문서의 시작점으로 이동", @@ -1095,7 +1093,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "템플릿이 없습니다", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "작성자", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "액세스 권한 변경", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Creation Date", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "로드 중 ...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Pages", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "단락", diff --git a/apps/documenteditor/main/locale/lv.json b/apps/documenteditor/main/locale/lv.json index d806618c9..7eaa4c94c 100644 --- a/apps/documenteditor/main/locale/lv.json +++ b/apps/documenteditor/main/locale/lv.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Warning", "Common.Controllers.Chat.textEnterMessage": "Ievadiet savu ziņu šeit", - "Common.Controllers.Chat.textUserLimit": "You are using ONLYOFFICE Free Edition.
      Only two users can co-edit the document simultaneously.
      Want more? Consider buying ONLYOFFICE Enterprise Edition.
      Read more", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonymous", "Common.Controllers.ExternalDiagramEditor.textClose": "Close", "Common.Controllers.ExternalDiagramEditor.warningText": "The object is disabled because it is being edited by another user.", @@ -307,7 +306,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Konversijas taimauts pārsniegts.", "DE.Controllers.Main.criticalErrorExtText": "Press \"OK\" to return to document list.", "DE.Controllers.Main.criticalErrorTitle": "Kļūda", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Dokumentu Redaktors", "DE.Controllers.Main.downloadErrorText": "Lejuplāde neizdevās.", "DE.Controllers.Main.downloadMergeText": "Downloading...", "DE.Controllers.Main.downloadMergeTitle": "Downloading", @@ -316,7 +314,7 @@ "DE.Controllers.Main.errorAccessDeny": "Jūs mēģināt veikt darbību, kuru nedrīkstat veikt.
      Lūdzu, sazinieties ar savu dokumentu servera administratoru.", "DE.Controllers.Main.errorBadImageUrl": "Nav pareizs attēla URL", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Server connection lost. The document cannot be edited right now.", - "DE.Controllers.Main.errorConnectToServer": "The document could not be saved. Please check connection settings or contact your administrator.
      When you click the 'OK' button, you will be prompted to download the document.

      Find more information about connecting Document Server here", + "DE.Controllers.Main.errorConnectToServer": "Dokumentu neizdevās noglabāt. Lūdzu, pārbaudiet savienojuma uzstādījumus vai sazinieties ar savu administratoru.
      Nospiežot \"OK\", jūs varēsit lejupielādēt dokumentu.

      Uzziniet vairāk par dokumentu servera pieslēgšanu šeit", "DE.Controllers.Main.errorDatabaseConnection": "External error.
      Database connection error. Please contact support in case the error persists.", "DE.Controllers.Main.errorDataRange": "Incorrect data range.", "DE.Controllers.Main.errorDefaultMessage": "Kļūdas kods: %1", @@ -441,8 +439,8 @@ "DE.Controllers.Main.warnBrowserIE9": "The application has low capabilities on IE9. Use IE10 or higher", "DE.Controllers.Main.warnBrowserZoom": "Pārlūkprogrammas pašreizējais tālummaiņas iestatījums netiek pilnībā atbalstīts. Lūdzu atiestatīt noklusējuma tālummaiņu, nospiežot Ctrl+0.", "DE.Controllers.Main.warnLicenseExp": "Jūsu licencei ir beidzies termiņš.
      Lūdzu, atjauniniet savu licenci un pārlādējiet lapu.", - "DE.Controllers.Main.warnNoLicense": "Šai ONLYOFFICE Editors versijai ir noteikti ierobežojumi saistībā ar vienlaicīgu pieslēgšanos dokumentu serverim.
      Ja jums ir nepieciešams vairāk, lūdzu, apsveriet Jūsu šībrīža licences līmeņa paaugstināšanu vai komerciālās licences iegādi.", - "DE.Controllers.Main.warnNoLicenseUsers": "Šai ONLYOFFICE Editors versijai ir noteikti ierobežojumi saistībā ar vairāku lietotāju vienlaicīgu darbību.
      Ja jums ir nepieciešams vairāk, lūdzu, apsveriet paaugstināt šībrīža licences līmeni vai komerciālās licences iegādi.", + "DE.Controllers.Main.warnNoLicense": "Šai %1 editors versijai ir noteikti ierobežojumi saistībā ar vienlaicīgu pieslēgšanos dokumentu serverim.
      Ja jums ir nepieciešams vairāk, lūdzu, apsveriet Jūsu šībrīža licences līmeņa paaugstināšanu vai komerciālās licences iegādi.", + "DE.Controllers.Main.warnNoLicenseUsers": "Šai %1 editors versijai ir noteikti ierobežojumi saistībā ar vairāku lietotāju vienlaicīgu darbību.
      Ja jums ir nepieciešams vairāk, lūdzu, apsveriet paaugstināt šībrīža licences līmeni vai komerciālās licences iegādi.", "DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.", "DE.Controllers.Navigation.txtBeginning": "Dokumenta sākums", "DE.Controllers.Navigation.txtGotoBeginning": "Doties uz dokumenta sākumu", @@ -1092,7 +1090,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Nav veidnes", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Autors", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Change access rights", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Izveides datums", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Ielādē...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Lapas", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Rindkopu", @@ -1385,7 +1382,7 @@ "DE.Views.NoteSettingsDialog.textTitle": "Piezīmju uzstādījumi", "DE.Views.PageMarginsDialog.cancelButtonText": "Cancel", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Warning", - "DE.Views.PageMarginsDialog.okButtonText": "OK", + "DE.Views.PageMarginsDialog.okButtonText": "Ok", "DE.Views.PageMarginsDialog.textBottom": "Bottom", "DE.Views.PageMarginsDialog.textLeft": "Left", "DE.Views.PageMarginsDialog.textRight": "Right", diff --git a/apps/documenteditor/main/locale/nl.json b/apps/documenteditor/main/locale/nl.json index 7f99a4e22..5877b35b7 100644 --- a/apps/documenteditor/main/locale/nl.json +++ b/apps/documenteditor/main/locale/nl.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Waarschuwing", "Common.Controllers.Chat.textEnterMessage": "Voer hier uw bericht in", - "Common.Controllers.Chat.textUserLimit": "U gebruikt ONLYOFFICE Free Edition.
      Er kunnen maar twee gebruikers tegelijk het document bewerken.
      U wilt meer? Overweeg ONLYOFFICE Enterprise Edition aan te schaffen.
      Meer informatie", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anoniem", "Common.Controllers.ExternalDiagramEditor.textClose": "Sluiten", "Common.Controllers.ExternalDiagramEditor.warningText": "Het object is gedeactiveerd omdat het wordt bewerkt door een andere gebruiker.", @@ -329,7 +328,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Time-out voor conversie overschreden.", "DE.Controllers.Main.criticalErrorExtText": "Klik op \"OK\" om terug te keren naar de lijst met documenten.", "DE.Controllers.Main.criticalErrorTitle": "Fout", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE-documenteditor", "DE.Controllers.Main.downloadErrorText": "Download mislukt.", "DE.Controllers.Main.downloadMergeText": "Downloaden...", "DE.Controllers.Main.downloadMergeTitle": "Downloaden", @@ -338,7 +336,7 @@ "DE.Controllers.Main.errorAccessDeny": "U probeert een actie uit te voeren waarvoor u geen rechten hebt.
      Neem contact op met de beheerder van de documentserver.", "DE.Controllers.Main.errorBadImageUrl": "URL afbeelding is onjuist", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Verbinding met server is verbroken. Het document kan op dit moment niet worden bewerkt.", - "DE.Controllers.Main.errorConnectToServer": "Het document kan niet worden opgeslagen. Controleer de verbindingsinstellingen of neem contact op met de beheerder.
      Wanneer u op de knop 'OK' klikt, wordt u gevraagd om het document te downloaden.

      Meer informatie over de verbinding met een documentserver is hier te vinden.", + "DE.Controllers.Main.errorConnectToServer": "Het document kan niet worden opgeslagen. Controleer de verbindingsinstellingen of neem contact op met de beheerder.
      Wanneer u op de knop 'OK' klikt, wordt u gevraagd het document te downloaden.

      Meer informatie over verbindingen met de documentserver is hier te vinden.", "DE.Controllers.Main.errorDatabaseConnection": "Externe fout.
      Fout in databaseverbinding. Neem contact op met Support als deze fout zich blijft voordoen.", "DE.Controllers.Main.errorDataRange": "Onjuist gegevensbereik.", "DE.Controllers.Main.errorDefaultMessage": "Foutcode: %1", @@ -537,8 +535,8 @@ "DE.Controllers.Main.warnBrowserIE9": "Met IE9 heeft de toepassing beperkte mogelijkheden. Gebruik IE10 of hoger.", "DE.Controllers.Main.warnBrowserZoom": "De huidige zoominstelling van uw browser wordt niet ondersteund. Zet de zoominstelling terug op de standaardwaarde door op Ctrl+0 te drukken.", "DE.Controllers.Main.warnLicenseExp": "Uw licentie is vervallen.
      Werk uw licentie bij en vernieuw de pagina.", - "DE.Controllers.Main.warnNoLicense": "Deze versie van Only Office bevat limieten voor het aantal gelijktijdige gebruikers.
      Indien meer nodig is, upgrade dan de huidige licentie of schaf een commerciële licentie aan.", - "DE.Controllers.Main.warnNoLicenseUsers": "Deze versie van Only Office bevat limieten voor het aantal gelijktijdige gebruikers.
      Indien meer nodig is, upgrade dan de huidige licentie of schaf een commerciële licentie aan.", + "DE.Controllers.Main.warnNoLicense": "Deze versie van %1 bevat limieten voor het aantal gelijktijdige gebruikers.
      Indien meer nodig is, upgrade dan de huidige licentie of schaf een commerciële licentie aan.", + "DE.Controllers.Main.warnNoLicenseUsers": "Deze versie van %1 bevat limieten voor het aantal gelijktijdige gebruikers.
      Indien meer nodig is, upgrade dan de huidige licentie of schaf een commerciële licentie aan.", "DE.Controllers.Main.warnProcessRightsChange": "Het recht om het bestand te bewerken is u ontzegd.", "DE.Controllers.Navigation.txtBeginning": "Begin van het document", "DE.Controllers.Navigation.txtGotoBeginning": "Ga naar het begin van het document", @@ -1212,7 +1210,6 @@ "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Applicatie", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Auteur", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Toegangsrechten wijzigen", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Datum gemaakt", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Laden...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Pagina's", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Alinea's", diff --git a/apps/documenteditor/main/locale/pl.json b/apps/documenteditor/main/locale/pl.json index 1b4750dcd..a2dc3d868 100644 --- a/apps/documenteditor/main/locale/pl.json +++ b/apps/documenteditor/main/locale/pl.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Ostrzeżenie", "Common.Controllers.Chat.textEnterMessage": "Wprowadź swoją wiadomość tutaj", - "Common.Controllers.Chat.textUserLimit": "Używasz ONLYOFFICE Free Edition.
      Tylko dwóch użytkowników może jednocześnie edytować dokument. Chcesz więcej? Zastanów się nad zakupem ONLYOFFICE Enterprise Edition. Czytaj więcej ", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Gość", "Common.Controllers.ExternalDiagramEditor.textClose": "Zamknij", "Common.Controllers.ExternalDiagramEditor.warningText": "Obiekt jest wyłączony, ponieważ jest edytowany przez innego użytkownika.", @@ -272,7 +271,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Przekroczono limit czasu konwersji.", "DE.Controllers.Main.criticalErrorExtText": "Naciśnij \"OK\", aby powrócić do listy dokumentów.", "DE.Controllers.Main.criticalErrorTitle": "Błąd", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Edytor dokumentów", "DE.Controllers.Main.downloadErrorText": "Pobieranie nieudane.", "DE.Controllers.Main.downloadMergeText": "Pobieranie...", "DE.Controllers.Main.downloadMergeTitle": "Pobieranie", @@ -281,7 +279,7 @@ "DE.Controllers.Main.errorAccessDeny": "Próbujesz wykonać działanie, na które nie masz uprawnień.
      Proszę skontaktować się z administratorem serwera dokumentów.", "DE.Controllers.Main.errorBadImageUrl": "Adres URL obrazu jest błędny", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Połączenie z serwerem zostało utracone. Nie można teraz edytować dokumentu.", - "DE.Controllers.Main.errorConnectToServer": "Nie można zapisać dokumentu. Sprawdź ustawienia połączenia lub skontaktuj się z administratorem.
      Po kliknięciu przycisku \"OK\" zostanie wyświetlony monit o pobranie dokumentu.

      Dowiedz się więcej o połączeniu serwera dokumentów tutaj", + "DE.Controllers.Main.errorConnectToServer": "Nie można zapisać dokumentu. Sprawdź ustawienia połączenia lub skontaktuj się z administratorem.
      Po kliknięciu przycisku \"OK\" zostanie wyświetlony monit o pobranie dokumentu.

      Dowiedz się więcej o połączeniu serwera dokumentów tutaj", "DE.Controllers.Main.errorDatabaseConnection": "Błąd zewnętrzny.
      Błąd połączenia z bazą danych. W przypadku wystąpienia błędu należy skontaktować się z pomocą techniczną.", "DE.Controllers.Main.errorDataRange": "Błędny zakres danych.", "DE.Controllers.Main.errorDefaultMessage": "Kod błędu: %1", @@ -429,7 +427,7 @@ "DE.Controllers.Main.warnBrowserIE9": "Aplikacja ma małe możliwości w IE9. Użyj przeglądarki IE10 lub nowszej.", "DE.Controllers.Main.warnBrowserZoom": "Aktualne ustawienie powiększenia przeglądarki nie jest w pełni obsługiwane. Zresetuj domyślny zoom, naciskając Ctrl + 0.", "DE.Controllers.Main.warnLicenseExp": "Twoja licencja wygasła.
      Zaktualizuj licencję i odśwież stronę.", - "DE.Controllers.Main.warnNoLicense": "Używasz wersji ONLYOFFICE w wersji open source. Wersja ma ograniczenia dla jednoczesnych połączeń z serwerem dokumentów (po 20 połączeń naraz). Jeśli potrzebujesz więcej, rozważ zakup licencji komercyjnej.", + "DE.Controllers.Main.warnNoLicense": "Używasz wersji %1 w wersji open source. Wersja ma ograniczenia dla jednoczesnych połączeń z serwerem dokumentów (po 20 połączeń naraz). Jeśli potrzebujesz więcej, rozważ zakup licencji komercyjnej.", "DE.Controllers.Main.warnProcessRightsChange": "Nie masz prawa edytować tego pliku.", "DE.Controllers.Navigation.txtBeginning": "Początek dokumentu", "DE.Controllers.Statusbar.textHasChanges": "Nowe zmiany zostały śledzone", @@ -1057,10 +1055,11 @@ "DE.Views.FileMenuPanels.CreateNew.newDescriptionText": "Utwórz nowy pusty dokument tekstowy, który będziesz mógł formatować po jego utworzeniu podczas edytowania. Możesz też wybrać jeden z szablonów, aby utworzyć dokument określonego typu lub celu, w którym niektóre style zostały wcześniej zastosowane.", "DE.Views.FileMenuPanels.CreateNew.newDocumentText": "Nowy dokument tekstowy", "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Tam nie ma żadnych szablonów", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddAuthor": "Dodaj autora", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddText": "Dodaj tekst", "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Aplikacja", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Autor", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Zmień prawa dostępu", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Data utworzenia", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Ładowanie...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Strony", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Akapity", @@ -1247,8 +1246,10 @@ "DE.Views.LeftMenu.txtDeveloper": "TRYB DEWELOPERA", "DE.Views.Links.capBtnBookmarks": "Zakładka", "DE.Views.Links.capBtnInsContents": "Spis treści", + "DE.Views.Links.mniInsFootnote": "Wstaw przypis", "DE.Views.Links.tipBookmarks": "Utwórz zakładkę", "DE.Views.Links.tipInsertHyperlink": "Dodaj hiperłącze", + "DE.Views.Links.tipNotes": "Wstawianie lub edytowanie przypisów", "DE.Views.MailMergeEmailDlg.cancelButtonText": "Anuluj", "DE.Views.MailMergeEmailDlg.filePlaceholder": "PDF", "DE.Views.MailMergeEmailDlg.okButtonText": "Wyślij", @@ -1718,9 +1719,10 @@ "DE.Views.Toolbar.textSurface": "Powierzchnia", "DE.Views.Toolbar.textTabCollaboration": "Współpraca", "DE.Views.Toolbar.textTabFile": "Plik", - "DE.Views.Toolbar.textTabHome": "Start", - "DE.Views.Toolbar.textTabInsert": "Wstawić", + "DE.Views.Toolbar.textTabHome": "Narzędzia główne", + "DE.Views.Toolbar.textTabInsert": "Wstawianie", "DE.Views.Toolbar.textTabLayout": "Układ", + "DE.Views.Toolbar.textTabLinks": "Odwołania", "DE.Views.Toolbar.textTabReview": "Przegląd", "DE.Views.Toolbar.textTitleError": "Błąd", "DE.Views.Toolbar.textToCurrent": "Do aktualnej pozycji", @@ -1731,6 +1733,7 @@ "DE.Views.Toolbar.tipAlignLeft": "Wyrównaj do lewej", "DE.Views.Toolbar.tipAlignRight": "Wyrównaj do prawej", "DE.Views.Toolbar.tipBack": "Powrót", + "DE.Views.Toolbar.tipBlankPage": "Wstaw pustą stronę", "DE.Views.Toolbar.tipChangeChart": "Zmień typ wykresu", "DE.Views.Toolbar.tipClearStyle": "Wyczyść style", "DE.Views.Toolbar.tipColorSchemas": "Zmień schemat kolorów", @@ -1801,5 +1804,6 @@ "DE.Views.Toolbar.txtScheme6": "Zbiegowisko", "DE.Views.Toolbar.txtScheme7": "Kapitał", "DE.Views.Toolbar.txtScheme8": "Przepływ", - "DE.Views.Toolbar.txtScheme9": "Odlewnia" + "DE.Views.Toolbar.txtScheme9": "Odlewnia", + "DE.Views.WatermarkSettingsDialog.textNewColor": "Nowy niestandardowy kolor" } \ No newline at end of file diff --git a/apps/documenteditor/main/locale/pt.json b/apps/documenteditor/main/locale/pt.json index a51fb836d..e844f522e 100644 --- a/apps/documenteditor/main/locale/pt.json +++ b/apps/documenteditor/main/locale/pt.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Aviso", "Common.Controllers.Chat.textEnterMessage": "Insira sua mensagem aqui", - "Common.Controllers.Chat.textUserLimit": "You are using ONLYOFFICE Free Edition.
      Only two users can co-edit the document simultaneously.
      Want more? Consider buying ONLYOFFICE Enterprise Edition.
      Read more", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anônimo", "Common.Controllers.ExternalDiagramEditor.textClose": "Fechar", "Common.Controllers.ExternalDiagramEditor.warningText": "O objeto está desabilitado por que está sendo editado por outro usuário.", @@ -280,7 +279,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Tempo limite de conversão excedido.", "DE.Controllers.Main.criticalErrorExtText": "Pressione \"OK\" para voltar para a lista de documentos.", "DE.Controllers.Main.criticalErrorTitle": "Erro", - "DE.Controllers.Main.defaultTitleText": "Editor de documento ONLYOFFICE", "DE.Controllers.Main.downloadErrorText": "Download falhou.", "DE.Controllers.Main.downloadMergeText": "Downloading...", "DE.Controllers.Main.downloadMergeTitle": "Downloading", @@ -289,7 +287,7 @@ "DE.Controllers.Main.errorAccessDeny": "Você está tentando executar uma ação que você não tem direitos.
      Contate o administrador do Servidor de Documentos.", "DE.Controllers.Main.errorBadImageUrl": "URL de imagem está incorreta", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Conexão com servidor perdida. O documento não pode ser editado neste momento.", - "DE.Controllers.Main.errorConnectToServer": "O documento não pode ser salvo. Verifique as configurações de conexão ou entre em contato com o seu administrador.
      Quando você clicar no botão \"OK\", poderá baixar o documento.

      Encontre mais informações sobre conexão com o Document Server aqui", + "DE.Controllers.Main.errorConnectToServer": "O documento não pôde ser salvo. Verifique as configurações de conexão ou entre em contato com o administrador.
      Quando você clicar no botão 'OK', você será solicitado à fazer o download do documento.

      Encontre mais informações sobre como conecta ao Document Server aqui", "DE.Controllers.Main.errorDatabaseConnection": "Erro externo.
      Erro de conexão ao banco de dados. Entre em contato com o suporte caso o erro persista.", "DE.Controllers.Main.errorDataRange": "Intervalo de dados incorreto.", "DE.Controllers.Main.errorDefaultMessage": "Código do erro: %1", @@ -408,8 +406,8 @@ "DE.Controllers.Main.warnBrowserIE9": "O aplicativo tem baixa capacidade no IE9. Usar IE10 ou superior", "DE.Controllers.Main.warnBrowserZoom": "A configuração de zoom atual de seu navegador não é completamente suportada. Redefina para o zoom padrão pressionando Ctrl+0.", "DE.Controllers.Main.warnLicenseExp": "Sua licença expirou.
      Atualize sua licença e refresque a página.", - "DE.Controllers.Main.warnNoLicense": "Você está usando uma versão de código aberto de ONLYOFFICE. A versão tem limitações para conexões simultâneas com servidor de documentos (20 conexões por vez).
      Se você precisar de mais, por favor considere a compra de uma licença comercial.", - "DE.Controllers.Main.warnNoLicenseUsers": "Você está usando uma versão de código aberto de ONLYOFFICE. A versão tem limitações para conexões simultâneas com servidor de documentos (20 conexões por vez).
      Se você precisar de mais, por favor considere a compra de uma licença comercial.", + "DE.Controllers.Main.warnNoLicense": "Você está usando uma versão de código aberto de %1. A versão tem limitações para conexões simultâneas com servidor de documentos (20 conexões por vez).
      Se você precisar de mais, por favor considere a compra de uma licença comercial.", + "DE.Controllers.Main.warnNoLicenseUsers": "Você está usando uma versão de código aberto de %1. A versão tem limitações para conexões simultâneas com servidor de documentos (20 conexões por vez).
      Se você precisar de mais, por favor considere a compra de uma licença comercial.", "DE.Controllers.Main.warnProcessRightsChange": "Foi negado a você o direito de editar o arquivo.", "DE.Controllers.Navigation.txtBeginning": "Início do documento", "DE.Controllers.Navigation.txtGotoBeginning": "Ir para o início do documento", @@ -1044,7 +1042,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Não há modelos", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Autor", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Alterar direitos de acesso", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Data de criação", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Carregando...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Páginas", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Parágrafos", diff --git a/apps/documenteditor/main/locale/ru.json b/apps/documenteditor/main/locale/ru.json index 209edaa2f..57a23f1b8 100644 --- a/apps/documenteditor/main/locale/ru.json +++ b/apps/documenteditor/main/locale/ru.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Предупреждение", "Common.Controllers.Chat.textEnterMessage": "Введите здесь своё сообщение", - "Common.Controllers.Chat.textUserLimit": "Вы используете бесплатную версию ONLYOFFICE.
      Только два пользователя одновременно могут совместно редактировать документ.
      Требуется больше? Рекомендуем приобрести корпоративную версию ONLYOFFICE.
      Читать дальше", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Аноним", "Common.Controllers.ExternalDiagramEditor.textClose": "Закрыть", "Common.Controllers.ExternalDiagramEditor.warningText": "Объект недоступен, так как редактируется другим пользователем.", @@ -23,7 +22,7 @@ "Common.Controllers.ReviewChanges.textContextual": "Не добавлять интервал между абзацами одного стиля", "Common.Controllers.ReviewChanges.textDeleted": "Удалено:", "Common.Controllers.ReviewChanges.textDStrikeout": "Двойное зачеркивание", - "Common.Controllers.ReviewChanges.textEquation": "Формула", + "Common.Controllers.ReviewChanges.textEquation": "Уравнение", "Common.Controllers.ReviewChanges.textExact": "Точно", "Common.Controllers.ReviewChanges.textFirstLine": "Первая строка", "Common.Controllers.ReviewChanges.textFontSize": "Размер шрифта", @@ -163,6 +162,7 @@ "Common.Views.Header.tipRedo": "Повторить", "Common.Views.Header.tipSave": "Сохранить", "Common.Views.Header.tipUndo": "Отменить", + "Common.Views.Header.tipUndock": "Открепить в отдельном окне", "Common.Views.Header.tipViewSettings": "Параметры представления", "Common.Views.Header.tipViewUsers": "Просмотр пользователей и управление правами доступа к документу", "Common.Views.Header.txtAccessRights": "Изменить права доступа", @@ -283,6 +283,7 @@ "Common.Views.ReviewPopover.textClose": "Закрыть", "Common.Views.ReviewPopover.textEdit": "OK", "Common.Views.ReviewPopover.textFollowMove": "Перейти на прежнее место", + "Common.Views.ReviewPopover.textMention": "+упоминание предоставит доступ к документу и отправит оповещение по почте", "Common.Views.ReviewPopover.textOpenAgain": "Открыть снова", "Common.Views.ReviewPopover.textReply": "Ответить", "Common.Views.ReviewPopover.textResolve": "Решить", @@ -325,6 +326,7 @@ "DE.Controllers.LeftMenu.textNoTextFound": "Искомые данные не найдены. Пожалуйста, измените параметры поиска.", "DE.Controllers.LeftMenu.textReplaceSkipped": "Замена выполнена. Пропущено вхождений - {0}.", "DE.Controllers.LeftMenu.textReplaceSuccess": "Поиск выполнен. Заменено вхождений: {0}", + "DE.Controllers.LeftMenu.txtCompatible": "Документ будет сохранен в новый формат. Это позволит использовать все функции редактора, но может повлиять на структуру документа.
      Используйте опцию 'Совместимость' в дополнительных параметрах, если хотите сделать файлы совместимыми с более старыми версиями MS Word.", "DE.Controllers.LeftMenu.txtUntitled": "Без имени", "DE.Controllers.LeftMenu.warnDownloadAs": "Если Вы продолжите сохранение в этот формат, весь функционал, кроме текста, будет потерян.
      Вы действительно хотите продолжить?", "DE.Controllers.LeftMenu.warnDownloadAsRTF": "Если вы продолжите сохранение в этот формат, часть форматирования может быть потеряна.
      Вы действительно хотите продолжить?", @@ -333,7 +335,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Превышено время ожидания конвертации.", "DE.Controllers.Main.criticalErrorExtText": "Нажмите \"OK\", чтобы вернуться к списку документов.", "DE.Controllers.Main.criticalErrorTitle": "Ошибка", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Загрузка не удалась.", "DE.Controllers.Main.downloadMergeText": "Загрузка...", "DE.Controllers.Main.downloadMergeTitle": "Загрузка", @@ -342,7 +343,7 @@ "DE.Controllers.Main.errorAccessDeny": "Вы пытаетесь выполнить действие, на которое у вас нет прав.
      Пожалуйста, обратитесь к администратору Сервера документов.", "DE.Controllers.Main.errorBadImageUrl": "Неправильный URL-адрес изображения", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Потеряно соединение с сервером. В данный момент нельзя отредактировать документ.", - "DE.Controllers.Main.errorConnectToServer": "Не удается сохранить документ. Проверьте параметры подключения или обратитесь к вашему администратору.
      Когда вы нажмете на кнопку 'OK', вам будет предложено скачать документ.

      Дополнительную информацию о подключении Сервера документов можно найти здесь", + "DE.Controllers.Main.errorConnectToServer": "Не удается сохранить документ. Проверьте параметры подключения или обратитесь к вашему администратору.
      Когда вы нажмете на кнопку 'OK', вам будет предложено скачать документ.

      Дополнительную информацию о подключении Сервера документов можно найти здесь", "DE.Controllers.Main.errorDatabaseConnection": "Внешняя ошибка.
      Ошибка подключения к базе данных. Если ошибка повторяется, пожалуйста, обратитесь в службу поддержки.", "DE.Controllers.Main.errorDataEncrypted": "Получены зашифрованные изменения, их нельзя расшифровать.", "DE.Controllers.Main.errorDataRange": "Некорректный диапазон данных.", @@ -409,7 +410,7 @@ "DE.Controllers.Main.textContactUs": "Связаться с отделом продаж", "DE.Controllers.Main.textCustomLoader": "Обратите внимание, что по условиям лицензии у вас нет прав изменять экран, отображаемый при загрузке.
      Пожалуйста, обратитесь в наш отдел продаж, чтобы сделать запрос.", "DE.Controllers.Main.textLoadingDocument": "Загрузка документа", - "DE.Controllers.Main.textNoLicenseTitle": "Ограничение по числу подключений ONLYOFFICE", + "DE.Controllers.Main.textNoLicenseTitle": "Ограничение по числу подключений %1", "DE.Controllers.Main.textPaidFeature": "Платная функция", "DE.Controllers.Main.textShape": "Фигура", "DE.Controllers.Main.textStrict": "Строгий режим", @@ -661,8 +662,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Превышено допустимое число одновременных подключений к серверу документов, и документ откроется только на просмотр.
      Обратитесь к администратору за дополнительной информацией.", "DE.Controllers.Main.warnLicenseExp": "Истек срок действия лицензии.
      Обновите лицензию, а затем обновите страницу.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Превышено допустимое число одновременно работающих пользователей, и документ откроется только на просмотр.
      Обратитесь к администратору за дополнительной информацией.", - "DE.Controllers.Main.warnNoLicense": "Эта версия редакторов ONLYOFFICE имеет некоторые ограничения по количеству одновременных подключений к серверу документов.
      Если требуется больше, рассмотрите вопрос о покупке коммерческой лицензии.", - "DE.Controllers.Main.warnNoLicenseUsers": "Эта версия редакторов ONLYOFFICE имеет некоторые ограничения по числу одновременно работающих пользователей.
      Если требуется больше, рассмотрите вопрос о покупке коммерческой лицензии.", + "DE.Controllers.Main.warnNoLicense": "Эта версия редакторов %1 имеет некоторые ограничения по количеству одновременных подключений к серверу документов.
      Если требуется больше, рассмотрите вопрос о покупке коммерческой лицензии.", + "DE.Controllers.Main.warnNoLicenseUsers": "Эта версия редакторов %1 имеет некоторые ограничения по числу одновременно работающих пользователей.
      Если требуется больше, рассмотрите вопрос о покупке коммерческой лицензии.", "DE.Controllers.Main.warnProcessRightsChange": "Вам было отказано в праве на редактирование этого файла.", "DE.Controllers.Navigation.txtBeginning": "Начало документа", "DE.Controllers.Navigation.txtGotoBeginning": "Перейти в начало документа", @@ -1188,6 +1189,7 @@ "DE.Views.DocumentHolder.textUpdateTOC": "Обновить оглавление", "DE.Views.DocumentHolder.textWrap": "Стиль обтекания", "DE.Views.DocumentHolder.tipIsLocked": "Этот элемент редактируется другим пользователем.", + "DE.Views.DocumentHolder.toDictionaryText": "Добавить в словарь", "DE.Views.DocumentHolder.txtAddBottom": "Добавить нижнюю границу", "DE.Views.DocumentHolder.txtAddFractionBar": "Добавить дробную черту", "DE.Views.DocumentHolder.txtAddHor": "Добавить горизонтальную линию", @@ -1250,6 +1252,7 @@ "DE.Views.DocumentHolder.txtOverwriteCells": "Заменить содержимое ячеек", "DE.Views.DocumentHolder.txtPasteSourceFormat": "Сохранить исходное форматирование", "DE.Views.DocumentHolder.txtPressLink": "Нажмите CTRL и щелкните по ссылке", + "DE.Views.DocumentHolder.txtPrintSelection": "Напечатать выделенное", "DE.Views.DocumentHolder.txtRemFractionBar": "Удалить дробную черту", "DE.Views.DocumentHolder.txtRemLimit": "Удалить предел", "DE.Views.DocumentHolder.txtRemoveAccentChar": "Удалить диакритический знак", @@ -1343,19 +1346,27 @@ "DE.Views.FileMenuPanels.CreateNew.newDescriptionText": "Создайте новый пустой текстовый документ, к которому Вы сможете применить стили и отформатировать при редактировании после того, как он создан. Или выберите один из шаблонов, чтобы создать документ определенного типа или предназначения, где уже предварительно применены некоторые стили.", "DE.Views.FileMenuPanels.CreateNew.newDocumentText": "Новый текстовый документ", "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Шаблоны отсутствуют", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddAuthor": "Добавить автора", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddText": "Добавить текст", "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "Приложение", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Автор", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Изменить права доступа", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Дата создания", + "DE.Views.FileMenuPanels.DocumentInfo.txtComment": "Комментарий", + "DE.Views.FileMenuPanels.DocumentInfo.txtCreated": "Создан", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Загрузка...", + "DE.Views.FileMenuPanels.DocumentInfo.txtModifyBy": "Автор последнего изменения", + "DE.Views.FileMenuPanels.DocumentInfo.txtModifyDate": "Последнее изменение", + "DE.Views.FileMenuPanels.DocumentInfo.txtOwner": "Владелец", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Страницы", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Абзацы", "DE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Размещение", "DE.Views.FileMenuPanels.DocumentInfo.txtRights": "Люди, имеющие права", "DE.Views.FileMenuPanels.DocumentInfo.txtSpaces": "Символы с пробелами", "DE.Views.FileMenuPanels.DocumentInfo.txtStatistics": "Статистика", + "DE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Тема", "DE.Views.FileMenuPanels.DocumentInfo.txtSymbols": "Символы", - "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Название документа", + "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Название", + "DE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Загружен", "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Слова", "DE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Изменить права доступа", "DE.Views.FileMenuPanels.DocumentRights.txtRights": "Люди, имеющие права", @@ -1395,9 +1406,11 @@ "DE.Views.FileMenuPanels.Settings.textAlignGuides": "Направляющие выравнивания", "DE.Views.FileMenuPanels.Settings.textAutoRecover": "Автовосстановление", "DE.Views.FileMenuPanels.Settings.textAutoSave": "Автосохранение", + "DE.Views.FileMenuPanels.Settings.textCompatible": "Совместимость", "DE.Views.FileMenuPanels.Settings.textDisabled": "Отключено", - "DE.Views.FileMenuPanels.Settings.textForceSave": "Сохранить на сервере", + "DE.Views.FileMenuPanels.Settings.textForceSave": "Сохранять на сервере", "DE.Views.FileMenuPanels.Settings.textMinute": "Каждую минуту", + "DE.Views.FileMenuPanels.Settings.textOldVersions": "Сделать файлы совместимыми с более старыми версиями MS Word при сохранении как DOCX", "DE.Views.FileMenuPanels.Settings.txtAll": "Все", "DE.Views.FileMenuPanels.Settings.txtCm": "Сантиметр", "DE.Views.FileMenuPanels.Settings.txtFitPage": "По размеру страницы", @@ -1695,34 +1708,53 @@ "DE.Views.ParagraphSettingsAdvanced.strBorders": "Границы и заливка", "DE.Views.ParagraphSettingsAdvanced.strBreakBefore": "С новой страницы", "DE.Views.ParagraphSettingsAdvanced.strDoubleStrike": "Двойное зачёркивание", + "DE.Views.ParagraphSettingsAdvanced.strIndent": "Отступы", "DE.Views.ParagraphSettingsAdvanced.strIndentsFirstLine": "Первая строка", "DE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "Слева", + "DE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Междустрочный интервал", + "DE.Views.ParagraphSettingsAdvanced.strIndentsOutlinelevel": "Уровень структуры", "DE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "Справа", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "После", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Перед", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Первая строка", "DE.Views.ParagraphSettingsAdvanced.strKeepLines": "Не разрывать абзац", "DE.Views.ParagraphSettingsAdvanced.strKeepNext": "Не отрывать от следующего", "DE.Views.ParagraphSettingsAdvanced.strMargins": "Внутренние поля", "DE.Views.ParagraphSettingsAdvanced.strOrphan": "Запрет висячих строк", "DE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Шрифт", - "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отступы и положение", + "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отступы и интервалы", + "DE.Views.ParagraphSettingsAdvanced.strParagraphLine": "Положение на странице", "DE.Views.ParagraphSettingsAdvanced.strParagraphPosition": "Положение", "DE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Малые прописные", + "DE.Views.ParagraphSettingsAdvanced.strSomeParagraphSpace": "Не добавлять интервал между абзацами одного стиля", + "DE.Views.ParagraphSettingsAdvanced.strSpacing": "Интервал между абзацами", "DE.Views.ParagraphSettingsAdvanced.strStrike": "Зачёркивание", "DE.Views.ParagraphSettingsAdvanced.strSubscript": "Подстрочные", "DE.Views.ParagraphSettingsAdvanced.strSuperscript": "Надстрочные", "DE.Views.ParagraphSettingsAdvanced.strTabs": "Табуляция", "DE.Views.ParagraphSettingsAdvanced.textAlign": "Выравнивание", + "DE.Views.ParagraphSettingsAdvanced.textAtLeast": "Минимум", + "DE.Views.ParagraphSettingsAdvanced.textAuto": "Множитель", "DE.Views.ParagraphSettingsAdvanced.textBackColor": "Цвет фона", + "DE.Views.ParagraphSettingsAdvanced.textBodyText": "Основной текст", "DE.Views.ParagraphSettingsAdvanced.textBorderColor": "Цвет границ", "DE.Views.ParagraphSettingsAdvanced.textBorderDesc": "Щелкайте по схеме или используйте кнопки, чтобы выбрать границы и применить к ним выбранный стиль", "DE.Views.ParagraphSettingsAdvanced.textBorderWidth": "Ширина границ", "DE.Views.ParagraphSettingsAdvanced.textBottom": "Снизу", + "DE.Views.ParagraphSettingsAdvanced.textCentered": "По центру", "DE.Views.ParagraphSettingsAdvanced.textCharacterSpacing": "Межзнаковый интервал", "DE.Views.ParagraphSettingsAdvanced.textDefault": "По умолчанию", "DE.Views.ParagraphSettingsAdvanced.textEffects": "Эффекты", + "DE.Views.ParagraphSettingsAdvanced.textExact": "Точно", + "DE.Views.ParagraphSettingsAdvanced.textFirstLine": "Отступ", + "DE.Views.ParagraphSettingsAdvanced.textHanging": "Выступ", + "DE.Views.ParagraphSettingsAdvanced.textJustified": "По ширине", "DE.Views.ParagraphSettingsAdvanced.textLeader": "Заполнитель", "DE.Views.ParagraphSettingsAdvanced.textLeft": "Слева", + "DE.Views.ParagraphSettingsAdvanced.textLevel": "Уровень", "DE.Views.ParagraphSettingsAdvanced.textNewColor": "Пользовательский цвет", "DE.Views.ParagraphSettingsAdvanced.textNone": "Нет", + "DE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(нет)", "DE.Views.ParagraphSettingsAdvanced.textPosition": "Положение", "DE.Views.ParagraphSettingsAdvanced.textRemove": "Удалить", "DE.Views.ParagraphSettingsAdvanced.textRemoveAll": "Удалить все", @@ -1743,6 +1775,7 @@ "DE.Views.ParagraphSettingsAdvanced.tipOuter": "Задать только внешнюю границу", "DE.Views.ParagraphSettingsAdvanced.tipRight": "Задать только правую границу", "DE.Views.ParagraphSettingsAdvanced.tipTop": "Задать только верхнюю границу", + "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Авто", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "Без границ", "DE.Views.RightMenu.txtChartSettings": "Параметры диаграммы", "DE.Views.RightMenu.txtHeaderFooterSettings": "Параметры верхнего и нижнего колонтитулов", @@ -1759,6 +1792,7 @@ "DE.Views.ShapeSettings.strFill": "Заливка", "DE.Views.ShapeSettings.strForeground": "Цвет переднего плана", "DE.Views.ShapeSettings.strPattern": "Узор", + "DE.Views.ShapeSettings.strShadow": "Отображать тень", "DE.Views.ShapeSettings.strSize": "Толщина", "DE.Views.ShapeSettings.strStroke": "Обводка", "DE.Views.ShapeSettings.strTransparency": "Непрозрачность", @@ -1839,6 +1873,7 @@ "DE.Views.StyleTitleDialog.textTitle": "Название", "DE.Views.StyleTitleDialog.txtEmpty": "Это поле необходимо заполнить", "DE.Views.StyleTitleDialog.txtNotEmpty": "Поле не может быть пустым", + "DE.Views.StyleTitleDialog.txtSameAs": "Такой же, как создаваемый стиль", "DE.Views.TableFormulaDialog.cancelButtonText": "Отмена", "DE.Views.TableFormulaDialog.okButtonText": "ОК", "DE.Views.TableFormulaDialog.textBookmark": "Вставить закладку", @@ -2017,7 +2052,7 @@ "DE.Views.Toolbar.capBtnInsChart": "Диаграмма", "DE.Views.Toolbar.capBtnInsControls": "Элементы управления содержимым", "DE.Views.Toolbar.capBtnInsDropcap": "Буквица", - "DE.Views.Toolbar.capBtnInsEquation": "Формула", + "DE.Views.Toolbar.capBtnInsEquation": "Уравнение", "DE.Views.Toolbar.capBtnInsHeader": "Колонтитулы", "DE.Views.Toolbar.capBtnInsImage": "Изображение", "DE.Views.Toolbar.capBtnInsPagebreak": "Разрывы", @@ -2028,6 +2063,7 @@ "DE.Views.Toolbar.capBtnMargins": "Поля", "DE.Views.Toolbar.capBtnPageOrient": "Ориентация", "DE.Views.Toolbar.capBtnPageSize": "Размер", + "DE.Views.Toolbar.capBtnWatermark": "Подложка", "DE.Views.Toolbar.capImgAlign": "Выравнивание", "DE.Views.Toolbar.capImgBackward": "Перенести назад", "DE.Views.Toolbar.capImgForward": "Перенести вперед", @@ -2059,6 +2095,7 @@ "DE.Views.Toolbar.textColumnsThree": "Три", "DE.Views.Toolbar.textColumnsTwo": "Две", "DE.Views.Toolbar.textContPage": "На текущей странице", + "DE.Views.Toolbar.textEditWatermark": "Настраиваемая подложка", "DE.Views.Toolbar.textEvenPage": "С четной страницы", "DE.Views.Toolbar.textInMargin": "На поле", "DE.Views.Toolbar.textInsColumnBreak": "Вставить разрыв колонки", @@ -2089,6 +2126,7 @@ "DE.Views.Toolbar.textPoint": "Точечная", "DE.Views.Toolbar.textPortrait": "Книжная", "DE.Views.Toolbar.textRemoveControl": "Удалить элемент управления содержимым", + "DE.Views.Toolbar.textRemWatermark": "Удалить подложку", "DE.Views.Toolbar.textRichControl": "Вставить элемент управления \"Форматированный текст\"", "DE.Views.Toolbar.textRight": "Правое: ", "DE.Views.Toolbar.textStock": "Биржевая", @@ -2142,7 +2180,7 @@ "DE.Views.Toolbar.tipIncFont": "Увеличить размер шрифта", "DE.Views.Toolbar.tipIncPrLeft": "Увеличить отступ", "DE.Views.Toolbar.tipInsertChart": "Вставить диаграмму", - "DE.Views.Toolbar.tipInsertEquation": "Вставить формулу", + "DE.Views.Toolbar.tipInsertEquation": "Вставить уравнение", "DE.Views.Toolbar.tipInsertImage": "Вставить изображение", "DE.Views.Toolbar.tipInsertNum": "Вставить номер страницы", "DE.Views.Toolbar.tipInsertShape": "Вставить автофигуру", @@ -2170,6 +2208,7 @@ "DE.Views.Toolbar.tipShowHiddenChars": "Непечатаемые символы", "DE.Views.Toolbar.tipSynchronize": "Документ изменен другим пользователем. Нажмите, чтобы сохранить свои изменения и загрузить обновления.", "DE.Views.Toolbar.tipUndo": "Отменить", + "DE.Views.Toolbar.tipWatermark": "Изменить подложку", "DE.Views.Toolbar.txtDistribHor": "Распределить по горизонтали", "DE.Views.Toolbar.txtDistribVert": "Распределить по вертикали", "DE.Views.Toolbar.txtMarginAlign": "Выровнять относительно поля", @@ -2195,5 +2234,30 @@ "DE.Views.Toolbar.txtScheme6": "Открытая", "DE.Views.Toolbar.txtScheme7": "Справедливость", "DE.Views.Toolbar.txtScheme8": "Поток", - "DE.Views.Toolbar.txtScheme9": "Литейная" + "DE.Views.Toolbar.txtScheme9": "Литейная", + "DE.Views.WatermarkSettingsDialog.cancelButtonText": "Отмена", + "DE.Views.WatermarkSettingsDialog.okButtonText": "OK", + "DE.Views.WatermarkSettingsDialog.textAuto": "Авто", + "DE.Views.WatermarkSettingsDialog.textBold": "Жирный", + "DE.Views.WatermarkSettingsDialog.textColor": "Цвет текста", + "DE.Views.WatermarkSettingsDialog.textDiagonal": "По диагонали", + "DE.Views.WatermarkSettingsDialog.textFont": "Шрифт", + "DE.Views.WatermarkSettingsDialog.textFromFile": "Из файла", + "DE.Views.WatermarkSettingsDialog.textFromUrl": "По URL", + "DE.Views.WatermarkSettingsDialog.textHor": "По горизонтали", + "DE.Views.WatermarkSettingsDialog.textImageW": "Графическая подложка", + "DE.Views.WatermarkSettingsDialog.textItalic": "Курсив", + "DE.Views.WatermarkSettingsDialog.textLanguage": "Язык", + "DE.Views.WatermarkSettingsDialog.textLayout": "Расположение", + "DE.Views.WatermarkSettingsDialog.textNewColor": "Пользовательский цвет", + "DE.Views.WatermarkSettingsDialog.textNone": "Нет", + "DE.Views.WatermarkSettingsDialog.textScale": "Масштаб", + "DE.Views.WatermarkSettingsDialog.textStrikeout": "Зачеркнутый", + "DE.Views.WatermarkSettingsDialog.textText": "Текст", + "DE.Views.WatermarkSettingsDialog.textTextW": "Текстовая подложка", + "DE.Views.WatermarkSettingsDialog.textTitle": "Параметры подложки", + "DE.Views.WatermarkSettingsDialog.textTransparency": "Полупрозрачный", + "DE.Views.WatermarkSettingsDialog.textUnderline": "Подчёркнутый", + "DE.Views.WatermarkSettingsDialog.tipFontName": "Шрифт", + "DE.Views.WatermarkSettingsDialog.tipFontSize": "Размер шрифта" } \ No newline at end of file diff --git a/apps/documenteditor/main/locale/sk.json b/apps/documenteditor/main/locale/sk.json index 9146b753f..27fc20fe5 100644 --- a/apps/documenteditor/main/locale/sk.json +++ b/apps/documenteditor/main/locale/sk.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Upozornenie", "Common.Controllers.Chat.textEnterMessage": "Zadať svoju správu tu", - "Common.Controllers.Chat.textUserLimit": "Používate ONLYOFFICE vydanie zadarmo.
      Iba dvaja používatelia dokážu spolueditovať dokument súčasne.
      Chcete viac? Zvážte kúpu ONLYOFFICE Podnikové vydanie.
      Read more", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonymný", "Common.Controllers.ExternalDiagramEditor.textClose": "Zatvoriť", "Common.Controllers.ExternalDiagramEditor.warningText": "Objekt je blokovaný, pretože ho práve upravuje iný používateľ.", @@ -288,7 +287,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Prekročený čas konverzie.", "DE.Controllers.Main.criticalErrorExtText": "Stlačte \"OK\" pre návrat do zoznamu dokumentov.", "DE.Controllers.Main.criticalErrorTitle": "Chyba", - "DE.Controllers.Main.defaultTitleText": "Dokumentový editor ONLYOFFICE ", "DE.Controllers.Main.downloadErrorText": "Sťahovanie zlyhalo.", "DE.Controllers.Main.downloadMergeText": "Sťahovanie...", "DE.Controllers.Main.downloadMergeTitle": "Sťahovanie", @@ -297,7 +295,7 @@ "DE.Controllers.Main.errorAccessDeny": "Pokúšate sa vykonať akciu, na ktorú nemáte práva.
      Prosím, kontaktujte svojho správcu dokumentového servera. ", "DE.Controllers.Main.errorBadImageUrl": "Adresa URL obrázku je nesprávna", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Serverové pripojenie sa stratilo. Práve teraz nie je možné dokument upravovať.", - "DE.Controllers.Main.errorConnectToServer": "Dokument sa nepodarilo uložiť. Prosím, skontrolujte nastavenia pripojenia alebo kontaktujte správcu.
      Po kliknutí na tlačidlo 'OK' sa zobrazí výzva na prevzatie dokumentu.

      Viac informácií o pripojení dokumentového servera nájdete tu", + "DE.Controllers.Main.errorConnectToServer": "Dokument sa nepodarilo uložiť. Prosím, skontrolujte nastavenia pripojenia alebo kontaktujte správcu.
      Po kliknutí na tlačidlo 'OK' sa zobrazí výzva na prevzatie dokumentu.

      Viac informácií o pripojení dokumentového servera nájdete tu", "DE.Controllers.Main.errorDatabaseConnection": "Externá chyba.
      Chyba spojenia databázy. Prosím, kontaktujte podporu ak chyba pretrváva. ", "DE.Controllers.Main.errorDataRange": "Nesprávny rozsah údajov.", "DE.Controllers.Main.errorDefaultMessage": "Kód chyby: %1", @@ -419,7 +417,7 @@ "DE.Controllers.Main.warnBrowserIE9": "Aplikácia má na IE9 slabé schopnosti. Použite IE10 alebo vyššie.", "DE.Controllers.Main.warnBrowserZoom": "Súčasné nastavenie priblíženia nie je plne podporované prehliadačom. Obnovte štandardné priblíženie stlačením klávesov Ctrl+0.", "DE.Controllers.Main.warnLicenseExp": "Vaša licencia vypršala.
      Prosím, aktualizujte si svoju licenciu a obnovte stránku.", - "DE.Controllers.Main.warnNoLicense": "Táto verzia aplikácie ONLYOFFICE Editors má určité obmedzenia pre súbežné pripojenia k dokumentovému serveru.
      Ak potrebujete viac, zvážte aktualizáciu aktuálnej licencie alebo zakúpenie komerčnej.", + "DE.Controllers.Main.warnNoLicense": "Táto verzia aplikácie %1 editors má určité obmedzenia pre súbežné pripojenia k dokumentovému serveru.
      Ak potrebujete viac, zvážte aktualizáciu aktuálnej licencie alebo zakúpenie komerčnej.", "DE.Controllers.Main.warnProcessRightsChange": "Bolo vám zamietnuté právo upravovať súbor.", "DE.Controllers.Statusbar.textHasChanges": "Boli sledované nové zmeny", "DE.Controllers.Statusbar.textTrackChanges": "Dokument je otvorený so zapnutým režimom sledovania zmien.", @@ -1041,7 +1039,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Neexistujú žiadne šablóny", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Autor", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Zmeniť prístupové práva", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Dátum vytvorenia", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Nahrávanie...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Strany", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Odseky", diff --git a/apps/documenteditor/main/locale/sl.json b/apps/documenteditor/main/locale/sl.json index bcc45f5b9..2a214f389 100644 --- a/apps/documenteditor/main/locale/sl.json +++ b/apps/documenteditor/main/locale/sl.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Opozorilo", "Common.Controllers.Chat.textEnterMessage": "Svoje sporočilo vnesite tu", - "Common.Controllers.Chat.textUserLimit": "You are using ONLYOFFICE Free Edition.
      Only two users can co-edit the document simultaneously.
      Want more? Consider buying ONLYOFFICE Enterprise Edition.
      Read more", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonimno", "Common.Controllers.ExternalDiagramEditor.textClose": "Zapri", "Common.Controllers.ExternalDiagramEditor.warningText": "Objekt je onemogočen, saj ga ureja drug uporabnik.", @@ -174,7 +173,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Pretvorbena prekinitev presežena.", "DE.Controllers.Main.criticalErrorExtText": "Pritisnite \"OK\" za vrnitev na seznam dokumentov.", "DE.Controllers.Main.criticalErrorTitle": "Napaka", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE urejevalec dokumentov", "DE.Controllers.Main.downloadErrorText": "Prenos ni uspel.", "DE.Controllers.Main.downloadMergeText": "Downloading...", "DE.Controllers.Main.downloadMergeTitle": "Downloading", @@ -851,7 +849,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Ni predlog", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Avtor", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Spremeni pravice dostopa", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Datum nastanka", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Nalaganje...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Strani", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Odstavki", diff --git a/apps/documenteditor/main/locale/tr.json b/apps/documenteditor/main/locale/tr.json index a2906a75b..9c2b4754d 100644 --- a/apps/documenteditor/main/locale/tr.json +++ b/apps/documenteditor/main/locale/tr.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Dikkat", "Common.Controllers.Chat.textEnterMessage": "Mesajınızı buraya giriniz", - "Common.Controllers.Chat.textUserLimit": "You are using ONLYOFFICE Free Edition.
      Only two users can co-edit the document simultaneously.
      Want more? Consider buying ONLYOFFICE Enterprise Edition.
      Read more", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Anonim", "Common.Controllers.ExternalDiagramEditor.textClose": "Kapat", "Common.Controllers.ExternalDiagramEditor.warningText": "Obje devre dışı bırakıldı, çünkü başka kullanıcı tarafından düzenleniyor.", @@ -145,10 +144,13 @@ "Common.Views.Header.textSaveChanged": "Modifiyeli", "Common.Views.Header.textSaveEnd": "Tüm değişiklikler kaydedildi", "Common.Views.Header.textSaveExpander": "Tüm değişiklikler kaydedildi", + "Common.Views.Header.textZoom": "Büyüt", "Common.Views.Header.tipAccessRights": "Belge erişim haklarını yönet", "Common.Views.Header.tipDownload": "Dosyayı indir", "Common.Views.Header.tipGoEdit": "Mevcut belgeyi düzenle", "Common.Views.Header.tipPrint": "Sayfayı yazdır", + "Common.Views.Header.tipSave": "Kaydet", + "Common.Views.Header.tipUndo": "Geri Al", "Common.Views.Header.tipViewUsers": "Kullanıcıları görüntüle ve belge erişim haklarını yönet", "Common.Views.Header.txtAccessRights": "Erişim haklarını değiştir", "Common.Views.Header.txtRename": "Yeniden adlandır", @@ -176,12 +178,16 @@ "Common.Views.LanguageDialog.btnOk": "Tamam", "Common.Views.LanguageDialog.labelSelect": "Belge dilini seçin", "Common.Views.OpenDialog.cancelButtonText": "Cancel", + "Common.Views.OpenDialog.closeButtonText": "Dosyayı Kapat", "Common.Views.OpenDialog.okButtonText": "OK", "Common.Views.OpenDialog.txtEncoding": "Encoding ", "Common.Views.OpenDialog.txtIncorrectPwd": "Şifre hatalı.", "Common.Views.OpenDialog.txtPassword": "Şifre", "Common.Views.OpenDialog.txtTitle": "Choose %1 options", "Common.Views.OpenDialog.txtTitleProtected": "Korumalı dosya", + "Common.Views.PasswordDialog.cancelButtonText": "İptal", + "Common.Views.PasswordDialog.okButtonText": "Tamam", + "Common.Views.PasswordDialog.txtPassword": "Parola", "Common.Views.PluginDlg.textLoading": "Yükleniyor", "Common.Views.Plugins.groupCaption": "Eklentiler", "Common.Views.Plugins.strPlugins": "Plugin", @@ -227,6 +233,21 @@ "Common.Views.ReviewChangesDialog.txtReject": "Reddet", "Common.Views.ReviewChangesDialog.txtRejectAll": "Tüm Değişiklikleri Reddet", "Common.Views.ReviewChangesDialog.txtRejectCurrent": "Mevcut Değişiklikleri Reddet", + "Common.Views.ReviewPopover.textAdd": "Ekle", + "Common.Views.ReviewPopover.textCancel": "İptal", + "Common.Views.ReviewPopover.textClose": "Kapat", + "Common.Views.ReviewPopover.textEdit": "Tamam", + "Common.Views.ReviewPopover.textReply": "Yanıtla", + "Common.Views.SignDialog.cancelButtonText": "İptal", + "Common.Views.SignDialog.okButtonText": "Tamam", + "Common.Views.SignDialog.textBold": "Kalın", + "Common.Views.SignDialog.textCertificate": "Sertifika", + "Common.Views.SignDialog.textChange": "Değiştir", + "Common.Views.SignDialog.textItalic": "İtalik", + "Common.Views.SignSettingsDialog.cancelButtonText": "İptal", + "Common.Views.SignSettingsDialog.okButtonText": "Tamam", + "Common.Views.SignSettingsDialog.textInfoEmail": "E-posta", + "Common.Views.SignSettingsDialog.textInfoName": "İsim", "DE.Controllers.LeftMenu.leavePageText": "All unsaved changes in this document will be lost.
      Click \"Cancel\" then \"Save\" to save them. Click \"OK\" to discard all the unsaved changes.", "DE.Controllers.LeftMenu.newDocumentTitle": "İsimlendirilmemiş döküman", "DE.Controllers.LeftMenu.notcriticalErrorTitle": "Warning", @@ -241,7 +262,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Değişim süresi geçti.", "DE.Controllers.Main.criticalErrorExtText": "Döküman listesine dönmek için \"TAMAM\"'a tıklayın", "DE.Controllers.Main.criticalErrorTitle": "Hata", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Döküman Editörü", "DE.Controllers.Main.downloadErrorText": "Yükleme başarısız oldu.", "DE.Controllers.Main.downloadMergeText": "Downloading...", "DE.Controllers.Main.downloadMergeTitle": "Downloading", @@ -250,7 +270,7 @@ "DE.Controllers.Main.errorAccessDeny": "Hakiniz olmayan bir eylem gerçekleştirmeye çalışıyorsunuz.
      Lütfen Document Server yöneticinize başvurun.", "DE.Controllers.Main.errorBadImageUrl": "Resim URL'si yanlış", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Sunucu bağlantısı kesildi. Döküman şu an düzenlenemez.", - "DE.Controllers.Main.errorConnectToServer": "The document could not be saved. Please check connection settings or contact your administrator.
      When you click the 'OK' button, you will be prompted to download the document.

      Find more information about connecting Document Server here", + "DE.Controllers.Main.errorConnectToServer": "Belge kaydedilemedi. Lütfen internet bağlantınızı kontrol edin veya yöneticiniz ile iletişime geçin.
      'TAMAM' tuşuna tıkladığınızda belgeyi indirebileceksiniz.

      Belge Sunucusuna bağlanma konusunda daha fazla bilgi için buraya tıklayın", "DE.Controllers.Main.errorDatabaseConnection": "Harci hata.
      Veri tabanı bağlantı hatası. Hata devam ederse lütfen destek ile iletişime geçin.", "DE.Controllers.Main.errorDataRange": "Yanlış veri aralığı.", "DE.Controllers.Main.errorDefaultMessage": "Hata kodu: %1", @@ -306,6 +326,7 @@ "DE.Controllers.Main.textAnonymous": "Anonim", "DE.Controllers.Main.textBuyNow": "Websitesini ziyaret edin", "DE.Controllers.Main.textChangesSaved": "Tüm değişiklikler kaydedildi", + "DE.Controllers.Main.textClose": "Kapat", "DE.Controllers.Main.textCloseTip": "Ucu kapamak için tıklayın", "DE.Controllers.Main.textContactUs": "Satış departmanı ile iletişime geçin", "DE.Controllers.Main.textLoadingDocument": "Döküman yükleniyor", @@ -330,6 +351,21 @@ "DE.Controllers.Main.txtNeedSynchronize": "Güncellemeleriniz var", "DE.Controllers.Main.txtRectangles": "Dikdörtgenler", "DE.Controllers.Main.txtSeries": "Seriler", + "DE.Controllers.Main.txtShape_actionButtonHome": "Ev Tuşu", + "DE.Controllers.Main.txtShape_cloud": "Bulut", + "DE.Controllers.Main.txtShape_leftArrow": "Sol Ok", + "DE.Controllers.Main.txtShape_lineWithArrow": "Ok", + "DE.Controllers.Main.txtShape_noSmoking": "Simge \"Yok\"", + "DE.Controllers.Main.txtShape_star10": "10-Numara Yıldız", + "DE.Controllers.Main.txtShape_star12": "12-Numara Yıldız", + "DE.Controllers.Main.txtShape_star16": "16-Numara Yıldız", + "DE.Controllers.Main.txtShape_star24": "24-Numara Yıldız", + "DE.Controllers.Main.txtShape_star32": "32-Numara Yıldız", + "DE.Controllers.Main.txtShape_star4": "4-Numara Yıldız", + "DE.Controllers.Main.txtShape_star5": "5-Numara Yıldız", + "DE.Controllers.Main.txtShape_star6": "6-Numara Yıldız", + "DE.Controllers.Main.txtShape_star7": "7-Numara Yıldız", + "DE.Controllers.Main.txtShape_star8": "8-Numara Yıldız", "DE.Controllers.Main.txtStarsRibbons": "Yıldızlar & Kurdeleler", "DE.Controllers.Main.txtStyle_Heading_1": "Başlık 1", "DE.Controllers.Main.txtStyle_Heading_2": "Başlık 2", @@ -359,7 +395,7 @@ "DE.Controllers.Main.warnBrowserIE9": "Uygulama IE9'da düşük yeteneklere sahip. IE10 yada daha yükseğini kullanınız", "DE.Controllers.Main.warnBrowserZoom": "Tarayıcınızın mevcut zum ayarı tam olarak desteklenmiyor. Ctrl+0'a basarak varsayılan zumu sıfırlayınız.", "DE.Controllers.Main.warnLicenseExp": "Lisansınızın süresi doldu.
      Lütfen lisansınızı güncelleyin ve sayfayı yenileyin.", - "DE.Controllers.Main.warnNoLicense": "ONLYOFFICE'ın açık kaynaklı bir sürümünü kullanıyorsunuz. Sürüm, doküman sunucusuna eş zamanlı bağlantılar için sınırlamalar getiriyor (bir seferde 20 bağlantı).
      Daha fazla bilgiye ihtiyacınız varsa, ticari bir lisans satın almayı düşünün lütfen.", + "DE.Controllers.Main.warnNoLicense": "%1'ın açık kaynaklı bir sürümünü kullanıyorsunuz. Sürüm, doküman sunucusuna eş zamanlı bağlantılar için sınırlamalar getiriyor (bir seferde 20 bağlantı).
      Daha fazla bilgiye ihtiyacınız varsa, ticari bir lisans satın almayı düşünün lütfen.", "DE.Controllers.Main.warnProcessRightsChange": "Dosyayı düzenleme hakkınız reddedildi", "DE.Controllers.Statusbar.textHasChanges": "New changes have been tracked", "DE.Controllers.Statusbar.textTrackChanges": "The document is opened with the Track Changes mode enabled", @@ -700,6 +736,10 @@ "DE.Controllers.Toolbar.txtSymbol_vdots": "Vertical Ellipsis", "DE.Controllers.Toolbar.txtSymbol_xsi": "Xi", "DE.Controllers.Toolbar.txtSymbol_zeta": "Zeta", + "DE.Views.BookmarksDialog.textAdd": "Ekle", + "DE.Views.BookmarksDialog.textClose": "Kapat", + "DE.Views.BookmarksDialog.textDelete": "Sil", + "DE.Views.BookmarksDialog.textName": "İsim", "DE.Views.ChartSettings.textAdvanced": "Gelişmiş ayarları göster", "DE.Views.ChartSettings.textArea": "Bölge Grafiği", "DE.Views.ChartSettings.textBar": "Çubuk grafik", @@ -726,6 +766,11 @@ "DE.Views.ChartSettings.txtTight": "Sıkı", "DE.Views.ChartSettings.txtTitle": "Grafik", "DE.Views.ChartSettings.txtTopAndBottom": "Üst ve alt", + "DE.Views.ControlSettingsDialog.cancelButtonText": "İptal", + "DE.Views.ControlSettingsDialog.okButtonText": "Tamam", + "DE.Views.ControlSettingsDialog.textColor": "Renk", + "DE.Views.ControlSettingsDialog.textName": "Başlık", + "DE.Views.ControlSettingsDialog.textTag": "Etiket", "DE.Views.CustomColumnsDialog.cancelButtonText": "İptal", "DE.Views.CustomColumnsDialog.okButtonText": "Tamam", "DE.Views.CustomColumnsDialog.textColumns": "Sütun sayısı", @@ -806,6 +851,9 @@ "DE.Views.DocumentHolder.textNextPage": "Sonraki Sayfa", "DE.Views.DocumentHolder.textPaste": "Yapıştır", "DE.Views.DocumentHolder.textPrevPage": "Önceki Sayfa", + "DE.Views.DocumentHolder.textRotate": "Döndür", + "DE.Views.DocumentHolder.textRotate270": "Döndür 90° Saatyönütersi", + "DE.Views.DocumentHolder.textRotate90": "Döndür 90° Saatyönü", "DE.Views.DocumentHolder.textShapeAlignBottom": "Alta Hizala", "DE.Views.DocumentHolder.textShapeAlignCenter": "Ortaya Hizala", "DE.Views.DocumentHolder.textShapeAlignLeft": "Sola Hizala", @@ -950,6 +998,7 @@ "DE.Views.FileMenu.btnHistoryCaption": "Version History", "DE.Views.FileMenu.btnInfoCaption": "Döküman Bilgisi...", "DE.Views.FileMenu.btnPrintCaption": "Yazdır", + "DE.Views.FileMenu.btnProtectCaption": "Koru", "DE.Views.FileMenu.btnRecentFilesCaption": "En sonunucuyu aç...", "DE.Views.FileMenu.btnRenameCaption": "Yeniden adlandır...", "DE.Views.FileMenu.btnReturnCaption": "Dökümana Geri Dön", @@ -964,10 +1013,11 @@ "DE.Views.FileMenuPanels.CreateNew.newDescriptionText": "Oluşturulduktan sonra düzenleme sırasında stil ve format verebileceğiniz yeni boş metin dosyası oluşturun. Yada belli tipte yada amaçta dökümana başlamak için şablonlardan birini seçin, bu şablonlar önceden düzenlenmiştir.", "DE.Views.FileMenuPanels.CreateNew.newDocumentText": "Yeni Metin Dökümanı", "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Şablon yok", + "DE.Views.FileMenuPanels.DocumentInfo.txtAddAuthor": "Yazar Ekle", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Yayıncı", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Erişim haklarını değiştir", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Oluşturulma tarihi", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Yükleniyor...", + "DE.Views.FileMenuPanels.DocumentInfo.txtOwner": "Sahip", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Sayfalar", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Paragraflar", "DE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Lokasyon", @@ -1051,8 +1101,11 @@ "DE.Views.ImageSettings.textFromFile": "Dosyadan", "DE.Views.ImageSettings.textFromUrl": "URL'den", "DE.Views.ImageSettings.textHeight": "Yükseklik", + "DE.Views.ImageSettings.textHint270": "Döndür 90° Saatyönütersi", + "DE.Views.ImageSettings.textHint90": "Döndür 90° Saatyönü", "DE.Views.ImageSettings.textInsert": "Resimi Değiştir", "DE.Views.ImageSettings.textOriginalSize": "Varsayılan Boyut", + "DE.Views.ImageSettings.textRotate90": "Döndür 90°", "DE.Views.ImageSettings.textSize": "Boyut", "DE.Views.ImageSettings.textWidth": "Genişlik", "DE.Views.ImageSettings.textWrap": "Kaydırma Stili", @@ -1072,6 +1125,7 @@ "DE.Views.ImageSettingsAdvanced.textAltDescription": "Açıklama", "DE.Views.ImageSettingsAdvanced.textAltTip": "Görsel obje bilgilerinin alternatif metin tabanlı sunumu görsel veya bilinçsel açıdan problem yaşan kişilere okunarak resimdeki, şekildeki, grafikteki veya tablodaki bilgileri daha kolay anlamalarını sağlamayı amaçlar.", "DE.Views.ImageSettingsAdvanced.textAltTitle": "Başlık", + "DE.Views.ImageSettingsAdvanced.textAngle": "Açı", "DE.Views.ImageSettingsAdvanced.textArrows": "Oklar", "DE.Views.ImageSettingsAdvanced.textAspectRatio": "En-boy oranını kilitle", "DE.Views.ImageSettingsAdvanced.textBeginSize": "Başlama Boyutu", @@ -1188,6 +1242,7 @@ "DE.Views.MailMergeSettings.txtPrev": "To previous record", "DE.Views.MailMergeSettings.txtUntitled": "Untitled", "DE.Views.MailMergeSettings.warnProcessMailMerge": "Starting merge failed", + "DE.Views.Navigation.txtCollapse": "Hepsini daralt", "DE.Views.NoteSettingsDialog.textApply": "Uygula", "DE.Views.NoteSettingsDialog.textApplyTo": "Değişiklikleri uygula", "DE.Views.NoteSettingsDialog.textCancel": "İptal", @@ -1207,6 +1262,8 @@ "DE.Views.NoteSettingsDialog.textStart": "Başlatma zamanı", "DE.Views.NoteSettingsDialog.textTextBottom": "Aşağıdaki metin", "DE.Views.NoteSettingsDialog.textTitle": "Not ayarları", + "DE.Views.NumberingValueDialog.cancelButtonText": "İptal", + "DE.Views.NumberingValueDialog.okButtonText": "Tamam", "DE.Views.PageMarginsDialog.cancelButtonText": "Cancel", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Warning", "DE.Views.PageMarginsDialog.okButtonText": "OK", @@ -1266,6 +1323,7 @@ "DE.Views.ParagraphSettingsAdvanced.textCharacterSpacing": "Karakter aralığı", "DE.Views.ParagraphSettingsAdvanced.textDefault": "Varsayılan Sekme", "DE.Views.ParagraphSettingsAdvanced.textEffects": "Efektler", + "DE.Views.ParagraphSettingsAdvanced.textLeader": "Lider", "DE.Views.ParagraphSettingsAdvanced.textLeft": "Sol", "DE.Views.ParagraphSettingsAdvanced.textNewColor": "Yeni Özel Renk Ekle", "DE.Views.ParagraphSettingsAdvanced.textPosition": "Pozisyon", @@ -1316,12 +1374,15 @@ "DE.Views.ShapeSettings.textFromUrl": "URL'den", "DE.Views.ShapeSettings.textGradient": "Gradyan", "DE.Views.ShapeSettings.textGradientFill": "Gradyan Dolgu", + "DE.Views.ShapeSettings.textHint270": "Döndür 90° Saatyönütersi", + "DE.Views.ShapeSettings.textHint90": "Döndür 90° Saatyönü", "DE.Views.ShapeSettings.textImageTexture": "Resim yada Doldurma Deseni", "DE.Views.ShapeSettings.textLinear": "Doğrusal", "DE.Views.ShapeSettings.textNewColor": "Yeni Özel Renk Ekle", "DE.Views.ShapeSettings.textNoFill": "Dolgu Yok", "DE.Views.ShapeSettings.textPatternFill": "Desen", "DE.Views.ShapeSettings.textRadial": "Radyal", + "DE.Views.ShapeSettings.textRotate90": "Döndür 90°", "DE.Views.ShapeSettings.textSelectTexture": "Seç", "DE.Views.ShapeSettings.textStretch": "Esnet", "DE.Views.ShapeSettings.textStyle": "Stil", @@ -1361,6 +1422,14 @@ "DE.Views.StyleTitleDialog.textTitle": "Title", "DE.Views.StyleTitleDialog.txtEmpty": "This field is required", "DE.Views.StyleTitleDialog.txtNotEmpty": "Field must not be empty", + "DE.Views.TableFormulaDialog.cancelButtonText": "İptal", + "DE.Views.TableFormulaDialog.okButtonText": "Tamam", + "DE.Views.TableOfContentsSettings.cancelButtonText": "İptal", + "DE.Views.TableOfContentsSettings.okButtonText": "Tamam", + "DE.Views.TableOfContentsSettings.textLeader": "Lider", + "DE.Views.TableOfContentsSettings.textLevel": "Seviye", + "DE.Views.TableOfContentsSettings.textLevels": "Seviyeler", + "DE.Views.TableOfContentsSettings.txtModern": "Modern", "DE.Views.TableSettings.deleteColumnText": "Sütunu Sil", "DE.Views.TableSettings.deleteRowText": "Satırı Sil", "DE.Views.TableSettings.deleteTableText": "Tabloyu Sil", @@ -1382,6 +1451,7 @@ "DE.Views.TableSettings.textBorderColor": "Renk", "DE.Views.TableSettings.textBorders": "Sınır Stili", "DE.Views.TableSettings.textCancel": "İptal Et", + "DE.Views.TableSettings.textCellSize": "Hücre boyutu", "DE.Views.TableSettings.textColumns": "Sütunlar", "DE.Views.TableSettings.textEdit": "Satırlar & Sütunlar", "DE.Views.TableSettings.textEmptyTemplate": "Şablon yok", @@ -1394,6 +1464,7 @@ "DE.Views.TableSettings.textSelectBorders": "Yukarıda seçilen stili uygulayarak değiştirmek istediğiniz sınırları seçin", "DE.Views.TableSettings.textTemplate": "Şablondan Seç", "DE.Views.TableSettings.textTotal": "Toplam", + "DE.Views.TableSettings.textWidth": "Genişlik", "DE.Views.TableSettings.tipAll": "Dış Sınır ve Tüm İç Satırları Belirle", "DE.Views.TableSettings.tipBottom": "Sadece Dış Alt Sınırı Belirle", "DE.Views.TableSettings.tipInner": "Sadece İç Satırları Belirle", @@ -1586,6 +1657,7 @@ "DE.Views.Toolbar.textTabHome": "Ana Sayfa", "DE.Views.Toolbar.textTabInsert": "Ekle", "DE.Views.Toolbar.textTabLayout": "Tasarım", + "DE.Views.Toolbar.textTabProtect": "Koruma", "DE.Views.Toolbar.textTabReview": "İnceleme", "DE.Views.Toolbar.textTitleError": "Hata", "DE.Views.Toolbar.textToCurrent": "Mevcut pozisyona", @@ -1596,6 +1668,7 @@ "DE.Views.Toolbar.tipAlignLeft": "Sola Hizala", "DE.Views.Toolbar.tipAlignRight": "Sağa Hizla", "DE.Views.Toolbar.tipBack": "Geri", + "DE.Views.Toolbar.tipBlankPage": "Boş sayfa ekle", "DE.Views.Toolbar.tipChangeChart": "Grafik tipini değiştir", "DE.Views.Toolbar.tipClearStyle": "Stili Temizle", "DE.Views.Toolbar.tipColorSchemas": "Renk Şemasını Değiştir", @@ -1665,5 +1738,13 @@ "DE.Views.Toolbar.txtScheme6": "Toplama", "DE.Views.Toolbar.txtScheme7": "Net Değer", "DE.Views.Toolbar.txtScheme8": "Yayılma", - "DE.Views.Toolbar.txtScheme9": "Döküm" + "DE.Views.Toolbar.txtScheme9": "Döküm", + "DE.Views.WatermarkSettingsDialog.cancelButtonText": "İptal", + "DE.Views.WatermarkSettingsDialog.okButtonText": "Tamam", + "DE.Views.WatermarkSettingsDialog.textAuto": "Otomatik", + "DE.Views.WatermarkSettingsDialog.textBold": "Kalın", + "DE.Views.WatermarkSettingsDialog.textHor": "Yatay", + "DE.Views.WatermarkSettingsDialog.textItalic": "İtalik", + "DE.Views.WatermarkSettingsDialog.textText": "Metin", + "DE.Views.WatermarkSettingsDialog.textUnderline": "Altı çizili" } \ No newline at end of file diff --git a/apps/documenteditor/main/locale/uk.json b/apps/documenteditor/main/locale/uk.json index d09828683..fb64df8c9 100644 --- a/apps/documenteditor/main/locale/uk.json +++ b/apps/documenteditor/main/locale/uk.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Застереження", "Common.Controllers.Chat.textEnterMessage": "ВВедіть своє повідомлення тут", - "Common.Controllers.Chat.textUserLimit": "Ви використовуюєте ONLYOFFICE Free Edition.
      Тільки два користувачі можуть одночасно редагувати документ одночасно.
      Хочете більше? Подумайте про придбання версії ONLYOFFICE Enterprise Edition.
      Докладніше ", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Гість", "Common.Controllers.ExternalDiagramEditor.textClose": "Закрити", "Common.Controllers.ExternalDiagramEditor.warningText": "Об'єкт вимкнено, оскільки його редагує інший користувач.", @@ -240,7 +239,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Термін переходу перевищено.", "DE.Controllers.Main.criticalErrorExtText": "Натисніть \"OK\", щоб повернутися до списку документів.", "DE.Controllers.Main.criticalErrorTitle": "Помилка", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Завантаження не вдалося", "DE.Controllers.Main.downloadMergeText": "Завантаження...", "DE.Controllers.Main.downloadMergeTitle": "Завантаження", @@ -249,7 +247,7 @@ "DE.Controllers.Main.errorAccessDeny": "Ви намагаєтеся виконати дію, у якої у вас немає прав.
      Будь ласка, зв'яжіться з адміністратором вашого Сервера документів.", "DE.Controllers.Main.errorBadImageUrl": "URL-адреса зображення невірна", "DE.Controllers.Main.errorCoAuthoringDisconnect": "З'єднання з сервером втрачено. Документ не можна редагувати прямо зараз.", - "DE.Controllers.Main.errorConnectToServer": "Не вдалося зберегти документ. Будь ласка, перевірте налаштування з'єднання або зверніться до свого адміністратора.
      Після натискання кнопки «ОК» вам буде запропоновано завантажити документ.

      Більше інформації про підключення сервера документів тут ", + "DE.Controllers.Main.errorConnectToServer": "Не вдалося зберегти документ. Будь ласка, перевірте налаштування з'єднання або зверніться до свого адміністратора.
      Після натискання кнопки «ОК» вам буде запропоновано завантажити документ.

      Більше інформації про підключення сервера документів
      тут", "DE.Controllers.Main.errorDatabaseConnection": "Зовнішня помилка.
      Помилка підключення до бази даних. Будь ласка, зв'яжіться зі службою підтримки, якщо помилка не зникне.", "DE.Controllers.Main.errorDataRange": "Неправильний діапазон даних.", "DE.Controllers.Main.errorDefaultMessage": "Код помилки: %1 ", @@ -358,7 +356,7 @@ "DE.Controllers.Main.warnBrowserIE9": "Програма має низькі можливості для IE9. Використовувати IE10 або вище", "DE.Controllers.Main.warnBrowserZoom": "Налаштування масштабу вашого браузера не підтримується повністю. Змініть стандартний масштаб, натиснувши Ctrl + 0.", "DE.Controllers.Main.warnLicenseExp": "Термін дії вашої ліцензії минув.
      Будь ласка, оновіть свою ліцензію та оновіть сторінку.", - "DE.Controllers.Main.warnNoLicense": "Ви використовуєте відкриту версію ONLYOFFICE. Ця версія має обмеження для одночасного підключення до сервера документів (20 підключень за один раз).
      Якщо вам потрібно більше, подумайте про придбання комерційної ліцензії.", + "DE.Controllers.Main.warnNoLicense": "Ви використовуєте відкриту версію %1. Ця версія має обмеження для одночасного підключення до сервера документів (20 підключень за один раз).
      Якщо вам потрібно більше, подумайте про придбання комерційної ліцензії.", "DE.Controllers.Main.warnProcessRightsChange": "Вам відмовлено у наданні права редагувати файл.", "DE.Controllers.Statusbar.textHasChanges": "Нові зміни були відстежені", "DE.Controllers.Statusbar.textTrackChanges": "Документ відкривається за допомогою режиму відстеження змін", @@ -965,7 +963,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Немає шаблонів", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Автор", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Змінити права доступу", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Дата створення", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Завантаження...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Сторінки", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Параграфи", diff --git a/apps/documenteditor/main/locale/vi.json b/apps/documenteditor/main/locale/vi.json index 7308324ae..e526d1e21 100644 --- a/apps/documenteditor/main/locale/vi.json +++ b/apps/documenteditor/main/locale/vi.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "Cảnh báo", "Common.Controllers.Chat.textEnterMessage": "Nhập tin nhắn của bạn ở đây", - "Common.Controllers.Chat.textUserLimit": "Bạn đang sử dụng ONLYOFFICE Free Edition.
      Chỉ hai người dùng có thể đồng thời cùng chỉnh sửa tài liệu.
      Bạn muốn nhiều hơn? Cân nhắc mua ONLYOFFICE Enterprise Edition.
      Đọc thêm", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "Nặc danh", "Common.Controllers.ExternalDiagramEditor.textClose": "Đóng", "Common.Controllers.ExternalDiagramEditor.warningText": "Đối tượng bị vô hiệu vì nó đang được chỉnh sửa bởi một người dùng khác.", @@ -241,7 +240,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Đã quá thời gian chờ chuyển đổi.", "DE.Controllers.Main.criticalErrorExtText": "Nhấp \"OK\" để trở lại danh sách tài liệu.", "DE.Controllers.Main.criticalErrorTitle": "Lỗi", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Tải về không thành công.", "DE.Controllers.Main.downloadMergeText": "Đang tải...", "DE.Controllers.Main.downloadMergeTitle": "Đang tải về", @@ -250,7 +248,7 @@ "DE.Controllers.Main.errorAccessDeny": "Bạn đang cố gắng thực hiện hành động mà bạn không có quyền.
      Vui lòng liên hệ với quản trị viên Server Tài liệu của bạn.", "DE.Controllers.Main.errorBadImageUrl": "URL hình ảnh không chính xác", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Mất kết nối server. Không thể chỉnh sửa tài liệu ngay lúc này.", - "DE.Controllers.Main.errorConnectToServer": "Không thể lưu tài liệu. Vui lòng kiểm tra cài đặt kết nối hoặc liên hệ với quản trị viên của bạn.
      Khi bạn nhấp vào nút 'OK', bạn sẽ được nhắc tải xuống tài liệu.

      Tìm thêm thông tin về kết nối Server Tài liệu ở đây", + "DE.Controllers.Main.errorConnectToServer": "Không thể lưu tài liệu. Vui lòng kiểm tra cài đặt kết nối hoặc liên hệ với quản trị viên của bạn.
      Khi bạn nhấp vào nút 'OK', bạn sẽ được nhắc tải xuống tài liệu.

      Tìm thêm thông tin về kết nối Server Tài liệu ở đây", "DE.Controllers.Main.errorDatabaseConnection": "Lỗi bên ngoài.
      Lỗi kết nối cơ sở dữ liệu. Vui lòng liên hệ bộ phận hỗ trợ trong trường hợp lỗi vẫn còn.", "DE.Controllers.Main.errorDataRange": "Phạm vi dữ liệu không chính xác.", "DE.Controllers.Main.errorDefaultMessage": "Mã lỗi: %1", @@ -359,7 +357,7 @@ "DE.Controllers.Main.warnBrowserIE9": "Ứng dụng vận hành kém trên IE9. Sử dụng IE10 hoặc cao hơn", "DE.Controllers.Main.warnBrowserZoom": "Hiện cài đặt thu phóng trình duyệt của bạn không được hỗ trợ đầy đủ. Vui lòng thiết lập lại chế độ thu phóng mặc định bằng cách nhấn Ctrl+0.", "DE.Controllers.Main.warnLicenseExp": "Giấy phép của bạn đã hết hạn.
      Vui lòng cập nhật giấy phép và làm mới trang.", - "DE.Controllers.Main.warnNoLicense": "Bạn đang sử dụng phiên bản nguồn mở của ONLYOFFICE. Phiên bản có giới hạn các kết nối đồng thời với server tài liệu (20 kết nối cùng một lúc).
      Nếu bạn cần thêm, hãy cân nhắc mua giấy phép thương mại.", + "DE.Controllers.Main.warnNoLicense": "Bạn đang sử dụng phiên bản nguồn mở của %1. Phiên bản có giới hạn các kết nối đồng thời với server tài liệu (20 kết nối cùng một lúc).
      Nếu bạn cần thêm, hãy cân nhắc mua giấy phép thương mại.", "DE.Controllers.Main.warnProcessRightsChange": "Bạn đã bị từ chối quyền chỉnh sửa file này.", "DE.Controllers.Statusbar.textHasChanges": "Các thay đổi mới đã được đánh dấu", "DE.Controllers.Statusbar.textTrackChanges": "Tài liệu được mở với chế độ Theo dõi Thay đổi được kích hoạt", @@ -966,7 +964,6 @@ "DE.Views.FileMenuPanels.CreateNew.noTemplatesText": "Không có template", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Tác giả", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Thay đổi quyền truy cập", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "Ngày tạo", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "Đang tải...", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "Trang", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "Đoạn văn bản", diff --git a/apps/documenteditor/main/locale/zh.json b/apps/documenteditor/main/locale/zh.json index 2daf89455..1f709890a 100644 --- a/apps/documenteditor/main/locale/zh.json +++ b/apps/documenteditor/main/locale/zh.json @@ -1,7 +1,6 @@ { "Common.Controllers.Chat.notcriticalErrorTitle": "警告", "Common.Controllers.Chat.textEnterMessage": "在这里输入你的信息", - "Common.Controllers.Chat.textUserLimit": "您正在使用ONLYOFFICE免费版。
      只有两个用户可以同时共同编辑文档。
      想要更多?考虑购买ONLYOFFICE企业版。
      阅读更多内容", "Common.Controllers.ExternalDiagramEditor.textAnonymous": "匿名", "Common.Controllers.ExternalDiagramEditor.textClose": "关闭", "Common.Controllers.ExternalDiagramEditor.warningText": "该对象被禁用,因为它被另一个用户编辑。", @@ -199,7 +198,7 @@ "Common.Views.OpenDialog.txtPassword": "密码", "Common.Views.OpenDialog.txtPreview": "预览", "Common.Views.OpenDialog.txtProtected": "在您输入密码和打开文件后,该文件的当前密码将被重置。", - "Common.Views.OpenDialog.txtTitle": "选择%1个选项", + "Common.Views.OpenDialog.txtTitle": "选择%1个选项", "Common.Views.OpenDialog.txtTitleProtected": "受保护的文件", "Common.Views.PasswordDialog.cancelButtonText": "取消", "Common.Views.PasswordDialog.okButtonText": "确定", @@ -333,7 +332,6 @@ "DE.Controllers.Main.convertationTimeoutText": "转换超时", "DE.Controllers.Main.criticalErrorExtText": "按“确定”返回该文件列表。", "DE.Controllers.Main.criticalErrorTitle": "错误:", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE文档编辑器", "DE.Controllers.Main.downloadErrorText": "下载失败", "DE.Controllers.Main.downloadMergeText": "下载中…", "DE.Controllers.Main.downloadMergeTitle": "下载中", @@ -342,7 +340,7 @@ "DE.Controllers.Main.errorAccessDeny": "您正在尝试执行您没有权限的操作。
      请联系您的文档服务器管理员.", "DE.Controllers.Main.errorBadImageUrl": "图片地址不正确", "DE.Controllers.Main.errorCoAuthoringDisconnect": "服务器连接丢失。该文档现在无法编辑", - "DE.Controllers.Main.errorConnectToServer": "这份文件无法保存。请检查连接设置或联系您的管理员。
      当你点击“OK”按钮,系统将提示您下载文档。

      找到更多信息连接文件服务器在这里", + "DE.Controllers.Main.errorConnectToServer": "这份文件无法保存。请检查连接设置或联系您的管理员。
      当你点击“OK”按钮,系统将提示您下载文档。

      找到更多信息连接文件服务器
      在这里", "DE.Controllers.Main.errorDatabaseConnection": "外部错误。
      数据库连接错误。如果错误仍然存​​在,请联系支持人员。", "DE.Controllers.Main.errorDataEncrypted": "加密更改已收到,无法对其解密。", "DE.Controllers.Main.errorDataRange": "数据范围不正确", @@ -398,9 +396,9 @@ "DE.Controllers.Main.scriptLoadError": "连接速度过慢,部分组件无法被加载。请重新加载页面。", "DE.Controllers.Main.sendMergeText": "任务合并", "DE.Controllers.Main.sendMergeTitle": "任务合并", - "DE.Controllers.Main.splitDividerErrorText": "行数必须为%1的除数。", - "DE.Controllers.Main.splitMaxColsErrorText": "列数必须小于%1。", - "DE.Controllers.Main.splitMaxRowsErrorText": "行数必须小于%1。", + "DE.Controllers.Main.splitDividerErrorText": "行数必须为%1的除数。", + "DE.Controllers.Main.splitMaxColsErrorText": "列数必须小于%1。", + "DE.Controllers.Main.splitMaxRowsErrorText": "行数必须小于%1。", "DE.Controllers.Main.textAnonymous": "匿名", "DE.Controllers.Main.textBuyNow": "访问网站", "DE.Controllers.Main.textChangesSaved": "所有更改已保存", @@ -662,7 +660,7 @@ "DE.Controllers.Main.warnLicenseExp": "您的许可证已过期。
      请更新您的许可证并刷新页面。", "DE.Controllers.Main.warnLicenseUsersExceeded": "并发用户数量已超出限制,文档打开后将仅供查看。
      请联系您的账户管理员了解详情。", "DE.Controllers.Main.warnNoLicense": "该版本对文档服务器的并发连接有限制。
      如果需要更多请考虑购买商业许可证。", - "DE.Controllers.Main.warnNoLicenseUsers": "此版本的 ONLYOFFICE 编辑软件对并发用户数量有一定的限制。
      如果需要更多,请考虑购买商用许可证。", + "DE.Controllers.Main.warnNoLicenseUsers": "此版本的 %1 编辑软件对并发用户数量有一定的限制。
      如果需要更多,请考虑购买商用许可证。", "DE.Controllers.Main.warnProcessRightsChange": "您被拒绝编辑文件的权限。", "DE.Controllers.Navigation.txtBeginning": "文档开头", "DE.Controllers.Navigation.txtGotoBeginning": "转到文档开头", @@ -1346,7 +1344,6 @@ "DE.Views.FileMenuPanels.DocumentInfo.txtAppName": "应用", "DE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "作者", "DE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "更改访问权限", - "DE.Views.FileMenuPanels.DocumentInfo.txtDate": "创建日期", "DE.Views.FileMenuPanels.DocumentInfo.txtLoading": "载入中……", "DE.Views.FileMenuPanels.DocumentInfo.txtPages": "页面", "DE.Views.FileMenuPanels.DocumentInfo.txtParagraphs": "段落", @@ -2175,7 +2172,7 @@ "DE.Views.Toolbar.txtMarginAlign": "对齐边距", "DE.Views.Toolbar.txtObjectsAlign": "对齐所选对象", "DE.Views.Toolbar.txtPageAlign": "对齐页面", - "DE.Views.Toolbar.txtScheme1": "Office", + "DE.Views.Toolbar.txtScheme1": "公司地址", "DE.Views.Toolbar.txtScheme10": "中位数", "DE.Views.Toolbar.txtScheme11": "组件", "DE.Views.Toolbar.txtScheme12": "组件", diff --git a/apps/documenteditor/main/resources/img/toolbar-menu.png b/apps/documenteditor/main/resources/img/toolbar-menu.png index 08f8fd964..a4206c637 100644 Binary files a/apps/documenteditor/main/resources/img/toolbar-menu.png and b/apps/documenteditor/main/resources/img/toolbar-menu.png differ diff --git a/apps/documenteditor/main/resources/img/toolbar-menu@2x.png b/apps/documenteditor/main/resources/img/toolbar-menu@2x.png index 79fd29f50..66d04ce47 100644 Binary files a/apps/documenteditor/main/resources/img/toolbar-menu@2x.png and b/apps/documenteditor/main/resources/img/toolbar-menu@2x.png differ diff --git a/apps/documenteditor/main/resources/less/filemenu.less b/apps/documenteditor/main/resources/less/filemenu.less index 67712c42c..aad7cc050 100644 --- a/apps/documenteditor/main/resources/less/filemenu.less +++ b/apps/documenteditor/main/resources/less/filemenu.less @@ -304,29 +304,31 @@ } table { - td { - padding: 0 20px 5px 0; + tr { + td { + padding: 0 20px 5px 0; - &.left { - padding: 5px 10px; - text-align: right; - width: 30%; + &.left { + padding: 5px 10px; + text-align: right; + width: 30%; - label { - font-weight: bold; + label { + font-weight: bold; + } + } + + &.right { + padding: 5px 10px; + width: 70%; } } - &.right { - padding: 5px 10px; - width: 70%; + &.divider { + height: 10px; } } - &.divider { - height: 10px; - } - &.main { width: 100%; margin: 30px 0; @@ -347,6 +349,27 @@ label, span { font-size: 12px; } + + .close { + width: 16px; + height: 16px; + cursor: pointer; + display: inline-block; + vertical-align: middle; + margin-left: 5px; + + background-position: @but-close-offset-x @but-close-offset-y; + + &.over, + &:hover { + background-position: @but-close-offset-x @but-close-offset-y - 16px; + } + + &.disabled { + background-position: @but-close-offset-x @but-close-offset-y - 32px; + cursor: default; + } + } } #panel-protect { diff --git a/apps/documenteditor/main/resources/less/toolbar.less b/apps/documenteditor/main/resources/less/toolbar.less index db0e1ab91..a0e59baba 100644 --- a/apps/documenteditor/main/resources/less/toolbar.less +++ b/apps/documenteditor/main/resources/less/toolbar.less @@ -84,6 +84,18 @@ vertical-align: middle; } } + &.checked { + &:before { + display: none !important; + } + &, &:hover, &:focus { + background-color: @primary; + color: @dropdown-link-active-color; + span.color { + border-color: rgba(255,255,255,0.7); + } + } + } } // page number position .menu-pageposition { diff --git a/apps/documenteditor/main/resources/watermark/wm-text.json b/apps/documenteditor/main/resources/watermark/wm-text.json new file mode 100644 index 000000000..689bad78e --- /dev/null +++ b/apps/documenteditor/main/resources/watermark/wm-text.json @@ -0,0 +1,7 @@ +{ + "en": ["ASAP", "CONFIDENTIAL", "COPY", "DO NOT COPY", "DRAFT", "ORIGINAL", "PERSONAL", "SAMPLE", "TOP SECRET", "URGENT" ], + "ru": ["ДЛЯ СЛУЖЕБНОГО ПОЛЬЗОВАНИЯ", "ДСП", "КОПИРОВАТЬ НЕ РАЗРЕШАЕТСЯ", "КОПИЯ", "ЛИЧНОЕ", "ОБРАЗЕЦ", "ОРИГИНАЛ", "СЕКРЕТНО", "СОВ. СЕКРЕТНО", "СОВЕРШЕННО СЕКРЕТНО", "СРОЧНО", "ЧЕРНОВИК"], + "de": ["BEISPIEL", "DRINGEND", "ENTWURF", "KOPIE", "NICHT KOPIEREN", "ORIGINAL", "PERSÖNLICH", "STRENG VERTRAULICH", "VERTRAULICH"], + "es": ["BORRADOR", "CONFIDENCIAL", "COPIA", "EJEMPLO", "NO COPIAR", "ORIGINAL", "PERSONAL", "PRIORITARIO", "ULTRASECRETO", "URGENTE"], + "fr": ["BROUILLON", "CONFID", "COPIE", "DOCUMENT INTERNE", "EXEMPLE", "HAUTEMENT CONFIDENTIEL", "IMPORTANT", "NE PAS DIFFUSER", "NE PAS DISTRIB", "NE PAS DUPLIQUER", "ORIG", "PERSONNEL", "SPECIMEN", "TRES URGENT", "URGENT"] +} \ No newline at end of file diff --git a/apps/documenteditor/mobile/app-dev.js b/apps/documenteditor/mobile/app-dev.js index 653bd9b8c..db28adc5d 100644 --- a/apps/documenteditor/mobile/app-dev.js +++ b/apps/documenteditor/mobile/app-dev.js @@ -130,6 +130,7 @@ require([ nameSpace: 'DE', autoCreate: false, controllers : [ + 'Common.Controllers.Plugins', 'Editor', 'Toolbar', 'Search', @@ -149,7 +150,8 @@ require([ 'AddTable', 'AddShape', 'AddImage', - 'AddOther' + 'AddOther', + 'Common.Controllers.Collaboration' ] }); @@ -199,6 +201,7 @@ require([ require([ 'common/main/lib/util/LocalStorage', 'common/main/lib/util/utils', + 'common/mobile/lib/controller/Plugins', 'documenteditor/mobile/app/controller/Editor', 'documenteditor/mobile/app/controller/Toolbar', 'documenteditor/mobile/app/controller/Search', @@ -218,7 +221,8 @@ require([ 'documenteditor/mobile/app/controller/add/AddTable', 'documenteditor/mobile/app/controller/add/AddShape', 'documenteditor/mobile/app/controller/add/AddImage', - 'documenteditor/mobile/app/controller/add/AddOther' + 'documenteditor/mobile/app/controller/add/AddOther', + 'common/mobile/lib/controller/Collaboration' ], function() { window.compareVersions = true; app.start(); diff --git a/apps/documenteditor/mobile/app.js b/apps/documenteditor/mobile/app.js index e434c4546..cfd2b1b40 100644 --- a/apps/documenteditor/mobile/app.js +++ b/apps/documenteditor/mobile/app.js @@ -141,6 +141,7 @@ require([ nameSpace: 'DE', autoCreate: false, controllers : [ + 'Common.Controllers.Plugins', 'Editor', 'Toolbar', 'Search', @@ -160,7 +161,8 @@ require([ 'AddTable', 'AddShape', 'AddImage', - 'AddOther' + 'AddOther', + 'Common.Controllers.Collaboration' ] }); @@ -181,7 +183,7 @@ require([ //Store Framework7 initialized instance for easy access window.uiApp = new Framework7({ // Default title for modals - modalTitle: '{{MOBILE_MODAL_TITLE}}', + modalTitle: '{{APP_TITLE_TEXT}}', // Enable tap hold events tapHold: true, @@ -210,6 +212,7 @@ require([ require([ 'common/main/lib/util/LocalStorage', 'common/main/lib/util/utils', + 'common/mobile/lib/controller/Plugins', 'documenteditor/mobile/app/controller/Editor', 'documenteditor/mobile/app/controller/Toolbar', 'documenteditor/mobile/app/controller/Search', @@ -229,7 +232,8 @@ require([ 'documenteditor/mobile/app/controller/add/AddTable', 'documenteditor/mobile/app/controller/add/AddShape', 'documenteditor/mobile/app/controller/add/AddImage', - 'documenteditor/mobile/app/controller/add/AddOther' + 'documenteditor/mobile/app/controller/add/AddOther', + 'common/mobile/lib/controller/Collaboration' ], function() { app.start(); }); diff --git a/apps/documenteditor/mobile/app/controller/DocumentHolder.js b/apps/documenteditor/mobile/app/controller/DocumentHolder.js index 0e9841f63..7ceeca7d4 100644 --- a/apps/documenteditor/mobile/app/controller/DocumentHolder.js +++ b/apps/documenteditor/mobile/app/controller/DocumentHolder.js @@ -58,7 +58,7 @@ define([ _fastCoAuthTips = [], _actionSheets = [], _isEdit = false, - _canAcceptChanges = false, + _canReview = false, _inRevisionChange = false, _menuPos = [], _timer = 0; @@ -100,7 +100,7 @@ define([ setMode: function (mode) { _isEdit = mode.isEdit; - _canAcceptChanges = mode.canReview && !mode.isReviewOnly; + _canReview = mode.canReview; }, // When our application is ready, lets get started @@ -123,8 +123,15 @@ define([ me.api.Copy(); } else if ('paste' == eventName) { me.api.Paste(); + } else if ('merge' == eventName) { + me.api.MergeCells(); + } else if ('split' == eventName) { + _view.hideMenu(); + me.showSplitModal(); } else if ('delete' == eventName) { me.api.asc_Remove(); + } else if('deletetable' == eventName) { + me.api.remTable(); } else if ('edit' == eventName) { _view.hideMenu(); @@ -141,26 +148,15 @@ define([ return true; } }); - } else if ('accept' == eventName) { - me.api.asc_GetNextRevisionsChange(); - me.api.asc_AcceptChanges(); - } else if ('acceptall' == eventName) { - me.api.asc_AcceptAllChanges(); - } else if ('reject' == eventName) { - me.api.asc_GetNextRevisionsChange(); - me.api.asc_RejectChanges(); - } else if ('rejectall' == eventName) { - me.api.asc_RejectAllChanges(); } else if ('review' == eventName) { - if (Common.SharedSettings.get('phone')) { - _actionSheets = me._initReviewMenu(); - me.onContextMenuClick(view, 'showActionSheet'); - } else { - _.delay(function () { - _view.showMenu(me._initReviewMenu(), _menuPos[0] || 0, _menuPos[1] || 0); - _timer = (new Date).getTime(); - }, 100); - } + var getCollaboration = DE.getController('Common.Controllers.Collaboration'); + getCollaboration.showModal(); + getCollaboration.getView('Common.Views.Collaboration').showPage('#reviewing-settings-view', false); + } else if('reviewchange' == eventName) { + var getCollaboration = DE.getController('Common.Controllers.Collaboration'); + getCollaboration.showModal(); + getCollaboration.getView('Common.Views.Collaboration').showPage('#reviewing-settings-view', false); + getCollaboration.getView('Common.Views.Collaboration').showPage('#change-view', false); } else if ('showActionSheet' == eventName && _actionSheets.length > 0) { _.delay(function () { _.each(_actionSheets, function (action) { @@ -182,6 +178,55 @@ define([ _view.hideMenu(); }, + showSplitModal: function() { + var me = this, + picker; + uiApp.modal({ + title : me.menuSplit, + text: '', + afterText: + '
      ' + + '
      ' + + '
      ' + me.textColumns + '
      ' + + '
      ' + me.textRows + '
      ' + + '
      ' + + '
      ' + + '
      ', + buttons: [ + { + text: me.textCancel + }, + { + text: 'OK', + bold: true, + onClick: function () { + var size = picker.value; + if (me.api) { + me.api.SplitCell(parseInt(size[0]), parseInt(size[1])); + } + } + } + ] + }); + + picker = uiApp.picker({ + container: '#picker-split-size', + toolbar: false, + rotateEffect: true, + value: [3, 3], + cols: [{ + textAlign: 'center', + width: '100%', + values: [1,2,3,4,5,6,7,8,9,10] + }, { + textAlign: 'center', + width: '100%', + values: [1,2,3,4,5,6,7,8,9,10] + }] + }); + + }, + // API Handlers onEditorResize: function(cmp) { @@ -334,15 +379,17 @@ define([ _initMenu: function (stack) { var me = this, - menuItems = [], + arrItems = [], + arrItemsIcon = [], canCopy = me.api.can_CopyCut(); _actionSheets = []; if (canCopy) { - menuItems.push({ + arrItemsIcon.push({ caption: me.menuCopy, - event: 'copy' + event: 'copy', + icon: 'icon-copy' }); } @@ -351,15 +398,25 @@ define([ isImage = false, isChart = false, isShape = false, - isLink = false; + isLink = false, + lockedText = false, + lockedTable = false, + lockedImage = false, + lockedHeader = false; _.each(stack, function (item) { var objectType = item.get_ObjectType(), objectValue = item.get_ObjectValue(); + if (objectType == Asc.c_oAscTypeSelectElement.Header) { + lockedHeader = objectValue.get_Locked(); + } + if (objectType == Asc.c_oAscTypeSelectElement.Text) { isText = true; + lockedText = objectValue.get_Locked(); } else if (objectType == Asc.c_oAscTypeSelectElement.Image) { + lockedImage = objectValue.get_Locked(); if (objectValue && objectValue.get_ChartProperties()) { isChart = true; } else if (objectType && objectValue.get_ShapeProperties()) { @@ -369,105 +426,114 @@ define([ } } else if (objectType == Asc.c_oAscTypeSelectElement.Table) { isTable = true; + lockedTable = objectValue.get_Locked(); } else if (objectType == Asc.c_oAscTypeSelectElement.Hyperlink) { isLink = true; } }); if (stack.length > 0) { - var topObject = _.find(stack.reverse(), function(obj){ return obj.get_ObjectType() != Asc.c_oAscTypeSelectElement.SpellCheck; }), - topObjectValue = topObject.get_ObjectValue(), - objectLocked = _.isFunction(topObjectValue.get_Locked) ? topObjectValue.get_Locked() : false; var swapItems = function(items, indexBefore, indexAfter) { items[indexAfter] = items.splice(indexBefore, 1, items[indexAfter])[0]; }; - if (!objectLocked && _isEdit && !me.isDisconnected) { - if (canCopy) { - menuItems.push({ + if (_isEdit && !me.isDisconnected) { + if (!lockedText && !lockedTable && !lockedImage && !lockedHeader && canCopy) { + arrItemsIcon.push({ caption: me.menuCut, - event: 'cut' + event: 'cut', + icon: 'icon-cut' }); // Swap 'Copy' and 'Cut' - swapItems(menuItems, 0, 1); + swapItems(arrItemsIcon, 0, 1); } - menuItems.push({ - caption: me.menuPaste, - event: 'paste' - }); + if (!lockedText && !lockedTable && !lockedImage && !lockedHeader) { + arrItemsIcon.push({ + caption: me.menuPaste, + event: 'paste', + icon: 'icon-paste' + }); + } - menuItems.push({ - caption: me.menuDelete, - event: 'delete' - }); + if(isTable && me.api.CheckBeforeMergeCells() && !lockedTable && !lockedHeader) { + arrItems.push({ + caption: me.menuMerge, + event: 'merge' + }); + } - menuItems.push({ - caption: me.menuEdit, - event: 'edit' - }); + if(isTable && me.api.CheckBeforeSplitCells() && !lockedTable && !lockedHeader) { + arrItems.push({ + caption: me.menuSplit, + event: 'split' + }); + } - if (!_.isEmpty(me.api.can_AddHyperlink())) { - menuItems.push({ + if(!lockedText && !lockedTable && !lockedImage && !lockedHeader) { + arrItems.push({ + caption: me.menuDelete, + event: 'delete' + }); + } + + if(isTable && !lockedTable && !lockedText && !lockedHeader) { + arrItems.push({ + caption: me.menuDeleteTable, + event: 'deletetable' + }); + } + + if(!lockedText && !lockedTable && !lockedImage && !lockedHeader){ + arrItems.push({ + caption: me.menuEdit, + event: 'edit' + }); + } + + if (!_.isEmpty(me.api.can_AddHyperlink()) && !lockedHeader) { + arrItems.push({ caption: me.menuAddLink, event: 'addlink' }); } - if (_canAcceptChanges && _inRevisionChange) { - menuItems.push({ - caption: me.menuReview, - event: 'review' - }); + if (_canReview) { + if (_inRevisionChange) { + arrItems.push({ + caption: me.menuReviewChange, + event: 'reviewchange' + }); + } else { + arrItems.push({ + caption: me.menuReview, + event: 'review' + }); + } } } } if (isLink) { - menuItems.push({ + arrItems.push({ caption: me.menuOpenLink, event: 'openlink' }); } - if (Common.SharedSettings.get('phone') && menuItems.length > 3) { - _actionSheets = menuItems.slice(3); + if (Common.SharedSettings.get('phone') && arrItems.length > 2) { + _actionSheets = arrItems.slice(2); - menuItems = menuItems.slice(0, 3); - menuItems.push({ + arrItems = arrItems.slice(0, 2); + arrItems.push({ caption: me.menuMore, event: 'showActionSheet' }); } - return menuItems; - }, - - _initReviewMenu: function (stack) { - var me = this, - menuItems = []; - - menuItems.push({ - caption: me.menuAccept, - event: 'accept' - }); - - menuItems.push({ - caption: me.menuReject, - event: 'reject' - }); - - menuItems.push({ - caption: me.menuAcceptAll, - event: 'acceptall' - }); - - menuItems.push({ - caption: me.menuRejectAll, - event: 'rejectall' - }); + var menuItems = {itemsIcon: arrItemsIcon, items: arrItems}; return menuItems; }, @@ -477,6 +543,9 @@ define([ }, textGuest: 'Guest', + textCancel: 'Cancel', + textColumns: 'Columns', + textRows: 'Rows', menuCut: 'Cut', menuCopy: 'Copy', menuPaste: 'Paste', @@ -487,10 +556,10 @@ define([ menuMore: 'More', sheetCancel: 'Cancel', menuReview: 'Review', - menuAccept: 'Accept', - menuAcceptAll: 'Accept All', - menuReject: 'Reject', - menuRejectAll: 'Reject All' + menuMerge: 'Merge Cells', + menuSplit: 'Split Cell', + menuDeleteTable: 'Delete Table', + menuReviewChange: 'Review Change' } })(), DE.Controllers.DocumentHolder || {})) }); \ No newline at end of file diff --git a/apps/documenteditor/mobile/app/controller/Main.js b/apps/documenteditor/mobile/app/controller/Main.js index 40346cc91..ff56852da 100644 --- a/apps/documenteditor/mobile/app/controller/Main.js +++ b/apps/documenteditor/mobile/app/controller/Main.js @@ -153,6 +153,7 @@ define([ Common.NotificationCenter.on('api:disconnect', _.bind(me.onCoAuthoringDisconnect, me)); Common.NotificationCenter.on('goback', _.bind(me.goBack, me)); + Common.NotificationCenter.on('download:advanced', _.bind(me.onAdvancedOptions, me)); // Initialize descendants _.each(me.getApplication().controllers, function(controller) { @@ -184,7 +185,7 @@ define([ Common.Gateway.internalMessage('listenHardBack'); } - me.defaultTitleText = me.defaultTitleText || '{{APP_TITLE_TEXT}}'; + me.defaultTitleText = '{{APP_TITLE_TEXT}}'; me.warnNoLicense = me.warnNoLicense.replace('%1', '{{COMPANY_NAME}}'); me.warnNoLicenseUsers = me.warnNoLicenseUsers.replace('%1', '{{COMPANY_NAME}}'); me.textNoLicenseTitle = me.textNoLicenseTitle.replace('%1', '{{COMPANY_NAME}}'); @@ -264,6 +265,10 @@ define([ if (data.doc) { DE.getController('Toolbar').setDocumentTitle(data.doc.title); + if (data.doc.info) { + data.doc.info.author && console.log("Obsolete: The 'author' parameter of the document 'info' section is deprecated. Please use 'owner' instead."); + data.doc.info.created && console.log("Obsolete: The 'created' parameter of the document 'info' section is deprecated. Please use 'uploaded' instead."); + } } }, @@ -322,7 +327,7 @@ define([ if (type && typeof type[1] === 'string') { this.api.asc_DownloadOrigin(true) } else { - this.api.asc_DownloadAs(Asc.c_oAscFileType.DOCX, true); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.DOCX, true)); } }, @@ -516,7 +521,8 @@ define([ /** coauthoring begin **/ this.isLiveCommenting = Common.localStorage.getBool("de-settings-livecomment", true); - this.isLiveCommenting ? this.api.asc_showComments(true) : this.api.asc_hideComments(); + var resolved = Common.localStorage.getBool("de-settings-resolvedcomment", true); + this.isLiveCommenting ? this.api.asc_showComments(resolved) : this.api.asc_hideComments(); /** coauthoring end **/ value = Common.localStorage.getItem("de-settings-zoom"); @@ -541,6 +547,12 @@ define([ me.api.SetTextBoxInputMode(Common.localStorage.getBool("de-settings-inputmode")); + value = Common.localStorage.getItem("de-mobile-no-characters"); + me.api.put_ShowParaMarks((value!==null) ? eval(value) : false); + + value = Common.localStorage.getItem("de-mobile-hidden-borders"); + me.api.put_ShowTableEmptyLine((value!==null) ? eval(value) : true); + /** coauthoring begin **/ if (me.appOptions.isEdit && me.appOptions.canLicense && !me.appOptions.isOffline && me.appOptions.canCoAuthoring) { // Force ON fast co-authoring mode @@ -592,6 +604,19 @@ define([ me.applyLicense(); $(document).on('contextmenu', _.bind(me.onContextMenu, me)); + + if (!me.appOptions.canReview) { + var canViewReview = me.appOptions.isEdit || me.api.asc_HaveRevisionsChanges(true); + DE.getController('Common.Controllers.Collaboration').setCanViewReview(canViewReview); + if (canViewReview) { + var viewReviewMode = Common.localStorage.getItem("de-view-review-mode"); + if (viewReviewMode===null) + viewReviewMode = me.appOptions.customization && /^(original|final|markup)$/i.test(me.appOptions.customization.reviewDisplay) ? me.appOptions.customization.reviewDisplay.toLocaleLowerCase() : 'original'; + viewReviewMode = me.appOptions.isEdit ? 'markup' : viewReviewMode; + DE.getController('Common.Controllers.Collaboration').turnDisplayMode(viewReviewMode); + } + } + Common.Gateway.documentReady(); }, @@ -755,25 +780,25 @@ define([ if (me.api) { me.api.asc_registerCallback('asc_onSendThemeColors', _.bind(me.onSendThemeColors, me)); me.api.asc_registerCallback('asc_onDownloadUrl', _.bind(me.onDownloadUrl, me)); + me.api.asc_registerCallback('asc_onAuthParticipantsChanged', _.bind(me.onAuthParticipantsChanged, me)); + me.api.asc_registerCallback('asc_onParticipantsChanged', _.bind(me.onAuthParticipantsChanged, me)); } }, applyModeEditorElements: function() { if (this.appOptions.isEdit) { var me = this; -// -// var value = Common.localStorage.getItem('de-settings-unit'); -// value = (value!==null) ? parseInt(value) : Common.Utils.Metric.getDefaultMetric(); -// Common.Utils.Metric.setCurrentMetric(value); -// me.api.asc_SetDocumentUnits((value==Common.Utils.Metric.c_MetricUnits.inch) ? Asc.c_oAscDocumentUnits.Inch : ((value==Common.Utils.Metric.c_MetricUnits.pt) ? Asc.c_oAscDocumentUnits.Point : Asc.c_oAscDocumentUnits.Millimeter)); + + var value = Common.localStorage.getItem('de-mobile-settings-unit'); + value = (value!==null) ? parseInt(value) : Common.Utils.Metric.getDefaultMetric(); + Common.Utils.Metric.setCurrentMetric(value); + me.api.asc_SetDocumentUnits((value==Common.Utils.Metric.c_MetricUnits.inch) ? Asc.c_oAscDocumentUnits.Inch : ((value==Common.Utils.Metric.c_MetricUnits.pt) ? Asc.c_oAscDocumentUnits.Point : Asc.c_oAscDocumentUnits.Millimeter)); me.api.asc_registerCallback('asc_onDocumentModifiedChanged', _.bind(me.onDocumentModifiedChanged, me)); me.api.asc_registerCallback('asc_onDocumentCanSaveChanged', _.bind(me.onDocumentCanSaveChanged, me)); /** coauthoring begin **/ me.api.asc_registerCallback('asc_onCollaborativeChanges', _.bind(me.onCollaborativeChanges, me)); me.api.asc_registerCallback('asc_OnTryUndoInFastCollaborative',_.bind(me.onTryUndoInFastCollaborative, me)); - me.api.asc_registerCallback('asc_onAuthParticipantsChanged', _.bind(me.onAuthParticipantsChanged, me)); - me.api.asc_registerCallback('asc_onParticipantsChanged', _.bind(me.onAuthParticipantsChanged, me)); /** coauthoring end **/ if (me.stackLongActions.exist({id: ApplyEditRights, type: Asc.c_oAscAsyncActionType['BlockInteraction']})) { @@ -789,6 +814,10 @@ define([ } }, + returnUserCount: function() { + return this._state.usersCount; + }, + onExternalMessage: function(msg) { if (msg && msg.msg) { msg.msg = (msg.msg).toString(); @@ -1102,17 +1131,16 @@ define([ Common.Utils.ThemeColor.setColors(colors, standart_colors); }, - onAdvancedOptions: function(advOptions) { + onAdvancedOptions: function(type, advOptions, mode, formatOptions) { if (this._state.openDlg) return; - var type = advOptions.asc_getOptionId(), - me = this; + var me = this; if (type == Asc.c_oAscAdvancedOptionsID.TXT) { var picker, pages = [], pagesName = []; - _.each(advOptions.asc_getOptions().asc_getCodePages(), function(page) { + _.each(advOptions.asc_getCodePages(), function(page) { pages.push(page.asc_getCodePage()); pagesName.push(page.asc_getCodePageName()); }); @@ -1121,6 +1149,37 @@ define([ me.onLongActionEnd(Asc.c_oAscAsyncActionType.BlockInteraction, LoadingDocument); + var buttons = []; + if (mode === 2) { + buttons.push({ + text: me.textCancel, + onClick: function () { + me._state.openDlg = null; + } + }); + } + buttons.push({ + text: 'OK', + bold: true, + onClick: function() { + var encoding = picker.value; + + if (me.api) { + if (mode==2) { + formatOptions && formatOptions.asc_setAdvancedOptions(new Asc.asc_CTextOptions(encoding)); + me.api.asc_DownloadAs(formatOptions); + } else { + me.api.asc_setAdvancedOptions(type, new Asc.asc_CTextOptions(encoding)); + } + + if (!me._isDocReady) { + me.onLongActionBegin(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument); + } + } + me._state.openDlg = null; + } + }); + me._state.openDlg = uiApp.modal({ title: me.advTxtOptions, text: '', @@ -1131,31 +1190,14 @@ define([ '' + '
      ' + '', - buttons: [ - { - text: 'OK', - bold: true, - onClick: function() { - var encoding = picker.value; - - if (me.api) { - me.api.asc_setAdvancedOptions(type, new Asc.asc_CTXTAdvancedOptions(encoding)); - - if (!me._isDocReady) { - me.onLongActionBegin(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument); - } - } - me._state.openDlg = null; - } - } - ] + buttons: buttons }); picker = uiApp.picker({ container: '#txt-encoding', toolbar: false, rotateEffect: true, - value: [advOptions.asc_getOptions().asc_getRecommendedSettings().asc_getCodePage()], + value: [advOptions.asc_getRecommendedSettings().asc_getCodePage()], cols: [{ values: pages, displayValues: pagesName diff --git a/apps/documenteditor/mobile/app/controller/Settings.js b/apps/documenteditor/mobile/app/controller/Settings.js index f15b1d004..4e1eb3f7e 100644 --- a/apps/documenteditor/mobile/app/controller/Settings.js +++ b/apps/documenteditor/mobile/app/controller/Settings.js @@ -46,7 +46,8 @@ define([ 'jquery', 'underscore', 'backbone', - 'documenteditor/mobile/app/view/Settings' + 'documenteditor/mobile/app/view/Settings', + 'common/mobile/lib/controller/Collaboration' ], function (core, $, _, Backbone) { 'use strict'; @@ -82,7 +83,10 @@ define([ _licInfo, _canReview = false, _isReviewOnly = false, - _fileKey; + _fileKey, + templateInsert, + _metricText = Common.Utils.Metric.getCurrentMetricName(), + _isEdit; var mm2Cm = function(mm) { return parseFloat((mm/10.).toFixed(2)); @@ -114,7 +118,7 @@ define([ } }); - uiApp.onPageAfterBack('settings-document-view', function (page) { + uiApp.onPageAfterBack('margin-view', function (page) { me.applyPageMarginsIfNeed() }); }, @@ -130,6 +134,7 @@ define([ me.api.asc_registerCallback('asc_onDocumentName', _.bind(me.onApiDocumentName, me)); me.api.asc_registerCallback('asc_onDocSize', _.bind(me.onApiPageSize, me)); me.api.asc_registerCallback('asc_onPageOrient', _.bind(me.onApiPageOrient, me)); + me.api.asc_registerCallback('asc_onSendThemeColorSchemes', _.bind(me.onSendThemeColorSchemes, me)); }, onLaunch: function () { @@ -143,6 +148,7 @@ define([ _canReview = mode.canReview; _isReviewOnly = mode.isReviewOnly; _fileKey = mode.fileKey; + _isEdit = mode.isEdit; }, initEvents: function () { @@ -221,34 +227,100 @@ define([ // About me.setLicInfo(_licInfo); Common.Utils.addScrollIfNeed('.page[data-page=settings-about-view]', '.page[data-page=settings-about-view] .page-content'); + } else if ('#settings-advanced-view' == pageId) { + me.initPageAdvancedSettings(); + $('#settings-spellcheck input:checkbox').attr('checked', Common.localStorage.getBool("de-mobile-spellcheck", false)); + $('#settings-spellcheck input:checkbox').single('change', _.bind(me.onSpellcheck, me)); + $('#settings-no-characters input:checkbox').attr('checked', (Common.localStorage.getItem("de-mobile-no-characters") == 'true') ? true : false); + $('#settings-no-characters input:checkbox').single('change', _.bind(me.onNoCharacters, me)); + $('#settings-hidden-borders input:checkbox').attr('checked', (Common.localStorage.getItem("de-mobile-hidden-borders") == 'true') ? true : false); + $('#settings-hidden-borders input:checkbox').single('change', _.bind(me.onShowTableEmptyLine, me)); + $('#settings-orthography').single('click', _.bind(me.onOrthographyCheck, me)); + var displayComments = Common.localStorage.getBool("de-settings-livecomment", true); + $('#settings-display-comments input:checkbox').attr('checked', displayComments); + $('#settings-display-comments input:checkbox').single('change', _.bind(me.onChangeDisplayComments, me)); + var displayResolved = Common.localStorage.getBool("de-settings-resolvedcomment", true); + if (!displayComments) { + $("#settings-display-resolved").addClass("disabled"); + displayResolved = false; + } + $('#settings-display-resolved input:checkbox').attr('checked', displayResolved); + $('#settings-display-resolved input:checkbox').single('change', _.bind(me.onChangeDisplayResolved, me)); + Common.Utils.addScrollIfNeed('.page[data-page=settings-advanced-view]', '.page[data-page=settings-advanced-view] .page-content'); + } else if ('#color-schemes-view' == pageId) { + me.initPageColorSchemes(); + Common.Utils.addScrollIfNeed('.page[data-page=color-schemes-view]', '.page[data-page=color-schemes-view] .page-content'); + } else if ('#margins-view' == pageId) { + me.initPageMargin(); + Common.Utils.addScrollIfNeed('.page[data-page=margin-view]', '.page[data-page=margin-view] .page-content'); } else { $('#settings-readermode input:checkbox').attr('checked', Common.SharedSettings.get('readerMode')); - $('#settings-spellcheck input:checkbox').attr('checked', Common.localStorage.getBool("de-mobile-spellcheck", false)); - $('#settings-review input:checkbox').attr('checked', _isReviewOnly || Common.localStorage.getBool("de-mobile-track-changes-" + (_fileKey || ''))); $('#settings-search').single('click', _.bind(me.onSearch, me)); $('#settings-readermode input:checkbox').single('change', _.bind(me.onReaderMode, me)); - $('#settings-spellcheck input:checkbox').single('change', _.bind(me.onSpellcheck, me)); - $('#settings-orthography').single('click', _.bind(me.onOrthographyCheck, me)); - $('#settings-review input:checkbox').single('change', _.bind(me.onTrackChanges, me)); $('#settings-help').single('click', _.bind(me.onShowHelp, me)); $('#settings-download').single('click', _.bind(me.onDownloadOrigin, me)); $('#settings-print').single('click', _.bind(me.onPrint, me)); + $('#settings-collaboration').single('click', _.bind(me.clickCollaboration, me)); + var _stateDisplayMode = DE.getController('Common.Controllers.Collaboration').getDisplayMode(); + if(_stateDisplayMode == "final" || _stateDisplayMode == "original") { + $('#settings-document').addClass('disabled'); + } + var _userCount = DE.getController('Main').returnUserCount(); + if (_userCount > 0) { + $('#settings-collaboration').show(); + } } }, - initPageDocumentSettings: function () { + onChangeDisplayComments: function(e) { + var displayComments = $(e.currentTarget).is(':checked'); + if (!displayComments) { + this.api.asc_hideComments(); + $("#settings-display-resolved input").prop( "checked", false ); + Common.localStorage.setBool("de-settings-resolvedcomment", false); + $("#settings-display-resolved").addClass("disabled"); + } else { + var resolved = Common.localStorage.getBool("de-settings-resolvedcomment"); + this.api.asc_showComments(resolved); + $("#settings-display-resolved").removeClass("disabled"); + } + Common.localStorage.setBool("de-settings-livecomment", displayComments); + }, + + onChangeDisplayResolved: function(e) { + var displayComments = Common.localStorage.getBool("de-settings-livecomment"); + if (displayComments) { + var resolved = $(e.currentTarget).is(':checked'); + if (this.api) { + this.api.asc_showComments(resolved); + } + Common.localStorage.setBool("de-settings-resolvedcomment", resolved); + } + }, + + clickCollaboration: function() { + DE.getController('Common.Controllers.Collaboration').showModal(); + }, + + onNoCharacters: function(e) { + var me = this; + var $checkbox = $(e.currentTarget), + state = $checkbox.is(':checked'); + Common.localStorage.setItem("de-mobile-no-characters", state); + me.api.put_ShowParaMarks(state); + }, + + onShowTableEmptyLine: function(e) { var me = this, - $pageOrientation = $('.page[data-page=settings-document-view] input:radio[name=doc-orientation]'), - $pageSize = $('#settings-document-format'), - txtCm = Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.cm); + $checkbox = $(e.currentTarget), + state = $checkbox.is(':checked'); + Common.localStorage.setItem("de-mobile-hidden-borders", state); + me.api.put_ShowTableEmptyLine(state); + }, - // Init orientation - $pageOrientation.val([_isPortrait]); - $pageOrientation.single('change', _.bind(me.onOrientationChange, me)); - - // Init format - $pageSize.find('.item-title').text(_pageSizes[_pageSizesIndex]['caption']); - $pageSize.find('.item-subtitle').text(_pageSizes[_pageSizesIndex]['subtitle']); + initPageMargin: function() { + var me = this; + _metricText = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric()); // Init page margins me.localSectionProps = me.api.asc_GetSectionProps(); @@ -257,10 +329,15 @@ define([ me.maxMarginsH = me.localSectionProps.get_H() - 26; me.maxMarginsW = me.localSectionProps.get_W() - 127; - $('#document-margin-top .item-after label').text(mm2Cm(me.localSectionProps.get_TopMargin()) + ' ' + txtCm); - $('#document-margin-bottom .item-after label').text(mm2Cm(me.localSectionProps.get_BottomMargin()) + ' ' + txtCm); - $('#document-margin-left .item-after label').text(mm2Cm(me.localSectionProps.get_LeftMargin()) + ' ' + txtCm); - $('#document-margin-right .item-after label').text(mm2Cm(me.localSectionProps.get_RightMargin()) + ' ' + txtCm); + var top = parseFloat(Common.Utils.Metric.fnRecalcFromMM(me.localSectionProps.get_TopMargin()).toFixed(2)), + bottom = parseFloat(Common.Utils.Metric.fnRecalcFromMM(me.localSectionProps.get_BottomMargin()).toFixed(2)), + left = parseFloat(Common.Utils.Metric.fnRecalcFromMM(me.localSectionProps.get_LeftMargin()).toFixed(2)), + right = parseFloat(Common.Utils.Metric.fnRecalcFromMM(me.localSectionProps.get_RightMargin()).toFixed(2)); + + $('#document-margin-top .item-after label').text(top + ' ' + _metricText); + $('#document-margin-bottom .item-after label').text(bottom + ' ' + _metricText); + $('#document-margin-left .item-after label').text(left + ' ' + _metricText); + $('#document-margin-right .item-after label').text(right + ' ' + _metricText); } _.each(["top", "left", "bottom", "right"], function(align) { @@ -268,6 +345,67 @@ define([ }) }, + initPageColorSchemes: function() { + $('#color-schemes-content').html(templateInsert); + $('.color-schemes-menu').on('click', _.bind(this.onColorSchemaClick, this)); + }, + + onSendThemeColorSchemes: function (schemas) { + templateInsert = ""; + _.each(schemas, function (schema, index) { + var colors = schema.get_colors();//schema.colors; + templateInsert = templateInsert + "
      "; + for (var j = 2; j < 7; j++) { + var clr = '#' + Common.Utils.ThemeColor.getHexColor(colors[j].get_r(), colors[j].get_g(), colors[j].get_b()); + templateInsert = templateInsert + "" + } + templateInsert = templateInsert + "" + schema.get_name() + "
      "; + }, this); + }, + + onColorSchemaClick: function(event) { + if (this.api) { + var ind = $(event.currentTarget).children('input').val(); + this.api.ChangeColorScheme(ind); + } + }, + + initPageAdvancedSettings: function() { + var me = this, + $unitMeasurement = $('.page[data-page=settings-advanced-view] input:radio[name=unit-of-measurement]'); + $unitMeasurement.single('change', _.bind(me.unitMeasurementChange, me)); + var value = Common.localStorage.getItem('de-mobile-settings-unit'); + value = (value!==null) ? parseInt(value) : Common.Utils.Metric.getDefaultMetric(); + $unitMeasurement.val([value]); + var _stateDisplayMode = DE.getController('Common.Controllers.Collaboration').getDisplayMode(); + if(_stateDisplayMode == "final" || _stateDisplayMode == "original") { + $('#settings-no-characters').addClass('disabled'); + $('#settings-hidden-borders').addClass('disabled'); + } + if (!_isEdit) { + $('.page[data-page=settings-advanced-view] .page-content > :not(.display-view)').hide(); + } + }, + + initPageDocumentSettings: function () { + var me = this, + $pageOrientation = $('.page[data-page=settings-document-view] input:radio[name=doc-orientation]'), + $pageSize = $('#settings-document-format'); + + // Init orientation + $pageOrientation.val([_isPortrait]); + $pageOrientation.single('change', _.bind(me.onOrientationChange, me)); + + // Init format + $pageSize.find('.item-title').text(_pageSizes[_pageSizesIndex]['caption']); + var curMetricName = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric()), + sizeW = parseFloat(Common.Utils.Metric.fnRecalcFromMM(_pageSizes[_pageSizesIndex]['value'][0]).toFixed(2)), + sizeH = parseFloat(Common.Utils.Metric.fnRecalcFromMM(_pageSizes[_pageSizesIndex]['value'][1]).toFixed(2)); + + var pageSizeTxt = sizeW + ' ' + curMetricName + ' x ' + sizeH + ' ' + curMetricName; + $pageSize.find('.item-subtitle').text(pageSizeTxt); + }, + initPageInfo: function () { var me = this; @@ -277,9 +415,39 @@ define([ var document = Common.SharedSettings.get('document') || {}, info = document.info || {}; - $('#settings-document-title').html(document.title ? document.title : me.unknownText); - $('#settings-document-autor').html(info.author ? info.author : me.unknownText); - $('#settings-document-date').html(info.created ? info.created : me.unknownText); + document.title ? $('#settings-document-title').html(document.title) : $('.display-document-title').remove(); + var value = info.owner || info.author; + value ? $('#settings-document-owner').html(value) : $('.display-owner').remove(); + value = info.uploaded || info.created; + value ? $('#settings-doc-uploaded').html(value) : $('.display-uploaded').remove(); + info.folder ? $('#settings-doc-location').html(info.folder) : $('.display-location').remove(); + + var appProps = (this.api) ? this.api.asc_getAppProps() : null; + if (appProps) { + var appName = (appProps.asc_getApplication() || '') + ' ' + (appProps.asc_getAppVersion() || ''); + appName ? $('#settings-doc-application').html(appName) : $('.display-application').remove(); + } + var props = (this.api) ? this.api.asc_getCoreProps() : null; + if (props) { + value = props.asc_getTitle(); + value ? $('#settings-doc-title').html(value) : $('.display-title').remove(); + value = props.asc_getSubject(); + value ? $('#settings-doc-subject').html(value) : $('.display-subject').remove(); + value = props.asc_getDescription(); + value ? $('#settings-doc-comment').html(value) : $('.display-comment').remove(); + value = props.asc_getModified(); + value ? $('#settings-doc-last-mod').html(value.toLocaleString()) : $('.display-last-mode').remove(); + value = props.asc_getLastModifiedBy(); + value ? $('#settings-doc-mod-by').html(value) : $('.display-mode-by').remove(); + value = props.asc_getCreated(); + value ? $('#settings-doc-date').html(value.toLocaleString()) : $('.display-created-date').remove(); + value = props.asc_getCreator(); + var templateCreator = ""; + value && value.split(/\s*[,;]\s*/).forEach(function(item) { + templateCreator = templateCreator + "
    • " + item + "
    • "; + }); + templateCreator ? $('#list-creator').html(templateCreator) : $('.display-author').remove(); + } } }, @@ -384,19 +552,19 @@ define([ this.api && this.api.asc_pluginRun("asc.{B631E142-E40B-4B4C-90B9-2D00222A286E}", 0); }, - onTrackChanges: function(e) { - var $checkbox = $(e.currentTarget), - state = $checkbox.is(':checked'); - if ( _isReviewOnly ) { - $checkbox.attr('checked', true); - } else if ( _canReview ) { - this.api.asc_SetTrackRevisions(state); - Common.localStorage.setItem("de-mobile-track-changes-" + (_fileKey || ''), state ? 1 : 0); - } - }, - onShowHelp: function () { - window.open('{{SUPPORT_URL}}', "_blank"); + var url = '{{HELP_URL}}'; + if (url.charAt(url.length-1) !== '/') { + url += '/'; + } + if (Common.SharedSettings.get('sailfish')) { + url+='mobile-applications/documents/sailfish/index.aspx'; + } else if (Common.SharedSettings.get('android')) { + url+='mobile-applications/documents/android/index.aspx'; + } else { + url+='mobile-applications/documents/index.aspx'; + } + window.open(url, "_blank"); this.hideModal(); }, @@ -405,19 +573,22 @@ define([ format = $(e.currentTarget).data('format'); if (format) { - if (format == Asc.c_oAscFileType.TXT) { + if (format == Asc.c_oAscFileType.TXT || format == Asc.c_oAscFileType.RTF) { _.defer(function () { uiApp.confirm( - me.warnDownloadAs, + (format === Asc.c_oAscFileType.TXT) ? me.warnDownloadAs : me.warnDownloadAsRTF, me.notcriticalErrorTitle, function () { - me.api.asc_DownloadAs(format); + if (format == Asc.c_oAscFileType.TXT) + Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.TXT, me.api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format)); + else + me.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format)); } ); }); } else { _.defer(function () { - me.api.asc_DownloadAs(format); + me.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format)); }); } @@ -462,12 +633,27 @@ define([ }, 300); }, + unitMeasurementChange: function (e) { + var value = $(e.currentTarget).val(); + value = (value!==null) ? parseInt(value) : Common.Utils.Metric.getDefaultMetric(); + Common.Utils.Metric.setCurrentMetric(value); + Common.localStorage.setItem("de-mobile-settings-unit", value); + this.api.asc_SetDocumentUnits((value==Common.Utils.Metric.c_MetricUnits.inch) ? Asc.c_oAscDocumentUnits.Inch : ((value==Common.Utils.Metric.c_MetricUnits.pt) ? Asc.c_oAscDocumentUnits.Point : Asc.c_oAscDocumentUnits.Millimeter)); + + }, + onPageMarginsChange: function (align, e) { var me = this, $button = $(e.currentTarget), - step = 1, // mm + step, txtCm = Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.cm), marginValue = null; + if(Common.Utils.Metric.getCurrentMetric() == Common.Utils.Metric.c_MetricUnits.pt) { + step = 1; + } else { + step = 0.1; + } + step = Common.Utils.Metric.fnRecalcToMM(step); switch (align) { case 'left': marginValue = me.localSectionProps.get_LeftMargin(); break; @@ -489,7 +675,8 @@ define([ case 'bottom': me.localSectionProps.put_BottomMargin(marginValue); break; } - $(Common.Utils.String.format('#document-margin-{0} .item-after label', align)).text(mm2Cm(marginValue) + ' ' + txtCm); + var valueCurrentMetric = parseFloat(Common.Utils.Metric.fnRecalcFromMM(marginValue).toFixed(2)); + $(Common.Utils.String.format('#document-margin-{0} .item-after label', align)).text(valueCurrentMetric + ' ' + _metricText); me.applyPageMarginsIfNeed() }, @@ -574,7 +761,8 @@ define([ unknownText: 'Unknown', txtLoading : 'Loading...', notcriticalErrorTitle : 'Warning', - warnDownloadAs : 'If you continue saving in this format all features except the text will be lost.
      Are you sure you want to continue?' + warnDownloadAs : 'If you continue saving in this format all features except the text will be lost.
      Are you sure you want to continue?', + warnDownloadAsRTF : 'If you continue saving in this format some of the formatting might be lost.
      Are you sure you want to continue?' } })(), DE.Controllers.Settings || {})) }); \ No newline at end of file diff --git a/apps/documenteditor/mobile/app/controller/Toolbar.js b/apps/documenteditor/mobile/app/controller/Toolbar.js index e1d1ed5b4..d5ed2de7f 100644 --- a/apps/documenteditor/mobile/app/controller/Toolbar.js +++ b/apps/documenteditor/mobile/app/controller/Toolbar.js @@ -51,7 +51,8 @@ define([ DE.Controllers.Toolbar = Backbone.Controller.extend(_.extend((function() { // private - var _backUrl; + var _backUrl, + stateDisplayMode = false; return { models: [], @@ -80,6 +81,8 @@ define([ this.api.asc_registerCallback('asc_onCanRedo', _.bind(this.onApiCanRevert, this, 'redo')); this.api.asc_registerCallback('asc_onFocusObject', _.bind(this.onApiFocusObject, this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect', _.bind(this.onCoAuthoringDisconnect, this)); + this.api.asc_registerCallback('asc_onAuthParticipantsChanged', _.bind(this.displayCollaboration, this)); + this.api.asc_registerCallback('asc_onParticipantsChanged', _.bind(this.displayCollaboration, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); }, @@ -149,6 +152,12 @@ define([ } }, + setDisplayMode: function(displayMode) { + stateDisplayMode = displayMode == "final" || displayMode == "original" ? true : false; + var selected = this.api.getSelectedElements(); + this.onApiFocusObject(selected); + }, + onApiFocusObject: function (objects) { if (this.isDisconnected) return; @@ -159,16 +168,16 @@ define([ topObjectValue = topObject.get_ObjectValue(), objectLocked = _.isFunction(topObjectValue.get_Locked) ? topObjectValue.get_Locked() : false; - $('#toolbar-add, #toolbar-edit').toggleClass('disabled', objectLocked); + $('#toolbar-add, #toolbar-edit').toggleClass('disabled', objectLocked || stateDisplayMode); } }, activateControls: function() { - $('#toolbar-edit, #toolbar-add, #toolbar-settings, #toolbar-search, #document-back, #toolbar-edit-document').removeClass('disabled'); + $('#toolbar-edit, #toolbar-add, #toolbar-settings, #toolbar-search, #document-back, #toolbar-edit-document, #toolbar-collaboration').removeClass('disabled'); }, activateViewControls: function() { - $('#toolbar-search, #document-back').removeClass('disabled'); + $('#toolbar-search, #document-back, #toolbar-collaboration').removeClass('disabled'); }, deactivateEditControls: function() { @@ -185,6 +194,21 @@ define([ DE.getController('Settings').hideModal(); }, + displayCollaboration: function(users) { + if(users !== undefined) { + var length = 0; + _.each(users, function (item) { + if (!item.asc_getView()) + length++; + }); + if (length > 0) { + $('#toolbar-collaboration').show(); + } else { + $('#toolbar-collaboration').hide(); + } + } + }, + dlgLeaveTitleText : 'You leave the application', dlgLeaveMsgText : 'You have unsaved changes in this document. Click \'Stay on this Page\' to await the autosave of the document. Click \'Leave this Page\' to discard all the unsaved changes.', leaveButtonText : 'Leave this Page', diff --git a/apps/documenteditor/mobile/app/controller/add/AddOther.js b/apps/documenteditor/mobile/app/controller/add/AddOther.js index e979187e8..8b14782a0 100644 --- a/apps/documenteditor/mobile/app/controller/add/AddOther.js +++ b/apps/documenteditor/mobile/app/controller/add/AddOther.js @@ -72,6 +72,8 @@ define([ 'page:show' : this.onPageShow } }); + this.toCustomFormat; + this.fromCustomFormat; }, setApi: function (api) { @@ -107,11 +109,123 @@ define([ $('#add-link-display input').val(_.isString(text) ? text : ''); }); } + } else if (pageId == '#addother-insert-footnote') { + me.initInsertFootnote(); } }, // Handlers + initInsertFootnote: function () { + var me = this, + dataFormatFootnote = [ + { text: '1, 2, 3,...', value: Asc.c_oAscNumberingFormat.Decimal }, + { text: 'a, b, c,...', value: Asc.c_oAscNumberingFormat.LowerLetter }, + { text: 'A, B, C,...', value: Asc.c_oAscNumberingFormat.UpperLetter }, + { text: 'i, ii, iii,...', value: Asc.c_oAscNumberingFormat.LowerRoman }, + { text: 'I, II, III,...', value: Asc.c_oAscNumberingFormat.UpperRoman } + ], + dataPosFootnote = [ + {value: Asc.c_oAscFootnotePos.PageBottom, displayValue: this.textBottomOfPage }, + {value: Asc.c_oAscFootnotePos.BeneathText, displayValue: this.textBelowText } + ], + props = me.api.asc_GetFootnoteProps(), + propsFormat = props.get_NumFormat(), + propsPos = props.get_Pos(); + + me.onFormatFootnoteChange(propsFormat); + + var view = me.getView('AddOther'); + view.renderNumFormat(dataFormatFootnote, propsFormat); + view.renderFootnotePos(dataPosFootnote, propsPos); + + $('#start-at-footnote .button').single('click', _.bind(me.onStartAt, me)); + $('.page[data-page=addother-insert-footnote] input:radio[name=doc-footnote-format]').single('change', _.bind(me.onFormatFootnoteChange, me)); + $('#footnote-insert').single('click', _.bind(this.onClickInsertFootnote, this)); + }, + + onClickInsertFootnote: function() { + var me = this, + format = $('input[name="doc-footnote-format"]:checked').data('value'), + start = $('#start-at-footnote .item-after label').text(), + position = $('input[name="doc-footnote-pos"]:checked').data('value'), + props = new Asc.CAscFootnotePr(); + var startTo10; + if (me.fromCustomFormat) { + startTo10 = parseInt(me.fromCustomFormat(start)); + } else { + startTo10 = me.api.asc_GetFootnoteProps().get_NumStart(); + } + props.put_Pos(position); + props.put_NumFormat(format); + props.put_NumStart(startTo10); + props.put_NumRestart(Asc.c_oAscFootnoteRestart.Continuous); + if (me.api) { + me.api.asc_SetFootnoteProps(props, false); + setTimeout(function() { + me.api.asc_AddFootnote(); + }, 1); + DE.getController('AddContainer').hideModal(); + } + }, + + onFormatFootnoteChange: function(e) { + var me = this; + var value = e.currentTarget ? $(e.currentTarget).data('value') : e; + var startAt = $('#start-at-footnote .item-after label'), + currValue; + if(e.currentTarget) { + currValue = me.fromCustomFormat(startAt.text()); + } else { + currValue = me.api.asc_GetFootnoteProps().get_NumStart(); + } + switch (value) { + case Asc.c_oAscNumberingFormat.UpperRoman: // I, II, III, ... + me.toCustomFormat = me._10toRome; + me.fromCustomFormat = me._Rometo10; + break; + case Asc.c_oAscNumberingFormat.LowerRoman: // i, ii, iii, ... + me.toCustomFormat = function(value) { return me._10toRome(value).toLocaleLowerCase(); }; + me.fromCustomFormat = function(value) { return me._Rometo10(value.toLocaleUpperCase()); }; + break; + case Asc.c_oAscNumberingFormat.UpperLetter: // A, B, C, ... + me.toCustomFormat = me._10toS; + me.fromCustomFormat = me._Sto10; + break; + case Asc.c_oAscNumberingFormat.LowerLetter: // a, b, c, ... + me.toCustomFormat = function(value) { return me._10toS(value).toLocaleLowerCase(); }; + me.fromCustomFormat = function(value) { return me._Sto10(value.toLocaleUpperCase()); }; + break; + default: // 1, 2, 3, ... + me.toCustomFormat = function(value) { return value; }; + me.fromCustomFormat = function(value) { return value; }; + break; + } + var newValue = me.toCustomFormat(currValue); + startAt.text(newValue); + }, + + onStartAt: function(e) { + var $button = $(e.currentTarget), + value = $('#start-at-footnote .item-after label').text(), + intValue, + step = 1, + maxValue = 16383, + me = this; + if(me.fromCustomFormat) { + intValue = parseInt(me.fromCustomFormat(value)); + } else { + intValue = me.api.asc_GetFootnoteProps().get_NumStart(); + } + if ($button.hasClass('decrement')) { + intValue = Math.max(1, intValue - step); + } else { + intValue = Math.min(maxValue, intValue + step); + } + var newValue = me.toCustomFormat(intValue); + $('#start-at-footnote .item-after label').text(newValue); + }, + onInsertLink: function (e) { var me = this, url = $('#add-link-url input').val(), @@ -208,7 +322,102 @@ define([ DE.getController('AddContainer').hideModal(); }, - txtNotUrl: 'This field should be a URL in the format \"http://www.example.com\"' + _10toS: function(value) { + value = parseInt(value); + var n = Math.ceil(value / 26), + code = String.fromCharCode((value-1) % 26 + "A".charCodeAt(0)) , + result = ''; + + for (var i=0; i0) { + val = digits[n][1]; + div = value - val; + if (div>=0) { + result += digits[n][0]; + value = div; + } else + n++; + } + + return result; + }, + + _Rometo10: function(str) { + if ( !/[IVXLCDM]/.test(str) || str.length<1 ) return 1; + + var digits = { + 'I': 1, + 'V': 5, + 'X': 10, + 'L': 50, + 'C': 100, + 'D': 500, + 'M': 1000 + }; + + var n = str.length-1, + result = digits[str.charAt(n)], + prev = result; + + for (var i=n-1; i>=0; i-- ) { + var val = digits[str.charAt(i)]; + if (val10) return 1; + val *= -1; + } + + result += val; + } + + return result; + }, + + txtNotUrl: 'This field should be a URL in the format \"http://www.example.com\"', + textBottomOfPage: 'Bottom Of Page', + textBelowText: 'Below Text' } })(), DE.Controllers.AddOther || {})) diff --git a/apps/documenteditor/mobile/app/controller/add/AddTable.js b/apps/documenteditor/mobile/app/controller/add/AddTable.js index 2613dce77..e83918cc4 100644 --- a/apps/documenteditor/mobile/app/controller/add/AddTable.js +++ b/apps/documenteditor/mobile/app/controller/add/AddTable.js @@ -181,8 +181,8 @@ define([ if (_styles.length < 1) { _.each(templates, function(template){ _styles.push({ - imageUrl : template.get_Image(), - templateId : template.get_Id() + imageUrl : template.asc_getImage(), + templateId : template.asc_getId() }); }); diff --git a/apps/documenteditor/mobile/app/controller/edit/EditChart.js b/apps/documenteditor/mobile/app/controller/edit/EditChart.js index 25db03196..d38fbf8a9 100644 --- a/apps/documenteditor/mobile/app/controller/edit/EditChart.js +++ b/apps/documenteditor/mobile/app/controller/edit/EditChart.js @@ -171,7 +171,7 @@ define([ initSettings: function (pageId) { var me = this; - + _metricText = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric()); if (_chartObject) { if (pageId == '#edit-chart-wrap') { me._initWrapView(); @@ -222,6 +222,7 @@ define([ paletteFillColor = me.getView('EditChart').paletteFillColor, paletteBorderColor = me.getView('EditChart').paletteBorderColor; + // Style var type = chartProperties.getType(); @@ -232,7 +233,7 @@ define([ var borderSize = shapeProperties.get_stroke().get_width() * 72.0 / 25.4; var borderType = shapeProperties.get_stroke().get_type(); $('#edit-chart-bordersize input').val([(borderType == Asc.c_oAscStrokeType.STROKE_NONE) ? 0 : borderSizeTransform.indexSizeByValue(borderSize)]); - $('#edit-chart-bordersize .item-after').text(((borderType == Asc.c_oAscStrokeType.STROKE_NONE) ? 0 : borderSizeTransform.sizeByValue(borderSize)) + ' ' + _metricText); + $('#edit-chart-bordersize .item-after').text(((borderType == Asc.c_oAscStrokeType.STROKE_NONE) ? 0 : borderSizeTransform.sizeByValue(borderSize)) + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)); paletteFillColor && paletteFillColor.on('select', _.bind(me.onFillColor, me)); paletteBorderColor && paletteBorderColor.on('select', _.bind(me.onBorderColor, me)); @@ -426,6 +427,7 @@ define([ properties = new Asc.asc_CImgProperty(), paddings = new Asc.asc_CPaddings(); + $('.chart-wrap .distance .item-after').text(value + ' ' + _metricText); value = Common.Utils.Metric.fnRecalcToMM(parseInt(value)); @@ -475,7 +477,7 @@ define([ onBorderSizeChanging: function (e) { var $target = $(e.currentTarget); - $('#edit-chart-bordersize .item-after').text(borderSizeTransform.sizeByIndex($target.val()) + ' ' + _metricText); + $('#edit-chart-bordersize .item-after').text(borderSizeTransform.sizeByIndex($target.val()) + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)); }, onFillColor: function(palette, color) { diff --git a/apps/documenteditor/mobile/app/controller/edit/EditImage.js b/apps/documenteditor/mobile/app/controller/edit/EditImage.js index f53b874ec..70f6bcb61 100644 --- a/apps/documenteditor/mobile/app/controller/edit/EditImage.js +++ b/apps/documenteditor/mobile/app/controller/edit/EditImage.js @@ -142,6 +142,8 @@ define([ initSettings: function (pageId) { var me = this; + _metricText = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric()); + if (_imageObject) { if (pageId == '#edit-image-wrap-view') { me._initWrapView(); diff --git a/apps/documenteditor/mobile/app/controller/edit/EditParagraph.js b/apps/documenteditor/mobile/app/controller/edit/EditParagraph.js index a27ad47f4..23545050b 100644 --- a/apps/documenteditor/mobile/app/controller/edit/EditParagraph.js +++ b/apps/documenteditor/mobile/app/controller/edit/EditParagraph.js @@ -129,6 +129,7 @@ define([ initSettings: function () { var me = this; + metricText = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric()); var selectedElements = me.api.getSelectedElements(); if (selectedElements && _.isArray(selectedElements)) { for (var i = selectedElements.length - 1; i >= 0; i--) { @@ -143,14 +144,17 @@ define([ if (_paragraphProperty.get_Ind()===null || _paragraphProperty.get_Ind()===undefined) { _paragraphProperty.get_Ind().put_FirstLine(0); } - $('#paragraph-spin-first-line .item-after label').text(_paragraphProperty.get_Ind().get_FirstLine() + ' ' + metricText); + var firstLineFix = parseFloat(Common.Utils.Metric.fnRecalcFromMM(_paragraphProperty.get_Ind().get_FirstLine()).toFixed(2)); + $('#paragraph-spin-first-line .item-after label').text(firstLineFix + ' ' + metricText); } if (_paragraphObject) { _paragraphInfo.spaceBefore = _paragraphObject.get_Spacing().get_Before() < 0 ? _paragraphObject.get_Spacing().get_Before() : Common.Utils.Metric.fnRecalcFromMM(_paragraphObject.get_Spacing().get_Before()); _paragraphInfo.spaceAfter = _paragraphObject.get_Spacing().get_After() < 0 ? _paragraphObject.get_Spacing().get_After() : Common.Utils.Metric.fnRecalcFromMM(_paragraphObject.get_Spacing().get_After()); - $('#paragraph-distance-before .item-after label').text(_paragraphInfo.spaceBefore < 0 ? 'Auto' : _paragraphInfo.spaceBefore + ' ' + metricText); - $('#paragraph-distance-after .item-after label').text(_paragraphInfo.spaceAfter < 0 ? 'Auto' : _paragraphInfo.spaceAfter + ' ' + metricText); + var distanceBeforeFix = parseFloat(_paragraphInfo.spaceBefore.toFixed(2)); + var distanceAfterFix = parseFloat(_paragraphInfo.spaceAfter.toFixed(2)); + $('#paragraph-distance-before .item-after label').text(_paragraphInfo.spaceBefore < 0 ? 'Auto' : distanceBeforeFix + ' ' + metricText); + $('#paragraph-distance-after .item-after label').text(_paragraphInfo.spaceAfter < 0 ? 'Auto' : distanceAfterFix + ' ' + metricText); $('#paragraph-space input:checkbox').prop('checked', _paragraphObject.get_ContextualSpacing()); $('#paragraph-page-break input:checkbox').prop('checked', _paragraphObject.get_PageBreakBefore()); @@ -231,51 +235,98 @@ define([ onDistanceBefore: function (e) { var $button = $(e.currentTarget), - distance = _paragraphInfo.spaceBefore; + distance = _paragraphInfo.spaceBefore, + step, + maxValue; + + if (Common.Utils.Metric.getCurrentMetric() == Common.Utils.Metric.c_MetricUnits.pt) { + step = 1; + } else { + step = 0.01; + } + + maxValue = Common.Utils.Metric.fnRecalcFromMM(558.8); if ($button.hasClass('decrement')) { - distance = Math.max(-1, --distance); + distance = Math.max(-1, distance - step); } else { - distance = Math.min(100, ++distance); + distance = Math.min(maxValue, distance + step); } + var distanceFix = parseFloat(distance.toFixed(2)); + _paragraphInfo.spaceBefore = distance; - $('#paragraph-distance-before .item-after label').text(_paragraphInfo.spaceBefore < 0 ? 'Auto' : (_paragraphInfo.spaceBefore) + ' ' + metricText); + $('#paragraph-distance-before .item-after label').text(_paragraphInfo.spaceBefore < 0 ? 'Auto' : distanceFix + ' ' + metricText); this.api.put_LineSpacingBeforeAfter(0, (_paragraphInfo.spaceBefore < 0) ? -1 : Common.Utils.Metric.fnRecalcToMM(_paragraphInfo.spaceBefore)); }, onDistanceAfter: function (e) { var $button = $(e.currentTarget), - distance = _paragraphInfo.spaceAfter; + distance = _paragraphInfo.spaceAfter, + step, + maxValue; + + if (Common.Utils.Metric.getCurrentMetric() == Common.Utils.Metric.c_MetricUnits.pt) { + step = 1; + } else { + step = 0.01; + } + + maxValue = Common.Utils.Metric.fnRecalcFromMM(558.8); if ($button.hasClass('decrement')) { - distance = Math.max(-1, --distance); + distance = Math.max(-1, distance - step); } else { - distance = Math.min(100, ++distance); + distance = Math.min(maxValue, distance + step); } + var distanceFix = parseFloat(distance.toFixed(2)); + _paragraphInfo.spaceAfter = distance; - $('#paragraph-distance-after .item-after label').text(_paragraphInfo.spaceAfter < 0 ? 'Auto' : (_paragraphInfo.spaceAfter) + ' ' + metricText); + $('#paragraph-distance-after .item-after label').text(_paragraphInfo.spaceAfter < 0 ? 'Auto' : distanceFix + ' ' + metricText); this.api.put_LineSpacingBeforeAfter(1, (_paragraphInfo.spaceAfter < 0) ? -1 : Common.Utils.Metric.fnRecalcToMM(_paragraphInfo.spaceAfter)); }, onSpinFirstLine: function(e) { var $button = $(e.currentTarget), - distance = _paragraphProperty.get_Ind().get_FirstLine(); + distance = _paragraphProperty.get_Ind().get_FirstLine(), + step, + minValue, + maxValue; - if ($button.hasClass('decrement')) { - distance = Math.max(-999, --distance); + distance = Common.Utils.Metric.fnRecalcFromMM(distance); + + if (Common.Utils.Metric.getCurrentMetric() == Common.Utils.Metric.c_MetricUnits.pt) { + step = 1; } else { - distance = Math.min(999, ++distance); + step = 0.1; } - _paragraphProperty.get_Ind().put_FirstLine(distance) + minValue = Common.Utils.Metric.fnRecalcFromMM(-558.7); + maxValue = Common.Utils.Metric.fnRecalcFromMM(558.7); - $('#paragraph-spin-first-line .item-after label').text(distance + ' ' + metricText); - this.api.paraApply(_paragraphProperty); + if ($button.hasClass('decrement')) { + distance = Math.max(minValue, distance - step); + } else { + distance = Math.min(maxValue, distance + step); + } + + var distanceFix = parseFloat(distance.toFixed(2)); + + $('#paragraph-spin-first-line .item-after label').text(distanceFix + ' ' + metricText); + + distance = Common.Utils.Metric.fnRecalcToMM(distance); + + var newParagraphProp = new Asc.asc_CParagraphProperty(); + + _paragraphProperty.get_Ind().put_FirstLine(distance); + + newParagraphProp.get_Ind().put_FirstLine(distance); + + this.api.paraApply(newParagraphProp); }, onSpaceBetween: function (e) { diff --git a/apps/documenteditor/mobile/app/controller/edit/EditShape.js b/apps/documenteditor/mobile/app/controller/edit/EditShape.js index f432ad22e..e55506676 100644 --- a/apps/documenteditor/mobile/app/controller/edit/EditShape.js +++ b/apps/documenteditor/mobile/app/controller/edit/EditShape.js @@ -171,7 +171,7 @@ define([ var me = this; // me.api && me.api.UpdateInterfaceState(); - + _metricText = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric()); if (_shapeObject) { if (pageId == '#edit-shape-wrap') { me._initWrapView(); @@ -224,7 +224,7 @@ define([ var borderSize = shapeProperties.get_stroke().get_width() * 72.0 / 25.4; var borderType = shapeProperties.get_stroke().get_type(); $('#edit-shape-bordersize input').val([(borderType == Asc.c_oAscStrokeType.STROKE_NONE) ? 0 : borderSizeTransform.indexSizeByValue(borderSize)]); - $('#edit-shape-bordersize .item-after').text(((borderType == Asc.c_oAscStrokeType.STROKE_NONE) ? 0 : borderSizeTransform.sizeByValue(borderSize)) + ' ' + _metricText); + $('#edit-shape-bordersize .item-after').text(((borderType == Asc.c_oAscStrokeType.STROKE_NONE) ? 0 : borderSizeTransform.sizeByValue(borderSize)) + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)); // Init style opacity $('#edit-shape-effect input').val([shapeProperties.get_fill().asc_getTransparent() ? shapeProperties.get_fill().asc_getTransparent() / 2.55 : 100]); @@ -444,7 +444,7 @@ define([ onBorderSizeChanging: function (e) { var $target = $(e.currentTarget); - $('#edit-shape-bordersize .item-after').text(borderSizeTransform.sizeByIndex($target.val()) + ' ' + _metricText); + $('#edit-shape-bordersize .item-after').text(borderSizeTransform.sizeByIndex($target.val()) + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)); }, onOpacity: function (e) { diff --git a/apps/documenteditor/mobile/app/controller/edit/EditTable.js b/apps/documenteditor/mobile/app/controller/edit/EditTable.js index 86b7dde72..1f41d0d35 100644 --- a/apps/documenteditor/mobile/app/controller/edit/EditTable.js +++ b/apps/documenteditor/mobile/app/controller/edit/EditTable.js @@ -185,6 +185,7 @@ define([ initSettings: function (pageId) { var me = this; + _metricText = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric()); if (_tableObject) { if (pageId == '#edit-table-wrap') { @@ -336,7 +337,7 @@ define([ // } $('#edit-table-bordersize input').val([borderSizeTransform.indexSizeByValue(_cellBorderWidth)]); - $('#edit-table-bordersize .item-after').text(borderSizeTransform.sizeByValue(_cellBorderWidth) + ' ' + _metricText); + $('#edit-table-bordersize .item-after').text(borderSizeTransform.sizeByValue(_cellBorderWidth) + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)); var borderPalette = me.getView('EditTable').paletteBorderColor; @@ -613,6 +614,7 @@ define([ me.api.tblApply(properties); }, + onBorderSize: function (e) { var $target = $(e.currentTarget), value = $target.val(); @@ -622,7 +624,7 @@ define([ onBorderSizeChanging: function (e) { var $target = $(e.currentTarget); - $('#edit-table-bordersize .item-after').text(borderSizeTransform.sizeByIndex($target.val()) + ' ' + _metricText); + $('#edit-table-bordersize .item-after').text(borderSizeTransform.sizeByIndex($target.val()) + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)); }, // API handlers @@ -653,8 +655,8 @@ define([ _.each(templates, function(template){ styles.push({ - imageUrl : template.get_Image(), - templateId : template.get_Id() + imageUrl : template.asc_getImage(), + templateId : template.asc_getId() }); }); diff --git a/apps/documenteditor/mobile/app/template/AddOther.template b/apps/documenteditor/mobile/app/template/AddOther.template index 36c324b5c..76c91c506 100644 --- a/apps/documenteditor/mobile/app/template/AddOther.template +++ b/apps/documenteditor/mobile/app/template/AddOther.template @@ -62,6 +62,18 @@ +
    • + +
      +
      + +
      +
      +
      <%= scope.textFootnote %>
      +
      +
      +
      +
    • @@ -258,4 +270,58 @@ + + + +
      + +
      +
      +
      <%= scope.textFormat %>
      +
      +
        +
      +
      +
      +
        +
      • +
        +
        +
        <%= scope.textStartFrom %>
        +
        + <% if (!android) { %><% } %> +

        + <% if (android) { %><% } else { %>-<% } %> + <% if (android) { %><% } %> + <% if (android) { %><% } else { %>+<% } %> +

        +
        +
        +
        +
      • +
      +
      +
      <%= scope.textLocation %>
      +
      +
        +
      +
      +
      + <% if (android) { %> + <%= scope.textInsertFootnote %> + <% } else { %> + + <% } %> +
      +
      +
      \ No newline at end of file diff --git a/apps/documenteditor/mobile/app/template/Settings.template b/apps/documenteditor/mobile/app/template/Settings.template index 0b6717542..cde8bf0fd 100644 --- a/apps/documenteditor/mobile/app/template/Settings.template +++ b/apps/documenteditor/mobile/app/template/Settings.template @@ -41,22 +41,6 @@ -
    • -
      -
      - -
      -
      -
      <%= scope.textSpellcheck %>
      -
      - -
      -
      -
      -
    • <% if (orthography) { %>
    • @@ -71,22 +55,18 @@
    • <% } %> + <% if(width < 360) {%>
    • -
      +
    • + <% } %>
    • @@ -99,6 +79,18 @@
    • +
    • + +
      +
      + +
      +
      +
      <%= scope.textAdvancedSettings %>
      +
      +
      +
      +
    • @@ -225,9 +217,9 @@
      <%= scope.textFormat %>
      -
    • + +
      +
      +
      <%= scope.textMargins %>
      +
      +
      +
      +
    • + -
      <%= scope.textMargins %>
      +
      @@ -353,22 +302,32 @@ -
      <%= scope.textAuthor %>
      -
      +
      <%= scope.textOwner %>
      +
      • -
        <%= scope.textLoading %>
        +
        <%= scope.textLoading %>
      -
      <%= scope.textCreateDate %>
      -
      +
      <%= scope.textLocation %>
      +
      • -
        <%= scope.textLoading %>
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      +
      <%= scope.textUploaded %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
      @@ -408,6 +367,87 @@
      + +
      <%= scope.textTitle %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      +
      <%= scope.textSubject %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      +
      <%= scope.textComment %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      +
      <%= scope.textLastModified %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      +
      <%= scope.textLastModifiedBy %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      +
      <%= scope.textCreated %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      +
      <%= scope.textApplication %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      +
      <%= scope.textAuthor %>
      +
      +
        +
      • +
        +
        <%= scope.textLoading %>
        +
        +
      • +
      +
      @@ -479,6 +519,18 @@ +
    • + +
      +
      + +
      +
      +
      RTF
      +
      +
      +
      +
    • @@ -581,21 +633,242 @@

      DOCUMENT EDITOR

      -

      <%= scope.textVersion %> {{PRODUCT_VERSION}}

      +

      <%= scope.textVersion %> <%= prodversion %>

      + + + + + +
      + +
      +
      +
      + +
      <%= scope.textUnitOfMeasurement %>
      +
      +
        +
      • + +
      • +
      • + +
      • +
      • + +
      • +
      +
      + +
      +
        +
        +
        +
        <%= scope.textSpellcheck %>
        +
        + +
        +
        +
        +
      +
      + +
      +
        +
        +
        +
        <%= scope.textNoCharacters %>
        +
        + +
        +
        +
        +
        +
        +
        <%= scope.textHiddenTableBorders %>
        +
        + +
        +
        +
        +
      +
      + +
      <%= scope.textCommentingDisplay %>
      +
      +
        +
        +
        +
        <%= scope.textDisplayComments %>
        +
        + +
        +
        +
        +
        +
        +
        <%= scope.textDisplayResolvedComments %>
        +
        + +
        +
        +
        +
      +
      + +
      +
      +
      +
      + + +
      + +
      +
      +
      +
      + +
      + +
      +
      +
      +
      + + +
      + +
      +
      +
      +
      +
        +
      • +
        +
        +
        <%= scope.textTop %>
        +
        + <% if (!android) { %><% } %> +

        + <% if (android) { %><% } else { %>-<% } %> + <% if (android) { %><% } %> + <% if (android) { %><% } else { %>+<% } %> +

        +
        +
        +
        +
      • +
      • +
        +
        +
        <%= scope.textBottom %>
        +
        + <% if (!android) { %><% } %> +

        + <% if (android) { %><% } else { %>-<% } %> + <% if (android) { %><% } %> + <% if (android) { %><% } else { %>+<% } %> +

        +
        +
        +
        +
      • +
      • +
        +
        +
        <%= scope.textLeft %>
        +
        + <% if (!android) { %><% } %> +

        + <% if (android) { %><% } else { %>-<% } %> + <% if (android) { %><% } %> + <% if (android) { %><% } else { %>+<% } %> +

        +
        +
        +
        +
      • +
      • +
        +
        +
        <%= scope.textRight %>
        +
        + <% if (!android) { %><% } %> +

        + <% if (android) { %><% } else { %>-<% } %> + <% if (android) { %><% } %> + <% if (android) { %><% } else { %>+<% } %> +

        +
        +
        +
        +
      • +
      diff --git a/apps/documenteditor/mobile/app/template/Toolbar.template b/apps/documenteditor/mobile/app/template/Toolbar.template index 92137c8a0..a1238415a 100644 --- a/apps/documenteditor/mobile/app/template/Toolbar.template +++ b/apps/documenteditor/mobile/app/template/Toolbar.template @@ -42,6 +42,11 @@ <% } %> + <% if (width >= 360) { %> + + <% } %> diff --git a/apps/documenteditor/mobile/app/view/DocumentHolder.js b/apps/documenteditor/mobile/app/view/DocumentHolder.js index b842f656b..c9637f358 100644 --- a/apps/documenteditor/mobile/app/view/DocumentHolder.js +++ b/apps/documenteditor/mobile/app/view/DocumentHolder.js @@ -82,9 +82,14 @@ define([ } var menuItemTemplate = _.template([ - '<% _.each(menuItems, function(item) { %>', - '
    • <%= item.caption %>
    • ', - '<% }); %>' + '<% if(menuItems.itemsIcon) {%>', + '<% _.each(menuItems.itemsIcon, function(item) { %>', + '
    • ', + '<% }); }%>', + '<% if(menuItems.items) {%>', + '<% _.each(menuItems.items, function(item) { %>', + '
    • <%= item.caption %>
    • ', + '<% }); }%>' ].join('')); $('#' + _anchorId) diff --git a/apps/documenteditor/mobile/app/view/Settings.js b/apps/documenteditor/mobile/app/view/Settings.js index 3189471a4..16c8fb0c7 100644 --- a/apps/documenteditor/mobile/app/view/Settings.js +++ b/apps/documenteditor/mobile/app/view/Settings.js @@ -90,7 +90,15 @@ define([ android : Common.SharedSettings.get('android'), phone : Common.SharedSettings.get('phone'), orthography: Common.SharedSettings.get('sailfish'), - scope : this + scope : this, + width : $(window).width(), + prodversion: '{{PRODUCT_VERSION}}', + publishername: '{{PUBLISHER_NAME}}', + publisheraddr: '{{PUBLISHER_ADDRESS}}', + publisherurl: '{{PUBLISHER_URL}}', + printed_url: ("{{PUBLISHER_URL}}").replace(/https?:\/{2}/, "").replace(/\/$/,""), + supportemail: '{{SUPPORT_EMAIL}}', + phonenum: '{{PUBLISHER_PHONE}}' })); return this; @@ -124,6 +132,7 @@ define([ $layour.find('#settings-search .item-title').text(this.textFindAndReplace) } else { $layour.find('#settings-document').hide(); + $layour.find('#color-schemes').hide(); $layour.find('#settings-spellcheck').hide(); $layour.find('#settings-orthography').hide(); } @@ -154,7 +163,8 @@ define([ updateItemHandlers: function () { var selectorsDynamicPage = [ '.page[data-page=settings-root-view]', - '.page[data-page=settings-document-view]' + '.page[data-page=settings-document-view]', + '.page[data-page=settings-advanced-view]' ].map(function (selector) { return selector + ' a.item-link[data-page]'; }).join(', '); @@ -207,8 +217,7 @@ define([ '
      ', '
      <%= item.caption %>
      ', '
      ', - // '
      <%= parseFloat(Common.Utils.Metric.fnRecalcFromMM(item.value[0]).toFixed(2)) %><%= Common.Utils.Metric.getCurrentMetricName() %> x <%= parseFloat(Common.Utils.Metric.fnRecalcFromMM(item.value[1]).toFixed(2)) %> <%= Common.Utils.Metric.getCurrentMetricName() %>
      ', - '
      <%= item.subtitle %>
      ', + '
      <%= parseFloat(Common.Utils.Metric.fnRecalcFromMM(item.value[0]).toFixed(2)) %> <%= Common.Utils.Metric.getCurrentMetricName() %> x <%= parseFloat(Common.Utils.Metric.fnRecalcFromMM(item.value[1]).toFixed(2)) %> <%= Common.Utils.Metric.getCurrentMetricName() %>
      ', '', '', '' @@ -276,7 +285,30 @@ define([ textTop: 'Top', textLeft: 'Left', textBottom: 'Bottom', - textRight: 'Right' + textRight: 'Right', + textAdvancedSettings: 'Application Settings', + textUnitOfMeasurement: 'Unit of Measurement', + textCentimeter: 'Centimeter', + textPoint: 'Point', + textInch: 'Inch', + textColorSchemes: 'Color Schemes', + textNoCharacters: 'Nonprinting Characters', + textHiddenTableBorders: 'Hidden Table Borders', + textCollaboration: 'Collaboration', + textCommentingDisplay: 'Commenting Display', + textDisplayComments: 'Comments', + textDisplayResolvedComments: 'Resolved Comments', + textSubject: 'Subject', + textTitle: 'Title', + textComment: 'Comment', + textOwner: 'Owner', + textApplication : 'Application', + textLocation: 'Location', + textUploaded: 'Uploaded', + textLastModified: 'Last Modified', + textLastModifiedBy: 'Last Modified By', + textCreated: 'Created' + } })(), DE.Views.Settings || {})) diff --git a/apps/documenteditor/mobile/app/view/Toolbar.js b/apps/documenteditor/mobile/app/view/Toolbar.js index 135641431..5bfdd6df8 100644 --- a/apps/documenteditor/mobile/app/view/Toolbar.js +++ b/apps/documenteditor/mobile/app/view/Toolbar.js @@ -63,7 +63,8 @@ define([ "click #toolbar-edit" : "showEdition", "click #toolbar-add" : "showInserts", "click #toolbar-settings" : "showSettings", - "click #toolbar-edit-document": "editDocument" + "click #toolbar-edit-document": "editDocument", + "click #toolbar-collaboration" : "showCollaboration" }, // Set innerHTML and get the references to the DOM elements @@ -89,7 +90,8 @@ define([ android : Common.SharedSettings.get('android'), phone : Common.SharedSettings.get('phone'), backTitle : Common.SharedSettings.get('android') ? '' : me.textBack, - scope : me + scope : me, + width : $(window).width() })); $('.view-main .navbar').on('addClass removeClass', _.bind(me.onDisplayMainNavbar, me)); @@ -150,6 +152,11 @@ define([ DE.getController('Settings').showModal(); }, + //Collaboration + showCollaboration: function () { + DE.getController('Common.Controllers.Collaboration').showModal(); + }, + editDocument: function () { Common.Gateway.requestEditRights(); }, diff --git a/apps/documenteditor/mobile/app/view/add/AddOther.js b/apps/documenteditor/mobile/app/view/add/AddOther.js index 0389eccb7..c5c1afd41 100644 --- a/apps/documenteditor/mobile/app/view/add/AddOther.js +++ b/apps/documenteditor/mobile/app/view/add/AddOther.js @@ -69,6 +69,7 @@ define([ $('#add-other-section').single('click', _.bind(me.showSectionBreak, me)); $('#add-other-link').single('click', _.bind(me.showLink, me)); $('#add-other-pagenumber').single('click', _.bind(me.showPagePosition, me)); + $('#add-other-footnote').single('click', _.bind(me.showPageFootnote, me)); me.initControls(); }, @@ -138,6 +139,62 @@ define([ this.showPage('#addother-pagenumber'); }, + showPageFootnote: function () { + this.showPage('#addother-insert-footnote'); + }, + + renderNumFormat: function (dataFormat, selectFormat) { + var $listFormat = $('#list-format-footnote ul'), + items = []; + + _.each(dataFormat, function (formatItem) { + var itemTemplate = [ + '
    • ', + '', + '
    • ' + ].join(''); + items.push(_.template(itemTemplate)({ + android: Framework7.prototype.device.android, + item: formatItem, + select: selectFormat + })); + }); + + $listFormat.html(items); + }, + + renderFootnotePos: function (dataPosition, selectPosition) { + var $listPos = $('#position-footnote ul'), + items = []; + + _.each(dataPosition, function (posItem) { + var itemTemplate = [ + '
    • ', + '', + '
    • ' + ].join(''); + items.push(_.template(itemTemplate)({ + android: Framework7.prototype.device.android, + item: posItem, + select: selectPosition + })); + }); + + $listPos.html(items); + }, + textPageBreak: 'Page Break', textSectionBreak: 'Section Break', textColumnBreak: 'Column Break', @@ -159,7 +216,12 @@ define([ textNextPage: 'Next Page', textContPage: 'Continuous Page', textEvenPage: 'Even Page', - textOddPage: 'Odd Page' + textOddPage: 'Odd Page', + textFootnote: 'Footnote', + textInsertFootnote: 'Insert Footnote', + textFormat: 'Format', + textStartFrom: 'Start At', + textLocation: 'Location' } diff --git a/apps/documenteditor/mobile/app/view/edit/EditChart.js b/apps/documenteditor/mobile/app/view/edit/EditChart.js index 85d3861da..001a33c7c 100644 --- a/apps/documenteditor/mobile/app/view/edit/EditChart.js +++ b/apps/documenteditor/mobile/app/view/edit/EditChart.js @@ -198,8 +198,8 @@ define([ '<% _.each(styles, function(row) { %>', '
        ', '<% _.each(row, function(style) { %>', - '
      • ', - '', + '
      • ', + '', '
      • ', '<% }); %>', '
      ', diff --git a/apps/documenteditor/mobile/index.html b/apps/documenteditor/mobile/index.html index fd5359bda..5f3b6495a 100644 --- a/apps/documenteditor/mobile/index.html +++ b/apps/documenteditor/mobile/index.html @@ -165,7 +165,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -176,7 +176,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #fff; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -222,6 +222,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; document.write( '
      ' + diff --git a/apps/documenteditor/mobile/index.html.deploy b/apps/documenteditor/mobile/index.html.deploy index 7d031cbcc..dc911efec 100644 --- a/apps/documenteditor/mobile/index.html.deploy +++ b/apps/documenteditor/mobile/index.html.deploy @@ -164,7 +164,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -175,7 +175,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #fff; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -234,6 +234,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; document.write( '
      ' + diff --git a/apps/documenteditor/mobile/locale/bg.json b/apps/documenteditor/mobile/locale/bg.json index 7be665764..ccded751e 100644 --- a/apps/documenteditor/mobile/locale/bg.json +++ b/apps/documenteditor/mobile/locale/bg.json @@ -5,39 +5,35 @@ "Common.Utils.Metric.txtPt": "pt", "DE.Controllers.AddContainer.textImage": "Изображение", "DE.Controllers.AddContainer.textOther": "Друг", - "DE.Controllers.AddContainer.textShape": "форма", - "DE.Controllers.AddContainer.textTable": "маса", + "DE.Controllers.AddContainer.textShape": "Форма", + "DE.Controllers.AddContainer.textTable": "Таблица", "DE.Controllers.AddImage.textEmptyImgUrl": "Трябва да посочите URL адреса на изображението.", "DE.Controllers.AddImage.txtNotUrl": "Това поле трябва да бъде URL адрес във формата „http://www.example.com“", "DE.Controllers.AddOther.txtNotUrl": "Това поле трябва да бъде URL адрес във формата „http://www.example.com“", "DE.Controllers.AddTable.textCancel": "Отказ", - "DE.Controllers.AddTable.textColumns": "колони", + "DE.Controllers.AddTable.textColumns": "Колони", "DE.Controllers.AddTable.textRows": "Редове", "DE.Controllers.AddTable.textTableSize": "Размер на таблицата", - "DE.Controllers.DocumentHolder.menuAccept": "Приемам", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Приемам всичко", "DE.Controllers.DocumentHolder.menuAddLink": "Добавяне на връзка", - "DE.Controllers.DocumentHolder.menuCopy": "копие", + "DE.Controllers.DocumentHolder.menuCopy": "Копие", "DE.Controllers.DocumentHolder.menuCut": "Изрежи", "DE.Controllers.DocumentHolder.menuDelete": "Изтрий", - "DE.Controllers.DocumentHolder.menuEdit": "редактиране", - "DE.Controllers.DocumentHolder.menuMore": "| Повече ▼", + "DE.Controllers.DocumentHolder.menuEdit": "Редактиране", + "DE.Controllers.DocumentHolder.menuMore": "Повече", "DE.Controllers.DocumentHolder.menuOpenLink": "Отвори линк", - "DE.Controllers.DocumentHolder.menuPaste": "паста", - "DE.Controllers.DocumentHolder.menuReject": "Отхвърляне", - "DE.Controllers.DocumentHolder.menuRejectAll": "Отхвърли всички", - "DE.Controllers.DocumentHolder.menuReview": "преглед", + "DE.Controllers.DocumentHolder.menuPaste": "Паста", + "DE.Controllers.DocumentHolder.menuReview": "Преглед", "DE.Controllers.DocumentHolder.sheetCancel": "Отказ", - "DE.Controllers.DocumentHolder.textGuest": "гост", - "DE.Controllers.EditContainer.textChart": "диаграма", - "DE.Controllers.EditContainer.textFooter": "долния", + "DE.Controllers.DocumentHolder.textGuest": "Гост", + "DE.Controllers.EditContainer.textChart": "Диаграма", + "DE.Controllers.EditContainer.textFooter": "Долния", "DE.Controllers.EditContainer.textHeader": "Заглавие", "DE.Controllers.EditContainer.textHyperlink": "Хипервръзка", "DE.Controllers.EditContainer.textImage": "Изображение", - "DE.Controllers.EditContainer.textParagraph": "параграф", + "DE.Controllers.EditContainer.textParagraph": "Параграф", "DE.Controllers.EditContainer.textSettings": "Настройки", - "DE.Controllers.EditContainer.textShape": "форма", - "DE.Controllers.EditContainer.textTable": "маса", + "DE.Controllers.EditContainer.textShape": "Форма", + "DE.Controllers.EditContainer.textTable": "Таблица", "DE.Controllers.EditContainer.textText": "Текст", "DE.Controllers.EditImage.textEmptyImgUrl": "Трябва да посочите URL адреса на изображението.", "DE.Controllers.EditImage.txtNotUrl": "Това поле трябва да бъде URL адрес във формата „http://www.example.com“", @@ -54,7 +50,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Превишава се времето на изтичане на реализация.", "DE.Controllers.Main.criticalErrorExtText": "Натиснете 'OK', за да се върнете към списъка с документи.", "DE.Controllers.Main.criticalErrorTitle": "Грешка", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Редактор на документи", "DE.Controllers.Main.downloadErrorText": "Изтеглянето се провали.", "DE.Controllers.Main.downloadMergeText": "Изтегля се ...", "DE.Controllers.Main.downloadMergeTitle": "Изтеглянето", @@ -63,7 +58,7 @@ "DE.Controllers.Main.errorAccessDeny": "Опитвате се да извършите действие, за което нямате права.
      Моля, свържете се с администратора на сървъра за документи.", "DE.Controllers.Main.errorBadImageUrl": "URL адресът на изображението е неправилен", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Връзката със сървъра е загубена. Вече не можете да редактирате.", - "DE.Controllers.Main.errorConnectToServer": "Документът не можа да бъде запазен. Моля, проверете настройките за връзка или се свържете с администратора си.
      Когато щракнете върху бутона 'OK', ще бъдете подканени да изтеглите документа.

      Намерете повече информация за свързването на сървъра за документи тук ", + "DE.Controllers.Main.errorConnectToServer": "Документът не може да бъде запасен. Моля, проверете настройките за връзка или се свържете с администратора си.
      Когато щракнете върху бутона 'OK', ще бъдете подканени да изтеглите документа.

      Намерете повече информация за свързването на сървър за документи тук", "DE.Controllers.Main.errorDatabaseConnection": "Външна грешка.
      Грешка при свързване към база данни. Моля, свържете се с екипа за поддръжка.", "DE.Controllers.Main.errorDataEncrypted": "Получени са криптирани промени, които не могат да се дефинират.", "DE.Controllers.Main.errorDataRange": "Неправилен обхват от данни.", @@ -76,7 +71,7 @@ "DE.Controllers.Main.errorMailMergeSaveFile": "Сливането не бе успешно.", "DE.Controllers.Main.errorProcessSaveResult": "Запазването е неуспешно.", "DE.Controllers.Main.errorServerVersion": "Версията на редактора е актуализирана. Страницата ще бъде презаредена, за да приложи промените.", - "DE.Controllers.Main.errorStockChart": "Неправилен ред на ред. За изграждане на борсова карта поставете данните на листа в следния ред:
      цена на отваряне, максимална цена, мин. Цена, цена на затваряне.", + "DE.Controllers.Main.errorStockChart": "Неправилен ред на ред. За изграждане на борсова карта поставете данните на листа в следния ред:
      цена на отваряне, максимална цена, мин. цена, цена на затваряне.", "DE.Controllers.Main.errorUpdateVersion": "Версията на файла е променена. Страницата ще бъде презаредена.", "DE.Controllers.Main.errorUserDrop": "Файлът не може да бъде достъпен в момента.", "DE.Controllers.Main.errorUsersExceed": "Превишен е броят на потребителите", @@ -105,17 +100,17 @@ "DE.Controllers.Main.savePreparingTitle": "Подготовка за запазване. Моля Изчакай ... ", "DE.Controllers.Main.saveTextText": "Документът се запазва ...", "DE.Controllers.Main.saveTitleText": "Запазване на документа", - "DE.Controllers.Main.scriptLoadError": "Моля, презаредете страницата.", + "DE.Controllers.Main.scriptLoadError": "Връзката е твърде бавна, някои от компонентите не могат да бъдат заредени. Моля, презаредете страницата.", "DE.Controllers.Main.sendMergeText": "Сливането се изпраща ...", "DE.Controllers.Main.sendMergeTitle": "Изпращане на обединяване", "DE.Controllers.Main.splitDividerErrorText": "Брой на редовете трябва да бъде делител на %1", "DE.Controllers.Main.splitMaxColsErrorText": "Броят на колоните трябва да бъде по-малък от %1", "DE.Controllers.Main.splitMaxRowsErrorText": "Брой на редовете трябва да бъде по-малък от %1", "DE.Controllers.Main.textAnonymous": "Анонимен", - "DE.Controllers.Main.textBack": "обратно", + "DE.Controllers.Main.textBack": "Обратно", "DE.Controllers.Main.textBuyNow": "Посетете уебсайта", "DE.Controllers.Main.textCancel": "Отказ", - "DE.Controllers.Main.textClose": "Близо", + "DE.Controllers.Main.textClose": "Затвори", "DE.Controllers.Main.textContactUs": "Търговски отдел", "DE.Controllers.Main.textCustomLoader": "Моля, имайте предвид, че според условията на лиценза нямате право да сменяте товарача.
      Моля, свържете се с нашия отдел Продажби, за да получите оферта.", "DE.Controllers.Main.textDone": "Завършен", @@ -131,12 +126,12 @@ "DE.Controllers.Main.titleServerVersion": "Редакторът е актуализиран", "DE.Controllers.Main.titleUpdateVersion": "Версията е променена", "DE.Controllers.Main.txtArt": "Вашият текст тук", - "DE.Controllers.Main.txtDiagramTitle": "Заглавие на диалог", + "DE.Controllers.Main.txtDiagramTitle": "Заглавие на диаграмата", "DE.Controllers.Main.txtEditingMode": "Задаване на режим на редактиране ...", - "DE.Controllers.Main.txtFooter": "долния", + "DE.Controllers.Main.txtFooter": "Долния", "DE.Controllers.Main.txtHeader": "Заглавие", "DE.Controllers.Main.txtProtected": "След като въведете паролата и отворите файла, текущата парола за файла ще бъде нулирана", - "DE.Controllers.Main.txtSeries": "серия", + "DE.Controllers.Main.txtSeries": "Серия", "DE.Controllers.Main.txtStyle_footnote_text": "Текст на бележка", "DE.Controllers.Main.txtStyle_Heading_1": "Заглавие 1", "DE.Controllers.Main.txtStyle_Heading_2": "Функция 2", @@ -151,8 +146,8 @@ "DE.Controllers.Main.txtStyle_List_Paragraph": "Параграф Списък", "DE.Controllers.Main.txtStyle_No_Spacing": "Без интервал", "DE.Controllers.Main.txtStyle_Normal": "Нормален", - "DE.Controllers.Main.txtStyle_Quote": "цитат", - "DE.Controllers.Main.txtStyle_Subtitle": "подзаглавие", + "DE.Controllers.Main.txtStyle_Quote": "Цитат", + "DE.Controllers.Main.txtStyle_Subtitle": "Подзаглавие", "DE.Controllers.Main.txtStyle_Title": "Заглавие", "DE.Controllers.Main.txtXAxis": "X ос", "DE.Controllers.Main.txtYAxis": "Y ос", @@ -167,54 +162,54 @@ "DE.Controllers.Main.warnLicenseExceeded": "Броят на едновременните връзки към сървъра за документи е превишен и документът ще бъде отворен само за преглед.
      За повече информация се обърнете към администратора.", "DE.Controllers.Main.warnLicenseExp": "Вашият лиценз е изтекъл.
      Моля, актуализирайте лиценза си и опреснете страницата.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Броят на едновременните потребители е надхвърлен и документът ще бъде отворен само за преглед.
      За повече информация се свържете с администратора си.", - "DE.Controllers.Main.warnNoLicense": "Тази версия на редакторите на ONLYOFFICE има някои ограничения за едновременни връзки към сървъра за документи.", - "DE.Controllers.Main.warnNoLicenseUsers": "Тази версия на редакторите на ONLYOFFICE има определени ограничения за едновременни потребители.", + "DE.Controllers.Main.warnNoLicense": "Тази версия на редакторите на %1 има някои ограничения за едновременни връзки към сървъра за документи.
      Ако имате нужда от повече, моля обмислете закупуването на търговски лиценз.", + "DE.Controllers.Main.warnNoLicenseUsers": "Тази версия на редакторите на %1 има някои ограничения за едновременни потребители.
      Ако имате нужда от повече, моля обмислете закупуването на търговски лиценз.", "DE.Controllers.Main.warnProcessRightsChange": "На вас е отказано правото да редактирате файла.", "DE.Controllers.Search.textNoTextFound": "Текстът не е намерен", "DE.Controllers.Search.textReplaceAll": "Замяна на всички", "DE.Controllers.Settings.notcriticalErrorTitle": "Внимание", "DE.Controllers.Settings.txtLoading": "Зареждане ...", - "DE.Controllers.Settings.unknownText": "неизвестен", + "DE.Controllers.Settings.unknownText": "Неизвестен", "DE.Controllers.Settings.warnDownloadAs": "Ако продължите да записвате в този формат, всички функции, с изключение на текста, ще бъдат загубени.
      Сигурни ли сте, че искате да продължите?", "DE.Controllers.Toolbar.dlgLeaveMsgText": "Имате незапазени промени в този документ. Кликнете върху „Остани на тази страница“, за да изчакате за автоматично запаметяване на документа. Кликнете върху „Оставете тази страница“, за да отхвърлите всички незапазени промени.", "DE.Controllers.Toolbar.dlgLeaveTitleText": "Оставяте заявлението", "DE.Controllers.Toolbar.leaveButtonText": "Излезете от тази страница", "DE.Controllers.Toolbar.stayButtonText": "Остани на тази страница", "DE.Views.AddImage.textAddress": "Адрес", - "DE.Views.AddImage.textBack": "обратно", + "DE.Views.AddImage.textBack": "Обратно", "DE.Views.AddImage.textFromLibrary": "Картина от библиотеката", "DE.Views.AddImage.textFromURL": "Картина от URL адрес", "DE.Views.AddImage.textImageURL": "URL адрес на изображение", "DE.Views.AddImage.textInsertImage": "Вмъкване на изображение", "DE.Views.AddImage.textLinkSettings": "Настройки на връзката", "DE.Views.AddOther.textAddLink": "Добавяне на връзка", - "DE.Views.AddOther.textBack": "обратно", + "DE.Views.AddOther.textBack": "Обратно", "DE.Views.AddOther.textCenterBottom": "Централно доло", "DE.Views.AddOther.textCenterTop": "Център горе", "DE.Views.AddOther.textColumnBreak": "Прекъсване на колони", "DE.Views.AddOther.textContPage": "Непрекъсната страница", "DE.Views.AddOther.textCurrentPos": "Текущата позиция", - "DE.Views.AddOther.textDisplay": "показ", + "DE.Views.AddOther.textDisplay": "Показ", "DE.Views.AddOther.textEvenPage": "Дори страница", "DE.Views.AddOther.textInsert": "Вмъкни", "DE.Views.AddOther.textLeftBottom": "Ляво долу", "DE.Views.AddOther.textLeftTop": "Ляво отгоре", - "DE.Views.AddOther.textLink": "връзка", + "DE.Views.AddOther.textLink": "Връзка", "DE.Views.AddOther.textNextPage": "Следваща страница", "DE.Views.AddOther.textOddPage": "Нечетна страница", "DE.Views.AddOther.textPageBreak": "Разделител на страница", "DE.Views.AddOther.textPageNumber": "Номер на страницата", - "DE.Views.AddOther.textPosition": "позиция", + "DE.Views.AddOther.textPosition": "Позиция", "DE.Views.AddOther.textRightBottom": "Отдясно долу", "DE.Views.AddOther.textRightTop": "Вдясно отгоре", "DE.Views.AddOther.textSectionBreak": "Разделителна секция", "DE.Views.AddOther.textTip": "Съвет на екрана", "DE.Views.EditChart.textAlign": "Изравнете", - "DE.Views.EditChart.textBack": "обратно", + "DE.Views.EditChart.textBack": "Обратно", "DE.Views.EditChart.textBackward": "Преместване назад", - "DE.Views.EditChart.textBehind": "зад", - "DE.Views.EditChart.textBorder": "граница", - "DE.Views.EditChart.textColor": "цвят", + "DE.Views.EditChart.textBehind": "Зад", + "DE.Views.EditChart.textBorder": "Граница", + "DE.Views.EditChart.textColor": "Цвят", "DE.Views.EditChart.textDistanceText": "Разстояние от текста", "DE.Views.EditChart.textFill": "Напълнете", "DE.Views.EditChart.textForward": "Продължавай напред", @@ -226,30 +221,30 @@ "DE.Views.EditChart.textReorder": "Пренареждане", "DE.Views.EditChart.textSize": "Размер", "DE.Views.EditChart.textSquare": "Квадрат", - "DE.Views.EditChart.textStyle": "стил", + "DE.Views.EditChart.textStyle": "Стил", "DE.Views.EditChart.textThrough": "През", - "DE.Views.EditChart.textTight": "стегнат", + "DE.Views.EditChart.textTight": "Стегнат", "DE.Views.EditChart.textToBackground": "Изпращане до фона", "DE.Views.EditChart.textToForeground": "Доведете до преден план", "DE.Views.EditChart.textTopBottom": "Отгоре и отдолу", "DE.Views.EditChart.textType": "Тип", - "DE.Views.EditChart.textWrap": "обвивка", + "DE.Views.EditChart.textWrap": "Обвивка", "DE.Views.EditHeader.textDiffFirst": "Различна първа страница", "DE.Views.EditHeader.textDiffOdd": "Различни страници", "DE.Views.EditHeader.textFrom": "Започни от", "DE.Views.EditHeader.textPageNumbering": "Номериране на страници", "DE.Views.EditHeader.textPrev": "Продължете от предишния раздел", "DE.Views.EditHeader.textSameAs": "Връзка към предишна", - "DE.Views.EditHyperlink.textDisplay": "показ", + "DE.Views.EditHyperlink.textDisplay": "Показ", "DE.Views.EditHyperlink.textEdit": "Редактиране на връзката", - "DE.Views.EditHyperlink.textLink": "връзка", + "DE.Views.EditHyperlink.textLink": "Връзка", "DE.Views.EditHyperlink.textRemove": "Премахване на връзката", "DE.Views.EditHyperlink.textTip": "Съвет на екрана", "DE.Views.EditImage.textAddress": "Адрес", "DE.Views.EditImage.textAlign": "Изравнете", - "DE.Views.EditImage.textBack": "обратно", + "DE.Views.EditImage.textBack": "Обратно", "DE.Views.EditImage.textBackward": "Преместване назад", - "DE.Views.EditImage.textBehind": "зад", + "DE.Views.EditImage.textBehind": "Зад", "DE.Views.EditImage.textDefault": "Размер по подразбиране", "DE.Views.EditImage.textDistanceText": "Разстояние от текста", "DE.Views.EditImage.textForward": "Продължавай напред", @@ -267,16 +262,16 @@ "DE.Views.EditImage.textReplaceImg": "Замяна на изображението", "DE.Views.EditImage.textSquare": "Квадрат", "DE.Views.EditImage.textThrough": "През", - "DE.Views.EditImage.textTight": "стегнат", + "DE.Views.EditImage.textTight": "Стегнат", "DE.Views.EditImage.textToBackground": "Изпращане до фона", "DE.Views.EditImage.textToForeground": "Доведете до преден план", "DE.Views.EditImage.textTopBottom": "Отгоре и отдолу", - "DE.Views.EditImage.textWrap": "обвивка", + "DE.Views.EditImage.textWrap": "Обвивка", "DE.Views.EditParagraph.textAdvanced": "Напреднал", "DE.Views.EditParagraph.textAdvSettings": "Разширени настройки", "DE.Views.EditParagraph.textAfter": "След", "DE.Views.EditParagraph.textAuto": "Автоматичен", - "DE.Views.EditParagraph.textBack": "обратно", + "DE.Views.EditParagraph.textBack": "Обратно", "DE.Views.EditParagraph.textBackground": "Заден план", "DE.Views.EditParagraph.textBefore": "Преди", "DE.Views.EditParagraph.textFirstLine": "Първа линия", @@ -288,67 +283,67 @@ "DE.Views.EditParagraph.textPrgStyles": "Стилове на абзаци", "DE.Views.EditParagraph.textSpaceBetween": "Пространство между параграфи", "DE.Views.EditShape.textAlign": "Изравнете", - "DE.Views.EditShape.textBack": "обратно", + "DE.Views.EditShape.textBack": "Обратно", "DE.Views.EditShape.textBackward": "Преместване назад", - "DE.Views.EditShape.textBehind": "зад", - "DE.Views.EditShape.textBorder": "граница", - "DE.Views.EditShape.textColor": "цвят", - "DE.Views.EditShape.textEffects": "вещи", + "DE.Views.EditShape.textBehind": "Зад", + "DE.Views.EditShape.textBorder": "Граница", + "DE.Views.EditShape.textColor": "Цвят", + "DE.Views.EditShape.textEffects": "Ефекти", "DE.Views.EditShape.textFill": "Напълнете", "DE.Views.EditShape.textForward": "Продължавай напред", "DE.Views.EditShape.textFromText": "Разстояние от текста", "DE.Views.EditShape.textInFront": "Отпред", "DE.Views.EditShape.textInline": "В текста", - "DE.Views.EditShape.textOpacity": "непрозрачност", + "DE.Views.EditShape.textOpacity": "Непрозрачност", "DE.Views.EditShape.textOverlap": "Разрешаване на припокриване", "DE.Views.EditShape.textRemoveShape": "Премахване на формата", "DE.Views.EditShape.textReorder": "Пренареждане", "DE.Views.EditShape.textReplace": "Заменете", "DE.Views.EditShape.textSize": "Размер", "DE.Views.EditShape.textSquare": "Квадрат", - "DE.Views.EditShape.textStyle": "стил", + "DE.Views.EditShape.textStyle": "Стил", "DE.Views.EditShape.textThrough": "През", - "DE.Views.EditShape.textTight": "стегнат", + "DE.Views.EditShape.textTight": "Стегнат", "DE.Views.EditShape.textToBackground": "Изпращане до фона", "DE.Views.EditShape.textToForeground": "Доведете до преден план", "DE.Views.EditShape.textTopAndBottom": "Отгоре и отдолу", "DE.Views.EditShape.textWithText": "Преместване с текст", - "DE.Views.EditShape.textWrap": "обвивка", + "DE.Views.EditShape.textWrap": "Обвивка", "DE.Views.EditTable.textAlign": "Изравнете", - "DE.Views.EditTable.textBack": "обратно", + "DE.Views.EditTable.textBack": "Обратно", "DE.Views.EditTable.textBandedColumn": "Колонна лента", "DE.Views.EditTable.textBandedRow": "Обвързан ред", - "DE.Views.EditTable.textBorder": "граница", + "DE.Views.EditTable.textBorder": "Граница", "DE.Views.EditTable.textCellMargins": "Маржове на клетките", - "DE.Views.EditTable.textColor": "цвят", + "DE.Views.EditTable.textColor": "Цвят", "DE.Views.EditTable.textFill": "Напълнете", "DE.Views.EditTable.textFirstColumn": "Първа колона", "DE.Views.EditTable.textFlow": "Поток", "DE.Views.EditTable.textFromText": "Разстояние от текста", "DE.Views.EditTable.textHeaderRow": "Ред", - "DE.Views.EditTable.textInline": "В редица", + "DE.Views.EditTable.textInline": "В текста", "DE.Views.EditTable.textLastColumn": "Последна колона", "DE.Views.EditTable.textOptions": "Настроики", "DE.Views.EditTable.textRemoveTable": "Премахване на таблицата", "DE.Views.EditTable.textRepeatHeader": "Повторете като ред ред", "DE.Views.EditTable.textResizeFit": "Преоразмерете, за да поберете съдържанието", "DE.Views.EditTable.textSize": "Размер", - "DE.Views.EditTable.textStyle": "стил", + "DE.Views.EditTable.textStyle": "Стил", "DE.Views.EditTable.textStyleOptions": "Опции за стил", "DE.Views.EditTable.textTableOptions": "Опции на таблицата", "DE.Views.EditTable.textTotalRow": "Общо ред", "DE.Views.EditTable.textWithText": "Преместване с текст", - "DE.Views.EditTable.textWrap": "обвивка", + "DE.Views.EditTable.textWrap": "Обвивка", "DE.Views.EditText.textAdditional": "Допълнителен", "DE.Views.EditText.textAdditionalFormat": "Допълнително форматиране", "DE.Views.EditText.textAllCaps": "Всички шапки", "DE.Views.EditText.textAutomatic": "Автоматичен", - "DE.Views.EditText.textBack": "обратно", + "DE.Views.EditText.textBack": "Обратно", "DE.Views.EditText.textBullets": "Маркиран списък", "DE.Views.EditText.textCharacterBold": "П", "DE.Views.EditText.textCharacterItalic": "К", "DE.Views.EditText.textCharacterStrikethrough": "З", - "DE.Views.EditText.textCharacterUnderline": "у", + "DE.Views.EditText.textCharacterUnderline": "У", "DE.Views.EditText.textDblStrikethrough": "Двойно зачертаване", "DE.Views.EditText.textDblSuperscript": "Горен индекс", "DE.Views.EditText.textFontColor": "Цвят на шрифта", @@ -359,14 +354,14 @@ "DE.Views.EditText.textLetterSpacing": "Разстояние между буквите", "DE.Views.EditText.textLineSpacing": "Интервал между редовете", "DE.Views.EditText.textNone": "Нито един", - "DE.Views.EditText.textNumbers": "численост", + "DE.Views.EditText.textNumbers": "Численост", "DE.Views.EditText.textSize": "Размер", "DE.Views.EditText.textSmallCaps": "Малки букви", "DE.Views.EditText.textStrikethrough": "Зачеркнато", "DE.Views.EditText.textSubscript": "Долен", "DE.Views.Search.textCase": "Различаващ главни от малки букви", "DE.Views.Search.textDone": "Завършен", - "DE.Views.Search.textFind": "намирам", + "DE.Views.Search.textFind": "Намирам", "DE.Views.Search.textFindAndReplace": "Намерете и заменете", "DE.Views.Search.textHighlight": "Маркирайте резултатите", "DE.Views.Search.textReplace": "Заменете", @@ -375,7 +370,7 @@ "DE.Views.Settings.textAddress": "адрес", "DE.Views.Settings.textAuthor": "Автор", "DE.Views.Settings.textBack": "Обратно", - "DE.Views.Settings.textBottom": "отдоло", + "DE.Views.Settings.textBottom": "Отдоло", "DE.Views.Settings.textCreateDate": "Дата на създаване ", "DE.Views.Settings.textCustom": "Персонализиран", "DE.Views.Settings.textCustomSize": "Потребителски размер", @@ -388,23 +383,23 @@ "DE.Views.Settings.textDownloadAs": "Изтеглете като ...", "DE.Views.Settings.textEditDoc": "Редактиране на документ", "DE.Views.Settings.textEmail": "електронна поща", - "DE.Views.Settings.textFind": "намирам", + "DE.Views.Settings.textFind": "Намирам", "DE.Views.Settings.textFindAndReplace": "Намерете и заменете", - "DE.Views.Settings.textFormat": "формат", + "DE.Views.Settings.textFormat": "Формат", "DE.Views.Settings.textHelp": "Помощ", - "DE.Views.Settings.textLandscape": "пейзаж", + "DE.Views.Settings.textLandscape": "Пейзаж", "DE.Views.Settings.textLeft": "Наляво", "DE.Views.Settings.textLoading": "Зареждане ...", "DE.Views.Settings.textMargins": "Полета", - "DE.Views.Settings.textOrientation": "ориентация", + "DE.Views.Settings.textOrientation": "Ориентация", "DE.Views.Settings.textPages": "Страници", "DE.Views.Settings.textParagraphs": "Параграфи", "DE.Views.Settings.textPortrait": "Портрет", "DE.Views.Settings.textPoweredBy": "Задвижвани от", - "DE.Views.Settings.textPrint": "печат", + "DE.Views.Settings.textPrint": "Печат", "DE.Views.Settings.textReader": "Режим на четене", "DE.Views.Settings.textReview": "Проследяване на промените", - "DE.Views.Settings.textRight": "прав", + "DE.Views.Settings.textRight": "Прав", "DE.Views.Settings.textSettings": "Настройки", "DE.Views.Settings.textSpaces": "Spaces", "DE.Views.Settings.textSpellcheck": "Проверка на правописа", @@ -412,8 +407,8 @@ "DE.Views.Settings.textSymbols": "Символи", "DE.Views.Settings.textTel": "тел", "DE.Views.Settings.textTop": "Отгоре", - "DE.Views.Settings.textVersion": "версия", + "DE.Views.Settings.textVersion": "Версия", "DE.Views.Settings.textWords": "Думи", - "DE.Views.Settings.unknownText": "неизвестен", + "DE.Views.Settings.unknownText": "Неизвестен", "DE.Views.Toolbar.textBack": "Обратно" } \ No newline at end of file diff --git a/apps/documenteditor/mobile/locale/cs.json b/apps/documenteditor/mobile/locale/cs.json index c64e57e6f..62fab64cf 100644 --- a/apps/documenteditor/mobile/locale/cs.json +++ b/apps/documenteditor/mobile/locale/cs.json @@ -14,7 +14,6 @@ "DE.Controllers.AddTable.textColumns": "Sloupce", "DE.Controllers.AddTable.textRows": "Řádky", "DE.Controllers.AddTable.textTableSize": "Velikost tabulky", - "DE.Controllers.DocumentHolder.menuAccept": "Přijmout", "DE.Controllers.DocumentHolder.menuAddLink": "Přidat odkaz", "DE.Controllers.DocumentHolder.menuCopy": "Kopírovat", "DE.Controllers.DocumentHolder.menuCut": "Vyjmout", @@ -23,7 +22,6 @@ "DE.Controllers.DocumentHolder.menuMore": "Více", "DE.Controllers.DocumentHolder.menuOpenLink": "Otevřít odkaz", "DE.Controllers.DocumentHolder.menuPaste": "Vložit", - "DE.Controllers.DocumentHolder.menuReject": "Odmítnout", "DE.Controllers.DocumentHolder.sheetCancel": "Zrušit", "DE.Controllers.DocumentHolder.textGuest": "Návštěvník", "DE.Controllers.EditContainer.textChart": "Graf", @@ -50,7 +48,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Vypršel čas konverze.", "DE.Controllers.Main.criticalErrorExtText": "Stisknutím tlačítka \"OK\" se vrátíte do seznamu dokumentů.", "DE.Controllers.Main.criticalErrorTitle": "Chyba", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Editor dokumentů", "DE.Controllers.Main.downloadErrorText": "Stahování selhalo.", "DE.Controllers.Main.downloadMergeText": "Stahování...", "DE.Controllers.Main.downloadMergeTitle": "Stahuji", @@ -59,7 +56,7 @@ "DE.Controllers.Main.errorAccessDeny": "Pokoušíte se provést akci, na kterou nemáte oprávnění.
      Prosím, kontaktujte administrátora vašeho Dokumentového serveru.", "DE.Controllers.Main.errorBadImageUrl": "Adresa URL obrázku je nesprávná", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Serverové připojení bylo ztraceno. Nadále nemůžete editovat.", - "DE.Controllers.Main.errorConnectToServer": "Dokument nelze uložit. Prosím, zkontrolujte nastavení vašeho připojení nebo kontaktujte vašeho administrátora.
      Při kliknutí na tlačítko \"OK\" budete vyzváni ke stažení dokumentu.

      Více informací o připojení najdete v Dokumentovém serveru here", + "DE.Controllers.Main.errorConnectToServer": "Dokument nelze uložit. Prosím, zkontrolujte nastavení vašeho připojení nebo kontaktujte vašeho administrátora.
      Při kliknutí na tlačítko \"OK\" budete vyzváni ke stažení dokumentu.

      Více informací o připojení najdete v Dokumentovém serveru here", "DE.Controllers.Main.errorDatabaseConnection": "Externí chyba.
      Chyba připojení k databázi. Prosím, kontaktujte podporu.", "DE.Controllers.Main.errorDataRange": "Nesprávný datový rozsah.", "DE.Controllers.Main.errorDefaultMessage": "Kód chyby: %1", @@ -154,7 +151,7 @@ "DE.Controllers.Main.uploadImageTitleText": "Nahrávání obrázku", "DE.Controllers.Main.waitText": "Čekejte prosím ...", "DE.Controllers.Main.warnLicenseExp": "Platnost vaší licence vypršela.
      Prosím, aktualizujte vaší licenci a obnovte stránku.", - "DE.Controllers.Main.warnNoLicense": "Používáte verzi open source ONLYOFFICE. Verze má omezení pro souběžné připojení k dokumentovému serveru (20 připojení najednou).
      Pokud budete potřebovat více, tak prosím zvažte koupi komerční licence.", + "DE.Controllers.Main.warnNoLicense": "Používáte verzi open source %1. Verze má omezení pro souběžné připojení k dokumentovému serveru (20 připojení najednou).
      Pokud budete potřebovat více, tak prosím zvažte koupi komerční licence.", "DE.Controllers.Main.warnProcessRightsChange": "Bylo Vám odebráno právo upravovat tento soubor.", "DE.Controllers.Search.textNoTextFound": "Text nebyl nalezen", "DE.Controllers.Search.textReplaceAll": "Nahradit vše", diff --git a/apps/documenteditor/mobile/locale/de.json b/apps/documenteditor/mobile/locale/de.json index d5af67d55..d819e8528 100644 --- a/apps/documenteditor/mobile/locale/de.json +++ b/apps/documenteditor/mobile/locale/de.json @@ -14,8 +14,6 @@ "DE.Controllers.AddTable.textColumns": "Spalten", "DE.Controllers.AddTable.textRows": "Zeilen", "DE.Controllers.AddTable.textTableSize": "Tabellengröße", - "DE.Controllers.DocumentHolder.menuAccept": "Annehmen", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Alles annehmen", "DE.Controllers.DocumentHolder.menuAddLink": "Link hinzufügen", "DE.Controllers.DocumentHolder.menuCopy": "Kopieren", "DE.Controllers.DocumentHolder.menuCut": "Ausschneiden", @@ -24,8 +22,6 @@ "DE.Controllers.DocumentHolder.menuMore": "Mehr", "DE.Controllers.DocumentHolder.menuOpenLink": "Link öffnen", "DE.Controllers.DocumentHolder.menuPaste": "Einfügen", - "DE.Controllers.DocumentHolder.menuReject": "Ablehnen", - "DE.Controllers.DocumentHolder.menuRejectAll": "Alles ablehnen", "DE.Controllers.DocumentHolder.menuReview": "Review", "DE.Controllers.DocumentHolder.sheetCancel": "Abbrechen", "DE.Controllers.DocumentHolder.textGuest": "Gast", @@ -54,7 +50,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Timeout für die Konvertierung wurde überschritten.", "DE.Controllers.Main.criticalErrorExtText": "Drücken Sie \"OK\", um zur Dokumentenliste zurückzukehren.", "DE.Controllers.Main.criticalErrorTitle": "Fehler", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Herunterladen ist fehlgeschlagen.", "DE.Controllers.Main.downloadMergeText": "Wird heruntergeladen...", "DE.Controllers.Main.downloadMergeTitle": "Wird heruntergeladen", @@ -63,7 +58,7 @@ "DE.Controllers.Main.errorAccessDeny": "Sie versuchen die Änderungen vorzunehemen, für die Sie keine Berechtigungen haben.
      Wenden Sie sich an Ihren Document Server Serveradministrator.", "DE.Controllers.Main.errorBadImageUrl": "URL des Bildes ist falsch", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Verbindung zum Server ist verloren gegangen. Sie können nicht mehr editieren.", - "DE.Controllers.Main.errorConnectToServer": "Das Dokument konnte nicht gespeichert werden. Bitte überprüfen Sie die Verbindungseinstellungen oder wenden Sie sich an Ihren Administrator.
      Wenn Sie auf die Schaltfläche \"OK\" klicken, werden Sie aufgefordert das Dokument herunterzuladen.

      Mehr Informationen über die Verbindung zum Dokumentenserver finden Sie hier", + "DE.Controllers.Main.errorConnectToServer": "Das Dokument konnte nicht gespeichert werden. Bitte überprüfen Sie die Verbindungseinstellungen oder wenden Sie sich an Ihren Administrator.
      Wenn Sie auf die Schaltfläche \"OK\" klicken, werden Sie aufgefordert das Dokument herunterzuladen.

      Mehr Informationen über die Verbindung zum Dokumentenserver finden Sie hier", "DE.Controllers.Main.errorDatabaseConnection": "Externer Fehler.
      Datenbank-Verbindungsfehler. Wenden Sie sich an den Support.", "DE.Controllers.Main.errorDataEncrypted": "Änderungen wurden verschlüsselt. Sie können nicht entschlüsselt werden.", "DE.Controllers.Main.errorDataRange": "Falscher Datenbereich.", @@ -167,8 +162,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Die Anzahl gleichzeitiger Verbindungen zum Document Server wurde überschritten und das Dokument wird nur zum Anzeigen geöffnet.
      Wenden Sie sich an den Administrator, um weitere Informationen zu erhalten.", "DE.Controllers.Main.warnLicenseExp": "Ihre Lizenz ist abgelaufen.
      Bitte aktualisieren Sie Ihre Lizenz und laden Sie die Seite neu.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Die Anzahl der gleichzeitigen Benutzer wurde überschritten und das Dokument wird nur zum Anzeigen geöffnet.
      Wenden Sie sich an den Administrator, um weitere Informationen zu erhalten.", - "DE.Controllers.Main.warnNoLicense": "Diese Version von ONLYOFFICE Editoren hat gewisse Einschränkungen für gleichzeitige Verbindungen zum Dokumentenserver.
      Wenn Sie mehr Verbindungen benötigen, erwerben Sie eine kommerzielle Lizenz.", - "DE.Controllers.Main.warnNoLicenseUsers": "Diese Version von ONLYOFFICE Editoren hat bestimmte Einschränkungen für gleichzeitige Benutzer.
      Wenn Sie mehr Verbindungen benötigen, erwerben Sie eine kommerzielle Lizenz.", + "DE.Controllers.Main.warnNoLicense": "Diese Version von %1 Editoren hat gewisse Einschränkungen für gleichzeitige Verbindungen zum Dokumentenserver.
      Wenn Sie mehr Verbindungen benötigen, erwerben Sie eine kommerzielle Lizenz.", + "DE.Controllers.Main.warnNoLicenseUsers": "Diese Version von %1 Editoren hat bestimmte Einschränkungen für gleichzeitige Benutzer.
      Wenn Sie mehr Verbindungen benötigen, erwerben Sie eine kommerzielle Lizenz.", "DE.Controllers.Main.warnProcessRightsChange": "Das Recht, die Datei zu bearbeiten, wurde Ihnen verweigert.", "DE.Controllers.Search.textNoTextFound": "Der Text wurde nicht gefunden.", "DE.Controllers.Search.textReplaceAll": "Alle ersetzen", diff --git a/apps/documenteditor/mobile/locale/en.json b/apps/documenteditor/mobile/locale/en.json index c66de9e73..a288509a9 100644 --- a/apps/documenteditor/mobile/locale/en.json +++ b/apps/documenteditor/mobile/locale/en.json @@ -1,34 +1,112 @@ { + "Common.Controllers.Collaboration.textAtLeast": "at least", + "Common.Controllers.Collaboration.textAuto": "auto", + "Common.Controllers.Collaboration.textBaseline": "Baseline", + "Common.Controllers.Collaboration.textBold": "Bold", + "Common.Controllers.Collaboration.textBreakBefore": "Page break before", + "Common.Controllers.Collaboration.textCaps": "All caps", + "Common.Controllers.Collaboration.textCenter": "Align center", + "Common.Controllers.Collaboration.textChart": "Chart", + "Common.Controllers.Collaboration.textColor": "Font color", + "Common.Controllers.Collaboration.textContextual": "Don't add interval between paragraphs of the same style", + "Common.Controllers.Collaboration.textDeleted": "Deleted:", + "Common.Controllers.Collaboration.textDStrikeout": "Double strikeout", + "Common.Controllers.Collaboration.textEditUser": "Document is currently being edited by several users.", + "Common.Controllers.Collaboration.textEquation": "Equation", + "Common.Controllers.Collaboration.textExact": "exactly", + "Common.Controllers.Collaboration.textFirstLine": "First line", + "Common.Controllers.Collaboration.textFormatted": "Formatted", + "Common.Controllers.Collaboration.textHighlight": "Highlight color", + "Common.Controllers.Collaboration.textImage": "Image", + "Common.Controllers.Collaboration.textIndentLeft": "Indent left", + "Common.Controllers.Collaboration.textIndentRight": "Indent right", + "Common.Controllers.Collaboration.textInserted": "Inserted:", + "Common.Controllers.Collaboration.textItalic": "Italic", + "Common.Controllers.Collaboration.textJustify": "Align justify", + "Common.Controllers.Collaboration.textKeepLines": "Keep lines together", + "Common.Controllers.Collaboration.textKeepNext": "Keep with next", + "Common.Controllers.Collaboration.textLeft": "Align left", + "Common.Controllers.Collaboration.textLineSpacing": "Line Spacing: ", + "Common.Controllers.Collaboration.textMultiple": "multiple", + "Common.Controllers.Collaboration.textNoBreakBefore": "No page break before", + "Common.Controllers.Collaboration.textNoContextual": "Add interval between paragraphs of the same style", + "Common.Controllers.Collaboration.textNoKeepLines": "Don't keep lines together", + "Common.Controllers.Collaboration.textNoKeepNext": "Don't keep with next", + "Common.Controllers.Collaboration.textNot": "Not", + "Common.Controllers.Collaboration.textNoWidow": "No widow control", + "Common.Controllers.Collaboration.textNum": "Change numbering", + "Common.Controllers.Collaboration.textParaDeleted": "Paragraph Deleted", + "Common.Controllers.Collaboration.textParaFormatted": "Paragraph Formatted", + "Common.Controllers.Collaboration.textParaInserted": "Paragraph Inserted", + "Common.Controllers.Collaboration.textParaMoveFromDown": "Moved Down:", + "Common.Controllers.Collaboration.textParaMoveFromUp": "Moved Up:", + "Common.Controllers.Collaboration.textParaMoveTo": "Moved:", + "Common.Controllers.Collaboration.textPosition": "Position", + "Common.Controllers.Collaboration.textRight": "Align right", + "Common.Controllers.Collaboration.textShape": "Shape", + "Common.Controllers.Collaboration.textShd": "Background color", + "Common.Controllers.Collaboration.textSmallCaps": "Small caps", + "Common.Controllers.Collaboration.textSpacing": "Spacing", + "Common.Controllers.Collaboration.textSpacingAfter": "Spacing after", + "Common.Controllers.Collaboration.textSpacingBefore": "Spacing before", + "Common.Controllers.Collaboration.textStrikeout": "Strikeout", + "Common.Controllers.Collaboration.textSubScript": "Subscript", + "Common.Controllers.Collaboration.textSuperScript": "Superscript", + "Common.Controllers.Collaboration.textTableChanged": "Table Settings Changed", + "Common.Controllers.Collaboration.textTableRowsAdd": "Table Rows Added", + "Common.Controllers.Collaboration.textTableRowsDel": "Table Rows Deleted", + "Common.Controllers.Collaboration.textTabs": "Change tabs", + "Common.Controllers.Collaboration.textUnderline": "Underline", + "Common.Controllers.Collaboration.textWidow": "Widow control", "Common.UI.ThemeColorPalette.textStandartColors": "Standard Colors", "Common.UI.ThemeColorPalette.textThemeColors": "Theme Colors", "Common.Utils.Metric.txtCm": "cm", "Common.Utils.Metric.txtPt": "pt", + "Common.Views.Collaboration.textAcceptAllChanges": "Accept All Changes", + "Common.Views.Collaboration.textBack": "Back", + "Common.Views.Collaboration.textChange": "Review Change", + "Common.Views.Collaboration.textCollaboration": "Collaboration", + "Common.Views.Collaboration.textDisplayMode": "Display Mode", + "Common.Views.Collaboration.textEditUsers": "Users", + "Common.Views.Collaboration.textFinal": "Final", + "Common.Views.Collaboration.textMarkup": "Markup", + "Common.Views.Collaboration.textNoComments": "This document doesn't contain comments", + "Common.Views.Collaboration.textOriginal": "Original", + "Common.Views.Collaboration.textRejectAllChanges": "Reject All Changes", + "Common.Views.Collaboration.textReview": "Track Changes", + "Common.Views.Collaboration.textReviewing": "Review", + "Common.Views.Collaboration.textСomments": "Сomments", "DE.Controllers.AddContainer.textImage": "Image", "DE.Controllers.AddContainer.textOther": "Other", "DE.Controllers.AddContainer.textShape": "Shape", "DE.Controllers.AddContainer.textTable": "Table", "DE.Controllers.AddImage.textEmptyImgUrl": "You need to specify image URL.", "DE.Controllers.AddImage.txtNotUrl": "This field should be a URL in the 'http://www.example.com' format", + "DE.Controllers.AddOther.textBelowText": "Below Text", + "DE.Controllers.AddOther.textBottomOfPage": "Bottom Of Page", "DE.Controllers.AddOther.txtNotUrl": "This field should be a URL in the 'http://www.example.com' format", "DE.Controllers.AddTable.textCancel": "Cancel", "DE.Controllers.AddTable.textColumns": "Columns", "DE.Controllers.AddTable.textRows": "Rows", "DE.Controllers.AddTable.textTableSize": "Table Size", - "DE.Controllers.DocumentHolder.menuAccept": "Accept", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Accept All", "DE.Controllers.DocumentHolder.menuAddLink": "Add Link", "DE.Controllers.DocumentHolder.menuCopy": "Copy", "DE.Controllers.DocumentHolder.menuCut": "Cut", "DE.Controllers.DocumentHolder.menuDelete": "Delete", + "DE.Controllers.DocumentHolder.menuDeleteTable": "Delete Table", "DE.Controllers.DocumentHolder.menuEdit": "Edit", + "DE.Controllers.DocumentHolder.menuMerge": "Merge Cells", "DE.Controllers.DocumentHolder.menuMore": "More", "DE.Controllers.DocumentHolder.menuOpenLink": "Open Link", "DE.Controllers.DocumentHolder.menuPaste": "Paste", - "DE.Controllers.DocumentHolder.menuReject": "Reject", - "DE.Controllers.DocumentHolder.menuRejectAll": "Reject All", "DE.Controllers.DocumentHolder.menuReview": "Review", + "DE.Controllers.DocumentHolder.menuReviewChange": "Review Change", + "DE.Controllers.DocumentHolder.menuSplit": "Split Cell", "DE.Controllers.DocumentHolder.sheetCancel": "Cancel", + "DE.Controllers.DocumentHolder.textCancel": "Cancel", + "DE.Controllers.DocumentHolder.textColumns": "Columns", "DE.Controllers.DocumentHolder.textGuest": "Guest", + "DE.Controllers.DocumentHolder.textRows": "Rows", "DE.Controllers.EditContainer.textChart": "Chart", "DE.Controllers.EditContainer.textFooter": "Footer", "DE.Controllers.EditContainer.textHeader": "Header", @@ -54,7 +132,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Conversion timeout exceeded.", "DE.Controllers.Main.criticalErrorExtText": "Press 'OK' to return to document list.", "DE.Controllers.Main.criticalErrorTitle": "Error", - "del_DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Download failed.", "DE.Controllers.Main.downloadMergeText": "Downloading...", "DE.Controllers.Main.downloadMergeTitle": "Downloading", @@ -167,8 +244,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "The number of concurrent connections to the document server has been exceeded and the document will be opened for viewing only.
      Please contact your administrator for more information.", "DE.Controllers.Main.warnLicenseExp": "Your license has expired.
      Please update your license and refresh the page.", "DE.Controllers.Main.warnLicenseUsersExceeded": "The number of concurrent users has been exceeded and the document will be opened for viewing only.
      Please contact your administrator for more information.", - "DE.Controllers.Main.warnNoLicense": "This version of %1 Editors has certain limitations for concurrent connections to the document server.
      If you need more please consider purchasing a commercial license.", - "DE.Controllers.Main.warnNoLicenseUsers": "This version of %1 Editors has certain limitations for concurrent users.
      If you need more please consider purchasing a commercial license.", + "DE.Controllers.Main.warnNoLicense": "This version of %1 editors has certain limitations for concurrent connections to the document server.
      If you need more please consider purchasing a commercial license.", + "DE.Controllers.Main.warnNoLicenseUsers": "This version of %1 editors has certain limitations for concurrent users.
      If you need more please consider purchasing a commercial license.", "DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.", "DE.Controllers.Search.textNoTextFound": "Text not Found", "DE.Controllers.Search.textReplaceAll": "Replace All", @@ -176,6 +253,7 @@ "DE.Controllers.Settings.txtLoading": "Loading...", "DE.Controllers.Settings.unknownText": "Unknown", "DE.Controllers.Settings.warnDownloadAs": "If you continue saving in this format all features except the text will be lost.
      Are you sure you want to continue?", + "DE.Controllers.Settings.warnDownloadAsRTF": "If you continue saving in this format some of the formatting might be lost.
      Are you sure you want to continue?", "DE.Controllers.Toolbar.dlgLeaveMsgText": "You have unsaved changes in this document. Click 'Stay on this Page' to await the autosave of the document. Click 'Leave this Page' to discard all the unsaved changes.", "DE.Controllers.Toolbar.dlgLeaveTitleText": "You leave the application", "DE.Controllers.Toolbar.leaveButtonText": "Leave this Page", @@ -196,10 +274,14 @@ "DE.Views.AddOther.textCurrentPos": "Current Position", "DE.Views.AddOther.textDisplay": "Display", "DE.Views.AddOther.textEvenPage": "Even Page", + "DE.Views.AddOther.textFootnote": "Footnote", + "DE.Views.AddOther.textFormat": "Format", "DE.Views.AddOther.textInsert": "Insert", + "DE.Views.AddOther.textInsertFootnote": "Insert Footnote", "DE.Views.AddOther.textLeftBottom": "Left Bottom", "DE.Views.AddOther.textLeftTop": "Left Top", "DE.Views.AddOther.textLink": "Link", + "DE.Views.AddOther.textLocation": "Location", "DE.Views.AddOther.textNextPage": "Next Page", "DE.Views.AddOther.textOddPage": "Odd Page", "DE.Views.AddOther.textPageBreak": "Page Break", @@ -208,6 +290,7 @@ "DE.Views.AddOther.textRightBottom": "Right Bottom", "DE.Views.AddOther.textRightTop": "Right Top", "DE.Views.AddOther.textSectionBreak": "Section Break", + "DE.Views.AddOther.textStartFrom": "Start At", "DE.Views.AddOther.textTip": "Screen Tip", "DE.Views.EditChart.textAlign": "Align", "DE.Views.EditChart.textBack": "Back", @@ -373,12 +456,22 @@ "DE.Views.Search.textSearch": "Search", "DE.Views.Settings.textAbout": "About", "DE.Views.Settings.textAddress": "address", + "DE.Views.Settings.textAdvancedSettings": "Application Settings", + "DE.Views.Settings.textApplication": "Application", "DE.Views.Settings.textAuthor": "Author", "DE.Views.Settings.textBack": "Back", "DE.Views.Settings.textBottom": "Bottom", + "DE.Views.Settings.textCentimeter": "Centimeter", + "DE.Views.Settings.textCollaboration": "Collaboration", + "DE.Views.Settings.textColorSchemes": "Color Schemes", + "DE.Views.Settings.textComment": "Comment", + "DE.Views.Settings.textCommentingDisplay": "Commenting Display", + "DE.Views.Settings.textCreated": "Created", "DE.Views.Settings.textCreateDate": "Creation date", "DE.Views.Settings.textCustom": "Custom", "DE.Views.Settings.textCustomSize": "Custom Size", + "DE.Views.Settings.textDisplayComments": "Comments", + "DE.Views.Settings.textDisplayResolvedComments": "Resolved Comments", "DE.Views.Settings.textDocInfo": "Document Info", "DE.Views.Settings.textDocTitle": "Document title", "DE.Views.Settings.textDocumentFormats": "Document Formats", @@ -392,13 +485,21 @@ "DE.Views.Settings.textFindAndReplace": "Find and Replace", "DE.Views.Settings.textFormat": "Format", "DE.Views.Settings.textHelp": "Help", + "DE.Views.Settings.textHiddenTableBorders": "Hidden Table Borders", + "DE.Views.Settings.textInch": "Inch", "DE.Views.Settings.textLandscape": "Landscape", + "DE.Views.Settings.textLastModified": "Last Modified", + "DE.Views.Settings.textLastModifiedBy": "Last Modified By", "DE.Views.Settings.textLeft": "Left", "DE.Views.Settings.textLoading": "Loading...", + "DE.Views.Settings.textLocation": "Location", "DE.Views.Settings.textMargins": "Margins", + "DE.Views.Settings.textNoCharacters": "Nonprinting Characters", "DE.Views.Settings.textOrientation": "Orientation", + "DE.Views.Settings.textOwner": "Owner", "DE.Views.Settings.textPages": "Pages", "DE.Views.Settings.textParagraphs": "Paragraphs", + "DE.Views.Settings.textPoint": "Point", "DE.Views.Settings.textPortrait": "Portrait", "DE.Views.Settings.textPoweredBy": "Powered by", "DE.Views.Settings.textPrint": "Print", @@ -409,9 +510,13 @@ "DE.Views.Settings.textSpaces": "Spaces", "DE.Views.Settings.textSpellcheck": "Spell Checking", "DE.Views.Settings.textStatistic": "Statistic", + "DE.Views.Settings.textSubject": "Subject", "DE.Views.Settings.textSymbols": "Symbols", "DE.Views.Settings.textTel": "tel", + "DE.Views.Settings.textTitle": "Title", "DE.Views.Settings.textTop": "Top", + "DE.Views.Settings.textUnitOfMeasurement": "Unit of Measurement", + "DE.Views.Settings.textUploaded": "Uploaded", "DE.Views.Settings.textVersion": "Version", "DE.Views.Settings.textWords": "Words", "DE.Views.Settings.unknownText": "Unknown", diff --git a/apps/documenteditor/mobile/locale/es.json b/apps/documenteditor/mobile/locale/es.json index 2ecb227a5..91efacb61 100644 --- a/apps/documenteditor/mobile/locale/es.json +++ b/apps/documenteditor/mobile/locale/es.json @@ -1,34 +1,111 @@ { + "Common.Controllers.Collaboration.textAtLeast": "al menos", + "Common.Controllers.Collaboration.textAuto": "auto", + "Common.Controllers.Collaboration.textBaseline": "Línea de base", + "Common.Controllers.Collaboration.textBold": "Negrita", + "Common.Controllers.Collaboration.textBreakBefore": "Salto de página anterior", + "Common.Controllers.Collaboration.textCaps": "Mayúsculas", + "Common.Controllers.Collaboration.textCenter": "Alinear al centro", + "Common.Controllers.Collaboration.textChart": "Gráfico", + "Common.Controllers.Collaboration.textColor": "Color de fuente", + "Common.Controllers.Collaboration.textContextual": "No añadir intervalo entre párrafos del mismo estilo", + "Common.Controllers.Collaboration.textDeleted": "Eliminado:", + "Common.Controllers.Collaboration.textDStrikeout": "Doble tachado", + "Common.Controllers.Collaboration.textEditUser": "El documento está siendo editado por múltiples usuarios.", + "Common.Controllers.Collaboration.textEquation": "Ecuación", + "Common.Controllers.Collaboration.textExact": "exactamente", + "Common.Controllers.Collaboration.textFirstLine": "Primera línea", + "Common.Controllers.Collaboration.textFormatted": "Formateado", + "Common.Controllers.Collaboration.textHighlight": "Color de resaltado", + "Common.Controllers.Collaboration.textImage": "Imagen", + "Common.Controllers.Collaboration.textIndentLeft": "Sangría izquierda", + "Common.Controllers.Collaboration.textIndentRight": "Sangría derecha", + "Common.Controllers.Collaboration.textInserted": "Insertado:", + "Common.Controllers.Collaboration.textItalic": "Cursiva", + "Common.Controllers.Collaboration.textJustify": "Alinear al ancho", + "Common.Controllers.Collaboration.textKeepLines": "Mantener líneas juntas", + "Common.Controllers.Collaboration.textKeepNext": "Mantener con el siguiente", + "Common.Controllers.Collaboration.textLeft": "Alinear a la izquierda", + "Common.Controllers.Collaboration.textLineSpacing": "Espaciado de línea: ", + "Common.Controllers.Collaboration.textMultiple": "Multiplicador", + "Common.Controllers.Collaboration.textNoBreakBefore": "Sin salto de página anterior", + "Common.Controllers.Collaboration.textNoContextual": "Añadir intervalo entre párrafos del mismo estilo", + "Common.Controllers.Collaboration.textNoKeepLines": "No mantener líneas juntas", + "Common.Controllers.Collaboration.textNoKeepNext": "No mantener con el siguiente", + "Common.Controllers.Collaboration.textNot": "No", + "Common.Controllers.Collaboration.textNoWidow": "Sin widow control", + "Common.Controllers.Collaboration.textNum": "Cambiar numeración", + "Common.Controllers.Collaboration.textParaDeleted": "Párrafo Eliminado ", + "Common.Controllers.Collaboration.textParaFormatted": "Párrafo formateado", + "Common.Controllers.Collaboration.textParaInserted": "Párrafo Insertado ", + "Common.Controllers.Collaboration.textParaMoveFromDown": "Bajado:", + "Common.Controllers.Collaboration.textParaMoveFromUp": "Subido:", + "Common.Controllers.Collaboration.textParaMoveTo": "Movido:", + "Common.Controllers.Collaboration.textPosition": "Posición", + "Common.Controllers.Collaboration.textRight": "Alinear a la derecha", + "Common.Controllers.Collaboration.textShape": "Forma", + "Common.Controllers.Collaboration.textShd": "Color del fondo", + "Common.Controllers.Collaboration.textSmallCaps": "Versalitas", + "Common.Controllers.Collaboration.textSpacing": "Espaciado", + "Common.Controllers.Collaboration.textSpacingAfter": "Espaciado después", + "Common.Controllers.Collaboration.textSpacingBefore": "Espaciado antes", + "Common.Controllers.Collaboration.textStrikeout": "Tachado", + "Common.Controllers.Collaboration.textSubScript": "Subíndice", + "Common.Controllers.Collaboration.textSuperScript": "Superíndice", + "Common.Controllers.Collaboration.textTableChanged": "Se cambió configuración de la tabla", + "Common.Controllers.Collaboration.textTableRowsAdd": "Se añadieron filas de la tabla", + "Common.Controllers.Collaboration.textTableRowsDel": "Se eliminaron filas de la tabla", + "Common.Controllers.Collaboration.textTabs": "Cambiar tabuladores", + "Common.Controllers.Collaboration.textUnderline": "Subrayado", + "Common.Controllers.Collaboration.textWidow": "Widow control", "Common.UI.ThemeColorPalette.textStandartColors": "Colores estándar", "Common.UI.ThemeColorPalette.textThemeColors": "Colores de tema", "Common.Utils.Metric.txtCm": "cm", "Common.Utils.Metric.txtPt": "pt", + "Common.Views.Collaboration.textAcceptAllChanges": "Aceptar todos los cambios", + "Common.Views.Collaboration.textBack": "Atrás", + "Common.Views.Collaboration.textChange": "Revisar cambios", + "Common.Views.Collaboration.textCollaboration": "Colaboración", + "Common.Views.Collaboration.textDisplayMode": "Modo de visualización", + "Common.Views.Collaboration.textEditUsers": "Usuarios", + "Common.Views.Collaboration.textFinal": "Final", + "Common.Views.Collaboration.textMarkup": "Cambios", + "Common.Views.Collaboration.textOriginal": "Original", + "Common.Views.Collaboration.textRejectAllChanges": "Rechazar todos los cambios", + "Common.Views.Collaboration.textReview": "Seguimiento de cambios", + "Common.Views.Collaboration.textReviewing": "Revisión", + "Common.Views.Collaboration.textСomments": "Comentarios", "DE.Controllers.AddContainer.textImage": "Imagen", "DE.Controllers.AddContainer.textOther": "Otro", "DE.Controllers.AddContainer.textShape": "Forma", "DE.Controllers.AddContainer.textTable": "Tabla", "DE.Controllers.AddImage.textEmptyImgUrl": "Hay que especificar URL de imagen.", "DE.Controllers.AddImage.txtNotUrl": "Este campo debe ser URL-dirección en el formato 'http://www.example.com'", + "DE.Controllers.AddOther.textBelowText": "Bajo el texto", + "DE.Controllers.AddOther.textBottomOfPage": "Al pie de la página", "DE.Controllers.AddOther.txtNotUrl": "Este campo debe ser URL-dirección en el formato 'http://www.example.com'", "DE.Controllers.AddTable.textCancel": "Cancelar", "DE.Controllers.AddTable.textColumns": "Columnas", "DE.Controllers.AddTable.textRows": "Filas", "DE.Controllers.AddTable.textTableSize": "Tamaño de tabla", - "DE.Controllers.DocumentHolder.menuAccept": "Aceptar", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Aceptar todo", "DE.Controllers.DocumentHolder.menuAddLink": "Añadir enlace ", "DE.Controllers.DocumentHolder.menuCopy": "Copiar ", "DE.Controllers.DocumentHolder.menuCut": "Cortar", "DE.Controllers.DocumentHolder.menuDelete": "Eliminar", + "DE.Controllers.DocumentHolder.menuDeleteTable": "Borrar tabla", "DE.Controllers.DocumentHolder.menuEdit": "Editar", + "DE.Controllers.DocumentHolder.menuMerge": "Combinar celdas", "DE.Controllers.DocumentHolder.menuMore": "Más", "DE.Controllers.DocumentHolder.menuOpenLink": "Abrir enlace", "DE.Controllers.DocumentHolder.menuPaste": "Pegar", - "DE.Controllers.DocumentHolder.menuReject": "Rechazar", - "DE.Controllers.DocumentHolder.menuRejectAll": "Rechazar todo", "DE.Controllers.DocumentHolder.menuReview": "Revista", + "DE.Controllers.DocumentHolder.menuReviewChange": "Revisar cambios", + "DE.Controllers.DocumentHolder.menuSplit": "Dividir celda", "DE.Controllers.DocumentHolder.sheetCancel": "Cancelar", + "DE.Controllers.DocumentHolder.textCancel": "Cancelar", + "DE.Controllers.DocumentHolder.textColumns": "Columnas", "DE.Controllers.DocumentHolder.textGuest": "Visitante", + "DE.Controllers.DocumentHolder.textRows": "Filas", "DE.Controllers.EditContainer.textChart": "Gráfico", "DE.Controllers.EditContainer.textFooter": "Pie de página", "DE.Controllers.EditContainer.textHeader": "Encabezado", @@ -54,7 +131,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Tiempo de conversión está superado.", "DE.Controllers.Main.criticalErrorExtText": "Pulse 'OK' para volver a la lista de documentos.", "DE.Controllers.Main.criticalErrorTitle": "Error", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Fallo en descarga ", "DE.Controllers.Main.downloadMergeText": "Descargando...", "DE.Controllers.Main.downloadMergeTitle": "Descargando", @@ -63,7 +139,7 @@ "DE.Controllers.Main.errorAccessDeny": "Usted no tiene permisos para realizar la acción que está intentando hacer.
      Por favor, contacte con su Administrador del Servidor de Documentos.", "DE.Controllers.Main.errorBadImageUrl": "URL de imagen es incorrecto", "DE.Controllers.Main.errorCoAuthoringDisconnect": "La conexión al servidor se ha perdido. Usted ya no puede editar.", - "DE.Controllers.Main.errorConnectToServer": "No se consiguió guardar el documento. Por favor, verifique los ajustes de conexión o contacte con su administrador.
      Cuando pulsa el botón 'OK', se le solicitará que descargue el documento.

      Encuentre más información acerca de la conexión de Servidor de Documentos aquí", + "DE.Controllers.Main.errorConnectToServer": "No se consiguió guardar el documento. Por favor, compruebe los ajustes de conexión o póngase en contacto con su administrador.
      Al hacer clic en el botón 'OK' se le solicitará que descargue el documento.

      Encuentre más información acerca de la conexión de Servidor de Documentos aquí", "DE.Controllers.Main.errorDatabaseConnection": "Error externo.
      Error de conexión a la base de datos. Por favor, contacte con el equipo de soporte técnico.", "DE.Controllers.Main.errorDataEncrypted": "Se han recibido cambios cifrados, ellos no pueden ser descifrados.", "DE.Controllers.Main.errorDataRange": "Rango de datos incorrecto.", @@ -120,7 +196,7 @@ "DE.Controllers.Main.textCustomLoader": "Note, por favor, que según los términos de la licencia Usted no tiene derecho a cambiar el cargador.
      Por favor, póngase en contacto con nuestro Departamento de Ventas para obtener una cotización.", "DE.Controllers.Main.textDone": "Listo", "DE.Controllers.Main.textLoadingDocument": "Cargando documento", - "DE.Controllers.Main.textNoLicenseTitle": "Limitación de conexiones ONLYOFFICE", + "DE.Controllers.Main.textNoLicenseTitle": "%1 limitación de conexiones", "DE.Controllers.Main.textOK": "OK", "DE.Controllers.Main.textPaidFeature": "Función de pago", "DE.Controllers.Main.textPassword": "Contraseña", @@ -167,8 +243,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Se ha excedido el número permitido de las conexiones simultáneas al servidor de documentos, y el documento se abrirá para sólo lectura.
      Por favor, contacte con su administrador para recibir más información.", "DE.Controllers.Main.warnLicenseExp": "Su licencia ha expirado.
      Por favor, actualice su licencia y después recargue la página.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Se ha excedido el número permitido de los usuarios simultáneos, y el documento se abrirá para sólo lectura.
      Por favor, contacte con su administrador para recibir más información.", - "DE.Controllers.Main.warnNoLicense": "Esta versión de los Editores de ONLYOFFICE tiene ciertas limitaciones para el número de conexiones simultáneas al servidor de documentos.
      Si se requiere más, por favor, considere comprar una licencia comercial.", - "DE.Controllers.Main.warnNoLicenseUsers": "Esta versión de Editores de ONLYOFFICE tiene ciertas limitaciones para usuarios simultáneos.
      Si se requiere más, por favor, considere comprar una licencia comercial.", + "DE.Controllers.Main.warnNoLicense": "Esta versión de los editores de %1 tiene ciertas limitaciones para el número de conexiones simultáneas al servidor de documentos.
      Si se requiere más, por favor, considere comprar una licencia comercial.", + "DE.Controllers.Main.warnNoLicenseUsers": "Esta versión de editores %1 tiene ciertas limitaciones para usuarios simultáneos.
      Si necesita más, por favor, considere comprar una licencia comercial.", "DE.Controllers.Main.warnProcessRightsChange": "El derecho de edición del archivo es denegado.", "DE.Controllers.Search.textNoTextFound": "Texto no es encontrado", "DE.Controllers.Search.textReplaceAll": "Reemplazar todo", @@ -196,10 +272,14 @@ "DE.Views.AddOther.textCurrentPos": "Posición actual", "DE.Views.AddOther.textDisplay": "Mostrar", "DE.Views.AddOther.textEvenPage": "Página par", + "DE.Views.AddOther.textFootnote": "Nota al pie", + "DE.Views.AddOther.textFormat": "Formato", "DE.Views.AddOther.textInsert": "Insertar", + "DE.Views.AddOther.textInsertFootnote": "Insertar nota al pie", "DE.Views.AddOther.textLeftBottom": "Abajo a la izquierda", "DE.Views.AddOther.textLeftTop": "Arriba a la izquierda", "DE.Views.AddOther.textLink": "Enlace", + "DE.Views.AddOther.textLocation": "Ubicación", "DE.Views.AddOther.textNextPage": "Página siguiente", "DE.Views.AddOther.textOddPage": "Página impar", "DE.Views.AddOther.textPageBreak": "Salto de página ", @@ -208,6 +288,7 @@ "DE.Views.AddOther.textRightBottom": "Abajo a la derecha", "DE.Views.AddOther.textRightTop": "Arriba a la derecha", "DE.Views.AddOther.textSectionBreak": "Salto de sección", + "DE.Views.AddOther.textStartFrom": "Empezar con", "DE.Views.AddOther.textTip": "Consejos de pantalla", "DE.Views.EditChart.textAlign": "Alineación", "DE.Views.EditChart.textBack": "Atrás", @@ -373,9 +454,12 @@ "DE.Views.Search.textSearch": "Buscar", "DE.Views.Settings.textAbout": "Acerca", "DE.Views.Settings.textAddress": "dirección", + "DE.Views.Settings.textAdvancedSettings": "Ajustes de aplicación", "DE.Views.Settings.textAuthor": "Autor", "DE.Views.Settings.textBack": "Atrás", "DE.Views.Settings.textBottom": "Abajo ", + "DE.Views.Settings.textCentimeter": "Centímetro", + "DE.Views.Settings.textColorSchemes": "Esquemas de color", "DE.Views.Settings.textCreateDate": "Fecha de creación", "DE.Views.Settings.textCustom": "Personalizado", "DE.Views.Settings.textCustomSize": "Tamaño personalizado", @@ -392,13 +476,17 @@ "DE.Views.Settings.textFindAndReplace": "Encontrar y reemplazar", "DE.Views.Settings.textFormat": "Formato", "DE.Views.Settings.textHelp": "Ayuda", + "DE.Views.Settings.textHiddenTableBorders": "Bordes de tabla escondidos", + "DE.Views.Settings.textInch": "Pulgada", "DE.Views.Settings.textLandscape": "Horizontal", "DE.Views.Settings.textLeft": "A la izquierda", "DE.Views.Settings.textLoading": "Cargando...", "DE.Views.Settings.textMargins": "Márgenes", + "DE.Views.Settings.textNoCharacters": "Caracteres no imprimibles", "DE.Views.Settings.textOrientation": "Orientación ", "DE.Views.Settings.textPages": "Páginas", "DE.Views.Settings.textParagraphs": "Párrafos", + "DE.Views.Settings.textPoint": "Punto", "DE.Views.Settings.textPortrait": "Vertical", "DE.Views.Settings.textPoweredBy": "Desarrollado por", "DE.Views.Settings.textPrint": "Imprimir", @@ -412,6 +500,7 @@ "DE.Views.Settings.textSymbols": "Símbolos", "DE.Views.Settings.textTel": "Tel.", "DE.Views.Settings.textTop": "Superior", + "DE.Views.Settings.textUnitOfMeasurement": "Unidad de medida", "DE.Views.Settings.textVersion": "Versión ", "DE.Views.Settings.textWords": "Palabras", "DE.Views.Settings.unknownText": "Desconocido", diff --git a/apps/documenteditor/mobile/locale/fr.json b/apps/documenteditor/mobile/locale/fr.json index 689e3de1e..a2d221d55 100644 --- a/apps/documenteditor/mobile/locale/fr.json +++ b/apps/documenteditor/mobile/locale/fr.json @@ -1,34 +1,111 @@ { + "Common.Controllers.Collaboration.textAtLeast": "au moins ", + "Common.Controllers.Collaboration.textAuto": "auto", + "Common.Controllers.Collaboration.textBaseline": "Ligne de base", + "Common.Controllers.Collaboration.textBold": "Gras", + "Common.Controllers.Collaboration.textBreakBefore": "Saut de page avant", + "Common.Controllers.Collaboration.textCaps": "Tout en majuscules", + "Common.Controllers.Collaboration.textCenter": "Aligner au centre", + "Common.Controllers.Collaboration.textChart": "Graphique", + "Common.Controllers.Collaboration.textColor": "Couleur de police", + "Common.Controllers.Collaboration.textContextual": "Ne pas ajouter d'intervalle entre paragraphes du même style", + "Common.Controllers.Collaboration.textDeleted": "Supprimé:", + "Common.Controllers.Collaboration.textDStrikeout": "Double-barré", + "Common.Controllers.Collaboration.textEditUser": "Document est en cours de modification par plusieurs utilisateurs.", + "Common.Controllers.Collaboration.textEquation": "Équation", + "Common.Controllers.Collaboration.textExact": "exactement", + "Common.Controllers.Collaboration.textFirstLine": "Première ligne", + "Common.Controllers.Collaboration.textFormatted": "Formaté", + "Common.Controllers.Collaboration.textHighlight": "Couleur de surlignage", + "Common.Controllers.Collaboration.textImage": "Image", + "Common.Controllers.Collaboration.textIndentLeft": "Retrait à gauche", + "Common.Controllers.Collaboration.textIndentRight": "Retrait à droite", + "Common.Controllers.Collaboration.textInserted": "Inséré:", + "Common.Controllers.Collaboration.textItalic": "Italique", + "Common.Controllers.Collaboration.textJustify": "Justifier ", + "Common.Controllers.Collaboration.textKeepLines": "Lignes solidaires", + "Common.Controllers.Collaboration.textKeepNext": "Paragraphes solidaires", + "Common.Controllers.Collaboration.textLeft": "Aligner à gauche", + "Common.Controllers.Collaboration.textLineSpacing": "Interligne:", + "Common.Controllers.Collaboration.textMultiple": "multiple ", + "Common.Controllers.Collaboration.textNoBreakBefore": "Pas de saut de page avant", + "Common.Controllers.Collaboration.textNoContextual": "Ajouter un intervalle entre les paragraphes du même style", + "Common.Controllers.Collaboration.textNoKeepLines": "Ne gardez pas de lignes ensemble", + "Common.Controllers.Collaboration.textNoKeepNext": "Ne gardez pas avec la prochaine", + "Common.Controllers.Collaboration.textNot": "Non", + "Common.Controllers.Collaboration.textNoWidow": "Pas de contrôle des veuves", + "Common.Controllers.Collaboration.textNum": "Changer la numérotation", + "Common.Controllers.Collaboration.textParaDeleted": "Paragraphe supprimé ", + "Common.Controllers.Collaboration.textParaFormatted": "Paragraphe Formaté", + "Common.Controllers.Collaboration.textParaInserted": "Paragraphe inséré ", + "Common.Controllers.Collaboration.textParaMoveFromDown": "Déplacé vers le bas:", + "Common.Controllers.Collaboration.textParaMoveFromUp": "Déplacé vers le haut:", + "Common.Controllers.Collaboration.textParaMoveTo": "Déplacé:", + "Common.Controllers.Collaboration.textPosition": "Position", + "Common.Controllers.Collaboration.textRight": "Aligner à droite", + "Common.Controllers.Collaboration.textShape": "Forme", + "Common.Controllers.Collaboration.textShd": "Couleur d'arrière-plan", + "Common.Controllers.Collaboration.textSmallCaps": "Petites majuscules", + "Common.Controllers.Collaboration.textSpacing": "Espacement", + "Common.Controllers.Collaboration.textSpacingAfter": "Espacement après", + "Common.Controllers.Collaboration.textSpacingBefore": "Espacement avant", + "Common.Controllers.Collaboration.textStrikeout": "Barré", + "Common.Controllers.Collaboration.textSubScript": "Indice", + "Common.Controllers.Collaboration.textSuperScript": "Exposant", + "Common.Controllers.Collaboration.textTableChanged": "Paramètres du tableau modifiés", + "Common.Controllers.Collaboration.textTableRowsAdd": "Lignes de tableau ajoutées", + "Common.Controllers.Collaboration.textTableRowsDel": "Lignes de tableau supprimées", + "Common.Controllers.Collaboration.textTabs": "Changer les tabulations", + "Common.Controllers.Collaboration.textUnderline": "Souligné", + "Common.Controllers.Collaboration.textWidow": "Contrôle des veuves", "Common.UI.ThemeColorPalette.textStandartColors": "Couleurs standard", "Common.UI.ThemeColorPalette.textThemeColors": "Couleurs de thème", "Common.Utils.Metric.txtCm": "cm", "Common.Utils.Metric.txtPt": "pt", + "Common.Views.Collaboration.textAcceptAllChanges": "Accepter toutes les modifications", + "Common.Views.Collaboration.textBack": "Retour", + "Common.Views.Collaboration.textChange": "Réviser modifications", + "Common.Views.Collaboration.textCollaboration": "Collaboration", + "Common.Views.Collaboration.textDisplayMode": "Mode d'affichage", + "Common.Views.Collaboration.textEditUsers": "Utilisateurs", + "Common.Views.Collaboration.textFinal": "Final", + "Common.Views.Collaboration.textMarkup": "Balisage", + "Common.Views.Collaboration.textOriginal": "Original", + "Common.Views.Collaboration.textRejectAllChanges": "Refuser toutes les modifications ", + "Common.Views.Collaboration.textReview": "Suivi des modifications", + "Common.Views.Collaboration.textReviewing": "Révision", + "Common.Views.Collaboration.textСomments": "Commentaires", "DE.Controllers.AddContainer.textImage": "Image", "DE.Controllers.AddContainer.textOther": "Autre", "DE.Controllers.AddContainer.textShape": "Forme", "DE.Controllers.AddContainer.textTable": "Tableau", "DE.Controllers.AddImage.textEmptyImgUrl": "Spécifiez URL de l'image", "DE.Controllers.AddImage.txtNotUrl": "Ce champ doit être une URL de la forme suivante: 'http://www.example.com'", + "DE.Controllers.AddOther.textBelowText": "Sous le texte", + "DE.Controllers.AddOther.textBottomOfPage": "Bas de page", "DE.Controllers.AddOther.txtNotUrl": "Ce champ doit être une URL de la forme suivante: 'http://www.example.com'", "DE.Controllers.AddTable.textCancel": "Annuler", "DE.Controllers.AddTable.textColumns": "Colonnes", "DE.Controllers.AddTable.textRows": "Lignes", "DE.Controllers.AddTable.textTableSize": "Taille du tableau", - "DE.Controllers.DocumentHolder.menuAccept": "Accepter", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Accepter tout", "DE.Controllers.DocumentHolder.menuAddLink": "Ajouter le lien", "DE.Controllers.DocumentHolder.menuCopy": "Copier", "DE.Controllers.DocumentHolder.menuCut": "Couper", "DE.Controllers.DocumentHolder.menuDelete": "Supprimer", + "DE.Controllers.DocumentHolder.menuDeleteTable": "Supprimer le tableau", "DE.Controllers.DocumentHolder.menuEdit": "Modifier", + "DE.Controllers.DocumentHolder.menuMerge": "Fusionner les cellules", "DE.Controllers.DocumentHolder.menuMore": "Plus", "DE.Controllers.DocumentHolder.menuOpenLink": "Ouvrir le lien", "DE.Controllers.DocumentHolder.menuPaste": "Coller", - "DE.Controllers.DocumentHolder.menuReject": "Rejeter", - "DE.Controllers.DocumentHolder.menuRejectAll": "Rejeter tout", "DE.Controllers.DocumentHolder.menuReview": "Révision", + "DE.Controllers.DocumentHolder.menuReviewChange": "Réviser modifications", + "DE.Controllers.DocumentHolder.menuSplit": "Fractionner la cellule", "DE.Controllers.DocumentHolder.sheetCancel": "Annuler", + "DE.Controllers.DocumentHolder.textCancel": "Annuler", + "DE.Controllers.DocumentHolder.textColumns": "Colonnes", "DE.Controllers.DocumentHolder.textGuest": "Invité", + "DE.Controllers.DocumentHolder.textRows": "Lignes", "DE.Controllers.EditContainer.textChart": "Graphique", "DE.Controllers.EditContainer.textFooter": "Pied de page", "DE.Controllers.EditContainer.textHeader": "En-tête", @@ -54,7 +131,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Délai de conversion expiré.", "DE.Controllers.Main.criticalErrorExtText": "Appuyez sur OK pour revenir à la liste des documents.", "DE.Controllers.Main.criticalErrorTitle": "Erreur", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Échec du téléchargement.", "DE.Controllers.Main.downloadMergeText": "Téléchargement en cours...", "DE.Controllers.Main.downloadMergeTitle": "Téléchargement en cours", @@ -63,7 +139,7 @@ "DE.Controllers.Main.errorAccessDeny": "Vous tentez d'exéсuter une action pour laquelle vous ne disposez pas des droits.
      Veuillez contacter l'administrateur de Document Server.", "DE.Controllers.Main.errorBadImageUrl": "L'URL de l'image est incorrecte", "DE.Controllers.Main.errorCoAuthoringDisconnect": "La connexion au serveur perdue. Désolé, vous ne pouvez plus modifier le document.", - "DE.Controllers.Main.errorConnectToServer": "Impossible d'enregistrer le document. Veuillez vérifier vos paramètres de connexion ou contactez l'administrateur.
      Lorsque vous cliquez sur le bouton 'OK', vous serez invité à télécharger le document.

      Trouvez plus d'informations sur la connexion au Serveur de Documents ici", + "DE.Controllers.Main.errorConnectToServer": "Impossible d'enregistrer le document. Veuillez vérifier vos paramètres de connexion ou contactez l'administrateur.
      Lorsque vous cliquez sur le bouton 'OK', vous serez invité à télécharger le document.

      Trouvez plus d'informations sur la connexion au Serveur de Documents ici", "DE.Controllers.Main.errorDatabaseConnection": "Erreur externe.
      Erreur de connexion à la base de données.Contactez le support.", "DE.Controllers.Main.errorDataEncrypted": "Les modifications chiffrées ont été reçues, elle ne peuvent pas être déchiffrées.", "DE.Controllers.Main.errorDataRange": "Plage de données incorrecte.", @@ -167,8 +243,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Le nombre de connexions simultanées sur le serveur de documents a été dépassée et le document sera ouvert en mode lecture seule.
      Veuillez contacter votre administrateur pour plus d'informations.", "DE.Controllers.Main.warnLicenseExp": "Votre licence a expiré.
      Veuillez mettre à jour votre licence et actualisez la page.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Le nombre d'utilisateurs simultanés a été dépassé et le document sera ouvert en mode lecture seule.
      Veuillez contacter votre administrateur pour plus d'informations.", - "DE.Controllers.Main.warnNoLicense": "Cette version de ONLYOFFICE Editors a certaines limitations pour les connexions simultanées au serveur de documents.
      Si vous avez besoin de plus, pensez à mettre à jour votre licence actuelle ou à acheter une licence commerciale.", - "DE.Controllers.Main.warnNoLicenseUsers": "Cette version de ONLYOFFICE Editors a certaines limitations pour les utilisateurs simultanés.
      Si vous avez besoin de plus, pensez à mettre à jour votre licence actuelle ou à acheter une licence commerciale.", + "DE.Controllers.Main.warnNoLicense": "Cette version de %1 editors a certaines limitations pour les connexions simultanées au serveur de documents.
      Si vous avez besoin de plus, pensez à mettre à jour votre licence actuelle ou à acheter une licence commerciale.", + "DE.Controllers.Main.warnNoLicenseUsers": "Cette version de %1 editors a certaines limitations pour les utilisateurs simultanés.
      Si vous avez besoin de plus, pensez à mettre à jour votre licence actuelle ou à acheter une licence commerciale.", "DE.Controllers.Main.warnProcessRightsChange": "Le droit d'édition du fichier vous a été refusé.", "DE.Controllers.Search.textNoTextFound": "Le texte est introuvable", "DE.Controllers.Search.textReplaceAll": "Remplacer tout", @@ -196,10 +272,14 @@ "DE.Views.AddOther.textCurrentPos": "Position actuelle", "DE.Views.AddOther.textDisplay": "Afficher", "DE.Views.AddOther.textEvenPage": "Page paire", + "DE.Views.AddOther.textFootnote": "Note de bas de page", + "DE.Views.AddOther.textFormat": "Format", "DE.Views.AddOther.textInsert": "Insérer", + "DE.Views.AddOther.textInsertFootnote": "Insérer une note de bas de page", "DE.Views.AddOther.textLeftBottom": "À gauche en bas", "DE.Views.AddOther.textLeftTop": "À gauche en haut", "DE.Views.AddOther.textLink": "Lien", + "DE.Views.AddOther.textLocation": "Emplacement", "DE.Views.AddOther.textNextPage": "Page suivante", "DE.Views.AddOther.textOddPage": "Page impaire", "DE.Views.AddOther.textPageBreak": "Saut de page", @@ -208,6 +288,7 @@ "DE.Views.AddOther.textRightBottom": "À droite en bas", "DE.Views.AddOther.textRightTop": "À droite en haut", "DE.Views.AddOther.textSectionBreak": "Saut de section", + "DE.Views.AddOther.textStartFrom": "À partir de", "DE.Views.AddOther.textTip": "Info-bulle", "DE.Views.EditChart.textAlign": "Aligner", "DE.Views.EditChart.textBack": "Retour", @@ -373,9 +454,12 @@ "DE.Views.Search.textSearch": "Rechercher", "DE.Views.Settings.textAbout": "A propos", "DE.Views.Settings.textAddress": "adresse", + "DE.Views.Settings.textAdvancedSettings": "Paramètres de l'application", "DE.Views.Settings.textAuthor": "Auteur", "DE.Views.Settings.textBack": "Retour", "DE.Views.Settings.textBottom": "En bas", + "DE.Views.Settings.textCentimeter": "Centimètre", + "DE.Views.Settings.textColorSchemes": "Jeux de couleurs", "DE.Views.Settings.textCreateDate": "Date de création", "DE.Views.Settings.textCustom": "Personnalisé", "DE.Views.Settings.textCustomSize": "Taille personnalisée", @@ -392,13 +476,17 @@ "DE.Views.Settings.textFindAndReplace": "Rechercher et remplacer", "DE.Views.Settings.textFormat": "Format", "DE.Views.Settings.textHelp": "Aide", + "DE.Views.Settings.textHiddenTableBorders": "Bordures du tableau cachées", + "DE.Views.Settings.textInch": "Pouce", "DE.Views.Settings.textLandscape": "Paysage", "DE.Views.Settings.textLeft": "A gauche", "DE.Views.Settings.textLoading": "Chargement en cours...", "DE.Views.Settings.textMargins": "Marges", + "DE.Views.Settings.textNoCharacters": "Caractères non imprimables", "DE.Views.Settings.textOrientation": "Orientation", "DE.Views.Settings.textPages": "Pages", "DE.Views.Settings.textParagraphs": "Paragraphes", + "DE.Views.Settings.textPoint": "Point", "DE.Views.Settings.textPortrait": "Portrait", "DE.Views.Settings.textPoweredBy": "Propulsé par ", "DE.Views.Settings.textPrint": "Imprimer", @@ -412,6 +500,7 @@ "DE.Views.Settings.textSymbols": "Symboles", "DE.Views.Settings.textTel": "Tél.", "DE.Views.Settings.textTop": "En haut", + "DE.Views.Settings.textUnitOfMeasurement": "Unité de mesure", "DE.Views.Settings.textVersion": "Version", "DE.Views.Settings.textWords": "Mots", "DE.Views.Settings.unknownText": "Inconnu", diff --git a/apps/documenteditor/mobile/locale/hu.json b/apps/documenteditor/mobile/locale/hu.json index adba17967..edb1c6a8d 100644 --- a/apps/documenteditor/mobile/locale/hu.json +++ b/apps/documenteditor/mobile/locale/hu.json @@ -14,8 +14,6 @@ "DE.Controllers.AddTable.textColumns": "Oszlopok", "DE.Controllers.AddTable.textRows": "Sorok", "DE.Controllers.AddTable.textTableSize": "Táblázat méret", - "DE.Controllers.DocumentHolder.menuAccept": "Elfogad", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Mindent elfogad", "DE.Controllers.DocumentHolder.menuAddLink": "Link hozzáadása", "DE.Controllers.DocumentHolder.menuCopy": "Másol", "DE.Controllers.DocumentHolder.menuCut": "Kivág", @@ -24,8 +22,6 @@ "DE.Controllers.DocumentHolder.menuMore": "Még", "DE.Controllers.DocumentHolder.menuOpenLink": "Link megnyitása", "DE.Controllers.DocumentHolder.menuPaste": "Beilleszt", - "DE.Controllers.DocumentHolder.menuReject": "Elutasít", - "DE.Controllers.DocumentHolder.menuRejectAll": "Elutasít mindent", "DE.Controllers.DocumentHolder.menuReview": "Összefoglaló", "DE.Controllers.DocumentHolder.sheetCancel": "Mégse", "DE.Controllers.DocumentHolder.textGuest": "Vendég", @@ -54,7 +50,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Időtúllépés az átalakítás során.", "DE.Controllers.Main.criticalErrorExtText": "Nyomja meg az \"OK\"-t a dokumentumok listájához.", "DE.Controllers.Main.criticalErrorTitle": "Hiba", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Dokumentum Szerkesztő", "DE.Controllers.Main.downloadErrorText": "Sikertelen letöltés.", "DE.Controllers.Main.downloadMergeText": "Letöltés...", "DE.Controllers.Main.downloadMergeTitle": "Letöltés", @@ -63,7 +58,7 @@ "DE.Controllers.Main.errorAccessDeny": "Olyan műveletet próbál végrehajtani, melyre nincs jogosultsága.
      Vegye fel a kapcsolatot a Document Server adminisztrátorával.", "DE.Controllers.Main.errorBadImageUrl": "Hibás kép URL", "DE.Controllers.Main.errorCoAuthoringDisconnect": "A szerver elveszítette a kapcsolatot. A további szerkesztés nem lehetséges.", - "DE.Controllers.Main.errorConnectToServer": "A dokumentum mentése nem lehetséges. Kérjük ellenőrizze a kapcsolódási beállításokat vagy lépjen kapcsolatba a rendszer adminisztrátorral.
      Ha az 'OK'-ra kattint letöltheti a dokumentumot.

      Bővebb információk a Dokumentum Szerverhez kapcsolódásról itt találhat.", + "DE.Controllers.Main.errorConnectToServer": "A dokumentum mentése nem lehetséges. Kérjük ellenőrizze a kapcsolódási beállításokat vagy lépjen kapcsolatba a rendszer adminisztrátorral.
      Ha az 'OK'-ra kattint letöltheti a dokumentumot.

      Bővebb információk a Dokumentum Szerverhez kapcsolódásról itt találhat.", "DE.Controllers.Main.errorDatabaseConnection": "Külső hiba.
      Adatbázis kapcsolati hiba. Kérem vegye igénybe támogatásunkat.", "DE.Controllers.Main.errorDataEncrypted": "Titkosított változások érkeztek, melyek feloldása sikertelen.", "DE.Controllers.Main.errorDataRange": "Hibás adattartomány.", @@ -166,8 +161,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "A párhuzamos kapcsolódások száma elérte a maximumot, így a dokumentum csak olvasható módban nyílik meg.
      Kérjük lépjen kapcsolatba a rendszer adminisztrátorral bővebb információkért.", "DE.Controllers.Main.warnLicenseExp": "A licence lejárt.
      Kérem frissítse a licencét, majd az oldalt.", "DE.Controllers.Main.warnLicenseUsersExceeded": "A párhuzamos felhasználók száma elérte a maximumot, így a dokumentum csak olvasható módban nyílik meg.
      Kérjük lépjen kapcsolatba a rendszer adminisztrátorral bővebb információkért.", - "DE.Controllers.Main.warnNoLicense": "Ez a verziója az ONLYOFFICE Szerkesztőnek bizonyos limitációkat tartalmaz párhuzamos kapcsolódások terén a dokumentum szerverhez.
      Amennyiben többre van szüksége, fontolja meg hogy kereskedelmi licenc megvásárlását.", - "DE.Controllers.Main.warnNoLicenseUsers": "Ez a verziója az ONLYOFFICE Szerkesztőnek bizonyos limitációkat tartalmaz párhuzamosan kapcsolódott felhasználók terén.
      Amennyiben többre van szüksége, fontolja meg hogy kereskedelmi licenc megvásárlását.", + "DE.Controllers.Main.warnNoLicense": "Ez a verziója az %1 szerkesztőnek bizonyos limitációkat tartalmaz párhuzamos kapcsolódások terén a dokumentum szerverhez.
      Amennyiben többre van szüksége, fontolja meg hogy kereskedelmi licenc megvásárlását.", + "DE.Controllers.Main.warnNoLicenseUsers": "Ez a verziója az %1 szerkesztőnek bizonyos limitációkat tartalmaz párhuzamosan kapcsolódott felhasználók terén.
      Amennyiben többre van szüksége, fontolja meg hogy kereskedelmi licenc megvásárlását.", "DE.Controllers.Main.warnProcessRightsChange": "Nincs joga szerkeszteni a fájl-t.", "DE.Controllers.Search.textNoTextFound": "A szöveg nem található", "DE.Controllers.Search.textReplaceAll": "Mindent cserél", diff --git a/apps/documenteditor/mobile/locale/it.json b/apps/documenteditor/mobile/locale/it.json index 20640b972..6b9168263 100644 --- a/apps/documenteditor/mobile/locale/it.json +++ b/apps/documenteditor/mobile/locale/it.json @@ -1,34 +1,110 @@ { + "Common.Controllers.Collaboration.textAtLeast": "Minima", + "Common.Controllers.Collaboration.textAuto": "auto", + "Common.Controllers.Collaboration.textBaseline": "Linea guida", + "Common.Controllers.Collaboration.textBold": "Grassetto", + "Common.Controllers.Collaboration.textBreakBefore": "Anteponi interruzione", + "Common.Controllers.Collaboration.textCaps": "Tutto maiuscolo", + "Common.Controllers.Collaboration.textCenter": "Allinea al centro", + "Common.Controllers.Collaboration.textChart": "Grafico", + "Common.Controllers.Collaboration.textColor": "Colore del carattere", + "Common.Controllers.Collaboration.textContextual": "Non aggiungere intervallo tra paragrafi dello stesso stile", + "Common.Controllers.Collaboration.textDeleted": "Eliminato:", + "Common.Controllers.Collaboration.textDStrikeout": "Doppio barrato", + "Common.Controllers.Collaboration.textEditUser": "È in corso la modifica del documento da parte di più utenti.", + "Common.Controllers.Collaboration.textEquation": "Equazione", + "Common.Controllers.Collaboration.textExact": "Esatto", + "Common.Controllers.Collaboration.textFirstLine": "Prima riga", + "Common.Controllers.Collaboration.textFormatted": "Formattato", + "Common.Controllers.Collaboration.textHighlight": "Colore evidenziatore", + "Common.Controllers.Collaboration.textImage": "Immagine", + "Common.Controllers.Collaboration.textIndentLeft": "Rientro a sinistra", + "Common.Controllers.Collaboration.textIndentRight": "Rientro a destra", + "Common.Controllers.Collaboration.textInserted": "Inserito:", + "Common.Controllers.Collaboration.textItalic": "Corsivo", + "Common.Controllers.Collaboration.textJustify": "Giustificato", + "Common.Controllers.Collaboration.textKeepLines": "Mantieni assieme le righe", + "Common.Controllers.Collaboration.textKeepNext": "Mantieni con il successivo", + "Common.Controllers.Collaboration.textLeft": "Allinea a sinistra", + "Common.Controllers.Collaboration.textLineSpacing": "Interlinea:", + "Common.Controllers.Collaboration.textMultiple": "multiplo", + "Common.Controllers.Collaboration.textNoBreakBefore": "Nessuna interruzione di pagina prima", + "Common.Controllers.Collaboration.textNoContextual": "Aggiungi intervallo tra paragrafi dello stesso stile", + "Common.Controllers.Collaboration.textNoKeepLines": "Non tenere insieme le linee", + "Common.Controllers.Collaboration.textNoKeepNext": "Non tenere dal prossimo", + "Common.Controllers.Collaboration.textNot": "Not ", + "Common.Controllers.Collaboration.textNum": "Modifica numerazione", + "Common.Controllers.Collaboration.textParaDeleted": "Paragrafo eliminato ", + "Common.Controllers.Collaboration.textParaFormatted": "Paragrafo formattato ", + "Common.Controllers.Collaboration.textParaInserted": "Paragrafo inserito ", + "Common.Controllers.Collaboration.textParaMoveFromDown": "Spostato in basso:", + "Common.Controllers.Collaboration.textParaMoveFromUp": "Spostato in alto:", + "Common.Controllers.Collaboration.textParaMoveTo": "Spostato:", + "Common.Controllers.Collaboration.textPosition": "Posizione", + "Common.Controllers.Collaboration.textRight": "Allinea a destra", + "Common.Controllers.Collaboration.textShape": "Forma", + "Common.Controllers.Collaboration.textShd": "Colore sfondo", + "Common.Controllers.Collaboration.textSmallCaps": "Maiuscoletto", + "Common.Controllers.Collaboration.textSpacing": "Spaziatura", + "Common.Controllers.Collaboration.textSpacingAfter": "Spaziatura dopo", + "Common.Controllers.Collaboration.textSpacingBefore": "Spaziatura prima", + "Common.Controllers.Collaboration.textStrikeout": "Barrato", + "Common.Controllers.Collaboration.textSubScript": "Pedice", + "Common.Controllers.Collaboration.textSuperScript": "Apice", + "Common.Controllers.Collaboration.textTableChanged": "Impostazioni tabella modificate", + "Common.Controllers.Collaboration.textTableRowsAdd": "Righe tabella aggiunte", + "Common.Controllers.Collaboration.textTableRowsDel": "Righe tabella eliminate", + "Common.Controllers.Collaboration.textTabs": "Modifica Schede", + "Common.Controllers.Collaboration.textUnderline": "Sottolineato", "Common.UI.ThemeColorPalette.textStandartColors": "Colori standard", "Common.UI.ThemeColorPalette.textThemeColors": "Colori del tema", "Common.Utils.Metric.txtCm": "cm", "Common.Utils.Metric.txtPt": "pt", + "Common.Views.Collaboration.textAcceptAllChanges": "Accetta tutte le modifiche", + "Common.Views.Collaboration.textBack": "Indietro", + "Common.Views.Collaboration.textChange": "Modifica revisione", + "Common.Views.Collaboration.textCollaboration": "Collaborazione", + "Common.Views.Collaboration.textDisplayMode": "Modalità Visualizzazione", + "Common.Views.Collaboration.textEditUsers": "Utenti", + "Common.Views.Collaboration.textFinal": "Finale", + "Common.Views.Collaboration.textMarkup": "Marcatura", + "Common.Views.Collaboration.textNoComments": "Questo documento non contiene commenti", + "Common.Views.Collaboration.textOriginal": "Originale", + "Common.Views.Collaboration.textRejectAllChanges": "Annulla tutte le modifiche", + "Common.Views.Collaboration.textReview": "Traccia cambiamenti", + "Common.Views.Collaboration.textReviewing": "Revisione", + "Common.Views.Collaboration.textСomments": "Сommenti", "DE.Controllers.AddContainer.textImage": "Immagine", "DE.Controllers.AddContainer.textOther": "Altro", "DE.Controllers.AddContainer.textShape": "Forma", "DE.Controllers.AddContainer.textTable": "Tabella", "DE.Controllers.AddImage.textEmptyImgUrl": "Specifica URL immagine.", "DE.Controllers.AddImage.txtNotUrl": "Questo campo dovrebbe contenere un URL nel formato 'http://www.example.com'", + "DE.Controllers.AddOther.textBelowText": "Sotto al testo", + "DE.Controllers.AddOther.textBottomOfPage": "Fondo pagina", "DE.Controllers.AddOther.txtNotUrl": "Questo campo dovrebbe contenere un URL nel formato 'http://www.example.com'", "DE.Controllers.AddTable.textCancel": "Annulla", "DE.Controllers.AddTable.textColumns": "Colonne", "DE.Controllers.AddTable.textRows": "Righe", "DE.Controllers.AddTable.textTableSize": "Dimensioni tabella", - "DE.Controllers.DocumentHolder.menuAccept": "Accetta", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Accetta tutto", "DE.Controllers.DocumentHolder.menuAddLink": "Aggiungi collegamento", "DE.Controllers.DocumentHolder.menuCopy": "Copia", "DE.Controllers.DocumentHolder.menuCut": "Taglia", "DE.Controllers.DocumentHolder.menuDelete": "Elimina", + "DE.Controllers.DocumentHolder.menuDeleteTable": "Elimina tabella", "DE.Controllers.DocumentHolder.menuEdit": "Modifica", + "DE.Controllers.DocumentHolder.menuMerge": "Unisci celle", "DE.Controllers.DocumentHolder.menuMore": "Altro", "DE.Controllers.DocumentHolder.menuOpenLink": "Apri collegamento", "DE.Controllers.DocumentHolder.menuPaste": "Incolla", - "DE.Controllers.DocumentHolder.menuReject": "Respingi", - "DE.Controllers.DocumentHolder.menuRejectAll": "Respingi tutti", "DE.Controllers.DocumentHolder.menuReview": "Revisione", + "DE.Controllers.DocumentHolder.menuReviewChange": "Modifica revisione", + "DE.Controllers.DocumentHolder.menuSplit": "Dividi cella", "DE.Controllers.DocumentHolder.sheetCancel": "Annulla", + "DE.Controllers.DocumentHolder.textCancel": "Annulla", + "DE.Controllers.DocumentHolder.textColumns": "Colonne", "DE.Controllers.DocumentHolder.textGuest": "Ospite", + "DE.Controllers.DocumentHolder.textRows": "Righe", "DE.Controllers.EditContainer.textChart": "Grafico", "DE.Controllers.EditContainer.textFooter": "Piè di pagina", "DE.Controllers.EditContainer.textHeader": "Intestazione", @@ -54,7 +130,6 @@ "DE.Controllers.Main.convertationTimeoutText": "È stato superato il tempo limite della conversione.", "DE.Controllers.Main.criticalErrorExtText": "Clicca 'OK' per tornare alla lista documento", "DE.Controllers.Main.criticalErrorTitle": "Errore", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Scaricamento fallito", "DE.Controllers.Main.downloadMergeText": "Scaricamento in corso...", "DE.Controllers.Main.downloadMergeTitle": "Scaricamento", @@ -63,7 +138,7 @@ "DE.Controllers.Main.errorAccessDeny": "Stai tentando di eseguire un'azione per la quale non disponi di permessi sufficienti.
      Si prega di contattare l'amministratore del Server dei Documenti.", "DE.Controllers.Main.errorBadImageUrl": "URL dell'immagine non corretto", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Scollegato dal server. Non è possibile modificare.", - "DE.Controllers.Main.errorConnectToServer": "Il documento non può essere salvato. Controllare le impostazioni di rete o contatta l'Amministratore.
      Quando clicchi 'OK' Ti verrà richiesto di scaricare il documento.

      Per maggiori dettagli sulla connessione al Document Server clicca qui", + "DE.Controllers.Main.errorConnectToServer": "Il documento non può essere salvato. Controllare le impostazioni di rete o contatta l'Amministratore.
      Quando clicchi 'OK' Ti verrà richiesto di scaricare il documento.

      Per maggiori dettagli sulla connessione al Document Server clicca qui", "DE.Controllers.Main.errorDatabaseConnection": "Errore esterno.
      Errore di connessione al database. Si prega di contattare il supporto.", "DE.Controllers.Main.errorDataEncrypted": "Le modifiche crittografate sono state ricevute, non possono essere decifrate.", "DE.Controllers.Main.errorDataRange": "Intervallo di dati non corretto.", @@ -120,7 +195,7 @@ "DE.Controllers.Main.textCustomLoader": "Si noti che in base ai termini della licenza non si ha il diritto di cambiare il caricatore.
      Si prega di contattare il nostro ufficio vendite per ottenere un preventivo.", "DE.Controllers.Main.textDone": "Fatto", "DE.Controllers.Main.textLoadingDocument": "Caricamento del documento", - "DE.Controllers.Main.textNoLicenseTitle": "ONLYOFFICE® limite connessione", + "DE.Controllers.Main.textNoLicenseTitle": "%1 limite connessione", "DE.Controllers.Main.textOK": "OK", "DE.Controllers.Main.textPaidFeature": "Caratteristica a pagamento", "DE.Controllers.Main.textPassword": "Password", @@ -167,8 +242,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Il numero di connessioni simultanee al server dei documenti è stato superato e il documento verrà aperto solo per la visualizzazione.
      Contattare l'amministratore per ulteriori informazioni.", "DE.Controllers.Main.warnLicenseExp": "La tua licenza è scaduta.
      Si prega di aggiornare la licenza e ricaricare la pagina.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Il numero di utenti simultaei è stato superato e il documento verrà aperto solo per la visualizzazione.
      Per ulteriori informazioni, contattare l'amministratore.", - "DE.Controllers.Main.warnNoLicense": "Questa versione di ONLYOFFICE® Editors presenta delle limitazioni per le connessioni simultanee al server dei documenti.
      Se necessiti di avere di più, considera l'acquisto di una licenza commerciale.", - "DE.Controllers.Main.warnNoLicenseUsers": "Questa versione di ONLYOFFICE Editors presenta alcune limitazioni per gli utenti simultanei.
      Se hai bisogno di più, ti preghiamo di considerare l'aggiornamento della tua licenza attuale o l'acquisto di una licenza commerciale.", + "DE.Controllers.Main.warnNoLicense": "Questa versione di %1 editors presenta delle limitazioni per le connessioni simultanee al server dei documenti.
      Se necessiti di avere di più, considera l'acquisto di una licenza commerciale.", + "DE.Controllers.Main.warnNoLicenseUsers": "Questa versione di %1 editors presenta delle limitazioni per le connessioni simultanee al server dei documenti.
      Se necessiti di avere di più, considera l'acquisto di una licenza commerciale.", "DE.Controllers.Main.warnProcessRightsChange": "Ti è stato negato il diritto di modificare il file.", "DE.Controllers.Search.textNoTextFound": "Testo non trovato", "DE.Controllers.Search.textReplaceAll": "Sostituisci tutto", @@ -176,6 +251,7 @@ "DE.Controllers.Settings.txtLoading": "Caricamento in corso...", "DE.Controllers.Settings.unknownText": "Sconosciuto", "DE.Controllers.Settings.warnDownloadAs": "Se continui a salvare in questo formato tutte le funzioni eccetto il testo vengono perse.
      Sei sicuro di voler continuare?", + "DE.Controllers.Settings.warnDownloadAsRTF": "Se si continua a salvare in questo formato, parte della formattazione potrebbe andare persa.
      Vuoi continuare?", "DE.Controllers.Toolbar.dlgLeaveMsgText": "Ci sono delle modifiche non salvate in questo documento. Clicca su 'Rimani in questa pagina, in attesa del salvataggio automatico del documento. Clicca su 'Lascia questa pagina' per annullare le modifiche.", "DE.Controllers.Toolbar.dlgLeaveTitleText": "Lascia l'applicazione", "DE.Controllers.Toolbar.leaveButtonText": "Lascia la pagina", @@ -196,10 +272,14 @@ "DE.Views.AddOther.textCurrentPos": "Posizione attuale", "DE.Views.AddOther.textDisplay": "Visualizza", "DE.Views.AddOther.textEvenPage": "Pagina pari", + "DE.Views.AddOther.textFootnote": "Note a piè di pagina", + "DE.Views.AddOther.textFormat": "Formato", "DE.Views.AddOther.textInsert": "Inserisci", + "DE.Views.AddOther.textInsertFootnote": "Inserisci nota a piè di pagina", "DE.Views.AddOther.textLeftBottom": "In basso a sinistra", "DE.Views.AddOther.textLeftTop": "In alto a sinistra", "DE.Views.AddOther.textLink": "Collegamento", + "DE.Views.AddOther.textLocation": "Posizione", "DE.Views.AddOther.textNextPage": "Pagina successiva", "DE.Views.AddOther.textOddPage": "Pagina dispari", "DE.Views.AddOther.textPageBreak": "Dividi pagina", @@ -208,6 +288,7 @@ "DE.Views.AddOther.textRightBottom": "In basso a destra", "DE.Views.AddOther.textRightTop": "In alto a destra", "DE.Views.AddOther.textSectionBreak": "Interrompi sezione", + "DE.Views.AddOther.textStartFrom": "Inizia da", "DE.Views.AddOther.textTip": "Suggerimento ", "DE.Views.EditChart.textAlign": "Allinea", "DE.Views.EditChart.textBack": "Indietro", @@ -373,12 +454,22 @@ "DE.Views.Search.textSearch": "Cerca", "DE.Views.Settings.textAbout": "Informazioni su", "DE.Views.Settings.textAddress": "indirizzo", + "DE.Views.Settings.textAdvancedSettings": "Impostazioni Applicazione", + "DE.Views.Settings.textApplication": "Applicazione", "DE.Views.Settings.textAuthor": "Autore", "DE.Views.Settings.textBack": "Indietro", "DE.Views.Settings.textBottom": "In basso", + "DE.Views.Settings.textCentimeter": "Centimetro", + "DE.Views.Settings.textCollaboration": "Collaborazione", + "DE.Views.Settings.textColorSchemes": "Schemi di colore", + "DE.Views.Settings.textComment": "Commento", + "DE.Views.Settings.textCommentingDisplay": "Visualizzazione dei Commenti", + "DE.Views.Settings.textCreated": "Creato", "DE.Views.Settings.textCreateDate": "Data di creazione", "DE.Views.Settings.textCustom": "Personalizzato", "DE.Views.Settings.textCustomSize": "Dimensione personalizzata", + "DE.Views.Settings.textDisplayComments": "Commenti", + "DE.Views.Settings.textDisplayResolvedComments": "Commenti risolti", "DE.Views.Settings.textDocInfo": "Informazioni sul documento", "DE.Views.Settings.textDocTitle": "Titolo documento", "DE.Views.Settings.textDocumentFormats": "Formati del documento", @@ -392,13 +483,21 @@ "DE.Views.Settings.textFindAndReplace": "Trova e sostituisci", "DE.Views.Settings.textFormat": "Formato", "DE.Views.Settings.textHelp": "Guida", + "DE.Views.Settings.textHiddenTableBorders": "Bordi tabella nascosti", + "DE.Views.Settings.textInch": "Pollice", "DE.Views.Settings.textLandscape": "Orizzontale", + "DE.Views.Settings.textLastModified": "Ultima modifica", + "DE.Views.Settings.textLastModifiedBy": "Ultima modifica di", "DE.Views.Settings.textLeft": "A sinistra", "DE.Views.Settings.textLoading": "Caricamento in corso...", + "DE.Views.Settings.textLocation": "Percorso", "DE.Views.Settings.textMargins": "Margini", + "DE.Views.Settings.textNoCharacters": "Caratteri non stampabili", "DE.Views.Settings.textOrientation": "Orientamento", + "DE.Views.Settings.textOwner": "Proprietario", "DE.Views.Settings.textPages": "Pagine", "DE.Views.Settings.textParagraphs": "Paragrafi", + "DE.Views.Settings.textPoint": "Punto", "DE.Views.Settings.textPortrait": "Verticale", "DE.Views.Settings.textPoweredBy": "Con tecnologia", "DE.Views.Settings.textPrint": "Stampa", @@ -409,9 +508,13 @@ "DE.Views.Settings.textSpaces": "Spazi", "DE.Views.Settings.textSpellcheck": "Controllo ortografia", "DE.Views.Settings.textStatistic": "Statistica", + "DE.Views.Settings.textSubject": "Oggetto", "DE.Views.Settings.textSymbols": "Simboli", "DE.Views.Settings.textTel": "Tel.", + "DE.Views.Settings.textTitle": "Titolo documento", "DE.Views.Settings.textTop": "In alto", + "DE.Views.Settings.textUnitOfMeasurement": "Unità di misura", + "DE.Views.Settings.textUploaded": "Caricato", "DE.Views.Settings.textVersion": "Versione", "DE.Views.Settings.textWords": "Parole", "DE.Views.Settings.unknownText": "Sconosciuto", diff --git a/apps/documenteditor/mobile/locale/ko.json b/apps/documenteditor/mobile/locale/ko.json index 412efcd6f..c60cfa83e 100644 --- a/apps/documenteditor/mobile/locale/ko.json +++ b/apps/documenteditor/mobile/locale/ko.json @@ -22,9 +22,12 @@ "DE.Controllers.DocumentHolder.menuMore": "More", "DE.Controllers.DocumentHolder.menuOpenLink": "링크 열기", "DE.Controllers.DocumentHolder.menuPaste": "붙여 넣기", + "DE.Controllers.DocumentHolder.menuReview": "다시보기", "DE.Controllers.DocumentHolder.sheetCancel": "취소", "DE.Controllers.DocumentHolder.textGuest": "Guest", "DE.Controllers.EditContainer.textChart": "차트", + "DE.Controllers.EditContainer.textFooter": "꼬리말", + "DE.Controllers.EditContainer.textHeader": "머리글", "DE.Controllers.EditContainer.textHyperlink": "하이퍼 링크", "DE.Controllers.EditContainer.textImage": "이미지", "DE.Controllers.EditContainer.textParagraph": "단락", @@ -43,10 +46,10 @@ "DE.Controllers.Main.advTxtOptions": "TXT 옵션 선택", "DE.Controllers.Main.applyChangesTextText": "데이터로드 중 ...", "DE.Controllers.Main.applyChangesTitleText": "데이터로드 중", + "DE.Controllers.Main.closeButtonText": "파일 닫기", "DE.Controllers.Main.convertationTimeoutText": "전환 시간 초과를 초과했습니다.", "DE.Controllers.Main.criticalErrorExtText": "문서 목록으로 돌아가려면 '확인'을 누르십시오.", "DE.Controllers.Main.criticalErrorTitle": "오류", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE 문서 편집기", "DE.Controllers.Main.downloadErrorText": "다운로드하지 못했습니다.", "DE.Controllers.Main.downloadMergeText": "다운로드 중 ...", "DE.Controllers.Main.downloadMergeTitle": "다운로드 중", @@ -54,10 +57,11 @@ "DE.Controllers.Main.downloadTitleText": "문서 다운로드 중", "DE.Controllers.Main.errorBadImageUrl": "이미지 URL이 잘못되었습니다.", "DE.Controllers.Main.errorCoAuthoringDisconnect": "서버 연결이 끊어졌습니다. 더 이상 편집 할 수 없습니다.", - "DE.Controllers.Main.errorConnectToServer": "문서를 저장할 수 없습니다. 연결 설정을 확인하거나 관리자에게 문의하십시오.
      '확인'버튼을 클릭하면 문서를 다운로드하라는 메시지가 나타납니다.

      Document Server 연결에 대한 추가 정보 찾기 여기 ", + "DE.Controllers.Main.errorConnectToServer": "문서를 저장할 수 없습니다. 연결 설정을 확인하거나 관리자에게 문의하십시오.
      '확인'버튼을 클릭하면 문서를 다운로드하라는 메시지가 나타납니다.

      Document Server 연결에 대한 추가 정보 찾기 여기 ", "DE.Controllers.Main.errorDatabaseConnection": "외부 오류입니다.
      데이터베이스 연결 오류입니다. 지원팀에 문의하십시오.", "DE.Controllers.Main.errorDataRange": "잘못된 데이터 범위입니다.", "DE.Controllers.Main.errorDefaultMessage": "오류 코드 : % 1", + "DE.Controllers.Main.errorEditingDownloadas": "문서에 작업하는 도중에 에러가 발생했습니다.
      '다운로드' 옵션을 사용해서 컴퓨터에 백업본을 저장해 주세요.", "DE.Controllers.Main.errorFilePassProtect": "이 문서는 암호로 보호되어있어 열 수 없습니다.", "DE.Controllers.Main.errorKeyEncrypt": "알 수없는 키 설명자", "DE.Controllers.Main.errorKeyExpire": "키 설명자가 만료되었습니다", @@ -94,6 +98,7 @@ "DE.Controllers.Main.savePreparingTitle": "저장 준비 중입니다. 잠시 기다려주십시오 ...", "DE.Controllers.Main.saveTextText": "문서 저장 중 ...", "DE.Controllers.Main.saveTitleText": "문서 저장 중", + "DE.Controllers.Main.scriptLoadError": "연결 속도가 느려, 일부 요소들이 로드되지 않았습니다. 페이지를 다시 새로 고침해주세요.", "DE.Controllers.Main.sendMergeText": "Sending Merge ...", "DE.Controllers.Main.sendMergeTitle": "Sending Merge", "DE.Controllers.Main.splitDividerErrorText": "행 수는 % 1의 제수 여야합니다", @@ -109,6 +114,7 @@ "DE.Controllers.Main.textLoadingDocument": "문서로드 중", "DE.Controllers.Main.textNoLicenseTitle": "ONLYOFFICE 연결 제한", "DE.Controllers.Main.textOK": "OK", + "DE.Controllers.Main.textPaidFeature": "유료 기능", "DE.Controllers.Main.textPassword": "Password", "DE.Controllers.Main.textPreloader": "로드 중 ...", "DE.Controllers.Main.textTryUndoRedo": "빠른 공동 편집 모드에서 실행 취소 / 다시 실행 기능을 사용할 수 없습니다.", @@ -149,8 +155,8 @@ "DE.Controllers.Main.uploadImageTextText": "이미지 업로드 중 ...", "DE.Controllers.Main.uploadImageTitleText": "이미지 업로드 중", "DE.Controllers.Main.warnLicenseExp": "귀하의 라이센스가 만료되었습니다.
      라이센스를 업데이트하고 페이지를 새로 고침하십시오.", - "DE.Controllers.Main.warnNoLicense": "이 버전의 ONLYOFFICE 편집자는 문서 서버에 대한 동시 연결에 특정 제한 사항이 있습니다.
      더 많은 정보가 필요하면 현재 라이센스를 업그레이드하거나 상업용 라이센스를 구입하십시오.", - "DE.Controllers.Main.warnNoLicenseUsers": "ONLYOFFICE 편집자의이 버전은 동시 사용자에게 일정한 제한이 있습니다.
      더 필요한 것이 있으면 현재 라이센스를 업그레이드하거나 상용 라이센스를 구입하십시오.", + "DE.Controllers.Main.warnNoLicense": "이 버전의 %1 편집자는 문서 서버에 대한 동시 연결에 특정 제한 사항이 있습니다.
      더 많은 정보가 필요하면 현재 라이센스를 업그레이드하거나 상업용 라이센스를 구입하십시오.", + "DE.Controllers.Main.warnNoLicenseUsers": "%1 편집자의이 버전은 동시 사용자에게 일정한 제한이 있습니다.
      더 필요한 것이 있으면 현재 라이센스를 업그레이드하거나 상용 라이센스를 구입하십시오.", "DE.Controllers.Main.warnProcessRightsChange": "파일 편집 권한이 거부되었습니다.", "DE.Controllers.Search.textNoTextFound": "텍스트를 찾을 수 없습니다", "DE.Controllers.Search.textReplaceAll": "모두 바꾸기", @@ -216,6 +222,9 @@ "DE.Views.EditChart.textTopBottom": "상단 및 하단", "DE.Views.EditChart.textType": "유형", "DE.Views.EditChart.textWrap": "줄 바꾸기", + "DE.Views.EditHeader.textDiffFirst": "다른 첫 페이지", + "DE.Views.EditHeader.textDiffOdd": "다른 홀수 및 짝수 페이지", + "DE.Views.EditHeader.textSameAs": "이전 링크", "DE.Views.EditHyperlink.textDisplay": "표시", "DE.Views.EditHyperlink.textEdit": "링크 편집", "DE.Views.EditHyperlink.textLink": "링크", @@ -255,6 +264,7 @@ "DE.Views.EditParagraph.textBack": "뒤로", "DE.Views.EditParagraph.textBackground": "배경", "DE.Views.EditParagraph.textBefore": "이전", + "DE.Views.EditParagraph.textFirstLine": "첫 번째 줄", "DE.Views.EditParagraph.textFromText": "텍스트로부터의 거리", "DE.Views.EditParagraph.textKeepLines": "Keep Lines Together", "DE.Views.EditParagraph.textKeepNext": "다음 보관", @@ -363,18 +373,25 @@ "DE.Views.Settings.textFormat": "서식", "DE.Views.Settings.textHelp": "도움말", "DE.Views.Settings.textLandscape": "Landscape", + "DE.Views.Settings.textLeft": "왼쪽", "DE.Views.Settings.textLoading": "로드 중 ...", + "DE.Views.Settings.textMargins": "여백", "DE.Views.Settings.textOrientation": "오리엔테이션", "DE.Views.Settings.textPages": "페이지", "DE.Views.Settings.textParagraphs": "단락", "DE.Views.Settings.textPortrait": "Portrait", "DE.Views.Settings.textPoweredBy": "Powered by", + "DE.Views.Settings.textPrint": "인쇄", "DE.Views.Settings.textReader": "리더 모드", + "DE.Views.Settings.textReview": "변경 내용 추적", + "DE.Views.Settings.textRight": "오른쪽", "DE.Views.Settings.textSettings": "설정", "DE.Views.Settings.textSpaces": "공백", + "DE.Views.Settings.textSpellcheck": "맞춤법 검사", "DE.Views.Settings.textStatistic": "Statistic", "DE.Views.Settings.textSymbols": "기호", "DE.Views.Settings.textTel": "tel", + "DE.Views.Settings.textTop": "상위", "DE.Views.Settings.textVersion": "버전", "DE.Views.Settings.textWords": "단어", "DE.Views.Settings.unknownText": "알 수 없음", diff --git a/apps/documenteditor/mobile/locale/lv.json b/apps/documenteditor/mobile/locale/lv.json index 34f36ae5f..a10b532b5 100644 --- a/apps/documenteditor/mobile/locale/lv.json +++ b/apps/documenteditor/mobile/locale/lv.json @@ -46,7 +46,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Konversijas taimauts pārsniegts.", "DE.Controllers.Main.criticalErrorExtText": "Nospiediet \"OK\", lai atgrieztos dokumentu sarakstā.", "DE.Controllers.Main.criticalErrorTitle": "Kļūda", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Dokumentu Redaktors", "DE.Controllers.Main.downloadErrorText": "Lejuplāde neizdevās.", "DE.Controllers.Main.downloadMergeText": "Lejupielādē...", "DE.Controllers.Main.downloadMergeTitle": "Lejupielāde", @@ -54,7 +53,7 @@ "DE.Controllers.Main.downloadTitleText": "Dokumenta lejupielāde", "DE.Controllers.Main.errorBadImageUrl": "Nav pareizs attēla URL", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Zudis servera savienojums. Jūs vairs nevarat rediģēt.", - "DE.Controllers.Main.errorConnectToServer": "Dokumentu neizdevās noglabāt. Lūdzu, pārbaudiet savienojuma uzstādījumus vai sazinieties ar savu administratoru.
      Nospiežot \"OK\", jūs varēsit lejupielādēt dokumentu.

      Uzziniet vairāk par dokumentu servera pieslēgšanu šeit", + "DE.Controllers.Main.errorConnectToServer": "Dokumentu neizdevās noglabāt. Lūdzu, pārbaudiet savienojuma uzstādījumus vai sazinieties ar savu administratoru.
      Nospiežot \"OK\", jūs varēsit lejupielādēt dokumentu.

      Uzziniet vairāk par dokumentu servera pieslēgšanu šeit", "DE.Controllers.Main.errorDatabaseConnection": "Ārējā kļūda.
      Datubāzes piekļuves kļūda. Lūdzu, sazinieties ar atbalsta daļu.", "DE.Controllers.Main.errorDataRange": "Nepareizs datu diapazons", "DE.Controllers.Main.errorDefaultMessage": "Kļūdas kods: %1", @@ -149,8 +148,8 @@ "DE.Controllers.Main.uploadImageTextText": "Augšupielādē attēlu...", "DE.Controllers.Main.uploadImageTitleText": "Augšuplādē attēlu", "DE.Controllers.Main.warnLicenseExp": "Jūsu licencei ir beidzies termiņš.
      Lūdzu, atjauniniet savu licenci un pārlādējiet lapu.", - "DE.Controllers.Main.warnNoLicense": "Šai ONLYOFFICE Editors versijai ir noteikti ierobežojumi saistībā ar vienlaicīgu pieslēgšanos dokumentu serverim.
      Ja jums ir nepieciešams vairāk, lūdzu, apsveriet Jūsu šībrīža licences līmeņa paaugstināšanu vai komerciālās licences iegādi.", - "DE.Controllers.Main.warnNoLicenseUsers": "Šai ONLYOFFICE Editors versijai ir noteikti ierobežojumi saistībā ar vairāku lietotāju vienlaicīgu darbību.
      Ja jums ir nepieciešams vairāk, lūdzu, apsveriet paaugstināt šībrīža licences līmeni vai komerciālās licences iegādi.", + "DE.Controllers.Main.warnNoLicense": "Šai %1 editors versijai ir noteikti ierobežojumi saistībā ar vienlaicīgu pieslēgšanos dokumentu serverim.
      Ja jums ir nepieciešams vairāk, lūdzu, apsveriet Jūsu šībrīža licences līmeņa paaugstināšanu vai komerciālās licences iegādi.", + "DE.Controllers.Main.warnNoLicenseUsers": "Šai %1 editors versijai ir noteikti ierobežojumi saistībā ar vairāku lietotāju vienlaicīgu darbību.
      Ja jums ir nepieciešams vairāk, lūdzu, apsveriet paaugstināt šībrīža licences līmeni vai komerciālās licences iegādi.", "DE.Controllers.Main.warnProcessRightsChange": "Jums ir liegtas tiesības šo failu rediģēt.", "DE.Controllers.Search.textNoTextFound": "Teksts nav atrasts", "DE.Controllers.Search.textReplaceAll": "Aizvietot visus", diff --git a/apps/documenteditor/mobile/locale/nl.json b/apps/documenteditor/mobile/locale/nl.json index cf34e4296..294b2e004 100644 --- a/apps/documenteditor/mobile/locale/nl.json +++ b/apps/documenteditor/mobile/locale/nl.json @@ -14,8 +14,6 @@ "DE.Controllers.AddTable.textColumns": "Kolommen", "DE.Controllers.AddTable.textRows": "Rijen", "DE.Controllers.AddTable.textTableSize": "Tabelgrootte", - "DE.Controllers.DocumentHolder.menuAccept": "Accepteren", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Alles accepteren", "DE.Controllers.DocumentHolder.menuAddLink": "Koppeling toevoegen", "DE.Controllers.DocumentHolder.menuCopy": "Kopiëren", "DE.Controllers.DocumentHolder.menuCut": "Knippen", @@ -24,8 +22,6 @@ "DE.Controllers.DocumentHolder.menuMore": "Meer", "DE.Controllers.DocumentHolder.menuOpenLink": "Koppeling openen", "DE.Controllers.DocumentHolder.menuPaste": "Plakken", - "DE.Controllers.DocumentHolder.menuReject": "Afwijzen", - "DE.Controllers.DocumentHolder.menuRejectAll": "Alles afwijzen", "DE.Controllers.DocumentHolder.menuReview": "Beoordelen", "DE.Controllers.DocumentHolder.sheetCancel": "Annuleren", "DE.Controllers.DocumentHolder.textGuest": "Gast", @@ -54,7 +50,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Time-out voor conversie overschreden.", "DE.Controllers.Main.criticalErrorExtText": "Druk op \"OK\" om terug te gaan naar de lijst met documenten.", "DE.Controllers.Main.criticalErrorTitle": "Fout", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE-documenteditor", "DE.Controllers.Main.downloadErrorText": "Download mislukt.", "DE.Controllers.Main.downloadMergeText": "Downloaden...", "DE.Controllers.Main.downloadMergeTitle": "Downloaden", @@ -63,7 +58,7 @@ "DE.Controllers.Main.errorAccessDeny": "U probeert een actie uit te voeren waarvoor u geen rechten hebt.
      Neem contact op met de beheerder van de documentserver.", "DE.Controllers.Main.errorBadImageUrl": "URL afbeelding is onjuist", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Verbinding met server verbroken. U kunt niet doorgaan met bewerken.", - "DE.Controllers.Main.errorConnectToServer": "Het document kan niet worden opgeslagen. Controleer de verbindingsinstellingen of neem contact op met de beheerder.
      Wanneer u op de knop 'OK' klikt, wordt u gevraagd het document te downloaden.

      Meer informatie over verbindingen met de documentserver is hier te vinden.", + "DE.Controllers.Main.errorConnectToServer": "Het document kan niet worden opgeslagen. Controleer de verbindingsinstellingen of neem contact op met de beheerder.
      Wanneer u op de knop 'OK' klikt, wordt u gevraagd het document te downloaden.

      Meer informatie over verbindingen met de documentserver is hier te vinden.", "DE.Controllers.Main.errorDatabaseConnection": "Externe fout.
      Fout in databaseverbinding. Neem contact op met Support.", "DE.Controllers.Main.errorDataEncrypted": "Versleutelde wijzigingen zijn ontvangen, deze kunnen niet ontcijferd worden.", "DE.Controllers.Main.errorDataRange": "Onjuist gegevensbereik", @@ -166,8 +161,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Het aantal gelijktijdige verbindingen met de document server heeft het maximum overschreven. Het document zal geopend worden in een alleen-lezen modus.
      Neem contact op met de beheerder voor meer informatie.", "DE.Controllers.Main.warnLicenseExp": "Uw licentie is vervallen.
      Werk uw licentie bij en vernieuw de pagina.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Het aantal gelijktijdige gebruikers met de document server heeft het maximum overschreven. Het document zal geopend worden in een alleen-lezen modus.
      Neem contact op met de beheerder voor meer informatie.", - "DE.Controllers.Main.warnNoLicense": "Deze versie van Only Office bevat limieten voor het aantal gelijktijdige gebruikers.
      Indien meer nodig is, upgrade dan de huidige licentie of schaf een commerciële licentie aan.", - "DE.Controllers.Main.warnNoLicenseUsers": "Deze versie van Only Office bevat limieten voor het aantal gelijktijdige gebruikers.
      Indien meer nodig is, upgrade dan de huidige licentie of schaf een commerciële licentie aan.", + "DE.Controllers.Main.warnNoLicense": "Deze versie van %1 bevat limieten voor het aantal gelijktijdige gebruikers.
      Indien meer nodig is, upgrade dan de huidige licentie of schaf een commerciële licentie aan.", + "DE.Controllers.Main.warnNoLicenseUsers": "Deze versie van %1 bevat limieten voor het aantal gelijktijdige gebruikers.
      Indien meer nodig is, upgrade dan de huidige licentie of schaf een commerciële licentie aan.", "DE.Controllers.Main.warnProcessRightsChange": "Het recht om het bestand te bewerken is u ontzegd.", "DE.Controllers.Search.textNoTextFound": "Tekst niet gevonden", "DE.Controllers.Search.textReplaceAll": "Alles vervangen", diff --git a/apps/documenteditor/mobile/locale/pl.json b/apps/documenteditor/mobile/locale/pl.json index 4b13b1b69..cd25d5c3a 100644 --- a/apps/documenteditor/mobile/locale/pl.json +++ b/apps/documenteditor/mobile/locale/pl.json @@ -3,6 +3,7 @@ "Common.UI.ThemeColorPalette.textThemeColors": "Kolory motywu", "Common.Utils.Metric.txtCm": "cm", "Common.Utils.Metric.txtPt": "pt", + "Common.Views.Collaboration.textCollaboration": "Współpraca", "DE.Controllers.AddContainer.textImage": "Obraz", "DE.Controllers.AddContainer.textOther": "Inny", "DE.Controllers.AddContainer.textShape": "Kształt", @@ -14,8 +15,6 @@ "DE.Controllers.AddTable.textColumns": "Kolumny", "DE.Controllers.AddTable.textRows": "Wiersze", "DE.Controllers.AddTable.textTableSize": "Rozmiar tabeli", - "DE.Controllers.DocumentHolder.menuAccept": "Akceptuj", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Akceptuj wszystko", "DE.Controllers.DocumentHolder.menuAddLink": "Dodaj link", "DE.Controllers.DocumentHolder.menuCopy": "Kopiuj", "DE.Controllers.DocumentHolder.menuCut": "Wytnij", @@ -49,7 +48,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Przekroczono limit czasu konwersji.", "DE.Controllers.Main.criticalErrorExtText": "Naciśnij \"OK\" aby powrócić do listy dokumentów.", "DE.Controllers.Main.criticalErrorTitle": "Błąd", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Edytor dokumentów", "DE.Controllers.Main.downloadErrorText": "Pobieranie nieudane.", "DE.Controllers.Main.downloadMergeText": "Pobieranie...", "DE.Controllers.Main.downloadMergeTitle": "Pobieranie", @@ -57,7 +55,7 @@ "DE.Controllers.Main.downloadTitleText": "Pobieranie dokumentu", "DE.Controllers.Main.errorBadImageUrl": "Adres URL obrazu jest błędny", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Połączenie z serwerem zostało utracone. Nie możesz już edytować.", - "DE.Controllers.Main.errorConnectToServer": "Nie można zapisać dokumentu. Sprawdź ustawienia połączenia lub skontaktuj się z administratorem.
      Po kliknięciu przycisku \"OK\" zostanie wyświetlony monit o pobranie dokumentu.

      Dowiedz się więcej o połączeniu serwera dokumentów tutaj", + "DE.Controllers.Main.errorConnectToServer": "Nie można zapisać dokumentu. Sprawdź ustawienia połączenia lub skontaktuj się z administratorem.
      Po kliknięciu przycisku \"OK\" zostanie wyświetlony monit o pobranie dokumentu.

      Dowiedz się więcej o połączeniu serwera dokumentów tutaj", "DE.Controllers.Main.errorDatabaseConnection": "Zewnętrzny błąd.
      Błąd połączenia z bazą danych. Proszę skontaktuj się z administratorem.", "DE.Controllers.Main.errorDataRange": "Błędny zakres danych.", "DE.Controllers.Main.errorDefaultMessage": "Kod błędu: %1", @@ -150,7 +148,7 @@ "DE.Controllers.Main.uploadImageTitleText": "Wysyłanie obrazu", "DE.Controllers.Main.waitText": "Proszę czekać...", "DE.Controllers.Main.warnLicenseExp": "Twoja licencja wygasła.
      Zaktualizuj licencję i odśwież stronę.", - "DE.Controllers.Main.warnNoLicense": "Używasz wersji ONLYOFFICE w wersji open source. Wersja ma ograniczenia dla jednoczesnych połączeń z serwerem dokumentów (po 20 połączeń naraz). Jeśli potrzebujesz więcej, rozważ zakup licencji komercyjnej.", + "DE.Controllers.Main.warnNoLicense": "Używasz wersji %1 w wersji open source. Wersja ma ograniczenia dla jednoczesnych połączeń z serwerem dokumentów (po 20 połączeń naraz). Jeśli potrzebujesz więcej, rozważ zakup licencji komercyjnej.", "DE.Controllers.Main.warnProcessRightsChange": "Nie masz uprawnień do edycji tego pliku.", "DE.Controllers.Search.textNoTextFound": "Nie znaleziono tekstu", "DE.Controllers.Search.textReplaceAll": "Zamień wszystko", diff --git a/apps/documenteditor/mobile/locale/pt.json b/apps/documenteditor/mobile/locale/pt.json index 28e296601..084f93a80 100644 --- a/apps/documenteditor/mobile/locale/pt.json +++ b/apps/documenteditor/mobile/locale/pt.json @@ -46,7 +46,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Tempo limite de conversão excedido.", "DE.Controllers.Main.criticalErrorExtText": "Pressione \"OK\" para voltar para a lista de documento.", "DE.Controllers.Main.criticalErrorTitle": "Erro", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Falha ao Baixar", "DE.Controllers.Main.downloadMergeText": "Baixando...", "DE.Controllers.Main.downloadMergeTitle": "Baixando", @@ -54,7 +53,7 @@ "DE.Controllers.Main.downloadTitleText": "Baixando Documento", "DE.Controllers.Main.errorBadImageUrl": "URL de imagem está incorreta", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Conexão ao servidor perdida. Você não pode mais editar.", - "DE.Controllers.Main.errorConnectToServer": "O documento não pôde ser salvo. Verifique as configurações de conexão ou entre em contato com o administrador.
      Quando você clicar no botão 'OK', você será solicitado à fazer o download do documento.

      Encontre mais informações sobre como conecta ao Document Server aqui ", + "DE.Controllers.Main.errorConnectToServer": "O documento não pôde ser salvo. Verifique as configurações de conexão ou entre em contato com o administrador.
      Quando você clicar no botão 'OK', você será solicitado à fazer o download do documento.

      Encontre mais informações sobre como conecta ao Document Server aqui", "DE.Controllers.Main.errorDatabaseConnection": "Erro externo.
      Erro de conexão do banco de dados. Entre em contato com o suporte.", "DE.Controllers.Main.errorDataRange": "Intervalo de dados incorreto.", "DE.Controllers.Main.errorDefaultMessage": "Código do Erro: %1", @@ -147,7 +146,7 @@ "DE.Controllers.Main.uploadImageTitleText": "Carregando imagem", "DE.Controllers.Main.waitText": "Aguarde...", "DE.Controllers.Main.warnLicenseExp": "Sua licença expirou.
      Atualize sua licença e atualize a página.", - "DE.Controllers.Main.warnNoLicense": "Você está usando uma versão de código aberto do ONLYOFFICE. A versão tem limitações para conexões simultâneas com servidor de documentos (20 conexões por vez).
      Se você precisar de mais, considere a compra de uma licença comercial.", + "DE.Controllers.Main.warnNoLicense": "Você está usando uma versão de código aberto do %1. A versão tem limitações para conexões simultâneas com servidor de documentos (20 conexões por vez).
      Se você precisar de mais, considere a compra de uma licença comercial.", "DE.Controllers.Main.warnProcessRightsChange": "Foi negado a você o direito de editar o arquivo.", "DE.Controllers.Search.textNoTextFound": "Texto não encontrado", "DE.Controllers.Search.textReplaceAll": "Substituir tudo", diff --git a/apps/documenteditor/mobile/locale/ru.json b/apps/documenteditor/mobile/locale/ru.json index 1728813b3..8bca5769f 100644 --- a/apps/documenteditor/mobile/locale/ru.json +++ b/apps/documenteditor/mobile/locale/ru.json @@ -1,34 +1,112 @@ { + "Common.Controllers.Collaboration.textAtLeast": "минимум", + "Common.Controllers.Collaboration.textAuto": "авто", + "Common.Controllers.Collaboration.textBaseline": "Базовая линия", + "Common.Controllers.Collaboration.textBold": "Жирный", + "Common.Controllers.Collaboration.textBreakBefore": "С новой страницы", + "Common.Controllers.Collaboration.textCaps": "Все прописные", + "Common.Controllers.Collaboration.textCenter": "Выравнивание по центру", + "Common.Controllers.Collaboration.textChart": "Диаграмма", + "Common.Controllers.Collaboration.textColor": "Цвет шрифта", + "Common.Controllers.Collaboration.textContextual": "Не добавлять интервал между абзацами одного стиля", + "Common.Controllers.Collaboration.textDeleted": "Удалено:", + "Common.Controllers.Collaboration.textDStrikeout": "Двойное зачеркивание", + "Common.Controllers.Collaboration.textEditUser": "Документ редактируется несколькими пользователями.", + "Common.Controllers.Collaboration.textEquation": "Уравнение", + "Common.Controllers.Collaboration.textExact": "точно", + "Common.Controllers.Collaboration.textFirstLine": "Первая строка", + "Common.Controllers.Collaboration.textFormatted": "Отформатировано", + "Common.Controllers.Collaboration.textHighlight": "Цвет выделения", + "Common.Controllers.Collaboration.textImage": "Изображение", + "Common.Controllers.Collaboration.textIndentLeft": "Отступ слева", + "Common.Controllers.Collaboration.textIndentRight": "Отступ справа", + "Common.Controllers.Collaboration.textInserted": "Добавлено:", + "Common.Controllers.Collaboration.textItalic": "Курсив", + "Common.Controllers.Collaboration.textJustify": "Выравнивание по ширине", + "Common.Controllers.Collaboration.textKeepLines": "Не разрывать абзац", + "Common.Controllers.Collaboration.textKeepNext": "Не отрывать от следующего", + "Common.Controllers.Collaboration.textLeft": "Выравнивание по левому краю", + "Common.Controllers.Collaboration.textLineSpacing": "Междустрочный интервал: ", + "Common.Controllers.Collaboration.textMultiple": "множитель", + "Common.Controllers.Collaboration.textNoBreakBefore": "Не с новой страницы", + "Common.Controllers.Collaboration.textNoContextual": "Добавлять интервал между абзацами одного стиля", + "Common.Controllers.Collaboration.textNoKeepLines": "Разрешить разрывать абзац", + "Common.Controllers.Collaboration.textNoKeepNext": "Разрешить отрывать от следующего", + "Common.Controllers.Collaboration.textNot": "Не", + "Common.Controllers.Collaboration.textNoWidow": "Без запрета висячих строк", + "Common.Controllers.Collaboration.textNum": "Изменение нумерации", + "Common.Controllers.Collaboration.textParaDeleted": "Абзац удален ", + "Common.Controllers.Collaboration.textParaFormatted": "Абзац отформатирован", + "Common.Controllers.Collaboration.textParaInserted": "Абзац добавлен ", + "Common.Controllers.Collaboration.textParaMoveFromDown": "Перемещено вниз:", + "Common.Controllers.Collaboration.textParaMoveFromUp": "Перемещено вверх:", + "Common.Controllers.Collaboration.textParaMoveTo": "Перемещено:", + "Common.Controllers.Collaboration.textPosition": "Положение", + "Common.Controllers.Collaboration.textRight": "Выравнивание по правому краю", + "Common.Controllers.Collaboration.textShape": "Фигура", + "Common.Controllers.Collaboration.textShd": "Цвет фона", + "Common.Controllers.Collaboration.textSmallCaps": "Малые прописные", + "Common.Controllers.Collaboration.textSpacing": "Интервал", + "Common.Controllers.Collaboration.textSpacingAfter": "Интервал после абзаца", + "Common.Controllers.Collaboration.textSpacingBefore": "Интервал перед абзацем", + "Common.Controllers.Collaboration.textStrikeout": "Зачеркнутый", + "Common.Controllers.Collaboration.textSubScript": "Подстрочный", + "Common.Controllers.Collaboration.textSuperScript": "Надстрочный", + "Common.Controllers.Collaboration.textTableChanged": "Изменены настройки таблицы", + "Common.Controllers.Collaboration.textTableRowsAdd": "Добавлены строки таблицы", + "Common.Controllers.Collaboration.textTableRowsDel": "Удалены строки таблицы", + "Common.Controllers.Collaboration.textTabs": "Изменение табуляции", + "Common.Controllers.Collaboration.textUnderline": "Подчёркнутый", + "Common.Controllers.Collaboration.textWidow": "Запрет висячих строк", "Common.UI.ThemeColorPalette.textStandartColors": "Стандартные цвета", "Common.UI.ThemeColorPalette.textThemeColors": "Цвета темы", "Common.Utils.Metric.txtCm": "см", "Common.Utils.Metric.txtPt": "пт", + "Common.Views.Collaboration.textAcceptAllChanges": "Принять все изменения", + "Common.Views.Collaboration.textBack": "Назад", + "Common.Views.Collaboration.textChange": "Просмотр изменений", + "Common.Views.Collaboration.textCollaboration": "Совместная работа", + "Common.Views.Collaboration.textDisplayMode": "Отображение", + "Common.Views.Collaboration.textEditUsers": "Пользователи", + "Common.Views.Collaboration.textFinal": "Измененный документ", + "Common.Views.Collaboration.textMarkup": "Изменения", + "Common.Views.Collaboration.textNoComments": "Этот документ не содержит комментариев", + "Common.Views.Collaboration.textOriginal": "Исходный документ", + "Common.Views.Collaboration.textRejectAllChanges": "Отклонить все изменения", + "Common.Views.Collaboration.textReview": "Отслеживание изменений", + "Common.Views.Collaboration.textReviewing": "Рецензирование", + "Common.Views.Collaboration.textСomments": "Комментарии", "DE.Controllers.AddContainer.textImage": "Изображение", "DE.Controllers.AddContainer.textOther": "Другое", "DE.Controllers.AddContainer.textShape": "Фигура", "DE.Controllers.AddContainer.textTable": "Таблица", "DE.Controllers.AddImage.textEmptyImgUrl": "Необходимо указать URL изображения.", "DE.Controllers.AddImage.txtNotUrl": "Это поле должно быть URL-адресом в формате 'http://www.example.com'", + "DE.Controllers.AddOther.textBelowText": "Под текстом", + "DE.Controllers.AddOther.textBottomOfPage": "Внизу страницы", "DE.Controllers.AddOther.txtNotUrl": "Это поле должно быть URL-адресом в формате 'http://www.example.com'", "DE.Controllers.AddTable.textCancel": "Отмена", "DE.Controllers.AddTable.textColumns": "Столбцы", "DE.Controllers.AddTable.textRows": "Строки", "DE.Controllers.AddTable.textTableSize": "Размер таблицы", - "DE.Controllers.DocumentHolder.menuAccept": "Принять", - "DE.Controllers.DocumentHolder.menuAcceptAll": "Принять все", "DE.Controllers.DocumentHolder.menuAddLink": "Добавить ссылку", "DE.Controllers.DocumentHolder.menuCopy": "Копировать", "DE.Controllers.DocumentHolder.menuCut": "Вырезать", "DE.Controllers.DocumentHolder.menuDelete": "Удалить", + "DE.Controllers.DocumentHolder.menuDeleteTable": "Удалить таблицу", "DE.Controllers.DocumentHolder.menuEdit": "Редактировать", + "DE.Controllers.DocumentHolder.menuMerge": "Объединить ячейки", "DE.Controllers.DocumentHolder.menuMore": "Ещё", "DE.Controllers.DocumentHolder.menuOpenLink": "Перейти", "DE.Controllers.DocumentHolder.menuPaste": "Вставить", - "DE.Controllers.DocumentHolder.menuReject": "Отклонить", - "DE.Controllers.DocumentHolder.menuRejectAll": "Отклонить все", "DE.Controllers.DocumentHolder.menuReview": "Рецензирование", + "DE.Controllers.DocumentHolder.menuReviewChange": "Просмотр изменений", + "DE.Controllers.DocumentHolder.menuSplit": "Разделить ячейку", "DE.Controllers.DocumentHolder.sheetCancel": "Отмена", + "DE.Controllers.DocumentHolder.textCancel": "Отмена", + "DE.Controllers.DocumentHolder.textColumns": "Колонки", "DE.Controllers.DocumentHolder.textGuest": "Гость", + "DE.Controllers.DocumentHolder.textRows": "Строки", "DE.Controllers.EditContainer.textChart": "Диаграмма", "DE.Controllers.EditContainer.textFooter": "Колонтитул", "DE.Controllers.EditContainer.textHeader": "Колонтитул", @@ -54,7 +132,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Превышено время ожидания конвертации.", "DE.Controllers.Main.criticalErrorExtText": "Нажмите 'OK' для возврата к списку документов.", "DE.Controllers.Main.criticalErrorTitle": "Ошибка", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Загрузка не удалась.", "DE.Controllers.Main.downloadMergeText": "Загрузка...", "DE.Controllers.Main.downloadMergeTitle": "Загрузка", @@ -63,7 +140,7 @@ "DE.Controllers.Main.errorAccessDeny": "Вы пытаетесь выполнить действие, на которое у вас нет прав.
      Пожалуйста, обратитесь к администратору Сервера документов.", "DE.Controllers.Main.errorBadImageUrl": "Неправильный URL-адрес изображения", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Подключение к серверу прервано. Редактирование недоступно.", - "DE.Controllers.Main.errorConnectToServer": "Не удается сохранить документ. Проверьте параметры подключения или обратитесь к вашему администратору.
      Когда вы нажмете на кнопку 'OK', вам будет предложено скачать документ.

      Дополнительную информацию о подключении Сервера документов можно найти здесь", + "DE.Controllers.Main.errorConnectToServer": "Не удается сохранить документ. Проверьте параметры подключения или обратитесь к вашему администратору.
      Когда вы нажмете на кнопку 'OK', вам будет предложено скачать документ.

      Дополнительную информацию о подключении Сервера документов можно найти здесь", "DE.Controllers.Main.errorDatabaseConnection": "Внешняя ошибка.
      Ошибка подключения к базе данных. Пожалуйста, обратитесь в службу технической поддержки.", "DE.Controllers.Main.errorDataEncrypted": "Получены зашифрованные изменения, их нельзя расшифровать.", "DE.Controllers.Main.errorDataRange": "Некорректный диапазон данных.", @@ -120,7 +197,7 @@ "DE.Controllers.Main.textCustomLoader": "Обратите внимание, что по условиям лицензии у вас нет прав изменять экран, отображаемый при загрузке.
      Пожалуйста, обратитесь в наш отдел продаж, чтобы сделать запрос.", "DE.Controllers.Main.textDone": "Готово", "DE.Controllers.Main.textLoadingDocument": "Загрузка документа", - "DE.Controllers.Main.textNoLicenseTitle": "Ограничение по числу подключений ONLYOFFICE", + "DE.Controllers.Main.textNoLicenseTitle": "Ограничение по числу подключений %1", "DE.Controllers.Main.textOK": "OK", "DE.Controllers.Main.textPaidFeature": "Платная функция", "DE.Controllers.Main.textPassword": "Пароль", @@ -167,8 +244,8 @@ "DE.Controllers.Main.warnLicenseExceeded": "Превышено допустимое число одновременных подключений к серверу документов, и документ откроется только на просмотр.
      Обратитесь к администратору за дополнительной информацией.", "DE.Controllers.Main.warnLicenseExp": "Истек срок действия лицензии.
      Обновите лицензию, а затем обновите страницу.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Превышено допустимое число одновременно работающих пользователей, и документ откроется только на просмотр.
      Обратитесь к администратору за дополнительной информацией.", - "DE.Controllers.Main.warnNoLicense": "Эта версия редакторов ONLYOFFICE имеет некоторые ограничения по количеству одновременных подключений к серверу документов.
      Если требуется больше, рассмотрите вопрос о покупке коммерческой лицензии.", - "DE.Controllers.Main.warnNoLicenseUsers": "Эта версия редакторов ONLYOFFICE имеет некоторые ограничения по числу одновременно работающих пользователей.
      Если требуется больше, рассмотрите вопрос о покупке коммерческой лицензии.", + "DE.Controllers.Main.warnNoLicense": "Эта версия редакторов %1 имеет некоторые ограничения по количеству одновременных подключений к серверу документов.
      Если требуется больше, рассмотрите вопрос о покупке коммерческой лицензии.", + "DE.Controllers.Main.warnNoLicenseUsers": "Эта версия редакторов %1 имеет некоторые ограничения по числу одновременно работающих пользователей.
      Если требуется больше, рассмотрите вопрос о покупке коммерческой лицензии.", "DE.Controllers.Main.warnProcessRightsChange": "Вам было отказано в праве на редактирование этого файла.", "DE.Controllers.Search.textNoTextFound": "Текст не найден", "DE.Controllers.Search.textReplaceAll": "Заменить все", @@ -176,6 +253,7 @@ "DE.Controllers.Settings.txtLoading": "Загрузка...", "DE.Controllers.Settings.unknownText": "Неизвестно", "DE.Controllers.Settings.warnDownloadAs": "Если Вы продолжите сохранение в этот формат, весь функционал, кроме текста, будет потерян.
      Вы действительно хотите продолжить?", + "DE.Controllers.Settings.warnDownloadAsRTF": "Если вы продолжите сохранение в этот формат, часть форматирования может быть потеряна.
      Вы действительно хотите продолжить?", "DE.Controllers.Toolbar.dlgLeaveMsgText": "В документе есть несохраненные изменения. Нажмите 'Остаться на странице', чтобы дождаться автосохранения документа. Нажмите 'Уйти со страницы', чтобы сбросить все несохраненные изменения.", "DE.Controllers.Toolbar.dlgLeaveTitleText": "Вы выходите из приложения", "DE.Controllers.Toolbar.leaveButtonText": "Уйти со страницы", @@ -196,10 +274,14 @@ "DE.Views.AddOther.textCurrentPos": "Текущая позиция", "DE.Views.AddOther.textDisplay": "Отобразить", "DE.Views.AddOther.textEvenPage": "С четной страницы", + "DE.Views.AddOther.textFootnote": "Сноска", + "DE.Views.AddOther.textFormat": "Формат", "DE.Views.AddOther.textInsert": "Вставить", + "DE.Views.AddOther.textInsertFootnote": "Вставить сноску", "DE.Views.AddOther.textLeftBottom": "Слева снизу", "DE.Views.AddOther.textLeftTop": "Слева сверху", "DE.Views.AddOther.textLink": "Ссылка", + "DE.Views.AddOther.textLocation": "Положение", "DE.Views.AddOther.textNextPage": "Со следующей страницы", "DE.Views.AddOther.textOddPage": "С нечетной страницы", "DE.Views.AddOther.textPageBreak": "Разрыв страницы", @@ -208,6 +290,7 @@ "DE.Views.AddOther.textRightBottom": "Снизу справа", "DE.Views.AddOther.textRightTop": "Справа сверху", "DE.Views.AddOther.textSectionBreak": "Разрыв раздела", + "DE.Views.AddOther.textStartFrom": "Начать с", "DE.Views.AddOther.textTip": "Подсказка", "DE.Views.EditChart.textAlign": "Выравнивание", "DE.Views.EditChart.textBack": "Назад", @@ -373,12 +456,22 @@ "DE.Views.Search.textSearch": "Найти", "DE.Views.Settings.textAbout": "О программе", "DE.Views.Settings.textAddress": "адрес", + "DE.Views.Settings.textAdvancedSettings": "Настройки приложения", + "DE.Views.Settings.textApplication": "Приложение", "DE.Views.Settings.textAuthor": "Автор", "DE.Views.Settings.textBack": "Назад", "DE.Views.Settings.textBottom": "Нижнее", + "DE.Views.Settings.textCentimeter": "Сантиметр", + "DE.Views.Settings.textCollaboration": "Совместная работа", + "DE.Views.Settings.textColorSchemes": "Цветовые схемы", + "DE.Views.Settings.textComment": "Комментарий", + "DE.Views.Settings.textCommentingDisplay": "Отображение комментариев", + "DE.Views.Settings.textCreated": "Создан", "DE.Views.Settings.textCreateDate": "Дата создания", "DE.Views.Settings.textCustom": "Особый", "DE.Views.Settings.textCustomSize": "Особый размер", + "DE.Views.Settings.textDisplayComments": "Комментарии", + "DE.Views.Settings.textDisplayResolvedComments": "Решенные комментарии", "DE.Views.Settings.textDocInfo": "Информация о документе", "DE.Views.Settings.textDocTitle": "Название документа", "DE.Views.Settings.textDocumentFormats": "Размеры страницы", @@ -392,13 +485,21 @@ "DE.Views.Settings.textFindAndReplace": "Поиск и замена", "DE.Views.Settings.textFormat": "Формат", "DE.Views.Settings.textHelp": "Справка", + "DE.Views.Settings.textHiddenTableBorders": "Скрытые границы таблиц", + "DE.Views.Settings.textInch": "Дюйм", "DE.Views.Settings.textLandscape": "Альбомная", + "DE.Views.Settings.textLastModified": "Последнее изменение", + "DE.Views.Settings.textLastModifiedBy": "Автор последнего изменения", "DE.Views.Settings.textLeft": "Левое", "DE.Views.Settings.textLoading": "Загрузка...", + "DE.Views.Settings.textLocation": "Размещение", "DE.Views.Settings.textMargins": "Поля", + "DE.Views.Settings.textNoCharacters": "Непечатаемые символы", "DE.Views.Settings.textOrientation": "Ориентация страницы", + "DE.Views.Settings.textOwner": "Владелец", "DE.Views.Settings.textPages": "Страницы", "DE.Views.Settings.textParagraphs": "Абзацы", + "DE.Views.Settings.textPoint": "Пункт", "DE.Views.Settings.textPortrait": "Книжная", "DE.Views.Settings.textPoweredBy": "Разработано", "DE.Views.Settings.textPrint": "Печать", @@ -409,9 +510,13 @@ "DE.Views.Settings.textSpaces": "Пробелы", "DE.Views.Settings.textSpellcheck": "Проверка орфографии", "DE.Views.Settings.textStatistic": "Статистика", + "DE.Views.Settings.textSubject": "Тема", "DE.Views.Settings.textSymbols": "Символы", "DE.Views.Settings.textTel": "Телефон", + "DE.Views.Settings.textTitle": "Название", "DE.Views.Settings.textTop": "Верхнее", + "DE.Views.Settings.textUnitOfMeasurement": "Единица измерения", + "DE.Views.Settings.textUploaded": "Загружен", "DE.Views.Settings.textVersion": "Версия", "DE.Views.Settings.textWords": "Слова", "DE.Views.Settings.unknownText": "Неизвестно", diff --git a/apps/documenteditor/mobile/locale/sk.json b/apps/documenteditor/mobile/locale/sk.json index a57efcb96..8d93fd732 100644 --- a/apps/documenteditor/mobile/locale/sk.json +++ b/apps/documenteditor/mobile/locale/sk.json @@ -47,7 +47,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Prekročený čas konverzie.", "DE.Controllers.Main.criticalErrorExtText": "Stlačením tlačidla 'OK' sa vrátite do zoznamu dokumentov.", "DE.Controllers.Main.criticalErrorTitle": "Chyba", - "DE.Controllers.Main.defaultTitleText": "Dokumentový editor ONLYOFFICE ", "DE.Controllers.Main.downloadErrorText": "Sťahovanie zlyhalo.", "DE.Controllers.Main.downloadMergeText": "Sťahovanie...", "DE.Controllers.Main.downloadMergeTitle": "Sťahovanie", @@ -55,7 +54,7 @@ "DE.Controllers.Main.downloadTitleText": "Sťahovanie dokumentu", "DE.Controllers.Main.errorBadImageUrl": "Adresa URL obrázku je nesprávna", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Spojenie so serverom sa stratilo. Už nemôžete upravovať.", - "DE.Controllers.Main.errorConnectToServer": "Dokument sa nepodarilo uložiť. Prosím, skontrolujte nastavenia pripojenia alebo kontaktujte správcu.
      Po kliknutí na tlačidlo 'OK' sa zobrazí výzva na prevzatie dokumentu.

      Viac informácií o pripojení dokumentového servera nájdete tu", + "DE.Controllers.Main.errorConnectToServer": "Dokument sa nepodarilo uložiť. Prosím, skontrolujte nastavenia pripojenia alebo kontaktujte správcu.
      Po kliknutí na tlačidlo 'OK' sa zobrazí výzva na prevzatie dokumentu.

      Viac informácií o pripojení dokumentového servera nájdete tu", "DE.Controllers.Main.errorDatabaseConnection": "Externá chyba.
      Chyba spojenia databázy. Obráťte sa prosím na podporu.", "DE.Controllers.Main.errorDataRange": "Nesprávny rozsah údajov.", "DE.Controllers.Main.errorDefaultMessage": "Kód chyby: %1", @@ -150,8 +149,8 @@ "DE.Controllers.Main.uploadImageTextText": "Nahrávanie obrázku...", "DE.Controllers.Main.uploadImageTitleText": "Nahrávanie obrázku", "DE.Controllers.Main.warnLicenseExp": "Vaša licencia vypršala.
      Prosím, aktualizujte si svoju licenciu a obnovte stránku.", - "DE.Controllers.Main.warnNoLicense": "Táto verzia aplikácie ONLYOFFICE Editors má určité obmedzenia pre súbežné pripojenia k dokumentovému serveru.
      Ak potrebujete viac, zvážte aktualizáciu aktuálnej licencie alebo zakúpenie komerčnej.", - "DE.Controllers.Main.warnNoLicenseUsers": "Táto verzia ONLYOFFICE Editors má určité obmedzenia pre spolupracujúcich používateľov.
      Ak potrebujete viac, zvážte aktualizáciu vašej aktuálnej licencie alebo kúpu komerčnej.", + "DE.Controllers.Main.warnNoLicense": "Táto verzia aplikácie %1 editors má určité obmedzenia pre súbežné pripojenia k dokumentovému serveru.
      Ak potrebujete viac, zvážte aktualizáciu aktuálnej licencie alebo zakúpenie komerčnej.", + "DE.Controllers.Main.warnNoLicenseUsers": "Táto verzia %1 editors má určité obmedzenia pre spolupracujúcich používateľov.
      Ak potrebujete viac, zvážte aktualizáciu vašej aktuálnej licencie alebo kúpu komerčnej.", "DE.Controllers.Main.warnProcessRightsChange": "Bolo vám zamietnuté právo upravovať súbor.", "DE.Controllers.Search.textNoTextFound": "Text nebol nájdený", "DE.Controllers.Search.textReplaceAll": "Nahradiť všetko", diff --git a/apps/documenteditor/mobile/locale/tr.json b/apps/documenteditor/mobile/locale/tr.json index 4acd5b213..59e56a7ed 100644 --- a/apps/documenteditor/mobile/locale/tr.json +++ b/apps/documenteditor/mobile/locale/tr.json @@ -46,7 +46,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Değişim süresi aşıldı.", "DE.Controllers.Main.criticalErrorExtText": "Belge listesine dönmek için 'TAMAM' tuşuna tıklayın.", "DE.Controllers.Main.criticalErrorTitle": "Hata", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Belge Editörü", "DE.Controllers.Main.downloadErrorText": "İndirme başarısız oldu.", "DE.Controllers.Main.downloadMergeText": "İndiriliyor...", "DE.Controllers.Main.downloadMergeTitle": "İndiriliyor", @@ -54,7 +53,7 @@ "DE.Controllers.Main.downloadTitleText": "Belge indiriliyor", "DE.Controllers.Main.errorBadImageUrl": "Resim URL'si yanlış", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Sunucu bağlantısı kayboldu. Artık düzenleyemezsiniz.", - "DE.Controllers.Main.errorConnectToServer": "Belge kaydedilemedi. Lütfen internet bağlantınızı kontrol edin veya yöneticiniz ile iletişime geçin.
      'TAMAM' tuşuna tıkladığınızda belgeyi indirebileceksiniz.

      Belge Sunucusuna bağlanma konusunda daha fazla bilgi için buraya tıklayın", + "DE.Controllers.Main.errorConnectToServer": "Belge kaydedilemedi. Lütfen internet bağlantınızı kontrol edin veya yöneticiniz ile iletişime geçin.
      'TAMAM' tuşuna tıkladığınızda belgeyi indirebileceksiniz.

      Belge Sunucusuna bağlanma konusunda daha fazla bilgi için buraya tıklayın", "DE.Controllers.Main.errorDatabaseConnection": "Dışsal hata.
      Veritabanı bağlantı hatası. Lütfen destek ile iletişime geçin.", "DE.Controllers.Main.errorDataRange": "Yanlış veri aralığı.", "DE.Controllers.Main.errorDefaultMessage": "Hata kodu: %1", @@ -146,7 +145,7 @@ "DE.Controllers.Main.uploadImageTextText": "Resim yükleniyor...", "DE.Controllers.Main.uploadImageTitleText": "Resim Yükleniyor", "DE.Controllers.Main.warnLicenseExp": "Lisansınızın süresi doldu.
      Lütfen lisansınızı güncelleyin ve sayfayı yenileyin.", - "DE.Controllers.Main.warnNoLicense": "ONLYOFFICE'ın açık kaynaklı bir sürümünü kullanıyorsunuz. Sürüm, doküman sunucusuna eş zamanlı bağlantılar için sınırlamalar getiriyor (bir seferde 20 bağlantı).
      Daha fazla bilgiye ihtiyacınız varsa, ticari bir lisans satın almayı düşünün lütfen.", + "DE.Controllers.Main.warnNoLicense": "%1'ın açık kaynaklı bir sürümünü kullanıyorsunuz. Sürüm, doküman sunucusuna eş zamanlı bağlantılar için sınırlamalar getiriyor (bir seferde 20 bağlantı).
      Daha fazla bilgiye ihtiyacınız varsa, ticari bir lisans satın almayı düşünün lütfen.", "DE.Controllers.Main.warnProcessRightsChange": "Dosyayı düzenleme hakkınız reddedildi", "DE.Controllers.Search.textNoTextFound": "Metin Bulunamadı", "DE.Controllers.Search.textReplaceAll": "Tümünü Değiştir", diff --git a/apps/documenteditor/mobile/locale/uk.json b/apps/documenteditor/mobile/locale/uk.json index 9128fb4d2..2a72880a8 100644 --- a/apps/documenteditor/mobile/locale/uk.json +++ b/apps/documenteditor/mobile/locale/uk.json @@ -46,7 +46,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Термін переходу перевищено.", "DE.Controllers.Main.criticalErrorExtText": "Натисніть \"ОК\", щоб повернутися до списку документів.", "DE.Controllers.Main.criticalErrorTitle": "Помилка", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Завантаження не вдалося", "DE.Controllers.Main.downloadMergeText": "Завантаження...", "DE.Controllers.Main.downloadMergeTitle": "Завантаження", @@ -54,7 +53,7 @@ "DE.Controllers.Main.downloadTitleText": "Завантаження документу", "DE.Controllers.Main.errorBadImageUrl": "URL-адреса зображення невірна", "DE.Controllers.Main.errorCoAuthoringDisconnect": "З'єднання з сервером втрачено. Ви більше не можете редагувати.", - "DE.Controllers.Main.errorConnectToServer": "Не вдалося зберегти документ. Будь ласка, перевірте налаштування з'єднання або зверніться до свого адміністратора.
      Після натискання кнопки «ОК» вам буде запропоновано завантажити документ.

      Більше інформації про підключення сервера документів тут ", + "DE.Controllers.Main.errorConnectToServer": "Не вдалося зберегти документ. Будь ласка, перевірте налаштування з'єднання або зверніться до свого адміністратора.
      Після натискання кнопки «ОК» вам буде запропоновано завантажити документ.

      Більше інформації про підключення сервера документів
      тут", "DE.Controllers.Main.errorDatabaseConnection": "Зовнішня помилка.
      Помилка підключення до бази даних. Будь ласка, зв'яжіться зі службою підтримки.", "DE.Controllers.Main.errorDataRange": "Неправильний діапазон даних.", "DE.Controllers.Main.errorDefaultMessage": "Код помилки: %1 ", @@ -146,7 +145,7 @@ "DE.Controllers.Main.uploadImageTextText": "Завантаження зображення...", "DE.Controllers.Main.uploadImageTitleText": "Завантаження зображення", "DE.Controllers.Main.warnLicenseExp": "Термін дії вашої ліцензії минув.
      Будь ласка, оновіть свою ліцензію та оновіть сторінку.", - "DE.Controllers.Main.warnNoLicense": "Ви використовуєте відкриту версію ONLYOFFICE. Ця версія має обмеження для одночасного підключення до сервера документів (20 підключень за один раз).
      Якщо вам потрібно більше, подумайте про придбання комерційної ліцензії.", + "DE.Controllers.Main.warnNoLicense": "Ви використовуєте відкриту версію %1. Ця версія має обмеження для одночасного підключення до сервера документів (20 підключень за один раз).
      Якщо вам потрібно більше, подумайте про придбання комерційної ліцензії.", "DE.Controllers.Main.warnProcessRightsChange": "Вам відмовлено у наданні права редагувати файл.", "DE.Controllers.Search.textNoTextFound": "Текст не знайдено", "DE.Controllers.Search.textReplaceAll": "Замінити усе", diff --git a/apps/documenteditor/mobile/locale/vi.json b/apps/documenteditor/mobile/locale/vi.json index 3a3cf3e4d..a920abb73 100644 --- a/apps/documenteditor/mobile/locale/vi.json +++ b/apps/documenteditor/mobile/locale/vi.json @@ -46,7 +46,6 @@ "DE.Controllers.Main.convertationTimeoutText": "Đã quá thời gian chờ chuyển đổi.", "DE.Controllers.Main.criticalErrorExtText": "Ấn 'OK' để trở lại danh sách tài liệu.", "DE.Controllers.Main.criticalErrorTitle": "Lỗi", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE Document Editor", "DE.Controllers.Main.downloadErrorText": "Tải về không thành công.", "DE.Controllers.Main.downloadMergeText": "Đang tải...", "DE.Controllers.Main.downloadMergeTitle": "Đang tải về", @@ -54,7 +53,7 @@ "DE.Controllers.Main.downloadTitleText": "Đang tải tài liệu...", "DE.Controllers.Main.errorBadImageUrl": "URL hình ảnh không chính xác", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Kết nối máy chủ bị mất. Bạn không thể chỉnh sửa nữa.", - "DE.Controllers.Main.errorConnectToServer": "Không thể lưu tài liệu. Vui lòng kiểm tra cài đặt kết nối hoặc liên hệ với quản trị viên của bạn.
      Khi bạn nhấp vào nút 'OK', bạn sẽ được nhắc tải xuống tài liệu.

      Tìm thêm thông tin về kết nối Server Tài liệu ở đây", + "DE.Controllers.Main.errorConnectToServer": "Không thể lưu tài liệu. Vui lòng kiểm tra cài đặt kết nối hoặc liên hệ với quản trị viên của bạn.
      Khi bạn nhấp vào nút 'OK', bạn sẽ được nhắc tải xuống tài liệu.

      Tìm thêm thông tin về kết nối Server Tài liệu ở đây", "DE.Controllers.Main.errorDatabaseConnection": "Lỗi bên ngoài.
      Lỗi kết nối cơ sở dữ liệu. Vui lòng liên hệ bộ phận hỗ trợ.", "DE.Controllers.Main.errorDataRange": "Phạm vi dữ liệu không chính xác.", "DE.Controllers.Main.errorDefaultMessage": "Mã lỗi: %1", @@ -146,7 +145,7 @@ "DE.Controllers.Main.uploadImageTextText": "Đang tải lên hình ảnh...", "DE.Controllers.Main.uploadImageTitleText": "Đang tải lên hình ảnh", "DE.Controllers.Main.warnLicenseExp": "Giấy phép của bạn đã hết hạn.
      Vui lòng cập nhật giấy phép và làm mới trang.", - "DE.Controllers.Main.warnNoLicense": "Bạn đang sử dụng phiên bản nguồn mở của ONLYOFFICE. Phiên bản có giới hạn các kết nối đồng thời với server tài liệu (20 kết nối cùng một lúc).
      Nếu bạn cần thêm, hãy cân nhắc mua giấy phép thương mại.", + "DE.Controllers.Main.warnNoLicense": "Bạn đang sử dụng phiên bản nguồn mở của %1. Phiên bản có giới hạn các kết nối đồng thời với server tài liệu (20 kết nối cùng một lúc).
      Nếu bạn cần thêm, hãy cân nhắc mua giấy phép thương mại.", "DE.Controllers.Main.warnProcessRightsChange": "Bạn đã bị từ chối quyền chỉnh sửa file này.", "DE.Controllers.Search.textNoTextFound": "Không tìm thấy nội dung", "DE.Controllers.Search.textReplaceAll": "Thay thế tất cả", diff --git a/apps/documenteditor/mobile/locale/zh.json b/apps/documenteditor/mobile/locale/zh.json index 980d916ec..792378228 100644 --- a/apps/documenteditor/mobile/locale/zh.json +++ b/apps/documenteditor/mobile/locale/zh.json @@ -14,8 +14,6 @@ "DE.Controllers.AddTable.textColumns": "列", "DE.Controllers.AddTable.textRows": "行", "DE.Controllers.AddTable.textTableSize": "表格大小", - "DE.Controllers.DocumentHolder.menuAccept": "接受", - "DE.Controllers.DocumentHolder.menuAcceptAll": "接受全部", "DE.Controllers.DocumentHolder.menuAddLink": "增加链接", "DE.Controllers.DocumentHolder.menuCopy": "复制", "DE.Controllers.DocumentHolder.menuCut": "剪切", @@ -24,8 +22,6 @@ "DE.Controllers.DocumentHolder.menuMore": "更多", "DE.Controllers.DocumentHolder.menuOpenLink": "打开链接", "DE.Controllers.DocumentHolder.menuPaste": "粘贴", - "DE.Controllers.DocumentHolder.menuReject": "拒绝", - "DE.Controllers.DocumentHolder.menuRejectAll": "拒绝全部", "DE.Controllers.DocumentHolder.menuReview": "检查", "DE.Controllers.DocumentHolder.sheetCancel": "取消", "DE.Controllers.DocumentHolder.textGuest": "游客", @@ -54,7 +50,6 @@ "DE.Controllers.Main.convertationTimeoutText": "转换超时", "DE.Controllers.Main.criticalErrorExtText": "按“确定”返回文件列表", "DE.Controllers.Main.criticalErrorTitle": "错误:", - "DE.Controllers.Main.defaultTitleText": "ONLYOFFICE文档编辑器", "DE.Controllers.Main.downloadErrorText": "下载失败", "DE.Controllers.Main.downloadMergeText": "下载中…", "DE.Controllers.Main.downloadMergeTitle": "下载中", @@ -63,7 +58,7 @@ "DE.Controllers.Main.errorAccessDeny": "您正在尝试执行您没有权限的操作。
      请联系您的文档服务器管理员.", "DE.Controllers.Main.errorBadImageUrl": "图片地址不正确", "DE.Controllers.Main.errorCoAuthoringDisconnect": "服务器连接丢失。您无法再进行编辑。", - "DE.Controllers.Main.errorConnectToServer": "这份文件无法保存。请检查连接设置或联系您的管理员。
      当你点击“OK”按钮,系统将提示您下载文档。

      找到更多信息连接文件服务器在这里", + "DE.Controllers.Main.errorConnectToServer": "这份文件无法保存。请检查连接设置或联系您的管理员。
      当你点击“OK”按钮,系统将提示您下载文档。

      找到更多信息连接文件服务器
      在这里", "DE.Controllers.Main.errorDatabaseConnection": "外部错误。
      数据库连接错误。请联系客服支持。", "DE.Controllers.Main.errorDataEncrypted": "加密更改已收到,无法对其解密。", "DE.Controllers.Main.errorDataRange": "数据范围不正确", @@ -108,9 +103,9 @@ "DE.Controllers.Main.scriptLoadError": "连接速度过慢,部分组件无法被加载。请重新加载页面。", "DE.Controllers.Main.sendMergeText": "任务合并", "DE.Controllers.Main.sendMergeTitle": "任务合并", - "DE.Controllers.Main.splitDividerErrorText": "该行数必须是%1的除数。", - "DE.Controllers.Main.splitMaxColsErrorText": "列数必须小于%1", - "DE.Controllers.Main.splitMaxRowsErrorText": "行数必须小于%1", + "DE.Controllers.Main.splitDividerErrorText": "该行数必须是%1的除数。", + "DE.Controllers.Main.splitMaxColsErrorText": "列数必须小于%1", + "DE.Controllers.Main.splitMaxRowsErrorText": "行数必须小于%1", "DE.Controllers.Main.textAnonymous": "访客", "DE.Controllers.Main.textBack": "返回", "DE.Controllers.Main.textBuyNow": "访问网站", @@ -168,7 +163,7 @@ "DE.Controllers.Main.warnLicenseExp": "您的许可证已过期。
      请更新您的许可证并刷新页面。", "DE.Controllers.Main.warnLicenseUsersExceeded": "并发用户数量已超出限制,文档打开后将仅供查看。
      请联系您的账户管理员了解详情。", "DE.Controllers.Main.warnNoLicense": "该版本对文档服务器的并发连接有限制。
      如果需要更多请考虑购买商业许可证。", - "DE.Controllers.Main.warnNoLicenseUsers": "此版本的ONLYOFFICE编辑器对并发用户数量有一定的限制。
      如果需要更多,请考虑购买商用许可证。", + "DE.Controllers.Main.warnNoLicenseUsers": "此版本的%1编辑器对并发用户数量有一定的限制。
      如果需要更多,请考虑购买商用许可证。", "DE.Controllers.Main.warnProcessRightsChange": "您被拒绝编辑文件的权限。", "DE.Controllers.Search.textNoTextFound": "文本没找到", "DE.Controllers.Search.textReplaceAll": "全部替换", diff --git a/apps/documenteditor/mobile/resources/css/app-ios.css b/apps/documenteditor/mobile/resources/css/app-ios.css index 0d45436ef..36046fb2f 100644 --- a/apps/documenteditor/mobile/resources/css/app-ios.css +++ b/apps/documenteditor/mobile/resources/css/app-ios.css @@ -874,7 +874,7 @@ p { width: 100%; height: 100%; overflow: hidden; - background: #efeff4; + background: #000; } .page { box-sizing: border-box; @@ -5844,7 +5844,9 @@ html:not(.phone) #editor-navbar.navbar .right a + a, html:not(.phone) #editor-navbar.navbar .left a + a { margin-left: 10px; } -.phone.ios .container-edit .navbar:before { +.phone.ios .container-edit .navbar:before, +.phone.ios .container-collaboration .navbar:before, +.phone.ios .container-filter .navbar:before { content: ''; position: absolute; left: 0; @@ -5859,20 +5861,28 @@ html:not(.phone) #editor-navbar.navbar .left a + a { -webkit-transform-origin: 50% 0%; transform-origin: 50% 0%; } -html.pixel-ratio-2 .phone.ios .container-edit .navbar:before { +html.pixel-ratio-2 .phone.ios .container-edit .navbar:before, +html.pixel-ratio-2 .phone.ios .container-collaboration .navbar:before, +html.pixel-ratio-2 .phone.ios .container-filter .navbar:before { -webkit-transform: scaleY(0.5); transform: scaleY(0.5); } -html.pixel-ratio-3 .phone.ios .container-edit .navbar:before { +html.pixel-ratio-3 .phone.ios .container-edit .navbar:before, +html.pixel-ratio-3 .phone.ios .container-collaboration .navbar:before, +html.pixel-ratio-3 .phone.ios .container-filter .navbar:before { -webkit-transform: scaleY(0.33); transform: scaleY(0.33); } -.phone.ios .container-edit .page-content .list-block:first-child { +.phone.ios .container-edit .page-content .list-block:first-child, +.phone.ios .container-collaboration .page-content .list-block:first-child, +.phone.ios .container-filter .page-content .list-block:first-child { margin-top: -1px; } .container-edit.popover, .container-add.popover, -.container-settings.popover { +.container-settings.popover, +.container-collaboration.popover, +.container-filter.popover { width: 360px; } .settings.popup .list-block ul, @@ -6236,9 +6246,185 @@ html.pixel-ratio-3 .document-menu .list-block li:last-child li .item-inner:after margin-right: 5px; } .about .logo { - background: url('../../../../common/mobile/resources/img/about/onlyoffice.svg') no-repeat center; + background: url('../../../../common/mobile/resources/img/about/logo.svg') no-repeat center; margin-top: 20px; } +.color-schemes-menu { + cursor: pointer; + display: block; + background-color: #fff; +} +.color-schemes-menu .item-content { + padding-left: 0; +} +.color-schemes-menu .item-inner { + justify-content: flex-start; + padding-left: 16px; +} +.color-schemes-menu .color-schema-block { + display: flex; +} +.color-schemes-menu .color { + min-width: 26px; + min-height: 26px; + margin: 0 2px 0 0; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset; +} +.color-schemes-menu .text { + margin-left: 20px; + color: #212121; +} +.page-change .block-description { + background-color: #fff; + padding-top: 15px; + padding-bottom: 15px; + margin: 0; + max-width: 100%; + word-wrap: break-word; +} +.page-change #user-name { + font-size: 17px; + line-height: 22px; + color: #000000; + margin: 0; +} +.page-change #date-change { + font-size: 14px; + line-height: 18px; + color: #6d6d72; + margin: 0; + margin-top: 3px; +} +.page-change #text-change { + color: #000000; + font-size: 15px; + line-height: 20px; + margin: 0; + margin-top: 10px; +} +.page-change .block-btn, +.page-change .content-block.block-btn:first-child { + display: flex; + flex-direction: row; + justify-content: space-around; + margin: 26px 0; +} +.page-change .block-btn #btn-next-change, +.page-change .content-block.block-btn:first-child #btn-next-change, +.page-change .block-btn #btn-reject-change, +.page-change .content-block.block-btn:first-child #btn-reject-change { + margin-left: 20px; +} +.page-change .block-btn #btn-goto-change, +.page-change .content-block.block-btn:first-child #btn-goto-change { + margin-right: 20px; +} +.page-change .block-btn .right-buttons, +.page-change .content-block.block-btn:first-child .right-buttons { + display: flex; +} +.page-change .block-btn .link, +.page-change .content-block.block-btn:first-child .link { + display: inline-block; +} +.navbar .center-collaboration { + display: flex; + justify-content: space-around; +} +.container-collaboration .navbar .right.close-collaboration { + position: absolute; + right: 10px; +} +.container-collaboration .page-content .list-block:first-child { + margin-top: -1px; +} +#user-list .item-content { + padding-left: 0; +} +#user-list .item-inner { + justify-content: flex-start; + padding-left: 15px; +} +#user-list .length { + margin-left: 4px; +} +#user-list .color { + min-width: 40px; + min-height: 40px; + margin-right: 20px; + text-align: center; + border-radius: 50px; + line-height: 40px; + color: #373737; + font-weight: 500; +} +#user-list ul:before { + content: none; +} +.page-comments .list-block .item-inner { + display: block; + padding: 16px 0; + word-wrap: break-word; +} +.page-comments p { + margin: 0; +} +.page-comments .user-name { + font-size: 17px; + line-height: 22px; + color: #000000; + margin: 0; + font-weight: bold; +} +.page-comments .comment-date, +.page-comments .reply-date { + font-size: 12px; + line-height: 18px; + color: #6d6d72; + margin: 0; + margin-top: 0px; +} +.page-comments .comment-text, +.page-comments .reply-text { + color: #000000; + font-size: 15px; + line-height: 25px; + margin: 0; + max-width: 100%; + padding-right: 15px; +} +.page-comments .reply-item { + margin-top: 15px; +} +.page-comments .reply-item .user-name { + padding-top: 16px; +} +.page-comments .reply-item:before { + content: ''; + position: absolute; + left: auto; + bottom: 0; + right: auto; + top: 0; + height: 1px; + width: 100%; + background-color: #c8c7cc; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +.page-comments .comment-quote { + color: #446995; + border-left: 1px solid #446995; + padding-left: 10px; + margin: 5px 0; + font-size: 15px; +} +.settings.popup .list-block ul.list-reply:last-child:after, +.settings.popover .list-block ul.list-reply:last-child:after { + display: none; +} .tablet .searchbar.document.replace .center .searchbar:first-child { margin-right: 10px; } @@ -6686,9 +6872,9 @@ i.icon.icon-format-dotx { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2233%22%20height%3D%2233%22%20viewBox%3D%220%200%2033%2033%22%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill%3A%23446995%3B%7D.cls-2%7Bfill%3A%23fff%3B%7D.cls-3%7Bfill%3A%23446995%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%3E%3Crect%20id%3D%22Rectangle_20%22%20data-name%3D%22Rectangle%2020%22%20width%3D%2233%22%20height%3D%2233%22%20fill%3D%22none%22%2F%3E%3Cpath%20id%3D%22Path_38%22%20data-name%3D%22Path%2038%22%20d%3D%22M12.223%2C119.714c1.251-.066%2C2.5-.115%2C3.752-.177.875%2C4.123%2C1.771%2C8.239%2C2.718%2C12.343.744-4.239%2C1.567-8.464%2C2.363-12.7%2C1.317-.042%2C2.633-.109%2C3.944-.183-1.488%2C5.917-2.792%2C11.886-4.417%2C17.767-1.1.531-2.745-.026-4.049.06-.876-4.042-1.9-8.061-2.679-12.123-.77%2C3.945-1.771%2C7.854-2.653%2C11.775-1.264-.06-2.535-.134-3.805-.213C6.3%2C130.892%2C5.02%2C125.553%2C4%2C120.167c1.125-.049%2C2.258-.093%2C3.384-.129.678%2C3.889%2C1.448%2C7.762%2C2.041%2C11.659C10.353%2C127.7%2C11.3%2C123.708%2C12.223%2C119.714Z%22%20transform%3D%22translate(-2%20-117)%22%20class%3D%22cls-1%22%2F%3E%3Cg%20id%3D%22Group_5%22%20data-name%3D%22Group%205%22%20transform%3D%22translate(16%2016)%22%3E%3Cpath%20id%3D%22Path_44%22%20data-name%3D%22Path%2044%22%20d%3D%22M1.011%2C0H13.989A1.011%2C1.011%2C0%2C0%2C1%2C15%2C1.011V13.989A1.011%2C1.011%2C0%2C0%2C1%2C13.989%2C15H1.011A1.011%2C1.011%2C0%2C0%2C1%2C0%2C13.989V1.011A1.011%2C1.011%2C0%2C0%2C1%2C1.011%2C0Z%22%20class%3D%22cls-1%22%2F%3E%3Cpath%20id%3D%22Path_39%22%20data-name%3D%22Path%2039%22%20d%3D%22M5.794%2C13.25V3.911H9.258V2.25h-9V3.911H3.729V13.25Z%22%20transform%3D%22translate(2.742%20-0.25)%22%20class%3D%22cls-2%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } i.icon.icon-format-txt { - width: 30px; - height: 30px; - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewBox%3D%22-14.47%20-14.5%2058%2058%22%20height%3D%2258px%22%20width%3D%2258px%22%20y%3D%220px%22%20x%3D%220px%22%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill%3A%23446995%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2228%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2224%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2220%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2216%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2212%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%228%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%224%22%20%2F%3E%3Crect%20class%3D%22cls-1%22%20height%3D%221%22%20width%3D%2229.063%22%20%2F%3E%3C%2Fsvg%3E"); + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M22%2017H2V18H22V17Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2020H2V21H22V20Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2014H2V15H22V14Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2011H2V12H22V11Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%208H2V9H22V8Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%205H2V6H22V5Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%202H2V3H22V2Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); } i.icon.icon-format-pdf { width: 30px; @@ -6715,6 +6901,71 @@ i.icon.icon-format-html { height: 30px; background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2262px%22%20height%3D%2262px%22%20viewBox%3D%220%200%2062%2062%22%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill%3A%23446995%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%3E%3Cpath%20class%3D%22cls-1%22%20d%3D%22M24.993%2C38.689L11.34%2C32.753v-3.288l13.653-5.91v3.872l-9.523%2C3.641l9.523%2C3.777V38.689z%22%20%2F%3E%3Cpath%20class%3D%22cls-1%22%20d%3D%22M27.09%2C41.298l4.931-20.596h2.867l-4.986%2C20.596H27.09z%22%20%2F%3E%3Cpath%20class%3D%22cls-1%22%20d%3D%22M36.986%2C38.703v-3.845l9.536-3.75L36.986%2C27.4v-3.817l13.666%2C5.91v3.261L36.986%2C38.703z%22%20%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } +i.icon.icon-format-rtf { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20x%3D%222%22%20y%3D%222%22%20width%3D%227%22%20height%3D%227%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2011H2V12H22V11Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2014H2V15H22V14Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2017H2V18H22V17Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2020H2V21H22V20Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%202H11V3H22V2Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%205H11V6H22V5Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%208H11V9H22V8Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-collaboration { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M15.9912%206C15.9912%208.34102%2015.4074%2010.1346%2014.6055%2011.3121C13.7983%2012.4974%2012.8249%2013%2011.9912%2013C11.1575%2013%2010.1841%2012.4974%209.37695%2011.3121C8.57501%2010.1346%207.99121%208.34102%207.99121%206C7.99121%203.61508%209.96974%202%2011.9912%202C14.0127%202%2015.9912%203.61508%2015.9912%206ZM14.5015%2012.9506C13.7365%2013.6361%2012.8649%2014%2011.9912%2014C11.1195%2014%2010.2499%2013.6378%209.48619%2012.9554C7.78363%2013.6081%206.36015%2014.2591%205.26963%2014.9224C3.55256%2015.9667%203%2016.8326%203%2017.5C3%2018.2545%203.4257%2019.0877%204.82302%2019.7879C6.25015%2020.5031%208.57272%2020.9999%2012%2021C15.4273%2021%2017.7499%2020.5031%2019.177%2019.7879C20.5743%2019.0877%2021%2018.2545%2021%2017.5C21%2016.8326%2020.4474%2015.9667%2018.7304%2014.9224C17.6372%2014.2575%2016.2095%2013.605%2014.5015%2012.9506ZM15.2272%2012.1594C16.2765%2010.7825%2016.9912%208.67814%2016.9912%206C16.9912%203%2014.5%201%2011.9912%201C9.48242%201%206.99121%203%206.99121%206C6.99121%208.68159%207.70777%2010.7879%208.75931%2012.1647C4.60309%2013.7964%202%2015.4951%202%2017.5C2%2019.9852%205%2021.9999%2012%2022C19%2022%2022%2019.9852%2022%2017.5C22%2015.4929%2019.3913%2013.7927%2015.2272%2012.1594Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); +} +i.icon.icon-accept { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M9%2018L2%2011L1%2012L9%2020L23%206L22%205L9%2018Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-reject { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%204L4%205L11%2012L4%2019L5%2020L12%2013L19%2020L20%2019L13%2012L20%205L19%204L12%2011L5%204Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-next-change { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23clipnext)%22%3E%3Cpath%20d%3D%22M16%2012L6.5%2022L7.5%2023L18%2012L7.5%201L6.5%202L16%2012Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clipnext%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"); +} +i.icon.icon-prev-change { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23clipprev)%22%3E%3Cpath%20d%3D%22M8%2012L17.5%202L16.5%201L6%2012L16.5%2023L17.5%2022L8%2012Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clipprev%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"); +} +i.icon.icon-goto { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%203H3V21H21V3ZM3%202H2V3V21V22H3H21H22V21V3V2H21H3ZM15.2929%208H9V7H16.5H17V7.5V15H16V8.70711L7.35355%2017.3536L6.64645%2016.6464L15.2929%208Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-delete-change { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M9.5%201H9V1.5V3H5H4H2V4H4V21V22H5H19H20V21V4H22V3H20H19H15V1.5V1H14.5H9.5ZM14%203V2H10V3H14ZM5%204H19V21H5V4ZM7%206H8V19H7V6ZM11%206H10V19H11V6ZM13%206H14V19H13V6ZM17%206H16V19H17V6Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-app-settings { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M7%2014H16C18.2091%2014%2020%2015.7909%2020%2018C20%2020.2091%2018.2091%2022%2016%2022H7C4.79086%2022%203%2020.2091%203%2018C3%2015.7909%204.79086%2014%207%2014ZM16%2013C18.7614%2013%2021%2015.2386%2021%2018C21%2020.7614%2018.7614%2023%2016%2023H7C4.23858%2023%202%2020.7614%202%2018C2%2015.2386%204.23858%2013%207%2013H16Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M16%2020C14.8954%2020%2014%2019.1046%2014%2018C14%2016.8954%2014.8954%2016%2016%2016C17.1046%2016%2018%2016.8954%2018%2018C18%2019.1046%2017.1046%2020%2016%2020ZM16%2021C14.3431%2021%2013%2019.6569%2013%2018C13%2016.3431%2014.3431%2015%2016%2015C17.6569%2015%2019%2016.3431%2019%2018C19%2019.6569%2017.6569%2021%2016%2021Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M16%203H7C4.79086%203%203%204.79086%203%207C3%209.20914%204.79086%2011%207%2011H16C18.2091%2011%2020%209.20914%2020%207C20%204.79086%2018.2091%203%2016%203ZM7%202C4.23858%202%202%204.23858%202%207C2%209.76142%204.23858%2012%207%2012H16C18.7614%2012%2021%209.76142%2021%207C21%204.23858%2018.7614%202%2016%202H7Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M7%209C8.10457%209%209%208.10457%209%207C9%205.89543%208.10457%205%207%205C5.89543%205%205%205.89543%205%207C5%208.10457%205.89543%209%207%209ZM7%2010C8.65685%2010%2010%208.65685%2010%207C10%205.34315%208.65685%204%207%204C5.34315%204%204%205.34315%204%207C4%208.65685%205.34315%2010%207%2010Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-footnote { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M22%208.11133H20.9177V5.15361L20.9282%204.66765L20.9457%204.13624C20.7659%204.31571%2020.641%204.43341%2020.5709%204.48935L19.9825%204.96132L19.4606%204.31105L21.1103%203H22V8.11133Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M10.3363%2018.8514L8.98161%2015.3968H4.61996L3.28021%2018.8514H2L6.3021%207.94526H7.36646L11.6462%2018.8514H10.3363ZM8.58713%2014.2601L7.3218%2010.8947C7.15806%2010.4687%206.98935%209.94621%206.81567%209.32711C6.70651%209.80258%206.5502%2010.3251%206.34676%2010.8947L5.06655%2014.2601H8.58713Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M16.1425%2010.5752C17.2143%2010.5752%2018.0454%2010.9417%2018.6359%2011.6748C19.2313%2012.4028%2019.5291%2013.4355%2019.5291%2014.7728C19.5291%2016.11%2019.2288%2017.1501%2018.6284%2017.893C18.033%2018.631%2017.2043%2019%2016.1425%2019C15.6115%2019%2015.1252%2018.9034%2014.6836%2018.7103C14.2469%2018.5121%2013.8798%2018.21%2013.582%2017.8039H13.4927L13.2322%2018.8514H12.3465V7.29149H13.582V10.0997C13.582%2010.7288%2013.5622%2011.2934%2013.5225%2011.7936H13.582C14.1576%2010.9814%2015.0111%2010.5752%2016.1425%2010.5752ZM15.9638%2011.6079C15.1203%2011.6079%2014.5124%2011.8506%2014.1403%2012.336C13.7681%2012.8164%2013.582%2013.6286%2013.582%2014.7728C13.582%2015.9169%2013.7731%2016.7366%2014.1551%2017.2318C14.5372%2017.7222%2015.15%2017.9673%2015.9936%2017.9673C16.7528%2017.9673%2017.3185%2017.6925%2017.6906%2017.1427C18.0628%2016.588%2018.2488%2015.793%2018.2488%2014.7579C18.2488%2013.698%2018.0628%2012.908%2017.6906%2012.388C17.3185%2011.8679%2016.7429%2011.6079%2015.9638%2011.6079Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-cut { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23cut)%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3.22427%2022.2702C4.51527%2023.1269%206.52738%2022.7183%207.6592%2021.0127C8.79101%2019.3071%208.38572%2017.2943%207.09472%2016.4376C5.80372%2015.5809%203.79161%2015.9896%202.65979%2017.6952C1.52798%2019.4008%201.93328%2021.4136%203.22427%2022.2702ZM2.67135%2023.1035C4.51208%2024.325%207.11827%2023.6364%208.49243%2021.5656C9.8666%2019.4948%209.48837%2016.8259%207.64764%2015.6044C5.80691%2014.3829%203.20072%2015.0714%201.82656%2017.1422C0.452398%2019.2131%200.830625%2021.882%202.67135%2023.1035Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M20.9158%2022.2702C19.6248%2023.1269%2017.6127%2022.7183%2016.4809%2021.0127C15.349%2019.3071%2015.7543%2017.2943%2017.0453%2016.4376C18.3363%2015.5809%2020.3484%2015.9896%2021.4803%2017.6952C22.6121%2019.4008%2022.2068%2021.4136%2020.9158%2022.2702ZM21.4687%2023.1035C19.628%2024.325%2017.0218%2023.6364%2015.6476%2021.5656C14.2735%2019.4948%2014.6517%2016.8259%2016.4924%2015.6044C18.3331%2014.3829%2020.9393%2015.0714%2022.3135%2017.1422C23.6877%2019.2131%2023.3094%2021.882%2021.4687%2023.1035Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20d%3D%22M16.4924%2015.6044L13.9037%2012.4737L19.9552%200.675715C20.0693%200.446914%2019.9552%200.172352%2019.727%200.0808313C19.4416%20-0.0106892%2019.0993%200.0808312%2018.9851%200.263872L12.0233%2011.4212L5.17562%200.263872C5.06149%200.035071%204.71911%20-0.0564496%204.43379%200.035071C4.14847%200.126592%204.03434%200.401153%204.14847%200.629955L10.2001%2012.4279L7.64761%2015.6044L9.2292%2018L12.0233%2013.4804L14.9108%2018L16.4924%2015.6044Z%22%20fill%3D%22white%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22cut%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22white%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"); +} +i.icon.icon-copy { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M1%201H15V7H16V0H0V17H8V16H1V1Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M23%208H9V23H23V8ZM8%207V24H24V7H8Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M13%205H3V4H13V5Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M8%209H3V8H8V9Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M8%2013H3V12H8V13Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2012H11V11H21V12Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2016H11V15H21V16Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2020H11V19H21V20Z%22%20fill%3D%22white%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-paste { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%202H0V20H9V24H24V7H19V2H14V3H18V7H9V19H1V3H5V2ZM10%208H23V23H10V8Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20d%3D%22M5%200H14V5H5V0Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2012H12V11H21V12Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2016H12V15H21V16Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2020H12V19H21V20Z%22%20fill%3D%22white%22%2F%3E%3C%2Fsvg%3E"); +} .label-switch input[type="checkbox"]:checked + .checkbox { background: #446995; } diff --git a/apps/documenteditor/mobile/resources/css/app-material.css b/apps/documenteditor/mobile/resources/css/app-material.css index ee390c99c..c6c7d000c 100644 --- a/apps/documenteditor/mobile/resources/css/app-material.css +++ b/apps/documenteditor/mobile/resources/css/app-material.css @@ -5628,12 +5628,16 @@ a.item-link, [disabled] [disabled] { opacity: 1; } -.phone.android .container-edit .page-content .list-block:first-child { +.phone.android .container-edit .page-content .list-block:first-child, +.phone.android .container-collaboration .page-content .list-block:first-child, +.phone.android .container-filter .page-content .list-block:first-child { margin-top: -1px; } .container-edit.popover, .container-add.popover, -.container-settings.popover { +.container-settings.popover, +.container-collaboration.popover, +.container-filter.popover { width: 360px; } .settings.popup .list-block, @@ -5836,7 +5840,175 @@ html.phone .document-menu .list-block .item-link { margin-right: 5px; } .about .logo { - background: url('../../../../common/mobile/resources/img/about/onlyoffice.svg') no-repeat center; + background: url('../../../../common/mobile/resources/img/about/logo.svg') no-repeat center; +} +.color-schemes-menu { + cursor: pointer; + display: block; + background-color: #fff; +} +.color-schemes-menu .item-content { + padding-left: 0; +} +.color-schemes-menu .item-inner { + justify-content: flex-start; + padding-left: 16px; +} +.color-schemes-menu .color-schema-block { + display: flex; +} +.color-schemes-menu .color { + min-width: 26px; + min-height: 26px; + margin: 0 2px 0 0; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset; +} +.color-schemes-menu .text { + margin-left: 20px; + color: #212121; +} +.page-change .block-description { + background-color: #fff; + padding-top: 15px; + padding-bottom: 15px; + margin: 0; + max-width: 100%; + word-wrap: break-word; +} +.page-change #user-name { + font-size: 17px; + line-height: 22px; + color: #000000; + margin: 0; +} +.page-change #date-change { + font-size: 14px; + line-height: 18px; + color: #6d6d72; + margin: 0; + margin-top: 3px; +} +.page-change #text-change { + color: #000000; + font-size: 15px; + line-height: 20px; + margin: 0; + margin-top: 10px; +} +.page-change .block-btn { + display: flex; + flex-direction: row; + justify-content: space-around; + margin: 0; + padding: 26px 0; + background-color: #EFEFF4; +} +.page-change .block-btn #btn-next-change, +.page-change .block-btn #btn-reject-change { + margin-left: 20px; +} +.page-change .block-btn #btn-goto-change { + margin-right: 20px; +} +.page-change .block-btn .right-buttons { + display: flex; +} +.page-change .block-btn .link { + display: inline-block; +} +.container-collaboration .navbar .right.close-collaboration { + position: absolute; + right: 5px; +} +.container-collaboration .page-content .list-block:first-child { + margin-top: -1px; +} +#user-list .item-content { + padding-left: 0; +} +#user-list .item-inner { + justify-content: flex-start; + padding-left: 15px; +} +#user-list .length { + margin-left: 4px; +} +#user-list .color { + min-width: 40px; + min-height: 40px; + margin-right: 20px; + text-align: center; + border-radius: 50px; + line-height: 40px; + color: #373737; + font-weight: 400; +} +#user-list ul:before { + content: none; +} +.page-comments .list-block .item-inner { + display: block; + padding: 16px 0; + word-wrap: break-word; +} +.page-comments p { + margin: 0; +} +.page-comments .user-name { + font-size: 17px; + line-height: 22px; + color: #000000; + margin: 0; + font-weight: bold; +} +.page-comments .comment-date, +.page-comments .reply-date { + font-size: 12px; + line-height: 18px; + color: #6d6d72; + margin: 0; + margin-top: 0px; +} +.page-comments .comment-text, +.page-comments .reply-text { + color: #000000; + font-size: 15px; + line-height: 25px; + margin: 0; + max-width: 100%; + padding-right: 15px; +} +.page-comments .reply-item { + margin-top: 15px; +} +.page-comments .reply-item .user-name { + padding-top: 16px; +} +.page-comments .reply-item:before { + content: ''; + position: absolute; + left: auto; + bottom: 0; + right: auto; + top: 0; + height: 1px; + width: 100%; + background-color: rgba(0, 0, 0, 0.12); + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +.page-comments .comment-quote { + color: #446995; + border-left: 1px solid #446995; + padding-left: 10px; + margin: 5px 0; + font-size: 15px; +} +.settings.popup .list-block ul.list-reply:last-child:after, +.settings.popover .list-block ul.list-reply:last-child:after { + display: none; } .tablet .searchbar.document.replace .center > .replace { display: flex; @@ -5950,6 +6122,11 @@ i.icon.icon-spellcheck { height: 22px; background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewBox%3D%220%200%2022%2022%22%20fill%3D%22%23446995%22%3E%3Cg%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M8%201L3%2015H4.2L5.97686%2010H11.0231L11.6768%2011.8394C11.955%2011.5504%2012.262%2011.2892%2012.593%2011.0605L9%201H8ZM8.5%202.9L10.6678%209H6.33223L8.5%202.9Z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M16%2021C18.7614%2021%2021%2018.7614%2021%2016C21%2013.2386%2018.7614%2011%2016%2011C13.2386%2011%2011%2013.2386%2011%2016C11%2018.7614%2013.2386%2021%2016%2021ZM15.3536%2018.3536L19.3536%2014.3536L18.6464%2013.6464L15%2017.2929L13.3536%2015.6464L12.6464%2016.3536L14.6464%2018.3536L15%2018.7071L15.3536%2018.3536Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } +i.icon.icon-settings { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewBox%3D%220%200%2022%2022%22%20fill%3D%22%23446995%22%3E%3Cg%3E%3Cpath%20d%3D%22M11.8%2C3l0.4%2C2c0.1%2C0.7%2C0.6%2C1.1%2C1.3%2C1.1c0.3%2C0%2C0.5-0.1%2C0.7-0.2l1.9-1.2l1.1%2C1.1l-1.1%2C1.8C15.8%2C8%2C15.8%2C8.5%2C16%2C8.9c0.2%2C0.4%2C0.5%2C0.7%2C1%2C0.8l2.1%2C0.5v1.6L17%2C12.2c-0.5%2C0.1-0.8%2C0.4-1%2C0.8c-0.2%2C0.4-0.1%2C0.9%2C0.1%2C1.2l1.2%2C1.9l-1.1%2C1.1l-1.8-1.1c-0.2-0.2-0.5-0.2-0.8-0.2c-0.6%2C0-1.2%2C0.5-1.3%2C1.1l-0.5%2C2.1h-1.6l-0.4-2C9.7%2C16.4%2C9.2%2C16%2C8.5%2C16c-0.3%2C0-0.5%2C0.1-0.7%2C0.2l-1.9%2C1.2l-1.1-1.1l1.1-1.8c0.3-0.4%2C0.3-0.9%2C0.1-1.3c-0.2-0.4-0.5-0.7-1-0.8l-2.1-0.5v-1.6l2-0.4c0.5-0.1%2C0.8-0.4%2C1-0.8C6.1%2C8.7%2C6%2C8.2%2C5.8%2C7.9l-1-2l1.1-1.1l1.8%2C1.1C8%2C6.1%2C8.2%2C6.2%2C8.5%2C6.2c0.6%2C0%2C1.2-0.5%2C1.3-1.1L10.3%2C3H11.8%20M11%2C15.5c2.5%2C0%2C4.5-2%2C4.5-4.5s-2-4.5-4.5-4.5s-4.5%2C2-4.5%2C4.5S8.5%2C15.5%2C11%2C15.5%20M12.1%2C2H9.9C9.6%2C2%2C9.4%2C2.2%2C9.3%2C2.5L8.8%2C4.9c0%2C0.2-0.2%2C0.3-0.3%2C0.3s-0.1%2C0-0.2-0.1L6.2%2C3.8C6.1%2C3.7%2C6%2C3.7%2C5.8%2C3.7c-0.1%2C0-0.3%2C0-0.4%2C0.1L3.8%2C5.4c-0.1%2C0.2-0.2%2C0.5%2C0%2C0.8l1.3%2C2.1c0.1%2C0.2%2C0.1%2C0.4-0.2%2C0.5L2.5%2C9.3C2.2%2C9.4%2C2%2C9.6%2C2%2C9.9v2.2c0%2C0.3%2C0.2%2C0.5%2C0.5%2C0.6l2.4%2C0.5c0.3%2C0.1%2C0.4%2C0.3%2C0.2%2C0.5l-1.3%2C2.1c-0.2%2C0.2-0.1%2C0.6%2C0.1%2C0.8l1.6%2C1.6c0.1%2C0.1%2C0.3%2C0.2%2C0.4%2C0.2s0.2%2C0%2C0.3-0.1L8.3%2C17c0.1-0.1%2C0.1-0.1%2C0.2-0.1s0.3%2C0.1%2C0.3%2C0.3l0.5%2C2.3C9.4%2C19.8%2C9.6%2C20%2C9.9%2C20h2.2c0.3%2C0%2C0.5-0.2%2C0.6-0.5l0.5-2.4c0-0.2%2C0.1-0.3%2C0.3-0.3c0.1%2C0%2C0.1%2C0%2C0.2%2C0.1l2.1%2C1.3c0.1%2C0.1%2C0.2%2C0.1%2C0.3%2C0.1c0.2%2C0%2C0.3-0.1%2C0.4-0.2l1.6-1.6c0.2-0.2%2C0.2-0.5%2C0.1-0.8l-1.3-2.1c-0.2-0.2-0.1-0.5%2C0.2-0.5l2.4-0.5c0.3-0.1%2C0.5-0.3%2C0.5-0.6V9.8c0-0.3-0.2-0.5-0.5-0.6l-2.4-0.5c-0.3-0.1-0.4-0.3-0.2-0.5l1.3-2.1c0.2-0.2%2C0.1-0.6-0.1-0.8l-1.6-1.6c-0.1-0.1-0.3-0.2-0.4-0.2c-0.1%2C0-0.2%2C0-0.3%2C0.1l-2.1%2C1.3C13.6%2C5%2C13.6%2C5%2C13.5%2C5c-0.1%2C0-0.3-0.1-0.3-0.3l-0.5-2.2C12.6%2C2.2%2C12.4%2C2%2C12.1%2C2L12.1%2C2z%20M11%2C14.5c-1.9%2C0-3.5-1.6-3.5-3.5S9.1%2C7.5%2C11%2C7.5s3.5%2C1.6%2C3.5%2C3.5S12.9%2C14.5%2C11%2C14.5L11%2C14.5z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); +} i.icon.icon-review { width: 22px; height: 28px; @@ -6175,9 +6352,9 @@ i.icon.icon-format-dotx { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2233%22%20height%3D%2233%22%20viewBox%3D%220%200%2033%2033%22%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill%3A%23446995%3B%7D.cls-2%7Bfill%3A%23fff%3B%7D.cls-3%7Bfill%3A%23446995%3B%7D%3C%2Fstyle%3E%3CclipPath%20id%3D%22clip-dotx%22%3E%3Crect%20width%3D%2233%22%20height%3D%2233%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3Cg%20id%3D%22dotx%22%20clip-path%3D%22url(%23clip-dotx)%22%3E%3Crect%20id%3D%22Rectangle_20%22%20data-name%3D%22Rectangle%2020%22%20width%3D%2233%22%20height%3D%2233%22%20fill%3D%22none%22%2F%3E%3Cpath%20id%3D%22Path_38%22%20data-name%3D%22Path%2038%22%20d%3D%22M12.223%2C119.714c1.251-.066%2C2.5-.115%2C3.752-.177.875%2C4.123%2C1.771%2C8.239%2C2.718%2C12.343.744-4.239%2C1.567-8.464%2C2.363-12.7%2C1.317-.042%2C2.633-.109%2C3.944-.183-1.488%2C5.917-2.792%2C11.886-4.417%2C17.767-1.1.531-2.745-.026-4.049.06-.876-4.042-1.9-8.061-2.679-12.123-.77%2C3.945-1.771%2C7.854-2.653%2C11.775-1.264-.06-2.535-.134-3.805-.213C6.3%2C130.892%2C5.02%2C125.553%2C4%2C120.167c1.125-.049%2C2.258-.093%2C3.384-.129.678%2C3.889%2C1.448%2C7.762%2C2.041%2C11.659C10.353%2C127.7%2C11.3%2C123.708%2C12.223%2C119.714Z%22%20transform%3D%22translate(-2%20-117)%22%20class%3D%22cls-1%22%2F%3E%3Cg%20id%3D%22Group_5%22%20data-name%3D%22Group%205%22%20transform%3D%22translate(16%2016)%22%3E%3Cpath%20id%3D%22Path_44%22%20data-name%3D%22Path%2044%22%20d%3D%22M1.011%2C0H13.989A1.011%2C1.011%2C0%2C0%2C1%2C15%2C1.011V13.989A1.011%2C1.011%2C0%2C0%2C1%2C13.989%2C15H1.011A1.011%2C1.011%2C0%2C0%2C1%2C0%2C13.989V1.011A1.011%2C1.011%2C0%2C0%2C1%2C1.011%2C0Z%22%20class%3D%22cls-1%22%2F%3E%3Cpath%20id%3D%22Path_39%22%20data-name%3D%22Path%2039%22%20d%3D%22M5.794%2C13.25V3.911H9.258V2.25h-9V3.911H3.729V13.25Z%22%20transform%3D%22translate(2.742%20-0.25)%22%20class%3D%22cls-2%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } i.icon.icon-format-txt { - width: 30px; - height: 30px; - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewBox%3D%22-14.47%20-14.5%2058%2058%22%20height%3D%2258px%22%20width%3D%2258px%22%20y%3D%220px%22%20x%3D%220px%22%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill%3A%23446995%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2228%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2224%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2220%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2216%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%2212%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%228%22%20%2F%3E%3Crect%20height%3D%221%22%20width%3D%2229.063%22%20class%3D%22cls-1%22%20y%3D%224%22%20%2F%3E%3Crect%20class%3D%22cls-1%22%20height%3D%221%22%20width%3D%2229.063%22%20%2F%3E%3C%2Fsvg%3E"); + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M22%2017H2V18H22V17Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2020H2V21H22V20Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2014H2V15H22V14Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2011H2V12H22V11Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%208H2V9H22V8Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%205H2V6H22V5Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%202H2V3H22V2Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); } i.icon.icon-format-pdf { width: 30px; @@ -6204,6 +6381,71 @@ i.icon.icon-format-html { height: 30px; background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2262px%22%20height%3D%2262px%22%20viewBox%3D%220%200%2062%2062%22%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill%3A%23446995%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%3E%3Cpath%20class%3D%22cls-1%22%20d%3D%22M24.993%2C38.689L11.34%2C32.753v-3.288l13.653-5.91v3.872l-9.523%2C3.641l9.523%2C3.777V38.689z%22%20%2F%3E%3Cpath%20class%3D%22cls-1%22%20d%3D%22M27.09%2C41.298l4.931-20.596h2.867l-4.986%2C20.596H27.09z%22%20%2F%3E%3Cpath%20class%3D%22cls-1%22%20d%3D%22M36.986%2C38.703v-3.845l9.536-3.75L36.986%2C27.4v-3.817l13.666%2C5.91v3.261L36.986%2C38.703z%22%20%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } +i.icon.icon-format-rtf { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20x%3D%222%22%20y%3D%222%22%20width%3D%227%22%20height%3D%227%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2011H2V12H22V11Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2014H2V15H22V14Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2017H2V18H22V17Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%2020H2V21H22V20Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%202H11V3H22V2Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%205H11V6H22V5Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M22%208H11V9H22V8Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-collaboration { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M15.9912%206C15.9912%208.34102%2015.4074%2010.1346%2014.6055%2011.3121C13.7983%2012.4974%2012.8249%2013%2011.9912%2013C11.1575%2013%2010.1841%2012.4974%209.37695%2011.3121C8.57501%2010.1346%207.99121%208.34102%207.99121%206C7.99121%203.61508%209.96974%202%2011.9912%202C14.0127%202%2015.9912%203.61508%2015.9912%206ZM14.5015%2012.9506C13.7365%2013.6361%2012.8649%2014%2011.9912%2014C11.1195%2014%2010.2499%2013.6378%209.48619%2012.9554C7.78363%2013.6081%206.36015%2014.2591%205.26963%2014.9224C3.55256%2015.9667%203%2016.8326%203%2017.5C3%2018.2545%203.4257%2019.0877%204.82302%2019.7879C6.25015%2020.5031%208.57272%2020.9999%2012%2021C15.4273%2021%2017.7499%2020.5031%2019.177%2019.7879C20.5743%2019.0877%2021%2018.2545%2021%2017.5C21%2016.8326%2020.4474%2015.9667%2018.7304%2014.9224C17.6372%2014.2575%2016.2095%2013.605%2014.5015%2012.9506ZM15.2272%2012.1594C16.2765%2010.7825%2016.9912%208.67814%2016.9912%206C16.9912%203%2014.5%201%2011.9912%201C9.48242%201%206.99121%203%206.99121%206C6.99121%208.68159%207.70777%2010.7879%208.75931%2012.1647C4.60309%2013.7964%202%2015.4951%202%2017.5C2%2019.9852%205%2021.9999%2012%2022C19%2022%2022%2019.9852%2022%2017.5C22%2015.4929%2019.3913%2013.7927%2015.2272%2012.1594Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); +} +i.icon.icon-accept { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M9%2018L2%2011L1%2012L9%2020L23%206L22%205L9%2018Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-reject { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%204L4%205L11%2012L4%2019L5%2020L12%2013L19%2020L20%2019L13%2012L20%205L19%204L12%2011L5%204Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-next-change { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23clipnext)%22%3E%3Cpath%20d%3D%22M16%2012L6.5%2022L7.5%2023L18%2012L7.5%201L6.5%202L16%2012Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clipnext%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"); +} +i.icon.icon-prev-change { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23clipprev)%22%3E%3Cpath%20d%3D%22M8%2012L17.5%202L16.5%201L6%2012L16.5%2023L17.5%2022L8%2012Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clipprev%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"); +} +i.icon.icon-goto { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%203H3V21H21V3ZM3%202H2V3V21V22H3H21H22V21V3V2H21H3ZM15.2929%208H9V7H16.5H17V7.5V15H16V8.70711L7.35355%2017.3536L6.64645%2016.6464L15.2929%208Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-delete-change { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M9.5%201H9V1.5V3H5H4H2V4H4V21V22H5H19H20V21V4H22V3H20H19H15V1.5V1H14.5H9.5ZM14%203V2H10V3H14ZM5%204H19V21H5V4ZM7%206H8V19H7V6ZM11%206H10V19H11V6ZM13%206H14V19H13V6ZM17%206H16V19H17V6Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-app-settings { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M7%2014H16C18.2091%2014%2020%2015.7909%2020%2018C20%2020.2091%2018.2091%2022%2016%2022H7C4.79086%2022%203%2020.2091%203%2018C3%2015.7909%204.79086%2014%207%2014ZM16%2013C18.7614%2013%2021%2015.2386%2021%2018C21%2020.7614%2018.7614%2023%2016%2023H7C4.23858%2023%202%2020.7614%202%2018C2%2015.2386%204.23858%2013%207%2013H16Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M16%2020C14.8954%2020%2014%2019.1046%2014%2018C14%2016.8954%2014.8954%2016%2016%2016C17.1046%2016%2018%2016.8954%2018%2018C18%2019.1046%2017.1046%2020%2016%2020ZM16%2021C14.3431%2021%2013%2019.6569%2013%2018C13%2016.3431%2014.3431%2015%2016%2015C17.6569%2015%2019%2016.3431%2019%2018C19%2019.6569%2017.6569%2021%2016%2021Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M16%203H7C4.79086%203%203%204.79086%203%207C3%209.20914%204.79086%2011%207%2011H16C18.2091%2011%2020%209.20914%2020%207C20%204.79086%2018.2091%203%2016%203ZM7%202C4.23858%202%202%204.23858%202%207C2%209.76142%204.23858%2012%207%2012H16C18.7614%2012%2021%209.76142%2021%207C21%204.23858%2018.7614%202%2016%202H7Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M7%209C8.10457%209%209%208.10457%209%207C9%205.89543%208.10457%205%207%205C5.89543%205%205%205.89543%205%207C5%208.10457%205.89543%209%207%209ZM7%2010C8.65685%2010%2010%208.65685%2010%207C10%205.34315%208.65685%204%207%204C5.34315%204%204%205.34315%204%207C4%208.65685%205.34315%2010%207%2010Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-footnote { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M22%208.11133H20.9177V5.15361L20.9282%204.66765L20.9457%204.13624C20.7659%204.31571%2020.641%204.43341%2020.5709%204.48935L19.9825%204.96132L19.4606%204.31105L21.1103%203H22V8.11133Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M10.3363%2018.8514L8.98161%2015.3968H4.61996L3.28021%2018.8514H2L6.3021%207.94526H7.36646L11.6462%2018.8514H10.3363ZM8.58713%2014.2601L7.3218%2010.8947C7.15806%2010.4687%206.98935%209.94621%206.81567%209.32711C6.70651%209.80258%206.5502%2010.3251%206.34676%2010.8947L5.06655%2014.2601H8.58713Z%22%20fill%3D%22%23446995%22%2F%3E%3Cpath%20d%3D%22M16.1425%2010.5752C17.2143%2010.5752%2018.0454%2010.9417%2018.6359%2011.6748C19.2313%2012.4028%2019.5291%2013.4355%2019.5291%2014.7728C19.5291%2016.11%2019.2288%2017.1501%2018.6284%2017.893C18.033%2018.631%2017.2043%2019%2016.1425%2019C15.6115%2019%2015.1252%2018.9034%2014.6836%2018.7103C14.2469%2018.5121%2013.8798%2018.21%2013.582%2017.8039H13.4927L13.2322%2018.8514H12.3465V7.29149H13.582V10.0997C13.582%2010.7288%2013.5622%2011.2934%2013.5225%2011.7936H13.582C14.1576%2010.9814%2015.0111%2010.5752%2016.1425%2010.5752ZM15.9638%2011.6079C15.1203%2011.6079%2014.5124%2011.8506%2014.1403%2012.336C13.7681%2012.8164%2013.582%2013.6286%2013.582%2014.7728C13.582%2015.9169%2013.7731%2016.7366%2014.1551%2017.2318C14.5372%2017.7222%2015.15%2017.9673%2015.9936%2017.9673C16.7528%2017.9673%2017.3185%2017.6925%2017.6906%2017.1427C18.0628%2016.588%2018.2488%2015.793%2018.2488%2014.7579C18.2488%2013.698%2018.0628%2012.908%2017.6906%2012.388C17.3185%2011.8679%2016.7429%2011.6079%2015.9638%2011.6079Z%22%20fill%3D%22%23446995%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-cut { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23cut)%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3.22427%2022.2702C4.51527%2023.1269%206.52738%2022.7183%207.6592%2021.0127C8.79101%2019.3071%208.38572%2017.2943%207.09472%2016.4376C5.80372%2015.5809%203.79161%2015.9896%202.65979%2017.6952C1.52798%2019.4008%201.93328%2021.4136%203.22427%2022.2702ZM2.67135%2023.1035C4.51208%2024.325%207.11827%2023.6364%208.49243%2021.5656C9.8666%2019.4948%209.48837%2016.8259%207.64764%2015.6044C5.80691%2014.3829%203.20072%2015.0714%201.82656%2017.1422C0.452398%2019.2131%200.830625%2021.882%202.67135%2023.1035Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M20.9158%2022.2702C19.6248%2023.1269%2017.6127%2022.7183%2016.4809%2021.0127C15.349%2019.3071%2015.7543%2017.2943%2017.0453%2016.4376C18.3363%2015.5809%2020.3484%2015.9896%2021.4803%2017.6952C22.6121%2019.4008%2022.2068%2021.4136%2020.9158%2022.2702ZM21.4687%2023.1035C19.628%2024.325%2017.0218%2023.6364%2015.6476%2021.5656C14.2735%2019.4948%2014.6517%2016.8259%2016.4924%2015.6044C18.3331%2014.3829%2020.9393%2015.0714%2022.3135%2017.1422C23.6877%2019.2131%2023.3094%2021.882%2021.4687%2023.1035Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20d%3D%22M16.4924%2015.6044L13.9037%2012.4737L19.9552%200.675715C20.0693%200.446914%2019.9552%200.172352%2019.727%200.0808313C19.4416%20-0.0106892%2019.0993%200.0808312%2018.9851%200.263872L12.0233%2011.4212L5.17562%200.263872C5.06149%200.035071%204.71911%20-0.0564496%204.43379%200.035071C4.14847%200.126592%204.03434%200.401153%204.14847%200.629955L10.2001%2012.4279L7.64761%2015.6044L9.2292%2018L12.0233%2013.4804L14.9108%2018L16.4924%2015.6044Z%22%20fill%3D%22black%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22cut%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22black%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"); +} +i.icon.icon-copy { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M1%201H15V7H16V0H0V17H8V16H1V1Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M23%208H9V23H23V8ZM8%207V24H24V7H8Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M13%205H3V4H13V5Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M8%209H3V8H8V9Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M8%2013H3V12H8V13Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2012H11V11H21V12Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2016H11V15H21V16Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2020H11V19H21V20Z%22%20fill%3D%22black%22%2F%3E%3C%2Fsvg%3E"); +} +i.icon.icon-paste { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%202H0V20H9V24H24V7H19V2H14V3H18V7H9V19H1V3H5V2ZM10%208H23V23H10V8Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20d%3D%22M5%200H14V5H5V0Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2012H12V11H21V12Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2016H12V15H21V16Z%22%20fill%3D%22black%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2020H12V19H21V20Z%22%20fill%3D%22black%22%2F%3E%3C%2Fsvg%3E"); +} .navbar i.icon.icon-undo { width: 22px; height: 22px; @@ -6254,6 +6496,11 @@ i.icon.icon-format-html { height: 22px; background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewBox%3D%220%200%2022%2022%22%20fill%3D%22%23fff%22%3E%3Cg%3E%3Cpolygon%20points%3D%2210.9%2C16.9%202%2C8.1%204.1%2C6%2011.1%2C12.8%2017.9%2C6%2020%2C8.1%2011.2%2C16.9%2011.1%2C17%20%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } +.navbar i.icon.icon-collaboration { + width: 24px; + height: 24px; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M14.9912%206C14.9912%208.18203%2014.4464%209.76912%2013.7789%2010.7492C13.101%2011.7447%2012.4042%2012%2011.9912%2012C11.5782%2012%2010.8814%2011.7447%2010.2035%2010.7492C9.53601%209.76912%208.99121%208.18203%208.99121%206C8.99121%204.23017%2010.4571%203%2011.9912%203C13.5254%203%2014.9912%204.23017%2014.9912%206ZM13.4917%2013.6397C13.0059%2013.8771%2012.4989%2014%2011.9912%2014C11.4861%2014%2010.9817%2013.8784%2010.4983%2013.6434C8.53188%2014.3681%206.94518%2015.0737%205.78927%2015.7768C4.10512%2016.8011%204%2017.4079%204%2017.5C4%2017.7664%204.1014%2018.3077%205.27104%2018.8939C6.50029%2019.5099%208.64545%2019.9999%2012%2020C15.3546%2020%2017.4997%2019.5099%2018.7289%2018.8939C19.8986%2018.3078%2020%2017.7664%2020%2017.5C20%2017.4079%2019.8949%2016.8011%2018.2107%2015.7768C17.0529%2015.0726%2015.4627%2014.3657%2013.4917%2013.6397ZM15.2272%2012.1594C16.2765%2010.7825%2016.9912%208.67814%2016.9912%206C16.9912%203%2014.5%201%2011.9912%201C9.48242%201%206.99121%203%206.99121%206C6.99121%208.68159%207.70777%2010.7879%208.75931%2012.1647C4.60309%2013.7964%202%2015.4951%202%2017.5C2%2019.9852%205%2021.9999%2012%2022C19%2022%2022%2019.9852%2022%2017.5C22%2015.4929%2019.3913%2013.7927%2015.2272%2012.1594Z%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E"); +} .sailfish i.icon.icon-text-align-center { background-color: transparent; -webkit-mask-image: none; diff --git a/apps/documenteditor/mobile/resources/less/app-ios.less b/apps/documenteditor/mobile/resources/less/app-ios.less index 2c7ace91f..9cd8b17cc 100644 --- a/apps/documenteditor/mobile/resources/less/app-ios.less +++ b/apps/documenteditor/mobile/resources/less/app-ios.less @@ -71,6 +71,9 @@ input, textarea { @import url('../../../../common/mobile/resources/less/ios/_contextmenu.less'); @import url('../../../../common/mobile/resources/less/ios/_color-palette.less'); @import url('../../../../common/mobile/resources/less/ios/_about.less'); +@import url('../../../../common/mobile/resources/less/ios/_color-schema.less'); +@import url('../../../../common/mobile/resources/less/ios/_collaboration.less'); + @import url('ios/_search.less'); @import url('ios/_icons.less'); @@ -236,4 +239,4 @@ input, textarea { .modal.modal-in { max-height: 100%; overflow: auto; -} \ No newline at end of file +} diff --git a/apps/documenteditor/mobile/resources/less/app-material.less b/apps/documenteditor/mobile/resources/less/app-material.less index 6b3372451..67653a7d2 100644 --- a/apps/documenteditor/mobile/resources/less/app-material.less +++ b/apps/documenteditor/mobile/resources/less/app-material.less @@ -53,6 +53,8 @@ @import url('../../../../common/mobile/resources/less/material/_contextmenu.less'); @import url('../../../../common/mobile/resources/less/material/_color-palette.less'); @import url('../../../../common/mobile/resources/less/material/_about.less'); +@import url('../../../../common/mobile/resources/less/material/_color-schema.less'); +@import url('../../../../common/mobile/resources/less/material/_collaboration.less'); @import url('material/_search.less'); @import url('material/_icons.less'); @@ -224,4 +226,4 @@ input, textarea { .modal.modal-in { max-height: 100%; overflow: auto; -} \ No newline at end of file +} diff --git a/apps/documenteditor/mobile/resources/less/ios/_icons.less b/apps/documenteditor/mobile/resources/less/ios/_icons.less index 33b506ad7..b5c848064 100644 --- a/apps/documenteditor/mobile/resources/less/ios/_icons.less +++ b/apps/documenteditor/mobile/resources/less/ios/_icons.less @@ -381,9 +381,9 @@ i.icon { .encoded-svg-background(''); } &.icon-format-txt { - width: 30px; - height: 30px; - .encoded-svg-background(''); + width: 24px; + height: 24px; + .encoded-svg-background(''); } &.icon-format-pdf { width: 30px; @@ -410,4 +410,70 @@ i.icon { height: 30px; .encoded-svg-background(''); } + &.icon-format-rtf { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + // Collaboration + &.icon-collaboration { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-accept { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-reject { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-next-change { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-prev-change { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-goto { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-delete-change { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-app-settings { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-footnote { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-cut { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-copy { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-paste { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } } \ No newline at end of file diff --git a/apps/documenteditor/mobile/resources/less/material/_icons.less b/apps/documenteditor/mobile/resources/less/material/_icons.less index 2f4d150c3..681503ddb 100644 --- a/apps/documenteditor/mobile/resources/less/material/_icons.less +++ b/apps/documenteditor/mobile/resources/less/material/_icons.less @@ -45,6 +45,11 @@ i.icon { height: 22px; .encoded-svg-background(''); } + &.icon-settings { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } &.icon-review { width: 22px; height: 28px; @@ -303,9 +308,9 @@ i.icon { .encoded-svg-background(''); } &.icon-format-txt { - width: 30px; - height: 30px; - .encoded-svg-background(''); + width: 24px; + height: 24px; + .encoded-svg-background(''); } &.icon-format-pdf { width: 30px; @@ -332,6 +337,73 @@ i.icon { height: 30px; .encoded-svg-background(''); } + &.icon-format-rtf { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + + // Collaboration + &.icon-collaboration { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-accept { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-reject { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-next-change { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-prev-change { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-goto { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-delete-change { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-app-settings { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-footnote { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-cut { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-copy { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } + &.icon-paste { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } } // Overwrite color for toolbar @@ -388,5 +460,10 @@ i.icon { height: 22px; .encoded-svg-background(''); } + &.icon-collaboration { + width: 24px; + height: 24px; + .encoded-svg-background(''); + } } } \ No newline at end of file diff --git a/apps/presentationeditor/embed/index.html b/apps/presentationeditor/embed/index.html index 4539053d3..e82a7d950 100644 --- a/apps/presentationeditor/embed/index.html +++ b/apps/presentationeditor/embed/index.html @@ -164,7 +164,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -175,7 +175,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #fff; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -248,6 +248,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; document.write( '
      ' + @@ -332,6 +344,7 @@ + diff --git a/apps/presentationeditor/embed/index.html.deploy b/apps/presentationeditor/embed/index.html.deploy index 21f8ff121..d0dd00e6c 100644 --- a/apps/presentationeditor/embed/index.html.deploy +++ b/apps/presentationeditor/embed/index.html.deploy @@ -162,7 +162,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -173,7 +173,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #fff; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -241,6 +241,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; document.write( '
      ' + diff --git a/apps/presentationeditor/embed/index.html.opensource b/apps/presentationeditor/embed/index.html.opensource index 95aee40f5..e74eb4030 100644 --- a/apps/presentationeditor/embed/index.html.opensource +++ b/apps/presentationeditor/embed/index.html.opensource @@ -205,6 +205,7 @@ + diff --git a/apps/presentationeditor/embed/js/ApplicationController.js b/apps/presentationeditor/embed/js/ApplicationController.js index 4973f215f..a425b3840 100644 --- a/apps/presentationeditor/embed/js/ApplicationController.js +++ b/apps/presentationeditor/embed/js/ApplicationController.js @@ -30,7 +30,7 @@ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ -var ApplicationController = new(function(){ +PE.ApplicationController = new(function(){ var me, api, config = {}, @@ -52,7 +52,7 @@ var ApplicationController = new(function(){ // ------------------------- if (typeof isBrowserSupported !== 'undefined' && !isBrowserSupported()){ - Common.Gateway.reportError(undefined, 'Your browser is not supported.'); + Common.Gateway.reportError(undefined, this.unsupportedBrowserErrorText); return; } @@ -118,7 +118,7 @@ var ApplicationController = new(function(){ function onCountPages(count) { maxPages = count; - $('#pages').text('of ' + count); + $('#pages').text(me.textOf + " " + count); } function onCurrentPage(number) { @@ -131,10 +131,10 @@ var ApplicationController = new(function(){ switch (id) { case Asc.c_oAscAsyncAction['Print']: - text = 'Downloading document...'; + text = me.downloadTextText; break; default: - text = 'Please wait...'; + text = me.waitText; break; } @@ -201,11 +201,11 @@ var ApplicationController = new(function(){ function onPrint() { if (permissions.print!==false) - api.asc_Print($.browser.chrome || $.browser.safari || $.browser.opera); + api.asc_Print(new Asc.asc_CDownloadOptions(null, $.browser.chrome || $.browser.safari || $.browser.opera)); } function onPrintUrl(url) { - common.utils.dialogPrint(url); + common.utils.dialogPrint(url, api); } function hidePreloader() { @@ -256,18 +256,18 @@ var ApplicationController = new(function(){ Common.Gateway.on('processmouse', onProcessMouse); Common.Gateway.on('downloadas', onDownloadAs); - ApplicationView.tools.get('#idt-fullscreen') + PE.ApplicationView.tools.get('#idt-fullscreen') .on('click', function(){ common.utils.openLink(embedConfig.fullscreenUrl); }); - ApplicationView.tools.get('#idt-download') + PE.ApplicationView.tools.get('#idt-download') .on('click', function(){ if ( !!embedConfig.saveUrl ){ common.utils.openLink(embedConfig.saveUrl); } else if (api && permissions.print!==false){ - api.asc_Print($.browser.chrome || $.browser.safari || $.browser.opera); + api.asc_Print(new Asc.asc_CDownloadOptions(null, $.browser.chrome || $.browser.safari || $.browser.opera)); } Common.Analytics.trackEvent('Save'); @@ -417,7 +417,7 @@ var ApplicationController = new(function(){ function onOpenDocument(progress) { var proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount()); - $('#loadmask-text').html('Loading document: ' + Math.min(Math.round(proc * 100), 100) + '%'); + $('#loadmask-text').html(me.textLoadingDocument + ': ' + Math.min(Math.round(proc * 100), 100) + '%'); } var isplaymode; @@ -461,7 +461,7 @@ var ApplicationController = new(function(){ if (id == Asc.c_oAscError.ID.LoadingScriptError) { $('#id-critical-error-title').text(me.criticalErrorTitle); $('#id-critical-error-message').text(me.scriptLoadError); - $('#id-critical-error-close').off().on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ window.location.reload(); }); $('#id-critical-error-dialog').css('z-index', 20002).modal('show'); @@ -510,8 +510,7 @@ var ApplicationController = new(function(){ $('#id-critical-error-title').text(me.criticalErrorTitle); $('#id-critical-error-message').text(message); - $('#id-critical-error-close').off(); - $('#id-critical-error-close').on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ window.location.reload(); }); } @@ -520,8 +519,7 @@ var ApplicationController = new(function(){ $('#id-critical-error-title').text(me.notcriticalErrorTitle); $('#id-critical-error-message').text(message); - $('#id-critical-error-close').off(); - $('#id-critical-error-close').on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ $('#id-critical-error-dialog').modal('hide'); }); } @@ -534,7 +532,7 @@ var ApplicationController = new(function(){ function onExternalMessage(error) { if (error) { hidePreloader(); - $('#id-error-mask-title').text('Error'); + $('#id-error-mask-title').text(me.criticalErrorTitle); $('#id-error-mask-text').text(error.msg); $('#id-error-mask').css('display', 'block'); @@ -560,7 +558,7 @@ var ApplicationController = new(function(){ Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, me.errorAccessDeny); return; } - if (api) api.asc_DownloadAs(Asc.c_oAscFileType.PPTX, true); + if (api) api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PPTX, true)); } // Helpers // ------------------------- @@ -612,14 +610,20 @@ var ApplicationController = new(function(){ create : createController, errorDefaultMessage : 'Error code: %1', unknownErrorText : 'Unknown error.', - convertationTimeoutText : 'Convertation timeout exceeded.', - convertationErrorText : 'Convertation failed.', + convertationTimeoutText : 'Conversion timeout exceeded.', + convertationErrorText : 'Conversion failed.', downloadErrorText : 'Download failed.', criticalErrorTitle : 'Error', notcriticalErrorTitle : 'Warning', scriptLoadError: 'The connection is too slow, some of the components could not be loaded. Please reload the page.', errorFilePassProtect: 'The file is password protected and cannot be opened.', errorAccessDeny: 'You are trying to perform an action you do not have rights for.
      Please contact your Document Server administrator.', - errorUserDrop: 'The file cannot be accessed right now.' + errorUserDrop: 'The file cannot be accessed right now.', + unsupportedBrowserErrorText: 'Your browser is not supported.', + textOf: 'of', + downloadTextText: 'Downloading presentation...', + waitText: 'Please, wait...', + textLoadingDocument: 'Loading presentation', + txtClose: 'Close' } })(); diff --git a/apps/presentationeditor/embed/js/ApplicationView.js b/apps/presentationeditor/embed/js/ApplicationView.js index dbbdb198d..e1d870c08 100644 --- a/apps/presentationeditor/embed/js/ApplicationView.js +++ b/apps/presentationeditor/embed/js/ApplicationView.js @@ -30,7 +30,11 @@ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ -var ApplicationView = new(function(){ +if (PE === undefined) { + var PE = {}; +} + +PE.ApplicationView = new(function(){ var $btnTools; // Initialize view @@ -41,10 +45,10 @@ var ApplicationView = new(function(){ $btnTools.addClass('dropdown-toggle').attr('data-toggle', 'dropdown').attr('aria-expanded', 'true'); $btnTools.parent().append( '
      '); } @@ -56,6 +60,11 @@ var ApplicationView = new(function(){ create: createView , tools: { get: getTools - } + }, + + txtDownload: 'Download', + txtShare: 'Share', + txtEmbed: 'Embed', + txtFullScreen: 'Full Screen' } })(); diff --git a/apps/presentationeditor/embed/js/application.js b/apps/presentationeditor/embed/js/application.js index 7d10d275f..73a13c863 100644 --- a/apps/presentationeditor/embed/js/application.js +++ b/apps/presentationeditor/embed/js/application.js @@ -31,8 +31,8 @@ * */ (function ($) { - - ApplicationView.create(); - ApplicationController.create(); + Common.Locale.apply(); + PE.ApplicationView.create(); + PE.ApplicationController.create(); })(window.jQuery); diff --git a/apps/presentationeditor/embed/locale/bg.json b/apps/presentationeditor/embed/locale/bg.json new file mode 100644 index 000000000..9ae5b8973 --- /dev/null +++ b/apps/presentationeditor/embed/locale/bg.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Копиране в клипборда", + "common.view.modals.txtEmbed": "Вграждане", + "common.view.modals.txtHeight": "Височина", + "common.view.modals.txtShare": "Споделяне на връзка", + "common.view.modals.txtWidth": "Широчина", + "PE.ApplicationController.convertationErrorText": "Конвертирането е неуспешно.", + "PE.ApplicationController.convertationTimeoutText": "Превишава се времето на изтичане на реализациите.", + "PE.ApplicationController.criticalErrorTitle": "Грешка", + "PE.ApplicationController.downloadErrorText": "Изтеглянето се провали.", + "PE.ApplicationController.downloadTextText": "Презентация се се изтегли ...", + "PE.ApplicationController.errorAccessDeny": "Опитвате се да извършите действие, за което нямате права.
      Моля, свържете се с администратора на сървъра за документи.", + "PE.ApplicationController.errorDefaultMessage": "Код на грешка: %1", + "PE.ApplicationController.errorFilePassProtect": "Файлът е защитен с парола и не може да бъде отворен.", + "PE.ApplicationController.errorUserDrop": "Файлът не може да бъде достъпен в момента.", + "PE.ApplicationController.notcriticalErrorTitle": "Внимание", + "PE.ApplicationController.scriptLoadError": "Връзката е твърде бавна, някои от компонентите не могат да бъдат заредени. Моля, презаредете страницата.", + "PE.ApplicationController.textLoadingDocument": "Зареждане на презентацията", + "PE.ApplicationController.textOf": "на", + "PE.ApplicationController.txtClose": "Затвори", + "PE.ApplicationController.unknownErrorText": "Неизвестна грешка.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Вашият браузър не се поддържа.", + "PE.ApplicationController.waitText": "Моля изчакай...", + "PE.ApplicationView.txtDownload": "Изтегли", + "PE.ApplicationView.txtEmbed": "Вграждане", + "PE.ApplicationView.txtFullScreen": "Цял екран", + "PE.ApplicationView.txtShare": "Дял" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/cs.json b/apps/presentationeditor/embed/locale/cs.json new file mode 100644 index 000000000..88f5669ab --- /dev/null +++ b/apps/presentationeditor/embed/locale/cs.json @@ -0,0 +1,24 @@ +{ + "common.view.modals.txtCopy": "Zkopírovat do schránky", + "common.view.modals.txtHeight": "Výška", + "common.view.modals.txtWidth": "Šířka", + "PE.ApplicationController.convertationErrorText": "Konverze selhala.", + "PE.ApplicationController.convertationTimeoutText": "Vypršel čas konverze.", + "PE.ApplicationController.criticalErrorTitle": "Chyba", + "PE.ApplicationController.downloadErrorText": "Stahování selhalo.", + "PE.ApplicationController.downloadTextText": "Stahování prezentace...", + "PE.ApplicationController.errorAccessDeny": "Pokoušíte se provést akci, na kterou nemáte oprávnění.
      Prosím, kontaktujte administrátora vašeho Dokumentového serveru.", + "PE.ApplicationController.errorDefaultMessage": "Kód chyby: %1", + "PE.ApplicationController.errorFilePassProtect": "Dokument je chráněn heslem a nelze otevřít.", + "PE.ApplicationController.errorUserDrop": "Tento soubor není nyní přístupný.", + "PE.ApplicationController.notcriticalErrorTitle": "Varování", + "PE.ApplicationController.textLoadingDocument": "Načítání prezentace", + "PE.ApplicationController.textOf": "z", + "PE.ApplicationController.txtClose": "Zavřít", + "PE.ApplicationController.unknownErrorText": "Neznámá chyba.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Váš prohlížeč není podporován.", + "PE.ApplicationController.waitText": "Prosím, čekejte...", + "PE.ApplicationView.txtDownload": "Stáhnout", + "PE.ApplicationView.txtFullScreen": "Celá obrazovka", + "PE.ApplicationView.txtShare": "Sdílet" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/de.json b/apps/presentationeditor/embed/locale/de.json new file mode 100644 index 000000000..84f4a4530 --- /dev/null +++ b/apps/presentationeditor/embed/locale/de.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "In die Zwischenablage kopieren", + "common.view.modals.txtEmbed": "Einbetten", + "common.view.modals.txtHeight": "Höhe", + "common.view.modals.txtShare": "Link teilen", + "common.view.modals.txtWidth": "Breite", + "PE.ApplicationController.convertationErrorText": "Konvertierung ist fehlgeschlagen.", + "PE.ApplicationController.convertationTimeoutText": "Timeout für die Konvertierung wurde überschritten.", + "PE.ApplicationController.criticalErrorTitle": "Fehler", + "PE.ApplicationController.downloadErrorText": "Herunterladen ist fehlgeschlagen.", + "PE.ApplicationController.downloadTextText": "Präsentation wird heruntergeladen...", + "PE.ApplicationController.errorAccessDeny": "Sie haben versucht die Änderungen im Dokument, zu dem Sie keine Berechtigungen haben, vorzunehemen.
      Wenden Sie sich an Ihren Serveradministrator.", + "PE.ApplicationController.errorDefaultMessage": "Fehlercode: %1", + "PE.ApplicationController.errorFilePassProtect": "Das Dokument ist kennwortgeschützt und kann nicht geöffnet werden.", + "PE.ApplicationController.errorUserDrop": "Kein Zugriff auf diese Datei ist möglich.", + "PE.ApplicationController.notcriticalErrorTitle": "Warnung", + "PE.ApplicationController.scriptLoadError": "Die Verbindung ist zu langsam, einige der Komponenten konnten nicht geladen werden. Bitte laden Sie die Seite erneut.", + "PE.ApplicationController.textLoadingDocument": "Präsentation wird geladen", + "PE.ApplicationController.textOf": "von", + "PE.ApplicationController.txtClose": "Schließen", + "PE.ApplicationController.unknownErrorText": "Unbekannter Fehler.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Ihr Webbrowser wird nicht unterstützt.", + "PE.ApplicationController.waitText": "Bitte warten...", + "PE.ApplicationView.txtDownload": "Herunterladen", + "PE.ApplicationView.txtEmbed": "Einbetten", + "PE.ApplicationView.txtFullScreen": "Vollbild-Modus", + "PE.ApplicationView.txtShare": "Freigeben" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/en.json b/apps/presentationeditor/embed/locale/en.json new file mode 100644 index 000000000..c25ad71da --- /dev/null +++ b/apps/presentationeditor/embed/locale/en.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copy to clipboard", + "common.view.modals.txtEmbed": "Embed", + "common.view.modals.txtHeight": "Height", + "common.view.modals.txtShare": "Share Link", + "common.view.modals.txtWidth": "Width", + "PE.ApplicationController.convertationErrorText": "Conversion failed.", + "PE.ApplicationController.convertationTimeoutText": "Conversion timeout exceeded.", + "PE.ApplicationController.criticalErrorTitle": "Error", + "PE.ApplicationController.downloadErrorText": "Download failed.", + "PE.ApplicationController.downloadTextText": "Downloading presentation...", + "PE.ApplicationController.errorAccessDeny": "You are trying to perform an action you do not have rights for.
      Please contact your Document Server administrator.", + "PE.ApplicationController.errorDefaultMessage": "Error code: %1", + "PE.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.", + "PE.ApplicationController.errorUserDrop": "The file cannot be accessed right now.", + "PE.ApplicationController.notcriticalErrorTitle": "Warning", + "PE.ApplicationController.scriptLoadError": "The connection is too slow, some of the components could not be loaded. Please reload the page.", + "PE.ApplicationController.textLoadingDocument": "Loading presentation", + "PE.ApplicationController.textOf": "of", + "PE.ApplicationController.txtClose": "Close", + "PE.ApplicationController.unknownErrorText": "Unknown error.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Your browser is not supported.", + "PE.ApplicationController.waitText": "Please, wait...", + "PE.ApplicationView.txtDownload": "Download", + "PE.ApplicationView.txtEmbed": "Embed", + "PE.ApplicationView.txtFullScreen": "Full Screen", + "PE.ApplicationView.txtShare": "Share" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/es.json b/apps/presentationeditor/embed/locale/es.json new file mode 100644 index 000000000..0cb26d995 --- /dev/null +++ b/apps/presentationeditor/embed/locale/es.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copiar al portapapeles", + "common.view.modals.txtEmbed": "Incorporar", + "common.view.modals.txtHeight": "Altura", + "common.view.modals.txtShare": "Compartir enlace", + "common.view.modals.txtWidth": "Ancho", + "PE.ApplicationController.convertationErrorText": "Fallo de conversión.", + "PE.ApplicationController.convertationTimeoutText": "Límite de tiempo de conversión está superado.", + "PE.ApplicationController.criticalErrorTitle": "Error", + "PE.ApplicationController.downloadErrorText": "Fallo en descarga.", + "PE.ApplicationController.downloadTextText": "Descargando presentación...", + "PE.ApplicationController.errorAccessDeny": "Usted no tiene permisos para realizar la acción que está intentando hacer.
      Por favor, contacte con su Administrador del Servidor de Documentos.", + "PE.ApplicationController.errorDefaultMessage": "Código de error: %1", + "PE.ApplicationController.errorFilePassProtect": "El archivo está protegido por una contraseña y no puede ser abierto.", + "PE.ApplicationController.errorUserDrop": "No se puede acceder al archivo ahora mismo.", + "PE.ApplicationController.notcriticalErrorTitle": "Aviso", + "PE.ApplicationController.scriptLoadError": "La conexión a Internet es demasiado lenta, no se podía cargar algunos componentes. Por favor, recargue la página.", + "PE.ApplicationController.textLoadingDocument": "Cargando presentación", + "PE.ApplicationController.textOf": "de", + "PE.ApplicationController.txtClose": "Cerrar", + "PE.ApplicationController.unknownErrorText": "Error desconocido.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Su navegador no está soportado.", + "PE.ApplicationController.waitText": "Por favor, espere...", + "PE.ApplicationView.txtDownload": "Descargar", + "PE.ApplicationView.txtEmbed": "Incorporar", + "PE.ApplicationView.txtFullScreen": "Pantalla Completa", + "PE.ApplicationView.txtShare": "Compartir" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/fr.json b/apps/presentationeditor/embed/locale/fr.json new file mode 100644 index 000000000..59e98e217 --- /dev/null +++ b/apps/presentationeditor/embed/locale/fr.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copier dans le Presse-papiers", + "common.view.modals.txtEmbed": "Incorporer", + "common.view.modals.txtHeight": "Hauteur", + "common.view.modals.txtShare": "Partager un lien", + "common.view.modals.txtWidth": "Largeur", + "PE.ApplicationController.convertationErrorText": "Échec de la conversion.", + "PE.ApplicationController.convertationTimeoutText": "Délai d'attente de la conversion dépassé ", + "PE.ApplicationController.criticalErrorTitle": "Erreur", + "PE.ApplicationController.downloadErrorText": "Échec du téléchargement.", + "PE.ApplicationController.downloadTextText": "Téléchargement de la présentation...", + "PE.ApplicationController.errorAccessDeny": "Vous tentez d'exéсuter une action pour laquelle vous ne disposez pas des droits.
      Veuillez contacter l'administrateur de Document Server.", + "PE.ApplicationController.errorDefaultMessage": "Code d'erreur: %1", + "PE.ApplicationController.errorFilePassProtect": "Le fichier est protégé par le mot de passe et ne peut pas être ouvert.", + "PE.ApplicationController.errorUserDrop": "Impossible d'accéder au fichier.", + "PE.ApplicationController.notcriticalErrorTitle": "Avertissement", + "PE.ApplicationController.scriptLoadError": "La connexion est trop lente, certains éléments ne peuvent pas être chargés. Veuillez recharger la page.", + "PE.ApplicationController.textLoadingDocument": "Chargement de la présentation", + "PE.ApplicationController.textOf": "de", + "PE.ApplicationController.txtClose": "Fermer", + "PE.ApplicationController.unknownErrorText": "Erreur inconnue.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Votre navigateur n'est pas pris en charge.", + "PE.ApplicationController.waitText": "Veuillez patienter...", + "PE.ApplicationView.txtDownload": "Télécharger", + "PE.ApplicationView.txtEmbed": "Incorporer", + "PE.ApplicationView.txtFullScreen": "Plein écran", + "PE.ApplicationView.txtShare": "Partager" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/hu.json b/apps/presentationeditor/embed/locale/hu.json new file mode 100644 index 000000000..be9e100fe --- /dev/null +++ b/apps/presentationeditor/embed/locale/hu.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Másolás a vágólapra", + "common.view.modals.txtEmbed": "Beágyaz", + "common.view.modals.txtHeight": "Magasság", + "common.view.modals.txtShare": "Hivatkozás megosztása", + "common.view.modals.txtWidth": "Szélesség", + "PE.ApplicationController.convertationErrorText": "Az átalakítás nem sikerült.", + "PE.ApplicationController.convertationTimeoutText": "Időtúllépés az átalakítás során.", + "PE.ApplicationController.criticalErrorTitle": "Hiba", + "PE.ApplicationController.downloadErrorText": "Sikertelen letöltés.", + "PE.ApplicationController.downloadTextText": "Prezentáció letöltése...", + "PE.ApplicationController.errorAccessDeny": "Olyan műveletet próbál végrehajtani, melyre nincs jogosultsága.
      Vegye fel a kapcsolatot a Document Server adminisztrátorával.", + "PE.ApplicationController.errorDefaultMessage": "Hibakód: %1", + "PE.ApplicationController.errorFilePassProtect": "A dokumentum jelszóval védett, és nem nyitható meg.", + "PE.ApplicationController.errorUserDrop": "A dokumentum jelenleg nem elérhető", + "PE.ApplicationController.notcriticalErrorTitle": "Figyelmeztetés", + "PE.ApplicationController.scriptLoadError": "A kapcsolat túl lassú, néhány komponens nem töltődött be. Frissítse az oldalt.", + "PE.ApplicationController.textLoadingDocument": "Prezentáció betöltése", + "PE.ApplicationController.textOf": "of", + "PE.ApplicationController.txtClose": "Bezár", + "PE.ApplicationController.unknownErrorText": "Ismeretlen hiba.", + "PE.ApplicationController.unsupportedBrowserErrorText": "A böngészője nem támogatott.", + "PE.ApplicationController.waitText": "Kérjük várjon...", + "PE.ApplicationView.txtDownload": "Letöltés", + "PE.ApplicationView.txtEmbed": "Beágyaz", + "PE.ApplicationView.txtFullScreen": "Teljes képernyő", + "PE.ApplicationView.txtShare": "Megosztás" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/it.json b/apps/presentationeditor/embed/locale/it.json new file mode 100644 index 000000000..1847821b7 --- /dev/null +++ b/apps/presentationeditor/embed/locale/it.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copia negli appunti", + "common.view.modals.txtEmbed": "Incorpora", + "common.view.modals.txtHeight": "Altezza", + "common.view.modals.txtShare": "Condividi collegamento", + "common.view.modals.txtWidth": "Larghezza", + "PE.ApplicationController.convertationErrorText": "Conversione fallita.", + "PE.ApplicationController.convertationTimeoutText": "È stato superato il tempo limite della conversione.", + "PE.ApplicationController.criticalErrorTitle": "Errore", + "PE.ApplicationController.downloadErrorText": "Scaricamento fallito", + "PE.ApplicationController.downloadTextText": "Download della presentazione in corso...", + "PE.ApplicationController.errorAccessDeny": "Stai tentando di eseguire un'azione per la quale non disponi di permessi sufficienti.
      Si prega di contattare l'amministratore del Server dei Documenti.", + "PE.ApplicationController.errorDefaultMessage": "Codice errore: %1", + "PE.ApplicationController.errorFilePassProtect": "Il file è protetto da una password. Impossibile aprirlo.", + "PE.ApplicationController.errorUserDrop": "Impossibile accedere al file subito.", + "PE.ApplicationController.notcriticalErrorTitle": "Avviso", + "PE.ApplicationController.scriptLoadError": "La connessione è troppo lenta, alcuni componenti non possono essere caricati. Si prega di ricaricare la pagina.", + "PE.ApplicationController.textLoadingDocument": "Caricamento della presentazione", + "PE.ApplicationController.textOf": "di", + "PE.ApplicationController.txtClose": "Chiudi", + "PE.ApplicationController.unknownErrorText": "Errore sconosciuto.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Il tuo browser non è supportato.", + "PE.ApplicationController.waitText": "Per favore, attendi...", + "PE.ApplicationView.txtDownload": "Scarica", + "PE.ApplicationView.txtEmbed": "Incorpora", + "PE.ApplicationView.txtFullScreen": "Schermo intero", + "PE.ApplicationView.txtShare": "Condividi" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/ja.json b/apps/presentationeditor/embed/locale/ja.json new file mode 100644 index 000000000..9960fcec0 --- /dev/null +++ b/apps/presentationeditor/embed/locale/ja.json @@ -0,0 +1,21 @@ +{ + "common.view.modals.txtHeight": "高さ", + "common.view.modals.txtWidth": "幅", + "PE.ApplicationController.convertationErrorText": "変換に失敗しました", + "PE.ApplicationController.convertationTimeoutText": "変換のタイムアウトを超過しました。", + "PE.ApplicationController.criticalErrorTitle": "エラー", + "PE.ApplicationController.downloadErrorText": "ダウンロードに失敗しました", + "PE.ApplicationController.downloadTextText": "プレゼンテーションのダウンロード中...", + "PE.ApplicationController.errorDefaultMessage": "エラー コード: %1", + "PE.ApplicationController.errorFilePassProtect": "ドキュメントがパスワードで保護されているため開くことができません", + "PE.ApplicationController.errorUserDrop": "今、ファイルにアクセスすることはできません。", + "PE.ApplicationController.notcriticalErrorTitle": "警告", + "PE.ApplicationController.textLoadingDocument": "プレゼンテーションを読み込み中...", + "PE.ApplicationController.textOf": "から", + "PE.ApplicationController.txtClose": "閉じる", + "PE.ApplicationController.unknownErrorText": "不明なエラー", + "PE.ApplicationController.unsupportedBrowserErrorText": "お使いのブラウザがサポートされていません。", + "PE.ApplicationView.txtDownload": "ダウンロード", + "PE.ApplicationView.txtFullScreen": "全画面表示", + "PE.ApplicationView.txtShare": "シェア" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/ko.json b/apps/presentationeditor/embed/locale/ko.json new file mode 100644 index 000000000..0ad5e1224 --- /dev/null +++ b/apps/presentationeditor/embed/locale/ko.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "클립보드로 복사", + "common.view.modals.txtEmbed": "퍼가기", + "common.view.modals.txtHeight": "높이", + "common.view.modals.txtShare": "링크 공유", + "common.view.modals.txtWidth": "너비", + "PE.ApplicationController.convertationErrorText": "변환 실패", + "PE.ApplicationController.convertationTimeoutText": "전환 시간 초과를 초과했습니다.", + "PE.ApplicationController.criticalErrorTitle": "오류", + "PE.ApplicationController.downloadErrorText": "다운로드하지 못했습니다.", + "PE.ApplicationController.downloadTextText": "프리젠 테이션 다운로드 중 ...", + "PE.ApplicationController.errorAccessDeny": "권한이없는 작업을 수행하려고합니다.
      Document Server 관리자에게 문의하십시오.", + "PE.ApplicationController.errorDefaultMessage": "오류 코드 : %1", + "PE.ApplicationController.errorFilePassProtect": "이 문서는 암호로 보호되어있어 열 수 없습니다.", + "PE.ApplicationController.errorUserDrop": "파일에 지금 액세스 할 수 없습니다.", + "PE.ApplicationController.notcriticalErrorTitle": "경고", + "PE.ApplicationController.scriptLoadError": "연결 속도가 느려, 일부 요소들이 로드되지 않았습니다. 페이지를 다시 새로 고침해주세요.", + "PE.ApplicationController.textLoadingDocument": "프레젠테이션로드 중", + "PE.ApplicationController.textOf": "중", + "PE.ApplicationController.txtClose": "완료", + "PE.ApplicationController.unknownErrorText": "알 수없는 오류.", + "PE.ApplicationController.unsupportedBrowserErrorText": "사용중인 브라우저가 지원되지 않습니다.", + "PE.ApplicationController.waitText": "잠시만 기달려주세요...", + "PE.ApplicationView.txtDownload": "다운로드", + "PE.ApplicationView.txtEmbed": "퍼가기", + "PE.ApplicationView.txtFullScreen": "전체 화면", + "PE.ApplicationView.txtShare": "공유" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/lv.json b/apps/presentationeditor/embed/locale/lv.json new file mode 100644 index 000000000..143befd86 --- /dev/null +++ b/apps/presentationeditor/embed/locale/lv.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Nokopēts starpliktuvē", + "common.view.modals.txtHeight": "Augstums", + "common.view.modals.txtWidth": "Platums", + "PE.ApplicationController.convertationErrorText": "Konversija neizdevās.", + "PE.ApplicationController.convertationTimeoutText": "Konversijas taimauts pārsniegts.", + "PE.ApplicationController.criticalErrorTitle": "Kļūda", + "PE.ApplicationController.downloadErrorText": "Lejuplāde neizdevās.", + "PE.ApplicationController.downloadTextText": "Lejupielādē dokumentu...", + "PE.ApplicationController.errorAccessDeny": "Jūs mēģināt veikt darbību, kuru nedrīkstat veikt.
      Lūdzu, sazinieties ar savu dokumentu servera administratoru.", + "PE.ApplicationController.errorDefaultMessage": "Kļūdas kods: %1", + "PE.ApplicationController.errorFilePassProtect": "Fails ir aizsargāts ar paroli un to nevar atvērt.", + "PE.ApplicationController.errorUserDrop": "Failam šobrīd nevar piekļūt.", + "PE.ApplicationController.notcriticalErrorTitle": "Brīdinājums", + "PE.ApplicationController.textLoadingDocument": "Ielādē prezentāciju", + "PE.ApplicationController.textOf": "no", + "PE.ApplicationController.txtClose": "Aizvērt", + "PE.ApplicationController.unknownErrorText": "Nezināma kļūda.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Jūsu pārlūkprogramma nav atbalstīta.", + "PE.ApplicationView.txtDownload": "Lejupielādēt", + "PE.ApplicationView.txtShare": "Dalīties" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/nl.json b/apps/presentationeditor/embed/locale/nl.json new file mode 100644 index 000000000..5b96f398b --- /dev/null +++ b/apps/presentationeditor/embed/locale/nl.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Kopieer naar klembord", + "common.view.modals.txtHeight": "Hoogte", + "common.view.modals.txtWidth": "Breedte", + "PE.ApplicationController.convertationTimeoutText": "Time-out voor conversie overschreden.", + "PE.ApplicationController.criticalErrorTitle": "Fout", + "PE.ApplicationController.downloadErrorText": "Download mislukt.", + "PE.ApplicationController.downloadTextText": "Presentatie wordt gedownload...", + "PE.ApplicationController.errorAccessDeny": "U probeert een actie uit te voeren waarvoor u geen rechten hebt.
      Neem contact op met de beheerder van de documentserver.", + "PE.ApplicationController.errorDefaultMessage": "Foutcode: %1", + "PE.ApplicationController.errorFilePassProtect": "Het bestand is beschermd met een wachtwoord en kan niet worden geopend.", + "PE.ApplicationController.errorUserDrop": "Toegang tot het bestand is op dit moment niet mogelijk.", + "PE.ApplicationController.notcriticalErrorTitle": "Waarschuwing", + "PE.ApplicationController.scriptLoadError": "De verbinding is te langzaam, sommige componenten konden niet geladen worden. Laad de pagina opnieuw.", + "PE.ApplicationController.textLoadingDocument": "Presentatie wordt geladen", + "PE.ApplicationController.textOf": "van", + "PE.ApplicationController.txtClose": "Sluiten", + "PE.ApplicationController.unknownErrorText": "Onbekende fout.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Uw browser wordt niet ondersteund.", + "PE.ApplicationView.txtDownload": "Downloaden", + "PE.ApplicationView.txtFullScreen": "Volledig scherm", + "PE.ApplicationView.txtShare": "Delen" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/pl.json b/apps/presentationeditor/embed/locale/pl.json new file mode 100644 index 000000000..5f2f27b6a --- /dev/null +++ b/apps/presentationeditor/embed/locale/pl.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Skopiuj do schowka", + "common.view.modals.txtHeight": "Wysokość", + "common.view.modals.txtWidth": "Szerokość", + "PE.ApplicationController.convertationTimeoutText": "Przekroczono limit czasu konwersji.", + "PE.ApplicationController.criticalErrorTitle": "Błąd", + "PE.ApplicationController.downloadErrorText": "Pobieranie nieudane.", + "PE.ApplicationController.downloadTextText": "Pobieranie prezentacji...", + "PE.ApplicationController.errorAccessDeny": "Próbujesz wykonać działanie, na które nie masz uprawnień.
      Proszę skontaktować się z administratorem serwera dokumentów.", + "PE.ApplicationController.errorDefaultMessage": "Kod błędu: %1", + "PE.ApplicationController.errorFilePassProtect": "Dokument jest chroniony hasłem i nie może być otwarty.", + "PE.ApplicationController.errorUserDrop": "Nie można uzyskać dostępu do tego pliku.", + "PE.ApplicationController.notcriticalErrorTitle": "Ostrzeżenie", + "PE.ApplicationController.textLoadingDocument": "Ładowanie prezentacji", + "PE.ApplicationController.textOf": "z", + "PE.ApplicationController.txtClose": "Zamknij", + "PE.ApplicationController.unknownErrorText": "Nieznany błąd.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Twoja przeglądarka nie jest wspierana.", + "PE.ApplicationController.waitText": "Proszę czekać...", + "PE.ApplicationView.txtDownload": "Pobierz", + "PE.ApplicationView.txtFullScreen": "Pełny ekran", + "PE.ApplicationView.txtShare": "Udostępnij" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/pt.json b/apps/presentationeditor/embed/locale/pt.json new file mode 100644 index 000000000..455dea2fe --- /dev/null +++ b/apps/presentationeditor/embed/locale/pt.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Copiar para a área de transferência", + "common.view.modals.txtHeight": "Altura", + "common.view.modals.txtWidth": "Largura", + "PE.ApplicationController.convertationTimeoutText": "Tempo limite de conversão excedido.", + "PE.ApplicationController.criticalErrorTitle": "Erro", + "PE.ApplicationController.downloadErrorText": "Falha ao baixar", + "PE.ApplicationController.downloadTextText": "Baixando apresentação...", + "PE.ApplicationController.errorAccessDeny": "Você está tentando executar uma ação para a qual não tem direitos.
      Entre em contato com o administrador do Document Server.", + "PE.ApplicationController.errorDefaultMessage": "Código do erro: %1", + "PE.ApplicationController.errorFilePassProtect": "O documento é protegido por senha e não pode ser aberto.", + "PE.ApplicationController.errorUserDrop": "O arquivo não pode ser acessado agora.", + "PE.ApplicationController.notcriticalErrorTitle": "Aviso", + "PE.ApplicationController.textLoadingDocument": "Carregando apresentação", + "PE.ApplicationController.textOf": "de", + "PE.ApplicationController.txtClose": "Fechar", + "PE.ApplicationController.unknownErrorText": "Erro desconhecido.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Seu navegador não é suportado.", + "PE.ApplicationController.waitText": "Aguarde...", + "PE.ApplicationView.txtDownload": "Baixar", + "PE.ApplicationView.txtShare": "Compartilhar" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/ru.json b/apps/presentationeditor/embed/locale/ru.json new file mode 100644 index 000000000..e40b0b493 --- /dev/null +++ b/apps/presentationeditor/embed/locale/ru.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Скопировать в буфер", + "common.view.modals.txtEmbed": "Встроить", + "common.view.modals.txtHeight": "Высота", + "common.view.modals.txtShare": "Поделиться ссылкой", + "common.view.modals.txtWidth": "Ширина", + "PE.ApplicationController.convertationErrorText": "Конвертация не удалась.", + "PE.ApplicationController.convertationTimeoutText": "Превышено время ожидания конвертации.", + "PE.ApplicationController.criticalErrorTitle": "Ошибка", + "PE.ApplicationController.downloadErrorText": "Загрузка не удалась.", + "PE.ApplicationController.downloadTextText": "Загрузка презентации...", + "PE.ApplicationController.errorAccessDeny": "Вы пытаетесь выполнить действие, на которое у вас нет прав.
      Пожалуйста, обратитесь к администратору Сервера документов.", + "PE.ApplicationController.errorDefaultMessage": "Код ошибки: %1", + "PE.ApplicationController.errorFilePassProtect": "Файл защищен паролем и не может быть открыт.", + "PE.ApplicationController.errorUserDrop": "В настоящий момент файл недоступен.", + "PE.ApplicationController.notcriticalErrorTitle": "Внимание", + "PE.ApplicationController.scriptLoadError": "Слишком медленное подключение, некоторые компоненты не удалось загрузить. Пожалуйста, обновите страницу.", + "PE.ApplicationController.textLoadingDocument": "Загрузка презентации", + "PE.ApplicationController.textOf": "из", + "PE.ApplicationController.txtClose": "Закрыть", + "PE.ApplicationController.unknownErrorText": "Неизвестная ошибка.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Ваш браузер не поддерживается.", + "PE.ApplicationController.waitText": "Пожалуйста, подождите...", + "PE.ApplicationView.txtDownload": "Скачать файл", + "PE.ApplicationView.txtEmbed": "Встроить", + "PE.ApplicationView.txtFullScreen": "Во весь экран", + "PE.ApplicationView.txtShare": "Поделиться" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/sk.json b/apps/presentationeditor/embed/locale/sk.json new file mode 100644 index 000000000..3aefda143 --- /dev/null +++ b/apps/presentationeditor/embed/locale/sk.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Skopírovať do schránky", + "common.view.modals.txtHeight": "Výška", + "common.view.modals.txtWidth": "Šírka", + "PE.ApplicationController.convertationTimeoutText": "Prekročený čas konverzie.", + "PE.ApplicationController.criticalErrorTitle": "Chyba", + "PE.ApplicationController.downloadErrorText": "Sťahovanie zlyhalo.", + "PE.ApplicationController.downloadTextText": "Sťahovanie dokumentu...", + "PE.ApplicationController.errorAccessDeny": "Pokúšate sa vykonať akciu, na ktorú nemáte práva.
      Prosím, kontaktujte svojho správcu dokumentového servera.", + "PE.ApplicationController.errorDefaultMessage": "Kód chyby: %1", + "PE.ApplicationController.errorFilePassProtect": "Dokument je chránený heslom a nie je možné ho otvoriť.", + "PE.ApplicationController.errorUserDrop": "K súboru nie je možné práve teraz získať prístup.", + "PE.ApplicationController.notcriticalErrorTitle": "Upozornenie", + "PE.ApplicationController.textLoadingDocument": "Načítavanie prezentácie", + "PE.ApplicationController.textOf": "z", + "PE.ApplicationController.txtClose": "Zatvoriť", + "PE.ApplicationController.unknownErrorText": "Neznáma chyba.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Váš prehliadač nie je podporovaný.", + "PE.ApplicationController.waitText": "Prosím čakajte...", + "PE.ApplicationView.txtDownload": "Stiahnuť", + "PE.ApplicationView.txtFullScreen": "Celá obrazovka", + "PE.ApplicationView.txtShare": "Zdieľať" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/sl.json b/apps/presentationeditor/embed/locale/sl.json new file mode 100644 index 000000000..3435fc8c7 --- /dev/null +++ b/apps/presentationeditor/embed/locale/sl.json @@ -0,0 +1,21 @@ +{ + "common.view.modals.txtCopy": "Kopiraj v odložišče", + "common.view.modals.txtHeight": "Višina", + "common.view.modals.txtWidth": "Širina", + "PE.ApplicationController.convertationErrorText": "Pretvorba ni uspela.", + "PE.ApplicationController.convertationTimeoutText": "Pretvorbena prekinitev presežena.", + "PE.ApplicationController.criticalErrorTitle": "Napaka", + "PE.ApplicationController.downloadErrorText": "Prenos ni uspel.", + "PE.ApplicationController.downloadTextText": "Prenašanje predstavitve...", + "PE.ApplicationController.errorDefaultMessage": "Koda napake: %1", + "PE.ApplicationController.errorFilePassProtect": "Dokument je zaščiten z geslom in ga ni mogoče odpreti.", + "PE.ApplicationController.errorUserDrop": "Do datoteke v tem trenutku ni možno dostopati.", + "PE.ApplicationController.notcriticalErrorTitle": "Opozorilo", + "PE.ApplicationController.textLoadingDocument": "Nalaganje predstavitve", + "PE.ApplicationController.textOf": "od", + "PE.ApplicationController.txtClose": "Zapri", + "PE.ApplicationController.unknownErrorText": "Neznana napaka.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Vaš brskalnik ni podprt.", + "PE.ApplicationView.txtDownload": "Prenesi", + "PE.ApplicationView.txtShare": "Deli" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/tr.json b/apps/presentationeditor/embed/locale/tr.json new file mode 100644 index 000000000..98287a3ff --- /dev/null +++ b/apps/presentationeditor/embed/locale/tr.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Panoya kopyala", + "common.view.modals.txtEmbed": "Gömülü", + "common.view.modals.txtHeight": "Yükseklik", + "common.view.modals.txtShare": "Bağlantıyı Paylaş", + "common.view.modals.txtWidth": "Genişlik", + "PE.ApplicationController.convertationErrorText": "Değişim başarısız oldu.", + "PE.ApplicationController.convertationTimeoutText": "Değişim süresi aşıldı.", + "PE.ApplicationController.criticalErrorTitle": "Hata", + "PE.ApplicationController.downloadErrorText": "Yükleme başarısız oldu.", + "PE.ApplicationController.downloadTextText": "Sunum yükleniyor...", + "PE.ApplicationController.errorAccessDeny": "Hakkınız olmayan bir eylem gerçekleştirmeye çalışıyorsunuz.
      Lütfen Belge Sunucu yöneticinize başvurun.", + "PE.ApplicationController.errorDefaultMessage": "Hata kodu: %1", + "PE.ApplicationController.errorFilePassProtect": "Döküman şifre korumalı ve açılamadı", + "PE.ApplicationController.errorUserDrop": "Belgeye şu an erişilemiyor.", + "PE.ApplicationController.notcriticalErrorTitle": "Uyarı", + "PE.ApplicationController.scriptLoadError": "Bağlantı çok yavaş, bileşenlerin bazıları yüklenemedi. Lütfen sayfayı yenileyin.", + "PE.ApplicationController.textLoadingDocument": "Sunum yükleniyor", + "PE.ApplicationController.textOf": "'in", + "PE.ApplicationController.txtClose": "Kapat", + "PE.ApplicationController.unknownErrorText": "Bilinmeyen hata.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Tarayıcınız desteklenmiyor.", + "PE.ApplicationController.waitText": "Lütfen bekleyin...", + "PE.ApplicationView.txtDownload": "İndir", + "PE.ApplicationView.txtEmbed": "Gömülü", + "PE.ApplicationView.txtFullScreen": "Tam Ekran", + "PE.ApplicationView.txtShare": "Paylaş" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/uk.json b/apps/presentationeditor/embed/locale/uk.json new file mode 100644 index 000000000..6c23bb573 --- /dev/null +++ b/apps/presentationeditor/embed/locale/uk.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Копіювати в буфер обміну", + "common.view.modals.txtHeight": "Висота", + "common.view.modals.txtWidth": "Ширина", + "PE.ApplicationController.convertationTimeoutText": "Термін переходу перевищено.", + "PE.ApplicationController.criticalErrorTitle": "Помилка", + "PE.ApplicationController.downloadErrorText": "Завантаження не вдалося", + "PE.ApplicationController.downloadTextText": "Завантаження презентації...", + "PE.ApplicationController.errorAccessDeny": "Ви намагаєтеся виконати дію, на яку у вас немає прав.
      Будь ласка, зв'яжіться з адміністратором вашого Сервера документів.", + "PE.ApplicationController.errorDefaultMessage": "Код помилки: %1", + "PE.ApplicationController.errorFilePassProtect": "Документ захищений паролем і його неможливо відкрити.", + "PE.ApplicationController.errorUserDrop": "На даний момент файл не доступний.", + "PE.ApplicationController.notcriticalErrorTitle": "Застереження", + "PE.ApplicationController.textLoadingDocument": "Завантаження презентації", + "PE.ApplicationController.textOf": "з", + "PE.ApplicationController.txtClose": "Закрити", + "PE.ApplicationController.unknownErrorText": "Невідома помилка.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Ваш браузер не підтримується", + "PE.ApplicationView.txtDownload": "Завантажити", + "PE.ApplicationView.txtFullScreen": "Повноекранний режим", + "PE.ApplicationView.txtShare": "Доступ" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/vi.json b/apps/presentationeditor/embed/locale/vi.json new file mode 100644 index 000000000..43b608c4c --- /dev/null +++ b/apps/presentationeditor/embed/locale/vi.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Sao chép vào khay nhớ tạm", + "common.view.modals.txtHeight": "Chiều cao", + "common.view.modals.txtWidth": "Chiều rộng", + "PE.ApplicationController.convertationTimeoutText": "Đã quá thời gian chờ chuyển đổi.", + "PE.ApplicationController.criticalErrorTitle": "Lỗi", + "PE.ApplicationController.downloadErrorText": "Tải về không thành công.", + "PE.ApplicationController.downloadTextText": "Đang tải trình chiếu...", + "PE.ApplicationController.errorAccessDeny": "Bạn đang cố gắng thực hiện hành động mà bạn không có quyền.
      Vui lòng liên hệ với quản trị viên Server Tài liệu của bạn.", + "PE.ApplicationController.errorDefaultMessage": "Mã lỗi: %1", + "PE.ApplicationController.errorFilePassProtect": "Tài liệu được bảo vệ bằng mật khẩu và không thể mở được.", + "PE.ApplicationController.errorUserDrop": "Không thể truy cập file ngay lúc này.", + "PE.ApplicationController.notcriticalErrorTitle": "Cảnh báo", + "PE.ApplicationController.textLoadingDocument": "Đang tải trình chiếu", + "PE.ApplicationController.textOf": "trên", + "PE.ApplicationController.txtClose": "Đóng", + "PE.ApplicationController.unknownErrorText": "Lỗi không xác định.", + "PE.ApplicationController.unsupportedBrowserErrorText": "Trình duyệt của bạn không được hỗ trợ.", + "PE.ApplicationView.txtDownload": "Tải về", + "PE.ApplicationView.txtFullScreen": "Toàn màn hình", + "PE.ApplicationView.txtShare": "Chia sẻ" +} \ No newline at end of file diff --git a/apps/presentationeditor/embed/locale/zh.json b/apps/presentationeditor/embed/locale/zh.json new file mode 100644 index 000000000..e60a70f5b --- /dev/null +++ b/apps/presentationeditor/embed/locale/zh.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "复制到剪贴板", + "common.view.modals.txtEmbed": "嵌入", + "common.view.modals.txtHeight": "高度", + "common.view.modals.txtShare": "分享链接", + "common.view.modals.txtWidth": "宽度", + "PE.ApplicationController.convertationErrorText": "转换失败", + "PE.ApplicationController.convertationTimeoutText": "转换超时", + "PE.ApplicationController.criticalErrorTitle": "错误", + "PE.ApplicationController.downloadErrorText": "下载失败", + "PE.ApplicationController.downloadTextText": "正在下载演示文稿...", + "PE.ApplicationController.errorAccessDeny": "您正在尝试执行您没有权限的操作。
      请联系您的文档服务器管理员.", + "PE.ApplicationController.errorDefaultMessage": "错误代码:%1", + "PE.ApplicationController.errorFilePassProtect": "该文档受密码保护,无法被打开。", + "PE.ApplicationController.errorUserDrop": "该文件现在无法访问。", + "PE.ApplicationController.notcriticalErrorTitle": "警告", + "PE.ApplicationController.scriptLoadError": "连接速度过慢,部分组件无法被加载。请重新加载页面。", + "PE.ApplicationController.textLoadingDocument": "载入演示", + "PE.ApplicationController.textOf": "的", + "PE.ApplicationController.txtClose": "关闭", + "PE.ApplicationController.unknownErrorText": "示知错误", + "PE.ApplicationController.unsupportedBrowserErrorText": "你的浏览器不支持", + "PE.ApplicationController.waitText": "请稍候...", + "PE.ApplicationView.txtDownload": "下载", + "PE.ApplicationView.txtEmbed": "嵌入", + "PE.ApplicationView.txtFullScreen": "全屏", + "PE.ApplicationView.txtShare": "共享" +} \ No newline at end of file diff --git a/apps/presentationeditor/main/app.reporter.js b/apps/presentationeditor/main/app.reporter.js index 504250c20..14ed36933 100644 --- a/apps/presentationeditor/main/app.reporter.js +++ b/apps/presentationeditor/main/app.reporter.js @@ -95,6 +95,10 @@ require([ using : 'reporter' }); + var setDocumentTitle = function(title) { + (title) && (window.document.title += (' - ' + title)); + }; + function load_document(data) { var docInfo = {}; @@ -108,7 +112,7 @@ require([ docInfo.put_Options(data.options); docInfo.put_Token(data.token); docInfo.put_Permissions(data.permissions || {}); - window.document.title = 'Presenter View' + (data.title ? (' - ' + data.title) : ''); + setDocumentTitle(data.title); } api.preloadReporter(data); diff --git a/apps/presentationeditor/main/app/controller/DocumentHolder.js b/apps/presentationeditor/main/app/controller/DocumentHolder.js index 48168be0d..e5bd95ede 100644 --- a/apps/presentationeditor/main/app/controller/DocumentHolder.js +++ b/apps/presentationeditor/main/app/controller/DocumentHolder.js @@ -63,6 +63,19 @@ var c_tableBorder = { BORDER_OUTER_TABLE: 13 // table border and outer cell borders }; +var c_paragraphTextAlignment = { + RIGHT: 0, + LEFT: 1, + CENTERED: 2, + JUSTIFIED: 3 +}; + +var c_paragraphSpecial = { + NONE_SPECIAL: 0, + FIRST_LINE: 1, + HANGING: 2 +}; + define([ 'core', 'presentationeditor/main/app/view/DocumentHolder' diff --git a/apps/presentationeditor/main/app/controller/LeftMenu.js b/apps/presentationeditor/main/app/controller/LeftMenu.js index 6e2ab01bd..1b65c7a0f 100644 --- a/apps/presentationeditor/main/app/controller/LeftMenu.js +++ b/apps/presentationeditor/main/app/controller/LeftMenu.js @@ -215,7 +215,7 @@ define([ case 'back': break; case 'save': this.api.asc_Save(); break; case 'save-desktop': this.api.asc_DownloadAs(); break; - case 'print': this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); break; + case 'print': this.api.asc_Print(new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera)); break; case 'exit': Common.NotificationCenter.trigger('goback'); break; case 'edit': this.getApplication().getController('Statusbar').setStatusCaption(this.requestEditRightsText); @@ -247,13 +247,13 @@ define([ }, clickSaveAsFormat: function(menu, format) { - this.api.asc_DownloadAs(format); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format)); menu.hide(); }, clickSaveCopyAsFormat: function(menu, format, ext) { this.isFromFileDownloadAs = ext; - this.api.asc_DownloadAs(format, true); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format, true)); menu.hide(); }, @@ -269,27 +269,31 @@ define([ defFileName = defFileName.substring(0, idx) + this.isFromFileDownloadAs; } - me._saveCopyDlg = new Common.Views.SaveAsDlg({ - saveFolderUrl: me.mode.saveAsUrl, - saveFileUrl: url, - defFileName: defFileName - }); - me._saveCopyDlg.on('saveaserror', function(obj, err){ - var config = { - closable: false, - title: me.notcriticalErrorTitle, - msg: err, - iconCls: 'warn', - buttons: ['ok'], - callback: function(btn){ - Common.NotificationCenter.trigger('edit:complete', me); - } - }; - Common.UI.alert(config); - }).on('close', function(obj){ - me._saveCopyDlg = undefined; - }); - me._saveCopyDlg.show(); + if (me.mode.canRequestSaveAs) { + Common.Gateway.requestSaveAs(url, defFileName); + } else { + me._saveCopyDlg = new Common.Views.SaveAsDlg({ + saveFolderUrl: me.mode.saveAsUrl, + saveFileUrl: url, + defFileName: defFileName + }); + me._saveCopyDlg.on('saveaserror', function(obj, err){ + var config = { + closable: false, + title: me.notcriticalErrorTitle, + msg: err, + iconCls: 'warn', + buttons: ['ok'], + callback: function(btn){ + Common.NotificationCenter.trigger('edit:complete', me); + } + }; + Common.UI.alert(config); + }).on('close', function(obj){ + me._saveCopyDlg = undefined; + }); + me._saveCopyDlg.show(); + } } this.isFromFileDownloadAs = false; }, @@ -327,13 +331,10 @@ define([ }, onCreateNew: function(menu, type) { - if (this.mode.nativeApp === true) { - this.api.OpenNewDocument(type == 'blank' ? '' : type); - } else { + if ( !Common.Controllers.Desktop.process('create:new') ) { var newDocumentPage = window.open(type == 'blank' ? this.mode.createUrl : type, "_blank"); if (newDocumentPage) newDocumentPage.focus(); } - if (menu) { menu.hide(); } diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js index 691b00330..cc4ef086d 100644 --- a/apps/presentationeditor/main/app/controller/Main.js +++ b/apps/presentationeditor/main/app/controller/Main.js @@ -186,8 +186,6 @@ define([ // Initialize api gateway this.editorConfig = {}; this.appOptions = {}; - this.plugins = undefined; - this.UICustomizePlugins = []; Common.Gateway.on('init', _.bind(this.loadConfig, this)); Common.Gateway.on('showmessage', _.bind(this.onExternalMessage, this)); Common.Gateway.on('opendocument', _.bind(this.loadDocument, this)); @@ -209,11 +207,13 @@ define([ }); $(document.body).on('blur', 'input, textarea', function(e) { - if (!me.isModalShowed) { + if (!me.isModalShowed && !me.getApplication().getController('LeftMenu').getView('LeftMenu').getMenu('file').isVisible()) { if (/form-control/.test(e.target.className)) me.inFormControl = false; if (!e.relatedTarget || - !/area_id/.test(e.target.id) && ($(e.target).parent().find(e.relatedTarget).length<1 || e.target.localName == 'textarea') /* Check if focus in combobox goes from input to it's menu button or menu items, or from comment editing area to Ok/Cancel button */ + !/area_id/.test(e.target.id) + && !(e.target.localName == 'input' && $(e.target).parent().find(e.relatedTarget).length>0) /* Check if focus in combobox goes from input to it's menu button or menu items, or from comment editing area to Ok/Cancel button */ + && !(e.target.localName == 'textarea' && $(e.target).closest('.asc-window').find(e.relatedTarget).length>0) /* Check if focus in comment goes from textarea to it's email menu */ && (e.relatedTarget.localName != 'input' || !/form-control/.test(e.relatedTarget.className)) /* Check if focus goes to text input with class "form-control" */ && (e.relatedTarget.localName != 'textarea' || /area_id/.test(e.relatedTarget.id))) /* Check if focus goes to textarea, but not to "area_id" */ { if (Common.Utils.isIE && e.originalEvent && e.originalEvent.target && /area_id/.test(e.originalEvent.target.id) && (e.originalEvent.target === e.originalEvent.srcElement)) @@ -286,7 +286,7 @@ define([ }); } - me.defaultTitleText = me.defaultTitleText || '{{APP_TITLE_TEXT}}'; + me.defaultTitleText = '{{APP_TITLE_TEXT}}'; me.textNoLicenseTitle = me.textNoLicenseTitle.replace('%1', '{{COMPANY_NAME}}'); me.warnNoLicense = me.warnNoLicense.replace('%1', '{{COMPANY_NAME}}'); me.warnNoLicenseUsers = me.warnNoLicenseUsers.replace('%1', '{{COMPANY_NAME}}'); @@ -297,10 +297,9 @@ define([ this.editorConfig.user = this.appOptions.user = Common.Utils.fillUserInfo(data.config.user, this.editorConfig.lang, this.textAnonymous); - this.appOptions.nativeApp = this.editorConfig.nativeApp === true; this.appOptions.isDesktopApp = this.editorConfig.targetApp == 'desktop'; - this.appOptions.canCreateNew = !_.isEmpty(this.editorConfig.createUrl) && !this.appOptions.isDesktopApp; - this.appOptions.canOpenRecent = this.editorConfig.nativeApp !== true && this.editorConfig.recent !== undefined && !this.appOptions.isDesktopApp; + this.appOptions.canCreateNew = !_.isEmpty(this.editorConfig.createUrl); + this.appOptions.canOpenRecent = this.editorConfig.recent !== undefined && !this.appOptions.isDesktopApp; this.appOptions.templates = this.editorConfig.templates; this.appOptions.recent = this.editorConfig.recent; this.appOptions.createUrl = this.editorConfig.createUrl; @@ -313,9 +312,12 @@ define([ this.appOptions.customization = this.editorConfig.customization; this.appOptions.canBackToFolder = (this.editorConfig.canBackToFolder!==false) && (typeof (this.editorConfig.customization) == 'object') && (typeof (this.editorConfig.customization.goback) == 'object') && !_.isEmpty(this.editorConfig.customization.goback.url); - this.appOptions.canBack = this.editorConfig.nativeApp !== true && this.appOptions.canBackToFolder === true; + this.appOptions.canBack = this.appOptions.canBackToFolder === true; this.appOptions.canPlugins = false; - this.plugins = this.editorConfig.plugins; + this.appOptions.canRequestUsers = this.editorConfig.canRequestUsers; + this.appOptions.canRequestSendNotify = this.editorConfig.canRequestSendNotify; + this.appOptions.canRequestSaveAs = this.editorConfig.canRequestSaveAs; + this.appOptions.canRequestInsertImage = this.editorConfig.canRequestInsertImage; appHeader = this.getApplication().getController('Viewport').getView('Common.Views.Header'); appHeader.setCanBack(this.appOptions.canBackToFolder === true, (this.appOptions.canBackToFolder) ? this.editorConfig.customization.goback.text : '') @@ -340,7 +342,7 @@ define([ this.permissions = $.extend(this.permissions, data.doc.permissions); var _permissions = $.extend({}, data.doc.permissions), - _options = $.extend({}, data.doc.options, {actions: this.editorConfig.actionLink || {}}); + _options = $.extend({}, data.doc.options, this.editorConfig.actionLink || {}); var _user = new Asc.asc_CUserInfo(); _user.put_Id(this.appOptions.user.id); @@ -357,7 +359,6 @@ define([ docInfo.put_CallbackUrl(this.editorConfig.callbackUrl); docInfo.put_Token(data.doc.token); docInfo.put_Permissions(_permissions); - //docInfo.put_OfflineApp(this.editorConfig.nativeApp === true); } this.api.asc_registerCallback('asc_onGetEditorPermissions', _.bind(this.onEditorPermissions, this)); @@ -420,7 +421,7 @@ define([ if ( !_format || _supported.indexOf(_format) < 0 ) _format = Asc.c_oAscFileType.PPTX; - this.api.asc_DownloadAs(_format, true); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(_format, true)); }, onProcessMouse: function(data) { @@ -637,6 +638,8 @@ define([ me.hidePreloader(); me.onLongActionEnd(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument); + Common.Utils.InternalSettings.set("pe-settings-datetime-default", Common.localStorage.getItem("pe-settings-datetime-default")); + value = Common.localStorage.getItem("pe-settings-zoom"); Common.Utils.InternalSettings.set("pe-settings-zoom", value); var zf = (value!==null) ? parseInt(value) : (this.appOptions.customization && this.appOptions.customization.zoom ? parseInt(this.appOptions.customization.zoom) : -1); @@ -710,9 +713,6 @@ define([ application.getController('Common.Controllers.ExternalDiagramEditor').setApi(this.api).loadConfig({config:this.editorConfig, customization: this.editorConfig.customization}); pluginsController.setApi(me.api); - me.requestPlugins('../../../../plugins.json'); - me.api.asc_registerCallback('asc_onPluginsInit', _.bind(me.updatePluginsList, me)); - me.api.asc_registerCallback('asc_onPluginsReset', _.bind(me.resetPluginsList, me)); documentHolderController.setApi(me.api); documentHolderController.createDelayedElements(); @@ -895,7 +895,7 @@ define([ this.appOptions.canEdit = this.permissions.edit !== false && // can edit (this.editorConfig.canRequestEditRights || this.editorConfig.mode !== 'view'); // if mode=="view" -> canRequestEditRights must be defined this.appOptions.isEdit = this.appOptions.canLicense && this.appOptions.canEdit && this.editorConfig.mode !== 'view'; - this.appOptions.canDownload = !this.appOptions.nativeApp && this.permissions.download !== false; + this.appOptions.canDownload = this.permissions.download !== false; this.appOptions.canAnalytics = params.asc_getIsAnalyticsEnable(); this.appOptions.canComments = this.appOptions.canLicense && (this.permissions.comment===undefined ? this.appOptions.isEdit : this.permissions.comment) && (this.editorConfig.mode !== 'view'); this.appOptions.canComments = this.appOptions.canComments && !((typeof (this.editorConfig.customization) == 'object') && this.editorConfig.customization.comments===false); @@ -918,10 +918,8 @@ define([ appHeader.setBranding(this.editorConfig.customization); this.appOptions.canRename && appHeader.setCanRename(true); - this.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof this.editorConfig.customization == 'object' || this.editorConfig.plugins); - if (this.appOptions.canBrandingExt) - this.updatePlugins(this.plugins, true); + this.getApplication().getController('Common.Controllers.Plugins').setMode(this.appOptions); this.applyModeCommonElements(); this.applyModeEditorElements(); @@ -1392,6 +1390,7 @@ define([ }, hidePreloader: function() { + var promise; if (!this._state.customizationDone) { this._state.customizationDone = true; if (this.appOptions.customization) { @@ -1403,14 +1402,17 @@ define([ Common.Utils.applyCustomization(this.appOptions.customization, mapCustomizationElements); if (this.appOptions.canBrandingExt) { Common.Utils.applyCustomization(this.appOptions.customization, mapCustomizationExtElements); - Common.Utils.applyCustomizationPlugins(this.UICustomizePlugins); + promise = this.getApplication().getController('Common.Controllers.Plugins').applyUICustomization(); } } - Common.NotificationCenter.trigger('layout:changed', 'main'); - $('#loading-mask').hide().remove(); - Common.Controllers.Desktop.process('preloader:hide'); + (promise || (new Promise(function(resolve, reject) { + resolve(); + }))).then(function() { + $('#loading-mask').hide().remove(); + Common.Controllers.Desktop.process('preloader:hide'); + }); }, onDownloadUrl: function(url) { @@ -1552,7 +1554,10 @@ define([ Common.Utils.ThemeColor.setColors(colors, standart_colors); if (window.styles_loaded) { this.updateThemeColors(); - this.fillTextArt(this.api.asc_getTextArtPreviews()); + var me = this; + setTimeout(function(){ + me.fillTextArt(me.api.asc_getTextArtPreviews()); + }, 1); } }, @@ -1589,7 +1594,6 @@ define([ _.each(shapes[index], function(shape, idx){ store.add({ - imageUrl : shape.Image, data : {shapeType: shape.Type}, tip : me['txtShape_' + shape.Type] || (me.textShape + ' ' + (idx+1)), allowSelected : true, @@ -1688,6 +1692,7 @@ define([ if (this.languages && this.languages.length>0) { this.getApplication().getController('DocumentHolder').getView('DocumentHolder').setLanguages(this.languages); this.getApplication().getController('Statusbar').setLanguages(this.languages); + this.getApplication().getController('Common.Controllers.ReviewChanges').setLanguages(this.languages); } }, @@ -1758,7 +1763,7 @@ define([ if (!this.appOptions.canPrint || this.isModalShowed) return; if (this.api) - this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event + this.api.asc_Print(new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera)); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event Common.component.Analytics.trackEvent('Print'); }, @@ -1778,20 +1783,23 @@ define([ this.iframePrint.style.bottom = "0"; document.body.appendChild(this.iframePrint); this.iframePrint.onload = function() { + try { me.iframePrint.contentWindow.focus(); me.iframePrint.contentWindow.print(); me.iframePrint.contentWindow.blur(); window.focus(); + } catch (e) { + me.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF)); + } }; } if (url) this.iframePrint.src = url; }, - onAdvancedOptions: function(advOptions) { + onAdvancedOptions: function(type, advOptions) { if (this._state.openDlg) return; - var type = advOptions.asc_getOptionId(), - me = this; + var me = this; if (type == Asc.c_oAscAdvancedOptionsID.DRM) { me._state.openDlg = new Common.Views.OpenDialog({ title: Common.Views.OpenDialog.prototype.txtTitleProtected, @@ -1823,144 +1831,6 @@ define([ } }, - requestPlugins: function(pluginsPath) { // request plugins - if (!pluginsPath) return; - - var config_plugins = (this.plugins && this.plugins.pluginsData && this.plugins.pluginsData.length>0) ? this.updatePlugins(this.plugins, false) : null, - request_plugins = this.updatePlugins( Common.Utils.getConfigJson(pluginsPath), false ); - - this.updatePluginsList({ - autostart: (config_plugins&&config_plugins.autostart ? config_plugins.autostart : []).concat(request_plugins&&request_plugins.autostart ? request_plugins.autostart : []), - pluginsData: (config_plugins ? config_plugins.pluginsData : []).concat(request_plugins ? request_plugins.pluginsData : []) - }, false); - }, - - - updatePlugins: function(plugins, uiCustomize) { // plugins from config - if (!plugins) return; - - var pluginsData = (uiCustomize) ? plugins.UIpluginsData : plugins.pluginsData; - if (!pluginsData || pluginsData.length<1) return; - - var arr = []; - pluginsData.forEach(function(item){ - var value = Common.Utils.getConfigJson(item); - if (value) { - value.baseUrl = item.substring(0, item.lastIndexOf("config.json")); - arr.push(value); - } - }); - - if (arr.length>0) { - var autostart = plugins.autostart || plugins.autoStartGuid; - if (typeof (autostart) == 'string') - autostart = [autostart]; - plugins.autoStartGuid && console.warn("Obsolete: The autoStartGuid parameter is deprecated. Please check the documentation for new plugin connection configuration."); - - if (uiCustomize) - this.updatePluginsList({ - autostart: autostart, - pluginsData: arr - }, !!uiCustomize); - else return { - autostart: autostart, - pluginsData: arr - }; - } - }, - - updatePluginsList: function(plugins, uiCustomize) { - var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), - isEdit = this.appOptions.isEdit; - if (plugins) { - var arr = [], arrUI = [], - lang = this.appOptions.lang.split(/[\-\_]/)[0]; - plugins.pluginsData.forEach(function(item){ - if (_.find(arr, function(arritem) { - return (arritem.get('baseUrl') == item.baseUrl || arritem.get('guid') == item.guid); - }) || pluginStore.findWhere({baseUrl: item.baseUrl}) || pluginStore.findWhere({guid: item.guid})) - return; - - var variationsArr = [], - pluginVisible = false; - item.variations.forEach(function(itemVar){ - var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, 'slide') && !itemVar.isSystem; - if ( visible ) pluginVisible = true; - - if ( item.isUICustomizer ) { - visible && arrUI.push(item.baseUrl + itemVar.url); - } else { - var model = new Common.Models.PluginVariation(itemVar); - var description = itemVar.description; - if (typeof itemVar.descriptionLocale == 'object') - description = itemVar.descriptionLocale[lang] || itemVar.descriptionLocale['en'] || description || ''; - - _.each(itemVar.buttons, function(b, index){ - if (typeof b.textLocale == 'object') - b.text = b.textLocale[lang] || b.textLocale['en'] || b.text || ''; - b.visible = (isEdit || b.isViewer !== false); - }); - - model.set({ - description: description, - index: variationsArr.length, - url: itemVar.url, - icons: itemVar.icons, - buttons: itemVar.buttons, - visible: visible - }); - - variationsArr.push(model); - } - }); - if (variationsArr.length>0 && !item.isUICustomizer) { - var name = item.name; - if (typeof item.nameLocale == 'object') - name = item.nameLocale[lang] || item.nameLocale['en'] || name || ''; - - arr.push(new Common.Models.Plugin({ - name : name, - guid: item.guid, - baseUrl : item.baseUrl, - variations: variationsArr, - currentVariation: 0, - visible: pluginVisible, - groupName: (item.group) ? item.group.name : '', - groupRank: (item.group) ? item.group.rank : 0 - })); - } - }); - - if (uiCustomize!==false) // from ui customizer in editor config or desktop event - this.UICustomizePlugins = arrUI; - - if ( !uiCustomize && pluginStore) { - arr = pluginStore.models.concat(arr); - arr.sort(function(a, b){ - var rank_a = a.get('groupRank'), - rank_b = b.get('groupRank'); - if (rank_a < rank_b) - return (rank_a==0) ? 1 : -1; - if (rank_a > rank_b) - return (rank_b==0) ? -1 : 1; - return 0; - }); - pluginStore.reset(arr); - this.appOptions.canPlugins = !pluginStore.isEmpty(); - } - } else if (!uiCustomize){ - this.appOptions.canPlugins = false; - } - if (!uiCustomize) this.getApplication().getController('LeftMenu').enablePlugins(); - if (this.appOptions.canPlugins) { - this.getApplication().getController('Common.Controllers.Plugins').setMode(this.appOptions).runAutoStartPlugins(plugins.autostart); - } - }, - - resetPluginsList: function() { - this.getApplication().getCollection('Common.Collections.Plugins').reset(); - }, - // Translation leavePageText: 'You have unsaved changes in this document. Click \'Stay on this Page\' then \'Save\' to save them. Click \'Leave this Page\' to discard all the unsaved changes.', criticalErrorTitle: 'Error', diff --git a/apps/presentationeditor/main/app/controller/RightMenu.js b/apps/presentationeditor/main/app/controller/RightMenu.js index 7dba2eed8..ce0e8a958 100644 --- a/apps/presentationeditor/main/app/controller/RightMenu.js +++ b/apps/presentationeditor/main/app/controller/RightMenu.js @@ -135,6 +135,7 @@ define([ this._settings[settingsType].lockedBackground = value.get_LockBackground(); this._settings[settingsType].lockedEffects = value.get_LockTranzition(); this._settings[settingsType].lockedTiming = value.get_LockTiming(); + this._settings[settingsType].lockedHeader = !!value.get_LockHeader && value.get_LockHeader(); } else { this._settings[settingsType].locked = value.get_Locked(); if (settingsType == Common.Utils.documentSettingsType.Shape && value.asc_getTextArtProperties()) { @@ -178,7 +179,8 @@ define([ if (pnl.locked!==undefined) this.rightmenu.slideSettings.SetSlideDisabled(this._state.no_slides || pnl.lockedBackground || pnl.locked, this._state.no_slides || pnl.lockedEffects || pnl.locked, - this._state.no_slides || pnl.lockedTiming || pnl.locked); + this._state.no_slides || pnl.lockedTiming || pnl.locked, + this._state.no_slides || pnl.lockedHeader || pnl.locked); } else pnl.panel.setLocked(pnl.locked); } @@ -214,7 +216,7 @@ define([ SetDisabled: function(disabled, allowSignature) { this.setMode({isEdit: !disabled}); if (this.rightmenu) { - this.rightmenu.slideSettings.SetSlideDisabled(disabled, disabled, disabled); + this.rightmenu.slideSettings.SetSlideDisabled(disabled, disabled, disabled, disabled); this.rightmenu.paragraphSettings.disableControls(disabled); this.rightmenu.shapeSettings.disableControls(disabled); this.rightmenu.textartSettings.disableControls(disabled); diff --git a/apps/presentationeditor/main/app/controller/Statusbar.js b/apps/presentationeditor/main/app/controller/Statusbar.js index 401ff7ecd..3f9f00ecb 100644 --- a/apps/presentationeditor/main/app/controller/Statusbar.js +++ b/apps/presentationeditor/main/app/controller/Statusbar.js @@ -58,9 +58,6 @@ define([ initialize: function() { var me = this; this.addListeners({ - 'FileMenu': { - 'settings:apply': _.bind(this.applySettings, this) - }, 'Statusbar': { 'langchanged': this.onLangMenu }, @@ -83,8 +80,7 @@ define([ events: function() { return { 'click #btn-zoom-down': _.bind(this.zoomDocument,this,'down'), - 'click #btn-zoom-up': _.bind(this.zoomDocument,this,'up'), - 'click #btn-doc-lang':_.bind(this.onBtnLanguage,this) + 'click #btn-zoom-up': _.bind(this.zoomDocument,this,'up') }; }, @@ -101,7 +97,19 @@ define([ this.statusbar.zoomMenu.on('item:click', _.bind(this.menuZoomClick, this)); this.statusbar.btnPreview.on('click', _.bind(this.onPreviewBtnClick, this)); this.statusbar.btnPreview.menu.on('item:click', _.bind(this.onPreviewItemClick, this)); - this.statusbar.btnSetSpelling.on('click', _.bind(this.onBtnSpelling, this)); + + var me = this; + Common.NotificationCenter.on('app:face', function (cfg) { + if ( cfg.isEdit ) { + var review = me.getApplication().getController('Common.Controllers.ReviewChanges').getView(); + me.btnSpelling = review.getButton('spelling', 'statusbar'); + me.btnSpelling.render( me.statusbar.$el.find('#btn-doc-spell') ); + me.btnDocLang = review.getButton('doclang', 'statusbar'); + me.btnDocLang.render( me.statusbar.$el.find('#btn-doc-lang') ); + } else { + me.statusbar.$el.find('.el-edit, .el-review').hide(); + } + }); }, setApi: function(api) { @@ -204,39 +212,13 @@ define([ }, createDelayedElements: function() { - this.statusbar.btnSetSpelling.toggle(Common.localStorage.getBool("pe-settings-spellcheck", true), true); this.statusbar.$el.css('z-index', ''); }, - onBtnLanguage: function() { - var me = this; - (new Common.Views.LanguageDialog({ - languages: me.langs, - current: me.api.asc_getDefaultLanguage(), - handler: function(result, value) { - if (result=='ok') { - var record = _.findWhere(me.langs, {'value':value}); - record && me.api.asc_setDefaultLanguage(record.code); - } - } - })).show(); - }, - onLangMenu: function(obj, langid, title) { this.api.put_TextPrLang(langid); }, - onBtnSpelling: function(d, b, e) { - Common.localStorage.setItem("pe-settings-spellcheck", d.pressed ? 1 : 0); - Common.Utils.InternalSettings.set("pe-settings-spellcheck", d.pressed); - this.api.asc_setSpellCheck(d.pressed); - Common.NotificationCenter.trigger('edit:complete', this.statusbar); - }, - - applySettings: function(menu) { - this.statusbar.btnSetSpelling.toggle(Common.localStorage.getBool("pe-settings-spellcheck", true), true); - }, - zoomText : 'Zoom {0}%' }, PE.Controllers.Statusbar || {})); }); \ No newline at end of file diff --git a/apps/presentationeditor/main/app/controller/Toolbar.js b/apps/presentationeditor/main/app/controller/Toolbar.js index b48f04afb..385c1db34 100644 --- a/apps/presentationeditor/main/app/controller/Toolbar.js +++ b/apps/presentationeditor/main/app/controller/Toolbar.js @@ -51,6 +51,8 @@ define([ 'common/main/lib/util/define', 'presentationeditor/main/app/collection/SlideThemes', 'presentationeditor/main/app/view/Toolbar', + 'presentationeditor/main/app/view/DateTimeDialog', + 'presentationeditor/main/app/view/HeaderFooterDialog', 'presentationeditor/main/app/view/HyperlinkSettingsDialog', 'presentationeditor/main/app/view/SlideSizeSettings', 'presentationeditor/main/app/view/SlideshowSettings' @@ -159,7 +161,7 @@ define([ if ( !_format || _supported.indexOf(_format) < 0 ) _format = Asc.c_oAscFileType.PDF; - _main.api.asc_DownloadAs(_format); + _main.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(_format)); }, 'go:editor': function() { Common.Gateway.requestEditRights(); @@ -305,10 +307,15 @@ define([ toolbar.btnClearStyle.on('click', _.bind(this.onClearStyleClick, this)); toolbar.btnCopyStyle.on('toggle', _.bind(this.onCopyStyleToggle, this)); toolbar.btnColorSchemas.menu.on('item:click', _.bind(this.onColorSchemaClick, this)); + toolbar.btnColorSchemas.menu.on('show:after', _.bind(this.onColorSchemaShow, this)); toolbar.btnSlideSize.menu.on('item:click', _.bind(this.onSlideSize, this)); toolbar.mnuInsertChartPicker.on('item:click', _.bind(this.onSelectChart, this)); toolbar.listTheme.on('click', _.bind(this.onListThemeSelect, this)); toolbar.btnInsertEquation.on('click', _.bind(this.onInsertEquationClick, this)); + toolbar.btnEditHeader.on('click', _.bind(this.onEditHeaderClick, this, 'header')); + toolbar.btnInsDateTime.on('click', _.bind(this.onEditHeaderClick, this, 'datetime')); + toolbar.btnInsSlideNum.on('click', _.bind(this.onEditHeaderClick, this, 'slidenum')); + Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); this.onSetupCopyStyleButton(); }, @@ -324,6 +331,7 @@ define([ this.api.asc_registerCallback('asc_onUnderline', _.bind(this.onApiUnderline, this)); this.api.asc_registerCallback('asc_onStrikeout', _.bind(this.onApiStrikeout, this)); this.api.asc_registerCallback('asc_onVerticalAlign', _.bind(this.onApiVerticalAlign, this)); + Common.NotificationCenter.on('fonts:change', _.bind(this.onApiChangeFont, this)); this.api.asc_registerCallback('asc_onCanUndo', _.bind(this.onApiCanRevert, this, 'undo')); this.api.asc_registerCallback('asc_onCanRedo', _.bind(this.onApiCanRevert, this, 'redo')); @@ -356,6 +364,7 @@ define([ this.api.asc_registerCallback('asc_onCountPages', _.bind(this.onApiCountPages, this)); this.api.asc_registerCallback('asc_onMathTypes', _.bind(this.onMathTypes, this)); this.api.asc_registerCallback('asc_onContextMenu', _.bind(this.onContextMenu, this)); + this.api.asc_registerCallback('asc_onTextLanguage', _.bind(this.onTextLanguage, this)); }, onChangeCompactView: function(view, compact) { @@ -380,6 +389,10 @@ define([ this.toolbar.collapse(); }, + onApiChangeFont: function(font) { + !this.getApplication().getController('Main').isModalShowed && this.toolbar.cmbFontName.onApiChangeFont(font); + }, + onApiFontSize: function(size) { if (this._state.fontsize !== size) { this.toolbar.cmbFontSize.setValue(size); @@ -614,7 +627,7 @@ define([ this.toolbar.btnChangeSlide, this.toolbar.btnPreview, this.toolbar.btnPrint, this.toolbar.btnCopy, this.toolbar.btnPaste, this.toolbar.btnCopyStyle, this.toolbar.btnInsertTable, this.toolbar.btnInsertChart, this.toolbar.btnColorSchemas, this.toolbar.btnShapeAlign, - this.toolbar.btnShapeArrange, this.toolbar.btnSlideSize, this.toolbar.listTheme + this.toolbar.btnShapeArrange, this.toolbar.btnSlideSize, this.toolbar.listTheme, this.toolbar.btnEditHeader, this.toolbar.btnInsDateTime, this.toolbar.btnInsSlideNum ]}); this.toolbar.lockToolbar(PE.enumLock.noSlides, this._state.no_slides, { array: this.toolbar.btnsInsertImage.concat(this.toolbar.btnsInsertText, this.toolbar.btnsInsertShape, this.toolbar.btnInsertEquation, this.toolbar.btnInsertTextArt) }); @@ -669,13 +682,14 @@ define([ if (paragraph_locked!==undefined && this._state.prcontrolsdisable !== paragraph_locked) { if (this._state.activated) this._state.prcontrolsdisable = paragraph_locked; - this.toolbar.lockToolbar(PE.enumLock.paragraphLock, paragraph_locked, {array: me.toolbar.paragraphControls}); + this.toolbar.lockToolbar(PE.enumLock.paragraphLock, paragraph_locked, {array: me.toolbar.paragraphControls.concat(me.toolbar.btnInsDateTime, me.toolbar.btnInsSlideNum)}); } if (this._state.no_paragraph !== no_paragraph) { if (this._state.activated) this._state.no_paragraph = no_paragraph; this.toolbar.lockToolbar(PE.enumLock.noParagraphSelected, no_paragraph, {array: me.toolbar.paragraphControls}); this.toolbar.lockToolbar(PE.enumLock.noParagraphSelected, no_paragraph, {array: [me.toolbar.btnCopyStyle]}); + this.toolbar.lockToolbar(PE.enumLock.paragraphLock, !no_paragraph && this._state.prcontrolsdisable, {array: [me.toolbar.btnInsDateTime, me.toolbar.btnInsSlideNum]}); } if (this._state.no_text !== no_text) { @@ -881,7 +895,7 @@ define([ onPrint: function(e) { if (this.api) - this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event + this.api.asc_Print(new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera)); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event Common.NotificationCenter.trigger('edit:complete', this.toolbar); @@ -1378,13 +1392,23 @@ define([ } })).show(); } else if (opts === 'storage') { - (new Common.Views.SelectFileDlg({ - fileChoiceUrl: me.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "").replace("{documentType}", "ImagesOnly") - })).on('selectfile', function(obj, file){ - me.toolbar.fireEvent('insertimage', me.toolbar); - me.api.AddImageUrl(file.url, undefined, true);// for loading from storage; - Common.component.Analytics.trackEvent('ToolBar', 'Image'); - }).show(); + if (this.toolbar.mode.canRequestInsertImage) { + Common.Gateway.requestInsertImage(); + } else { + (new Common.Views.SelectFileDlg({ + fileChoiceUrl: this.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "").replace("{documentType}", "ImagesOnly") + })).on('selectfile', function(obj, file){ + me.insertImage(file); + }).show(); + } + } + }, + + insertImage: function(data) { + if (data && data.url) { + this.toolbar.fireEvent('insertimage', this.toolbar); + this.api.AddImageUrl(data.url, undefined, data.token);// for loading from storage + Common.component.Analytics.trackEvent('ToolBar', 'Image'); } }, @@ -1438,6 +1462,52 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Add Text Art'); }, + onEditHeaderClick: function(type, e) { + var selectedElements = this.api.getSelectedElements(), + in_text = false; + + for (var i=0; i < selectedElements.length; i++) { + if (selectedElements[i].get_ObjectType() == Asc.c_oAscTypeSelectElement.Paragraph) { + in_text = true; + break; + } + } + if (in_text && type=='slidenum') { + this.api.asc_addSlideNumber(); + } else if (in_text && type=='datetime') { + //insert date time + var me = this; + (new PE.Views.DateTimeDialog({ + api: this.api, + lang: this._state.lang, + handler: function(result, value) { + if (result == 'ok') { + if (me.api) { + me.api.asc_addDateTime(value); + } + } + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + })).show(); + } else { + //edit header/footer + var me = this; + (new PE.Views.HeaderFooterDialog({ + api: this.api, + lang: this.api.asc_getDefaultLanguage(), + props: this.api.asc_getHeaderFooterProperties(), + handler: function(result, value) { + if (result == 'ok' || result == 'all') { + if (me.api) { + me.api.asc_setHeaderFooterProperties(value, result == 'all'); + } + } + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + })).show(); + } + }, + onClearStyleClick: function(btn, e) { if (this.api) this.api.ClearFormating(); @@ -1462,6 +1532,14 @@ define([ Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, + onColorSchemaShow: function(menu) { + if (this.api) { + var value = this.api.asc_GetCurrentColorSchemeName(); + var item = _.find(menu.items, function(item) { return item.value == value; }); + (item) ? item.setChecked(true) : menu.clearAll(); + } + }, + onSlideSize: function(menu, item) { if (item.value !== 'advanced') { var portrait = (this.currentPageSize.height > this.currentPageSize.width); @@ -1904,24 +1982,42 @@ define([ var themeStore = this.getCollection('SlideThemes'), mainController = this.getApplication().getController('Main'); if (themeStore) { - var arr = []; - _.each(defaultThemes.concat(docThemes), function(theme) { - arr.push(new Common.UI.DataViewModel({ - imageUrl: theme.get_Image(), + var arr1 = [], arr2 = []; + _.each(defaultThemes, function(theme, index) { + var tip = mainController.translationTable[theme.get_Name()] || theme.get_Name(); + arr1.push(new Common.UI.DataViewModel({ uid : Common.UI.getId(), themeId : theme.get_Index(), - tip : mainController.translationTable[theme.get_Name()] || theme.get_Name(), - itemWidth : 85, - itemHeight : 38 + tip : tip, + offsety : index * 38 })); - me.toolbar.listTheme.menuPicker.store.add({ - imageUrl: theme.get_Image(), + arr2.push({ uid : Common.UI.getId(), themeId : theme.get_Index(), - tip : mainController.translationTable[theme.get_Name()] || theme.get_Name() + tip : tip, + offsety : index * 38 }); }); - themeStore.reset(arr); + _.each(docThemes, function(theme) { + var image = theme.get_Image(), + tip = mainController.translationTable[theme.get_Name()] || theme.get_Name(); + arr1.push(new Common.UI.DataViewModel({ + imageUrl: image, + uid : Common.UI.getId(), + themeId : theme.get_Index(), + tip : tip, + offsety : 0 + })); + arr2.push({ + imageUrl: image, + uid : Common.UI.getId(), + themeId : theme.get_Index(), + tip : tip, + offsety : 0 + }); + }); + themeStore.reset(arr1); + me.toolbar.listTheme.menuPicker.store.reset(arr2); } if (me.toolbar.listTheme.menuPicker.store.length > 0 && me.toolbar.listTheme.rendered){ @@ -2047,21 +2143,7 @@ define([ this.btnsComment = []; if ( config.canCoAuthoring && config.canComments ) { var _set = PE.enumLock; - var slots = me.toolbar.$el.find('.slot-comment'); - slots.each(function(index, el) { - var _cls = 'btn-toolbar'; - /x-huge/.test(el.className) && (_cls += ' x-huge icon-top'); - - var button = new Common.UI.Button({ - id: 'tlbtn-addcomment-' + index, - cls: _cls, - iconCls: 'btn-menu-comments', - lock: [_set.lostConnect, _set.noSlides], - caption: me.toolbar.capBtnComment - }).render( slots.eq(index) ); - - me.btnsComment.push(button); - }); + this.btnsComment = Common.Utils.injectButtons(this.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'btn-menu-comments', me.toolbar.capBtnComment, [_set.lostConnect, _set.noSlides]); if ( this.btnsComment.length ) { var _comments = PE.getController('Common.Controllers.Comments').getView(); @@ -2087,6 +2169,10 @@ define([ } }, + onTextLanguage: function(langId) { + this._state.lang = langId; + }, + textEmptyImgUrl : 'You need to specify image URL.', textWarning : 'Warning', textFontSizeErr : 'The entered value must be more than 0', diff --git a/apps/presentationeditor/main/app/controller/Viewport.js b/apps/presentationeditor/main/app/controller/Viewport.js index 0891b2991..36aa2aab6 100644 --- a/apps/presentationeditor/main/app/controller/Viewport.js +++ b/apps/presentationeditor/main/app/controller/Viewport.js @@ -158,6 +158,8 @@ define([ var $filemenu = $('.toolbar-fullview-panel'); $filemenu.css('top', _intvars.get('toolbar-height-tabs')); + me.viewport.$el.attr('applang', me.appConfig.lang.split(/[\-_]/)[0]); + if ( !config.isEdit || ( !Common.localStorage.itemExists("pe-compact-toolbar") && config.customization && config.customization.compactToolbar )) diff --git a/apps/presentationeditor/main/app/template/HeaderFooterDialog.template b/apps/presentationeditor/main/app/template/HeaderFooterDialog.template new file mode 100644 index 000000000..84822e306 --- /dev/null +++ b/apps/presentationeditor/main/app/template/HeaderFooterDialog.template @@ -0,0 +1,47 @@ +
      -
      ', + '
      ', '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', - '', + '', + '', + '', '
      ', '
      + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      diff --git a/apps/presentationeditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/presentationeditor/main/app/template/ParagraphSettingsAdvanced.template index 961b81080..ccba9ab31 100644 --- a/apps/presentationeditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/presentationeditor/main/app/template/ParagraphSettingsAdvanced.template @@ -1,98 +1,114 @@
      - - - - - - -
      - -
      -
      - -
      -
      - -
      -
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      -
      - -
      -
      -
      +
      -
      -
      -
      -
      -
      - -
      -
      -
      +
      - - - +
      + +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      + + +
      \ No newline at end of file diff --git a/apps/presentationeditor/main/app/template/ShapeSettings.template b/apps/presentationeditor/main/app/template/ShapeSettings.template index f97d33753..85bab47b8 100644 --- a/apps/presentationeditor/main/app/template/ShapeSettings.template +++ b/apps/presentationeditor/main/app/template/ShapeSettings.template @@ -159,6 +159,16 @@
      + + +
      + + + + +
      + +
      diff --git a/apps/presentationeditor/main/app/template/SlideSettings.template b/apps/presentationeditor/main/app/template/SlideSettings.template index 366822d65..fbe24606d 100644 --- a/apps/presentationeditor/main/app/template/SlideSettings.template +++ b/apps/presentationeditor/main/app/template/SlideSettings.template @@ -116,9 +116,25 @@ - + + + +
      + + + + +
      + + + + +
      + + + \ No newline at end of file diff --git a/apps/presentationeditor/main/app/template/StatusBar.template b/apps/presentationeditor/main/app/template/StatusBar.template index 73e44e237..411948a61 100644 --- a/apps/presentationeditor/main/app/template/StatusBar.template +++ b/apps/presentationeditor/main/app/template/StatusBar.template @@ -33,8 +33,8 @@
      - - + +
      diff --git a/apps/presentationeditor/main/app/template/Toolbar.template b/apps/presentationeditor/main/app/template/Toolbar.template index 9bb562b76..0b8287bc6 100644 --- a/apps/presentationeditor/main/app/template/Toolbar.template +++ b/apps/presentationeditor/main/app/template/Toolbar.template @@ -121,6 +121,12 @@
      +
      + + + +
      +
      diff --git a/apps/presentationeditor/main/app/view/ChartSettings.js b/apps/presentationeditor/main/app/view/ChartSettings.js index 5c82c59a5..f742fb087 100644 --- a/apps/presentationeditor/main/app/view/ChartSettings.js +++ b/apps/presentationeditor/main/app/view/ChartSettings.js @@ -150,7 +150,7 @@ define([ if (this._isChartStylesChanged) { if (rec) - this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.getSelectedRec()[0],true); + this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.getSelectedRec(),true); else this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.store.at(0), true); } @@ -415,16 +415,16 @@ define([ if (count>0 && count==styles.length) { var data = stylesStore.models; _.each(styles, function(style, index){ - data[index].set('imageUrl', style.asc_getImageUrl()); + data[index].set('imageUrl', style.asc_getImage()); }); } else { var stylearray = [], selectedIdx = -1; _.each(styles, function(item, index){ stylearray.push({ - imageUrl: item.asc_getImageUrl(), - data : item.asc_getStyle(), - tip : me.textStyle + ' ' + item.asc_getStyle() + imageUrl: item.asc_getImage(), + data : item.asc_getName(), + tip : me.textStyle + ' ' + item.asc_getName() }); }); stylesStore.reset(stylearray, {silent: false}); diff --git a/apps/presentationeditor/main/app/view/DateTimeDialog.js b/apps/presentationeditor/main/app/view/DateTimeDialog.js new file mode 100644 index 000000000..367b9a45c --- /dev/null +++ b/apps/presentationeditor/main/app/view/DateTimeDialog.js @@ -0,0 +1,257 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ +/** + * DateTimeDialog.js + * + * Created by Julia Radzhabova on 26.06.2019 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'common/main/lib/component/Window', + 'common/main/lib/component/ComboBox', + 'common/main/lib/component/ListView' +], function () { + 'use strict'; + + PE.Views.DateTimeDialog = Common.UI.Window.extend(_.extend({ + options: { + width: 350, + style: 'min-width: 230px;', + cls: 'modal-dlg' + }, + + initialize : function (options) { + var t = this, + _options = {}; + + _.extend(this.options, { + title: this.txtTitle + }, options || {}); + + this.template = [ + '
      ', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '
      ', + '' + ].join(''); + + this.options.tpl = _.template(this.template)(this.options); + this.api = this.options.api; + this.lang = this.options.lang; + this.handler = this.options.handler; + + Common.UI.Window.prototype.initialize.call(this, this.options); + }, + render: function () { + Common.UI.Window.prototype.render.call(this); + + var data = [{ value: 0x042C }, { value: 0x0402 }, { value: 0x0405 }, { value: 0x0407 }, {value: 0x0807}, { value: 0x0408 }, { value: 0x0C09 }, { value: 0x0809 }, { value: 0x0409 }, { value: 0x0C0A }, { value: 0x080A }, + { value: 0x040B }, { value: 0x040C }, { value: 0x0410 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { 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 }]; + data.forEach(function(item) { + var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value); + item.displayValue = langinfo[1]; + item.langName = langinfo[0]; + }); + + this.cmbLang = new Common.UI.ComboBox({ + el : $('#datetime-dlg-lang'), + menuStyle : 'min-width: 100%; max-height: 185px;', + cls : 'input-group-nr', + editable : false, + data : data + }); + this.cmbLang.setValue(0x0409); + this.cmbLang.on('selected', _.bind(function(combo, record) { + this.updateFormats(record.value); + }, this)); + + this.chUpdate = new Common.UI.CheckBox({ + el: $('#datetime-dlg-update'), + labelText: this.textUpdate + }); + this.chUpdate.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + this.onSelectFormat(this.listFormats, null, this.listFormats.getSelectedRec()); + }, this)); + + this.listFormats = new Common.UI.ListView({ + el: $('#datetime-dlg-format'), + store: new Common.UI.DataViewStore(), + scrollAlwaysVisible: true + }); + + this.listFormats.on('item:select', _.bind(this.onSelectFormat, this)); + this.listFormats.on('item:dblclick', _.bind(this.onDblClickFormat, this)); + this.listFormats.on('entervalue', _.bind(this.onPrimary, this)); + this.listFormats.$el.find('.listview').focus(); + + this.btnDefault = new Common.UI.Button({ + el: $('#datetime-dlg-default') + }); + this.btnDefault.on('click', _.bind(function(btn, e) { + var rec = this.listFormats.getSelectedRec(); + Common.UI.warning({ + msg: Common.Utils.String.format(this.confirmDefault, Common.util.LanguageInfo.getLocalLanguageName(this.cmbLang.getValue())[1], rec ? rec.get('value') : ''), + buttons: ['yes', 'no'], + primary: 'yes', + callback: _.bind(function(btn) { + if (btn == 'yes') { + this.defaultFormats[this.cmbLang.getValue()] = rec ? rec.get('format') : ''; + this.api.asc_setDefaultDateTimeFormat(this.defaultFormats); + var arr = []; + for (var name in this.defaultFormats) { + if (name) { + arr.push(name + ' ' + this.defaultFormats[name]); + } + } + var value = arr.join(';'); + Common.localStorage.setItem("pe-settings-datetime-default", value); + Common.Utils.InternalSettings.set("pe-settings-datetime-default", value); + } + }, this) + }); + }, this)); + + this.$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + this.afterRender(); + }, + + afterRender: function() { + var me = this, + value = Common.Utils.InternalSettings.get("pe-settings-datetime-default"), + arr = (value) ? value.split(';') : []; + this.defaultFormats = []; + arr.forEach(function(item){ + var pair = item.split(' '); + me.defaultFormats[parseInt(pair[0])] = pair[1]; + }); + + this._setDefaults(); + }, + + _setDefaults: function () { + this.props = new AscCommonSlide.CAscDateTime(); + if (this.lang) { + var item = this.cmbLang.store.findWhere({value: this.lang}); + item = item ? item.get('value') : 0x0409; + this.cmbLang.setValue(item) + } + this.updateFormats(this.cmbLang.getValue()); + }, + + getSettings: function () { + return this.props; + }, + + updateFormats: function(lang) { + this.props.put_Lang(lang); + var data = this.props.get_DateTimeExamples(), + arr = []; + var store = this.listFormats.store; + for (var name in data) { + if (data[name]) { + var rec = new Common.UI.DataViewModel(); + rec.set({ + format: name, + value: data[name] + }); + arr.push(rec); + } + } + store.reset(arr); + var format = this.defaultFormats[lang]; + format ? this.listFormats.selectRecord(store.findWhere({format: format})) : this.listFormats.selectByIndex(0); + var rec = this.listFormats.getSelectedRec(); + this.listFormats.scrollToRecord(rec); + this.onSelectFormat(this.listFormats, null, rec); + }, + + onSelectFormat: function(lisvView, itemView, record) { + if (!record) return; + if (this.chUpdate.getValue()=='checked') { + this.props.put_DateTime(record.get('format')); + } else { + this.props.put_DateTime(null); + this.props.put_CustomDateTime(record.get('value')); + } + }, + + onBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + onDblClickFormat: function () { + this._handleInput('ok'); + }, + + onPrimary: function(event) { + this._handleInput('ok'); + return false; + }, + + _handleInput: function(state) { + if (this.options.handler) { + this.options.handler.call(this, state, this.getSettings()); + } + + this.close(); + }, + + // + cancelButtonText: 'Cancel', + okButtonText: 'OK', + txtTitle: 'Date & Time', + textLang: 'Language', + textFormat: 'Formats', + textUpdate: 'Update automatically', + textDefault: 'Set as default', + confirmDefault: 'Set default format for {0}: "{1}"' + + }, PE.Views.DateTimeDialog || {})); +}); \ No newline at end of file diff --git a/apps/presentationeditor/main/app/view/DocumentHolder.js b/apps/presentationeditor/main/app/view/DocumentHolder.js index cea0af992..e16ca6ae2 100644 --- a/apps/presentationeditor/main/app/view/DocumentHolder.js +++ b/apps/presentationeditor/main/app/view/DocumentHolder.js @@ -731,7 +731,7 @@ define([ }; this.addWordVariants = function(isParagraph) { - if (!me.textMenu) return; + if (!me.textMenu || !me.textMenu.isVisible() && !me.tableMenu.isVisible()) return; if (_.isUndefined(isParagraph)) { isParagraph = me.textMenu.isVisible(); @@ -1749,9 +1749,11 @@ define([ var dataViewItems = picker.dataViewItems, el = $(dataViewItems[0].el), itemW = el.outerWidth() + parseInt(el.css('margin-left')) + parseInt(el.css('margin-right')), - columnCount = Math.floor(picker.cmpEl.width() / itemW), + columnCount = Math.floor(picker.options.restoreWidth / itemW + 0.5) || 1, // try to use restore width col = 0, maxHeight = 0; + picker.cmpEl.width(itemW * columnCount + 11); + for (var i=0; i', @@ -2028,8 +2048,8 @@ define([ style: 'max-height: 300px;', store : PE.getCollection('SlideThemes'), itemTemplate: _.template([ - '
      ', - '
      ', + '
      ', + '
      ' + 'background-image: url(<%= imageUrl %>);' + '<% } %> background-position: 0 -<%= offsety %>px;"/>', '
      ' ].join('')) }).on('item:click', function(picker, item, record, e) { @@ -2144,8 +2164,8 @@ define([ caption : me.moreText, menu : new Common.UI.Menu({ menuAlign: 'tl-tr', - items : [ - ] + restoreHeight: true, + items : [] }) }); @@ -2154,19 +2174,9 @@ define([ menu : new Common.UI.Menu({ cls: 'lang-menu', menuAlign: 'tl-tr', - maxHeight: 300, - restoreHeight: 300, - items : [ - ] - }).on('show:before', function (mnu) { - if (!this.scroller) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength: 30, - alwaysVisibleY: true - }); - } + restoreHeight: 285, + items : [], + search: true }) }); @@ -2188,6 +2198,13 @@ define([ } }); + var menuToDictionaryTable = new Common.UI.MenuItem({ + caption : me.toDictionaryText + }).on('click', function(item, e) { + me.api.asc_spellCheckAddToDictionary(me._currentSpellObj); + me.fireEvent('editcomplete', me); + }); + var menuIgnoreSpellTableSeparator = new Common.UI.MenuItem({ caption : '--' }); @@ -2206,6 +2223,7 @@ define([ menuIgnoreSpellTableSeparator, menuIgnoreSpellTable, menuIgnoreAllSpellTable, + menuToDictionaryTable, { caption: '--' }, me.langTableMenu ] @@ -2221,9 +2239,8 @@ define([ caption : me.moreText, menu : new Common.UI.Menu({ menuAlign: 'tl-tr', - style : 'max-height: 300px;', - items: [ - ] + restoreHeight: true, + items: [] }) }); @@ -2232,19 +2249,9 @@ define([ menu : new Common.UI.Menu({ cls: 'lang-menu', menuAlign: 'tl-tr', - maxHeight: 300, - restoreHeight: 300, - items : [ - ] - }).on('show:before', function (mnu) { - if (!this.scroller) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength: 30, - alwaysVisibleY: true - }); - } + restoreHeight: 285, + items : [], + search: true }) }); @@ -2262,6 +2269,13 @@ define([ me.fireEvent('editcomplete', me); }); + var menuToDictionaryPara = new Common.UI.MenuItem({ + caption : me.toDictionaryText + }).on('click', function(item, e) { + me.api.asc_spellCheckAddToDictionary(me._currentSpellObj); + me.fireEvent('editcomplete', me); + }); + var menuIgnoreSpellParaSeparator = new Common.UI.MenuItem({ caption : '--' }); @@ -2989,15 +3003,17 @@ define([ menuParaPaste.setDisabled(disabled); // spellCheck - me.menuSpellPara.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); - menuSpellcheckParaSeparator.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); - menuIgnoreSpellPara.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); - menuIgnoreAllSpellPara.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); - me.langParaMenu.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); + var spell = (value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); + me.menuSpellPara.setVisible(spell); + menuSpellcheckParaSeparator.setVisible(spell); + menuIgnoreSpellPara.setVisible(spell); + menuIgnoreAllSpellPara.setVisible(spell); + menuToDictionaryPara.setVisible(spell && me.mode.isDesktopApp); + me.langParaMenu.setVisible(spell); me.langParaMenu.setDisabled(disabled); - menuIgnoreSpellParaSeparator.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); + menuIgnoreSpellParaSeparator.setVisible(spell); - if (value.spellProps!==undefined && value.spellProps.value.get_Checked()===false && value.spellProps.value.get_Variants() !== null && value.spellProps.value.get_Variants() !== undefined) { + if (spell && value.spellProps.value.get_Variants() !== null && value.spellProps.value.get_Variants() !== undefined) { me.addWordVariants(true); } else { me.menuSpellPara.setCaption(me.loadSpellText, true); @@ -3012,9 +3028,9 @@ define([ //equation menu var eqlen = 0; if (isEquation) { - eqlen = me.addEquationMenu(true, 11); + eqlen = me.addEquationMenu(true, 12); } else - me.clearEquationMenu(true, 11); + me.clearEquationMenu(true, 12); menuEquationSeparator.setVisible(isEquation && eqlen>0); }, items: [ @@ -3023,6 +3039,7 @@ define([ menuSpellcheckParaSeparator, menuIgnoreSpellPara, menuIgnoreAllSpellPara, + menuToDictionaryPara, me.langParaMenu, menuIgnoreSpellParaSeparator, menuParaCut, @@ -3112,6 +3129,7 @@ define([ menuHyperlinkSeparator.setVisible(menuAddHyperlinkTable.isVisible() || menuHyperlinkTable.isVisible() /** coauthoring begin **/|| menuAddCommentTable.isVisible()/** coauthoring end **/); me.menuSpellCheckTable.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); + menuToDictionaryTable.setVisible(me.mode.isDesktopApp); menuSpellcheckTableSeparator.setVisible(value.spellProps!==undefined && value.spellProps.value.get_Checked()===false); me.langTableMenu.setDisabled(disabled); @@ -3575,7 +3593,9 @@ define([ textRotate: 'Rotate', textCrop: 'Crop', textCropFill: 'Fill', - textCropFit: 'Fit' + textCropFit: 'Fit', + toDictionaryText: 'Add to Dictionary', + txtPrintSelection: 'Print Selection' }, PE.Views.DocumentHolder || {})); }); \ No newline at end of file diff --git a/apps/presentationeditor/main/app/view/FileMenu.js b/apps/presentationeditor/main/app/view/FileMenu.js index 9e4eafa87..f76d34328 100644 --- a/apps/presentationeditor/main/app/view/FileMenu.js +++ b/apps/presentationeditor/main/app/view/FileMenu.js @@ -214,8 +214,6 @@ define([ var me = this; me.panels = { - 'saveas' : (new PE.Views.FileMenuPanels.ViewSaveAs({menu:me})).render(), - 'save-copy' : (new PE.Views.FileMenuPanels.ViewSaveCopy({menu:me})).render(), 'opts' : (new PE.Views.FileMenuPanels.Settings({menu:me})).render(), 'info' : (new PE.Views.FileMenuPanels.DocumentInfo({menu:me})).render(), 'rights' : (new PE.Views.FileMenuPanels.DocumentRights({menu:me})).render() @@ -247,23 +245,21 @@ define([ }, applyMode: function() { + this.miDownload[(this.mode.canDownload && (!this.mode.isDesktopApp || !this.mode.isOffline))?'show':'hide'](); + this.miSaveCopyAs[(this.mode.canDownload && (!this.mode.isDesktopApp || !this.mode.isOffline)) && (this.mode.canRequestSaveAs || this.mode.saveAsUrl) ?'show':'hide'](); + this.miSaveAs[(this.mode.canDownload && this.mode.isDesktopApp && this.mode.isOffline)?'show':'hide'](); + this.miSave[this.mode.isEdit?'show':'hide'](); + this.miEdit[!this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights ?'show':'hide'](); this.miPrint[this.mode.canPrint?'show':'hide'](); this.miRename[(this.mode.canRename && !this.mode.isDesktopApp) ?'show':'hide'](); this.miProtect[this.mode.canProtect ?'show':'hide'](); - this.miProtect.$el.find('+.devider')[!this.mode.isDisconnected?'show':'hide'](); + var isVisible = this.mode.canDownload || this.mode.isEdit || this.mode.canPrint || this.mode.canProtect || + !this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights || this.mode.canRename && !this.mode.isDesktopApp; + this.miProtect.$el.find('+.devider')[isVisible && !this.mode.isDisconnected?'show':'hide'](); this.miRecent[this.mode.canOpenRecent?'show':'hide'](); this.miNew[this.mode.canCreateNew?'show':'hide'](); this.miNew.$el.find('+.devider')[this.mode.canCreateNew?'show':'hide'](); - this.miDownload[(this.mode.canDownload && (!this.mode.isDesktopApp || !this.mode.isOffline))?'show':'hide'](); - this.miSaveCopyAs[((this.mode.canDownload || this.mode.canDownloadOrigin) && (!this.mode.isDesktopApp || !this.mode.isOffline)) && this.mode.saveAsUrl ?'show':'hide'](); - this.miSaveAs[(this.mode.canDownload && this.mode.isDesktopApp && this.mode.isOffline)?'show':'hide'](); - -// this.hkSaveAs[this.mode.canDownload?'enable':'disable'](); - - this.miSave[this.mode.isEdit?'show':'hide'](); - this.miEdit[!this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights ?'show':'hide'](); - this.miAccess[(!this.mode.isOffline && this.document&&this.document.info&&(this.document.info.sharingSettings&&this.document.info.sharingSettings.length>0 || this.mode.sharingSettingsUrl&&this.mode.sharingSettingsUrl.length))?'show':'hide'](); @@ -292,14 +288,19 @@ define([ } } - if (this.mode.isDesktopApp && this.mode.isOffline) - this.$el.find('#fm-btn-create, #fm-btn-back, #fm-btn-create+.devider').hide(); - if (this.mode.canProtect) { this.panels['protect'] = (new PE.Views.FileMenuPanels.ProtectDoc({menu:this})).render(); this.panels['protect'].setMode(this.mode); } + if (this.mode.canDownload) { + this.panels['saveas'] = ((new PE.Views.FileMenuPanels.ViewSaveAs({menu: this})).render()); + } + + if (this.mode.canDownload && (this.mode.canRequestSaveAs || this.mode.saveAsUrl)) { + this.panels['save-copy'] = ((new PE.Views.FileMenuPanels.ViewSaveCopy({menu: this})).render()); + } + if (this.mode.canHelp) { this.panels['help'] = ((new PE.Views.FileMenuPanels.Help({menu: this})).render()); this.panels['help'].setLangConfig(this.mode.lang); diff --git a/apps/presentationeditor/main/app/view/FileMenuPanels.js b/apps/presentationeditor/main/app/view/FileMenuPanels.js index 3a7d31bd7..656ce32e7 100644 --- a/apps/presentationeditor/main/app/view/FileMenuPanels.js +++ b/apps/presentationeditor/main/app/view/FileMenuPanels.js @@ -595,40 +595,180 @@ define([ this.template = _.template([ '', '', - '', - '', - '', - '', - '', - '', - '', - '', '', '', '', - '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + // '', + // '', + // '', + // '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', '', - '', + '', '', - '', - '', - '', + '', + '', + '', '', - '', '
      -
      ', + '', + '', + '', + '', + '
      ', + '
      ' ].join('')); this.menu = options.menu; + this.coreProps = null; + this.authors = []; + this._locked = false; }, render: function() { $(this.el).html(this.template()); - this.lblTitle = $('#id-info-title'); + var me = this; + + // server info this.lblPlacement = $('#id-info-placement'); + this.lblOwner = $('#id-info-owner'); + this.lblUploaded = $('#id-info-uploaded'); + + // edited info + var keyDownBefore = function(input, e){ + if (e.keyCode === Common.UI.Keys.ESC) { + var newVal = input._input.val(), + oldVal = input.getValue(); + if (newVal !== oldVal) { + input.setValue(oldVal); + e.stopPropagation(); + } + } + }; + + this.inputTitle = new Common.UI.InputField({ + el : $('#id-info-title'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putTitle(me.inputTitle.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + this.inputSubject = new Common.UI.InputField({ + el : $('#id-info-subject'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putSubject(me.inputSubject.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + this.inputComment = new Common.UI.InputField({ + el : $('#id-info-comment'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putDescription(me.inputComment.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + + // modify info + this.lblModifyDate = $('#id-info-modify-date'); + this.lblModifyBy = $('#id-info-modify-by'); + + // creation info this.lblDate = $('#id-info-date'); - this.lblAuthor = $('#id-info-author'); this.lblApplication = $('#id-info-appname'); + this.tblAuthor = $('#id-info-author table'); + this.trAuthor = $('#id-info-add-author').closest('tr'); + this.authorTpl = '
      '; + + this.tblAuthor.on('click', function(e) { + var btn = $(e.target); + if (btn.hasClass('close') && !btn.hasClass('disabled')) { + var el = btn.closest('tr'), + idx = me.tblAuthor.find('tr').index(el); + el.remove(); + me.authors.splice(idx, 1); + if (me.coreProps && me.api) { + me.coreProps.asc_putCreator(me.authors.join(';')); + me.api.asc_setCoreProps(me.coreProps); + } + } + }); + + this.inputAuthor = new Common.UI.InputField({ + el : $('#id-info-add-author'), + style : 'width: 200px;', + validateOnBlur: false, + placeHolder: this.txtAddAuthor + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue == oldValue) return; + + var val = newValue.trim(); + if (!!val && val !== oldValue.trim()) { + val.split(/\s*[,;]\s*/).forEach(function(item){ + var str = item.trim(); + if (str) { + var div = $(Common.Utils.String.format(me.authorTpl, Common.Utils.String.htmlEncode(str))); + me.trAuthor.before(div); + me.authors.push(item); + } + }); + me.inputAuthor.setValue(''); + if (me.coreProps && me.api) { + me.coreProps.asc_putCreator(me.authors.join(';')); + me.api.asc_setCoreProps(me.coreProps); + } + } + }).on('keydown:before', keyDownBefore); this.rendered = true; @@ -646,6 +786,8 @@ define([ show: function() { Common.UI.BaseView.prototype.show.call(this,arguments); + + this.updateFileInfo(); }, hide: function() { @@ -653,58 +795,155 @@ define([ }, updateInfo: function(doc) { + if (!this.doc && doc && doc.info) { + doc.info.author && console.log("Obsolete: The 'author' parameter of the document 'info' section is deprecated. Please use 'owner' instead."); + doc.info.created && console.log("Obsolete: The 'created' parameter of the document 'info' section is deprecated. Please use 'uploaded' instead."); + } + this.doc = doc; if (!this.rendered) return; + var visible = false; doc = doc || {}; - this.lblTitle.text((doc.title) ? doc.title : '-'); - if (doc.info) { - if (doc.info.author) - this.lblAuthor.text(doc.info.author); - this._ShowHideInfoItem('author', doc.info.author!==undefined && doc.info.author!==null); - if (doc.info.created ) - this.lblDate.text( doc.info.created ); - this._ShowHideInfoItem('date', doc.info.created!==undefined && doc.info.created!==null); + // server info if (doc.info.folder ) this.lblPlacement.text( doc.info.folder ); - this._ShowHideInfoItem('placement', doc.info.folder!==undefined && doc.info.folder!==null); + visible = this._ShowHideInfoItem(this.lblPlacement, doc.info.folder!==undefined && doc.info.folder!==null) || visible; + var value = doc.info.owner || doc.info.author; + if (value) + this.lblOwner.text(value); + visible = this._ShowHideInfoItem(this.lblOwner, !!value) || visible; + value = doc.info.uploaded || doc.info.created; + if (value) + this.lblUploaded.text(value); + visible = this._ShowHideInfoItem(this.lblUploaded, !!value) || visible; } else this._ShowHideDocInfo(false); + $('tr.divider.general', this.el)[visible?'show':'hide'](); + var appname = (this.api) ? this.api.asc_getAppProps() : null; if (appname) { appname = (appname.asc_getApplication() || '') + ' ' + (appname.asc_getAppVersion() || ''); this.lblApplication.text(appname); } - this._ShowHideInfoItem('appname', !!appname); + this._ShowHideInfoItem(this.lblApplication, !!appname); + + this.coreProps = (this.api) ? this.api.asc_getCoreProps() : null; + if (this.coreProps) { + var value = this.coreProps.asc_getCreated(); + if (value) + this.lblDate.text(value.toLocaleString()); + this._ShowHideInfoItem(this.lblDate, !!value); + } }, - _ShowHideInfoItem: function(cls, visible) { - $('tr.'+cls, this.el)[visible?'show':'hide'](); + updateFileInfo: function() { + if (!this.rendered) + return; + + var me = this, + props = (this.api) ? this.api.asc_getCoreProps() : null, + value; + + this.coreProps = props; + // var app = (this.api) ? this.api.asc_getAppProps() : null; + // if (app) { + // value = app.asc_getTotalTime(); + // if (value) + // this.lblEditTime.text(value + ' ' + this.txtMinutes); + // } + // this._ShowHideInfoItem(this.lblEditTime, !!value); + + if (props) { + var visible = false; + value = props.asc_getModified(); + if (value) + this.lblModifyDate.text(value.toLocaleString()); + visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible; + value = props.asc_getLastModifiedBy(); + if (value) + this.lblModifyBy.text(value); + visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible; + $('tr.divider.modify', this.el)[visible?'show':'hide'](); + + value = props.asc_getTitle(); + this.inputTitle.setValue(value || ''); + value = props.asc_getSubject(); + this.inputSubject.setValue(value || ''); + value = props.asc_getDescription(); + this.inputComment.setValue(value || ''); + + this.tblAuthor.find('tr:not(:last-of-type)').remove(); + this.authors = []; + value = props.asc_getCreator();//"123\"\"\"\<\>,456"; + value && value.split(/\s*[,;]\s*/).forEach(function(item) { + var div = $(Common.Utils.String.format(me.authorTpl, Common.Utils.String.htmlEncode(item))); + me.trAuthor.before(div); + me.authors.push(item); + }); + this.tblAuthor.find('.close').toggleClass('hidden', !this.mode.isEdit); + } + this.SetDisabled(); + }, + + _ShowHideInfoItem: function(el, visible) { + el.closest('tr')[visible?'show':'hide'](); + return visible; }, _ShowHideDocInfo: function(visible) { - this._ShowHideInfoItem('date', visible); - this._ShowHideInfoItem('placement', visible); - this._ShowHideInfoItem('author', visible); + this._ShowHideInfoItem(this.lblPlacement, visible); + this._ShowHideInfoItem(this.lblOwner, visible); + this._ShowHideInfoItem(this.lblUploaded, visible); }, setMode: function(mode) { + this.mode = mode; + this.inputAuthor.setVisible(mode.isEdit); + this.tblAuthor.find('.close').toggleClass('hidden', !mode.isEdit); + this.SetDisabled(); return this; }, setApi: function(o) { this.api = o; + this.api.asc_registerCallback('asc_onLockCore', _.bind(this.onLockCore, this)); this.updateInfo(this.doc); return this; }, - txtTitle: 'Document Title', + onLockCore: function(lock) { + this._locked = lock; + this.updateFileInfo(); + }, + + SetDisabled: function() { + var disable = !this.mode.isEdit || this._locked; + this.inputTitle.setDisabled(disable); + this.inputSubject.setDisabled(disable); + this.inputComment.setDisabled(disable); + this.inputAuthor.setDisabled(disable); + this.tblAuthor.find('.close').toggleClass('disabled', this._locked); + this.tblAuthor.toggleClass('disabled', disable); + }, + + txtPlacement: 'Location', + txtOwner: 'Owner', + txtUploaded: 'Uploaded', + txtAppName: 'Application', + txtEditTime: 'Total Editing time', + txtTitle: 'Title', + txtSubject: 'Subject', + txtComment: 'Comment', + txtModifyDate: 'Last Modified', + txtModifyBy: 'Last Modified By', + txtCreated: 'Created', txtAuthor: 'Author', - txtPlacement: 'Placement', - txtDate: 'Creation Date', - txtAppName: 'Application' + txtAddAuthor: 'Add Author', + txtAddText: 'Add Text', + txtMinutes: 'min' }, PE.Views.FileMenuPanels.DocumentInfo || {})); PE.Views.FileMenuPanels.DocumentRights = Common.UI.BaseView.extend(_.extend({ @@ -802,20 +1041,20 @@ define([ setMode: function(mode) { this.sharingSettingsUrl = mode.sharingSettingsUrl; + !!this.sharingSettingsUrl && this.sharingSettingsUrl.length && Common.Gateway.on('showsharingsettings', _.bind(this.changeAccessRights, this)); + !!this.sharingSettingsUrl && this.sharingSettingsUrl.length && Common.Gateway.on('setsharingsettings', _.bind(this.setSharingSettings, this)); return this; }, changeAccessRights: function(btn,event,opts) { - if (this._docAccessDlg) return; + if (this._docAccessDlg || this._readonlyRights) return; var me = this; me._docAccessDlg = new Common.Views.DocumentAccessDialog({ settingsurl: this.sharingSettingsUrl }); me._docAccessDlg.on('accessrights', function(obj, rights){ - me.doc.info.sharingSettings = rights; - me._ShowHideInfoItem('rights', me.doc.info.sharingSettings!==undefined && me.doc.info.sharingSettings!==null && me.doc.info.sharingSettings.length>0); - me.cntRights.html(me.templateRights({users: me.doc.info.sharingSettings})); + me.updateSharingSettings(rights); }).on('close', function(obj){ me._docAccessDlg = undefined; }); @@ -823,6 +1062,17 @@ define([ me._docAccessDlg.show(); }, + setSharingSettings: function(data) { + data && this.updateSharingSettings(data.sharingSettings); + }, + + updateSharingSettings: function(rights) { + this.doc.info.sharingSettings = rights; + this._ShowHideInfoItem('rights', this.doc.info.sharingSettings!==undefined && this.doc.info.sharingSettings!==null && this.doc.info.sharingSettings.length>0); + this.cntRights.html(this.templateRights({users: this.doc.info.sharingSettings})); + Common.NotificationCenter.trigger('mentions:clearusers', this); + }, + onLostEditRights: function() { this._readonlyRights = true; if (!this.rendered) diff --git a/apps/presentationeditor/main/app/view/HeaderFooterDialog.js b/apps/presentationeditor/main/app/view/HeaderFooterDialog.js new file mode 100644 index 000000000..1f41f68c4 --- /dev/null +++ b/apps/presentationeditor/main/app/view/HeaderFooterDialog.js @@ -0,0 +1,365 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ + +/** + * HeaderFooterDialog.js + * + * Created by Julia Radzhabova on 09.07.2019 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ +define(['text!presentationeditor/main/app/template/HeaderFooterDialog.template', + 'common/main/lib/util/utils', + 'common/main/lib/component/RadioBox', + 'common/main/lib/component/InputField', + 'common/main/lib/view/AdvancedSettingsWindow' +], function (template) { 'use strict'; + + PE.Views.HeaderFooterDialog = Common.Views.AdvancedSettingsWindow.extend(_.extend({ + options: { + contentWidth: 360, + height: 380 + }, + + initialize : function(options) { + var me = this; + + _.extend(this.options, { + title: this.textTitle, + template: _.template( + [ + '
      ', + '
      ', + '
      ', + template, + '
      ', + '
      ', + '
      ', + '', + '
      ', + '
      ', + '' + ].join('') + )({ + scope: this + }) + }, options); + + this.lang = options.lang; + this.handler = options.handler; + this.hfProps = options.props; + this.api = options.api; + this.dateControls = []; + + Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options); + }, + + render: function() { + Common.Views.AdvancedSettingsWindow.prototype.render.call(this); + var me = this; + + this.chDateTime = new Common.UI.CheckBox({ + el: $('#hf-dlg-chb-datetime'), + labelText: this.textDateTime + }); + this.chDateTime.on('change', _.bind(this.setType, this, 'date')); + + this.chSlide = new Common.UI.CheckBox({ + el: $('#hf-dlg-chb-slide'), + labelText: this.textSlideNum + }); + this.chSlide.on('change', _.bind(this.setType, this, 'slide')); + + this.chFooter = new Common.UI.CheckBox({ + el: $('#hf-dlg-chb-text'), + labelText: this.textFooter + }); + this.chFooter.on('change', _.bind(this.setType, this, 'footer')); + + this.inputFooter = new Common.UI.InputField({ + el : $('#hf-dlg-text'), + validateOnBlur: false, + style : 'width: 100%;' + }); + + var data = [{ value: 0x042C }, { value: 0x0402 }, { value: 0x0405 }, { value: 0x0407 }, {value: 0x0807}, { value: 0x0408 }, { value: 0x0C09 }, { value: 0x0809 }, { value: 0x0409 }, { value: 0x0C0A }, { value: 0x080A }, + { value: 0x040B }, { value: 0x040C }, { value: 0x0410 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { 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 }]; + data.forEach(function(item) { + var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value); + item.displayValue = langinfo[1]; + item.langName = langinfo[0]; + }); + + this.cmbLang = new Common.UI.ComboBox({ + el : $('#hf-dlg-combo-lang'), + menuStyle : 'min-width: 100%; max-height: 185px;', + cls : 'input-group-nr', + editable : false, + data : data + }); + this.cmbLang.setValue(0x0409); + this.cmbLang.on('selected', _.bind(function(combo, record) { + this.updateFormats(record.value); + }, this)); + this.dateControls.push(this.cmbLang); + + this.cmbFormat = new Common.UI.ComboBox({ + el : $('#hf-dlg-combo-format'), + menuStyle : 'min-width: 100%; max-height: 185px;', + cls : 'input-group-nr', + editable : false, + data : [] + }); + this.dateControls.push(this.cmbFormat); + + this.radioUpdate = new Common.UI.RadioBox({ + el: $('#hf-dlg-radio-update'), + labelText: this.textUpdate, + name: 'asc-radio-header-update', + checked: true + }).on('change', _.bind(this.setDateTimeType, this, 'update')); + this.dateControls.push(this.radioUpdate); + + this.radioFixed = new Common.UI.RadioBox({ + el: $('#hf-dlg-radio-fixed'), + labelText: this.textFixed, + name: 'asc-radio-header-update' + }).on('change', _.bind(this.setDateTimeType, this, 'fixed')); + this.dateControls.push(this.radioFixed); + + this.inputFixed = new Common.UI.InputField({ + el: $('#hf-dlg-input-fixed'), + validateOnBlur: false, + style : 'width: 100%;' + }); + this.dateControls.push(this.inputFixed); + + this.chNotTitle = new Common.UI.CheckBox({ + el: $('#hf-dlg-chb-not-title'), + labelText: this.textNotTitle + }); + + this.afterRender(); + }, + + afterRender: function() { + var me = this, + value = Common.Utils.InternalSettings.get("pe-settings-datetime-default"), + arr = (value) ? value.split(';') : []; + this.defaultFormats = []; + arr.forEach(function(item){ + var pair = item.split(' '); + me.defaultFormats[parseInt(pair[0])] = pair[1]; + }); + + this._setDefaults(this.hfProps); + }, + + setType: function(type, field, newValue) { + var me = this; + newValue = (newValue=='checked'); + if (type == 'date') { + _.each(this.dateControls, function(item) { + item.setDisabled(!newValue); + }); + newValue && this.setDateTimeType(this.radioFixed.getValue() ? 'fixed' : 'update', null, true); + this.props.put_ShowDateTime(newValue); + } else if (type == 'slide') { + this.props.put_ShowSlideNum(newValue); + } else if (type == 'footer') { + this.inputFooter.setDisabled(!newValue); + this.props.put_ShowFooter(newValue); + newValue && setTimeout(function(){ + me.inputFooter.cmpEl.find('input').focus(); + },50); + } + this.props.updateView(); + }, + + updateFormats: function(lang, format) { + var props = new AscCommonSlide.CAscDateTime(); + props.put_Lang(lang); + var data = props.get_DateTimeExamples(), + arr = []; + for (var name in data) { + if (data[name]) { + arr.push({ + value: name, + displayValue: data[name] + }); + } + } + this.cmbFormat.setData(arr); + format = format || this.defaultFormats[lang]; + this.cmbFormat.setValue(format ? format : arr[0].value); + }, + + setDateTimeType: function(type, field, newValue) { + if (newValue) { + var me = this; + this.cmbLang.setDisabled(type == 'fixed'); + this.cmbFormat.setDisabled(type == 'fixed'); + this.inputFixed.setDisabled(type == 'update'); + (type == 'fixed') && setTimeout(function(){ + me.inputFixed.cmpEl.find('input').focus(); + },50); + + } + }, + + onSelectFormat: function(format) { + if (this.radioUpdate.getValue()) { + format = format || this.cmbFormat.getValue(); + this.props.get_DateTime().put_DateTime(format); + } else { + this.props.get_DateTime().put_DateTime(null); + this.props.get_DateTime().put_CustomDateTime(this.inputFixed.getValue()); + } + }, + + _setDefaults: function (props) { + if (props) { + var slideprops = props.get_Slide() || new AscCommonSlide.CAscHFProps(); + + var val = slideprops.get_ShowDateTime(); + this.chDateTime.setValue(val, true); + _.each(this.dateControls, function(item) { + item.setDisabled(!val); + }); + + var format, fixed, + datetime = slideprops.get_DateTime(), + item = this.cmbLang.store.findWhere({value: datetime ? (datetime.get_Lang() || this.lang) : this.lang}); + this._originalLang = item ? item.get('value') : 0x0409; + this.cmbLang.setValue(this._originalLang); + + if (val) { + format = datetime.get_DateTime(); + !format ? this.radioFixed.setValue(true) : this.radioUpdate.setValue(true); + !format && (fixed = datetime.get_CustomDateTime() || ''); + this.setDateTimeType(!format ? 'fixed' : 'update', null, true); + } + this.updateFormats(this.cmbLang.getValue(), format); + this.inputFixed.setValue((fixed!==undefined) ? fixed : this.cmbFormat.getRawValue()); + + val = slideprops.get_ShowSlideNum(); + this.chSlide.setValue(val, true); + + val = slideprops.get_ShowFooter(); + this.chFooter.setValue(val, true); + this.inputFooter.setDisabled(!val); + val && this.inputFooter.setValue(slideprops.get_Footer() || ''); + + val = slideprops.get_ShowOnTitleSlide(); + this.chNotTitle.setValue(!val, true); + + this.props = slideprops; + } else + this.props = new AscCommonSlide.CAscHFProps(); + + this.props.put_DivId('hf-dlg-canvas-preview'); + this.props.put_Api(this.api); + this.props.updateView(); + }, + + getSettings: function () { + var props = this.props; + if (props.get_ShowDateTime()) { + !props.get_DateTime() && props.put_DateTime(new AscCommonSlide.CAscDateTime()); + props.get_DateTime().put_Lang(this.cmbLang.getValue()); + this.onSelectFormat(); + } + if (props.get_ShowFooter()) { + props.put_Footer(this.inputFooter.getValue()); + } + props.put_ShowOnTitleSlide(this.chNotTitle.getValue()!='checked'); + + this.hfProps.put_Slide(this.props); + return this.hfProps; + }, + + onDlgBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + onPrimary: function() { + this._handleInput('all'); + return false; + }, + + _handleInput: function(state) { + if (this.handler) { + if (state == 'ok') { + if (this.cmbLang.getValue() !== this._originalLang) { + Common.UI.warning({ + title: this.notcriticalErrorTitle, + maxwidth: 600, + msg : this.diffLanguage + }); + return; + } + } + + this.handler.call(this, state, this.getSettings()); + } + this.close(); + }, + + textTitle: 'Header/Footer Settings', + cancelButtonText: 'Cancel', + applyAllText: 'Apply to all', + applyText: 'Apply', + textLang: 'Language', + textFormat: 'Formats', + textUpdate: 'Update automatically', + textDateTime: 'Date and time', + textSlideNum: 'Slide number', + textFooter: 'Text in footer', + textNotTitle: 'Don\'t show on title slide', + textPreview: 'Preview', + diffLanguage: 'You can’t use a date format in a different language than the slide master.\nTo change the master, click \'Apply to all\' instead of \'Apply\'', + notcriticalErrorTitle: 'Warning', + textFixed: 'Fixed' + + }, PE.Views.HeaderFooterDialog || {})) +}); \ No newline at end of file diff --git a/apps/presentationeditor/main/app/view/ImageSettingsAdvanced.js b/apps/presentationeditor/main/app/view/ImageSettingsAdvanced.js index d65d73515..ca98d8db5 100644 --- a/apps/presentationeditor/main/app/view/ImageSettingsAdvanced.js +++ b/apps/presentationeditor/main/app/view/ImageSettingsAdvanced.js @@ -262,6 +262,9 @@ define([ 'text!presentationeditor/main/app/template/ImageSettingsAdvanced.tem value = props.asc_getDescription(); this.textareaAltDescription.val(value ? value : ''); + + var pluginGuid = props.asc_getPluginGuid(); + this.btnsCategory[1].setVisible(pluginGuid === null || pluginGuid === undefined); // Rotation } }, diff --git a/apps/presentationeditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/presentationeditor/main/app/view/ParagraphSettingsAdvanced.js index c29988007..da55d09cc 100644 --- a/apps/presentationeditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/presentationeditor/main/app/view/ParagraphSettingsAdvanced.js @@ -49,13 +49,14 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced PE.Views.ParagraphSettingsAdvanced = Common.Views.AdvancedSettingsWindow.extend(_.extend({ options: { - contentWidth: 320, + contentWidth: 370, height: 394, toggleGroup: 'paragraph-adv-settings-group', storageName: 'pe-para-settings-adv-category' }, initialize : function(options) { + var me = this; _.extend(this.options, { title: this.textTitle, items: [ @@ -74,9 +75,43 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this._noApply = true; this._tabListChanged = false; this.spinners = []; + this.FirstLine = undefined; + this.Spacing = null; this.api = this.options.api; this._originalProps = new Asc.asc_CParagraphProperty(this.options.paragraphProps); + + this._arrLineRule = [ + {displayValue: this.textAuto, defaultValue: 1, value: c_paragraphLinerule.LINERULE_AUTO, minValue: 0.5, step: 0.01, defaultUnit: ''}, + {displayValue: this.textExact, defaultValue: 5, value: c_paragraphLinerule.LINERULE_EXACT, minValue: 0.03, step: 0.01, defaultUnit: 'cm'} + ]; + + var curLineRule = this._originalProps.get_Spacing().get_LineRule(), + curItem = _.findWhere(this._arrLineRule, {value: curLineRule}); + this.CurLineRuleIdx = this._arrLineRule.indexOf(curItem); + + this._arrTextAlignment = [ + {displayValue: this.textTabLeft, value: c_paragraphTextAlignment.LEFT}, + {displayValue: this.textTabCenter, value: c_paragraphTextAlignment.CENTERED}, + {displayValue: this.textTabRight, value: c_paragraphTextAlignment.RIGHT}, + {displayValue: this.textJustified, value: c_paragraphTextAlignment.JUSTIFIED} + ]; + + this._arrSpecial = [ + {displayValue: this.textNoneSpecial, value: c_paragraphSpecial.NONE_SPECIAL, defaultValue: 0}, + {displayValue: this.textFirstLine, value: c_paragraphSpecial.FIRST_LINE, defaultValue: 12.7}, + {displayValue: this.textHanging, value: c_paragraphSpecial.HANGING, defaultValue: 12.7} + ]; + + this._arrTabAlign = [ + { value: 1, displayValue: this.textTabLeft }, + { value: 3, displayValue: this.textTabCenter }, + { value: 2, displayValue: this.textTabRight } + ]; + this._arrKeyTabAlign = []; + this._arrTabAlign.forEach(function(item) { + me._arrKeyTabAlign[item.value] = item.displayValue; + }); }, render: function() { @@ -86,24 +121,15 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced // Indents & Placement - this.numFirstLine = new Common.UI.MetricSpinner({ - el: $('#paragraphadv-spin-first-line'), - step: .1, - width: 85, - defaultUnit : "cm", - defaultValue : 0, - value: '0 cm', - maxValue: 55.87, - minValue: -55.87 + this.cmbTextAlignment = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-text-alignment'), + cls: 'input-group-nr', + editable: false, + data: this._arrTextAlignment, + style: 'width: 173px;', + menuStyle : 'min-width: 173px;' }); - this.numFirstLine.on('change', _.bind(function(field, newValue, oldValue, eOpts){ - if (this._changedProps) { - if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined) - this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); - this._changedProps.get_Ind().put_FirstLine(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - } - }, this)); - this.spinners.push(this.numFirstLine); + this.cmbTextAlignment.setValue(''); this.numIndentsLeft = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-indent-left'), @@ -122,9 +148,6 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); this._changedProps.get_Ind().put_Left(Common.Utils.Metric.fnRecalcToMM(numval)); } - this.numFirstLine.setMinValue(-numval); - if (this.numFirstLine.getNumberValue() < -numval) - this.numFirstLine.setValue(-numval); }, this)); this.spinners.push(this.numIndentsLeft); @@ -147,6 +170,93 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced }, this)); this.spinners.push(this.numIndentsRight); + this.cmbSpecial = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-special'), + cls: 'input-group-nr', + editable: false, + data: this._arrSpecial, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbSpecial.setValue(''); + this.cmbSpecial.on('selected', _.bind(this.onSpecialSelect, this)); + + this.numSpecialBy = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-special-by'), + step: .1, + width: 85, + defaultUnit : "cm", + defaultValue : 0, + value: '0 cm', + maxValue: 55.87, + minValue: 0 + }); + this.spinners.push(this.numSpecialBy); + this.numSpecialBy.on('change', _.bind(this.onFirstLineChange, this)); + + this.numSpacingBefore = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-before'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingBefore.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.Before = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingBefore); + + this.numSpacingAfter = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-after'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingAfter.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.After = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingAfter); + + this.cmbLineRule = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-line-rule'), + cls: 'input-group-nr', + editable: false, + data: this._arrLineRule, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbLineRule.setValue(this.CurLineRuleIdx); + this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this)); + + this.numLineHeight = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-line-height'), + step: .01, + width: 85, + value: '', + defaultUnit : "", + maxValue: 132, + minValue: 0.5 + }); + this.spinners.push(this.numLineHeight); + this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this)); + // Font this.chStrike = new Common.UI.CheckBox({ @@ -211,7 +321,7 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this.numTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-tab'), step: .1, - width: 180, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -222,7 +332,7 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this.numDefaultTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-default-tab'), step: .1, - width: 107, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -238,7 +348,14 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this.tabList = new Common.UI.ListView({ el: $('#paraadv-list-tabs'), emptyText: this.noTabs, - store: new Common.UI.DataViewStore() + store: new Common.UI.DataViewStore(), + template: _.template(['
      '].join('')), + itemTemplate: _.template([ + '
      ', + '
      <%= value %>
      ', + '
      <%= displayTabAlign %>
      ', + '
      ' + ].join('')) }); this.tabList.store.comparator = function(rec) { return rec.get("tabPos"); @@ -253,24 +370,15 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this.listenTo(this.tabList.store, 'remove', storechanged); this.listenTo(this.tabList.store, 'reset', storechanged); - this.radioLeft = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-left'), - labelText: this.textTabLeft, - name: 'asc-radio-tab', - checked: true - }); - - this.radioCenter = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-center'), - labelText: this.textTabCenter, - name: 'asc-radio-tab' - }); - - this.radioRight = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-right'), - labelText: this.textTabRight, - name: 'asc-radio-tab' + this.cmbAlign = new Common.UI.ComboBox({ + el : $('#paraadv-cmb-align'), + style : 'width: 108px;', + menuStyle : 'min-width: 108px;', + editable : false, + cls : 'input-group-nr', + data : this._arrTabAlign }); + this.cmbAlign.setValue(1); this.btnAddTab = new Common.UI.Button({ el: $('#paraadv-button-add-tab') @@ -299,18 +407,45 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this._changedProps.get_Tabs().add_Tab(tab); }, this); } + + var horizontalAlign = this.cmbTextAlignment.getValue(); + this._changedProps.asc_putJc((horizontalAlign !== undefined && horizontalAlign !== null) ? horizontalAlign : c_paragraphTextAlignment.LEFT); + + if (this.Spacing !== null) { + this._changedProps.asc_putSpacing(this.Spacing); + } + return { paragraphProps: this._changedProps }; }, _setDefaults: function(props) { if (props ){ this._originalProps = new Asc.asc_CParagraphProperty(props); + this.FirstLine = (props.get_Ind() !== null) ? props.get_Ind().get_FirstLine() : null; this.numIndentsLeft.setValue((props.get_Ind() !== null && props.get_Ind().get_Left() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Ind().get_Left()) : '', true); - this.numFirstLine.setMinValue(-this.numIndentsLeft.getNumberValue()); - this.numFirstLine.setValue((props.get_Ind() !== null && props.get_Ind().get_FirstLine() !== null ) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Ind().get_FirstLine()) : '', true); this.numIndentsRight.setValue((props.get_Ind() !== null && props.get_Ind().get_Right() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Ind().get_Right()) : '', true); + this.cmbTextAlignment.setValue((props.get_Jc() !== undefined && props.get_Jc() !== null) ? props.get_Jc() : c_paragraphTextAlignment.CENTERED, true); + + if(this.CurSpecial === undefined) { + this.CurSpecial = (props.get_Ind().get_FirstLine() === 0) ? c_paragraphSpecial.NONE_SPECIAL : ((props.get_Ind().get_FirstLine() > 0) ? c_paragraphSpecial.FIRST_LINE : c_paragraphSpecial.HANGING); + } + this.cmbSpecial.setValue(this.CurSpecial); + this.numSpecialBy.setValue(this.FirstLine!== null ? Math.abs(Common.Utils.Metric.fnRecalcFromMM(this.FirstLine)) : '', true); + + this.numSpacingBefore.setValue((props.get_Spacing() !== null && props.get_Spacing().get_Before() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_Before()) : '', true); + this.numSpacingAfter.setValue((props.get_Spacing() !== null && props.get_Spacing().get_After() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_After()) : '', true); + + var linerule = props.get_Spacing().get_LineRule(); + this.cmbLineRule.setValue((linerule !== null) ? linerule : '', true); + + if(props.get_Spacing() !== null && props.get_Spacing().get_Line() !== null) { + this.numLineHeight.setValue((linerule==c_paragraphLinerule.LINERULE_AUTO) ? props.get_Spacing().get_Line() : Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_Line()), true); + } else { + this.numLineHeight.setValue('', true); + } + // Font this._noApply = true; this.chStrike.setValue((props.get_Strikeout() !== null && props.get_Strikeout() !== undefined) ? props.get_Strikeout() : 'indeterminate', true); @@ -339,7 +474,8 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced rec.set({ tabPos: pos, value: parseFloat(pos.toFixed(3)) + ' ' + Common.Utils.Metric.getCurrentMetricName(), - tabAlign: tab.get_Value() + tabAlign: tab.get_Value(), + displayTabAlign: this._arrKeyTabAlign[tab.get_Value()] }); arr.push(rec); } @@ -359,13 +495,19 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced for (var i=0; i0) { + if (rec) { var store = this.tabList.store; - var idx = _.indexOf(store.models, rec[0]); - store.remove(rec[0]); + var idx = _.indexOf(store.models, rec); + store.remove(rec); if (idx>store.length-1) idx = store.length-1; if (store.length>0) { this.tabList.selectByIndex(idx); @@ -554,15 +699,82 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced rawData = record; } this.numTab.setValue(rawData.tabPos); - (rawData.tabAlign==1) ? this.radioLeft.setValue(true) : ((rawData.tabAlign==3) ? this.radioCenter.setValue(true) : this.radioRight.setValue(true)); + this.cmbAlign.setValue(rawData.tabAlign); + }, + onSpecialSelect: function(combo, record) { + this.CurSpecial = record.value; + if (this.CurSpecial === c_paragraphSpecial.NONE_SPECIAL) { + this.numSpecialBy.setValue(0, true); + } + if (this._changedProps) { + if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined) + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + var value = Common.Utils.Metric.fnRecalcToMM(this.numSpecialBy.getNumberValue()); + if (value === 0) { + this.numSpecialBy.setValue(Common.Utils.Metric.fnRecalcFromMM(this._arrSpecial[record.value].defaultValue), true); + value = this._arrSpecial[record.value].defaultValue; + } + if (this.CurSpecial === c_paragraphSpecial.HANGING) { + value = -value; + } + this._changedProps.get_Ind().put_FirstLine(value); + } + }, + + onFirstLineChange: function(field, newValue, oldValue, eOpts){ + if (this._changedProps) { + if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined) + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + var value = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + if (this.CurSpecial === c_paragraphSpecial.HANGING) { + value = -value; + } else if (this.CurSpecial === c_paragraphSpecial.NONE_SPECIAL && value > 0 ) { + this.CurSpecial = c_paragraphSpecial.FIRST_LINE; + this.cmbSpecial.setValue(c_paragraphSpecial.FIRST_LINE); + } else if (value === 0) { + this.CurSpecial = c_paragraphSpecial.NONE_SPECIAL; + this.cmbSpecial.setValue(c_paragraphSpecial.NONE_SPECIAL); + } + this._changedProps.get_Ind().put_FirstLine(value); + } + }, + + onLineRuleSelect: function(combo, record) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.LineRule = record.value; + var selectItem = _.findWhere(this._arrLineRule, {value: record.value}), + indexSelectItem = this._arrLineRule.indexOf(selectItem); + if ( this.CurLineRuleIdx !== indexSelectItem ) { + this.numLineHeight.setDefaultUnit(this._arrLineRule[indexSelectItem].defaultUnit); + this.numLineHeight.setMinValue(this._arrLineRule[indexSelectItem].minValue); + this.numLineHeight.setStep(this._arrLineRule[indexSelectItem].step); + if (this.Spacing.LineRule === c_paragraphLinerule.LINERULE_AUTO) { + this.numLineHeight.setValue(this._arrLineRule[indexSelectItem].defaultValue); + } else { + this.numLineHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(this._arrLineRule[indexSelectItem].defaultValue)); + } + this.CurLineRuleIdx = indexSelectItem; + } + }, + + onNumLineHeightChange: function(field, newValue, oldValue, eOpts) { + if ( this.cmbLineRule.getRawValue() === '' ) + return; + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.Line = (this.cmbLineRule.getValue()==c_paragraphLinerule.LINERULE_AUTO) ? field.getNumberValue() : Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); }, textTitle: 'Paragraph - Advanced Settings', - strIndentsFirstLine: 'First line', strIndentsLeftText: 'Left', strIndentsRightText: 'Right', - strParagraphIndents: 'Indents & Placement', + strParagraphIndents: 'Indents & Spacing', strParagraphFont: 'Font', cancelButtonText: 'Cancel', okButtonText: 'Ok', @@ -584,6 +796,19 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced textAlign: 'Alignment', textTabPosition: 'Tab Position', textDefault: 'Default Tab', - noTabs: 'The specified tabs will appear in this field' + noTabs: 'The specified tabs will appear in this field', + textJustified: 'Justified', + strIndentsSpecial: 'Special', + textNoneSpecial: '(none)', + textFirstLine: 'First line', + textHanging: 'Hanging', + strIndentsSpacingBefore: 'Before', + strIndentsSpacingAfter: 'After', + strIndentsLineSpacing: 'Line Spacing', + txtAutoText: 'Auto', + textAuto: 'Multiple', + textExact: 'Exactly', + strIndent: 'Indents', + strSpacing: 'Spacing' }, PE.Views.ParagraphSettingsAdvanced || {})); }); \ No newline at end of file diff --git a/apps/presentationeditor/main/app/view/RightMenu.js b/apps/presentationeditor/main/app/view/RightMenu.js index 2304e2458..58462c338 100644 --- a/apps/presentationeditor/main/app/view/RightMenu.js +++ b/apps/presentationeditor/main/app/view/RightMenu.js @@ -186,7 +186,8 @@ define([ asctype: Common.Utils.documentSettingsType.Signature, enableToggle: true, disabled: true, - toggleGroup: 'tabpanelbtnsGroup' + toggleGroup: 'tabpanelbtnsGroup', + allowMouseEventsOnDisabled: true }); this._settings[Common.Utils.documentSettingsType.Signature] = {panel: "id-signature-settings", btn: this.btnSignature}; diff --git a/apps/presentationeditor/main/app/view/ShapeSettings.js b/apps/presentationeditor/main/app/view/ShapeSettings.js index 32ce9c75e..29335a3dc 100644 --- a/apps/presentationeditor/main/app/view/ShapeSettings.js +++ b/apps/presentationeditor/main/app/view/ShapeSettings.js @@ -175,6 +175,9 @@ define([ fill.get_fill().put_linear_scale(true); } if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { + this.GradColor.values = [0, 100]; + this.GradColor.colors = [this.GradColor.colors[0], this.GradColor.colors[this.GradColor.colors.length - 1]]; + this.GradColor.currentIdx = 0; var HexColor0 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]).get_color().get_hex(), HexColor1 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1]).get_color().get_hex(); @@ -468,14 +471,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + var arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); } props.put_fill(fill); this.api.ShapeApply(props); @@ -512,14 +523,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + var arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); } props.put_fill(fill); this.api.ShapeApply(props); @@ -739,7 +758,7 @@ define([ this.FGColor = (this.ShapeColor.Color!=='transparent') ? {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color)} : {Value: 1, Color: '000000'}; this.BGColor = {Value: 1, Color: 'ffffff'}; this.GradColor.colors[0] = (this.ShapeColor.Color!=='transparent') ? Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color) : '000000'; - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_BLIP) { fill = fill.get_fill(); this.BlipFillType = fill.get_type(); // null - не совпадают у нескольких фигур @@ -787,7 +806,7 @@ define([ this.OriginalFillType = Asc.c_oAscFill.FILL_TYPE_PATT; this.ShapeColor = {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color)}; this.GradColor.colors[0] = Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color); - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_GRAD) { fill = fill.get_fill(); var gradfilltype = fill.get_grad_type(); // null - не совпадают у нескольких фигур @@ -818,49 +837,37 @@ define([ } } - var colors = fill.get_colors(); - if (colors && colors.length>0) { - color = colors[0]; + var me = this; + var colors = fill.get_colors(), + positions = fill.get_positions(), + length = colors.length; + this.sldrGradient.setThumbs(length); + if (this.GradColor.colors.length>length) { + this.GradColor.colors.splice(length, this.GradColor.colors.length - length); + this.GradColor.values.splice(length, this.GradColor.colors.length - length); + this.GradColor.currentIdx = 0; + } + colors && colors.forEach(function(color, index) { if (color) { if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[0] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[0]); + me.GradColor.colors[index] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; + Common.Utils.ThemeColor.colorValue2EffectId(me.GradColor.colors[index]); } else { - this.GradColor.colors[0] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); + me.GradColor.colors[index] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); } } else - this.GradColor.colors[0] = '000000'; + me.GradColor.colors[index] = '000000'; - color = colors[1]; - if (color) { - if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[1] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[1]); - } else { - this.GradColor.colors[1] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); - } - } else - this.GradColor.colors[1] = 'ffffff'; - - } - var positions = fill.get_positions(); - if (positions && positions.length>0) { - var position = positions[0]; + var position = positions[index]; if (position!==null) { position = position/1000; - this.GradColor.values[0] = position; - } - - position = positions[1]; - if (position!==null) { - position = position/1000; - this.GradColor.values[1] = position; + me.GradColor.values[index] = position; } + }); + for (var index=0; index
      ') + itemTemplate: _.template('
      ') }); mnuTexturePicker.on('item:click', _.bind(this.onSelectTexture, this)); } @@ -1440,6 +1456,15 @@ define([ this.fireEvent('editcomplete', this); }, + onCheckShadow: function(field, newValue, oldValue, eOpts) { + if (this.api) { + var props = new Asc.asc_CShapeProperty(); + props.asc_putShadow((field.getValue()=='checked') ? new Asc.asc_CShadowProperty() : null); + this.api.ShapeApply(props); + } + this.fireEvent('editcomplete', this); + }, + fillAutoShapes: function() { var me = this, shapesStore = this.application.getCollection('ShapeGroups'); @@ -1468,7 +1493,7 @@ define([ store: store, parentMenu: menuItem.menu, showLast: false, - itemTemplate: _.template('
      ') + itemTemplate: _.template('
      \">
      ') }); shapePicker.on('item:click', function(picker, item, record, e) { @@ -1708,9 +1733,10 @@ define([ textRotation: 'Rotation', textRotate90: 'Rotate 90°', textFlip: 'Flip', - textHint270: 'Rotate Left 90°', - textHint90: 'Rotate Right 90°', + textHint270: 'Rotate 90° Counterclockwise', + textHint90: 'Rotate 90° Clockwise', textHintFlipV: 'Flip Vertically', - textHintFlipH: 'Flip Horizontally' + textHintFlipH: 'Flip Horizontally', + strShadow: 'Show shadow' }, PE.Views.ShapeSettings || {})); }); diff --git a/apps/presentationeditor/main/app/view/SlideSettings.js b/apps/presentationeditor/main/app/view/SlideSettings.js index 16e55a5ea..742ab375a 100644 --- a/apps/presentationeditor/main/app/view/SlideSettings.js +++ b/apps/presentationeditor/main/app/view/SlideSettings.js @@ -79,7 +79,8 @@ define([ this._stateDisabled = { background: true, effects: true, - timing: true + timing: true, + header: true }; this._state = { @@ -249,6 +250,20 @@ define([ if (this.api) this.api.SlideTimingApplyToAll(); this.fireEvent('editcomplete', this); }, this)); + + this.chSlideNum = new Common.UI.CheckBox({ + el: $('#slide-checkbox-slidenum'), + labelText: this.strSlideNum, + disabled: true + }); + this.chSlideNum.on('change', _.bind(this.onHeaderChange, this, 'slidenum')); + + this.chDateTime = new Common.UI.CheckBox({ + el: $('#slide-checkbox-datetime'), + labelText: this.strDateTime, + disabled: true + }); + this.chDateTime.on('change', _.bind(this.onHeaderChange, this, 'datetime')); }, render: function () { @@ -295,6 +310,9 @@ define([ fill.get_fill().put_linear_scale(true); } if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { + this.GradColor.values = [0, 100]; + this.GradColor.colors = [this.GradColor.colors[0], this.GradColor.colors[this.GradColor.colors.length - 1]]; + this.GradColor.currentIdx = 0; var HexColor0 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]).get_color().get_hex(), HexColor1 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1]).get_color().get_hex(); @@ -542,14 +560,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + var arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); } props.put_background(fill); this.api.SetSlideProps(props); @@ -586,14 +612,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + var arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); } props.put_background(fill); this.api.SetSlideProps(props); @@ -849,7 +883,7 @@ define([ parentMenu: me.textureMenu, showLast: false, store: new Common.UI.DataViewStore(texturearray), - itemTemplate: _.template('
      ') + itemTemplate: _.template('
      ') }); mnuTexturePicker.on('item:click', _.bind(this.onSelectTexture, this)); } @@ -992,6 +1026,15 @@ define([ this.fireEvent('editcomplete', this); }, + onHeaderChange: function(type, field, newValue, oldValue, eOpts){ + if (this.api && !this._noApply) { + var props = this.api.asc_getHeaderFooterProperties(); + props.get_Slide()[(type=='slidenum') ? 'put_ShowSlideNum' : 'put_ShowDateTime'](field.getValue()=='checked'); + this.api.asc_setHeaderFooterProperties(props); + } + this.fireEvent('editcomplete', this); + }, + UpdateThemeColors: function() { if (!this.btnBackColor) { this.btnBackColor = new Common.UI.ColorButton({ @@ -1119,7 +1162,7 @@ define([ this.FGColor = (this.SlideColor.Color!=='transparent') ? {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.SlideColor.Color)} : {Value: 1, Color: '000000'}; this.BGColor = {Value: 1, Color: 'ffffff'}; this.GradColor.colors[0] = (this.SlideColor.Color!=='transparent') ? Common.Utils.ThemeColor.colorValue2EffectId(this.SlideColor.Color) : '000000'; - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_BLIP) { fill = fill.get_fill(); this.BlipFillType = fill.get_type(); // null - не совпадают у нескольких фигур @@ -1167,7 +1210,7 @@ define([ this.OriginalFillType = Asc.c_oAscFill.FILL_TYPE_PATT; this.SlideColor = {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color)}; this.GradColor.colors[0] = Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color); - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_GRAD) { fill = fill.get_fill(); var gradfilltype = fill.get_grad_type(); // null - не совпадают у нескольких фигур @@ -1198,49 +1241,37 @@ define([ } } - var colors = fill.get_colors(); - if (colors && colors.length>0) { - color = colors[0]; + var me = this; + var colors = fill.get_colors(), + positions = fill.get_positions(), + length = colors.length; + this.sldrGradient.setThumbs(length); + if (this.GradColor.colors.length>length) { + this.GradColor.colors.splice(length, this.GradColor.colors.length - length); + this.GradColor.values.splice(length, this.GradColor.colors.length - length); + this.GradColor.currentIdx = 0; + } + colors && colors.forEach(function(color, index) { if (color) { if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[0] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[0]); + me.GradColor.colors[index] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; + Common.Utils.ThemeColor.colorValue2EffectId(me.GradColor.colors[index]); } else { - this.GradColor.colors[0] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); + me.GradColor.colors[index] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); } } else - this.GradColor.colors[0] = '000000'; + me.GradColor.colors[index] = '000000'; - color = colors[1]; - if (color) { - if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[1] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[1]); - } else { - this.GradColor.colors[1] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); - } - } else - this.GradColor.colors[1] = 'ffffff'; - - } - var positions = fill.get_positions(); - if (positions && positions.length>0) { - var position = positions[0]; + var position = positions[index]; if (position!==null) { position = position/1000; - this.GradColor.values[0] = position; - } - - position = positions[1]; - if (position!==null) { - position = position/1000; - this.GradColor.values[1] = position; + me.GradColor.values[index] = position; } + }); + for (var index=0; index', '', '<%= caption %>', '' ].join('')), - menuAlign: 'bl-tl' - }).on('show:before', function (mnu) { - if (!this.scroller) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength: 30, - alwaysVisibleY: true - }); - } + menuAlign: 'bl-tl', + search: true }); this.btnLanguage = new Common.UI.Button({ @@ -365,7 +342,6 @@ define([ if (this.langMenu.items.length>0) { this.btnLanguage.setDisabled(false || this._state.no_paragraph); - this.btnDocLanguage.setDisabled(!!this.mode.isDisconnected); } }, @@ -375,20 +351,19 @@ define([ $parent.find('#status-label-lang').text(info.displayValue); this.langMenu.prevTip = info.value; - - var index = $parent.find('ul li a:contains("'+info.displayValue+'")').parent().index(); - if (index < 0) { + var lang = _.find(this.langMenu.items, function(item) { return item.caption == info.displayValue; }); + if (lang) + lang.setChecked(true); + else { this.langMenu.saved = info.displayValue; this.langMenu.clearAll(); - } else - this.langMenu.items[index].setChecked(true); + } } }, SetDisabled: function(disable) { var langs = this.langMenu.items.length>0; this.btnLanguage.setDisabled(disable || !langs || this._state.no_paragraph); - this.btnDocLanguage.setDisabled(disable || !langs); this.mode.isEdit = !disable; }, @@ -425,8 +400,6 @@ define([ tipPreview : 'Start Slideshow', tipAccessRights : 'Manage document access rights', tipSetLang : 'Set Text Language', - tipSetDocLang : 'Set Document Language', - tipSetSpelling : 'Spell checking', textShowBegin: 'Show from Beginning', textShowCurrent: 'Show from Current slide', textShowPresenterView: 'Show presenter view' diff --git a/apps/presentationeditor/main/app/view/TableSettings.js b/apps/presentationeditor/main/app/view/TableSettings.js index d651e5f19..6944d3052 100644 --- a/apps/presentationeditor/main/app/view/TableSettings.js +++ b/apps/presentationeditor/main/app/view/TableSettings.js @@ -443,7 +443,7 @@ define([ if (this._isTemplatesChanged) { if (rec) - this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.getSelectedRec()[0],true); + this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.getSelectedRec(),true); else this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.store.at(0), true); } @@ -681,16 +681,17 @@ define([ if (count>0 && count==Templates.length) { var data = self.cmbTableTemplate.menuPicker.store.models; _.each(Templates, function(template, index){ - data[index].set('imageUrl', template.get_Image()); + data[index].set('imageUrl', template.asc_getImage()); }); } else { self.cmbTableTemplate.menuPicker.store.reset([]); var arr = []; _.each(Templates, function(template){ arr.push({ - imageUrl: template.get_Image(), + imageUrl: template.asc_getImage(), id : Common.UI.getId(), - templateId: template.get_Id() + templateId: template.asc_getId(), + tip : template.asc_getDisplayName() }); }); self.cmbTableTemplate.menuPicker.store.add(arr); diff --git a/apps/presentationeditor/main/app/view/TextArtSettings.js b/apps/presentationeditor/main/app/view/TextArtSettings.js index b045b2fa0..b1b73fd35 100644 --- a/apps/presentationeditor/main/app/view/TextArtSettings.js +++ b/apps/presentationeditor/main/app/view/TextArtSettings.js @@ -169,6 +169,9 @@ define([ fill.get_fill().put_linear_scale(true); } if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { + this.GradColor.values = [0, 100]; + this.GradColor.colors = [this.GradColor.colors[0], this.GradColor.colors[this.GradColor.colors.length - 1]]; + this.GradColor.currentIdx = 0; var HexColor0 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]).get_color().get_hex(), HexColor1 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1]).get_color().get_hex(); @@ -473,14 +476,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + var arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); } props.asc_putFill(fill); this.shapeprops.put_TextArtProperties(props); @@ -518,14 +529,22 @@ define([ fill.put_type(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.put_fill( new Asc.asc_CFillGrad()); fill.get_fill().put_grad_type(this.GradFillType); - fill.get_fill().put_positions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + var arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.get_fill().put_positions(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.get_fill().put_linear_angle(this.GradLinearDirectionType * 60000); fill.get_fill().put_linear_scale(true); } - fill.get_fill().put_colors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.get_fill().put_colors(arr); } props.asc_putFill(fill); this.shapeprops.put_TextArtProperties(props); @@ -712,7 +731,7 @@ define([ this.FGColor = (this.ShapeColor.Color!=='transparent') ? {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color)} : {Value: 1, Color: '000000'}; this.BGColor = {Value: 1, Color: 'ffffff'}; this.GradColor.colors[0] = (this.ShapeColor.Color!=='transparent') ? Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color) : '000000'; - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_BLIP) { fill = fill.get_fill(); this.BlipFillType = fill.get_type(); // null - не совпадают у нескольких фигур @@ -760,7 +779,7 @@ define([ this.OriginalFillType = Asc.c_oAscFill.FILL_TYPE_PATT; this.ShapeColor = {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color)}; this.GradColor.colors[0] = Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color); - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_GRAD) { fill = fill.get_fill(); var gradfilltype = fill.get_grad_type(); // null - не совпадают у нескольких фигур @@ -791,49 +810,37 @@ define([ } } - var colors = fill.get_colors(); - if (colors && colors.length>0) { - color = colors[0]; + var me = this; + var colors = fill.get_colors(), + positions = fill.get_positions(), + length = colors.length; + this.sldrGradient.setThumbs(length); + if (this.GradColor.colors.length>length) { + this.GradColor.colors.splice(length, this.GradColor.colors.length - length); + this.GradColor.values.splice(length, this.GradColor.colors.length - length); + this.GradColor.currentIdx = 0; + } + colors && colors.forEach(function(color, index) { if (color) { if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[0] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[0]); + me.GradColor.colors[index] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; + Common.Utils.ThemeColor.colorValue2EffectId(me.GradColor.colors[index]); } else { - this.GradColor.colors[0] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); + me.GradColor.colors[index] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); } } else - this.GradColor.colors[0] = '000000'; + me.GradColor.colors[index] = '000000'; - color = colors[1]; - if (color) { - if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[1] = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[1]); - } else { - this.GradColor.colors[1] = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); - } - } else - this.GradColor.colors[1] = 'ffffff'; - - } - var positions = fill.get_positions(); - if (positions && positions.length>0) { - var position = positions[0]; + var position = positions[index]; if (position!==null) { position = position/1000; - this.GradColor.values[0] = position; - } - - position = positions[1]; - if (position!==null) { - position = position/1000; - this.GradColor.values[1] = position; + me.GradColor.values[index] = position; } + }); + for (var index=0; index', - '
      ', + '
      ' + 'background-image: url(<%= imageUrl %>);' + '<% } %> background-position: 0 -<%= offsety %>px;"/>', '
      ' ].join('')); me.listTheme.menuPicker.itemTemplate = _.template([ '
      ', - '
      ', + '
      ' + 'background-image: url(<%= imageUrl %>);' + '<% } %> background-position: 0 -<%= offsety %>px;"/>', '
      ' ].join('')); @@ -826,44 +845,7 @@ define([ }, lockToolbar: function (causes, lock, opts) { - !opts && (opts = {}); - - var controls = opts.array || this.lockControls; - opts.merge && (controls = _.union(this.lockControls, controls)); - - function doLock(cmp, cause) { - if (_.contains(cmp.options.lock, cause)) { - var index = cmp.keepState.indexOf(cause); - if (lock) { - if (index < 0) { - cmp.keepState.push(cause); - } - } else { - if (!(index < 0)) { - cmp.keepState.splice(index, 1); - } - } - } - } - - _.each(controls, function (item) { - if (_.isFunction(item.setDisabled)) { - !item.keepState && (item.keepState = []); - if (opts.clear && opts.clear.length > 0 && item.keepState.length > 0) { - item.keepState = _.difference(item.keepState, opts.clear); - } - - _.isArray(causes) ? _.each(causes, function (c) { - doLock(item, c) - }) : doLock(item, causes); - - if (!(item.keepState.length > 0)) { - item.isDisabled() && item.setDisabled(false); - } else { - !item.isDisabled() && item.setDisabled(true); - } - } - }); + Common.Utils.lockControls(causes, lock, opts, this.lockControls); }, render: function (mode) { @@ -923,11 +905,7 @@ define([ rendererComponents: function (html) { var $host = $(html); var _injectComponent = function (id, cmp) { - var $slot = $host.find(id); - if ($slot.length) { - cmp.rendered ? - $slot.append(cmp.$el) : cmp.render($slot); - } + Common.Utils.injectComponent($host.find(id), cmp); }; _injectComponent('#slot-field-fontname', this.cmbFontName); @@ -966,79 +944,24 @@ define([ _injectComponent('#slot-btn-colorschemas', this.btnColorSchemas); _injectComponent('#slot-btn-slidesize', this.btnSlideSize); _injectComponent('#slot-field-styles', this.listTheme); + _injectComponent('#slot-btn-editheader', this.btnEditHeader); + _injectComponent('#slot-btn-datetime', this.btnInsDateTime); + _injectComponent('#slot-btn-slidenum', this.btnInsSlideNum); - function _injectBtns(opts) { - var array = createButtonSet(); - var $slots = $host.find(opts.slot); - var id = opts.btnconfig.id; - $slots.each(function(index, el) { - if ( !!id ) opts.btnconfig.id = id + index; + this.btnsInsertImage = Common.Utils.injectButtons($host.find('.slot-insertimg'), 'tlbtn-insertimage-', 'btn-insertimage', this.capInsertImage, + [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], false, true); + this.btnsInsertText = Common.Utils.injectButtons($host.find('.slot-instext'), 'tlbtn-inserttext-', 'btn-text', this.capInsertText, + [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], false, false, true); + this.btnsInsertShape = Common.Utils.injectButtons($host.find('.slot-insertshape'), 'tlbtn-insertshape-', 'btn-insertshape', this.capInsertShape, + [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], false, true, true); + this.btnsAddSlide = Common.Utils.injectButtons($host.find('.slot-addslide'), 'tlbtn-addslide-', 'btn-addslide', this.capAddSlide, + [PE.enumLock.menuFileOpen, PE.enumLock.lostConnect, PE.enumLock.disableOnStart], true, true); - var button = new Common.UI.Button(opts.btnconfig); - button.render( $slots.eq(index) ); - - array.add(button); - }); - - return array; - } - - var me = this; - me.btnsInsertImage = _injectBtns({ - slot: '.slot-insertimg', - btnconfig: { - id : 'tlbtn-insertimage-', - cls : 'btn-toolbar x-huge icon-top', - iconCls : 'btn-insertimage', - caption : me.capInsertImage, - lock : [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], - menu : true - } - }); - - me.btnsInsertText = _injectBtns({ - slot: '.slot-instext', - btnconfig: { - id : 'tlbtn-inserttext-', - cls : 'btn-toolbar x-huge icon-top', - iconCls : 'btn-text', - caption : me.capInsertText, - lock : [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], - enableToggle: true - } - }); - - me.btnsInsertShape = _injectBtns({ - slot: '.slot-insertshape', - btnconfig: { - id : 'tlbtn-insertshape-', - cls : 'btn-toolbar x-huge icon-top', - iconCls : 'btn-insertshape', - caption : me.capInsertShape, - lock : [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], - enableToggle: true, - menu : true - } - }); - - me.btnsAddSlide = _injectBtns({ - slot: '.slot-addslide', - btnconfig: { - id : 'tlbtn-addslide-', - cls : 'btn-toolbar x-huge icon-top', - iconCls : 'btn-addslide', - split : true, - caption : me.capAddSlide, - lock : [PE.enumLock.menuFileOpen, PE.enumLock.lostConnect, PE.enumLock.disableOnStart], - menu : true - } - }); - - var created = me.btnsInsertImage.concat(me.btnsInsertText, me.btnsInsertShape, me.btnsAddSlide); + var created = this.btnsInsertImage.concat(this.btnsInsertText, this.btnsInsertShape, this.btnsAddSlide); this.lockToolbar(PE.enumLock.disableOnStart, true, {array: created}); - Array.prototype.push.apply(me.slideOnlyControls, created); - Array.prototype.push.apply(me.lockControls, created); + Array.prototype.push.apply(this.slideOnlyControls, created); + Array.prototype.push.apply(this.lockControls, created); return $host; }, @@ -1060,7 +983,7 @@ define([ me.fireEvent('insert:image', [item.value]); }) ); - btn.menu.items[2].setVisible(config.fileChoiceUrl && config.fileChoiceUrl.indexOf("{documentType}")>-1); + btn.menu.items[2].setVisible(config.canRequestInsertImage || config.fileChoiceUrl && config.fileChoiceUrl.indexOf("{documentType}")>-1); }); me.btnsInsertText.forEach(function (btn) { @@ -1131,6 +1054,9 @@ define([ this.btnShapeAlign.updateHint(this.tipShapeAlign); this.btnShapeArrange.updateHint(this.tipShapeArrange); this.btnSlideSize.updateHint(this.tipSlideSize); + this.btnEditHeader.updateHint(this.tipEditHeader); + this.btnInsDateTime.updateHint(this.tipDateTime); + this.btnInsSlideNum.updateHint(this.tipSlideNum); // set menus @@ -1266,6 +1192,7 @@ define([ el: $('#id-toolbar-menu-changeslide'), parentMenu: me.btnChangeSlide.menu, restoreHeight: 300, + restoreWidth: 302, style: 'max-height: 300px;', store: PE.getCollection('SlideLayouts'), itemTemplate: _.template([ @@ -1348,16 +1275,6 @@ define([ this.lockToolbar(PE.enumLock.cantPrint, !mode.canPrint, {array: [this.btnPrint]}); this.mode = mode; - if (!mode.nativeApp) { - var nativeBtnGroup = $('.toolbar-group-native'); - - if (nativeBtnGroup) { - nativeBtnGroup.hide(); - } - } - - if (mode.isDesktopApp) - $('.toolbar-group-native').hide(); }, onSendThemeColorSchemes: function (schemas) { @@ -1373,14 +1290,7 @@ define([ if (mnuColorSchema == null) { mnuColorSchema = new Common.UI.Menu({ - maxHeight: 560, - restoreHeight: 560 - }).on('render:after', function (mnu) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength: 40 - }); + restoreHeight: true }); } mnuColorSchema.items = []; @@ -1408,15 +1318,17 @@ define([ mnuColorSchema.addItem({ caption: '--' }); - } else { - mnuColorSchema.addItem({ - template: itemTemplate, - cls: 'color-schemas-menu', - colors: schemecolors, - caption: (index < 21) ? (me.schemeNames[index] || schema.get_name()) : schema.get_name(), - value: index - }); } + var name = schema.get_name(); + mnuColorSchema.addItem({ + template: itemTemplate, + cls: 'color-schemas-menu', + colors: schemecolors, + caption: (index < 21) ? (me.SchemeNames[index] || name) : name, + value: name, + checkable: true, + toggleGroup: 'menuSchema' + }); }, this); } }, @@ -1513,9 +1425,11 @@ define([ var dataViewItems = picker.dataViewItems, el = $(dataViewItems[0].el), itemW = el.outerWidth() + parseInt(el.css('margin-left')) + parseInt(el.css('margin-right')), - columnCount = Math.floor(picker.cmpEl.width() / itemW), + columnCount = Math.floor(picker.options.restoreWidth / itemW + 0.5) || 1, // try to use restore width col = 0, maxHeight = 0; + picker.cmpEl.width(itemW * columnCount + 11); + for (var i = 0; i < dataViewItems.length; i++) { var div = $(dataViewItems[i].el).find('.title'), height = div.height(); @@ -1588,7 +1502,7 @@ define([ store: group.get('groupStore'), parentMenu: menuitem.menu, showLast: false, - itemTemplate: _.template('
      ') + itemTemplate: _.template('
      \">
      ') })).on('item:click', function (picker, item, record, e) { if (e.type !== 'click') Common.UI.Menu.Manager.hideAll(); if (record) @@ -1609,6 +1523,7 @@ define([ parentMenu: btn.menu, showLast: false, restoreHeight: 300, + restoreWidth: 302, style: 'max-height: 300px;', store: PE.getCollection('SlideLayouts'), itemTemplate: _.template([ @@ -1764,7 +1679,13 @@ define([ textTabProtect: 'Protection', mniImageFromStorage: 'Image from Storage', txtSlideAlign: 'Align to Slide', - txtObjectsAlign: 'Align Selected Objects' + txtObjectsAlign: 'Align Selected Objects', + tipEditHeader: 'Edit header or footer', + tipSlideNum: 'Insert slide number', + tipDateTime: 'Insert current date and time', + capBtnInsHeader: 'Header/Footer', + capBtnSlideNum: 'Slide Number', + capBtnDateTime: 'Date & Time' } }()), PE.Views.Toolbar || {})); }); \ No newline at end of file diff --git a/apps/presentationeditor/main/app_dev.reporter.js b/apps/presentationeditor/main/app_dev.reporter.js index 0e385f135..04b34270e 100644 --- a/apps/presentationeditor/main/app_dev.reporter.js +++ b/apps/presentationeditor/main/app_dev.reporter.js @@ -96,6 +96,10 @@ require([ using : 'reporter' }); + var setDocumentTitle = function(title) { + (title) && (window.document.title += (' - ' + title)); + }; + function load_document(data) { var docInfo = {}; @@ -109,7 +113,7 @@ require([ docInfo.put_Options(data.options); docInfo.put_Token(data.token); docInfo.put_Permissions(data.permissions || {}); - window.document.title = 'Presenter View' + (data.title ? (' - ' + data.title) : ''); + setDocumentTitle(data.title); } api.preloadReporter(data); diff --git a/apps/presentationeditor/main/index.html b/apps/presentationeditor/main/index.html index 27f64755b..069ad3a3f 100644 --- a/apps/presentationeditor/main/index.html +++ b/apps/presentationeditor/main/index.html @@ -18,7 +18,7 @@ overflow: hidden; border: none; background-color: #f4f4f4; - z-index: 100; + z-index: 1001; } .loader-page { @@ -159,7 +159,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -170,7 +170,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -234,6 +234,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; if ( !stopLoading ) document.write( @@ -268,6 +280,7 @@ + + diff --git a/apps/spreadsheeteditor/embed/index.html.deploy b/apps/spreadsheeteditor/embed/index.html.deploy index 2dea3f64c..0ff36eae5 100644 --- a/apps/spreadsheeteditor/embed/index.html.deploy +++ b/apps/spreadsheeteditor/embed/index.html.deploy @@ -162,7 +162,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -173,7 +173,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -241,6 +241,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; document.write( '
      ' + diff --git a/apps/spreadsheeteditor/embed/js/ApplicationController.js b/apps/spreadsheeteditor/embed/js/ApplicationController.js index 6a2ee461a..9dafa9ae0 100644 --- a/apps/spreadsheeteditor/embed/js/ApplicationController.js +++ b/apps/spreadsheeteditor/embed/js/ApplicationController.js @@ -30,7 +30,7 @@ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ -var ApplicationController = new(function(){ +SSE.ApplicationController = new(function(){ var me, api, config = {}, @@ -54,7 +54,7 @@ var ApplicationController = new(function(){ // ------------------------- if (typeof isBrowserSupported !== 'undefined' && !isBrowserSupported()){ - Common.Gateway.reportError(undefined, 'Your browser is not supported.'); + Common.Gateway.reportError(undefined, this.unsupportedBrowserErrorText); return; } @@ -156,11 +156,11 @@ var ApplicationController = new(function(){ function onPrint() { if ( permissions.print!==false ) - api.asc_Print(undefined, $.browser.chrome || $.browser.safari || $.browser.opera); + api.asc_Print(new Asc.asc_CDownloadOptions(null, $.browser.chrome || $.browser.safari || $.browser.opera)); } function onPrintUrl(url) { - common.utils.dialogPrint(url); + common.utils.dialogPrint(url, api); } function hidePreloader() { @@ -193,18 +193,18 @@ var ApplicationController = new(function(){ Common.Gateway.on('processmouse', onProcessMouse); Common.Gateway.on('downloadas', onDownloadAs); - ApplicationView.tools.get('#idt-fullscreen') + SSE.ApplicationView.tools.get('#idt-fullscreen') .on('click', function(){ common.utils.openLink(embedConfig.fullscreenUrl); }); - ApplicationView.tools.get('#idt-download') + SSE.ApplicationView.tools.get('#idt-download') .on('click', function(){ if ( !!embedConfig.saveUrl ){ common.utils.openLink(embedConfig.saveUrl); } else if (permissions.print!==false){ - api.asc_Print(undefined, $.browser.chrome || $.browser.safari || $.browser.opera); + api.asc_Print(new Asc.asc_CDownloadOptions(null, $.browser.chrome || $.browser.safari || $.browser.opera)); } Common.Analytics.trackEvent('Save'); @@ -325,7 +325,7 @@ var ApplicationController = new(function(){ function onOpenDocument(progress) { var proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount()); - $('#loadmask-text').html('Loading document: ' + Math.min(Math.round(proc * 100), 100) + '%'); + $('#loadmask-text').html(me.textLoadingDocument + ': ' + Math.min(Math.round(proc * 100), 100) + '%'); } function onLongActionBegin(type, id){ @@ -333,10 +333,10 @@ var ApplicationController = new(function(){ switch (id) { case Asc.c_oAscAsyncAction['Print']: - text = 'Downloading document...'; + text = me.downloadTextText; break; default: - text = 'Please wait...'; + text = me.waitText; break; } @@ -369,7 +369,7 @@ var ApplicationController = new(function(){ if (id == Asc.c_oAscError.ID.LoadingScriptError) { $('#id-critical-error-title').text(me.criticalErrorTitle); $('#id-critical-error-message').text(me.scriptLoadError); - $('#id-critical-error-close').off().on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ window.location.reload(); }); $('#id-critical-error-dialog').css('z-index', 20002).modal('show'); @@ -418,8 +418,7 @@ var ApplicationController = new(function(){ $('#id-critical-error-title').text(me.criticalErrorTitle); $('#id-critical-error-message').text(message); - $('#id-critical-error-close').off(); - $('#id-critical-error-close').on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ window.location.reload(); }); } @@ -428,8 +427,7 @@ var ApplicationController = new(function(){ $('#id-critical-error-title').text(me.notcriticalErrorTitle); $('#id-critical-error-message').text(message); - $('#id-critical-error-close').off(); - $('#id-critical-error-close').on('click', function(){ + $('#id-critical-error-close').text(me.txtClose).off().on('click', function(){ $('#id-critical-error-dialog').modal('hide'); }); } @@ -442,7 +440,7 @@ var ApplicationController = new(function(){ function onExternalMessage(error) { if (error) { hidePreloader(); - $('#id-error-mask-title').text('Error'); + $('#id-error-mask-title').text(me.criticalErrorTitle); $('#id-error-mask-text').text(error.msg); $('#id-error-mask').css('display', 'block'); @@ -466,7 +464,7 @@ var ApplicationController = new(function(){ Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, me.errorAccessDeny); return; } - api.asc_DownloadAs(Asc.c_oAscFileType.XLSX, true); + api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.XLSX, true)); } function onApiMouseMove(array) { @@ -559,14 +557,20 @@ var ApplicationController = new(function(){ create : createController, errorDefaultMessage : 'Error code: %1', unknownErrorText : 'Unknown error.', - convertationTimeoutText : 'Convertation timeout exceeded.', - convertationErrorText : 'Convertation failed.', + convertationTimeoutText : 'Conversion timeout exceeded.', + convertationErrorText : 'Conversion failed.', downloadErrorText : 'Download failed.', criticalErrorTitle : 'Error', notcriticalErrorTitle : 'Warning', scriptLoadError: 'The connection is too slow, some of the components could not be loaded. Please reload the page.', errorFilePassProtect: 'The file is password protected and cannot be opened.', errorAccessDeny: 'You are trying to perform an action you do not have rights for.
      Please contact your Document Server administrator.', - errorUserDrop: 'The file cannot be accessed right now.' + errorUserDrop: 'The file cannot be accessed right now.', + unsupportedBrowserErrorText: 'Your browser is not supported.', + textOf: 'of', + downloadTextText: 'Downloading spreadsheet...', + waitText: 'Please, wait...', + textLoadingDocument: 'Loading spreadsheet', + txtClose: 'Close' } })(); \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/js/ApplicationView.js b/apps/spreadsheeteditor/embed/js/ApplicationView.js index bd3c1a694..dd299554b 100644 --- a/apps/spreadsheeteditor/embed/js/ApplicationView.js +++ b/apps/spreadsheeteditor/embed/js/ApplicationView.js @@ -30,7 +30,11 @@ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ -var ApplicationView = new(function(){ +if (SSE === undefined) { + var SSE = {}; +} + +SSE.ApplicationView = new(function(){ var $btnTools; @@ -42,10 +46,10 @@ var ApplicationView = new(function(){ $btnTools.addClass('dropdown-toggle').attr('data-toggle', 'dropdown').attr('aria-expanded', 'true'); $btnTools.parent().append( ''); } @@ -57,6 +61,11 @@ var ApplicationView = new(function(){ create: createView , tools: { get: getTools - } + }, + + txtDownload: 'Download', + txtShare: 'Share', + txtEmbed: 'Embed', + txtFullScreen: 'Full Screen' } })(); diff --git a/apps/spreadsheeteditor/embed/js/application.js b/apps/spreadsheeteditor/embed/js/application.js index c42c8847f..4327c07ca 100644 --- a/apps/spreadsheeteditor/embed/js/application.js +++ b/apps/spreadsheeteditor/embed/js/application.js @@ -33,8 +33,9 @@ (function ($) { $(function(){ - ApplicationView.create(); - ApplicationController.create(); + Common.Locale.apply(); + SSE.ApplicationView.create(); + SSE.ApplicationController.create(); }) })(window.jQuery); diff --git a/apps/spreadsheeteditor/embed/locale/bg.json b/apps/spreadsheeteditor/embed/locale/bg.json new file mode 100644 index 000000000..2f540768d --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/bg.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Копиране в клипборда", + "common.view.modals.txtEmbed": "Вграждане", + "common.view.modals.txtHeight": "Височина", + "common.view.modals.txtShare": "Споделяне на връзка", + "common.view.modals.txtWidth": "Широчина", + "SSE.ApplicationController.convertationErrorText": "Конвертирането е неуспешно.", + "SSE.ApplicationController.convertationTimeoutText": "Превишава се времето на изтичане на реализациите.", + "SSE.ApplicationController.criticalErrorTitle": "Грешка", + "SSE.ApplicationController.downloadErrorText": "Изтеглянето се провали.", + "SSE.ApplicationController.downloadTextText": "Електронната таблица се изтегли ...", + "SSE.ApplicationController.errorAccessDeny": "Опитвате се да извършите действие, за което нямате права.
      Моля, свържете се с администратора на сървъра за документи.", + "SSE.ApplicationController.errorDefaultMessage": "Код на грешка: %1", + "SSE.ApplicationController.errorFilePassProtect": "Файлът е защитен с парола и не може да бъде отворен.", + "SSE.ApplicationController.errorUserDrop": "Файлът не може да бъде достъпен в момента.", + "SSE.ApplicationController.notcriticalErrorTitle": "Внимание", + "SSE.ApplicationController.scriptLoadError": "Връзката е твърде бавна, някои от компонентите не могат да бъдат заредени. Моля, презаредете страницата.", + "SSE.ApplicationController.textLoadingDocument": "Електронната таблица се зарежда", + "SSE.ApplicationController.textOf": "на", + "SSE.ApplicationController.txtClose": "Затвори", + "SSE.ApplicationController.unknownErrorText": "Неизвестна грешка.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Вашият браузър не се поддържа.", + "SSE.ApplicationController.waitText": "Моля изчакай...", + "SSE.ApplicationView.txtDownload": "Изтегли", + "SSE.ApplicationView.txtEmbed": "Вграждане", + "SSE.ApplicationView.txtFullScreen": "Цял екран", + "SSE.ApplicationView.txtShare": "Дял" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/cs.json b/apps/spreadsheeteditor/embed/locale/cs.json new file mode 100644 index 000000000..17dfbc3cf --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/cs.json @@ -0,0 +1,24 @@ +{ + "common.view.modals.txtCopy": "Zkopírovat do schránky", + "common.view.modals.txtHeight": "Výška", + "common.view.modals.txtWidth": "Šířka", + "SSE.ApplicationController.convertationErrorText": "Konverze selhala.", + "SSE.ApplicationController.convertationTimeoutText": "Vypršel čas konverze.", + "SSE.ApplicationController.criticalErrorTitle": "Chyba", + "SSE.ApplicationController.downloadErrorText": "Stahování selhalo.", + "SSE.ApplicationController.downloadTextText": "Stahování sešitu...", + "SSE.ApplicationController.errorAccessDeny": "Pokoušíte se provést akci, na kterou nemáte oprávnění.
      Prosím, kontaktujte administrátora vašeho Dokumentového serveru.", + "SSE.ApplicationController.errorDefaultMessage": "Kód chyby: %1", + "SSE.ApplicationController.errorFilePassProtect": "Dokument je chráněn heslem a nelze otevřít.", + "SSE.ApplicationController.errorUserDrop": "Tento soubor není nyní přístupný.", + "SSE.ApplicationController.notcriticalErrorTitle": "Varování", + "SSE.ApplicationController.textLoadingDocument": "Načítání sešitu", + "SSE.ApplicationController.textOf": "z", + "SSE.ApplicationController.txtClose": "Zavřít", + "SSE.ApplicationController.unknownErrorText": "Neznámá chyba.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Váš prohlížeč není podporován.", + "SSE.ApplicationController.waitText": "Prosím, čekejte...", + "SSE.ApplicationView.txtDownload": "Stáhnout", + "SSE.ApplicationView.txtFullScreen": "Celá obrazovka", + "SSE.ApplicationView.txtShare": "Sdílet" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/de.json b/apps/spreadsheeteditor/embed/locale/de.json new file mode 100644 index 000000000..3fdd98801 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/de.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "In die Zwischenablage kopieren", + "common.view.modals.txtEmbed": "Einbetten", + "common.view.modals.txtHeight": "Höhe", + "common.view.modals.txtShare": "Link teilen", + "common.view.modals.txtWidth": "Breite", + "SSE.ApplicationController.convertationErrorText": "Konvertierung ist fehlgeschlagen.", + "SSE.ApplicationController.convertationTimeoutText": "Timeout für die Konvertierung wurde überschritten.", + "SSE.ApplicationController.criticalErrorTitle": "Fehler", + "SSE.ApplicationController.downloadErrorText": "Herunterladen ist fehlgeschlagen.", + "SSE.ApplicationController.downloadTextText": "Kalkulationstabelle wird heruntergeladen...", + "SSE.ApplicationController.errorAccessDeny": "Sie haben versucht die Änderungen im Dokument, zu dem Sie keine Berechtigungen haben, vorzunehemen.
      Wenden Sie sich an Ihren Serveradministrator.", + "SSE.ApplicationController.errorDefaultMessage": "Fehlercode: %1", + "SSE.ApplicationController.errorFilePassProtect": "Das Dokument ist kennwortgeschützt und kann nicht geöffnet werden.", + "SSE.ApplicationController.errorUserDrop": "Kein Zugriff auf diese Datei ist möglich.", + "SSE.ApplicationController.notcriticalErrorTitle": "Warnung", + "SSE.ApplicationController.scriptLoadError": "Die Verbindung ist zu langsam, einige der Komponenten konnten nicht geladen werden. Bitte laden Sie die Seite erneut.", + "SSE.ApplicationController.textLoadingDocument": "Tabelle wird geladen", + "SSE.ApplicationController.textOf": "von", + "SSE.ApplicationController.txtClose": "Schließen", + "SSE.ApplicationController.unknownErrorText": "Unbekannter Fehler.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Ihr Webbrowser wird nicht unterstützt.", + "SSE.ApplicationController.waitText": "Bitte warten...", + "SSE.ApplicationView.txtDownload": "Herunterladen", + "SSE.ApplicationView.txtEmbed": "Einbetten", + "SSE.ApplicationView.txtFullScreen": "Vollbild-Modus", + "SSE.ApplicationView.txtShare": "Freigeben" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/en.json b/apps/spreadsheeteditor/embed/locale/en.json new file mode 100644 index 000000000..f94d807ac --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/en.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copy to clipboard", + "common.view.modals.txtEmbed": "Embed", + "common.view.modals.txtHeight": "Height", + "common.view.modals.txtShare": "Share Link", + "common.view.modals.txtWidth": "Width", + "SSE.ApplicationController.convertationErrorText": "Conversion failed.", + "SSE.ApplicationController.convertationTimeoutText": "Conversion timeout exceeded.", + "SSE.ApplicationController.criticalErrorTitle": "Error", + "SSE.ApplicationController.downloadErrorText": "Download failed.", + "SSE.ApplicationController.downloadTextText": "Downloading spreadsheet...", + "SSE.ApplicationController.errorAccessDeny": "You are trying to perform an action you do not have rights for.
      Please contact your Document Server administrator.", + "SSE.ApplicationController.errorDefaultMessage": "Error code: %1", + "SSE.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.", + "SSE.ApplicationController.errorUserDrop": "The file cannot be accessed right now.", + "SSE.ApplicationController.notcriticalErrorTitle": "Warning", + "SSE.ApplicationController.scriptLoadError": "The connection is too slow, some of the components could not be loaded. Please reload the page.", + "SSE.ApplicationController.textLoadingDocument": "Loading spreadsheet", + "SSE.ApplicationController.textOf": "of", + "SSE.ApplicationController.txtClose": "Close", + "SSE.ApplicationController.unknownErrorText": "Unknown error.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Your browser is not supported.", + "SSE.ApplicationController.waitText": "Please, wait...", + "SSE.ApplicationView.txtDownload": "Download", + "SSE.ApplicationView.txtEmbed": "Embed", + "SSE.ApplicationView.txtFullScreen": "Full Screen", + "SSE.ApplicationView.txtShare": "Share" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/es.json b/apps/spreadsheeteditor/embed/locale/es.json new file mode 100644 index 000000000..bf17d0ca9 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/es.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copiar al portapapeles", + "common.view.modals.txtEmbed": "Incorporar", + "common.view.modals.txtHeight": "Altura", + "common.view.modals.txtShare": "Compartir enlace", + "common.view.modals.txtWidth": "Ancho", + "SSE.ApplicationController.convertationErrorText": "Fallo de conversión.", + "SSE.ApplicationController.convertationTimeoutText": "Límite de tiempo de conversión está superado.", + "SSE.ApplicationController.criticalErrorTitle": "Error", + "SSE.ApplicationController.downloadErrorText": "Fallo en descarga.", + "SSE.ApplicationController.downloadTextText": "Descargando hoja de cálculo...", + "SSE.ApplicationController.errorAccessDeny": "Usted no tiene permisos para realizar la acción que está intentando hacer.
      Por favor, contacte con su Administrador del Servidor de Documentos.", + "SSE.ApplicationController.errorDefaultMessage": "Código de error: %1", + "SSE.ApplicationController.errorFilePassProtect": "El archivo está protegido por una contraseña y no puede ser abierto.", + "SSE.ApplicationController.errorUserDrop": "No se puede acceder al archivo ahora mismo.", + "SSE.ApplicationController.notcriticalErrorTitle": "Aviso", + "SSE.ApplicationController.scriptLoadError": "La conexión a Internet es demasiado lenta, no se podía cargar algunos componentes. Por favor, recargue la página.", + "SSE.ApplicationController.textLoadingDocument": "Cargando hoja de cálculo", + "SSE.ApplicationController.textOf": "de", + "SSE.ApplicationController.txtClose": "Cerrar", + "SSE.ApplicationController.unknownErrorText": "Error desconocido.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Su navegador no está soportado.", + "SSE.ApplicationController.waitText": "Por favor, espere...", + "SSE.ApplicationView.txtDownload": "Descargar", + "SSE.ApplicationView.txtEmbed": "Incorporar", + "SSE.ApplicationView.txtFullScreen": "Pantalla Completa", + "SSE.ApplicationView.txtShare": "Compartir" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/fr.json b/apps/spreadsheeteditor/embed/locale/fr.json new file mode 100644 index 000000000..c8cd03921 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/fr.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copier dans le Presse-papiers", + "common.view.modals.txtEmbed": "Incorporer", + "common.view.modals.txtHeight": "Hauteur", + "common.view.modals.txtShare": "Partager un lien", + "common.view.modals.txtWidth": "Largeur", + "SSE.ApplicationController.convertationErrorText": "Échec de la conversion.", + "SSE.ApplicationController.convertationTimeoutText": "Délai d'attente de la conversion dépassé ", + "SSE.ApplicationController.criticalErrorTitle": "Erreur", + "SSE.ApplicationController.downloadErrorText": "Échec du téléchargement.", + "SSE.ApplicationController.downloadTextText": "Téléchargement de la feuille de calcul en cours...", + "SSE.ApplicationController.errorAccessDeny": "Vous tentez d'exéсuter une action pour laquelle vous ne disposez pas des droits.
      Veuillez contacter l'administrateur de Document Server.", + "SSE.ApplicationController.errorDefaultMessage": "Code d'erreur: %1", + "SSE.ApplicationController.errorFilePassProtect": "Le fichier est protégé par le mot de passe et ne peut pas être ouvert.", + "SSE.ApplicationController.errorUserDrop": "Impossible d'accéder au fichier.", + "SSE.ApplicationController.notcriticalErrorTitle": "Avertissement", + "SSE.ApplicationController.scriptLoadError": "La connexion est trop lente, certains éléments ne peuvent pas être chargés. Veuillez recharger la page.", + "SSE.ApplicationController.textLoadingDocument": "Chargement d'une feuille de calcul", + "SSE.ApplicationController.textOf": "de", + "SSE.ApplicationController.txtClose": "Fermer", + "SSE.ApplicationController.unknownErrorText": "Erreur inconnue.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Votre navigateur n'est pas pris en charge.", + "SSE.ApplicationController.waitText": "Veuillez patienter...", + "SSE.ApplicationView.txtDownload": "Télécharger", + "SSE.ApplicationView.txtEmbed": "Incorporer", + "SSE.ApplicationView.txtFullScreen": "Plein écran", + "SSE.ApplicationView.txtShare": "Partager" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/hu.json b/apps/spreadsheeteditor/embed/locale/hu.json new file mode 100644 index 000000000..32809bdc7 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/hu.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Másolás a vágólapra", + "common.view.modals.txtEmbed": "Beágyaz", + "common.view.modals.txtHeight": "Magasság", + "common.view.modals.txtShare": "Hivatkozás megosztása", + "common.view.modals.txtWidth": "Szélesség", + "SSE.ApplicationController.convertationErrorText": "Az átalakítás nem sikerült.", + "SSE.ApplicationController.convertationTimeoutText": "Időtúllépés az átalakítás során.", + "SSE.ApplicationController.criticalErrorTitle": "Hiba", + "SSE.ApplicationController.downloadErrorText": "Sikertelen letöltés.", + "SSE.ApplicationController.downloadTextText": "Munkafüzet letöltése...", + "SSE.ApplicationController.errorAccessDeny": "Olyan műveletet próbál végrehajtani, melyre nincs jogosultsága.
      Vegye fel a kapcsolatot a Document Server adminisztrátorával.", + "SSE.ApplicationController.errorDefaultMessage": "Hibakód: %1", + "SSE.ApplicationController.errorFilePassProtect": "A dokumentum jelszóval védett, és nem nyitható meg.", + "SSE.ApplicationController.errorUserDrop": "A dokumentum jelenleg nem elérhető", + "SSE.ApplicationController.notcriticalErrorTitle": "Figyelmeztetés", + "SSE.ApplicationController.scriptLoadError": "A kapcsolat túl lassú, néhány komponens nem töltődött be. Frissítse az oldalt.", + "SSE.ApplicationController.textLoadingDocument": "Munkafüzet betöltése", + "SSE.ApplicationController.textOf": "of", + "SSE.ApplicationController.txtClose": "Bezár", + "SSE.ApplicationController.unknownErrorText": "Ismeretlen hiba.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "A böngészője nem támogatott.", + "SSE.ApplicationController.waitText": "Kérjük várjon...", + "SSE.ApplicationView.txtDownload": "Letöltés", + "SSE.ApplicationView.txtEmbed": "Beágyaz", + "SSE.ApplicationView.txtFullScreen": "Teljes képernyő", + "SSE.ApplicationView.txtShare": "Megosztás" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/it.json b/apps/spreadsheeteditor/embed/locale/it.json new file mode 100644 index 000000000..12c35d15d --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/it.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Copia negli appunti", + "common.view.modals.txtEmbed": "Incorpora", + "common.view.modals.txtHeight": "Altezza", + "common.view.modals.txtShare": "Condividi collegamento", + "common.view.modals.txtWidth": "Larghezza", + "SSE.ApplicationController.convertationErrorText": "Conversione fallita.", + "SSE.ApplicationController.convertationTimeoutText": "È stato superato il tempo limite della conversione.", + "SSE.ApplicationController.criticalErrorTitle": "Errore", + "SSE.ApplicationController.downloadErrorText": "Scaricamento fallito", + "SSE.ApplicationController.downloadTextText": "Download del foglio di calcolo in corso...", + "SSE.ApplicationController.errorAccessDeny": "Stai tentando di eseguire un'azione per la quale non disponi di permessi sufficienti.
      Si prega di contattare l'amministratore del Server dei Documenti.", + "SSE.ApplicationController.errorDefaultMessage": "Codice errore: %1", + "SSE.ApplicationController.errorFilePassProtect": "Il file è protetto da una password. Impossibile aprirlo.", + "SSE.ApplicationController.errorUserDrop": "Impossibile accedere al file subito.", + "SSE.ApplicationController.notcriticalErrorTitle": "Avviso", + "SSE.ApplicationController.scriptLoadError": "La connessione è troppo lenta, alcuni componenti non possono essere caricati. Si prega di ricaricare la pagina.", + "SSE.ApplicationController.textLoadingDocument": "Caricamento del foglio di calcolo", + "SSE.ApplicationController.textOf": "di", + "SSE.ApplicationController.txtClose": "Chiudi", + "SSE.ApplicationController.unknownErrorText": "Errore sconosciuto.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Il tuo browser non è supportato.", + "SSE.ApplicationController.waitText": "Per favore, attendi...", + "SSE.ApplicationView.txtDownload": "Scarica", + "SSE.ApplicationView.txtEmbed": "Incorpora", + "SSE.ApplicationView.txtFullScreen": "Schermo intero", + "SSE.ApplicationView.txtShare": "Condividi" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/ja.json b/apps/spreadsheeteditor/embed/locale/ja.json new file mode 100644 index 000000000..75d18e360 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/ja.json @@ -0,0 +1,21 @@ +{ + "common.view.modals.txtHeight": "高さ", + "common.view.modals.txtWidth": "幅", + "SSE.ApplicationController.convertationErrorText": "変換に失敗しました", + "SSE.ApplicationController.convertationTimeoutText": "変換のタイムアウトを超過しました。", + "SSE.ApplicationController.criticalErrorTitle": "エラー", + "SSE.ApplicationController.downloadErrorText": "ダウンロードに失敗しました", + "SSE.ApplicationController.downloadTextText": "スプレッドシートのダウンロード中...", + "SSE.ApplicationController.errorDefaultMessage": "エラー コード: %1", + "SSE.ApplicationController.errorFilePassProtect": "ドキュメントがパスワードで保護されているため開くことができません", + "SSE.ApplicationController.errorUserDrop": "今、ファイルにアクセスすることはできません。", + "SSE.ApplicationController.notcriticalErrorTitle": "警告", + "SSE.ApplicationController.textLoadingDocument": "スプレッドシートの読み込み中", + "SSE.ApplicationController.textOf": "から", + "SSE.ApplicationController.txtClose": "閉じる", + "SSE.ApplicationController.unknownErrorText": "不明なエラー", + "SSE.ApplicationController.unsupportedBrowserErrorText": "お使いのブラウザがサポートされていません。", + "SSE.ApplicationView.txtDownload": "ダウンロード", + "SSE.ApplicationView.txtFullScreen": "全画面表示", + "SSE.ApplicationView.txtShare": "シェア" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/ko.json b/apps/spreadsheeteditor/embed/locale/ko.json new file mode 100644 index 000000000..0fa191811 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/ko.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "클립보드로 복사", + "common.view.modals.txtEmbed": "퍼가기", + "common.view.modals.txtHeight": "높이", + "common.view.modals.txtShare": "링크 공유", + "common.view.modals.txtWidth": "너비", + "SSE.ApplicationController.convertationErrorText": "변환 실패", + "SSE.ApplicationController.convertationTimeoutText": "전환 시간 초과를 초과했습니다.", + "SSE.ApplicationController.criticalErrorTitle": "오류", + "SSE.ApplicationController.downloadErrorText": "다운로드하지 못했습니다.", + "SSE.ApplicationController.downloadTextText": "스프레드 시트 다운로드 중 ...", + "SSE.ApplicationController.errorAccessDeny": "권한이없는 작업을 수행하려고합니다.
      Document Server 관리자에게 문의하십시오.", + "SSE.ApplicationController.errorDefaultMessage": "오류 코드 : %1", + "SSE.ApplicationController.errorFilePassProtect": "이 문서는 암호로 보호되어있어 열 수 없습니다.", + "SSE.ApplicationController.errorUserDrop": "파일에 지금 액세스 할 수 없습니다.", + "SSE.ApplicationController.notcriticalErrorTitle": "경고", + "SSE.ApplicationController.scriptLoadError": "연결 속도가 느려, 일부 요소들이 로드되지 않았습니다. 페이지를 다시 새로 고침해주세요.", + "SSE.ApplicationController.textLoadingDocument": "스프레드 시트로드 중", + "SSE.ApplicationController.textOf": "중", + "SSE.ApplicationController.txtClose": "완료", + "SSE.ApplicationController.unknownErrorText": "알 수없는 오류.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "사용중인 브라우저가 지원되지 않습니다.", + "SSE.ApplicationController.waitText": "잠시만 기달려주세요...", + "SSE.ApplicationView.txtDownload": "다운로드", + "SSE.ApplicationView.txtEmbed": "퍼가기", + "SSE.ApplicationView.txtFullScreen": "전체 화면", + "SSE.ApplicationView.txtShare": "공유" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/lv.json b/apps/spreadsheeteditor/embed/locale/lv.json new file mode 100644 index 000000000..8cda6dc4f --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/lv.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Nokopēts starpliktuvē", + "common.view.modals.txtHeight": "Augstums", + "common.view.modals.txtWidth": "Platums", + "SSE.ApplicationController.convertationErrorText": "Konversija neizdevās.", + "SSE.ApplicationController.convertationTimeoutText": "Konversijas taimauts pārsniegts.", + "SSE.ApplicationController.criticalErrorTitle": "Kļūda", + "SSE.ApplicationController.downloadErrorText": "Lejuplāde neizdevās.", + "SSE.ApplicationController.downloadTextText": "Lejuplādē izklājlapu...", + "SSE.ApplicationController.errorAccessDeny": "Jūs mēģināt veikt darbību, kuru nedrīkstat veikt.
      Lūdzu, sazinieties ar savu dokumentu servera administratoru.", + "SSE.ApplicationController.errorDefaultMessage": "Kļūdas kods: %1", + "SSE.ApplicationController.errorFilePassProtect": "Fails ir aizsargāts ar paroli un to nevar atvērt.", + "SSE.ApplicationController.errorUserDrop": "Failam šobrīd nevar piekļūt.", + "SSE.ApplicationController.notcriticalErrorTitle": "Brīdinājums", + "SSE.ApplicationController.textLoadingDocument": "Ielādē izklājlapu", + "SSE.ApplicationController.textOf": "no", + "SSE.ApplicationController.txtClose": "Aizvērt", + "SSE.ApplicationController.unknownErrorText": "Nezināma kļūda.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Jūsu pārlūkprogramma nav atbalstīta.", + "SSE.ApplicationView.txtDownload": "Lejupielādēt", + "SSE.ApplicationView.txtShare": "Dalīties" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/nl.json b/apps/spreadsheeteditor/embed/locale/nl.json new file mode 100644 index 000000000..bee107e8d --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/nl.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Kopieer naar klembord", + "common.view.modals.txtHeight": "Hoogte", + "common.view.modals.txtWidth": "Breedte", + "SSE.ApplicationController.convertationTimeoutText": "Time-out voor conversie overschreden.", + "SSE.ApplicationController.criticalErrorTitle": "Fout", + "SSE.ApplicationController.downloadErrorText": "Download mislukt.", + "SSE.ApplicationController.downloadTextText": "Spreadsheet wordt gedownload...", + "SSE.ApplicationController.errorAccessDeny": "U probeert een actie uit te voeren waarvoor u geen rechten hebt.
      Neem contact op met de beheerder van de documentserver.", + "SSE.ApplicationController.errorDefaultMessage": "Foutcode: %1", + "SSE.ApplicationController.errorFilePassProtect": "Het bestand is beschermd met een wachtwoord en kan niet worden geopend.", + "SSE.ApplicationController.errorUserDrop": "Toegang tot het bestand is op dit moment niet mogelijk.", + "SSE.ApplicationController.notcriticalErrorTitle": "Waarschuwing", + "SSE.ApplicationController.scriptLoadError": "De verbinding is te langzaam, sommige componenten konden niet geladen worden. Laad de pagina opnieuw.", + "SSE.ApplicationController.textLoadingDocument": "Spreadsheet wordt geladen", + "SSE.ApplicationController.textOf": "van", + "SSE.ApplicationController.txtClose": "Sluiten", + "SSE.ApplicationController.unknownErrorText": "Onbekende fout.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Uw browser wordt niet ondersteund.", + "SSE.ApplicationView.txtDownload": "Downloaden", + "SSE.ApplicationView.txtFullScreen": "Volledig scherm", + "SSE.ApplicationView.txtShare": "Delen" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/pl.json b/apps/spreadsheeteditor/embed/locale/pl.json new file mode 100644 index 000000000..6a3baea66 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/pl.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Skopiuj do schowka", + "common.view.modals.txtHeight": "Wysokość", + "common.view.modals.txtWidth": "Szerokość", + "SSE.ApplicationController.convertationTimeoutText": "Przekroczono limit czasu konwersji.", + "SSE.ApplicationController.criticalErrorTitle": "Błąd", + "SSE.ApplicationController.downloadErrorText": "Pobieranie nieudane.", + "SSE.ApplicationController.downloadTextText": "Pobieranie arkusza kalkulacyjnego...", + "SSE.ApplicationController.errorAccessDeny": "Próbujesz wykonać działanie, na które nie masz uprawnień.
      Proszę skontaktować się z administratorem serwera dokumentów.", + "SSE.ApplicationController.errorDefaultMessage": "Kod błędu: %1", + "SSE.ApplicationController.errorFilePassProtect": "Dokument jest chroniony hasłem i nie może być otwarty.", + "SSE.ApplicationController.errorUserDrop": "Nie można uzyskać dostępu do tego pliku.", + "SSE.ApplicationController.notcriticalErrorTitle": "Ostrzeżenie", + "SSE.ApplicationController.textLoadingDocument": "Ładowanie arkusza kalkulacyjnego", + "SSE.ApplicationController.textOf": "z", + "SSE.ApplicationController.txtClose": "Zamknij", + "SSE.ApplicationController.unknownErrorText": "Nieznany błąd.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Twoja przeglądarka nie jest wspierana.", + "SSE.ApplicationController.waitText": "Proszę czekać...", + "SSE.ApplicationView.txtDownload": "Pobierz", + "SSE.ApplicationView.txtFullScreen": "Pełny ekran", + "SSE.ApplicationView.txtShare": "Udostępnij" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/pt.json b/apps/spreadsheeteditor/embed/locale/pt.json new file mode 100644 index 000000000..f11455b60 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/pt.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Copiar para a área de transferência", + "common.view.modals.txtHeight": "Altura", + "common.view.modals.txtWidth": "Largura", + "SSE.ApplicationController.convertationTimeoutText": "Tempo limite de conversão excedido.", + "SSE.ApplicationController.criticalErrorTitle": "Erro", + "SSE.ApplicationController.downloadErrorText": "Falha ao baixar", + "SSE.ApplicationController.downloadTextText": "Baixando planilha...", + "SSE.ApplicationController.errorAccessDeny": "Você está tentando executar uma ação para a qual não tem direitos.
      Entre em contato com o administrador do Document Server.", + "SSE.ApplicationController.errorDefaultMessage": "Código do erro: %1", + "SSE.ApplicationController.errorFilePassProtect": "O documento é protegido por senha e não pode ser aberto.", + "SSE.ApplicationController.errorUserDrop": "O arquivo não pode ser acessado agora.", + "SSE.ApplicationController.notcriticalErrorTitle": "Aviso", + "SSE.ApplicationController.textLoadingDocument": "Carregando planilha", + "SSE.ApplicationController.textOf": "de", + "SSE.ApplicationController.txtClose": "Fechar", + "SSE.ApplicationController.unknownErrorText": "Erro desconhecido.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Seu navegador não é suportado.", + "SSE.ApplicationController.waitText": "Aguarde...", + "SSE.ApplicationView.txtDownload": "Baixar", + "SSE.ApplicationView.txtShare": "Compartilhar" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/ru.json b/apps/spreadsheeteditor/embed/locale/ru.json new file mode 100644 index 000000000..0b85d4938 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/ru.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Скопировать в буфер", + "common.view.modals.txtEmbed": "Встроить", + "common.view.modals.txtHeight": "Высота", + "common.view.modals.txtShare": "Поделиться ссылкой", + "common.view.modals.txtWidth": "Ширина", + "SSE.ApplicationController.convertationErrorText": "Конвертация не удалась.", + "SSE.ApplicationController.convertationTimeoutText": "Превышено время ожидания конвертации.", + "SSE.ApplicationController.criticalErrorTitle": "Ошибка", + "SSE.ApplicationController.downloadErrorText": "Загрузка не удалась.", + "SSE.ApplicationController.downloadTextText": "Загрузка таблицы...", + "SSE.ApplicationController.errorAccessDeny": "Вы пытаетесь выполнить действие, на которое у вас нет прав.
      Пожалуйста, обратитесь к администратору Сервера документов.", + "SSE.ApplicationController.errorDefaultMessage": "Код ошибки: %1", + "SSE.ApplicationController.errorFilePassProtect": "Файл защищен паролем и не может быть открыт.", + "SSE.ApplicationController.errorUserDrop": "В настоящий момент файл недоступен.", + "SSE.ApplicationController.notcriticalErrorTitle": "Внимание", + "SSE.ApplicationController.scriptLoadError": "Слишком медленное подключение, некоторые компоненты не удалось загрузить. Пожалуйста, обновите страницу.", + "SSE.ApplicationController.textLoadingDocument": "Загрузка таблицы", + "SSE.ApplicationController.textOf": "из", + "SSE.ApplicationController.txtClose": "Закрыть", + "SSE.ApplicationController.unknownErrorText": "Неизвестная ошибка.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Ваш браузер не поддерживается.", + "SSE.ApplicationController.waitText": "Пожалуйста, подождите...", + "SSE.ApplicationView.txtDownload": "Скачать файл", + "SSE.ApplicationView.txtEmbed": "Встроить", + "SSE.ApplicationView.txtFullScreen": "Во весь экран", + "SSE.ApplicationView.txtShare": "Поделиться" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/sk.json b/apps/spreadsheeteditor/embed/locale/sk.json new file mode 100644 index 000000000..27b078a3b --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/sk.json @@ -0,0 +1,23 @@ +{ + "common.view.modals.txtCopy": "Skopírovať do schránky", + "common.view.modals.txtHeight": "Výška", + "common.view.modals.txtWidth": "Šírka", + "SSE.ApplicationController.convertationTimeoutText": "Prekročený čas konverzie.", + "SSE.ApplicationController.criticalErrorTitle": "Chyba", + "SSE.ApplicationController.downloadErrorText": "Sťahovanie zlyhalo.", + "SSE.ApplicationController.downloadTextText": "Sťahovanie dokumentu...", + "SSE.ApplicationController.errorAccessDeny": "Pokúšate sa vykonať akciu, na ktorú nemáte práva.
      Prosím, kontaktujte svojho správcu dokumentového servera.", + "SSE.ApplicationController.errorDefaultMessage": "Kód chyby: %1", + "SSE.ApplicationController.errorFilePassProtect": "Dokument je chránený heslom a nie je možné ho otvoriť.", + "SSE.ApplicationController.errorUserDrop": "K súboru nie je možné práve teraz získať prístup.", + "SSE.ApplicationController.notcriticalErrorTitle": "Upozornenie", + "SSE.ApplicationController.textLoadingDocument": "Načítavanie dokumentu", + "SSE.ApplicationController.textOf": "z", + "SSE.ApplicationController.txtClose": "Zatvoriť", + "SSE.ApplicationController.unknownErrorText": "Neznáma chyba.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Váš prehliadač nie je podporovaný.", + "SSE.ApplicationController.waitText": "Prosím čakajte...", + "SSE.ApplicationView.txtDownload": "Stiahnuť", + "SSE.ApplicationView.txtFullScreen": "Celá obrazovka", + "SSE.ApplicationView.txtShare": "Zdieľať" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/sl.json b/apps/spreadsheeteditor/embed/locale/sl.json new file mode 100644 index 000000000..3d0bf9571 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/sl.json @@ -0,0 +1,21 @@ +{ + "common.view.modals.txtCopy": "Kopiraj v odložišče", + "common.view.modals.txtHeight": "Višina", + "common.view.modals.txtWidth": "Širina", + "SSE.ApplicationController.convertationErrorText": "Pretvorba ni uspela.", + "SSE.ApplicationController.convertationTimeoutText": "Pretvorbena prekinitev presežena.", + "SSE.ApplicationController.criticalErrorTitle": "Napaka", + "SSE.ApplicationController.downloadErrorText": "Prenos ni uspel.", + "SSE.ApplicationController.downloadTextText": "Prenašanje razpredelnice...", + "SSE.ApplicationController.errorDefaultMessage": "Koda napake: %1", + "SSE.ApplicationController.errorFilePassProtect": "Dokument je zaščiten z geslom in ga ni mogoče odpreti.", + "SSE.ApplicationController.errorUserDrop": "Do datoteke v tem trenutku ni možno dostopati.", + "SSE.ApplicationController.notcriticalErrorTitle": "Opozorilo", + "SSE.ApplicationController.textLoadingDocument": "Nalaganje razpredelnice", + "SSE.ApplicationController.textOf": "od", + "SSE.ApplicationController.txtClose": "Zapri", + "SSE.ApplicationController.unknownErrorText": "Neznana napaka.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Vaš brskalnik ni podprt.", + "SSE.ApplicationView.txtDownload": "Prenesi", + "SSE.ApplicationView.txtShare": "Deli" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/tr.json b/apps/spreadsheeteditor/embed/locale/tr.json new file mode 100644 index 000000000..e48cbdeab --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/tr.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "Panoya kopyala", + "common.view.modals.txtEmbed": "Gömülü", + "common.view.modals.txtHeight": "Yükseklik", + "common.view.modals.txtShare": "Bağlantıyı Paylaş", + "common.view.modals.txtWidth": "Genişlik", + "SSE.ApplicationController.convertationErrorText": "Değişim başarısız oldu.", + "SSE.ApplicationController.convertationTimeoutText": "Değişim süresi aşıldı.", + "SSE.ApplicationController.criticalErrorTitle": "Hata", + "SSE.ApplicationController.downloadErrorText": "Yükleme başarısız oldu.", + "SSE.ApplicationController.downloadTextText": "Spreadsheet yükleniyor...", + "SSE.ApplicationController.errorAccessDeny": "Hakkınız olmayan bir eylem gerçekleştirmeye çalışıyorsunuz.
      Lütfen Belge Sunucu yöneticinize başvurun.", + "SSE.ApplicationController.errorDefaultMessage": "Hata kodu: %1", + "SSE.ApplicationController.errorFilePassProtect": "Döküman şifre korumalı ve açılamadı", + "SSE.ApplicationController.errorUserDrop": "Belgeye şu an erişilemiyor.", + "SSE.ApplicationController.notcriticalErrorTitle": "Uyarı", + "SSE.ApplicationController.scriptLoadError": "Bağlantı çok yavaş, bileşenlerin bazıları yüklenemedi. Lütfen sayfayı yenileyin.", + "SSE.ApplicationController.textLoadingDocument": "Spreadsheet yükleniyor", + "SSE.ApplicationController.textOf": "'in", + "SSE.ApplicationController.txtClose": "Kapat", + "SSE.ApplicationController.unknownErrorText": "Bilinmeyen hata.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Tarayıcınız desteklenmiyor.", + "SSE.ApplicationController.waitText": "Lütfen bekleyin...", + "SSE.ApplicationView.txtDownload": "İndir", + "SSE.ApplicationView.txtEmbed": "Gömülü", + "SSE.ApplicationView.txtFullScreen": "Tam Ekran", + "SSE.ApplicationView.txtShare": "Paylaş" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/uk.json b/apps/spreadsheeteditor/embed/locale/uk.json new file mode 100644 index 000000000..b89b6aecd --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/uk.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Копіювати в буфер обміну", + "common.view.modals.txtHeight": "Висота", + "common.view.modals.txtWidth": "Ширина", + "SSE.ApplicationController.convertationTimeoutText": "Термін переходу перевищено.", + "SSE.ApplicationController.criticalErrorTitle": "Помилка", + "SSE.ApplicationController.downloadErrorText": "Завантаження не вдалося", + "SSE.ApplicationController.downloadTextText": "Завантаження електронної таблиці...", + "SSE.ApplicationController.errorAccessDeny": "Ви намагаєтеся виконати дію, на яку у вас немає прав.
      Будь ласка, зв'яжіться з адміністратором вашого Сервера документів.", + "SSE.ApplicationController.errorDefaultMessage": "Код помилки: %1", + "SSE.ApplicationController.errorFilePassProtect": "Документ захищений паролем і його неможливо відкрити.", + "SSE.ApplicationController.errorUserDrop": "На даний момент файл не доступний.", + "SSE.ApplicationController.notcriticalErrorTitle": "Застереження", + "SSE.ApplicationController.textLoadingDocument": "Завантаження електронної таблиці", + "SSE.ApplicationController.textOf": "з", + "SSE.ApplicationController.txtClose": "Закрити", + "SSE.ApplicationController.unknownErrorText": "Невідома помилка.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Ваш браузер не підтримується", + "SSE.ApplicationView.txtDownload": "Завантажити", + "SSE.ApplicationView.txtFullScreen": "Повноекранний режим", + "SSE.ApplicationView.txtShare": "Доступ" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/vi.json b/apps/spreadsheeteditor/embed/locale/vi.json new file mode 100644 index 000000000..0ce35919d --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/vi.json @@ -0,0 +1,22 @@ +{ + "common.view.modals.txtCopy": "Sao chép vào khay nhớ tạm", + "common.view.modals.txtHeight": "Chiều cao", + "common.view.modals.txtWidth": "Chiều rộng", + "SSE.ApplicationController.convertationTimeoutText": "Đã quá thời gian chờ chuyển đổi.", + "SSE.ApplicationController.criticalErrorTitle": "Lỗi", + "SSE.ApplicationController.downloadErrorText": "Tải về không thành công.", + "SSE.ApplicationController.downloadTextText": "Đang tải về bảng tính...", + "SSE.ApplicationController.errorAccessDeny": "Bạn đang cố gắng thực hiện hành động mà bạn không có quyền.
      Vui lòng liên hệ với quản trị viên Server Tài liệu của bạn.", + "SSE.ApplicationController.errorDefaultMessage": "Mã lỗi: %1", + "SSE.ApplicationController.errorFilePassProtect": "Tài liệu được bảo vệ bằng mật khẩu và không thể mở được.", + "SSE.ApplicationController.errorUserDrop": "Không thể truy cập file ngay lúc này.", + "SSE.ApplicationController.notcriticalErrorTitle": "Cảnh báo", + "SSE.ApplicationController.textLoadingDocument": "Đang tải bảng tính", + "SSE.ApplicationController.textOf": "trên", + "SSE.ApplicationController.txtClose": "Đóng", + "SSE.ApplicationController.unknownErrorText": "Lỗi không xác định.", + "SSE.ApplicationController.unsupportedBrowserErrorText": "Trình duyệt của bạn không được hỗ trợ.", + "SSE.ApplicationView.txtDownload": "Tải về", + "SSE.ApplicationView.txtFullScreen": "Toàn màn hình", + "SSE.ApplicationView.txtShare": "Chia sẻ" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/zh.json b/apps/spreadsheeteditor/embed/locale/zh.json new file mode 100644 index 000000000..693515932 --- /dev/null +++ b/apps/spreadsheeteditor/embed/locale/zh.json @@ -0,0 +1,28 @@ +{ + "common.view.modals.txtCopy": "复制到剪贴板", + "common.view.modals.txtEmbed": "嵌入", + "common.view.modals.txtHeight": "高度", + "common.view.modals.txtShare": "分享链接", + "common.view.modals.txtWidth": "宽度", + "SSE.ApplicationController.convertationErrorText": "转换失败", + "SSE.ApplicationController.convertationTimeoutText": "转换超时", + "SSE.ApplicationController.criticalErrorTitle": "错误", + "SSE.ApplicationController.downloadErrorText": "下载失败", + "SSE.ApplicationController.downloadTextText": "电子表格下载中...", + "SSE.ApplicationController.errorAccessDeny": "您正在尝试执行您没有权限的操作。
      请联系您的文档服务器管理员.", + "SSE.ApplicationController.errorDefaultMessage": "错误代码:%1", + "SSE.ApplicationController.errorFilePassProtect": "该文档受密码保护,无法被打开。", + "SSE.ApplicationController.errorUserDrop": "该文件现在无法访问。", + "SSE.ApplicationController.notcriticalErrorTitle": "警告", + "SSE.ApplicationController.scriptLoadError": "连接速度过慢,部分组件无法被加载。请重新加载页面。", + "SSE.ApplicationController.textLoadingDocument": "正在加载电子表格…", + "SSE.ApplicationController.textOf": "的", + "SSE.ApplicationController.txtClose": "关闭", + "SSE.ApplicationController.unknownErrorText": "示知错误", + "SSE.ApplicationController.unsupportedBrowserErrorText": "你的浏览器不支持", + "SSE.ApplicationController.waitText": "请稍候...", + "SSE.ApplicationView.txtDownload": "下载", + "SSE.ApplicationView.txtEmbed": "嵌入", + "SSE.ApplicationView.txtFullScreen": "全屏", + "SSE.ApplicationView.txtShare": "共享" +} \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app.js b/apps/spreadsheeteditor/main/app.js index e8c18af4f..f68d2b4f7 100644 --- a/apps/spreadsheeteditor/main/app.js +++ b/apps/spreadsheeteditor/main/app.js @@ -152,10 +152,12 @@ require([ 'Print', 'Toolbar', 'Statusbar', + 'Spellcheck', 'RightMenu', 'LeftMenu', 'Main', 'PivotTable', + 'DataTab', 'Common.Controllers.Fonts', 'Common.Controllers.Chat', 'Common.Controllers.Comments', @@ -173,11 +175,13 @@ require([ 'spreadsheeteditor/main/app/controller/CellEditor', 'spreadsheeteditor/main/app/controller/Toolbar', 'spreadsheeteditor/main/app/controller/Statusbar', + 'spreadsheeteditor/main/app/controller/Spellcheck', 'spreadsheeteditor/main/app/controller/RightMenu', 'spreadsheeteditor/main/app/controller/LeftMenu', 'spreadsheeteditor/main/app/controller/Main', 'spreadsheeteditor/main/app/controller/Print', 'spreadsheeteditor/main/app/controller/PivotTable', + 'spreadsheeteditor/main/app/controller/DataTab', 'spreadsheeteditor/main/app/view/FileMenuPanels', 'spreadsheeteditor/main/app/view/ParagraphSettings', 'spreadsheeteditor/main/app/view/ImageSettings', diff --git a/apps/spreadsheeteditor/main/app/controller/DataTab.js b/apps/spreadsheeteditor/main/app/controller/DataTab.js new file mode 100644 index 000000000..fbf16ba4a --- /dev/null +++ b/apps/spreadsheeteditor/main/app/controller/DataTab.js @@ -0,0 +1,231 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ + +/** + * DataTab.js + * + * Created by Julia Radzhabova on 30.05.2019 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'core', + 'spreadsheeteditor/main/app/view/DataTab', + 'spreadsheeteditor/main/app/view/GroupDialog' +], function () { + 'use strict'; + + SSE.Controllers.DataTab = Backbone.Controller.extend(_.extend({ + models : [], + collections : [ + ], + views : [ + 'DataTab' + ], + sdkViewName : '#id_main', + + initialize: function () { + this._state = { + CSVOptions: new Asc.asc_CTextOptions(0, 4, '') + }; + }, + onLaunch: function () { + }, + + setApi: function (api) { + if (api) { + this.api = api; + this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onSelectionChanged, this)); + this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); + this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this)); + Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); + } + return this; + }, + + setConfig: function(config) { + this.toolbar = config.toolbar; + this.view = this.createView('DataTab', { + toolbar: this.toolbar.toolbar + }); + this.addListeners({ + 'DataTab': { + 'data:group': this.onGroup, + 'data:ungroup': this.onUngroup, + 'data:tocolumns': this.onTextToColumn, + 'data:show': this.onShowClick, + 'data:hide': this.onHideClick, + 'data:groupsettings': this.onGroupSettings + }, + 'Statusbar': { + 'sheet:changed': this.onApiSheetChanged + } + }); + }, + + SetDisabled: function(state) { + this.view && this.view.SetDisabled(state); + }, + + getView: function(name) { + return !name && this.view ? + this.view : Backbone.Controller.prototype.getView.call(this, name); + }, + + onCoAuthoringDisconnect: function() { + this.SetDisabled(true); + }, + + onSelectionChanged: function(info) { + if (!this.toolbar.editMode || !this.view) return; + + // special disable conditions + Common.Utils.lockControls(SSE.enumLock.multiselectCols, info.asc_getSelectedColsCount()>1, {array: [this.view.btnTextToColumns]}); + Common.Utils.lockControls(SSE.enumLock.multiselect, info.asc_getFlags().asc_getMultiselect(), {array: [this.view.btnTextToColumns]}); + }, + + onUngroup: function(type) { + var me = this; + if (type=='rows') { + (me.api.asc_checkAddGroup(true)!==undefined) && me.api.asc_ungroup(true) + } else if (type=='columns') { + (me.api.asc_checkAddGroup(true)!==undefined) && me.api.asc_ungroup(false) + } else if (type=='clear') { + me.api.asc_clearOutline(); + } else { + var val = me.api.asc_checkAddGroup(true); + if (val===null) { + (new SSE.Views.GroupDialog({ + title: me.view.capBtnUngroup, + props: 'rows', + handler: function (dlg, result) { + if (result=='ok') { + me.api.asc_ungroup(dlg.getSettings()); + } + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + })).show(); + } else if (val!==undefined) //undefined - error, true - rows, false - columns + me.api.asc_ungroup(val); + } + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + }, + + onGroup: function(type, checked) { + if (type=='rows') { + (this.api.asc_checkAddGroup()!==undefined) && this.api.asc_group(true) + } else if (type=='columns') { + (this.api.asc_checkAddGroup()!==undefined) && this.api.asc_group(false) + } else if (type=='below') { + this.api.asc_setGroupSummary(checked, false); + } else if (type=='right') { + this.api.asc_setGroupSummary(checked, true); + } else { + var me = this, + val = me.api.asc_checkAddGroup(); + if (val===null) { + (new SSE.Views.GroupDialog({ + title: me.view.capBtnGroup, + props: 'rows', + handler: function (dlg, result) { + if (result=='ok') { + me.api.asc_group(dlg.getSettings()); + } + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + })).show(); + } else if (val!==undefined) //undefined - error, true - rows, false - columns + me.api.asc_group(val); + } + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + }, + + onGroupSettings: function(menu) { + var value = this.api.asc_getGroupSummaryBelow(); + menu.items[3].setChecked(!!value, true); + value = this.api.asc_getGroupSummaryRight(); + menu.items[4].setChecked(!!value, true); + }, + + onTextToColumn: function() { + this.api.asc_TextImport(this._state.CSVOptions, _.bind(this.onTextToColumnCallback, this), false); + }, + + onTextToColumnCallback: function(data) { + if (!data || !data.length) return; + + var me = this; + (new Common.Views.OpenDialog({ + title: me.textWizard, + closable: true, + type: Common.Utils.importTextType.Columns, + preview: true, + previewData: data, + settings: me._state.CSVOptions, + api: me.api, + handler: function (result, encoding, delimiter, delimiterChar) { + if (result == 'ok') { + if (me && me.api) { + me.api.asc_TextToColumns(new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar)); + } + } + } + })).show(); + }, + + onShowClick: function() { + this.api.asc_changeGroupDetails(true); + }, + + onHideClick: function() { + this.api.asc_changeGroupDetails(false); + }, + + onWorksheetLocked: function(index,locked) { + if (index == this.api.asc_getActiveWorksheetIndex()) { + Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: [this.view.btnGroup, this.view.btnUngroup]}); + } + }, + + onApiSheetChanged: function() { + if (!this.toolbar.mode || !this.toolbar.mode.isEdit || this.toolbar.mode.isEditDiagram || this.toolbar.mode.isEditMailMerge) return; + + var currentSheet = this.api.asc_getActiveWorksheetIndex(); + this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); + }, + + textWizard: 'Text to Columns Wizard' + + }, SSE.Controllers.DataTab || {})); +}); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index 601d66f10..bcb7a5225 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -40,6 +40,24 @@ * */ +var c_paragraphLinerule = { + LINERULE_AUTO: 1, + LINERULE_EXACT: 2 +}; + +var c_paragraphTextAlignment = { + RIGHT: 0, + LEFT: 1, + CENTERED: 2, + JUSTIFIED: 3 +}; + +var c_paragraphSpecial = { + NONE_SPECIAL: 0, + FIRST_LINE: 1, + HANGING: 2 +}; + define([ 'core', 'common/main/lib/util/utils', @@ -77,7 +95,8 @@ define([ ttHeight: 20 }, filter: {ttHeight: 40}, - func_arg: {} + func_arg: {}, + input_msg: {} }; me.mouse = {}; me.popupmenu = false; @@ -159,6 +178,9 @@ define([ view.pmiTextCut.on('click', _.bind(me.onCopyPaste, me)); view.pmiTextCopy.on('click', _.bind(me.onCopyPaste, me)); view.pmiTextPaste.on('click', _.bind(me.onCopyPaste, me)); + view.pmiCommonCut.on('click', _.bind(me.onCopyPaste, me)); + view.pmiCommonCopy.on('click', _.bind(me.onCopyPaste, me)); + view.pmiCommonPaste.on('click', _.bind(me.onCopyPaste, me)); view.pmiInsertEntire.on('click', _.bind(me.onInsertEntire, me)); view.pmiDeleteEntire.on('click', _.bind(me.onDeleteEntire, me)); view.pmiInsertCells.menu.on('item:click', _.bind(me.onInsertCells, me)); @@ -286,6 +308,7 @@ define([ this.api.asc_registerCallback('asc_onToggleAutoCorrectOptions', _.bind(this.onToggleAutoCorrectOptions, this)); this.api.asc_registerCallback('asc_onFormulaInfo', _.bind(this.onFormulaInfo, this)); this.api.asc_registerCallback('asc_ChangeCropState', _.bind(this.onChangeCropState, this)); + this.api.asc_registerCallback('asc_onInputMessage', _.bind(this.onInputMessage, this)); } return this; }, @@ -1514,7 +1537,10 @@ define([ case Asc.c_oAscSelectionType.RangeShapeText: istextshapemenu = !internaleditor; break; } - if (isimagemenu || isshapemenu || ischartmenu) { + if (this.api.asc_getHeaderFooterMode()) { + if (!documentHolder.copyPasteMenu || !showMenu && !documentHolder.copyPasteMenu.isVisible()) return; + if (showMenu) this.showPopupMenu(documentHolder.copyPasteMenu, {}, event); + } else if (isimagemenu || isshapemenu || ischartmenu) { if (!documentHolder.imgMenu || !showMenu && !documentHolder.imgMenu.isVisible()) return; isimagemenu = isshapemenu = ischartmenu = false; @@ -1948,7 +1974,7 @@ define([ documentHolderView = me.documentHolder, menu = documentHolderView.funcMenu, menuContainer = documentHolderView.cmpEl.find('#menu-formula-selection'), - funcdesc = SSE.Views.FormulaLang.getDescription(Common.Utils.InternalSettings.get("sse-settings-func-locale")); + funcdesc = me.getApplication().getController('FormulaDialog').getDescription(Common.Utils.InternalSettings.get("sse-settings-func-locale")); for (var i = 0; i < menu.items.length; i++) { var tip = menu.items[i].cmpEl.data('bs.tooltip'); @@ -2074,7 +2100,7 @@ define([ this.documentHolder.cmpEl.append(functip.parentEl); } - var funcdesc = SSE.Views.FormulaLang.getDescription(Common.Utils.InternalSettings.get("sse-settings-func-locale")), + var funcdesc = this.getApplication().getController('FormulaDialog').getDescription(Common.Utils.InternalSettings.get("sse-settings-func-locale")), hint = ((funcdesc && funcdesc[name]) ? (this.api.asc_getFormulaLocaleName(name) + funcdesc[name].a) : '').replace(/[,;]/g, this.api.asc_getFunctionArgumentSeparator()); if (functip.ref && functip.ref.isVisible()) { @@ -2125,6 +2151,63 @@ define([ } }, + onInputMessage: function(title, message) { + var inputtip = this.tooltips.input_msg; + + if (message) { + if (!inputtip.parentEl) { + inputtip.parentEl = $('
      '); + this.documentHolder.cmpEl.append(inputtip.parentEl); + } + + var hint = title ? ('' + (title || '') + '
      ') : ''; + hint += (message || ''); + + if (inputtip.ref && inputtip.ref.isVisible()) { + if (inputtip.text != hint) { + inputtip.ref.hide(); + inputtip.ref = undefined; + inputtip.text = ''; + inputtip.isHidden = true; + } + } + + if (!inputtip.ref || !inputtip.ref.isVisible()) { + inputtip.text = hint; + inputtip.ref = new Common.UI.Tooltip({ + owner : inputtip.parentEl, + html : true, + title : hint + }); + + inputtip.ref.show([-10000, -10000]); + inputtip.isHidden = false; + } + + var pos = [ + this.documentHolder.cmpEl.offset().left - $(window).scrollLeft(), + this.documentHolder.cmpEl.offset().top - $(window).scrollTop() + ], + coord = this.api.asc_getActiveCellCoord(), + showPoint = [coord.asc_getX() + pos[0] - 3, coord.asc_getY() + pos[1] - inputtip.ref.getBSTip().$tip.height() - 5]; + var tipwidth = inputtip.ref.getBSTip().$tip.width(); + if (showPoint[0] + tipwidth > this.tooltips.coauth.bodyWidth ) + showPoint[0] = this.tooltips.coauth.bodyWidth - tipwidth; + + inputtip.ref.getBSTip().$tip.css({ + top : showPoint[1] + 'px', + left: showPoint[0] + 'px' + }); + } else { + if (!inputtip.isHidden && inputtip.ref) { + inputtip.ref.hide(); + inputtip.ref = undefined; + inputtip.text = ''; + inputtip.isHidden = true; + } + } + }, + onShowSpecialPasteOptions: function(specialPasteShowOptions) { var me = this, documentHolderView = me.documentHolder, @@ -2198,7 +2281,7 @@ define([ if (me && me.api) { var props = new Asc.SpecialPasteProps(); props.asc_setProps(Asc.c_oSpecialPasteProps.useTextImport); - props.asc_setAdvancedOptions(new Asc.asc_CCSVAdvancedOptions(encoding, delimiter, delimiterChar)); + props.asc_setAdvancedOptions(new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar)); me.api.asc_SpecialPaste(props); } me._state.lastSpecPasteChecked = item; diff --git a/apps/spreadsheeteditor/main/app/controller/FormulaDialog.js b/apps/spreadsheeteditor/main/app/controller/FormulaDialog.js index 65b3a2ab5..5093269b1 100644 --- a/apps/spreadsheeteditor/main/app/controller/FormulaDialog.js +++ b/apps/spreadsheeteditor/main/app/controller/FormulaDialog.js @@ -43,16 +43,18 @@ define([ 'core', 'spreadsheeteditor/main/app/collection/FormulaGroups', - 'spreadsheeteditor/main/app/view/FormulaDialog' + 'spreadsheeteditor/main/app/view/FormulaDialog', + 'spreadsheeteditor/main/app/view/FormulaTab' ], function () { 'use strict'; SSE.Controllers = SSE.Controllers || {}; - SSE.Controllers.FormulaDialog = Backbone.Controller.extend({ + SSE.Controllers.FormulaDialog = Backbone.Controller.extend(_.extend({ models: [], views: [ - 'FormulaDialog' + 'FormulaDialog', + 'FormulaTab' ], collections: [ 'FormulaGroups' @@ -60,20 +62,60 @@ define([ initialize: function () { var me = this; + me.langJson = {}; + me.langDescJson = {}; + this.addListeners({ 'FileMenu': { 'settings:apply': function() { + if (!me.mode || !me.mode.isEdit) return; + me.needUpdateFormula = true; + + var lang = Common.localStorage.getItem("sse-settings-func-locale"); + Common.Utils.InternalSettings.set("sse-settings-func-locale", lang); + + me.formulasGroups.reset(); + me.reloadTranslations(lang); } + }, + 'FormulaTab': { + 'function:apply': this.applyFunction + }, + 'Toolbar': { + 'function:apply': this.applyFunction, + 'tab:active': this.onTabActive } }); }, + applyFunction: function(func, autocomplete, group) { + if (func) { + if (func.origin === 'more') { + this.showDialog(group); + } else { + this.api.asc_insertFormula(func.name, Asc.c_oAscPopUpSelectorType.Func, !!autocomplete); + !autocomplete && this.updateLast10Formulas(func.origin); + } + } + }, + + setConfig: function(config) { + this.toolbar = config.toolbar; + this.formulaTab = this.createView('FormulaTab', { + toolbar: this.toolbar.toolbar, + formulasGroups: this.formulasGroups + }); + return this; + }, + setApi: function (api) { this.api = api; if (this.formulasGroups && this.api) { - this.loadingFormulas(); + Common.Utils.InternalSettings.set("sse-settings-func-last", Common.localStorage.getItem("sse-settings-func-last")); + + this.reloadTranslations(Common.localStorage.getItem("sse-settings-func-locale") || this.appOptions.lang, true); var me = this; @@ -81,22 +123,17 @@ define([ api : this.api, toolclose : 'hide', formulasGroups : this.formulasGroups, - handler : function (func) { - if (func && me.api) { - me.api.asc_insertFormula(func, Asc.c_oAscPopUpSelectorType.Func); - } - } + handler : _.bind(this.applyFunction, this) }); - this.formulas.on({ 'hide': function () { - if (me.api) { - me.api.asc_enableKeyEvents(true); - } + me.api.asc_enableKeyEvents(true); } }); } + this.formulaTab && this.formulaTab.setApi(this.api); + return this; }, @@ -107,14 +144,78 @@ define([ onLaunch: function () { this.formulasGroups = this.getApplication().getCollection('FormulaGroups'); + + var descriptions = ['Financial', 'Logical', 'TextAndData', 'DateAndTime', 'LookupAndReference', 'Mathematic', 'Cube', 'Database', 'Engineering', 'Information', + 'Statistical', 'Last10']; + + Common.Gateway.on('init', this.loadConfig.bind(this)); }, - showDialog: function () { + loadConfig: function(data) { + this.appOptions = {}; + this.appOptions.lang = data.config.lang; + }, + + reloadTranslations: function (lang, suppressEvent) { + var me = this; + lang = (lang || 'en').split(/[\-_]/)[0].toLowerCase(); + + Common.Utils.InternalSettings.set("sse-settings-func-locale", lang); + if (me.langJson[lang]) { + me.api.asc_setLocalization(me.langJson[lang]); + Common.NotificationCenter.trigger('formula:settings', this); + } else if (lang == 'en') { + me.api.asc_setLocalization(undefined); + Common.NotificationCenter.trigger('formula:settings', this); + } else { + Common.Utils.loadConfig('resources/formula-lang/' + lang + '.json', + function (config) { + if ( config != 'error' ) { + me.langJson[lang] = config; + me.api.asc_setLocalization(config); + Common.NotificationCenter.trigger('formula:settings', this); + } + }); + } + + if (me.langDescJson[lang]) + me.loadingFormulas(me.langDescJson[lang], suppressEvent); + else { + Common.Utils.loadConfig('resources/formula-lang/' + lang + '_desc.json', + function (config) { + if ( config != 'error' ) { + me.langDescJson[lang] = config; + me.loadingFormulas(config, suppressEvent); + } else { + Common.Utils.loadConfig('resources/formula-lang/en_desc.json', + function (config) { + me.langDescJson[lang] = (config != 'error') ? config : null; + me.loadingFormulas(me.langDescJson[lang], suppressEvent); + }); + } + }); + } + }, + + getDescription: function(lang) { + if (!lang) return ''; + lang = lang.toLowerCase() ; + + if (this.langDescJson[lang]) + return this.langDescJson[lang]; + return null; + }, + + showDialog: function (group) { if (this.formulas) { - if (this.needUpdateFormula) - this.updateFormulas(); - this.needUpdateFormula = false; - this.formulas.show(); + if ( this.needUpdateFormula ) { + this.needUpdateFormula = false; + + if (this.formulas.$window) { + this.formulas.fillFormulasGroups(); + } + } + this.formulas.show(group); } }, hideDialog: function () { @@ -123,7 +224,42 @@ define([ } }, - loadingFormulas: function () { + updateLast10Formulas: function(formula) { + var arr = Common.Utils.InternalSettings.get("sse-settings-func-last") || 'SUM;AVERAGE;IF;HYPERLINK;COUNT;MAX;SIN;SUMIF;PMT;STDEV'; + arr = arr.split(';'); + var idx = _.indexOf(arr, formula); + arr.splice((idx<0) ? arr.length-1 : idx, 1); + arr.unshift(formula); + var val = arr.join(';'); + Common.localStorage.setItem("sse-settings-func-last", val); + Common.Utils.InternalSettings.set("sse-settings-func-last", val); + + if (this.formulasGroups) { + var group = this.formulasGroups.findWhere({name : 'Last10'}); + group && group.set('functions', this.loadingLast10Formulas(this.getDescription(Common.Utils.InternalSettings.get("sse-settings-func-locale")))); + this.formulaTab && this.formulaTab.updateRecent(); + } + }, + + loadingLast10Formulas: function(descrarr) { + var arr = (Common.Utils.InternalSettings.get("sse-settings-func-last") || 'SUM;AVERAGE;IF;HYPERLINK;COUNT;MAX;SIN;SUMIF;PMT;STDEV').split(';'), + separator = this.api.asc_getFunctionArgumentSeparator(), + functions = []; + for (var j = 0; j < arr.length; j++) { + var funcname = arr[j]; + functions.push(new SSE.Models.FormulaModel({ + index : j, + group : 'Last10', + name : this.api.asc_getFormulaLocaleName(funcname), + origin: funcname, + args : ((descrarr && descrarr[funcname]) ? descrarr[funcname].a : '').replace(/[,;]/g, separator), + desc : (descrarr && descrarr[funcname]) ? descrarr[funcname].d : '' + })); + } + return functions; + }, + + loadingFormulas: function (descrarr, suppressEvent) { var i = 0, j = 0, ascGroupName, ascFunctions, @@ -135,22 +271,36 @@ define([ info = null, allFunctions = [], allFunctionsGroup = null, + last10FunctionsGroup = null, separator = this.api.asc_getFunctionArgumentSeparator(); if (store) { - var value = SSE.Views.FormulaLang.getDescription(Common.Utils.InternalSettings.get("sse-settings-func-locale")); - - allFunctionsGroup = new SSE.Models.FormulaGroup ({ - name : 'All', + ascGroupName = 'Last10'; + last10FunctionsGroup = new SSE.Models.FormulaGroup ({ + name : ascGroupName, index : index, - store : store + store : store, + caption : this['sCategory' + ascGroupName] || ascGroupName }); + if (last10FunctionsGroup) { + last10FunctionsGroup.set('functions', this.loadingLast10Formulas(descrarr)); + store.push(last10FunctionsGroup); + index += 1; + } + + ascGroupName = 'All'; + allFunctionsGroup = new SSE.Models.FormulaGroup ({ + name : ascGroupName, + index : index, + store : store, + caption : this['sCategory' + ascGroupName] || ascGroupName + }); + if (allFunctionsGroup) { + store.push(allFunctionsGroup); + index += 1; + } if (allFunctionsGroup) { - index += 1; - - store.push(allFunctionsGroup); - info = this.api.asc_getFormulasInfo(); for (i = 0; i < info.length; i += 1) { @@ -160,7 +310,8 @@ define([ formulaGroup = new SSE.Models.FormulaGroup({ name : ascGroupName, index : index, - store : store + store : store, + caption : this['sCategory' + ascGroupName] || ascGroupName }); index += 1; @@ -173,8 +324,9 @@ define([ index : funcInd, group : ascGroupName, name : ascFunctions[j].asc_getLocaleName(), - args : ((value && value[funcname]) ? value[funcname].a : '').replace(/[,;]/g, separator), - desc : (value && value[funcname]) ? value[funcname].d : '' + origin: funcname, + args : ((descrarr && descrarr[funcname]) ? descrarr[funcname].a : '').replace(/[,;]/g, separator), + desc : (descrarr && descrarr[funcname]) ? descrarr[funcname].d : '' }); funcInd += 1; @@ -183,7 +335,7 @@ define([ allFunctions.push(func); } - formulaGroup.set('functions', functions); + formulaGroup.set('functions', _.sortBy(functions, function (model) {return model.get('name'); })); store.push(formulaGroup); } @@ -191,15 +343,29 @@ define([ _.sortBy(allFunctions, function (model) {return model.get('name'); })); } } + (!suppressEvent || this._formulasInited) && this.formulaTab && this.formulaTab.fillFunctions(); }, - updateFormulas: function () { - this.formulasGroups.reset(); - this.loadingFormulas(); - if (this.formulas.$window) { - this.formulas.fillFormulasGroups(); - this.formulas.fillFunctions('All'); + onTabActive: function (tab) { + if ( tab == 'formula' && !this._formulasInited && this.formulaTab) { + this.formulaTab.fillFunctions(); + this._formulasInited = true; } - } - }); + }, + + sCategoryAll: 'All', + sCategoryLast10: '10 last used', + sCategoryLogical: 'Logical', + sCategoryCube: 'Cube', + sCategoryDatabase: 'Database', + sCategoryDateAndTime: 'Date and time', + sCategoryEngineering: 'Engineering', + sCategoryFinancial: 'Financial', + sCategoryInformation: 'Information', + sCategoryLookupAndReference: 'Lookup and reference', + sCategoryMathematic: 'Math and trigonometry', + sCategoryStatistical: 'Statistical', + sCategoryTextAndData: 'Text and data' + + }, SSE.Controllers.FormulaDialog || {})); }); diff --git a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js index d2eb8531c..340faedd8 100644 --- a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js @@ -202,6 +202,12 @@ define([ this.leftMenu.btnChat.hide(); this.leftMenu.btnComments.hide(); } + + if (this.mode.isEdit) { + this.leftMenu.btnSpellcheck.show(); + this.leftMenu.setOptionsPanel('spellcheck', this.getApplication().getController('Spellcheck').getView('Spellcheck')); + } + this.mode.trialMode && this.leftMenu.setDeveloperMode(this.mode.trialMode); /** coauthoring end **/ Common.util.Shortcuts.resumeEvents(); @@ -264,7 +270,7 @@ define([ buttons: ['ok', 'cancel'], callback: _.bind(function(btn){ if (btn == 'ok') { - this.api.asc_DownloadAs(format); + Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.CSV, this.api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format)); menu.hide(); } }, this) @@ -273,7 +279,7 @@ define([ menu.hide(); Common.NotificationCenter.trigger('download:settings', this.leftMenu, format); } else { - this.api.asc_DownloadAs(format); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format)); menu.hide(); } }, @@ -287,7 +293,7 @@ define([ callback: _.bind(function(btn){ if (btn == 'ok') { this.isFromFileDownloadAs = ext; - this.api.asc_DownloadAs(format, true); + Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.CSV, this.api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format, true)); menu.hide(); } }, this) @@ -298,7 +304,7 @@ define([ Common.NotificationCenter.trigger('download:settings', this.leftMenu, format, true); } else { this.isFromFileDownloadAs = ext; - this.api.asc_DownloadAs(format, true); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format, true)); menu.hide(); } }, @@ -315,27 +321,31 @@ define([ defFileName = defFileName.substring(0, idx) + this.isFromFileDownloadAs; } - me._saveCopyDlg = new Common.Views.SaveAsDlg({ - saveFolderUrl: me.mode.saveAsUrl, - saveFileUrl: url, - defFileName: defFileName - }); - me._saveCopyDlg.on('saveaserror', function(obj, err){ - var config = { - closable: false, - title: me.textWarning, - msg: err, - iconCls: 'warn', - buttons: ['ok'], - callback: function(btn){ - Common.NotificationCenter.trigger('edit:complete', me); - } - }; - Common.UI.alert(config); - }).on('close', function(obj){ - me._saveCopyDlg = undefined; - }); - me._saveCopyDlg.show(); + if (me.mode.canRequestSaveAs) { + Common.Gateway.requestSaveAs(url, defFileName); + } else { + me._saveCopyDlg = new Common.Views.SaveAsDlg({ + saveFolderUrl: me.mode.saveAsUrl, + saveFileUrl: url, + defFileName: defFileName + }); + me._saveCopyDlg.on('saveaserror', function(obj, err){ + var config = { + closable: false, + title: me.textWarning, + msg: err, + iconCls: 'warn', + buttons: ['ok'], + callback: function(btn){ + Common.NotificationCenter.trigger('edit:complete', me); + } + }; + Common.UI.alert(config); + }).on('close', function(obj){ + me._saveCopyDlg = undefined; + }); + me._saveCopyDlg.show(); + } } this.isFromFileDownloadAs = false; }, @@ -376,11 +386,6 @@ define([ this.api.asc_setAutoSaveGap(value); } - value = Common.localStorage.getItem("sse-settings-func-locale"); - Common.Utils.InternalSettings.set("sse-settings-func-locale", value); - if (value) value = SSE.Views.FormulaLang.get(value); - if (value!==null) this.api.asc_setLocalization(value); - value = Common.localStorage.getItem("sse-settings-reg-settings"); if (value!==null) this.api.asc_setLocale(parseInt(value)); @@ -390,13 +395,10 @@ define([ }, onCreateNew: function(menu, type) { - if (this.mode.nativeApp === true) { - this.api.asc_openNewDocument(type == 'blank' ? '' : type); - } else { + if ( !Common.Controllers.Desktop.process('create:new') ) { var newDocumentPage = window.open(type == 'blank' ? this.mode.createUrl : type, "_blank"); if (newDocumentPage) newDocumentPage.focus(); } - if (menu) { menu.hide(); } @@ -650,6 +652,7 @@ define([ this.leftMenu.btnChat.setDisabled(true); /** coauthoring end **/ this.leftMenu.btnPlugins.setDisabled(true); + this.leftMenu.btnSpellcheck.setDisabled(true); this.leftMenu.getMenu('file').setMode({isDisconnected: true, enableDownload: !!enableDownload}); if ( this.dlgSearch ) { @@ -848,6 +851,7 @@ define([ this.leftMenu.btnAbout.setDisabled(isRangeSelection); this.leftMenu.btnSearch.setDisabled(isRangeSelection); + this.leftMenu.btnSpellcheck.setDisabled(isRangeSelection); if (this.mode.canPlugins && this.leftMenu.panelPlugins) { this.leftMenu.panelPlugins.setLocked(isRangeSelection); this.leftMenu.panelPlugins.disableControls(isRangeSelection); @@ -859,6 +863,7 @@ define([ this.leftMenu.btnAbout.setDisabled(isEditFormula); this.leftMenu.btnSearch.setDisabled(isEditFormula); + this.leftMenu.btnSpellcheck.setDisabled(isEditFormula); if (this.mode.canPlugins && this.leftMenu.panelPlugins) { this.leftMenu.panelPlugins.setLocked(isEditFormula); this.leftMenu.panelPlugins.disableControls(isEditFormula); diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index d87dcce29..f382175bc 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -54,8 +54,7 @@ define([ 'spreadsheeteditor/main/app/collection/ShapeGroups', 'spreadsheeteditor/main/app/collection/TableTemplates', 'spreadsheeteditor/main/app/collection/EquationGroups', - 'spreadsheeteditor/main/app/controller/FormulaDialog', - 'spreadsheeteditor/main/app/view/FormulaLang' + 'spreadsheeteditor/main/app/controller/FormulaDialog' ], function () { 'use strict'; @@ -133,7 +132,16 @@ define([ 'Y Axis': this.txtYAxis, 'Your text here': this.txtArt, 'Table': this.txtTable, - 'Print_Area': this.txtPrintArea + 'Print_Area': this.txtPrintArea, + 'Confidential': this.txtConfidential, + 'Prepared by ': this.txtPreparedBy + ' ', + 'Page': this.txtPage, + 'Page %1 of %2': this.txtPageOf, + 'Pages': this.txtPages, + 'Date': this.txtDate, + 'Time': this.txtTime, + 'Tab': this.txtTab, + 'File': this.txtFile }; styleNames.forEach(function(item){ translate[item] = me.translationTable[item] = me['txtStyle_' + item.replace(/ /g, '_')] || item; @@ -165,10 +173,12 @@ define([ this.api.asc_registerCallback('asc_onDocumentName', _.bind(this.onDocumentName, this)); this.api.asc_registerCallback('asc_onPrintUrl', _.bind(this.onPrintUrl, this)); this.api.asc_registerCallback('asc_onMeta', _.bind(this.onMeta, this)); + this.api.asc_registerCallback('asc_onSpellCheckInit', _.bind(this.loadLanguages, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); Common.NotificationCenter.on('goback', _.bind(this.goBack, this)); Common.NotificationCenter.on('namedrange:locked', _.bind(this.onNamedRangeLocked, this)); Common.NotificationCenter.on('download:cancel', _.bind(this.onDownloadCancel, this)); + Common.NotificationCenter.on('download:advanced', _.bind(this.onAdvancedOptions, this)); this.stackLongActions = new Common.IrregularStack({ strongCompare : this._compareActionStrong, @@ -181,8 +191,6 @@ define([ // Initialize api gateway this.editorConfig = {}; - this.plugins = undefined; - this.UICustomizePlugins = []; Common.Gateway.on('init', _.bind(this.loadConfig, this)); Common.Gateway.on('showmessage', _.bind(this.onExternalMessage, this)); Common.Gateway.on('opendocument', _.bind(this.loadDocument, this)); @@ -208,11 +216,13 @@ define([ $(document.body).on('blur', 'input, textarea', function(e) { if (me.isAppDisabled === true || me.isFrameClosed) return; - if (!me.isModalShowed && !(me.loadMask && me.loadMask.isVisible())) { + if ((!me.isModalShowed || $('.asc-window.enable-key-events:visible').length>0) && !(me.loadMask && me.loadMask.isVisible()) && !me.getApplication().getController('LeftMenu').getView('LeftMenu').getMenu('file').isVisible()) { if (/form-control/.test(e.target.className)) me.inFormControl = false; if (!e.relatedTarget || - !/area_id/.test(e.target.id) && ($(e.target).parent().find(e.relatedTarget).length<1 || e.target.localName == 'textarea') /* Check if focus in combobox goes from input to it's menu button or menu items, or from comment editing area to Ok/Cancel button */ + !/area_id/.test(e.target.id) + && !(e.target.localName == 'input' && $(e.target).parent().find(e.relatedTarget).length>0) /* Check if focus in combobox goes from input to it's menu button or menu items, or from comment editing area to Ok/Cancel button */ + && !(e.target.localName == 'textarea' && $(e.target).closest('.asc-window').find(e.relatedTarget).length>0) /* Check if focus in comment goes from textarea to it's email menu */ && (e.relatedTarget.localName != 'input' || !/form-control/.test(e.relatedTarget.className)) /* Check if focus goes to text input with class "form-control" */ && (e.relatedTarget.localName != 'textarea' || /area_id/.test(e.relatedTarget.id))) /* Check if focus goes to textarea, but not to "area_id" */ { if (Common.Utils.isIE && e.originalEvent && e.originalEvent.target && /area_id/.test(e.originalEvent.target.id) && (e.originalEvent.target === e.originalEvent.srcElement)) @@ -287,7 +297,7 @@ define([ } }); - me.defaultTitleText = me.defaultTitleText || '{{APP_TITLE_TEXT}}'; + me.defaultTitleText = '{{APP_TITLE_TEXT}}'; me.warnNoLicense = me.warnNoLicense.replace('%1', '{{COMPANY_NAME}}'); me.warnNoLicenseUsers = me.warnNoLicenseUsers.replace('%1', '{{COMPANY_NAME}}'); me.textNoLicenseTitle = me.textNoLicenseTitle.replace('%1', '{{COMPANY_NAME}}'); @@ -300,15 +310,15 @@ define([ this.editorConfig.user = this.appOptions.user = Common.Utils.fillUserInfo(this.editorConfig.user, this.editorConfig.lang, this.textAnonymous); - this.appOptions.nativeApp = this.editorConfig.nativeApp === true; this.appOptions.isDesktopApp = this.editorConfig.targetApp == 'desktop'; - this.appOptions.canCreateNew = !_.isEmpty(this.editorConfig.createUrl) && !this.appOptions.isDesktopApp; - this.appOptions.canOpenRecent = this.editorConfig.nativeApp !== true && this.editorConfig.recent !== undefined && !this.appOptions.isDesktopApp; + this.appOptions.canCreateNew = !_.isEmpty(this.editorConfig.createUrl); + this.appOptions.canOpenRecent = this.editorConfig.recent !== undefined && !this.appOptions.isDesktopApp; this.appOptions.templates = this.editorConfig.templates; this.appOptions.recent = this.editorConfig.recent; this.appOptions.createUrl = this.editorConfig.createUrl; this.appOptions.lang = this.editorConfig.lang; this.appOptions.location = (typeof (this.editorConfig.location) == 'string') ? this.editorConfig.location.toLowerCase() : ''; + this.appOptions.region = (typeof (this.editorConfig.region) == 'string') ? this.editorConfig.region.toLowerCase() : this.editorConfig.region; this.appOptions.canAutosave = false; this.appOptions.canAnalytics = false; this.appOptions.sharingSettingsUrl = this.editorConfig.sharingSettingsUrl; @@ -319,9 +329,12 @@ define([ this.appOptions.customization = this.editorConfig.customization; this.appOptions.canBackToFolder = (this.editorConfig.canBackToFolder!==false) && (typeof (this.editorConfig.customization) == 'object') && (typeof (this.editorConfig.customization.goback) == 'object') && !_.isEmpty(this.editorConfig.customization.goback.url); - this.appOptions.canBack = this.editorConfig.nativeApp !== true && this.appOptions.canBackToFolder === true; + this.appOptions.canBack = this.appOptions.canBackToFolder === true; this.appOptions.canPlugins = false; - this.plugins = this.editorConfig.plugins; + this.appOptions.canRequestUsers = this.editorConfig.canRequestUsers; + this.appOptions.canRequestSendNotify = this.editorConfig.canRequestSendNotify; + this.appOptions.canRequestSaveAs = this.editorConfig.canRequestSaveAs; + this.appOptions.canRequestInsertImage = this.editorConfig.canRequestInsertImage; this.headerView = this.getApplication().getController('Viewport').getView('Common.Views.Header'); this.headerView.setCanBack(this.appOptions.canBackToFolder === true, (this.appOptions.canBackToFolder) ? this.editorConfig.customization.goback.text : '') @@ -331,21 +344,15 @@ define([ if (value!==null) this.api.asc_setLocale(parseInt(value)); else { - this.api.asc_setLocale((this.editorConfig.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(this.editorConfig.lang)) : 0x0409); + value = this.appOptions.region; + value = Common.util.LanguageInfo.getLanguages().hasOwnProperty(value) ? value : Common.util.LanguageInfo.getLocalLanguageCode(value); + if (value!==null) + value = parseInt(value); + else + value = (this.editorConfig.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(this.editorConfig.lang)) : 0x0409; + this.api.asc_setLocale(value); } - value = Common.localStorage.getItem("sse-settings-func-locale"); - if (value===null) { - var lang = ((this.editorConfig.lang) ? this.editorConfig.lang : 'en').split(/[\-\_]/)[0].toLowerCase(); - Common.Utils.InternalSettings.set("sse-settings-func-locale", lang); - if (lang !== 'en') - value = SSE.Views.FormulaLang.get(lang); - } else { - Common.Utils.InternalSettings.set("sse-settings-func-locale", value); - value = SSE.Views.FormulaLang.get(value); - } - if (value) this.api.asc_setLocalization(value); - value = Common.localStorage.getBool("sse-settings-r1c1"); Common.Utils.InternalSettings.set("sse-settings-r1c1", value); this.api.asc_setR1C1Mode(value); @@ -366,7 +373,7 @@ define([ this.permissions = _.extend(this.permissions, data.doc.permissions); var _permissions = $.extend({}, data.doc.permissions), - _options = $.extend({}, data.doc.options, {actions: this.editorConfig.actionLink || {}}); + _options = $.extend({}, data.doc.options, this.editorConfig.actionLink || {}); var _user = new Asc.asc_CUserInfo(); _user.put_Id(this.appOptions.user.id); @@ -447,7 +454,7 @@ define([ if (_format == Asc.c_oAscFileType.PDF || _format == Asc.c_oAscFileType.PDFA) Common.NotificationCenter.trigger('download:settings', this, _format, true); else - this.api.asc_DownloadAs(_format, true); + this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(_format, true)); }, onProcessMouse: function(data) { @@ -505,7 +512,7 @@ define([ if (type === Asc.c_oAscAsyncActionType.BlockInteraction && id == Asc.c_oAscAsyncAction.Open) { Common.Gateway.internalMessage('documentReady', {}); - this.onDocumentReady(); + this.onDocumentContentReady(); } action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.Information}); @@ -626,7 +633,7 @@ define([ } }, - onDocumentReady: function() { + onDocumentContentReady: function() { if (this._isDocReady) return; @@ -693,16 +700,14 @@ define([ leftMenuView = leftmenuController.getView('LeftMenu'), documentHolderView = documentHolderController.getView('DocumentHolder'), chatController = application.getController('Common.Controllers.Chat'), - pluginsController = application.getController('Common.Controllers.Plugins'); + pluginsController = application.getController('Common.Controllers.Plugins'), + spellcheckController = application.getController('Spellcheck'); leftMenuView.getMenu('file').loadDocument({doc:me.appOptions.spreadsheet}); leftmenuController.setMode(me.appOptions).createDelayedElements().setApi(me.api); if (!me.appOptions.isEditMailMerge && !me.appOptions.isEditDiagram) { pluginsController.setApi(me.api); - me.requestPlugins('../../../../plugins.json'); - me.api.asc_registerCallback('asc_onPluginsInit', _.bind(me.updatePluginsList, me)); - me.api.asc_registerCallback('asc_onPluginsReset', _.bind(me.resetPluginsList, me)); } leftMenuView.disableMenu('all',false); @@ -723,6 +728,8 @@ define([ this.formulaInput = celleditorController.getView('CellEditor').$el.find('textarea'); if (me.appOptions.isEdit) { + spellcheckController.setApi(me.api).setMode(me.appOptions); + if (me.appOptions.canAutosave) { value = Common.localStorage.getItem("sse-settings-autosave"); if (value===null && me.appOptions.customization && me.appOptions.customization.autosave===false) @@ -753,6 +760,7 @@ define([ documentHolderView.createDelayedElements(); toolbarController.createDelayedElements(); + me.setLanguages(); if (!me.appOptions.isEditMailMerge && !me.appOptions.isEditDiagram) { var shapes = me.api.asc_getPropertyEditorShapes(); @@ -941,7 +949,7 @@ define([ this.appOptions.canEdit = this.permissions.edit !== false && // can edit (this.editorConfig.canRequestEditRights || this.editorConfig.mode !== 'view'); // if mode=="view" -> canRequestEditRights must be defined this.appOptions.isEdit = (this.appOptions.canLicense || this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) && this.permissions.edit !== false && this.editorConfig.mode !== 'view'; - this.appOptions.canDownload = !this.appOptions.nativeApp && (this.permissions.download !== false); + this.appOptions.canDownload = (this.permissions.download !== false); this.appOptions.canPrint = (this.permissions.print !== false); this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && !(this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge) && (typeof (this.editorConfig.customization) == 'object' && !!this.editorConfig.customization.forcesave); @@ -955,8 +963,7 @@ define([ if (!this.appOptions.isEditDiagram && !this.appOptions.isEditMailMerge) { this.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof this.editorConfig.customization == 'object' || this.editorConfig.plugins); - if (this.appOptions.canBrandingExt) - this.updatePlugins(this.plugins, true); + this.getApplication().getController('Common.Controllers.Plugins').setMode(this.appOptions); } this.applyModeCommonElements(); @@ -982,8 +989,7 @@ define([ statusbarView = app.getController('Statusbar').getView('Statusbar'); if (this.headerView) { - this.headerView.setVisible(!this.appOptions.nativeApp && !this.appOptions.isEditMailMerge && - !this.appOptions.isDesktopApp && !this.appOptions.isEditDiagram); + this.headerView.setVisible(!this.appOptions.isEditMailMerge && !this.appOptions.isDesktopApp && !this.appOptions.isEditDiagram); } viewport && viewport.setMode(this.appOptions, true); @@ -1374,6 +1380,25 @@ define([ config.msg = this.errorNoDataToParse; break; + case Asc.c_oAscError.ID.CannotUngroupError: + config.msg = this.errorCannotUngroup; + break; + + case Asc.c_oAscError.ID.FrmlMaxTextLength: + config.msg = this.errorFrmlMaxTextLength; + break; + + case Asc.c_oAscError.ID.DataValidate: + var icon = errData ? errData.asc_getErrorStyle() : undefined; + if (icon!==undefined) { + config.iconCls = (icon==Asc.c_oAscEDataValidationErrorStyle.Stop) ? 'error' : ((icon==Asc.c_oAscEDataValidationErrorStyle.Information) ? 'info' : 'warn'); + } + errData && errData.asc_getErrorTitle() && (config.title = errData.asc_getErrorTitle()); + config.buttons = ['ok', 'cancel']; + config.msg = errData && errData.asc_getError() ? errData.asc_getError() : this.errorDataValidate; + config.maxwidth = 600; + break; + default: config.msg = (typeof id == 'string') ? id : this.errorDefaultMessage.replace('%1', id); break; @@ -1402,9 +1427,9 @@ define([ } else { Common.Gateway.reportWarning(id, config.msg); - config.title = this.notcriticalErrorTitle; - config.iconCls = 'warn'; - config.buttons = ['ok']; + config.title = config.title || this.notcriticalErrorTitle; + config.iconCls = config.iconCls || 'warn'; + config.buttons = config.buttons || ['ok']; config.callback = _.bind(function(btn){ if (id == Asc.c_oAscError.ID.Warning && btn == 'ok' && this.appOptions.canDownload) { Common.UI.Menu.Manager.hideAll(); @@ -1412,6 +1437,8 @@ define([ } else if (id == Asc.c_oAscError.ID.EditingError) { this.disableEditing(true); Common.NotificationCenter.trigger('api:disconnect', true); // enable download and print + } else if (id == Asc.c_oAscError.ID.DataValidate && btn !== 'ok') { + this.api.asc_closeCellEditor(true); } this._state.lostEditingRights = false; this.onEditComplete(); @@ -1540,6 +1567,7 @@ define([ }, hidePreloader: function() { + var promise; if (!this._state.customizationDone) { this._state.customizationDone = true; if (this.appOptions.customization) { @@ -1551,15 +1579,19 @@ define([ Common.Utils.applyCustomization(this.appOptions.customization, mapCustomizationElements); if (this.appOptions.canBrandingExt) { Common.Utils.applyCustomization(this.appOptions.customization, mapCustomizationExtElements); - Common.Utils.applyCustomizationPlugins(this.UICustomizePlugins); + promise = this.getApplication().getController('Common.Controllers.Plugins').applyUICustomization(); } } this.stackLongActions.pop({id: InitApplication, type: Asc.c_oAscAsyncActionType.BlockInteraction}); Common.NotificationCenter.trigger('layout:changed', 'main'); - $('#loading-mask').hide().remove(); - Common.Controllers.Desktop.process('preloader:hide'); + (promise || (new Promise(function(resolve, reject) { + resolve(); + }))).then(function() { + $('#loading-mask').hide().remove(); + Common.Controllers.Desktop.process('preloader:hide'); + }); }, onDownloadUrl: function(url) { @@ -1607,25 +1639,28 @@ define([ return false; }, - onAdvancedOptions: function(advOptions, mode) { + onAdvancedOptions: function(type, advOptions, mode, formatOptions) { if (this._state.openDlg) return; - var type = advOptions.asc_getOptionId(), - me = this; + var me = this; if (type == Asc.c_oAscAdvancedOptionsID.CSV) { me._state.openDlg = new Common.Views.OpenDialog({ title: Common.Views.OpenDialog.prototype.txtTitle.replace('%1', 'CSV'), closable: (mode==2), // if save settings type: Common.Utils.importTextType.CSV, - preview: advOptions.asc_getOptions().asc_getData(), - codepages: advOptions.asc_getOptions().asc_getCodePages(), - settings: advOptions.asc_getOptions().asc_getRecommendedSettings(), + preview: advOptions.asc_getData(), + codepages: advOptions.asc_getCodePages(), + settings: advOptions.asc_getRecommendedSettings(), api: me.api, handler: function (result, encoding, delimiter, delimiterChar) { me.isShowOpenDialog = false; if (result == 'ok') { if (me && me.api) { - me.api.asc_setAdvancedOptions(type, new Asc.asc_CCSVAdvancedOptions(encoding, delimiter, delimiterChar)); + if (mode==2) { + formatOptions && formatOptions.asc_setAdvancedOptions(new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar)); + me.api.asc_DownloadAs(formatOptions); + } else + me.api.asc_setAdvancedOptions(type, new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar)); me.loadMask && me.loadMask.show(); } } @@ -1743,7 +1778,6 @@ define([ _.each(shapes[index], function(shape, idx){ store.add({ - imageUrl : shape.Image, data : {shapeType: shape.Type}, tip : me['txtShape_' + shape.Type] || (me.textShape + ' ' + (idx+1)), allowSelected : true, @@ -1811,10 +1845,22 @@ define([ Common.Utils.ThemeColor.setColors(colors, standart_colors); if (window.styles_loaded && !this.appOptions.isEditMailMerge && !this.appOptions.isEditDiagram) { this.updateThemeColors(); - this.fillTextArt(this.api.asc_getTextArtPreviews()); + var me = this; + setTimeout(function(){ + me.fillTextArt(me.api.asc_getTextArtPreviews()); + }, 1); } }, + loadLanguages: function(apiLangs) { + this.languages = apiLangs; + window.styles_loaded && this.setLanguages(); + }, + + setLanguages: function() { + this.getApplication().getController('Spellcheck').setLanguages(this.languages); + }, + onInternalCommand: function(data) { if (data) { switch (data.command) { @@ -2021,152 +2067,21 @@ define([ this.iframePrint.style.bottom = "0"; document.body.appendChild(this.iframePrint); this.iframePrint.onload = function() { + try { me.iframePrint.contentWindow.focus(); me.iframePrint.contentWindow.print(); me.iframePrint.contentWindow.blur(); window.focus(); + } catch (e) { + var opts = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF); + opts.asc_setAdvancedOptions(me.getApplication().getController('Print').getPrintParams()); + me.api.asc_DownloadAs(opts); + } }; } if (url) this.iframePrint.src = url; }, - requestPlugins: function(pluginsPath) { // request plugins - if (!pluginsPath) return; - - var config_plugins = (this.plugins && this.plugins.pluginsData && this.plugins.pluginsData.length>0) ? this.updatePlugins(this.plugins, false) : null, // return plugins object - request_plugins = this.updatePlugins( Common.Utils.getConfigJson(pluginsPath), false ); - - this.updatePluginsList({ - autostart: (config_plugins&&config_plugins.autostart ? config_plugins.autostart : []).concat(request_plugins&&request_plugins.autostart ? request_plugins.autostart : []), - pluginsData: (config_plugins ? config_plugins.pluginsData : []).concat(request_plugins ? request_plugins.pluginsData : []) - }, false); - }, - - updatePlugins: function(plugins, uiCustomize) { // plugins from config - if (!plugins) return; - - var pluginsData = (uiCustomize) ? plugins.UIpluginsData : plugins.pluginsData; - if (!pluginsData || pluginsData.length<1) return; - - var arr = []; - pluginsData.forEach(function(item){ - var value = Common.Utils.getConfigJson(item); - if (value) { - value.baseUrl = item.substring(0, item.lastIndexOf("config.json")); - arr.push(value); - } - }); - - if (arr.length>0) { - var autostart = plugins.autostart || plugins.autoStartGuid; - if (typeof (autostart) == 'string') - autostart = [autostart]; - plugins.autoStartGuid && console.warn("Obsolete: The autoStartGuid parameter is deprecated. Please check the documentation for new plugin connection configuration."); - - if (uiCustomize) - this.updatePluginsList({ - autostart: autostart, - pluginsData: arr - }, !!uiCustomize); - else return { - autostart: autostart, - pluginsData: arr - }; - } - }, - - updatePluginsList: function(plugins, uiCustomize) { - var pluginStore = this.getApplication().getCollection('Common.Collections.Plugins'), - isEdit = this.appOptions.isEdit; - if (plugins) { - var arr = [], arrUI = [], - lang = this.appOptions.lang.split(/[\-\_]/)[0]; - plugins.pluginsData.forEach(function(item){ - if (_.find(arr, function(arritem) { - return (arritem.get('baseUrl') == item.baseUrl || arritem.get('guid') == item.guid); - }) || pluginStore.findWhere({baseUrl: item.baseUrl}) || pluginStore.findWhere({guid: item.guid})) - return; - - var variationsArr = [], - pluginVisible = false; - item.variations.forEach(function(itemVar){ - var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, 'cell') && !itemVar.isSystem; - if ( visible ) pluginVisible = true; - - if ( item.isUICustomizer ) { - visible && arrUI.push(item.baseUrl + itemVar.url); - } else { - var model = new Common.Models.PluginVariation(itemVar); - var description = itemVar.description; - if (typeof itemVar.descriptionLocale == 'object') - description = itemVar.descriptionLocale[lang] || itemVar.descriptionLocale['en'] || description || ''; - - _.each(itemVar.buttons, function(b, index){ - if (typeof b.textLocale == 'object') - b.text = b.textLocale[lang] || b.textLocale['en'] || b.text || ''; - b.visible = (isEdit || b.isViewer !== false); - }); - - model.set({ - description: description, - index: variationsArr.length, - url: itemVar.url, - icons: itemVar.icons, - buttons: itemVar.buttons, - visible: visible - }); - - variationsArr.push(model); - } - }); - if (variationsArr.length>0 && !item.isUICustomizer) { - var name = item.name; - if (typeof item.nameLocale == 'object') - name = item.nameLocale[lang] || item.nameLocale['en'] || name || ''; - - arr.push(new Common.Models.Plugin({ - name : name, - guid: item.guid, - baseUrl : item.baseUrl, - variations: variationsArr, - currentVariation: 0, - visible: pluginVisible, - groupName: (item.group) ? item.group.name : '', - groupRank: (item.group) ? item.group.rank : 0 - })); - } - }); - - if (uiCustomize!==false) // from ui customizer in editor config or desktop event - this.UICustomizePlugins = arrUI; - - if ( !uiCustomize && pluginStore) { - arr = pluginStore.models.concat(arr); - arr.sort(function(a, b){ - var rank_a = a.get('groupRank'), - rank_b = b.get('groupRank'); - if (rank_a < rank_b) - return (rank_a==0) ? 1 : -1; - if (rank_a > rank_b) - return (rank_b==0) ? -1 : 1; - return 0; - }); - pluginStore.reset(arr); - this.appOptions.canPlugins = !pluginStore.isEmpty(); - } - } else if (!uiCustomize){ - this.appOptions.canPlugins = false; - } - if (!uiCustomize) this.getApplication().getController('LeftMenu').enablePlugins(); - if (this.appOptions.canPlugins) { - this.getApplication().getController('Common.Controllers.Plugins').setMode(this.appOptions).runAutoStartPlugins(plugins.autostart); - } - }, - - resetPluginsList: function() { - this.getApplication().getCollection('Common.Collections.Plugins').reset(); - }, - leavePageText: 'You have unsaved changes in this document. Click \'Stay on this Page\' then \'Save\' to save them. Click \'Leave this Page\' to discard all the unsaved changes.', criticalErrorTitle: 'Error', notcriticalErrorTitle: 'Warning', @@ -2505,7 +2420,19 @@ define([ txtTable: 'Table', textCustomLoader: 'Please note that according to the terms of the license you are not entitled to change the loader.
      Please contact our Sales Department to get a quote.', errorNoDataToParse: 'No data was selected to parse.', - waitText: 'Please, wait...' + errorCannotUngroup: 'Cannot ungroup. To start an outline, select the detail rows or columns and group them.', + errorFrmlMaxTextLength: 'Text values in formulas are limited to 255 characters.
      Use the CONCATENATE function or concatenation operator (&)', + waitText: 'Please, wait...', + errorDataValidate: 'The value you entered is not valid.
      A user has restricted values that can be entered into this cell.', + txtConfidential: 'Confidential', + txtPreparedBy: 'Prepared by', + txtPage: 'Page', + txtPageOf: 'Page %1 of %2', + txtPages: 'Pages', + txtDate: 'Date', + txtTime: 'Time', + txtTab: 'Tab', + txtFile: 'File' } })(), SSE.Controllers.Main || {})) }); diff --git a/apps/spreadsheeteditor/main/app/controller/PivotTable.js b/apps/spreadsheeteditor/main/app/controller/PivotTable.js index f31ff7be5..2e8e33f82 100644 --- a/apps/spreadsheeteditor/main/app/controller/PivotTable.js +++ b/apps/spreadsheeteditor/main/app/controller/PivotTable.js @@ -274,7 +274,7 @@ define([ if (this._isTemplatesChanged) { if (rec) - view.pivotStyles.fillComboView(view.pivotStyles.menuPicker.getSelectedRec()[0],true); + view.pivotStyles.fillComboView(view.pivotStyles.menuPicker.getSelectedRec(),true); else view.pivotStyles.fillComboView(view.pivotStyles.menuPicker.store.at(0), true); } diff --git a/apps/spreadsheeteditor/main/app/controller/Print.js b/apps/spreadsheeteditor/main/app/controller/Print.js index af6b5ca05..df38ffdea 100644 --- a/apps/spreadsheeteditor/main/app/controller/Print.js +++ b/apps/spreadsheeteditor/main/app/controller/Print.js @@ -266,10 +266,15 @@ define([ this.adjPrintParams.asc_setIgnorePrintArea(this.printSettingsDlg.getIgnorePrintArea()); Common.localStorage.setItem("sse-print-settings-range", printtype); - if ( this.printSettingsDlg.type=='print' ) - this.api.asc_Print(this.adjPrintParams, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); - else - this.api.asc_DownloadAs(this.downloadFormat, this.asUrl, this.adjPrintParams); + if ( this.printSettingsDlg.type=='print' ) { + var opts = new Asc.asc_CDownloadOptions(null, Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); + opts.asc_setAdvancedOptions(this.adjPrintParams); + this.api.asc_Print(opts); + } else { + var opts = new Asc.asc_CDownloadOptions(this.downloadFormat, this.asUrl); + opts.asc_setAdvancedOptions(this.adjPrintParams); + this.api.asc_DownloadAs(opts); + } Common.component.Analytics.trackEvent((this.printSettingsDlg.type=='print') ? 'Print' : 'DownloadAs'); Common.component.Analytics.trackEvent('ToolBar', (this.printSettingsDlg.type=='print') ? 'Print' : 'DownloadAs'); Common.NotificationCenter.trigger('edit:complete', view); @@ -348,7 +353,11 @@ define([ this._changedProps[panel.cmbSheet.getValue()] = this.getPageOptions(panel); } }, - + + getPrintParams: function() { + return this.adjPrintParams; + }, + warnCheckMargings: 'Margins are incorrect', strAllSheets: 'All Sheets', textWarning: 'Warning', diff --git a/apps/spreadsheeteditor/main/app/controller/Spellcheck.js b/apps/spreadsheeteditor/main/app/controller/Spellcheck.js new file mode 100644 index 000000000..4abcbbb8a --- /dev/null +++ b/apps/spreadsheeteditor/main/app/controller/Spellcheck.js @@ -0,0 +1,254 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * +*/ +/** + * User: Julia.Radzhabova + * Date: 30.07.19 + */ + +define([ + 'core', + 'spreadsheeteditor/main/app/view/Spellcheck' +], function () { + 'use strict'; + + SSE.Controllers.Spellcheck = Backbone.Controller.extend(_.extend({ + models: [], + collections: [ + ], + views: [ + 'Spellcheck' + ], + + initialize: function() { + var me = this; + this.addListeners({ + 'Spellcheck': { + 'show': function() { + me._initSettings && me.loadLanguages(); + me.onClickNext(); + }, + 'hide': function() { + } + } + }); + }, + + events: function() { + }, + + onLaunch: function() { + this.panelSpellcheck= this.createView('Spellcheck', { + }); + this.panelSpellcheck.on('render:after', _.bind(this.onAfterRender, this)); + this._isDisabled = false; + this._initSettings = true; + }, + + setApi: function(api) { + this.api = api; + this.api.asc_registerCallback('asc_onSpellCheckVariantsFound', _.bind(this.onSpellCheckVariantsFound, this)); + this.api.asc_registerCallback('asc_onEditCell', _.bind(this.onApiEditCell, this)); + return this; + }, + + setMode: function(mode) { + this.mode = mode; + if (this.panelSpellcheck) { + this.panelSpellcheck.btnToDictionary.setVisible(mode.isDesktopApp); + } + return this; + }, + + onAfterRender: function(panelSpellcheck) { + panelSpellcheck.buttonNext.on('click', _.bind(this.onClickNext, this)); + panelSpellcheck.btnToDictionary.on('click', _.bind(this.onDictionary, this)); + panelSpellcheck.cmbDictionaryLanguage.on('selected', _.bind(this.onSelectLanguage, this)); + panelSpellcheck.btnChange.on('click', _.bind(this.onClickChange, this)); + panelSpellcheck.btnIgnore.on('click', _.bind(this.onClickIgnore, this)); + panelSpellcheck.btnChange.menu.on('item:click', _.bind(this.onClickChangeMenu, this)); + panelSpellcheck.btnIgnore.menu.on('item:click', _.bind(this.onClickIgnoreMenu, this)); + }, + + onClickNext: function() { + if (this.api) { + this.api.asc_nextWord(); + } + }, + + onDictionary: function() { + if (this.api) { + var str = this.panelSpellcheck.currentWord.getValue(); + str && this.api.asc_spellCheckAddToDictionary(str); + } + }, + + SetDisabled: function(state) { + this._isDisabled = state; + }, + + setLanguages: function (array) { + this.languages = array; + this._initSettings = true; + }, + + loadLanguages: function () { + var value = Common.localStorage.getItem("sse-spellcheck-locale"); + if (value) + value = parseInt(value); + else + value = this.mode.lang ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(this.mode.lang)) : 0x0409; + + var combo = this.panelSpellcheck.cmbDictionaryLanguage; + if (this.languages && this.languages.length>0) { + var langs = [], info, + allLangs = Common.util.LanguageInfo.getLanguages(); + this.languages.forEach(function (code) { + code = parseInt(code); + if (allLangs.hasOwnProperty(code)) { + info = allLangs[code]; + langs.push({ + displayValue: info[1], + shortName: info[0], + value: code + }); + } + }); + langs.sort(function(a, b){ + if (a.shortName < b.shortName) return -1; + if (a.shortName > b.shortName) return 1; + return 0; + }); + combo.setData(langs); + var item = combo.store.findWhere({value: value}); + if (!item && allLangs[value]) { + value = allLangs[value][0].split(/[\-\_]/)[0]; + item = combo.store.find(function(model){ + return model.get('shortName').indexOf(value)==0; + }); + } + combo.setValue(item ? item.get('value') : langs[0].value); + value = combo.getValue(); + } else { + combo.setValue(Common.util.LanguageInfo.getLocalLanguageName(value)[1]); + combo.setDisabled(true); + } + this.api.asc_setDefaultLanguage(value); + this._initSettings = false; + }, + + onSelectLanguage: function (combo, record) { + var lang = record.value; + if (this.api && lang) { + this.api.asc_setDefaultLanguage(lang); + Common.localStorage.setItem("sse-spellcheck-locale", this.panelSpellcheck.cmbDictionaryLanguage.getValue()); + } + }, + + onClickChange: function (btn, e) { + if (this.api) { + var rec = this.panelSpellcheck.suggestionList.getSelectedRec(); + rec && this.api.asc_replaceMisspelledWord(rec.get('value'), this._currentSpellObj); + } + }, + + onClickChangeMenu: function (menu, item) { + if (this.api) { + var rec = this.panelSpellcheck.suggestionList.getSelectedRec(); + if (item.value == 0) { + rec && this.api.asc_replaceMisspelledWord(rec.get('value'), this._currentSpellObj); + } else if (item.value == 1) { + rec && this.api.asc_replaceMisspelledWord(rec.get('value'), this._currentSpellObj, true); + } + } + }, + + onClickIgnore: function () { + if (this.api) { + this.api.asc_ignoreMisspelledWord(this._currentSpellObj, false) + } + }, + + onClickIgnoreMenu: function (menu, item) { + if (this.api) { + if (item.value == 0) { + this.api.asc_ignoreMisspelledWord(this._currentSpellObj, false); + } else if (item.value == 1) { + this.api.asc_ignoreMisspelledWord(this._currentSpellObj, true); + } + } + }, + + onSpellCheckVariantsFound: function (property) { + this._currentSpellObj = property; + + var arr = [], + word; + if (property) { + word = property.get_Word(); + var variants = property.get_Variants(); + variants && variants.forEach(function (item) { + var rec = new Common.UI.DataViewModel(); + rec.set({ + value: item + }); + arr.push(rec); + }); + } + var disabled = this.api.isCellEdited; + this.panelSpellcheck.currentWord.setValue(word || ''); + this.panelSpellcheck.suggestionList.store.reset(arr); + (arr.length>0) && this.panelSpellcheck.suggestionList.selectByIndex(0); + this.panelSpellcheck.currentWord.setDisabled(!word || disabled); + this.panelSpellcheck.btnChange.setDisabled(arr.length<1 || disabled); + this.panelSpellcheck.btnIgnore.setDisabled(!word || disabled); + this.panelSpellcheck.btnToDictionary.setDisabled(!word || disabled); + this.panelSpellcheck.lblComplete.toggleClass('hidden', !property || !!word); + this.panelSpellcheck.buttonNext.setDisabled(!this.panelSpellcheck.lblComplete.hasClass('hidden')); + }, + + onApiEditCell: function(state) { + if (state == Asc.c_oAscCellEditorState.editEnd) { + this.panelSpellcheck.buttonNext.setDisabled(!this.panelSpellcheck.lblComplete.hasClass('hidden')); + this.panelSpellcheck.cmbDictionaryLanguage.setDisabled(false); + } else { + this.panelSpellcheck.buttonNext.setDisabled(true); + this.panelSpellcheck.currentWord.setDisabled(true); + this.panelSpellcheck.btnChange.setDisabled(true); + this.panelSpellcheck.btnIgnore.setDisabled(true); + this.panelSpellcheck.btnToDictionary.setDisabled(true); + this.panelSpellcheck.cmbDictionaryLanguage.setDisabled(true); + } + } + + }, SSE.Controllers.Spellcheck || {})); +}); diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index 697d55558..3ca475bb1 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -54,7 +54,8 @@ define([ 'spreadsheeteditor/main/app/view/NamedRangePasteDlg', 'spreadsheeteditor/main/app/view/NameManagerDlg', 'spreadsheeteditor/main/app/view/FormatSettingsDialog', - 'spreadsheeteditor/main/app/view/PageMarginsDialog' + 'spreadsheeteditor/main/app/view/PageMarginsDialog', + 'spreadsheeteditor/main/app/view/HeaderFooterDialog' ], function () { 'use strict'; SSE.Controllers.Toolbar = Backbone.Controller.extend(_.extend({ @@ -78,9 +79,6 @@ define([ 'Statusbar': { 'sheet:changed': _.bind(this.onApiSheetChanged, this) }, - 'LeftMenu': { - 'settings:apply': _.bind(this.applyFormulaSettings, this) - }, 'Common.Views.Header': { 'toolbar:setcompact': this.onChangeViewMode.bind(this), 'print': function (opts) { @@ -115,14 +113,20 @@ define([ if (_format == Asc.c_oAscFileType.PDF || _format == Asc.c_oAscFileType.PDFA) Common.NotificationCenter.trigger('download:settings', this.toolbar, _format); else - _main.api.asc_DownloadAs(_format); + _main.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(_format)); }, 'go:editor': function() { Common.Gateway.requestEditRights(); } + }, + 'DataTab': { + 'data:sort': this.onSortType, + 'data:setfilter': this.onAutoFilter, + 'data:clearfilter': this.onClearFilter } }); Common.NotificationCenter.on('page:settings', _.bind(this.onApiSheetChanged, this)); + Common.NotificationCenter.on('formula:settings', _.bind(this.applyFormulaSettings, this)); this.editMode = true; this._isAddingShape = false; @@ -307,20 +311,13 @@ define([ toolbar.btnAlignBottom.on('click', _.bind(this.onVerticalAlign, this, Asc.c_oAscVAlign.Bottom)); toolbar.btnWrap.on('click', _.bind(this.onWrap, this)); toolbar.btnTextOrient.menu.on('item:click', _.bind(this.onTextOrientationMenu, this)); + toolbar.btnInsertTable.on('click', _.bind(this.onBtnInsertTableClick, this)); toolbar.btnInsertImage.menu.on('item:click', _.bind(this.onInsertImageMenu, this)); toolbar.btnInsertHyperlink.on('click', _.bind(this.onHyperlink, this)); toolbar.mnuInsertChartPicker.on('item:click', _.bind(this.onSelectChart, this)); toolbar.btnInsertText.on('click', _.bind(this.onBtnInsertTextClick, this)); toolbar.btnInsertShape.menu.on('hide:after', _.bind(this.onInsertShapeHide, this)); toolbar.btnInsertEquation.on('click', _.bind(this.onInsertEquationClick, this)); - toolbar.btnSortDown.on('click', _.bind(this.onSortType, this, Asc.c_oAscSortOptions.Ascending)); - toolbar.btnSortUp.on('click', _.bind(this.onSortType, this, Asc.c_oAscSortOptions.Descending)); - toolbar.mnuitemSortAZ.on('click', _.bind(this.onSortType, this, Asc.c_oAscSortOptions.Ascending)); - toolbar.mnuitemSortZA.on('click', _.bind(this.onSortType, this, Asc.c_oAscSortOptions.Descending)); - toolbar.btnSetAutofilter.on('click', _.bind(this.onAutoFilter, this)); - toolbar.mnuitemAutoFilter.on('click', _.bind(this.onAutoFilter, this)); - toolbar.btnClearAutofilter.on('click', _.bind(this.onClearFilter, this)); - toolbar.mnuitemClearFilter.on('click', _.bind(this.onClearFilter, this)); toolbar.btnTableTemplate.menu.on('show:after', _.bind(this.onTableTplMenuOpen, this)); toolbar.btnPercentStyle.on('click', _.bind(this.onNumberFormat, this)); toolbar.btnCurrencyStyle.on('click', _.bind(this.onNumberFormat, this)); @@ -335,6 +332,7 @@ define([ toolbar.btnCopyStyle.on('toggle', _.bind(this.onCopyStyleToggle, this)); toolbar.btnDeleteCell.menu.on('item:click', _.bind(this.onCellDeleteMenu, this)); toolbar.btnColorSchemas.menu.on('item:click', _.bind(this.onColorSchemaClick, this)); + toolbar.btnColorSchemas.menu.on('show:after', _.bind(this.onColorSchemaShow, this)); toolbar.cmbFontName.on('selected', _.bind(this.onFontNameSelect, this)); toolbar.cmbFontName.on('show:after', _.bind(this.onComboOpen, this, true)); toolbar.cmbFontName.on('hide:after', _.bind(this.onHideMenus, this)); @@ -367,6 +365,8 @@ define([ toolbar.btnImgAlign.menu.on('item:click', _.bind(this.onImgAlignSelect, this)); toolbar.btnImgForward.on('click', this.onImgArrangeSelect.bind(this, 'forward')); toolbar.btnImgBackward.on('click', this.onImgArrangeSelect.bind(this, 'backward')); + toolbar.btnEditHeader.on('click', _.bind(this.onEditHeaderClick, this)); + Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); this.onSetupCopyStyleButton(); } @@ -387,6 +387,7 @@ define([ Common.NotificationCenter.on('api:disconnect', _.bind(this.onApiCoAuthoringDisconnect, this)); this.api.asc_registerCallback('asc_onLockDefNameManager', _.bind(this.onLockDefNameManager, this)); this.api.asc_registerCallback('asc_onZoomChanged', _.bind(this.onApiZoomChange, this)); + Common.NotificationCenter.on('fonts:change', _.bind(this.onApiChangeFont, this)); }, // onNewDocument: function(btn, e) { @@ -403,6 +404,10 @@ define([ // Common.component.Analytics.trackEvent('ToolBar', 'Open Document'); // }, + onApiChangeFont: function(font) { + !this.getApplication().getController('Main').isModalShowed && this.toolbar.cmbFontName.onApiChangeFont(font); + }, + onContextMenu: function() { this.toolbar.collapse(); }, @@ -818,6 +823,13 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Text orientation'); }, + onBtnInsertTableClick: function(btn, e) { + if (this.api) + this._setTableFormat(this.api.asc_getDefaultTableStyle()); + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + Common.component.Analytics.trackEvent('ToolBar', 'Table'); + }, + onInsertImageMenu: function(menu, item, e) { if (item.value === 'file') { this.toolbar.fireEvent('insertimage', this.toolbar); @@ -852,14 +864,23 @@ define([ } })).show(); } else if (item.value === 'storage') { - var me = this; - (new Common.Views.SelectFileDlg({ - fileChoiceUrl: me.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "").replace("{documentType}", "ImagesOnly") - })).on('selectfile', function(obj, file){ - me.toolbar.fireEvent('insertimage', me.toolbar); - me.api.asc_addImageDrawingObject(file.url, undefined, true);// for loading from storage; - Common.component.Analytics.trackEvent('ToolBar', 'Image'); - }).show(); + if (this.toolbar.mode.canRequestInsertImage) { + Common.Gateway.requestInsertImage(); + } else { + (new Common.Views.SelectFileDlg({ + fileChoiceUrl: this.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "").replace("{documentType}", "ImagesOnly") + })).on('selectfile', function(obj, file){ + me.insertImage(file); + }).show(); + } + } + }, + + insertImage: function(data) { + if (data && data.url) { + this.toolbar.fireEvent('insertimage', this.toolbar); + this.api.asc_addImageDrawingObject(data.url, undefined, data.token);// for loading from storage + Common.component.Analytics.trackEvent('ToolBar', 'Image'); } }, @@ -1079,13 +1100,30 @@ define([ onNumberFormatMenu: function(menu, item) { if (this.api) { - var info = new Asc.asc_CFormatCellsInfo(); - info.asc_setType(Asc.c_oAscNumFormatType.Accounting); - info.asc_setSeparator(false); - info.asc_setSymbol(item.value); - var format = this.api.asc_getFormatCells(info); - if (format && format.length>0) - this.api.asc_setCellFormat(format[0]); + if (item.value == -1) { + // show more formats + if (this._state.numformatinfo && this._state.numformatinfo.asc_getType()==Asc.c_oAscNumFormatType.Accounting) + this.onCustomNumberFormat(); + else { + var value = this.api.asc_getLocale(); + (!value) && (value = ((this.toolbar.mode.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(this.toolbar.mode.lang)) : 0x0409)); + + var info = new Asc.asc_CFormatCellsInfo(); + info.asc_setType(Asc.c_oAscNumFormatType.Accounting); + info.asc_setSeparator(false); + info.asc_setSymbol(value); + var format = this.api.asc_getFormatCells(info); + this.onCustomNumberFormat((format && format.length>0) ? format[0] : undefined, info); + } + } else { + var info = new Asc.asc_CFormatCellsInfo(); + info.asc_setType(Asc.c_oAscNumFormatType.Accounting); + info.asc_setSeparator(false); + info.asc_setSymbol(item.value); + var format = this.api.asc_getFormatCells(info); + if (format && format.length>0) + this.api.asc_setCellFormat(format[0]); + } } Common.NotificationCenter.trigger('edit:complete', this.toolbar); @@ -1103,7 +1141,7 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Number Format'); }, - onCustomNumberFormat: function() { + onCustomNumberFormat: function(format, formatInfo) { var me = this, value = me.api.asc_getLocale(); (!value) && (value = ((me.toolbar.mode.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(me.toolbar.mode.lang)) : 0x0409)); @@ -1116,7 +1154,7 @@ define([ } Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, - props : {format: me._state.numformat, formatInfo: me._state.numformatinfo, langId: value} + props : {format: format ? format : me._state.numformat, formatInfo: formatInfo ? formatInfo : me._state.numformatinfo, langId: value} })).show(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Number Format'); @@ -1172,10 +1210,8 @@ define([ controller.showDialog(); } } else { - item.value = item.value || 'SUM'; - - this.api.asc_insertFormula(this.api.asc_getFormulaLocaleName(item.value), Asc.c_oAscPopUpSelectorType.Func, true); + this.toolbar.fireEvent('function:apply', [{name: this.api.asc_getFormulaLocaleName(item.value), origin: item.value}, true]); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Insert formula'); @@ -1305,6 +1341,14 @@ define([ Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, + onColorSchemaShow: function(menu) { + if (this.api) { + var value = this.api.asc_GetCurrentColorSchemeName(); + var item = _.find(menu.items, function(item) { return item.value == value; }); + (item) ? item.setChecked(true) : menu.clearAll(); + } + }, + onComboBlur: function() { Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, @@ -1445,10 +1489,7 @@ define([ formattableinfo = cellinfo.asc_getFormatTableInfo(); filterinfo = (filterinfo) ? filterinfo.asc_getIsAutoFilter() : null; if (filterinfo!==null && !formattableinfo) { - if (_.isUndefined(me.toolbar.mnuTableTemplatePicker)) - me.onApiInitTableTemplates(me.api.asc_getTablePictures(formattableinfo)); - var store = me.getCollection('TableTemplates'); - me._setTableFormat(store.at(23).get('name')); + me._setTableFormat(me.api.asc_getDefaultTableStyle()); } } @@ -1529,9 +1570,7 @@ define([ picker.on('item:click', function(picker, item, record) { if (me.api) { me._state.tablestylename = null; - if (!record) - record = picker.store.at(23); - me._setTableFormat(record.get('name')); + me._setTableFormat(record ? record.get('name') : me.api.asc_getDefaultTableStyle()); Common.NotificationCenter.trigger('edit:complete', me.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Table Templates'); @@ -1612,8 +1651,7 @@ define([ listStyles.menuPicker.store.reset([]); // remove all var mainController = this.getApplication().getController('Main'); - var merged_array = styles.asc_getDocStyles().concat(styles.asc_getDefaultStyles()); - _.each(merged_array, function(style){ + _.each(styles, function(style){ listStyles.menuPicker.store.add({ imageUrl: style.asc_getImage(), name : style.asc_getName(), @@ -1660,6 +1698,8 @@ define([ }, onApiEditCell: function(state) { + if ($('.asc-window.enable-key-events:visible').length>0) return; + var toolbar = this.toolbar; if (toolbar.mode.isEditDiagram || toolbar.mode.isEditMailMerge) { is_cell_edited = (state == Asc.c_oAscCellEditorState.editStart); @@ -1672,7 +1712,6 @@ define([ toolbar.btnClearStyle.menu.items[2], toolbar.btnClearStyle.menu.items[3], toolbar.btnClearStyle.menu.items[4], - toolbar.mnuitemClearFilter, toolbar.btnNamedRange.menu.items[0], toolbar.btnNamedRange.menu.items[1] ], @@ -1698,7 +1737,7 @@ define([ toolbar.lockToolbar(SSE.enumLock.editFormula, is_formula, { array: [toolbar.cmbFontName, toolbar.cmbFontSize, toolbar.btnIncFontSize, toolbar.btnDecFontSize, toolbar.btnBold, toolbar.btnItalic, toolbar.btnUnderline, toolbar.btnStrikeout, toolbar.btnSubscript, toolbar.btnTextColor]}); - toolbar.lockToolbar(SSE.enumLock.editText, is_text, {array:[toolbar.btnInsertFormula]}); + toolbar.lockToolbar(SSE.enumLock.editText, is_text, {array: [toolbar.btnInsertFormula].concat(toolbar.btnsFormula)}); } this._state.coauthdisable = undefined; this._state.selection_type = undefined; @@ -1795,7 +1834,7 @@ define([ }, onApiEditorSelectionChanged: function(fontobj) { - if (!this.editMode) return; + if (!this.editMode || $('.asc-window.enable-key-events:visible').length>0) return; var toolbar = this.toolbar, val; @@ -1901,7 +1940,7 @@ define([ }, onApiSelectionChanged: function(info) { - if (!this.editMode) return; + if (!this.editMode || $('.asc-window.enable-key-events:visible').length>0) return; if ( this.toolbar.mode.isEditDiagram ) return this.onApiSelectionChanged_DiagramEditor(info); else if ( this.toolbar.mode.isEditMailMerge ) @@ -2165,7 +2204,7 @@ define([ need_disable = this._state.controlsdisabled.filters || formatTableInfo!==null || filterInfo && filterInfo.asc_getIsAutoFilter()===null; // (need_disable !== toolbar.btnMerge.isDisabled()) && toolbar.btnMerge.setDisabled(need_disable); - toolbar.lockToolbar(SSE.enumLock.ruleMerge, need_disable, {array:[toolbar.btnMerge]}); + toolbar.lockToolbar(SSE.enumLock.ruleMerge, need_disable, {array:[toolbar.btnMerge, toolbar.btnInsertTable]}); val = info.asc_getFlags().asc_getMerge(); if (this._state.merge !== val) { @@ -2185,14 +2224,12 @@ define([ val = (filterInfo) ? filterInfo.asc_getIsAutoFilter() : null; if (this._state.filter !== val) { - toolbar.btnSetAutofilter.toggle(val===true, true); - toolbar.mnuitemAutoFilter.setChecked(val===true, true); + toolbar.btnsSetAutofilter.toggle(val===true, true); this._state.filter = val; } need_disable = this._state.controlsdisabled.filters || (val===null); toolbar.lockToolbar(SSE.enumLock.ruleFilter, need_disable, - { array: [toolbar.btnSortDown, toolbar.btnSortUp, toolbar.mnuitemSortAZ, toolbar.mnuitemSortZA, - toolbar.btnTableTemplate,toolbar.btnSetAutofilter,toolbar.mnuitemAutoFilter,toolbar.btnAutofilter] }); + { array: toolbar.btnsSetAutofilter.concat(toolbar.btnsSortDown, toolbar.btnsSortUp, toolbar.btnTableTemplate, toolbar.btnInsertTable) }); val = (formatTableInfo) ? formatTableInfo.asc_getTableStyleName() : null; if (this._state.tablestylename !== val && this.toolbar.mnuTableTemplatePicker) { @@ -2207,7 +2244,7 @@ define([ } need_disable = this._state.controlsdisabled.filters || !filterInfo || (filterInfo.asc_getIsApplyAutoFilter()!==true); - toolbar.lockToolbar(SSE.enumLock.ruleDelFilter, need_disable, {array:[toolbar.btnClearAutofilter,toolbar.mnuitemClearFilter]}); + toolbar.lockToolbar(SSE.enumLock.ruleDelFilter, need_disable, {array: toolbar.btnsClearAutofilter}); var old_name = this._state.tablename; this._state.tablename = (formatTableInfo) ? formatTableInfo.asc_getTableName() : undefined; @@ -2219,14 +2256,14 @@ define([ this.getApplication().getController('Statusbar').onApiFilterInfo(!need_disable); this._state.multiselect = info.asc_getFlags().asc_getMultiselect(); - toolbar.lockToolbar(SSE.enumLock.multiselect, this._state.multiselect, { array: [toolbar.btnTableTemplate, toolbar.btnInsertHyperlink]}); + toolbar.lockToolbar(SSE.enumLock.multiselect, this._state.multiselect, { array: [toolbar.btnTableTemplate, toolbar.btnInsertHyperlink, toolbar.btnInsertTable]}); this._state.inpivot = !!info.asc_getPivotTableInfo(); - toolbar.lockToolbar(SSE.enumLock.editPivot, this._state.inpivot, { array: [toolbar.btnMerge, toolbar.btnInsertHyperlink, toolbar.btnSetAutofilter, toolbar.btnClearAutofilter, toolbar.btnSortDown, toolbar.btnSortUp, toolbar.btnAutofilter]}); + toolbar.lockToolbar(SSE.enumLock.editPivot, this._state.inpivot, { array: toolbar.btnsSetAutofilter.concat(toolbar.btnsClearAutofilter, toolbar.btnsSortDown, toolbar.btnsSortUp, toolbar.btnMerge, toolbar.btnInsertHyperlink, toolbar.btnInsertTable)}); need_disable = !this.appConfig.canModifyFilter; - toolbar.lockToolbar(SSE.enumLock.cantModifyFilter, need_disable, { array: [toolbar.btnSortDown, toolbar.btnSortUp, toolbar.mnuitemSortAZ, toolbar.mnuitemSortZA, toolbar.btnSetAutofilter, - toolbar.btnAutofilter, toolbar.btnTableTemplate, toolbar.btnClearStyle.menu.items[0], toolbar.btnClearStyle.menu.items[2] ]}); + toolbar.lockToolbar(SSE.enumLock.cantModifyFilter, need_disable, { array: toolbar.btnsSetAutofilter.concat(toolbar.btnsSortDown, toolbar.btnsSortUp, toolbar.btnTableTemplate, toolbar.btnClearStyle.menu.items[0], toolbar.btnClearStyle.menu.items[2], + toolbar.btnInsertTable)}); } @@ -2306,6 +2343,8 @@ define([ toolbar.lockToolbar(SSE.enumLock.commentLock, (selectionType == Asc.c_oAscSelectionType.RangeCells) && (info.asc_getComments().length>0 || info.asc_getLocked()), { array: this.btnsComment }); + + toolbar.lockToolbar(SSE.enumLock.headerLock, info.asc_getLockedHeaderFooter(), {array: [this.toolbar.btnEditHeader]}); }, onApiSelectionChanged_DiagramEditor: function(info) { @@ -2417,16 +2456,15 @@ define([ val = filterInfo ? filterInfo.asc_getIsAutoFilter() : null; if ( this._state.filter !== val ) { me.toolbar.btnSetAutofilter.toggle(val===true, true); - // toolbar.mnuitemAutoFilter.setChecked(val===true, true); this._state.filter = val; } need_disable = this._state.controlsdisabled.filters || (val===null); me.toolbar.lockToolbar(SSE.enumLock.ruleFilter, need_disable, - { array: [me.toolbar.btnSortDown, me.toolbar.btnSortUp, me.toolbar.btnSetAutofilter] }); + { array: [me.toolbar.btnSetAutofilter, me.toolbar.btnSortDown, me.toolbar.btnSortUp] }); need_disable = this._state.controlsdisabled.filters || !filterInfo || (filterInfo.asc_getIsApplyAutoFilter()!==true); - me.toolbar.lockToolbar(SSE.enumLock.ruleDelFilter, need_disable, {array:[me.toolbar.btnClearAutofilter]}); + me.toolbar.lockToolbar(SSE.enumLock.ruleDelFilter, need_disable, {array: [me.toolbar.btnClearAutofilter]}); } }, @@ -2544,7 +2582,7 @@ define([ store: shapeGroup.get('groupStore'), parentMenu: menuItem.menu, showLast: false, - itemTemplate: _.template('
      ') + itemTemplate: _.template('
      \">
      ') }); shapePicker.on('item:click', function(picker, item, record, e) { @@ -2875,11 +2913,7 @@ define([ toolbar.btnClearStyle.menu.items[1], toolbar.btnClearStyle.menu.items[2], toolbar.btnClearStyle.menu.items[3], - toolbar.btnClearStyle.menu.items[4], - toolbar.mnuitemSortAZ, - toolbar.mnuitemSortZA, - toolbar.mnuitemAutoFilter, - toolbar.mnuitemClearFilter + toolbar.btnClearStyle.menu.items[4] ], merge: true, clear: [_set.selImage, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.coAuth] @@ -3097,11 +3131,27 @@ define([ me.toolbar.setApi(me.api); if ( !config.isEditDiagram && !config.isEditMailMerge ) { + var datatab = me.getApplication().getController('DataTab'); + datatab.setApi(me.api).setConfig({toolbar: me}); + + datatab = datatab.getView('DataTab'); + Array.prototype.push.apply(me.toolbar.lockControls, datatab.getButtons()); + me.toolbar.btnsSortDown = datatab.getButtons('sort-down'); + me.toolbar.btnsSortUp = datatab.getButtons('sort-up'); + me.toolbar.btnsSetAutofilter = datatab.getButtons('set-filter'); + me.toolbar.btnsClearAutofilter = datatab.getButtons('clear-filter'); + + var formulatab = me.getApplication().getController('FormulaDialog'); + formulatab.setConfig({toolbar: me}); + formulatab = formulatab.getView('FormulaTab'); + me.toolbar.btnsFormula = formulatab.getButtons('formula'); + Array.prototype.push.apply(me.toolbar.lockControls, formulatab.getButtons()); + if ( !config.isOffline ) { tab = {action: 'pivot', caption: me.textPivot}; $panel = me.getApplication().getController('PivotTable').createToolbarPanel(); if ($panel) { - me.toolbar.addTab(tab, $panel, 3); + me.toolbar.addTab(tab, $panel, 5); me.toolbar.setVisible('pivot', true); } } @@ -3109,7 +3159,7 @@ define([ var tab = {action: 'review', caption: me.toolbar.textTabCollaboration}; var $panel = me.getApplication().getController('Common.Controllers.ReviewChanges').createToolbarPanel(); if ( $panel ) - me.toolbar.addTab(tab, $panel, 4); + me.toolbar.addTab(tab, $panel, 6); if (!(config.customization && config.customization.compactHeader)) { // hide 'print' and 'save' buttons group and next separator @@ -3128,7 +3178,7 @@ define([ tab = {action: 'protect', caption: me.toolbar.textTabProtect}; $panel = me.getApplication().getController('Common.Controllers.Protection').createToolbarPanel(); if ($panel) - me.toolbar.addTab(tab, $panel, 5); + me.toolbar.addTab(tab, $panel, 7); } } } @@ -3143,21 +3193,7 @@ define([ this.btnsComment = []; if ( config.canCoAuthoring && config.canComments ) { var _set = SSE.enumLock; - var slots = me.toolbar.$el.find('.slot-comment'); - slots.each(function(index, el) { - var _cls = 'btn-toolbar'; - /x-huge/.test(el.className) && (_cls += ' x-huge icon-top'); - - var button = new Common.UI.Button({ - id: 'tlbtn-addcomment-' + index, - cls: _cls, - iconCls: 'btn-menu-comments', - lock: [_set.lostConnect, _set.commentLock], - caption: me.toolbar.capBtnComment - }).render( slots.eq(index) ); - - me.btnsComment.push(button); - }); + this.btnsComment = Common.Utils.injectButtons(this.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'btn-menu-comments', this.toolbar.capBtnComment, [_set.lostConnect, _set.commentLock, _set.editCell]); if ( this.btnsComment.length ) { var _comments = SSE.getController('Common.Controllers.Comments').getView(); @@ -3192,7 +3228,6 @@ define([ if (this.api && state) { this._state.pgsize = [0, 0]; this.api.asc_changeDocSize(item.value[0], item.value[1], this.api.asc_getActiveWorksheetIndex()); - Common.NotificationCenter.trigger('page:settings'); Common.component.Analytics.trackEvent('ToolBar', 'Page Size'); } @@ -3204,7 +3239,6 @@ define([ this._state.pgmargins = undefined; if (item.value !== 'advanced') { this.api.asc_changePageMargins(item.value[1], item.value[3], item.value[0], item.value[2], this.api.asc_getActiveWorksheetIndex()); - Common.NotificationCenter.trigger('page:settings'); } else { var win, props, me = this; @@ -3223,7 +3257,6 @@ define([ Common.localStorage.setItem("sse-pgmargins-right", props.asc_getRight()); me.api.asc_changePageMargins( props.asc_getLeft(), props.asc_getRight(), props.asc_getTop(), props.asc_getBottom(), me.api.asc_getActiveWorksheetIndex()); - Common.NotificationCenter.trigger('page:settings'); Common.NotificationCenter.trigger('edit:complete', me.toolbar); } } @@ -3242,7 +3275,6 @@ define([ this._state.pgorient = undefined; if (this.api && item.checked) { this.api.asc_changePageOrient(item.value==Asc.c_oAscPageOrientation.PagePortrait, this.api.asc_getActiveWorksheetIndex()); - Common.NotificationCenter.trigger('page:settings'); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); @@ -3299,6 +3331,32 @@ define([ this.toolbar.btnPrintArea.menu.items[2].setVisible(this.api.asc_CanAddPrintArea()); }, + onEditHeaderClick: function(btn) { + var me = this; + if (_.isUndefined(me.fontStore)) { + me.fontStore = new Common.Collections.Fonts(); + var fonts = me.toolbar.cmbFontName.store.toJSON(); + var arr = []; + _.each(fonts, function(font, index){ + if (!font.cloneid) { + arr.push(_.clone(font)); + } + }); + me.fontStore.add(arr); + } + + var win = new SSE.Views.HeaderFooterDialog({ + api: me.api, + fontStore: me.fontStore, + handler: function(dlg, result) { + Common.NotificationCenter.trigger('edit:complete'); + } + }); + win.show(); + + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + }, + textEmptyImgUrl : 'You need to specify image URL.', warnMergeLostData : 'Operation can destroy data in the selected cells.
      Continue?', textWarning : 'Warning', diff --git a/apps/spreadsheeteditor/main/app/controller/Viewport.js b/apps/spreadsheeteditor/main/app/controller/Viewport.js index 01d76b624..191521268 100644 --- a/apps/spreadsheeteditor/main/app/controller/Viewport.js +++ b/apps/spreadsheeteditor/main/app/controller/Viewport.js @@ -138,6 +138,8 @@ define([ var $filemenu = $('.toolbar-fullview-panel'); $filemenu.css('top', _intvars.get('toolbar-height-tabs')); + me.viewport.$el.attr('applang', me.appConfig.lang.split(/[\-_]/)[0]); + if ( !config.isEdit || ( !Common.localStorage.itemExists("sse-compact-toolbar") && config.customization && config.customization.compactToolbar )) diff --git a/apps/spreadsheeteditor/main/app/model/Formula.js b/apps/spreadsheeteditor/main/app/model/Formula.js index 97bd7309a..d433af8b3 100644 --- a/apps/spreadsheeteditor/main/app/model/Formula.js +++ b/apps/spreadsheeteditor/main/app/model/Formula.js @@ -54,6 +54,7 @@ define([ index : 0, group : null, name : null, + origin : null, args : null } } diff --git a/apps/spreadsheeteditor/main/app/template/CellSettings.template b/apps/spreadsheeteditor/main/app/template/CellSettings.template index 59be2c71d..f02f4417d 100644 --- a/apps/spreadsheeteditor/main/app/template/CellSettings.template +++ b/apps/spreadsheeteditor/main/app/template/CellSettings.template @@ -60,15 +60,5 @@
      - - -
      - - - - - - - \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/template/LeftMenu.template b/apps/spreadsheeteditor/main/app/template/LeftMenu.template index 95335821c..a5ff8e732 100644 --- a/apps/spreadsheeteditor/main/app/template/LeftMenu.template +++ b/apps/spreadsheeteditor/main/app/template/LeftMenu.template @@ -6,6 +6,7 @@ +
      @@ -13,6 +14,7 @@
      +
      + +
      +
      @@ -142,6 +146,7 @@ +
      @@ -151,6 +156,52 @@
      +
      +
      + +
      +
      +
      + + + + + + + + + +
      +
      +
      +
      +
      + + +
      +
      + + +
      +
      +
      +
      + +
      +
      +
      + + +
      + + + + + + + + +
      \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/AutoFilterDialog.js b/apps/spreadsheeteditor/main/app/view/AutoFilterDialog.js index 71a36ce1b..5c99f5f19 100644 --- a/apps/spreadsheeteditor/main/app/view/AutoFilterDialog.js +++ b/apps/spreadsheeteditor/main/app/view/AutoFilterDialog.js @@ -475,28 +475,35 @@ define([ SSE.Views.AutoFilterDialog = Common.UI.Window.extend(_.extend({ initialize: function (options) { - var t = this, _options = {}; + var t = this, _options = {}, width = undefined, height = undefined; + if (Common.Utils.InternalSettings.get('sse-settings-size-filter-window')) { + width = Common.Utils.InternalSettings.get('sse-settings-size-filter-window')[0]; + height = Common.Utils.InternalSettings.get('sse-settings-size-filter-window')[1]; + } _.extend(_options, { - width : 450, - height : 265, - contentWidth : 400, + width : width || 450, + height : height || 265, + contentWidth : (width - 50) || 400, header : false, cls : 'filter-dlg', contentTemplate : '', title : t.txtTitle, modal : false, animate : false, - items : [] + items : [], + resizable : true, + minwidth : 450, + minheight : 265 }, options); this.template = options.template || [ - '
      ', - '
      ', - '
      ', + '
      ', + '
      ', + '
      ', '', - '
      ', - '
      ', + '
      ', + '
      ', '
      ', '
      ', '', '
      ', - '
      ', - '' @@ -515,10 +521,14 @@ define([ this.handler = options.handler; this.throughIndexes = []; this.filteredIndexes = []; + this.curSize = null; _options.tpl = _.template(this.template)(_options); Common.UI.Window.prototype.initialize.call(this, _options); + + this.on('resizing', _.bind(this.onWindowResizing, this)); + this.on('resize', _.bind(this.onWindowResize, this)); }, render: function () { @@ -526,6 +536,13 @@ define([ Common.UI.Window.prototype.render.call(this); + var $border = this.$window.find('.resize-border'); + this.$window.find('.resize-border.left, .resize-border.top').css({'cursor': 'default'}); + $border.css({'background': 'none', 'border': 'none'}); + $border.removeClass('left'); + $border.removeClass('top'); + + this.$window.find('.btn').on('click', _.bind(this.onBtnClick, this)); this.btnOk = new Common.UI.Button({ @@ -756,7 +773,12 @@ define([ '', '<% } %>', '', - '
      <%= Common.Utils.String.htmlEncode(value) %>
      ', + '
      ', + '
      <%= Common.Utils.String.htmlEncode(value) %>
      ', + '<% if (typeof count !=="undefined" && count) { %>', + '
      <%= count%>
      ', + '<% } %>', + '
      ', '
      ' ].join('')) }); @@ -793,6 +815,11 @@ define([ _.delay(function () { $(document.body).on('mousedown', checkDocumentClick); }, 100, this); + + if(Common.Utils.InternalSettings.get('sse-settings-size-filter-window')) { + this.$window.find('.combo-values').css({'height': Common.Utils.InternalSettings.get('sse-settings-size-filter-window')[1] - 103 + 'px'}); + this.cellsList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: true, suppressScrollX: true}); + } }, show: function (x, y) { @@ -1014,7 +1041,7 @@ define([ data.preventDefault(); data.stopPropagation(); - this.updateCellCheck(listView, listView.getSelectedRec()[0]); + this.updateCellCheck(listView, listView.getSelectedRec()); } else { Common.UI.DataView.prototype.onKeyDown.call(this.cellsList, e, data); @@ -1195,7 +1222,7 @@ define([ } var me = this, - isnumber, value, + isnumber, value, count, index = 0, throughIndex = 2, applyfilter = true, selectAllState = false, @@ -1207,6 +1234,7 @@ define([ value = item.asc_getText(); isnumber = isNumeric(value); applyfilter = true; + count = item.asc_getRepeats ? item.asc_getRepeats() : undefined; if (me.filter) { if (null === value.match(me.filter)) { @@ -1227,7 +1255,8 @@ define([ strval : !isnumber ? value : '', groupid : '1', check : idxs[throughIndex], - throughIndex : throughIndex + throughIndex : throughIndex, + count: count ? count.toString() : '' })); if (idxs[throughIndex]) selectedCells++; } else { @@ -1278,6 +1307,7 @@ define([ } this.btnOk.setDisabled(this.cells.length<1); this.cellsList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: true, suppressScrollX: true}); + this.cellsList.cmpEl.toggleClass('scroll-padding', this.cellsList.scroller.isVisible()); }, testFilter: function () { @@ -1351,6 +1381,31 @@ define([ return false; }, + onWindowResize: function (args) { + if (args && args[1]=='start') + this.curSize = {resize: false, height: this.getSize()[1]}; + else if (this.curSize.resize) { + var size = this.getSize(); + this.$window.find('.combo-values').css({'height': size[1] - 100 + 'px'}); + this.cellsList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: true, suppressScrollX: true}); + } + }, + + onWindowResizing: function () { + if (!this.curSize) return; + + var size = this.getSize(); + if (size[1] !== this.curSize.height) { + if (!this.curSize.resize) { + this.curSize.resize = true; + this.cellsList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: false, suppressScrollX: true}); + } + this.$window.find('.combo-values').css({'height': size[1] - 100 + 'px'}); + this.curSize.height = size[1]; + } + Common.Utils.InternalSettings.set('sse-settings-size-filter-window', size); + }, + okButtonText : 'Ok', btnCustomFilter : 'Custom Filter', textSelectAll : 'Select All', diff --git a/apps/spreadsheeteditor/main/app/view/CellEditor.js b/apps/spreadsheeteditor/main/app/view/CellEditor.js index 417d0c810..c57fe2575 100644 --- a/apps/spreadsheeteditor/main/app/view/CellEditor.js +++ b/apps/spreadsheeteditor/main/app/view/CellEditor.js @@ -62,14 +62,6 @@ define([ { caption: this.textManager, value: 'manager' }, { caption: '--' } ] - }).on('render:after', function(mnu) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength : 40 - }); - }).on('show:after', function () { - this.scroller.update({alwaysVisibleY: true}); }) }); this.btnNamedRanges.render($('#ce-cell-name-menu')); diff --git a/apps/spreadsheeteditor/main/app/view/CellSettings.js b/apps/spreadsheeteditor/main/app/view/CellSettings.js index a7a60e10b..4978cd450 100644 --- a/apps/spreadsheeteditor/main/app/view/CellSettings.js +++ b/apps/spreadsheeteditor/main/app/view/CellSettings.js @@ -71,13 +71,11 @@ define([ this._state = { BackColor: undefined, DisabledControls: true, - CellAngle: undefined, - CSVOptions: new Asc.asc_CCSVAdvancedOptions(0, 4, '') + CellAngle: undefined }; this.lockedControls = []; this._locked = true; this.isEditCell = false; - this.isMultiSelect = false; this.BorderType = 1; this.render(); @@ -141,32 +139,6 @@ define([ this.api && this.api.asc_setCellAngle(field.getNumberValue()); }, - onTextToColumn: function() { - this.api.asc_TextImport(this._state.CSVOptions, _.bind(this.onTextToColumnCallback, this), false); - }, - - onTextToColumnCallback: function(data) { - if (!data || !data.length) return; - - var me = this; - (new Common.Views.OpenDialog({ - title: me.textWizard, - closable: true, - type: Common.Utils.importTextType.Columns, - preview: true, - previewData: data, - settings: this._state.CSVOptions, - api: me.api, - handler: function (result, encoding, delimiter, delimiterChar) { - if (result == 'ok') { - if (me && me.api) { - me.api.asc_TextToColumns(new Asc.asc_CCSVAdvancedOptions(encoding, delimiter, delimiterChar)); - } - } - } - })).show(); - }, - render: function () { var el = $(this.el); el.html(this.template({ @@ -178,7 +150,6 @@ define([ this.api = o; if (o) { this.api.asc_registerCallback('asc_onEditCell', this.onApiEditCell.bind(this)); - this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onApiSelectionChanged, this)); } return this; }, @@ -267,13 +238,6 @@ define([ }); this.lockedControls.push(this.spnAngle); this.spnAngle.on('change', _.bind(this.onAngleChange, this)); - - this.btnTextToColumn = new Common.UI.Button({ - el: $('#cell-btn-text-to-column'), - disabled: this._locked - }); - this.btnTextToColumn.on('click', _.bind(this.onTextToColumn, this)); - this.lockedControls.push(this.btnTextToColumn); }, createDelayedElements: function() { @@ -371,10 +335,6 @@ define([ this.disableControls(this._locked); }, - onApiSelectionChanged: function(info) { - this.isMultiSelect = info.asc_getFlags().asc_getMultiselect() || info.asc_getSelectedColsCount()>1; - }, - setLocked: function (locked) { this._locked = locked; }, @@ -389,7 +349,6 @@ define([ item.setDisabled(disable); }); } - this.btnTextToColumn.setDisabled(disable || this.isMultiSelect); }, textBorders: 'Border\'s Style', @@ -410,9 +369,7 @@ define([ tipDiagU: 'Set Diagonal Up Border', tipDiagD: 'Set Diagonal Down Border', textOrientation: 'Text Orientation', - textAngle: 'Angle', - textTextToColumn: 'Text to Columns', - textWizard: 'Text to Columns Wizard' + textAngle: 'Angle' }, SSE.Views.CellSettings || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/ChartSettings.js b/apps/spreadsheeteditor/main/app/view/ChartSettings.js index f6a083c93..5159c589b 100644 --- a/apps/spreadsheeteditor/main/app/view/ChartSettings.js +++ b/apps/spreadsheeteditor/main/app/view/ChartSettings.js @@ -182,7 +182,7 @@ define([ if (this._isChartStylesChanged) { if (rec) - this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.getSelectedRec()[0],true); + this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.getSelectedRec(),true); else this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.store.at(0), true); } @@ -1074,16 +1074,16 @@ define([ if (count>0 && count==styles.length) { var data = stylesStore.models; _.each(styles, function(style, index){ - data[index].set('imageUrl', style.asc_getImageUrl()); + data[index].set('imageUrl', style.asc_getImage()); }); } else { var stylearray = [], selectedIdx = -1; _.each(styles, function(item, index){ stylearray.push({ - imageUrl: item.asc_getImageUrl(), - data : item.asc_getStyle(), - tip : me.textStyle + ' ' + item.asc_getStyle() + imageUrl: item.asc_getImage(), + data : item.asc_getName(), + tip : me.textStyle + ' ' + item.asc_getName() }); }); stylesStore.reset(stylearray, {silent: false}); diff --git a/apps/spreadsheeteditor/main/app/view/ChartSettingsDlg.js b/apps/spreadsheeteditor/main/app/view/ChartSettingsDlg.js index 2e82f80d8..cb64f5a10 100644 --- a/apps/spreadsheeteditor/main/app/view/ChartSettingsDlg.js +++ b/apps/spreadsheeteditor/main/app/view/ChartSettingsDlg.js @@ -1433,7 +1433,7 @@ define([ 'text!spreadsheeteditor/main/app/template/ChartSettingsDlg.template' if (this.isChart) { var rec = this.mnuChartTypePicker.getSelectedRec(), - type = (rec && rec.length>0) ? rec[0].get('type') : this.currentChartType; + type = (rec) ? rec.get('type') : this.currentChartType; this.chartSettings.putType(type); @@ -1492,7 +1492,7 @@ define([ 'text!spreadsheeteditor/main/app/template/ChartSettingsDlg.template' var isvalid; if (!_.isEmpty(this.txtDataRange.getValue())) { var rec = this.mnuChartTypePicker.getSelectedRec(), - type = (rec && rec.length>0) ? rec[0].get('type') : this.currentChartType; + type = (rec) ? rec.get('type') : this.currentChartType; isvalid = this.api.asc_checkDataRange(Asc.c_oAscSelectionDialogType.Chart, this.txtDataRange.getValue(), true, this.cmbDataDirect.getValue()==0, type); if (isvalid == Asc.c_oAscError.ID.No) diff --git a/apps/spreadsheeteditor/main/app/view/DataTab.js b/apps/spreadsheeteditor/main/app/view/DataTab.js new file mode 100644 index 000000000..1c4fce192 --- /dev/null +++ b/apps/spreadsheeteditor/main/app/view/DataTab.js @@ -0,0 +1,277 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ +/** + * DataTab.js + * + * Created by Julia Radzhabova on 30.05.2019 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'common/main/lib/util/utils', + 'common/main/lib/component/BaseView', + 'common/main/lib/component/Layout' +], function () { + 'use strict'; + + SSE.Views.DataTab = Common.UI.BaseView.extend(_.extend((function(){ + function setEvents() { + var me = this; + me.btnUngroup.menu.on('item:click', function (menu, item, e) { + me.fireEvent('data:ungroup', [item.value]); + }); + me.btnUngroup.on('click', function (b, e) { + me.fireEvent('data:ungroup'); + }); + me.btnGroup.menu.on('item:click', function (menu, item, e) { + me.fireEvent('data:group', [item.value, item.checked]); + }); + me.btnGroup.on('click', function (b, e) { + me.fireEvent('data:group'); + }); + me.btnGroup.menu.on('show:before', function (menu, e) { + me.fireEvent('data:groupsettings', [menu]); + }); + me.btnTextToColumns.on('click', function (b, e) { + me.fireEvent('data:tocolumns'); + }); + me.btnShow.on('click', function (b, e) { + me.fireEvent('data:show'); + }); + me.btnHide.on('click', function (b, e) { + me.fireEvent('data:hide'); + }); + me.btnsSortDown.forEach(function(button) { + button.on('click', function (b, e) { + me.fireEvent('data:sort', [Asc.c_oAscSortOptions.Ascending]); + }); + }); + me.btnsSortUp.forEach(function(button) { + button.on('click', function (b, e) { + me.fireEvent('data:sort', [Asc.c_oAscSortOptions.Descending]); + }); + }); + me.btnsSetAutofilter.forEach(function(button) { + button.on('click', function (b, e) { + me.fireEvent('data:setfilter', [Asc.c_oAscSortOptions.Descending]); + }); + }); + me.btnsClearAutofilter.forEach(function(button) { + button.on('click', function (b, e) { + me.fireEvent('data:clearfilter', [Asc.c_oAscSortOptions.Descending]); + }); + }); + } + + return { + options: {}, + + initialize: function (options) { + Common.UI.BaseView.prototype.initialize.call(this); + this.toolbar = options.toolbar; + + this.lockedControls = []; + + var me = this, + $host = me.toolbar.$el, + _set = SSE.enumLock; + + this.btnGroup = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-cell-group', + caption: this.capBtnGroup, + split: true, + menu: true, + disabled: true, + lock: [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.sheetLock, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-group'), this.btnGroup); + this.lockedControls.push(this.btnGroup); + + this.btnUngroup = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-cell-ungroup', + caption: this.capBtnUngroup, + split: true, + menu: true, + disabled: true, + lock: [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.sheetLock, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-ungroup'), this.btnUngroup); + this.lockedControls.push(this.btnUngroup); + + this.btnTextToColumns = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-to-columns', + caption: this.capBtnTextToCol, + split: false, + disabled: true, + lock: [_set.multiselect, _set.multiselectCols, _set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-text-column'), this.btnTextToColumns); + this.lockedControls.push(this.btnTextToColumns); + + this.btnShow = new Common.UI.Button({ + cls : 'btn-toolbar', + iconCls : 'btn-show-details', + style: 'padding-right: 2px;', + caption: this.capBtnTextShow, + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-show-details'), this.btnShow); + this.lockedControls.push(this.btnShow); + + this.btnHide = new Common.UI.Button({ + cls : 'btn-toolbar', + iconCls : 'btn-hide-details', + style: 'padding-right: 2px;', + caption: this.capBtnTextHide, + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-hide-details'), this.btnHide); + this.lockedControls.push(this.btnHide); + + this.btnsSortDown = Common.Utils.injectButtons($host.find('.slot-sortdesc'), '', 'btn-sort-down', '', + [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter]); + + this.btnsSortUp = Common.Utils.injectButtons($host.find('.slot-sortasc'), '', 'btn-sort-up', '', + [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter]); + + this.btnsSetAutofilter = Common.Utils.injectButtons($host.find('.slot-btn-setfilter'), '', 'btn-autofilter', '', + [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter], + false, false, true); + + this.btnsClearAutofilter = Common.Utils.injectButtons($host.find('.slot-btn-clear-filter'), '', 'btn-clear-filter', '', + [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleDelFilter, _set.editPivot]); + + Array.prototype.push.apply(this.lockedControls, this.btnsSortDown.concat(this.btnsSortUp, this.btnsSetAutofilter,this.btnsClearAutofilter)); + + Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this)); + }, + + render: function (el) { + return this; + }, + + onAppReady: function (config) { + var me = this; + (new Promise(function (accept, reject) { + accept(); + })).then(function(){ + me.btnUngroup.updateHint( me.tipUngroup ); + var _menu = new Common.UI.Menu({ + items: [ + {caption: me.textRows, value: 'rows'}, + {caption: me.textColumns, value: 'columns'}, + {caption: me.textClear, value: 'clear'} + ] + }); + me.btnUngroup.setMenu(_menu); + + me.btnGroup.updateHint(me.tipGroup); + _menu = new Common.UI.Menu({ + items: [ + {caption: me.textGroupRows, value: 'rows'}, + {caption: me.textGroupColumns, value: 'columns'}, + {caption: '--'}, + {caption: me.textBelow, value: 'below', checkable: true}, + {caption: me.textRightOf, value: 'right', checkable: true} + ] + }); + me.btnGroup.setMenu(_menu); + + me.btnTextToColumns.updateHint(me.tipToColumns); + + me.btnsSortDown.forEach( function(btn) { + btn.updateHint(me.toolbar.txtSortAZ); + }); + me.btnsSortUp.forEach( function(btn) { + btn.updateHint(me.toolbar.txtSortZA); + }); + me.btnsSetAutofilter.forEach( function(btn) { + btn.updateHint(me.toolbar.txtFilter + ' (Ctrl+Shift+L)'); + }); + me.btnsClearAutofilter.forEach( function(btn) { + btn.updateHint(me.toolbar.txtClearFilter); + }); + + setEvents.call(me); + }); + }, + + show: function () { + Common.UI.BaseView.prototype.show.call(this); + this.fireEvent('show', this); + }, + + getButtons: function(type) { + if (type == 'sort-down') + return this.btnsSortDown; + else if (type == 'sort-up') + return this.btnsSortUp; + else if (type == 'set-filter') + return this.btnsSetAutofilter; + else if (type == 'clear-filter') + return this.btnsClearAutofilter; + else if (type===undefined) + return this.lockedControls; + return []; + }, + + SetDisabled: function (state) { + this.lockedControls && this.lockedControls.forEach(function(button) { + if ( button ) { + button.setDisabled(state); + } + }, this); + }, + + capBtnGroup: 'Group', + capBtnUngroup: 'Ungroup', + textRows: 'Ungroup rows', + textColumns: 'Ungroup columns', + textGroupRows: 'Group rows', + textGroupColumns: 'Group columns', + textClear: 'Clear outline', + tipGroup: 'Group range of cells', + tipUngroup: 'Ungroup range of cells', + capBtnTextToCol: 'Text to Columns', + tipToColumns: 'Separate cell text into columns', + capBtnTextShow: 'Show details', + capBtnTextHide: 'Hide details', + textBelow: 'Summary rows below detail', + textRightOf: 'Summary columns to right of detail' + } + }()), SSE.Views.DataTab || {})); +}); diff --git a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js index aefbbf1c2..5613d6d40 100644 --- a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js @@ -922,17 +922,33 @@ define([ ] }); + me.pmiCommonCut = new Common.UI.MenuItem({ + caption : me.txtCut, + value : 'cut' + }); + + me.pmiCommonCopy = new Common.UI.MenuItem({ + caption : me.txtCopy, + value : 'copy' + }); + + me.pmiCommonPaste = new Common.UI.MenuItem({ + caption : me.txtPaste, + value : 'paste' + }); + + this.copyPasteMenu = new Common.UI.Menu({ + items: [ + me.pmiCommonCut, + me.pmiCommonCopy, + me.pmiCommonPaste + ] + }); + this.entriesMenu = new Common.UI.Menu({ maxHeight: 200, cyclic: false, items: [] - }).on('render:after', function(mnu) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength : 40, - alwaysVisibleY: true - }); }).on('show:after', function () { this.scroller.update({alwaysVisibleY: true}); }); @@ -943,12 +959,6 @@ define([ items: [] }).on('render:after', function(mnu) { mnu.cmpEl.removeAttr('oo_editor_input').attr('oo_editor_keyboard', true); - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength : 40, - alwaysVisibleY: true - }); }); me.fireEvent('createdelayedelements', [me]); diff --git a/apps/spreadsheeteditor/main/app/view/FileMenu.js b/apps/spreadsheeteditor/main/app/view/FileMenu.js index b4600ab43..1666b2ab4 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenu.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenu.js @@ -203,8 +203,6 @@ define([ var me = this; me.panels = { - 'saveas' : (new SSE.Views.FileMenuPanels.ViewSaveAs({menu:me})).render(), - 'save-copy' : (new SSE.Views.FileMenuPanels.ViewSaveCopy({menu:me})).render(), 'opts' : (new SSE.Views.FileMenuPanels.Settings({menu:me})).render(), 'info' : (new SSE.Views.FileMenuPanels.DocumentInfo({menu:me})).render(), 'rights' : (new SSE.Views.FileMenuPanels.DocumentRights({menu:me})).render() @@ -236,22 +234,21 @@ define([ }, applyMode: function() { + this.miDownload[(this.mode.canDownload && (!this.mode.isDesktopApp || !this.mode.isOffline))?'show':'hide'](); + this.miSaveCopyAs[(this.mode.canDownload && (!this.mode.isDesktopApp || !this.mode.isOffline)) && (this.mode.canRequestSaveAs || this.mode.saveAsUrl) ?'show':'hide'](); + this.miSaveAs[(this.mode.canDownload && this.mode.isDesktopApp && this.mode.isOffline)?'show':'hide'](); + this.miSave[this.mode.isEdit?'show':'hide'](); + this.miEdit[!this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights ?'show':'hide'](); this.miPrint[this.mode.canPrint?'show':'hide'](); this.miRename[(this.mode.canRename && !this.mode.isDesktopApp) ?'show':'hide'](); this.miProtect[this.mode.canProtect ?'show':'hide'](); - this.miProtect.$el.find('+.devider')[!this.mode.isDisconnected?'show':'hide'](); + var isVisible = this.mode.canDownload || this.mode.isEdit || this.mode.canPrint || this.mode.canProtect || + !this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights || this.mode.canRename && !this.mode.isDesktopApp; + this.miProtect.$el.find('+.devider')[isVisible && !this.mode.isDisconnected?'show':'hide'](); this.miRecent[this.mode.canOpenRecent?'show':'hide'](); this.miNew[this.mode.canCreateNew?'show':'hide'](); this.miNew.$el.find('+.devider')[this.mode.canCreateNew?'show':'hide'](); - this.miDownload[(this.mode.canDownload && (!this.mode.isDesktopApp || !this.mode.isOffline))?'show':'hide'](); - this.miSaveCopyAs[((this.mode.canDownload || this.mode.canDownloadOrigin) && (!this.mode.isDesktopApp || !this.mode.isOffline)) && this.mode.saveAsUrl ?'show':'hide'](); - this.miSaveAs[(this.mode.canDownload && this.mode.isDesktopApp && this.mode.isOffline)?'show':'hide'](); -// this.hkSaveAs[this.mode.canDownload?'enable':'disable'](); - - this.miSave[this.mode.isEdit?'show':'hide'](); - this.miEdit[!this.mode.isEdit && this.mode.canEdit && this.mode.canRequestEditRights ?'show':'hide'](); - this.miAccess[(!this.mode.isOffline && this.document&&this.document.info&&(this.document.info.sharingSettings&&this.document.info.sharingSettings.length>0 || this.mode.sharingSettingsUrl&&this.mode.sharingSettingsUrl.length))?'show':'hide'](); @@ -288,6 +285,14 @@ define([ this.panels['protect'].setMode(this.mode); } + if (this.mode.canDownload) { + this.panels['saveas'] = ((new SSE.Views.FileMenuPanels.ViewSaveAs({menu: this})).render()); + } + + if (this.mode.canDownload && (this.mode.canRequestSaveAs || this.mode.saveAsUrl)) { + this.panels['save-copy'] = ((new SSE.Views.FileMenuPanels.ViewSaveCopy({menu: this})).render()); + } + if (this.mode.canHelp) { this.panels['help'] = ((new SSE.Views.FileMenuPanels.Help({menu: this})).render()); this.panels['help'].setLangConfig(this.mode.lang); diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index 65731d5a8..531603031 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -218,9 +218,7 @@ define([ show: function() { Common.UI.BaseView.prototype.show.call(this,arguments); var item = this.viewSettingsPicker.getSelectedRec(); - if (item[0]) { - item[0].get('panel').show(); - } + item && item.get('panel').show(); }, setMode: function(mode) { @@ -1050,40 +1048,176 @@ define([ this.template = _.template([ '', '', - '', - '', - '', - '', - '', - '', - '', - '', '', '', '', - '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', '', - '', + '', '', - '', - '', - '', + '', + '', + '', '', - '', '
      -
      ', + '', + '', + '', + '', + '
      ', + '
      ' ].join('')); this.menu = options.menu; + this.coreProps = null; + this.authors = []; + this._locked = false; }, render: function() { $(this.el).html(this.template()); - this.lblTitle = $('#id-info-title'); + var me = this; + + // server info this.lblPlacement = $('#id-info-placement'); + this.lblOwner = $('#id-info-owner'); + this.lblUploaded = $('#id-info-uploaded'); + + // edited info + var keyDownBefore = function(input, e){ + if (e.keyCode === Common.UI.Keys.ESC) { + var newVal = input._input.val(), + oldVal = input.getValue(); + if (newVal !== oldVal) { + input.setValue(oldVal); + e.stopPropagation(); + } + } + }; + + this.inputTitle = new Common.UI.InputField({ + el : $('#id-info-title'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putTitle(me.inputTitle.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + this.inputSubject = new Common.UI.InputField({ + el : $('#id-info-subject'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putSubject(me.inputSubject.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + this.inputComment = new Common.UI.InputField({ + el : $('#id-info-comment'), + style : 'width: 200px;', + placeHolder : this.txtAddText, + validateOnBlur: false + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue !== oldValue && me.coreProps && me.api) { + me.coreProps.asc_putDescription(me.inputComment.getValue()); + me.api.asc_setCoreProps(me.coreProps); + } + }).on('keydown:before', keyDownBefore); + + // modify info + this.lblModifyDate = $('#id-info-modify-date'); + this.lblModifyBy = $('#id-info-modify-by'); + + // creation info this.lblDate = $('#id-info-date'); - this.lblAuthor = $('#id-info-author'); this.lblApplication = $('#id-info-appname'); + this.tblAuthor = $('#id-info-author table'); + this.trAuthor = $('#id-info-add-author').closest('tr'); + this.authorTpl = '
      '; + + this.tblAuthor.on('click', function(e) { + var btn = $(e.target); + if (btn.hasClass('close') && !btn.hasClass('disabled')) { + var el = btn.closest('tr'), + idx = me.tblAuthor.find('tr').index(el); + el.remove(); + me.authors.splice(idx, 1); + if (me.coreProps && me.api) { + me.coreProps.asc_putCreator(me.authors.join(';')); + me.api.asc_setCoreProps(me.coreProps); + } + } + }); + + this.inputAuthor = new Common.UI.InputField({ + el : $('#id-info-add-author'), + style : 'width: 200px;', + validateOnBlur: false, + placeHolder: this.txtAddAuthor + }).on('changed:after', function(input, newValue, oldValue) { + if (newValue == oldValue) return; + + var val = newValue.trim(); + if (!!val && val !== oldValue.trim()) { + val.split(/\s*[,;]\s*/).forEach(function(item){ + var str = item.trim(); + if (str) { + var div = $(Common.Utils.String.format(me.authorTpl, Common.Utils.String.htmlEncode(str))); + me.trAuthor.before(div); + me.authors.push(item); + } + }); + me.inputAuthor.setValue(''); + if (me.coreProps && me.api) { + me.coreProps.asc_putCreator(me.authors.join(';')); + me.api.asc_setCoreProps(me.coreProps); + } + } + }).on('keydown:before', keyDownBefore); this.rendered = true; @@ -1101,6 +1235,8 @@ define([ show: function() { Common.UI.BaseView.prototype.show.call(this,arguments); + + this.updateFileInfo(); }, hide: function() { @@ -1108,58 +1244,154 @@ define([ }, updateInfo: function(doc) { + if (!this.doc && doc && doc.info) { + doc.info.author && console.log("Obsolete: The 'author' parameter of the document 'info' section is deprecated. Please use 'owner' instead."); + doc.info.created && console.log("Obsolete: The 'created' parameter of the document 'info' section is deprecated. Please use 'uploaded' instead."); + } + this.doc = doc; if (!this.rendered) return; + var visible = false; doc = doc || {}; - this.lblTitle.text((doc.title) ? doc.title : '-'); - if (doc.info) { - if (doc.info.author) - this.lblAuthor.text(doc.info.author); - this._ShowHideInfoItem('author', doc.info.author!==undefined && doc.info.author!==null); - if (doc.info.created ) - this.lblDate.text( doc.info.created ); - this._ShowHideInfoItem('date', doc.info.created!==undefined && doc.info.created!==null); + // server info if (doc.info.folder ) this.lblPlacement.text( doc.info.folder ); - this._ShowHideInfoItem('placement', doc.info.folder!==undefined && doc.info.folder!==null); + visible = this._ShowHideInfoItem(this.lblPlacement, doc.info.folder!==undefined && doc.info.folder!==null) || visible; + var value = doc.info.owner || doc.info.author; + if (value) + this.lblOwner.text(value); + visible = this._ShowHideInfoItem(this.lblOwner, !!value) || visible; + value = doc.info.uploaded || doc.info.created; + if (value) + this.lblUploaded.text(value); + visible = this._ShowHideInfoItem(this.lblUploaded, !!value) || visible; } else this._ShowHideDocInfo(false); + $('tr.divider.general', this.el)[visible?'show':'hide'](); + var appname = (this.api) ? this.api.asc_getAppProps() : null; if (appname) { appname = (appname.asc_getApplication() || '') + ' ' + (appname.asc_getAppVersion() || ''); this.lblApplication.text(appname); } - this._ShowHideInfoItem('appname', !!appname); + this._ShowHideInfoItem(this.lblApplication, !!appname); + + this.coreProps = (this.api) ? this.api.asc_getCoreProps() : null; + if (this.coreProps) { + var value = this.coreProps.asc_getCreated(); + if (value) + this.lblDate.text(value.toLocaleString()); + this._ShowHideInfoItem(this.lblDate, !!value); + } }, - _ShowHideInfoItem: function(cls, visible) { - $('tr.'+cls, this.el)[visible?'show':'hide'](); + updateFileInfo: function() { + if (!this.rendered) + return; + + var me = this, + props = (this.api) ? this.api.asc_getCoreProps() : null, + value; + + this.coreProps = props; + // var app = (this.api) ? this.api.asc_getAppProps() : null; + // if (app) { + // value = app.asc_getTotalTime(); + // if (value) + // this.lblEditTime.text(value + ' ' + this.txtMinutes); + // } + // this._ShowHideInfoItem(this.lblEditTime, !!value); + + if (props) { + var visible = false; + value = props.asc_getModified(); + if (value) + this.lblModifyDate.text(value.toLocaleString()); + visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible; + value = props.asc_getLastModifiedBy(); + if (value) + this.lblModifyBy.text(value); + visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible; + $('tr.divider.modify', this.el)[visible?'show':'hide'](); + + value = props.asc_getTitle(); + this.inputTitle.setValue(value || ''); + value = props.asc_getSubject(); + this.inputSubject.setValue(value || ''); + value = props.asc_getDescription(); + this.inputComment.setValue(value || ''); + + this.tblAuthor.find('tr:not(:last-of-type)').remove(); + this.authors = []; + value = props.asc_getCreator();//"123\"\"\"\<\>,456"; + value && value.split(/\s*[,;]\s*/).forEach(function(item) { + var div = $(Common.Utils.String.format(me.authorTpl, Common.Utils.String.htmlEncode(item))); + me.trAuthor.before(div); + me.authors.push(item); + }); + this.tblAuthor.find('.close').toggleClass('hidden', !this.mode.isEdit); + } + this.SetDisabled(); + }, + + _ShowHideInfoItem: function(el, visible) { + el.closest('tr')[visible?'show':'hide'](); + return visible; }, _ShowHideDocInfo: function(visible) { - this._ShowHideInfoItem('date', visible); - this._ShowHideInfoItem('placement', visible); - this._ShowHideInfoItem('author', visible); + this._ShowHideInfoItem(this.lblPlacement, visible); + this._ShowHideInfoItem(this.lblOwner, visible); + this._ShowHideInfoItem(this.lblUploaded, visible); }, setMode: function(mode) { + this.mode = mode; + this.inputAuthor.setVisible(mode.isEdit); + this.tblAuthor.find('.close').toggleClass('hidden', !mode.isEdit); + this.SetDisabled(); return this; }, setApi: function(o) { this.api = o; + this.api.asc_registerCallback('asc_onLockCore', _.bind(this.onLockCore, this)); this.updateInfo(this.doc); return this; }, - txtTitle: 'Document Title', + onLockCore: function(lock) { + this._locked = lock; + this.updateFileInfo(); + }, + + SetDisabled: function() { + var disable = !this.mode.isEdit || this._locked; + this.inputTitle.setDisabled(disable); + this.inputSubject.setDisabled(disable); + this.inputComment.setDisabled(disable); + this.inputAuthor.setDisabled(disable); + this.tblAuthor.find('.close').toggleClass('disabled', this._locked); + this.tblAuthor.toggleClass('disabled', disable); + }, + + txtPlacement: 'Location', + txtOwner: 'Owner', + txtUploaded: 'Uploaded', + txtAppName: 'Application', + txtTitle: 'Title', + txtSubject: 'Subject', + txtComment: 'Comment', + txtModifyDate: 'Last Modified', + txtModifyBy: 'Last Modified By', + txtCreated: 'Created', txtAuthor: 'Author', - txtPlacement: 'Placement', - txtDate: 'Creation Date', - txtAppName: 'Application' + txtAddAuthor: 'Add Author', + txtAddText: 'Add Text', + txtMinutes: 'min' }, SSE.Views.FileMenuPanels.DocumentInfo || {})); SSE.Views.FileMenuPanels.DocumentRights = Common.UI.BaseView.extend(_.extend({ @@ -1256,20 +1488,20 @@ define([ setMode: function(mode) { this.sharingSettingsUrl = mode.sharingSettingsUrl; + !!this.sharingSettingsUrl && this.sharingSettingsUrl.length && Common.Gateway.on('showsharingsettings', _.bind(this.changeAccessRights, this)); + !!this.sharingSettingsUrl && this.sharingSettingsUrl.length && Common.Gateway.on('setsharingsettings', _.bind(this.setSharingSettings, this)); return this; }, changeAccessRights: function(btn,event,opts) { - if (this._docAccessDlg) return; + if (this._docAccessDlg || this._readonlyRights) return; var me = this; me._docAccessDlg = new Common.Views.DocumentAccessDialog({ settingsurl: this.sharingSettingsUrl }); me._docAccessDlg.on('accessrights', function(obj, rights){ - me.doc.info.sharingSettings = rights; - me._ShowHideInfoItem('rights', me.doc.info.sharingSettings!==undefined && me.doc.info.sharingSettings!==null && me.doc.info.sharingSettings.length>0); - me.cntRights.html(me.templateRights({users: me.doc.info.sharingSettings})); + me.updateSharingSettings(rights); }).on('close', function(obj){ me._docAccessDlg = undefined; }); @@ -1277,6 +1509,17 @@ define([ me._docAccessDlg.show(); }, + setSharingSettings: function(data) { + data && this.updateSharingSettings(data.sharingSettings); + }, + + updateSharingSettings: function(rights) { + this.doc.info.sharingSettings = rights; + this._ShowHideInfoItem('rights', this.doc.info.sharingSettings!==undefined && this.doc.info.sharingSettings!==null && this.doc.info.sharingSettings.length>0); + this.cntRights.html(this.templateRights({users: this.doc.info.sharingSettings})); + Common.NotificationCenter.trigger('mentions:clearusers', this); + }, + onLostEditRights: function() { this._readonlyRights = true; if (!this.rendered) diff --git a/apps/spreadsheeteditor/main/app/view/FormulaDialog.js b/apps/spreadsheeteditor/main/app/view/FormulaDialog.js index 999d48469..c59178d5d 100644 --- a/apps/spreadsheeteditor/main/app/view/FormulaDialog.js +++ b/apps/spreadsheeteditor/main/app/view/FormulaDialog.js @@ -71,7 +71,6 @@ define([ '', '
      ', - '', '
      ', '', @@ -102,29 +101,9 @@ define([ this.syntaxLabel = $('#formula-dlg-args'); this.descLabel = $('#formula-dlg-desc'); - - this.translationTable = {}; - - var name = '', translate = '', - descriptions = ['All', 'Cube', 'Database', 'DateAndTime', 'Engineering', 'Financial', 'Information', - 'Logical', 'LookupAndReference', 'Mathematic', 'Statistical', 'TextAndData' ]; - for (var i=0; i 64 && e.keyCode < 91 && charVal && charVal.length) { - + charVal = charVal.toLocaleLowerCase(); selectRecord = this.store.findWhere({selected: true}); if (selectRecord) { value = selectRecord.get('value'); - isEqualSelectRecord = (value && value.length && value[0] === charVal) + isEqualSelectRecord = (value && value.length && value[0].toLocaleLowerCase() === charVal) } for (i = 0; i < this.store.length; ++i) { record = this.store.at(i); value = record.get('value'); - if (value[0] === charVal) { + if (value[0].toLocaleLowerCase() === charVal) { if (null === firstRecord) firstRecord = record; @@ -400,82 +377,10 @@ define([ cancelButtonText: 'Cancel', okButtonText: 'Ok', - sCategoryAll: 'All', - sCategoryLogical: 'Logical', - sCategoryCube: 'Cube', - sCategoryDatabase: 'Database', - sCategoryDateAndTime: 'Date and time', - sCategoryEngineering: 'Engineering', - sCategoryFinancial: 'Financial', - sCategoryInformation: 'Information', - sCategoryLookupAndReference: 'Lookup and reference', - sCategoryMathematic: 'Math and trigonometry', - sCategoryStatistical: 'Statistical', - sCategoryTextAndData: 'Text and data', textGroupDescription: 'Select Function Group', textListDescription: 'Select Function', sDescription: 'Description', - sCategoryAll_de: 'Alle', - sCategoryCube_de: 'Cube', - sCategoryDatabase_de: 'Datenbank', - sCategoryDateAndTime_de: 'Datum und Uhrzeit', - sCategoryEngineering_de: 'Konstruktion', - sCategoryFinancial_de: 'Finanzmathematik', - sCategoryInformation_de: 'Information', - sCategoryLogical_de: 'Logisch', - sCategoryLookupAndReference_de: 'Suchen und Bezüge', - sCategoryMathematic_de: 'Mathematik und Trigonometrie', - sCategoryStatistical_de: 'Statistik', - sCategoryTextAndData_de: 'Text und Daten', - sCategoryAll_ru: 'Все', - sCategoryCube_ru: 'Кубические', - sCategoryDatabase_ru: 'Базы данных', - sCategoryDateAndTime_ru: 'Дата и время', - sCategoryEngineering_ru: 'Инженерные', - sCategoryFinancial_ru: 'Финансовые', - sCategoryInformation_ru: 'Информационные', - sCategoryLogical_ru: 'Логические', - sCategoryLookupAndReference_ru: 'Поиск и ссылки', - sCategoryMathematic_ru: 'Математические', - sCategoryStatistical_ru: 'Статистические', - sCategoryTextAndData_ru: 'Текст и данные', - txtTitle: 'Insert Function', - sCategoryAll_es: 'Todo', - sCategoryLogical_es: 'Lógico', - sCategoryCube_es: 'Cubo', - sCategoryDatabase_es: 'Base de Datos', - sCategoryDateAndTime_es: 'Fecha y hora', - sCategoryEngineering_es: 'Ingenería', - sCategoryFinancial_es: 'Financial', - sCategoryInformation_es: 'Información', - sCategoryLookupAndReference_es: 'Búsqueda y referencia', - sCategoryMathematic_es: 'Matemáticas y trigonometría', - sCategoryStatistical_es: 'Estadístico', - sCategoryTextAndData_es: 'Texto y datos', - sCategoryAll_fr: 'Tout', - sCategoryLogical_fr: 'Logique', - sCategoryCube_fr: 'Cube', - sCategoryDatabase_fr: 'Base de données', - sCategoryDateAndTime_fr: 'Date et heure', - sCategoryEngineering_fr: 'Ingénierie', - sCategoryFinancial_fr: 'Financier', - sCategoryInformation_fr: 'Information', - sCategoryLookupAndReference_fr: 'Recherche et référence', - sCategoryMathematic_fr: 'Maths et trigonométrie', - sCategoryStatistical_fr: 'Statistiques', - sCategoryTextAndData_fr: 'Texte et données', - sCategoryAll_pl: 'Wszystko', - sCategoryLogical_pl: 'Logiczny', - sCategoryCube_pl: 'Sześcian', - sCategoryDatabase_pl: 'Baza danych', - sCategoryDateAndTime_pl: 'Data i czas', - sCategoryEngineering_pl: 'Inżyniera', - sCategoryFinancial_pl: 'Finansowe', - sCategoryInformation_pl: 'Informacja', - sCategoryLookupAndReference_pl: 'Wyszukiwanie i odniesienie', - sCategoryMathematic_pl: 'Matematyczne i trygonometryczne', - sCategoryStatistical_pl: 'Statystyczny', - sCategoryTextAndData_pl: 'Tekst i data' + txtTitle: 'Insert Function' }, SSE.Views.FormulaDialog || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/FormulaLang.js b/apps/spreadsheeteditor/main/app/view/FormulaLang.js deleted file mode 100644 index b3a5915c6..000000000 --- a/apps/spreadsheeteditor/main/app/view/FormulaLang.js +++ /dev/null @@ -1,123 +0,0 @@ -/* - * - * (c) Copyright Ascensio System SIA 2010-2019 - * - * 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([ -], function () { - 'use strict'; - - SSE.Views = SSE.Views || {}; - - SSE.Views.FormulaLang = new(function() { - var langJson = {}, - langDescJson = {}; - - var _createXMLHTTPObject = function() { - var xmlhttp; - try { - xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - } - catch (e) { - try { - xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); - } - catch (E) { - xmlhttp = false; - } - } - if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { - xmlhttp = new XMLHttpRequest(); - } - return xmlhttp; - }; - - var _get = function(lang) { - if (!lang) return ''; - lang = lang.toLowerCase() ; - - if (langJson[lang]) - return langJson[lang]; - else if (lang == 'en') - return undefined; - else { - try { - var xhrObj = _createXMLHTTPObject(); - if (xhrObj && lang) { - xhrObj.open('GET', 'resources/formula-lang/' + lang + '.json', false); - xhrObj.send(''); - langJson[lang] = eval("(" + xhrObj.responseText + ")"); - return langJson[lang]; - } - } - catch (e) { - } - } - - return null; - }; - - - var _getDescription = function(lang) { - if (!lang) return ''; - lang = lang.toLowerCase() ; - - if (langDescJson[lang]) - return langDescJson[lang]; - else { - try { - var xhrObj = _createXMLHTTPObject(); - if (xhrObj && lang) { - xhrObj.open('GET', 'resources/formula-lang/' + lang + '_desc.json', false); - xhrObj.send(''); - if (xhrObj.status==200 || - (xhrObj.status==0 && !!xhrObj.responseURL && xhrObj.responseURL.startsWith('file://'))) - langDescJson[lang] = eval("(" + xhrObj.responseText + ")"); - else { - xhrObj.open('GET', 'resources/formula-lang/en_desc.json', false); - xhrObj.send(''); - langDescJson[lang] = eval("(" + xhrObj.responseText + ")"); - } - return langDescJson[lang]; - } - } - catch (e) { - } - } - - return null; - }; - - return { - get: _get, - getDescription: _getDescription - }; - })(); -}); diff --git a/apps/spreadsheeteditor/main/app/view/FormulaTab.js b/apps/spreadsheeteditor/main/app/view/FormulaTab.js new file mode 100644 index 000000000..21e3523f7 --- /dev/null +++ b/apps/spreadsheeteditor/main/app/view/FormulaTab.js @@ -0,0 +1,486 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ +/** + * FormulaTab.js + * + * Created by Julia Radzhabova on 14.06.2019 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'common/main/lib/util/utils', + 'common/main/lib/component/BaseView', + 'common/main/lib/component/Layout' +], function () { + 'use strict'; + + SSE.Views.FormulaTab = Common.UI.BaseView.extend(_.extend((function(){ + function setEvents() { + var me = this; + me.btnAutosum.on('click', function(){ + me.fireEvent('function:apply', [{name: me.api.asc_getFormulaLocaleName('SUM'), origin: 'SUM'}, true]); + }); + me.btnAutosum.menu.on('item:click', function (menu, item, e) { + me.fireEvent('function:apply', [{name: item.caption, origin: item.value}, true]); + }); + me.btnFormula.on('click', function(){ + me.fireEvent('function:apply', [{name: 'more', origin: 'more'}]); + }); + } + return { + options: {}, + + initialize: function (options) { + Common.UI.BaseView.prototype.initialize.call(this); + this.toolbar = options.toolbar; + this.formulasGroups = options.formulasGroups; + + this.lockedControls = []; + + var me = this, + $host = me.toolbar.$el, + _set = SSE.enumLock; + + var formulaDialog = SSE.getController('FormulaDialog'); + + this.btnFinancial = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-finance', + caption: formulaDialog.sCategoryFinancial, + hint: formulaDialog.sCategoryFinancial, + menu: true, + split: false, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-financial'), this.btnFinancial); + this.lockedControls.push(this.btnFinancial); + + this.btnLogical = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-logic', + caption: formulaDialog.sCategoryLogical, + hint: formulaDialog.sCategoryLogical, + menu: true, + split: false, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-logical'), this.btnLogical); + this.lockedControls.push(this.btnLogical); + + this.btnTextData = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-func-text', + caption: formulaDialog.sCategoryTextAndData, + hint: formulaDialog.sCategoryTextAndData, + menu: true, + split: false, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-text'), this.btnTextData); + this.lockedControls.push(this.btnTextData); + + this.btnDateTime = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-datetime', + caption: formulaDialog.sCategoryDateAndTime, + hint: formulaDialog.sCategoryDateAndTime, + menu: true, + split: false, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-datetime'), this.btnDateTime); + this.lockedControls.push(this.btnDateTime); + + this.btnReference = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-lookup', + caption: formulaDialog.sCategoryLookupAndReference, + hint: formulaDialog.sCategoryLookupAndReference, + menu: true, + split: false, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-lookup'), this.btnReference); + this.lockedControls.push(this.btnReference); + + this.btnMath = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-func-math', + caption: formulaDialog.sCategoryMathematic, + hint: formulaDialog.sCategoryMathematic, + menu: true, + split: false, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-math'), this.btnMath); + this.lockedControls.push(this.btnMath); + + this.btnRecent = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-recent', + caption: this.txtRecent, + hint: this.txtRecent, + menu: true, + split: false, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-recent'), this.btnRecent); + this.lockedControls.push(this.btnRecent); + + this.btnAutosum = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-autosum', + caption: this.txtAutosum, + hint: this.txtAutosumTip, + split: true, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth], + menu: new Common.UI.Menu({ + items : [ + {caption: 'SUM', value: 'SUM'}, + {caption: 'MIN', value: 'MIN'}, + {caption: 'MAX', value: 'MAX'}, + {caption: 'COUNT', value: 'COUNT'}, + {caption: '--'}, + { + caption: me.txtAdditional, + value: 'more' + } + ] + }) + }); + Common.Utils.injectComponent($host.find('#slot-btn-autosum'), this.btnAutosum); + this.lockedControls.push(this.btnAutosum); + + this.btnFormula = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-ins-formula', + caption: this.txtFormula, + hint: this.txtFormulaTip, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-additional-formula'), this.btnFormula); + this.lockedControls.push(this.btnFormula); + + this.btnMore = new Common.UI.Button({ + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-more', + caption: this.txtMore, + hint: this.txtMore, + menu: true, + split: false, + disabled: true, + lock: [_set.editText, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selRangeEdit, _set.lostConnect, _set.coAuth] + }); + Common.Utils.injectComponent($host.find('#slot-btn-more'), this.btnMore); + this.lockedControls.push(this.btnMore); + + Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this)); + }, + + render: function (el) { + return this; + }, + + onAppReady: function (config) { + var me = this; + (new Promise(function (accept, reject) { + accept(); + })).then(function(){ + setEvents.call(me); + }); + }, + + show: function () { + Common.UI.BaseView.prototype.show.call(this); + this.fireEvent('show', this); + }, + + getButtons: function(type) { + return this.lockedControls; + }, + + SetDisabled: function (state) { + this.lockedControls && this.lockedControls.forEach(function(button) { + if ( button ) { + button.setDisabled(state); + } + }, this); + }, + + focusInner: function(menu, e) { + if (e.keyCode == Common.UI.Keys.UP) + menu.items[menu.items.length-1].cmpEl.find('> a').focus(); + else + menu.items[0].cmpEl.find('> a').focus(); + }, + + focusOuter: function(menu, e) { + menu.items[2].cmpEl.find('> a').focus(); + }, + + onBeforeKeyDown: function(menu, e) { + if (e.keyCode == Common.UI.Keys.RETURN) { + e.preventDefault(); + e.stopPropagation(); + var li = $(e.target).closest('li'); + (li.length>0) && li.click(); + Common.UI.Menu.Manager.hideAll(); + } else if (e.namespace!=="after.bs.dropdown" && (e.keyCode == Common.UI.Keys.DOWN || e.keyCode == Common.UI.Keys.UP)) { + var $items = $('> [role=menu] > li:not(.divider):not(.disabled):visible', menu.$el).find('> a'); + if (!$items.length) return; + var index = $items.index($items.filter(':focus')), + me = this; + if (menu._outerMenu && (e.keyCode == Common.UI.Keys.UP && index==0 || e.keyCode == Common.UI.Keys.DOWN && index==$items.length - 1) || + menu._innerMenu && (e.keyCode == Common.UI.Keys.UP || e.keyCode == Common.UI.Keys.DOWN) && index!==-1) { + e.preventDefault(); + e.stopPropagation(); + _.delay(function() { + menu._outerMenu ? me.focusOuter(menu._outerMenu, e) : me.focusInner(menu._innerMenu, e); + }, 10); + } + } + }, + + setButtonMenu: function(btn, name) { + var me = this, + arr = [], + group = me.formulasGroups.findWhere({name : name}); + + if (group) { + var functions = group.get('functions'); + functions && functions.forEach(function(item) { + arr.push(new Common.UI.MenuItem({ + caption: item.get('name'), + value: item.get('origin') + })); + }); + } + if (arr.length) { + if (btn.menu && btn.menu.rendered) { + var menu = btn.menu._innerMenu; + if (menu) { + menu.removeAll(); + arr.forEach(function(item){ + menu.addItem(item); + }); + } + } else { + btn.setMenu(new Common.UI.Menu({ + items: [ + {template: _.template('
      ')}, + { caption: '--' }, + { + caption: me.txtAdditional, + value: 'more' + } + ] + })); + btn.menu.items[2].on('click', function (item, e) { + me.fireEvent('function:apply', [{name: item.caption, origin: item.value}, false, name]); + }); + btn.menu.on('show:after', function (menu, e) { + var internalMenu = menu._innerMenu; + internalMenu.scroller.update({alwaysVisibleY: true}); + _.delay(function() { + menu._innerMenu && menu._innerMenu.cmpEl.focus(); + }, 10); + }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); + + var menu = new Common.UI.Menu({ + maxHeight: 300, + cls: 'internal-menu', + items: arr + }); + menu.render(btn.menu.items[0].cmpEl.children(':first')); + menu.cmpEl.css({ + display : 'block', + position : 'relative', + left : 0, + top : 0 + }); + menu.cmpEl.attr({tabindex: "-1"}); + menu.on('item:click', function (menu, item, e) { + me.fireEvent('function:apply', [{name: item.caption, origin: item.value}, false, name]); + }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); + btn.menu._innerMenu = menu; + menu._outerMenu = btn.menu; + } + } + btn.setDisabled(arr.length<1); + }, + + setMenuItemMenu: function(name) { + var me = this, + arr = [], + formulaDialog = SSE.getController('FormulaDialog'), + group = me.formulasGroups.findWhere({name : name}); + + if (group) { + var functions = group.get('functions'); + functions && functions.forEach(function(item) { + arr.push(new Common.UI.MenuItem({ + caption: item.get('name'), + value: item.get('origin') + })); + }); + if (arr.length) { + var mnu = new Common.UI.MenuItem({ + caption : formulaDialog['sCategory' + name] || name, + menu: new Common.UI.Menu({ + menuAlign: 'tl-tr', + items: [ + {template: _.template('
      ')}, + { caption: '--' }, + { + caption: me.txtAdditional, + value: 'more' + } + ] + }) + }); + mnu.menu.items[2].on('click', function (item, e) { + me.fireEvent('function:apply', [{name: item.caption, origin: item.value}, false, name]); + }); + mnu.menu.on('show:after', function (menu, e) { + var internalMenu = menu._innerMenu; + internalMenu.scroller.update({alwaysVisibleY: true}); + _.delay(function() { + menu._innerMenu && menu._innerMenu.items[0].cmpEl.find('> a').focus(); + }, 10); + }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)) + .on('keydown:before', function(menu, e) { + if (e.keyCode == Common.UI.Keys.LEFT || e.keyCode == Common.UI.Keys.ESC) { + var $parent = menu.cmpEl.parent(); + if ($parent.hasClass('dropdown-submenu') && $parent.hasClass('over')) { // close submenu + $parent.removeClass('over'); + $parent.find('> a').focus(); + } + } + }); + + // internal menu + var menu = new Common.UI.Menu({ + maxHeight: 300, + cls: 'internal-menu', + items: arr + }); + menu.on('item:click', function (menu, item, e) { + me.fireEvent('function:apply', [{name: item.caption, origin: item.value}, false, name]); + }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); + mnu.menu._innerMenu = menu; + menu._outerMenu = mnu.menu; + return mnu; + } + } + }, + + fillFunctions: function () { + if (this.formulasGroups) { + this.setButtonMenu(this.btnFinancial, 'Financial'); + this.setButtonMenu(this.btnLogical, 'Logical'); + this.setButtonMenu(this.btnTextData, 'TextAndData'); + this.setButtonMenu(this.btnDateTime, 'DateAndTime'); + this.setButtonMenu(this.btnReference, 'LookupAndReference'); + this.setButtonMenu(this.btnMath, 'Mathematic'); + this.setButtonMenu(this.btnRecent, 'Last10'); + + var formulas = this.btnAutosum.menu.items; + for (var i=0; i', + '
      ', + '
      ', + '' + ].join(''); + + this.options.tpl = _.template(this.template)(this.options); + + Common.UI.Window.prototype.initialize.call(this, this.options); + }, + + render: function() { + Common.UI.Window.prototype.render.call(this); + + this.radioRows = new Common.UI.RadioBox({ + el: $('#group-radio-rows'), + labelText: this.textRows, + name: 'asc-radio-group-cells', + checked: this.options.props=='rows' + }); + + this.radioColumns = new Common.UI.RadioBox({ + el: $('#group-radio-cols'), + labelText: this.textColumns, + name: 'asc-radio-group-cells', + checked: this.options.props=='columns' + }); + (this.options.props=='rows') ? this.radioRows.setValue(true) : this.radioColumns.setValue(true); + + var $window = this.getChild(); + $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + }, + + _handleInput: function(state) { + if (this.options.handler) { + this.options.handler.call(this, this, state); + } + + this.close(); + }, + + onBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + getSettings: function() { + return this.radioRows.getValue(); + }, + + onPrimary: function() { + this._handleInput('ok'); + return false; + }, + + cancelButtonText: 'Cancel', + okButtonText: 'Ok', + textRows: 'Rows', + textColumns: 'Columns' + }, SSE.Views.GroupDialog || {})) +}); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/HeaderFooterDialog.js b/apps/spreadsheeteditor/main/app/view/HeaderFooterDialog.js new file mode 100644 index 000000000..5e2a3cbd6 --- /dev/null +++ b/apps/spreadsheeteditor/main/app/view/HeaderFooterDialog.js @@ -0,0 +1,1055 @@ +/* + * + * (c) Copyright Ascensio System Limited 2010-2019 + * + * 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 Lubanas st. 125a-25, Riga, Latvia, + * EU, LV-1021. + * + * 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 + * +*/ +/** + * HeaderFooterDialog.js + * + * Created by Julia Radzhabova on 10/11/18 + * Copyright (c) 2018 Ascensio System SIA. All rights reserved. + * + */ + + +define([ + 'common/main/lib/util/utils', + 'common/main/lib/component/InputField', + 'common/main/lib/component/Window', + 'common/main/lib/component/ComboBoxFonts' +], function () { 'use strict'; + + SSE.Views.HeaderFooterDialog = Common.UI.Window.extend(_.extend({ + options: { + width: 647, + style: 'min-width: 350px;', + cls: 'modal-dlg enable-key-events', + animate: {mask: false} + }, + + initialize : function(options) { + _.extend(this.options, { + title: this.textTitle + }, options || {}); + + this.api = this.options.api; + this.props = this.options.props; + this.fontStore = this.options.fontStore; + this.isFooter = false; + this.currentCanvas = null; + this.headerControls = []; + this.footerControls = []; + this._state = { + clrtext: undefined, + bold: undefined, + italic: undefined, + underline: undefined, + strikeout: undefined, + subscript: undefined, + superscript: undefined, + fontsize: undefined, + fontname: 'Arial' + }; + + this.template = [ + '
      ', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '', + '', + '', + '', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ','
      ', + '
      ','
      ', + '
      ','
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ', + '
      ','
      ', + '
      ','
      ', + '
      ','
      ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '' + ].join(''); + + this.options.tpl = _.template(this.template)(this.options); + Common.UI.Window.prototype.initialize.call(this, this.options); + }, + + render: function() { + Common.UI.Window.prototype.render.call(this); + + var me = this, + $window = this.getChild(); + + this.chFirstPage = new Common.UI.CheckBox({ + el: $('#id-dlg-hf-ch-first'), + labelText: this.textDiffFirst + }); + this.chFirstPage.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + var checked = (field.getValue()=='checked'); + var id = (this.HFObject) ? this.HFObject.setDifferentFirst(checked) : null; + if (id) { + var me = this; + this.showError(function() { + field.setValue(!checked, true); + _.delay(function(){ + me.onCanvasClick(id); + },50); + }); + return; + } + + this.btnFirst.setVisible(checked); + if (!checked && this.btnFirst.isActive()) + (this.btnAll.isVisible()) ? this.btnAll.toggle(true) : this.btnOdd.toggle(true); + }, this)); + + this.chOddPage = new Common.UI.CheckBox({ + el: $('#id-dlg-hf-ch-odd'), + labelText: this.textDiffOdd + }); + this.chOddPage.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + var checked = (field.getValue()=='checked'); + var id = (this.HFObject) ? this.HFObject.setDifferentOddEven(checked) : null; + if (id) { + var me = this; + this.showError(function() { + field.setValue(!checked, true); + _.delay(function(){ + me.onCanvasClick(id); + },50); + }); + return; + } + + this.btnOdd.setVisible(checked); + this.btnEven.setVisible(checked); + this.btnAll.setVisible(!checked); + if (!checked && (this.btnOdd.isActive() || this.btnEven.isActive())) + this.btnAll.toggle(true); + if (checked && this.btnAll.isActive()) + this.btnOdd.toggle(true); + }, this)); + + this.chScale = new Common.UI.CheckBox({ + el: $('#id-dlg-hf-ch-scale'), + labelText: this.textScale + }); + this.chScale.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + var checked = (field.getValue()=='checked'); + if (this.HFObject) + this.HFObject.setScaleWithDoc(checked); + }, this)); + + this.chAlign = new Common.UI.CheckBox({ + el: $('#id-dlg-hf-ch-align'), + labelText: this.textAlign + }); + this.chAlign.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + var checked = (field.getValue()=='checked'); + if (this.HFObject) + this.HFObject.setAlignWithMargins(checked); + }, this)); + + this.btnAll = new Common.UI.Button({ + el: $('#id-dlg-hf-btn-all'), + enableToggle: true, + toggleGroup: 'hf-pages', + allowDepress: false, + pressed: true + }); + this.btnAll.on('toggle', _.bind(this.onPageTypeToggle, this, Asc.c_oAscHeaderFooterType.odd)); + + this.btnOdd = new Common.UI.Button({ + el: $('#id-dlg-hf-btn-odd'), + enableToggle: true, + toggleGroup: 'hf-pages', + allowDepress: false + }); + this.btnOdd.on('toggle', _.bind(this.onPageTypeToggle, this, Asc.c_oAscHeaderFooterType.odd)); + + this.btnEven = new Common.UI.Button({ + el: $('#id-dlg-hf-btn-even'), + enableToggle: true, + toggleGroup: 'hf-pages', + allowDepress: false + }); + this.btnEven.on('toggle', _.bind(this.onPageTypeToggle, this, Asc.c_oAscHeaderFooterType.even)); + + this.btnFirst = new Common.UI.Button({ + el: $('#id-dlg-hf-btn-first'), + enableToggle: true, + toggleGroup: 'hf-pages', + allowDepress: false + }); + this.btnFirst.on('toggle', _.bind(this.onPageTypeToggle, this, Asc.c_oAscHeaderFooterType.first)); + + this.cmbPresetsH = new Common.UI.ComboBox({ + el : $('#id-dlg-h-presets'), + cls : 'input-group-nr', + style : 'width: 110px;', + menuStyle : 'min-width: 100%; max-height: 200px;', + editable : false, + scrollAlwaysVisible: true, + data: [] + }); + this.cmbPresetsH.on('selected', _.bind(this.onPresetSelect, this, false)); + this.cmbPresetsH.setValue(this.textPresets); + + this.cmbPresetsF = new Common.UI.ComboBox({ + el : $('#id-dlg-f-presets'), + cls : 'input-group-nr', + style : 'width: 110px;', + menuStyle : 'min-width: 100%; max-height: 200px;', + editable : false, + scrollAlwaysVisible: true, + data: [] + }); + this.cmbPresetsF.on('selected', _.bind(this.onPresetSelect, this, true)); + this.cmbPresetsF.setValue(this.textPresets); + + var data = [ + {displayValue: this.textPageNum, value: Asc.c_oAscHeaderFooterField.pageNumber}, + {displayValue: this.textPageCount, value: Asc.c_oAscHeaderFooterField.pageCount}, + {displayValue: this.textDate, value: Asc.c_oAscHeaderFooterField.date}, + {displayValue: this.textTime, value: Asc.c_oAscHeaderFooterField.time}, + {displayValue: this.textFileName, value: Asc.c_oAscHeaderFooterField.fileName}, + {displayValue: this.textSheet, value: Asc.c_oAscHeaderFooterField.sheetName} + ]; + + this.cmbInsertH = new Common.UI.ComboBox({ + el : $('#id-dlg-h-insert'), + cls : 'input-group-nr', + style : 'width: 110px;', + menuStyle : 'min-width: 100%; max-heigh: 100px;', + editable : false, + data: data + }); + this.cmbInsertH.on('selected', _.bind(this.onObjectSelect, this)); + this.cmbInsertH.setValue(this.textInsert); + this.headerControls.push(this.cmbInsertH); + + this.cmbInsertF = new Common.UI.ComboBox({ + el : $('#id-dlg-f-insert'), + cls : 'input-group-nr', + style : 'width: 110px;', + menuStyle : 'min-width: 100%; max-heigh: 100px;', + editable : false, + data: data + }); + this.cmbInsertF.on('selected', _.bind(this.onObjectSelect, this)); + this.cmbInsertF.setValue(this.textInsert); + this.footerControls.push(this.cmbInsertF); + + this.cmbFonts = []; + this.cmbFonts.push(new Common.UI.ComboBoxFonts({ + el : $('#id-dlg-h-fonts'), + cls : 'input-group-nr', + style : 'width: 142px;', + menuCls : 'scrollable-menu', + menuStyle : 'min-width: 100%;max-height: 270px;', + store : new Common.Collections.Fonts(), + recent : 0, + hint : this.tipFontName + })); + this.cmbFonts[0].on('selected', _.bind(this.onFontSelect, this)); + this.headerControls.push(this.cmbFonts[0]); + + this.cmbFonts.push(new Common.UI.ComboBoxFonts({ + el : $('#id-dlg-f-fonts'), + cls : 'input-group-nr', + style : 'width: 142px;', + menuCls : 'scrollable-menu', + menuStyle : 'min-width: 100%;max-height: 270px;', + store : new Common.Collections.Fonts(), + recent : 0, + hint : this.tipFontName + })); + this.cmbFonts[1].on('selected', _.bind(this.onFontSelect, this)); + this.footerControls.push(this.cmbFonts[1]); + Common.NotificationCenter.on('fonts:change', _.bind(this.onApiChangeFont, this)); + + data = [ + { value: 8, displayValue: "8" }, + { value: 9, displayValue: "9" }, + { value: 10, displayValue: "10" }, + { value: 11, displayValue: "11" }, + { value: 12, displayValue: "12" }, + { value: 14, displayValue: "14" }, + { value: 16, displayValue: "16" }, + { value: 18, displayValue: "18" }, + { value: 20, displayValue: "20" }, + { value: 22, displayValue: "22" }, + { value: 24, displayValue: "24" }, + { value: 26, displayValue: "26" }, + { value: 28, displayValue: "28" }, + { value: 36, displayValue: "36" }, + { value: 48, displayValue: "48" }, + { value: 72, displayValue: "72" } + ]; + this.cmbFontSize = []; + this.cmbFontSize.push(new Common.UI.ComboBox({ + el: $('#id-dlg-h-font-size'), + cls: 'input-group-nr', + style: 'width: 55px;', + menuCls : 'scrollable-menu', + menuStyle: 'min-width: 55px;max-height: 270px;', + hint: this.tipFontSize, + data: data + })); + this.cmbFontSize[0].on('selected', _.bind(this.onFontSizeSelect, this)); + this.cmbFontSize[0].on('changed:before', _.bind(this.onFontSizeChanged, this, true)); + this.cmbFontSize[0].on('changed:after', _.bind(this.onFontSizeChanged, this, false)); + + this.cmbFontSize[0].setValue(this._state.fontsize); + this.headerControls.push(this.cmbFontSize[0]); + + this.cmbFontSize.push(new Common.UI.ComboBox({ + el: $('#id-dlg-f-font-size'), + cls: 'input-group-nr', + style: 'width: 55px;', + menuCls : 'scrollable-menu', + menuStyle: 'min-width: 55px;max-height: 270px;', + hint: this.tipFontSize, + data: data + })); + this.cmbFontSize[1].on('selected', _.bind(this.onFontSizeSelect, this)); + this.cmbFontSize[1].on('changed:before', _.bind(this.onFontSizeChanged, this, true)); + this.cmbFontSize[1].on('changed:after', _.bind(this.onFontSizeChanged, this, false)); + this.cmbFontSize[1].setValue(this._state.fontsize); + this.footerControls.push(this.cmbFontSize[1]); + + this.btnBold = []; + this.btnBold.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-bold', + enableToggle: true, + hint: this.textBold + })); + this.btnBold[0].render($('#id-dlg-h-bold')) ; + this.btnBold[0].on('click', _.bind(this.onBoldClick, this)); + this.headerControls.push(this.btnBold[0]); + + this.btnBold.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-bold', + enableToggle: true, + hint: this.textBold + })); + this.btnBold[1].render($('#id-dlg-f-bold')) ; + this.btnBold[1].on('click', _.bind(this.onBoldClick, this)); + this.footerControls.push(this.btnBold[1]); + + this.btnItalic = []; + this.btnItalic.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-italic', + enableToggle: true, + hint: this.textItalic + })); + this.btnItalic[0].render($('#id-dlg-h-italic')) ; + this.btnItalic[0].on('click', _.bind(this.onItalicClick, this)); + this.headerControls.push(this.btnItalic[0]); + + this.btnItalic.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-italic', + enableToggle: true, + hint: this.textItalic + })); + this.btnItalic[1].render($('#id-dlg-f-italic')) ; + this.btnItalic[1].on('click', _.bind(this.onItalicClick, this)); + this.footerControls.push(this.btnItalic[1]); + + this.btnUnderline = []; + this.btnUnderline.push(new Common.UI.Button({ + cls : 'btn-toolbar', + iconCls : 'btn-underline', + enableToggle: true, + hint: this.textUnderline + })); + this.btnUnderline[0].render($('#id-dlg-h-underline')) ; + this.btnUnderline[0].on('click', _.bind(this.onUnderlineClick, this)); + this.headerControls.push(this.btnUnderline[0]); + + this.btnUnderline.push(new Common.UI.Button({ + cls : 'btn-toolbar', + iconCls : 'btn-underline', + enableToggle: true, + hint: this.textUnderline + })); + this.btnUnderline[1].render($('#id-dlg-f-underline')) ; + this.btnUnderline[1].on('click', _.bind(this.onUnderlineClick, this)); + this.footerControls.push(this.btnUnderline[1]); + + this.btnStrikeout = []; + this.btnStrikeout.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-strikeout', + enableToggle: true, + hint: this.textStrikeout + })); + this.btnStrikeout[0].render($('#id-dlg-h-strikeout')) ; + this.btnStrikeout[0].on('click',_.bind(this.onStrikeoutClick, this)); + this.headerControls.push(this.btnStrikeout[0]); + + this.btnStrikeout.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-strikeout', + enableToggle: true, + hint: this.textStrikeout + })); + this.btnStrikeout[1].render($('#id-dlg-f-strikeout')) ; + this.btnStrikeout[1].on('click',_.bind(this.onStrikeoutClick, this)); + this.footerControls.push(this.btnStrikeout[1]); + + this.btnSuperscript = []; + this.btnSuperscript.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-superscript', + enableToggle: true, + toggleGroup: 'superscriptHFGroup', + hint: this.textSuperscript + })); + this.btnSuperscript[0].render($('#id-dlg-h-superscript')) ; + this.btnSuperscript[0].on('click', _.bind(this.onSuperscriptClick, this)); + this.headerControls.push(this.btnSuperscript[0]); + + this.btnSuperscript.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-superscript', + enableToggle: true, + toggleGroup: 'superscriptHFGroup', + hint: this.textSuperscript + })); + this.btnSuperscript[1].render($('#id-dlg-f-superscript')) ; + this.btnSuperscript[1].on('click', _.bind(this.onSuperscriptClick, this)); + this.footerControls.push(this.btnSuperscript[1]); + + this.btnSubscript = []; + this.btnSubscript.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-subscript', + enableToggle: true, + toggleGroup: 'superscriptHFGroup', + hint: this.textSubscript + })); + this.btnSubscript[0].render($('#id-dlg-h-subscript')) ; + this.btnSubscript[0].on('click', _.bind(this.onSubscriptClick, this)); + this.headerControls.push(this.btnSubscript[0]); + + this.btnSubscript.push(new Common.UI.Button({ + cls: 'btn-toolbar', + iconCls: 'btn-subscript', + enableToggle: true, + toggleGroup: 'superscriptHFGroup', + hint: this.textSubscript + })); + this.btnSubscript[1].render($('#id-dlg-f-subscript')) ; + this.btnSubscript[1].on('click', _.bind(this.onSubscriptClick, this)); + this.footerControls.push(this.btnSubscript[1]); + + var initNewColor = function(btn, picker_el) { + if (btn && btn.cmpEl) { + btn.currentColor = '#000000'; + var colorVal = $('
      '); + $('button:first-child', btn.cmpEl).append(colorVal); + colorVal.css('background-color', btn.currentColor); + var picker = new Common.UI.ThemeColorPalette({ + el: $(picker_el) + }); + picker.currentColor = btn.currentColor; + } + btn.menu.cmpEl.on('click', picker_el+'-new', _.bind(function() { + picker.addNewColor((typeof(btn.color) == 'object') ? btn.color.color : btn.color); + }, me)); + picker.on('select', _.bind(me.onColorSelect, me, btn)); + return picker; + }; + this.btnTextColor = []; + this.btnTextColor.push(new Common.UI.Button({ + cls : 'btn-toolbar', + iconCls : 'btn-fontcolor', + hint : this.textColor, + split : true, + menu : new Common.UI.Menu({ + items: [ + { template: _.template('
      ') }, + { template: _.template('' + this.textNewColor + '') } + ] + }) + })); + this.btnTextColor[0].render($('#id-dlg-h-textcolor')); + this.btnTextColor[0].on('click', _.bind(this.onTextColor, this)); + this.mnuTextColorPicker = []; + this.mnuTextColorPicker.push(initNewColor(this.btnTextColor[0], "#id-dlg-h-menu-fontcolor")); + this.headerControls.push(this.btnTextColor[0]); + + this.btnTextColor.push(new Common.UI.Button({ + cls : 'btn-toolbar', + iconCls : 'btn-fontcolor', + hint : this.textColor, + split : true, + menu : new Common.UI.Menu({ + items: [ + { template: _.template('
      ') }, + { template: _.template('' + this.textNewColor + '') } + ] + }) + })); + this.btnTextColor[1].render($('#id-dlg-f-textcolor')); + this.btnTextColor[1].on('click', _.bind(this.onTextColor, this)); + this.mnuTextColorPicker.push(initNewColor(this.btnTextColor[1], "#id-dlg-f-menu-fontcolor")); + this.footerControls.push(this.btnTextColor[1]); + + this.btnOk = new Common.UI.Button({ + el: $window.find('.primary') + }); + + $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + + this.scrollers = []; + this.initCanvas('#header-left-img'); + this.initCanvas('#header-center-img'); + this.initCanvas('#header-right-img'); + this.initCanvas('#footer-left-img'); + this.initCanvas('#footer-center-img'); + this.initCanvas('#footer-right-img'); + + this.wrapEvents = { + onApiEditorSelectionChanged: _.bind(this.onApiEditorSelectionChanged, this), + onApiResizeEditorHeight: _.bind(this.onApiResizeEditorHeight, this), + onUpdateEditorCursorPosition: _.bind(this.onUpdateEditorCursorPosition, this) + }; + + this.afterRender(); + }, + + initCanvas: function(name) { + var el = this.$window.find(name); + el.on('click', _.bind(this.onCanvasClick, this, name)); + this.canvasBoxHeight = el.height(); + this.scrollers[name] = new Common.UI.Scroller({ + el: el.parent(), + minScrollbarLength : 20 + }); + this.scrollers[name].update(); + this.scrollers[name].scrollTop(0); + }, + + show: function() { + Common.UI.Window.prototype.show.apply(this, arguments); + }, + + close: function() { + this.api.asc_unregisterCallback('asc_onEditorSelectionChanged', this.wrapEvents.onApiEditorSelectionChanged); + this.api.asc_unregisterCallback('asc_resizeEditorHeight', this.wrapEvents.onApiResizeEditorHeight); + this.api.asc_unregisterCallback('asc_updateEditorCursorPosition', this.wrapEvents.onUpdateEditorCursorPosition); + + Common.UI.Window.prototype.close.apply(this, arguments); + + if (this.HFObject) + this.HFObject.destroy(); + }, + + afterRender: function () { + this.api.asc_registerCallback('asc_onEditorSelectionChanged', this.wrapEvents.onApiEditorSelectionChanged); + this.api.asc_registerCallback('asc_resizeEditorHeight', this.wrapEvents.onApiResizeEditorHeight); + this.api.asc_registerCallback('asc_updateEditorCursorPosition', this.wrapEvents.onUpdateEditorCursorPosition); + + this.cmbFonts[0].fillFonts(this.fontStore); + this.cmbFonts[0].selectRecord(this.fontStore.findWhere({name: this._state.fontname}) || this.fontStore.at(0)); + this.cmbFonts[1].fillFonts(this.fontStore); + this.cmbFonts[1].selectRecord(this.fontStore.findWhere({name: this._state.fontname}) || this.fontStore.at(0)); + this.updateThemeColors(); + + this.HFObject = new AscCommonExcel.CHeaderFooterEditor(['header-left-img', 'header-center-img', 'header-right-img', 'footer-left-img', 'footer-center-img', 'footer-right-img'], 205); + this._setDefaults(this.props); + this.editorCanvas = this.$window.find('#ce-canvas-menu'); + var me = this; + _.delay(function(){ + me.onCanvasClick('#header-left-img'); + },500); + }, + + _setDefaults: function (props) { + var presets = []; + this.HFObject.getTextPresetsArr().forEach(function(item, index){ + presets.push({displayValue: item, value: index}); + }); + this.cmbPresetsH.setData(presets); + this.cmbPresetsH.setValue(this.textPresets); + this.cmbPresetsF.setData(presets); + this.cmbPresetsF.setValue(this.textPresets); + + this.chOddPage.setValue(this.HFObject.getDifferentOddEven()); + this.chFirstPage.setValue(this.HFObject.getDifferentFirst()); + this.chAlign.setValue(this.HFObject.getAlignWithMargins()); + this.chScale.setValue(this.HFObject.getScaleWithDoc()); + + var value = (this.chOddPage.getValue() == 'checked'); + this.btnOdd.setVisible(value); + this.btnEven.setVisible(value); + this.btnAll.setVisible(!value); + value ? this.btnOdd.toggle(true) : this.btnAll.toggle(true); + + value = (this.chFirstPage.getValue() == 'checked'); + this.btnFirst.setVisible(value); + }, + + updateThemeColors: function() { + this.mnuTextColorPicker[0].updateColors(Common.Utils.ThemeColor.getEffectColors(), Common.Utils.ThemeColor.getStandartColors()); + this.mnuTextColorPicker[1].updateColors(Common.Utils.ThemeColor.getEffectColors(), Common.Utils.ThemeColor.getStandartColors()); + }, + + getSettings: function () { + var props = {}; + return props; + }, + + onBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + onPrimary: function(event) { + this._handleInput('ok'); + return false; + }, + + _handleInput: function(state) { + if (this.HFObject) { + var id = this.HFObject.destroy(state=='ok'); + if (id) { + var me = this; + this.showError(function() { + _.delay(function(){ + me.onCanvasClick(id); + },50); + }); + return; + } + this.HFObject = null; + } + if (this.options.handler) { + this.options.handler.call(this, this, state); + } + this.close(); + }, + + showError: function(callback) { + Common.UI.warning({ + title: this.notcriticalErrorTitle, + msg : this.textMaxError, + callback: callback + }); + }, + + scrollerUpdate: function() { + for (var name in this.scrollers) { + this.scrollers[name] && this.scrollers[name].update(); + } + }, + + scrollerScrollTop: function() { + for (var name in this.scrollers) { + this.scrollers[name] && this.scrollers[name].scrollTop(0); + } + }, + + onCanvasClick: function(id, event){ + if (!this.HFObject) return; + id = id || '#header-left-img'; + var diff = (this.currentCanvas !== id); + if (diff) { + this.currentCanvas = id; + this.isFooter = (id == '#footer-left-img' || id == '#footer-center-img' || id == '#footer-right-img'); + + var me = this; + this.headerControls.forEach(function(item){ + item.setDisabled(me.isFooter); + }); + this.footerControls.forEach(function(item){ + item.setDisabled(!me.isFooter); + }); + } + + if (event) { + var parent = $(event.currentTarget).parent(), + offset = parent.offset(); + this.HFObject.click(id, event.pageX*Common.Utils.zoom() - offset.left, event.pageY*Common.Utils.zoom() - offset.top + parent.scrollTop()); + } else + this.HFObject.click(id); + + diff && this.scrollerUpdate(); + }, + + onApiResizeEditorHeight: function(event) { + if (!this.editorCanvas) return; + var height = this.editorCanvas.height(); + if (height == this.editorCanvasHeight) return; + this.editorCanvasHeight = height; + + if (this.scrollers[this.currentCanvas]) + this.scrollers[this.currentCanvas].update(); + }, + + onUpdateEditorCursorPosition: function(pos, height) { + if (!this.editorCanvas) return; + var id = this.currentCanvas; + if (this.scrollers[id]) { + var top = this.scrollers[id].getScrollTop(); + if (pos + height>top+this.canvasBoxHeight) + this.scrollers[id].scrollTop(pos + height - this.canvasBoxHeight); + else if (pos 409 ? 409 : + value < 1 ? 1 : Math.floor((value+0.4)*2)/2; + + combo.setRawValue(value); + if (this.HFObject) + this.HFObject.setFontSize(value); + } + }, + + onBoldClick: function(btn, e) { + if (this.HFObject) { + this.HFObject.setBold(btn.pressed); + this.scrollerUpdate(); + } + }, + + onItalicClick: function(btn, e) { + if (this.HFObject) { + this.HFObject.setItalic(btn.pressed); + this.scrollerUpdate(); + } + }, + + onUnderlineClick: function(btn, e) { + if (this.HFObject) { + this.HFObject.setUnderline(btn.pressed); + this.scrollerUpdate(); + } + }, + + onStrikeoutClick: function(btn, e) { + if (this.HFObject) { + this.HFObject.setStrikeout(btn.pressed); + this.scrollerUpdate(); + } + }, + + onSuperscriptClick: function(btn, e) { + if (this.HFObject) { + this.HFObject.setSuperscript(btn.pressed); + this.scrollerUpdate(); + } + }, + + onSubscriptClick: function(btn, e) { + if (this.HFObject) { + this.HFObject.setSubscript(btn.pressed); + this.scrollerUpdate(); + } + }, + + onTextColor: function() { + var mnuTextColorPicker = this.mnuTextColorPicker[this.isFooter ? 1 : 0]; + mnuTextColorPicker.trigger('select', mnuTextColorPicker, mnuTextColorPicker.currentColor, true); + }, + + onColorSelect: function(btn, picker, color) { + var clr = (typeof(color) == 'object') ? color.color : color; + btn.currentColor = color; + $('.btn-color-value-line', btn.cmpEl).css('background-color', '#' + clr); + picker.currentColor = color; + if (this.HFObject) + this.HFObject.setTextColor(Common.Utils.ThemeColor.getRgbColor(color)); + this.onCanvasClick(this.currentCanvas); + }, + + onPageTypeToggle: function(type, btn, state) { + if (this._pagetype) return; + + if (state && this.HFObject) { + var prev = this.HFObject.getPageType(), + id = this.HFObject.switchHeaderFooterType(type); + if (id) { + this._pagetype = true; + var me = this; + this.showError(function() { + switch (prev) { + case Asc.c_oAscHeaderFooterType.odd: + me.btnOdd.isVisible() ? me.btnOdd.toggle(true) : me.btnAll.toggle(true); + break; + case Asc.c_oAscHeaderFooterType.even: + me.btnEven.toggle(true); + break; + case Asc.c_oAscHeaderFooterType.first: + me.btnFirst.toggle(true); + break; + } + _.delay(function(){ + me.onCanvasClick(id); + },50); + me._pagetype = false; + }); + return; + } + + this.scrollerScrollTop(); + this.onCanvasClick(this.currentCanvas, undefined, true); + } + }, + + onApiChangeFont: function(font) { + this.cmbFonts[this.isFooter ? 1 : 0].onApiChangeFont(font); + }, + + onApiEditorSelectionChanged: function(fontobj) { + var idx = this.isFooter ? 1 : 0, + val; + + /* read font name */ + var fontparam = fontobj.asc_getName(); + if (fontparam != this.cmbFonts[idx].getValue()) { + Common.NotificationCenter.trigger('fonts:change', fontobj); + } + + /* read font params */ + val = fontobj.asc_getBold(); + if (this.btnBold[idx].isActive() !== val) + this.btnBold[idx].toggle(val === true, true); + + val = fontobj.asc_getItalic(); + if (this.btnItalic[idx].isActive() !== val) + this.btnItalic[idx].toggle(val === true, true); + + val = fontobj.asc_getUnderline(); + if (this.btnUnderline[idx].isActive() !== val) + this.btnUnderline[idx].toggle(val === true, true); + + val = fontobj.asc_getStrikeout(); + if (this.btnStrikeout[idx].isActive() !== val) + this.btnStrikeout[idx].toggle(val === true, true); + + val = fontobj.asc_getSubscript(); + if (this.btnSubscript[idx].isActive() !== val) + this.btnSubscript[idx].toggle(val === true, true); + + val = fontobj.asc_getSuperscript(); + if (this.btnSuperscript[idx].isActive() !== val) + this.btnSuperscript[idx].toggle(val === true, true); + + /* read font size */ + var str_size = fontobj.asc_getSize(); + if (this.cmbFontSize[idx].getValue() !== str_size) + this.cmbFontSize[idx].setValue((str_size!==undefined) ? str_size : ''); + + /* read font color */ + var clr, + color, + fontColorPicker = this.mnuTextColorPicker[idx]; + color = fontobj.asc_getColor(); + if (color) { + if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { + clr = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value() }; + } else { + clr = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); + } + } + if (_.isObject(clr)) { + var isselected = false; + for (var i = 0; i < 10; i++) { + if (Common.Utils.ThemeColor.ThemeValues[i] == clr.effectValue) { + fontColorPicker.select(clr, true); + isselected = true; + break; + } + } + if (!isselected) fontColorPicker.clearSelection(); + } else { + fontColorPicker.select(clr, true); + } + }, + + cancelButtonText: 'Cancel', + okButtonText: 'Ok', + tipFontName: 'Font', + tipFontSize: 'Font size', + textBold: 'Bold', + textItalic: 'Italic', + textUnderline: 'Underline', + textStrikeout: 'Strikeout', + textSuperscript: 'Superscript', + textSubscript: 'Subscript', + textTitle: 'Header/Footer Settings', + textHeader: 'Header', + textFooter: 'Footer', + textLeft: 'Left', + textCenter: 'Center', + textRight: 'Right', + textPageNum: 'Page number', + textPageCount: 'Page count', + textDate: 'Date', + textTime: 'Time', + textFileName: 'File name', + textSheet: 'Sheet name', + textColor: 'Text color', + textNewColor: 'Add New Custom Color', + textInsert: 'Insert', + textPresets: 'Presets', + textDiffFirst: 'Different first page', + textDiffOdd: 'Different odd and even pages', + textScale: 'Scale with document', + textAlign: 'Align with page margins', + textFirst: 'First page', + textOdd: 'Odd page', + textEven: 'Even page', + textAll: 'All pages', + textMaxError: 'The text string you entered is too long. Reduce the number of characters used.' + + }, SSE.Views.HeaderFooterDialog || {})) +}); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/ImageSettingsAdvanced.js b/apps/spreadsheeteditor/main/app/view/ImageSettingsAdvanced.js index 24b98a496..93e88d8a1 100644 --- a/apps/spreadsheeteditor/main/app/view/ImageSettingsAdvanced.js +++ b/apps/spreadsheeteditor/main/app/view/ImageSettingsAdvanced.js @@ -141,6 +141,9 @@ define([ 'text!spreadsheeteditor/main/app/template/ImageSettingsAdvanced.temp this.chFlipHor.setValue(props.asc_getFlipH()); this.chFlipVert.setValue(props.asc_getFlipV()); + var pluginGuid = props.asc_getPluginGuid(); + this.btnsCategory[0].setVisible(pluginGuid === null || pluginGuid === undefined); // Rotation + this._changedProps = new Asc.asc_CImgProperty(); } }, diff --git a/apps/spreadsheeteditor/main/app/view/LeftMenu.js b/apps/spreadsheeteditor/main/app/view/LeftMenu.js index c88ea99fd..2fd3376f3 100644 --- a/apps/spreadsheeteditor/main/app/view/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/view/LeftMenu.js @@ -63,6 +63,7 @@ define([ 'click #left-btn-chat': _.bind(this.onCoauthOptions, this), /** coauthoring end **/ 'click #left-btn-plugins': _.bind(this.onCoauthOptions, this), + 'click #left-btn-spellcheck': _.bind(this.onCoauthOptions, this), 'click #left-btn-support': function() { var config = this.mode.customization; config && !!config.feedback && !!config.feedback.url ? @@ -141,6 +142,16 @@ define([ this.btnPlugins.hide(); this.btnPlugins.on('click', _.bind(this.onBtnMenuClick, this)); + this.btnSpellcheck = new Common.UI.Button({ + el: $('#left-btn-spellcheck'), + hint: this.tipSpellcheck, + enableToggle: true, + disabled: true, + toggleGroup: 'leftMenuGroup' + }); + this.btnSpellcheck.hide(); + this.btnSpellcheck.on('click', _.bind(this.onBtnMenuClick, this)); + this.btnSearch.on('click', _.bind(this.onBtnMenuClick, this)); this.btnAbout.on('toggle', _.bind(this.onBtnMenuToggle, this)); @@ -210,6 +221,12 @@ define([ this.panelChat['hide'](); } } + if (this.panelSpellcheck) { + if (this.btnSpellcheck.pressed) { + this.panelSpellcheck.show(); + } else + this.panelSpellcheck['hide'](); + } // if (this.mode.canPlugins && this.panelPlugins) { // if (this.btnPlugins.pressed) { // this.panelPlugins.show(); @@ -226,6 +243,9 @@ define([ } else if (name == 'plugins' && !this.panelPlugins) { this.panelPlugins = panel.render('#left-panel-plugins'); + } else + if (name == 'spellcheck' && !this.panelSpellcheck) { + this.panelSpellcheck = panel.render('#left-panel-spellcheck'); } }, @@ -263,6 +283,10 @@ define([ this.panelPlugins['hide'](); this.btnPlugins.toggle(false, true); } + if (this.panelSpellcheck) { + this.panelSpellcheck['hide'](); + this.btnSpellcheck.toggle(false, true); + } }, isOpened: function() { @@ -282,6 +306,7 @@ define([ this.btnChat.setDisabled(false); /** coauthoring end **/ this.btnPlugins.setDisabled(false); + this.btnSpellcheck.setDisabled(false); }, showMenu: function(menu) { @@ -356,6 +381,7 @@ define([ tipSearch : 'Search', tipPlugins : 'Plugins', txtDeveloper: 'DEVELOPER MODE', - txtTrial: 'TRIAL MODE' + txtTrial: 'TRIAL MODE', + tipSpellcheck: 'Spell checking' }, SSE.Views.LeftMenu || {})); }); diff --git a/apps/spreadsheeteditor/main/app/view/NameManagerDlg.js b/apps/spreadsheeteditor/main/app/view/NameManagerDlg.js index 8f7cf01c6..54f6182e0 100644 --- a/apps/spreadsheeteditor/main/app/view/NameManagerDlg.js +++ b/apps/spreadsheeteditor/main/app/view/NameManagerDlg.js @@ -284,8 +284,8 @@ define([ 'text!spreadsheeteditor/main/app/template/NameManagerDlg.template', var me = this, xy = me.$window.offset(), rec = this.rangeList.getSelectedRec(), - idx = _.indexOf(this.rangeList.store.models, rec[0]), - oldname = (isEdit && rec.length>0) ? new Asc.asc_CDefName(rec[0].get('name'), rec[0].get('range'), rec[0].get('scope'), rec[0].get('isTable'), undefined, undefined, undefined, true) : null; + idx = _.indexOf(this.rangeList.store.models, rec), + oldname = (isEdit && rec) ? new Asc.asc_CDefName(rec.get('name'), rec.get('range'), rec.get('scope'), rec.get('isTable'), undefined, undefined, undefined, true) : null; var win = new SSE.Views.NamedRangeEditDlg({ api: me.api, @@ -317,9 +317,9 @@ define([ 'text!spreadsheeteditor/main/app/template/NameManagerDlg.template', onDeleteRange: function () { var rec = this.rangeList.getSelectedRec(); - if (rec.length>0) { - this.currentNamedRange = _.indexOf(this.rangeList.store.models, rec[0]); - this.api.asc_delDefinedNames(new Asc.asc_CDefName(rec[0].get('name'), rec[0].get('range'), rec[0].get('scope'), rec[0].get('isTable'), undefined, undefined, undefined, true)); + if (rec) { + this.currentNamedRange = _.indexOf(this.rangeList.store.models, rec); + this.api.asc_delDefinedNames(new Asc.asc_CDefName(rec.get('name'), rec.get('range'), rec.get('scope'), rec.get('isTable'), undefined, undefined, undefined, true)); } }, diff --git a/apps/spreadsheeteditor/main/app/view/NamedRangePasteDlg.js b/apps/spreadsheeteditor/main/app/view/NamedRangePasteDlg.js index 54f86f95e..44fea2bc6 100644 --- a/apps/spreadsheeteditor/main/app/view/NamedRangePasteDlg.js +++ b/apps/spreadsheeteditor/main/app/view/NamedRangePasteDlg.js @@ -150,7 +150,7 @@ define([ getSettings: function() { var rec = this.rangeList.getSelectedRec(); - return (rec.length>0) ? (new Asc.asc_CDefName(rec[0].get('name'), rec[0].get('range'), rec[0].get('scope'), rec[0].get('isTable'), undefined, undefined, undefined, true)) : null; + return (rec) ? (new Asc.asc_CDefName(rec.get('name'), rec.get('range'), rec.get('scope'), rec.get('isTable'), undefined, undefined, undefined, true)) : null; }, onPrimary: function() { diff --git a/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js index 24cc31f88..a92439417 100644 --- a/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js @@ -49,13 +49,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. SSE.Views.ParagraphSettingsAdvanced = Common.Views.AdvancedSettingsWindow.extend(_.extend({ options: { - contentWidth: 320, + contentWidth: 370, height: 394, toggleGroup: 'paragraph-adv-settings-group', storageName: 'sse-para-settings-adv-category' }, initialize : function(options) { + var me = this; _.extend(this.options, { title: this.textTitle, items: [ @@ -74,9 +75,43 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this._noApply = true; this._tabListChanged = false; this.spinners = []; + this.FirstLine = undefined; + this.Spacing = null; this.api = this.options.api; this._originalProps = new Asc.asc_CParagraphProperty(this.options.paragraphProps); + + this._arrLineRule = [ + {displayValue: this.textAuto, defaultValue: 1, value: c_paragraphLinerule.LINERULE_AUTO, minValue: 0.5, step: 0.01, defaultUnit: ''}, + {displayValue: this.textExact, defaultValue: 5, value: c_paragraphLinerule.LINERULE_EXACT, minValue: 0.03, step: 0.01, defaultUnit: 'cm'} + ]; + + var curLineRule = this._originalProps.asc_getSpacing().asc_getLineRule(), + curItem = _.findWhere(this._arrLineRule, {value: curLineRule}); + this.CurLineRuleIdx = this._arrLineRule.indexOf(curItem); + + this._arrTextAlignment = [ + {displayValue: this.textTabLeft, value: c_paragraphTextAlignment.LEFT}, + {displayValue: this.textTabCenter, value: c_paragraphTextAlignment.CENTERED}, + {displayValue: this.textTabRight, value: c_paragraphTextAlignment.RIGHT}, + {displayValue: this.textJustified, value: c_paragraphTextAlignment.JUSTIFIED} + ]; + + this._arrSpecial = [ + {displayValue: this.textNoneSpecial, value: c_paragraphSpecial.NONE_SPECIAL, defaultValue: 0}, + {displayValue: this.textFirstLine, value: c_paragraphSpecial.FIRST_LINE, defaultValue: 12.7}, + {displayValue: this.textHanging, value: c_paragraphSpecial.HANGING, defaultValue: 12.7} + ]; + + this._arrTabAlign = [ + { value: 1, displayValue: this.textTabLeft }, + { value: 3, displayValue: this.textTabCenter }, + { value: 2, displayValue: this.textTabRight } + ]; + this._arrKeyTabAlign = []; + this._arrTabAlign.forEach(function(item) { + me._arrKeyTabAlign[item.value] = item.displayValue; + }); }, render: function() { @@ -86,24 +121,15 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. // Indents & Placement - this.numFirstLine = new Common.UI.MetricSpinner({ - el: $('#paragraphadv-spin-first-line'), - step: .1, - width: 85, - defaultUnit : "cm", - defaultValue : 0, - value: '0 cm', - maxValue: 55.87, - minValue: -55.87 + this.cmbTextAlignment = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-text-alignment'), + cls: 'input-group-nr', + editable: false, + data: this._arrTextAlignment, + style: 'width: 173px;', + menuStyle : 'min-width: 173px;' }); - this.numFirstLine.on('change', _.bind(function(field, newValue, oldValue, eOpts){ - if (this._changedProps) { - if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined) - this._changedProps.asc_putInd(new Asc.asc_CParagraphInd()); - this._changedProps.asc_getInd().asc_putFirstLine(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - } - }, this)); - this.spinners.push(this.numFirstLine); + this.cmbTextAlignment.setValue(''); this.numIndentsLeft = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-indent-left'), @@ -113,13 +139,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. defaultValue : 0, value: '0 cm', maxValue: 55.87, - minValue: -55.87 + minValue: 0 }); this.numIndentsLeft.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + var numval = field.getNumberValue(); if (this._changedProps) { if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined) - this._changedProps.asc_putInd(new Asc.asc_CParagraphInd()); - this._changedProps.asc_getInd().asc_putLeft(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + this._changedProps.asc_getInd().put_Left(Common.Utils.Metric.fnRecalcToMM(numval)); } }, this)); this.spinners.push(this.numIndentsLeft); @@ -132,17 +159,104 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. defaultValue : 0, value: '0 cm', maxValue: 55.87, - minValue: -55.87 + minValue: 0 }); this.numIndentsRight.on('change', _.bind(function(field, newValue, oldValue, eOpts){ if (this._changedProps) { if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined) - this._changedProps.asc_putInd(new Asc.asc_CParagraphInd()); - this._changedProps.asc_getInd().asc_putRight(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + this._changedProps.asc_getInd().put_Right(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); } }, this)); this.spinners.push(this.numIndentsRight); + this.cmbSpecial = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-special'), + cls: 'input-group-nr', + editable: false, + data: this._arrSpecial, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbSpecial.setValue(''); + this.cmbSpecial.on('selected', _.bind(this.onSpecialSelect, this)); + + this.numSpecialBy = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-special-by'), + step: .1, + width: 85, + defaultUnit : "cm", + defaultValue : 0, + value: '0 cm', + maxValue: 55.87, + minValue: 0 + }); + this.spinners.push(this.numSpecialBy); + this.numSpecialBy.on('change', _.bind(this.onFirstLineChange, this)); + + this.numSpacingBefore = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-before'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingBefore.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.asc_getSpacing(); + } + this.Spacing.Before = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingBefore); + + this.numSpacingAfter = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-after'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingAfter.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.asc_getSpacing(); + } + this.Spacing.After = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingAfter); + + this.cmbLineRule = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-line-rule'), + cls: 'input-group-nr', + editable: false, + data: this._arrLineRule, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbLineRule.setValue(this.CurLineRuleIdx); + this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this)); + + this.numLineHeight = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-line-height'), + step: .01, + width: 85, + value: '', + defaultUnit : "", + maxValue: 132, + minValue: 0.5 + }); + this.spinners.push(this.numLineHeight); + this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this)); + // Font this.chStrike = new Common.UI.CheckBox({ @@ -207,7 +321,7 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this.numTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-tab'), step: .1, - width: 180, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -218,7 +332,7 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this.numDefaultTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-default-tab'), step: .1, - width: 107, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -234,7 +348,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this.tabList = new Common.UI.ListView({ el: $('#paraadv-list-tabs'), emptyText: this.noTabs, - store: new Common.UI.DataViewStore() + store: new Common.UI.DataViewStore(), + template: _.template(['
      '].join('')), + itemTemplate: _.template([ + '
      ', + '
      <%= value %>
      ', + '
      <%= displayTabAlign %>
      ', + '
      ' + ].join('')) }); this.tabList.store.comparator = function(rec) { return rec.get("tabPos"); @@ -249,24 +370,15 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this.listenTo(this.tabList.store, 'remove', storechanged); this.listenTo(this.tabList.store, 'reset', storechanged); - this.radioLeft = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-left'), - labelText: this.textTabLeft, - name: 'asc-radio-tab', - checked: true - }); - - this.radioCenter = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-center'), - labelText: this.textTabCenter, - name: 'asc-radio-tab' - }); - - this.radioRight = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-right'), - labelText: this.textTabRight, - name: 'asc-radio-tab' + this.cmbAlign = new Common.UI.ComboBox({ + el : $('#paraadv-cmb-align'), + style : 'width: 108px;', + menuStyle : 'min-width: 108px;', + editable : false, + cls : 'input-group-nr', + data : this._arrTabAlign }); + this.cmbAlign.setValue(1); this.btnAddTab = new Common.UI.Button({ el: $('#paraadv-button-add-tab') @@ -299,17 +411,44 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this._changedProps.asc_getTabs().add_Tab(tab); }, this); } + + var horizontalAlign = this.cmbTextAlignment.getValue(); + this._changedProps.asc_putJc((horizontalAlign !== undefined && horizontalAlign !== null) ? horizontalAlign : c_paragraphTextAlignment.LEFT); + + if (this.Spacing !== null) { + this._changedProps.asc_putSpacing(this.Spacing); + } + return { paragraphProps: this._changedProps }; }, _setDefaults: function(props) { if (props ){ this._originalProps = new Asc.asc_CParagraphProperty(props); + this.FirstLine = (props.asc_getInd() !== null) ? props.asc_getInd().asc_getFirstLine() : null; - this.numFirstLine.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getFirstLine() !== null ) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getFirstLine()) : '', true); this.numIndentsLeft.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getLeft() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getLeft()) : '', true); this.numIndentsRight.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getRight() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getRight()) : '', true); + this.cmbTextAlignment.setValue((props.asc_getJc() !== undefined && props.asc_getJc() !== null) ? props.asc_getJc() : c_paragraphTextAlignment.CENTERED, true); + + if(this.CurSpecial === undefined) { + this.CurSpecial = (props.asc_getInd().asc_getFirstLine() === 0) ? c_paragraphSpecial.NONE_SPECIAL : ((props.asc_getInd().asc_getFirstLine() > 0) ? c_paragraphSpecial.FIRST_LINE : c_paragraphSpecial.HANGING); + } + this.cmbSpecial.setValue(this.CurSpecial); + this.numSpecialBy.setValue(this.FirstLine!== null ? Math.abs(Common.Utils.Metric.fnRecalcFromMM(this.FirstLine)) : '', true); + + this.numSpacingBefore.setValue((props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getBefore() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getBefore()) : '', true); + this.numSpacingAfter.setValue((props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getAfter() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getAfter()) : '', true); + + var linerule = props.asc_getSpacing().asc_getLineRule(); + this.cmbLineRule.setValue((linerule !== null) ? linerule : '', true); + + if(props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getLine() !== null) { + this.numLineHeight.setValue((linerule==c_paragraphLinerule.LINERULE_AUTO) ? props.asc_getSpacing().asc_getLine() : Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getLine()), true); + } else { + this.numLineHeight.setValue('', true); + } // Font this._noApply = true; this.chStrike.setValue((props.asc_getStrikeout() !== null && props.asc_getStrikeout() !== undefined) ? props.asc_getStrikeout() : 'indeterminate', true); @@ -338,7 +477,8 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. rec.set({ tabPos: pos, value: parseFloat(pos.toFixed(3)) + ' ' + Common.Utils.Metric.getCurrentMetricName(), - tabAlign: tab.asc_getValue() + tabAlign: tab.asc_getValue(), + displayTabAlign: this._arrKeyTabAlign[tab.asc_getValue()] }); arr.push(rec); } @@ -358,13 +498,19 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. for (var i=0; i0) { + if (rec) { var store = this.tabList.store; - var idx = _.indexOf(store.models, rec[0]); - store.remove(rec[0]); + var idx = _.indexOf(store.models, rec); + store.remove(rec); if (idx>store.length-1) idx = store.length-1; if (store.length>0) { this.tabList.selectByIndex(idx); @@ -553,15 +702,82 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. rawData = record; } this.numTab.setValue(rawData.tabPos); - (rawData.tabAlign==1) ? this.radioLeft.setValue(true) : ((rawData.tabAlign==3) ? this.radioCenter.setValue(true) : this.radioRight.setValue(true)); + this.cmbAlign.setValue(rawData.tabAlign); + }, + onSpecialSelect: function(combo, record) { + this.CurSpecial = record.value; + if (this.CurSpecial === c_paragraphSpecial.NONE_SPECIAL) { + this.numSpecialBy.setValue(0, true); + } + if (this._changedProps) { + if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined) + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + var value = Common.Utils.Metric.fnRecalcToMM(this.numSpecialBy.getNumberValue()); + if (value === 0) { + this.numSpecialBy.setValue(Common.Utils.Metric.fnRecalcFromMM(this._arrSpecial[record.value].defaultValue), true); + value = this._arrSpecial[record.value].defaultValue; + } + if (this.CurSpecial === c_paragraphSpecial.HANGING) { + value = -value; + } + this._changedProps.asc_getInd().put_FirstLine(value); + } + }, + + onFirstLineChange: function(field, newValue, oldValue, eOpts){ + if (this._changedProps) { + if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined) + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + var value = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + if (this.CurSpecial === c_paragraphSpecial.HANGING) { + value = -value; + } else if (this.CurSpecial === c_paragraphSpecial.NONE_SPECIAL && value > 0 ) { + this.CurSpecial = c_paragraphSpecial.FIRST_LINE; + this.cmbSpecial.setValue(c_paragraphSpecial.FIRST_LINE); + } else if (value === 0) { + this.CurSpecial = c_paragraphSpecial.NONE_SPECIAL; + this.cmbSpecial.setValue(c_paragraphSpecial.NONE_SPECIAL); + } + this._changedProps.asc_getInd().put_FirstLine(value); + } + }, + + onLineRuleSelect: function(combo, record) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.asc_getSpacing(); + } + this.Spacing.LineRule = record.value; + var selectItem = _.findWhere(this._arrLineRule, {value: record.value}), + indexSelectItem = this._arrLineRule.indexOf(selectItem); + if ( this.CurLineRuleIdx !== indexSelectItem ) { + this.numLineHeight.setDefaultUnit(this._arrLineRule[indexSelectItem].defaultUnit); + this.numLineHeight.setMinValue(this._arrLineRule[indexSelectItem].minValue); + this.numLineHeight.setStep(this._arrLineRule[indexSelectItem].step); + if (this.Spacing.LineRule === c_paragraphLinerule.LINERULE_AUTO) { + this.numLineHeight.setValue(this._arrLineRule[indexSelectItem].defaultValue); + } else { + this.numLineHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(this._arrLineRule[indexSelectItem].defaultValue)); + } + this.CurLineRuleIdx = indexSelectItem; + } + }, + + onNumLineHeightChange: function(field, newValue, oldValue, eOpts) { + if ( this.cmbLineRule.getRawValue() === '' ) + return; + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.asc_getSpacing(); + } + this.Spacing.Line = (this.cmbLineRule.getValue()==c_paragraphLinerule.LINERULE_AUTO) ? field.getNumberValue() : Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); }, textTitle: 'Paragraph - Advanced Settings', - strIndentsFirstLine: 'First line', strIndentsLeftText: 'Left', strIndentsRightText: 'Right', - strParagraphIndents: 'Indents & Placement', + strParagraphIndents: 'Indents & Spacing', strParagraphFont: 'Font', cancelButtonText: 'Cancel', okButtonText: 'Ok', @@ -583,6 +799,19 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. textAlign: 'Alignment', textTabPosition: 'Tab Position', textDefault: 'Default Tab', - noTabs: 'The specified tabs will appear in this field' + noTabs: 'The specified tabs will appear in this field', + textJustified: 'Justified', + strIndentsSpecial: 'Special', + textNoneSpecial: '(none)', + textFirstLine: 'First line', + textHanging: 'Hanging', + strIndentsSpacingBefore: 'Before', + strIndentsSpacingAfter: 'After', + strIndentsLineSpacing: 'Line Spacing', + txtAutoText: 'Auto', + textAuto: 'Multiple', + textExact: 'Exactly', + strIndent: 'Indents', + strSpacing: 'Spacing' }, SSE.Views.ParagraphSettingsAdvanced || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/RightMenu.js b/apps/spreadsheeteditor/main/app/view/RightMenu.js index 49c5a9803..1706af412 100644 --- a/apps/spreadsheeteditor/main/app/view/RightMenu.js +++ b/apps/spreadsheeteditor/main/app/view/RightMenu.js @@ -202,7 +202,8 @@ define([ asctype: Common.Utils.documentSettingsType.Signature, enableToggle: true, disabled: true, - toggleGroup: 'tabpanelbtnsGroup' + toggleGroup: 'tabpanelbtnsGroup', + allowMouseEventsOnDisabled: true }); this._settings[Common.Utils.documentSettingsType.Signature] = {panel: "id-signature-settings", btn: this.btnSignature}; diff --git a/apps/spreadsheeteditor/main/app/view/ShapeSettings.js b/apps/spreadsheeteditor/main/app/view/ShapeSettings.js index a6f24bce8..f95f2bb96 100644 --- a/apps/spreadsheeteditor/main/app/view/ShapeSettings.js +++ b/apps/spreadsheeteditor/main/app/view/ShapeSettings.js @@ -177,6 +177,9 @@ define([ fill.asc_getFill().asc_putLinearScale(true); } if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { + this.GradColor.values = [0, 100]; + this.GradColor.colors = [this.GradColor.colors[0], this.GradColor.colors[this.GradColor.colors.length - 1]]; + this.GradColor.currentIdx = 0; var HexColor0 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]).get_color().get_hex(), HexColor1 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1]).get_color().get_hex(); @@ -482,14 +485,22 @@ define([ fill.asc_putType(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.asc_putFill( new Asc.asc_CFillGrad()); fill.asc_getFill().asc_putGradType(this.GradFillType); - fill.asc_getFill().asc_putColors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + var arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.asc_getFill().asc_putColors(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.asc_getFill().asc_putLinearAngle(this.GradLinearDirectionType * 60000); fill.asc_getFill().asc_putLinearScale(true); } - fill.asc_getFill().asc_putPositions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.asc_getFill().asc_putPositions(arr); } props.asc_putFill(fill); this.imgprops.asc_putShapeProperties(props); @@ -527,14 +538,22 @@ define([ fill.asc_putType(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.asc_putFill( new Asc.asc_CFillGrad()); fill.asc_getFill().asc_putGradType(this.GradFillType); - fill.asc_getFill().asc_putPositions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + var arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.asc_getFill().asc_putPositions(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.asc_getFill().asc_putLinearAngle(this.GradLinearDirectionType * 60000); fill.asc_getFill().asc_putLinearScale(true); } - fill.asc_getFill().asc_putColors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.asc_getFill().asc_putColors(arr); } props.asc_putFill(fill); this.imgprops.asc_putShapeProperties(props); @@ -763,7 +782,7 @@ define([ this.FGColor = (this.ShapeColor.Color!=='transparent') ? {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color)} : {Value: 1, Color: '000000'}; this.BGColor = {Value: 1, Color: 'ffffff'}; this.GradColor.colors[0] = (this.ShapeColor.Color!=='transparent') ? Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color) : '000000'; - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_BLIP) { fill = fill.asc_getFill(); this.BlipFillType = fill.asc_getType(); // null - не совпадают у нескольких фигур @@ -811,7 +830,7 @@ define([ this.OriginalFillType = Asc.c_oAscFill.FILL_TYPE_PATT; this.ShapeColor = {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color)}; this.GradColor.colors[0] = Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color); - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_GRAD) { fill = fill.asc_getFill(); var gradfilltype = fill.asc_getGradType(); // null - не совпадают у нескольких фигур @@ -842,49 +861,37 @@ define([ } } - var colors = fill.asc_getColors(); - if (colors && colors.length>0) { - color = colors[0]; + var me = this; + var colors = fill.asc_getColors(), + positions = fill.asc_getPositions(), + length = colors.length; + this.sldrGradient.setThumbs(length); + if (this.GradColor.colors.length>length) { + this.GradColor.colors.splice(length, this.GradColor.colors.length - length); + this.GradColor.values.splice(length, this.GradColor.colors.length - length); + this.GradColor.currentIdx = 0; + } + colors && colors.forEach(function(color, index) { if (color) { if (color.asc_getType() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[0] = {color: Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()), effectValue: color.asc_getValue()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[0]); + me.GradColor.colors[index] = {color: Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()), effectValue: color.asc_getValue()}; + Common.Utils.ThemeColor.colorValue2EffectId(me.GradColor.colors[index]); } else { - this.GradColor.colors[0] = Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()); + me.GradColor.colors[index] = Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()); } } else - this.GradColor.colors[0] = '000000'; + me.GradColor.colors[index] = '000000'; - color = colors[1]; - if (color) { - if (color.asc_getType() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[1] = {color: Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()), effectValue: color.asc_getValue()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[1]); - } else { - this.GradColor.colors[1] = Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()); - } - } else - this.GradColor.colors[1] = 'ffffff'; - - } - var positions = fill.asc_getPositions(); - if (positions && positions.length>0) { - var position = positions[0]; + var position = positions[index]; if (position!==null) { position = position/1000; - this.GradColor.values[0] = position; - } - - position = positions[1]; - if (position!==null) { - position = position/1000; - this.GradColor.values[1] = position; + me.GradColor.values[index] = position; } + }); + for (var index=0; index
      ') + itemTemplate: _.template('
      ') }); mnuTexturePicker.on('item:click', _.bind(this.onSelectTexture, this)); } @@ -1493,7 +1509,7 @@ define([ store: store, parentMenu: menuItem.menu, showLast: false, - itemTemplate: _.template('
      ') + itemTemplate: _.template('
      \">
      ') }); shapePicker.on('item:click', function(picker, item, record, e) { @@ -1526,6 +1542,16 @@ define([ Common.NotificationCenter.trigger('edit:complete', this); }, + onCheckShadow: function(field, newValue, oldValue, eOpts) { + if (this.api) { + var props = new Asc.asc_CShapeProperty(); + props.asc_putShadow((field.getValue()=='checked') ? new Asc.asc_CShadowProperty() : null); + this.imgprops.asc_putShapeProperties(props); + this.api.asc_setGraphicObjectProps(this.imgprops); + } + Common.NotificationCenter.trigger('edit:complete', this); + }, + UpdateThemeColors: function() { if (!this.btnBackColor) { this.btnBackColor = new Common.UI.ColorButton({ @@ -1735,9 +1761,10 @@ define([ textRotation: 'Rotation', textRotate90: 'Rotate 90°', textFlip: 'Flip', - textHint270: 'Rotate Left 90°', - textHint90: 'Rotate Right 90°', + textHint270: 'Rotate 90° Counterclockwise', + textHint90: 'Rotate 90° Clockwise', textHintFlipV: 'Flip Vertically', - textHintFlipH: 'Flip Horizontally' + textHintFlipH: 'Flip Horizontally', + strShadow: 'Show shadow' }, SSE.Views.ShapeSettings || {})); }); diff --git a/apps/spreadsheeteditor/main/app/view/Spellcheck.js b/apps/spreadsheeteditor/main/app/view/Spellcheck.js new file mode 100644 index 000000000..33d879318 --- /dev/null +++ b/apps/spreadsheeteditor/main/app/view/Spellcheck.js @@ -0,0 +1,195 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * +*/ +/** + * User: Julia.Radzhabova + * Date: 30.07.19 + */ + +define([ + 'common/main/lib/util/utils', + 'common/main/lib/component/BaseView', + 'common/main/lib/component/Layout', + 'common/main/lib/component/Button', + 'common/main/lib/component/ListView', + 'common/main/lib/component/InputField', + 'common/main/lib/component/ComboBox', + 'common/main/lib/component/ComboDataView' +], function (template) { + 'use strict'; + + SSE.Views.Spellcheck = Common.UI.BaseView.extend(_.extend({ + el: '#left-panel-spellcheck', + + template: _.template([ + '
      ', + '
      <%= scope.txtSpelling %>
      ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '', + '
      ' + ].join('')), + + initialize: function(options) { + _.extend(this, options); + Common.UI.BaseView.prototype.initialize.call(this, arguments); + }, + + render: function(el) { + el = el || this.el; + this.$el = $(el); + this.$el.html(this.template({scope: this})); + + this.currentWord = new Common.UI.InputField({ + el : $('#spellcheck-current-word'), + allowBlank : true, + validateOnBlur: false, + disabled: true + }); + + this.buttonNext = new Common.UI.Button({ + style: 'margin-left: 5px; width: 22px; height: 22px; border: 1px solid #cfcfcf;', + cls: 'btn-toolbar bg-white', + iconCls: 'btn-spellcheck-next', + hint: this.txtNextTip + }); + this.buttonNext.render($('#spellcheck-next')); + + this.suggestionList = new Common.UI.ListView({ + el: $('#spellcheck-suggestions-list'), + emptyText: this.noSuggestions, + store: new Common.UI.DataViewStore(), + scrollAlwaysVisible: true + }); + + this.btnChange = new Common.UI.Button({ + cls: 'btn-text-split-default', + caption: this.textChange, + split: true, + width: 110, + disabled: true, + menu : new Common.UI.Menu({ + style : 'min-width: 110px', + items: [ + { + caption: this.textChange, + value: 0 + }, + { + caption: this.textChangeAll, + value: 1 + } + ] + }) + }); + this.btnChange.render( $('#spellcheck-change')) ; + + this.btnIgnore = new Common.UI.Button({ + cls: 'btn-text-split-default', + caption: this.textIgnore, + split: true, + width: 110, + disabled: true, + menu : new Common.UI.Menu({ + style : 'min-width: 110px;', + items: [ + { + caption: this.textIgnore, + value: 0 + }, + { + caption: this.textIgnoreAll, + value: 1 + } + ] + }) + }); + this.btnIgnore.render( $('#spellcheck-ignore')) ; + + this.cmbDictionaryLanguage = new Common.UI.ComboBox({ + el : $('#spellcheck-dictionary-language'), + style : 'width: 100%', + menuStyle : 'width: 100%;max-height: 163px;', + editable : false, + cls : 'input-group-nr', + scroller : { + suppressScrollX: true + } + }); + + this.btnToDictionary = new Common.UI.Button({ + el: $('#spellcheck-add-to-dictionary'), + disabled : true + }); + + this.lblComplete = this.$el.find('#spellcheck-complete'); + this.trigger('render:after', this); + + if (_.isUndefined(this.scroller)) { + this.scroller = new Common.UI.Scroller({ + el: this.$el.find('#spellcheck-box'), + suppressScrollX: true + }); + } + + return this; + }, + + show: function () { + Common.UI.BaseView.prototype.show.call(this,arguments); + this.fireEvent('show', this ); + }, + + hide: function () { + Common.UI.BaseView.prototype.hide.call(this,arguments); + this.fireEvent('hide', this ); + }, + + ChangeSettings: function(props) { + }, + + txtSpelling: 'Spelling', + noSuggestions: 'No spelling suggestions', + textChange: 'Change', + textChangeAll: 'Change All', + textIgnore: 'Ignore', + textIgnoreAll: 'Ignore All', + txtAddToDictionary: 'Add To Dictionary', + txtDictionaryLanguage: 'Dictionary Language', + txtComplete: 'Spellcheck has been complete', + txtNextTip: 'Go to the next word' + + }, SSE.Views.Spellcheck || {})); +}); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/Statusbar.js b/apps/spreadsheeteditor/main/app/view/Statusbar.js index 82adf6b4e..247da69e5 100644 --- a/apps/spreadsheeteditor/main/app/view/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/view/Statusbar.js @@ -201,13 +201,6 @@ define([ var menuHiddenItems = new Common.UI.Menu({ maxHeight: 260, menuAlign: 'tl-tr' - }).on('render:after', function(mnu) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength : 40, - alwaysVisibleY: true - }); }).on('show:after', function () { this.scroller.update({alwaysVisibleY: true}); }); @@ -745,7 +738,7 @@ define([ if (this.options.handler) { this.options.handler.call(this, - event.currentTarget.attributes['result'].value, active[0].get('inindex')); + event.currentTarget.attributes['result'].value, active.get('inindex')); } this.close(); @@ -753,7 +746,7 @@ define([ onPrimary: function() { if (this.options.handler) { - this.options.handler.call(this, 'ok', this.listNames.getSelectedRec()[0].get('inindex')); + this.options.handler.call(this, 'ok', this.listNames.getSelectedRec().get('inindex')); } this.close(); diff --git a/apps/spreadsheeteditor/main/app/view/TableSettings.js b/apps/spreadsheeteditor/main/app/view/TableSettings.js index f3932796b..810f49060 100644 --- a/apps/spreadsheeteditor/main/app/view/TableSettings.js +++ b/apps/spreadsheeteditor/main/app/view/TableSettings.js @@ -407,7 +407,7 @@ define([ if (this._isTemplatesChanged) { if (rec) - this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.getSelectedRec()[0],true); + this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.getSelectedRec(),true); else this.cmbTableTemplate.fillComboView(this.cmbTableTemplate.menuPicker.store.at(0), true); } diff --git a/apps/spreadsheeteditor/main/app/view/TextArtSettings.js b/apps/spreadsheeteditor/main/app/view/TextArtSettings.js index b63678ff4..8eef92f8b 100644 --- a/apps/spreadsheeteditor/main/app/view/TextArtSettings.js +++ b/apps/spreadsheeteditor/main/app/view/TextArtSettings.js @@ -170,6 +170,9 @@ define([ fill.asc_getFill().asc_putLinearScale(true); } if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { + this.GradColor.values = [0, 100]; + this.GradColor.colors = [this.GradColor.colors[0], this.GradColor.colors[this.GradColor.colors.length - 1]]; + this.GradColor.currentIdx = 0; var HexColor0 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]).get_color().get_hex(), HexColor1 = Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1]).get_color().get_hex(); @@ -474,14 +477,22 @@ define([ fill.asc_putType(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.asc_putFill( new Asc.asc_CFillGrad()); fill.asc_getFill().asc_putGradType(this.GradFillType); - fill.asc_getFill().asc_putColors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + var arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.asc_getFill().asc_putColors(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.asc_getFill().asc_putLinearAngle(this.GradLinearDirectionType * 60000); fill.asc_getFill().asc_putLinearScale(true); } - fill.asc_getFill().asc_putPositions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.asc_getFill().asc_putPositions(arr); } props.asc_putFill(fill); this.shapeprops.put_TextArtProperties(props); @@ -519,14 +530,22 @@ define([ fill.asc_putType(Asc.c_oAscFill.FILL_TYPE_GRAD); fill.asc_putFill( new Asc.asc_CFillGrad()); fill.asc_getFill().asc_putGradType(this.GradFillType); - fill.asc_getFill().asc_putPositions([this.GradColor.values[0]*1000, this.GradColor.values[1]*1000]); + var arr = []; + this.GradColor.values.forEach(function(item){ + arr.push(item*1000); + }); + fill.asc_getFill().asc_putPositions(arr); if (this.OriginalFillType !== Asc.c_oAscFill.FILL_TYPE_GRAD) { if (this.GradFillType == Asc.c_oAscFillGradType.GRAD_LINEAR) { fill.asc_getFill().asc_putLinearAngle(this.GradLinearDirectionType * 60000); fill.asc_getFill().asc_putLinearScale(true); } - fill.asc_getFill().asc_putColors([Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[0]), Common.Utils.ThemeColor.getRgbColor(this.GradColor.colors[1])]); + arr = []; + this.GradColor.colors.forEach(function(item){ + arr.push(Common.Utils.ThemeColor.getRgbColor(item)); + }); + fill.asc_getFill().asc_putColors(arr); } props.asc_putFill(fill); this.shapeprops.put_TextArtProperties(props); @@ -716,7 +735,7 @@ define([ this.FGColor = (this.ShapeColor.Color!=='transparent') ? {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color)} : {Value: 1, Color: '000000'}; this.BGColor = {Value: 1, Color: 'ffffff'}; this.GradColor.colors[0] = (this.ShapeColor.Color!=='transparent') ? Common.Utils.ThemeColor.colorValue2EffectId(this.ShapeColor.Color) : '000000'; - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_BLIP) { fill = fill.asc_getFill(); this.BlipFillType = fill.asc_getType(); // null - не совпадают у нескольких фигур @@ -764,7 +783,7 @@ define([ this.OriginalFillType = Asc.c_oAscFill.FILL_TYPE_PATT; this.ShapeColor = {Value: 1, Color: Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color)}; this.GradColor.colors[0] = Common.Utils.ThemeColor.colorValue2EffectId(this.FGColor.Color); - this.GradColor.colors[1] = 'ffffff'; + this.GradColor.colors[this.GradColor.colors.length-1] = 'ffffff'; } else if (fill_type==Asc.c_oAscFill.FILL_TYPE_GRAD) { fill = fill.asc_getFill(); var gradfilltype = fill.asc_getGradType(); // null - не совпадают у нескольких фигур @@ -795,49 +814,37 @@ define([ } } - var colors = fill.asc_getColors(); - if (colors && colors.length>0) { - color = colors[0]; + var me = this; + var colors = fill.asc_getColors(), + positions = fill.asc_getPositions(), + length = colors.length; + this.sldrGradient.setThumbs(length); + if (this.GradColor.colors.length>length) { + this.GradColor.colors.splice(length, this.GradColor.colors.length - length); + this.GradColor.values.splice(length, this.GradColor.colors.length - length); + this.GradColor.currentIdx = 0; + } + colors && colors.forEach(function(color, index) { if (color) { if (color.asc_getType() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[0] = {color: Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()), effectValue: color.asc_getValue()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[0]); + me.GradColor.colors[index] = {color: Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()), effectValue: color.asc_getValue()}; + Common.Utils.ThemeColor.colorValue2EffectId(me.GradColor.colors[index]); } else { - this.GradColor.colors[0] = Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()); + me.GradColor.colors[index] = Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()); } } else - this.GradColor.colors[0] = '000000'; + me.GradColor.colors[index] = '000000'; - color = colors[1]; - if (color) { - if (color.asc_getType() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { - this.GradColor.colors[1] = {color: Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()), effectValue: color.asc_getValue()}; - Common.Utils.ThemeColor.colorValue2EffectId(this.GradColor.colors[1]); - } else { - this.GradColor.colors[1] = Common.Utils.ThemeColor.getHexColor(color.asc_getR(), color.asc_getG(), color.asc_getB()); - } - } else - this.GradColor.colors[1] = 'ffffff'; - - } - var positions = fill.asc_getPositions(); - if (positions && positions.length>0) { - var position = positions[0]; + var position = positions[index]; if (position!==null) { position = position/1000; - this.GradColor.values[0] = position; - } - - position = positions[1]; - if (position!==null) { - position = position/1000; - this.GradColor.values[1] = position; + me.GradColor.values[index] = position; } + }); + for (var index=0; index 0 && item.keepState.length > 0) { - item.keepState = _.difference(item.keepState, opts.clear); - } - - _.isArray(causes) ? _.each(causes, function(c) {doLock(item, c)}) : doLock(item, causes); - - if (!(item.keepState.length > 0)) { - item.isDisabled() && item.setDisabled(false); - } else { - !item.isDisabled() && item.setDisabled(true); - } - } - }); + Common.Utils.lockControls(causes, lock, opts, this.lockControls); }, applyLayout: function (config) { @@ -346,7 +314,9 @@ define([ { caption: me.textTabFile, action: 'file', extcls: 'canedit', haspanel:false}, { caption: me.textTabHome, action: 'home', extcls: 'canedit'}, { caption: me.textTabInsert, action: 'ins', extcls: 'canedit'}, - {caption: me.textTabLayout, action: 'layout', extcls: 'canedit'} + {caption: me.textTabLayout, action: 'layout', extcls: 'canedit'}, + {caption: me.textTabFormula, action: 'formula', extcls: 'canedit'}, + {caption: me.textTabData, action: 'data', extcls: 'canedit'} ]} ); @@ -515,7 +485,7 @@ define([ iconCls : 'btn-border-out', icls : 'btn-border-out', borderId : 'outer', - borderswidth: 'thin', + borderswidth: Asc.c_oAscBorderStyles.Thin, lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth], split : true, menu : true @@ -749,35 +719,6 @@ define([ menu : new Common.UI.Menu({cls: 'menu-shapes'}) }); - me.btnSortDown = new Common.UI.Button({ - id : 'id-toolbar-btn-sort-down', - cls : 'btn-toolbar', - iconCls : 'btn-sort-down', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter] - }); - - me.btnSortUp = new Common.UI.Button({ - id : 'id-toolbar-btn-sort-up', - cls : 'btn-toolbar', - iconCls : 'btn-sort-up', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter] - }); - - me.btnSetAutofilter = new Common.UI.Button({ - id : 'id-toolbar-btn-setautofilter', - cls : 'btn-toolbar', - iconCls : 'btn-autofilter', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter], - enableToggle: true - }); - - me.btnClearAutofilter = new Common.UI.Button({ - id : 'id-toolbar-btn-clearfilter', - cls : 'btn-toolbar', - iconCls : 'btn-clear-filter', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleDelFilter, _set.editPivot] - }); - me.btnTableTemplate = new Common.UI.Button({ id : 'id-toolbar-btn-ttempl', cls : 'btn-toolbar', @@ -790,6 +731,14 @@ define([ }) }); + me.btnInsertTable = new Common.UI.Button({ + id : 'tlbtn-inserttable', + cls : 'btn-toolbar x-huge icon-top', + iconCls : 'btn-inserttable', + caption : me.capInsertTable, + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.multiselect, _set.cantModifyFilter, _set.ruleMerge, _set.editPivot] + }); + me.listStyles = new Common.UI.ComboDataView({ cls : 'combo-styles', enableKeyEvents : true, @@ -886,6 +835,10 @@ define([ { caption : me.txtYen, value : 0x0411 // ¥ ja-JP + },{caption: '--'}, + { + caption : me.textMoreFormats, + value : -1 } ] }) @@ -1059,17 +1012,7 @@ define([ lock : [_set.editCell, _set.lostConnect, _set.coAuth], menu : new Common.UI.Menu({ items: [], - maxHeight : 560, - restoreHeight: 560 - }).on('show:before', function(mnu) { - if ( !this.scroller ) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength : 40, - alwaysVisibleY: true - }); - } + restoreHeight: true }) }); @@ -1164,52 +1107,6 @@ define([ }) }); - me.btnAutofilter = new Common.UI.Button({ - id : 'id-toolbar-btn-autofilter', - cls : 'btn-toolbar', - iconCls : 'btn-autofilter', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot], - menu : new Common.UI.Menu({ - items : [ - me.mnuitemSortAZ = new Common.UI.MenuItem({ - caption : me.txtSortAZ, - iconCls : 'mnu-sort-asc', - lock : [_set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.ruleFilter, _set.cantModifyFilter], - value : Asc.c_oAscSortOptions.Ascending - }), - me.mnuitemSortZA = new Common.UI.MenuItem({ - caption : me.txtSortZA, - iconCls : 'mnu-sort-desc', - lock : [_set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.ruleFilter, _set.cantModifyFilter], - value : Asc.c_oAscSortOptions.Descending - }), - me.mnuitemAutoFilter = new Common.UI.MenuItem({ - caption : me.txtFilter, - iconCls : 'mnu-filter-add', - checkable: true, - lock : [_set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.ruleFilter], - value : 'set-filter' - }), - me.mnuitemClearFilter = new Common.UI.MenuItem({ - caption : me.txtClearFilter, - iconCls : 'mnu-filter-clear', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.ruleDelFilter], - value : 'clear-filter' - }) - /*,{ - caption : me.txtTableTemplate, - iconCls : 'mnu-filter-clear', - menu : new Common.UI.Menu({ - menuAlign: 'tl-tr', - items: [ - { template: _.template('
      ') } - ] - }) - } */ - ] - }) - }); - var hidetip = Common.localStorage.getItem("sse-hide-synch"); me.showSynchTip = !(hidetip && parseInt(hidetip) == 1); // me.needShowSynchTip = false; @@ -1301,6 +1198,7 @@ define([ caption: me.capBtnPageSize, lock : [_set.docPropsLock, _set.lostConnect, _set.coAuth], menu: new Common.UI.Menu({ + restoreHeight: true, items: [ { caption: 'US Letter', @@ -1439,6 +1337,14 @@ define([ }) }); + me.btnEditHeader = new Common.UI.Button({ + id: 'tlbtn-editheader', + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'btn-editheader', + caption: me.capBtnInsHeader, + lock : [_set.editCell, _set.selRangeEdit, _set.headerLock, _set.lostConnect, _set.coAuth] + }); + me.btnImgAlign = new Common.UI.Button({ cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-img-align', @@ -1486,15 +1392,15 @@ define([ me.cmbFontName, me.cmbFontSize, me.btnIncFontSize, me.btnDecFontSize, me.btnBold, me.btnItalic, me.btnUnderline, me.btnStrikeout, me.btnSubscript, me.btnTextColor, me.btnHorizontalAlign, me.btnAlignLeft, me.btnAlignCenter,me.btnAlignRight,me.btnAlignJust, me.btnVerticalAlign, me.btnAlignTop, - me.btnAlignMiddle, me.btnAlignBottom, me.btnWrap, me.btnTextOrient, me.btnBackColor, + me.btnAlignMiddle, me.btnAlignBottom, me.btnWrap, me.btnTextOrient, me.btnBackColor, me.btnInsertTable, me.btnMerge, me.btnInsertFormula, me.btnNamedRange, me.btnIncDecimal, me.btnInsertShape, me.btnInsertEquation, me.btnInsertText, me.btnInsertTextArt, me.btnSortUp, me.btnSortDown, me.btnSetAutofilter, me.btnClearAutofilter, me.btnTableTemplate, me.btnPercentStyle, me.btnCurrencyStyle, me.btnDecDecimal, me.btnAddCell, me.btnDeleteCell, me.cmbNumberFormat, me.btnBorders, me.btnInsertImage, me.btnInsertHyperlink, me.btnInsertChart, me.btnColorSchemas, - me.btnAutofilter, me.btnCopy, me.btnPaste, me.listStyles, me.btnPrint, + me.btnCopy, me.btnPaste, me.listStyles, me.btnPrint, /*me.btnSave,*/ me.btnClearStyle, me.btnCopyStyle, - me.btnPageMargins, me.btnPageSize, me.btnPageOrient, me.btnPrintArea, me.btnImgAlign, me.btnImgBackward, me.btnImgForward, me.btnImgGroup + me.btnPageMargins, me.btnPageSize, me.btnPageOrient, me.btnPrintArea, me.btnImgAlign, me.btnImgBackward, me.btnImgForward, me.btnImgGroup, me.btnEditHeader ]; _.each(me.lockControls.concat([me.btnSave]), function(cmp) { @@ -1557,7 +1463,7 @@ define([ $(mnu.el).html(mnu.template({id: Common.UI.getId(), caption : mnu.caption, options : mnu.options})); } else this.btnPageMargins.menu.items[0].setVisible(false); - this.btnInsertImage.menu.items[2].setVisible(mode.fileChoiceUrl && mode.fileChoiceUrl.indexOf("{documentType}")>-1); + this.btnInsertImage.menu.items[2].setVisible(mode.canRequestInsertImage || mode.fileChoiceUrl && mode.fileChoiceUrl.indexOf("{documentType}")>-1); } me.setTab('home'); @@ -1587,13 +1493,7 @@ define([ rendererComponents: function(html) { var $host = $(html); var _injectComponent = function (id, cmp) { - if ( cmp ) { - var $slot = $host.find(id); - if ( $slot.length ) { - cmp.rendered ? - $slot.append(cmp.$el) : cmp.render($slot); - } - } + Common.Utils.injectComponent($host.find(id), cmp); }; _injectComponent('#slot-field-fontname', this.cmbFontName); @@ -1625,6 +1525,7 @@ define([ _injectComponent('#slot-btn-wrap', this.btnWrap); _injectComponent('#slot-btn-text-orient', this.btnTextOrient); _injectComponent('#slot-btn-insimage', this.btnInsertImage); + _injectComponent('#slot-btn-instable', this.btnInsertTable); _injectComponent('#slot-btn-inshyperlink', this.btnInsertHyperlink); _injectComponent('#slot-btn-insshape', this.btnInsertShape); _injectComponent('#slot-btn-instext', this.btnInsertText); @@ -1659,10 +1560,10 @@ define([ _injectComponent('#slot-img-group', this.btnImgGroup); _injectComponent('#slot-img-movefrwd', this.btnImgForward); _injectComponent('#slot-img-movebkwd', this.btnImgBackward); + _injectComponent('#slot-btn-editheader', this.btnEditHeader); // replacePlacholder('#id-toolbar-short-placeholder-btn-halign', this.btnHorizontalAlign); // replacePlacholder('#id-toolbar-short-placeholder-btn-valign', this.btnVerticalAlign); - // replacePlacholder('#id-toolbar-short-placeholder-btn-filter', this.btnAutofilter); return $host; }, @@ -1701,6 +1602,7 @@ define([ _updateHint(this.btnAlignBottom, this.tipAlignBottom); _updateHint(this.btnWrap, this.tipWrap); _updateHint(this.btnTextOrient, this.tipTextOrientation); + _updateHint(this.btnInsertTable, this.tipInsertTable); _updateHint(this.btnInsertImage, this.tipInsertImage); _updateHint(this.btnInsertChart, this.tipInsertChartSpark); _updateHint(this.btnInsertText, this.tipInsertText); @@ -1727,11 +1629,11 @@ define([ _updateHint(this.btnColorSchemas, this.tipColorSchemas); _updateHint(this.btnHorizontalAlign, this.tipHAligh); _updateHint(this.btnVerticalAlign, this.tipVAligh); - _updateHint(this.btnAutofilter, this.tipAutofilter); _updateHint(this.btnPageOrient, this.tipPageOrient); _updateHint(this.btnPageSize, this.tipPageSize); _updateHint(this.btnPageMargins, this.tipPageMargins); _updateHint(this.btnPrintArea, this.tipPrintArea); + _updateHint(this.btnEditHeader, this.tipEditHeader); // set menus if (this.btnBorders && this.btnBorders.rendered) { @@ -2019,14 +1921,8 @@ define([ } if (this.mnuColorSchema == null) { - this.mnuColorSchema = new Common.UI.Menu({maxHeight : 560, - restoreHeight: 560 - }).on('show:before', function(mnu) { - this.scroller = new Common.UI.Scroller({ - el: $(this.el).find('.dropdown-menu '), - useKeyboard: this.enableKeyEvents && !this.handleSelect, - minScrollbarLength : 40 - }); + this.mnuColorSchema = new Common.UI.Menu({ + restoreHeight: true }); } @@ -2055,15 +1951,17 @@ define([ this.mnuColorSchema.addItem({ caption : '--' }); - } else { - this.mnuColorSchema.addItem({ - template: itemTemplate, - cls : 'color-schemas-menu', - colors : schemecolors, - caption : (index < 21) ? (me.SchemeNames[index] || schema.get_name()) : schema.get_name(), - value : index - }); } + var name = schema.get_name(); + this.mnuColorSchema.addItem({ + template: itemTemplate, + cls : 'color-schemas-menu', + colors : schemecolors, + caption: (index < 21) ? (me.SchemeNames[index] || name) : name, + value: name, + checkable: true, + toggleGroup: 'menuSchema' + }); }, this); }, @@ -2453,6 +2351,12 @@ define([ textSetPrintArea: 'Set Print Area', textClearPrintArea: 'Clear Print Area', textAddPrintArea: 'Add to Print Area', - tipPrintArea: 'Print Area' + tipPrintArea: 'Print Area', + capBtnInsHeader: 'Header/Footer', + tipEditHeader: 'Edit header or footer', + textTabData: 'Data', + capInsertTable: 'Table', + tipInsertTable: 'Insert table', + textTabFormula: 'Formula' }, SSE.Views.Toolbar || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app_dev.js b/apps/spreadsheeteditor/main/app_dev.js index d96105dcd..f2feab9a3 100644 --- a/apps/spreadsheeteditor/main/app_dev.js +++ b/apps/spreadsheeteditor/main/app_dev.js @@ -142,10 +142,12 @@ require([ 'Print', 'Toolbar', 'Statusbar', + 'Spellcheck', 'RightMenu', 'LeftMenu', 'Main', 'PivotTable', + 'DataTab', 'Common.Controllers.Fonts', 'Common.Controllers.Chat', 'Common.Controllers.Comments', @@ -163,11 +165,13 @@ require([ 'spreadsheeteditor/main/app/controller/CellEditor', 'spreadsheeteditor/main/app/controller/Toolbar', 'spreadsheeteditor/main/app/controller/Statusbar', + 'spreadsheeteditor/main/app/controller/Spellcheck', 'spreadsheeteditor/main/app/controller/RightMenu', 'spreadsheeteditor/main/app/controller/LeftMenu', 'spreadsheeteditor/main/app/controller/Main', 'spreadsheeteditor/main/app/controller/Print', 'spreadsheeteditor/main/app/controller/PivotTable', + 'spreadsheeteditor/main/app/controller/DataTab', 'spreadsheeteditor/main/app/view/FileMenuPanels', 'spreadsheeteditor/main/app/view/ParagraphSettings', 'spreadsheeteditor/main/app/view/ImageSettings', diff --git a/apps/spreadsheeteditor/main/index.html b/apps/spreadsheeteditor/main/index.html index 93ca9651f..beffffca5 100644 --- a/apps/spreadsheeteditor/main/index.html +++ b/apps/spreadsheeteditor/main/index.html @@ -17,7 +17,7 @@ overflow: hidden; border: none; background-color: #f4f4f4; - z-index: 100; + z-index: 1001; } .loader-page { @@ -158,7 +158,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -169,7 +169,7 @@ 15% { background: #f4f4f4; top:0; opacity:1; } 20% { background: #f4f4f4; top:0; opacity:0; } 25% { background: #f4f4f4; top:0; opacity:0; } - 45% { background: #EFEFEF; top:0; opacity:0,2; } + 45% { background: #EFEFEF; top:0; opacity:0.2; } 100% { top:100px; background: #55bce6; } } @@ -233,6 +233,18 @@ else if ( lang == 'ru') loading = 'Загрузка...'; else if ( lang == 'sl') loading = 'Nalaganje...'; else if ( lang == 'tr') loading = 'Yükleniyor...'; + else if ( lang == 'bg') loading = 'Зареждане...'; + else if ( lang == 'cs') loading = 'Nahrávám...'; + else if ( lang == 'hu') loading = 'Betöltés...'; + else if ( lang == 'ja') loading = '読み込み中...'; + else if ( lang == 'ko') loading = '로드 중...'; + else if ( lang == 'lv') loading = 'Ieladēšana ...'; + else if ( lang == 'nl') loading = 'Laden...'; + else if ( lang == 'pl') loading = 'Ładowanie...'; + else if ( lang == 'sk') loading = 'Nahrávam...'; + else if ( lang == 'uk') loading = 'Завантаження...'; + else if ( lang == 'vi') loading = 'Đang tải...'; + else if ( lang == 'zh') loading = '加载中...'; if (!stopLoading) document.write( @@ -271,6 +283,7 @@ +