diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index 19d552bea..c12dd3d17 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -1006,8 +1006,8 @@ iframe.allowFullscreen = true; iframe.setAttribute("allowfullscreen",""); // for IE11 iframe.setAttribute("onmousewheel",""); // for Safari on Mac - iframe.setAttribute("allow", "autoplay; camera; microphone; display-capture"); - + iframe.setAttribute("allow", "autoplay; camera; microphone; display-capture; clipboard-write;"); + if (config.type == "mobile") { iframe.style.position = "fixed"; diff --git a/apps/common/embed/lib/util/utils.js b/apps/common/embed/lib/util/utils.js index 2d275b85e..955320044 100644 --- a/apps/common/embed/lib/util/utils.js +++ b/apps/common/embed/lib/util/utils.js @@ -36,6 +36,11 @@ !common.utils && (common.utils = {}); common.utils = new(function(){ + var userAgent = navigator.userAgent.toLowerCase(), + check = function(regex){ + return regex.test(userAgent); + }, + isMac = check(/macintosh|mac os x/); return { openLink: function(url) { if (url) { @@ -100,7 +105,9 @@ return prop; } } - } + }, + + isMac : isMac }; })(); }(); diff --git a/apps/common/embed/resources/img/icon-menu-sprite.svg b/apps/common/embed/resources/img/icon-menu-sprite.svg index c04600809..cad475b9e 100644 --- a/apps/common/embed/resources/img/icon-menu-sprite.svg +++ b/apps/common/embed/resources/img/icon-menu-sprite.svg @@ -1,170 +1,220 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/common/embed/resources/less/common.less b/apps/common/embed/resources/less/common.less index 5d588ee1d..de08df890 100644 --- a/apps/common/embed/resources/less/common.less +++ b/apps/common/embed/resources/less/common.less @@ -503,7 +503,7 @@ @icon-height: 20px; .svg-icon { background: data-uri('../../../../common/embed/resources/img/icon-menu-sprite.svg') no-repeat; - background-size: @icon-width*22 @icon-height*2; + background-size: @icon-width*29 @icon-height*2; &.download { background-position: -@icon-width 0; @@ -561,13 +561,13 @@ background-position: -@icon-width*18 0; } &.search { - background-position: -@icon-width*19 0; + background-position: -@icon-width*24 0; } &.search-arrow-up { - background-position: -@icon-width*20 0; + background-position: -@icon-width*27 0; } &.search-arrow-down { - background-position: -@icon-width*21 0; + background-position: -@icon-width*28 0; } } diff --git a/apps/common/forms/resources/img/icon-menu-sprite.svg b/apps/common/forms/resources/img/icon-menu-sprite.svg index ffd9929f8..8bf81f4a7 100644 --- a/apps/common/forms/resources/img/icon-menu-sprite.svg +++ b/apps/common/forms/resources/img/icon-menu-sprite.svg @@ -1,4 +1,4 @@ - + @@ -204,5 +204,17 @@ + + + + + + + + + + + + diff --git a/apps/common/forms/resources/less/common.less b/apps/common/forms/resources/less/common.less index c49c2dfc8..f303d3142 100644 --- a/apps/common/forms/resources/less/common.less +++ b/apps/common/forms/resources/less/common.less @@ -81,6 +81,7 @@ @import "../../../../common/main/resources/less/checkbox.less"; @import "../../../../common/main/resources/less/opendialog.less"; @import "../../../../common/main/resources/less/advanced-settings-window.less"; +@import "../../../../common/main/resources/less/searchdialog.less"; @toolbarBorderColor: @border-toolbar-ie; @toolbarBorderColor: @border-toolbar; @@ -439,7 +440,7 @@ .svg-icon { background: data-uri('../../../../common/forms/resources/img/icon-menu-sprite.svg') no-repeat; - background-size: @icon-width*27 @icon-height*2; + background-size: @icon-width*29 @icon-height*2; &.download { background-position: -@icon-width 0; @@ -543,6 +544,18 @@ background-position: -@icon-width*26 0; background-position: -@icon-width*26 @icon-normal-top; } + &.search-close { + background-position: -@icon-width*18 0; + } + &.search { + background-position: -@icon-width*24 0; + } + &.search-arrow-up { + background-position: -@icon-width*27 0; + } + &.search-arrow-down { + background-position: -@icon-width*28 0; + } } .btn { @@ -681,4 +694,8 @@ .font-size-large { .fontsize(@font-size-large); +} + +.search-bar { + z-index: 50; } \ No newline at end of file diff --git a/apps/common/main/lib/component/ComboBoxFonts.js b/apps/common/main/lib/component/ComboBoxFonts.js index 0246c3f34..fe0788b38 100644 --- a/apps/common/main/lib/component/ComboBoxFonts.js +++ b/apps/common/main/lib/component/ComboBoxFonts.js @@ -89,7 +89,8 @@ define([ thumbCanvas.width = thumbs[thumbIdx].width; function CThumbnailLoader() { - this.supportBinaryFormat = !(Common.Controllers.Desktop.isActive() && !Common.Controllers.isFeatureAvailable('isSupportBinaryFontsSprite')); + this.supportBinaryFormat = !(Common.Controllers.Desktop.isActive() && !Common.Controllers.Desktop.isFeatureAvailable('isSupportBinaryFontsSprite')); + // наш формат - альфамаска с сжатием типа rle для полностью прозрачных пикселов this.image = null; this.binaryFormat = null; @@ -98,6 +99,7 @@ define([ this.height = 0; this.heightOne = 0; this.count = 0; + this.offsets = null; this.load = function(url, callback) { if (!callback) @@ -123,7 +125,7 @@ define([ xhr.onload = function() { // TODO: check errors - me.binaryFormat = this.response; + me.binaryFormat = new Uint8Array(this.response); callback(); }; @@ -134,38 +136,74 @@ define([ this.openBinary = function(arrayBuffer) { //var t1 = performance.now(); - var binaryAlpha = new Uint8Array(arrayBuffer); + var binaryAlpha = this.binaryFormat; this.width = (binaryAlpha[0] << 24) | (binaryAlpha[1] << 16) | (binaryAlpha[2] << 8) | (binaryAlpha[3] << 0); this.heightOne = (binaryAlpha[4] << 24) | (binaryAlpha[5] << 16) | (binaryAlpha[6] << 8) | (binaryAlpha[7] << 0); this.count = (binaryAlpha[8] << 24) | (binaryAlpha[9] << 16) | (binaryAlpha[10] << 8) | (binaryAlpha[11] << 0); this.height = this.count * this.heightOne; - this.data = new Uint8ClampedArray(4 * this.width * this.height); + var MAX_MEMORY_SIZE = 50000000; + var memorySize = 4 * this.width * this.height; + var isOffsets = (memorySize > MAX_MEMORY_SIZE) ? true : false; + + if (!isOffsets) + this.data = new Uint8ClampedArray(memorySize); + else + this.offsets = new Array(this.count); var binaryIndex = 12; var binaryLen = binaryAlpha.length; - var imagePixels = this.data; var index = 0; var len0 = 0; var tmpValue = 0; - while (binaryIndex < binaryLen) { - tmpValue = binaryAlpha[binaryIndex++]; - if (0 == tmpValue) { - len0 = binaryAlpha[binaryIndex++]; - while (len0 > 0) { - len0--; - imagePixels[index] = imagePixels[index + 1] = imagePixels[index + 2] = 255; - imagePixels[index + 3] = 0; // this value is already 0. + + if (!isOffsets) { + var imagePixels = this.data; + while (binaryIndex < binaryLen) { + tmpValue = binaryAlpha[binaryIndex++]; + if (0 == tmpValue) { + len0 = binaryAlpha[binaryIndex++]; + while (len0 > 0) { + len0--; + imagePixels[index] = imagePixels[index + 1] = imagePixels[index + 2] = 255; + imagePixels[index + 3] = 0; // this value is already 0. + index += 4; + } + } else { + imagePixels[index] = imagePixels[index + 1] = imagePixels[index + 2] = 255 - tmpValue; + imagePixels[index + 3] = tmpValue; index += 4; } - } else { - imagePixels[index] = imagePixels[index + 1] = imagePixels[index + 2] = 255 - tmpValue; - imagePixels[index + 3] = tmpValue; - index += 4; + } + } else { + var module = this.width * this.heightOne; + var moduleCur = module - 1; + while (binaryIndex < binaryLen) { + tmpValue = binaryAlpha[binaryIndex++]; + if (0 == tmpValue) { + len0 = binaryAlpha[binaryIndex++]; + while (len0 > 0) { + len0--; + moduleCur++; + if (moduleCur === module) { + this.offsets[index++] = { pos : binaryIndex, len : len0 + 1 }; + moduleCur = 0; + } + } + } else { + moduleCur++; + if (moduleCur === module) { + this.offsets[index++] = { pos : binaryIndex - 1, len : -1 }; + moduleCur = 0; + } + } } } + if (!this.offsets) + delete this.binaryFormat; + //var t2 = performance.now(); //console.log(t2 - t1); }; @@ -185,14 +223,53 @@ define([ } if (this.supportBinaryFormat) { - if (!this.data) { + if (!this.data && !this.offsets) { this.openBinary(this.binaryFormat); - delete this.binaryFormat; } var dataTmp = ctx.createImageData(this.width, this.heightOne); var sizeImage = 4 * this.width * this.heightOne; - dataTmp.data.set(new Uint8ClampedArray(this.data.buffer, index * sizeImage, sizeImage)); + + if (!this.offsets) { + dataTmp.data.set(new Uint8ClampedArray(this.data.buffer, index * sizeImage, sizeImage)); + } else { + var binaryAlpha = this.binaryFormat; + var binaryIndex = this.offsets[index].pos; + var alphaChannel = 0; + var pixelsCount = this.width * this.heightOne; + var tmpValue = 0, len0 = 0; + var imagePixels = dataTmp.data; + if (-1 != this.offsets[index].len) { + /* + // this values is already 0. + for (var i = 0; i < this.offsets[index].len; i++) { + pixels[alphaChannel] = 0; + alphaChannel += 4; + } + */ + alphaChannel += 4 * this.offsets[index].len; + } + while (pixelsCount > 0) { + tmpValue = binaryAlpha[binaryIndex++]; + if (0 == tmpValue) { + len0 = binaryAlpha[binaryIndex++]; + if (len0 > pixelsCount) + len0 = pixelsCount; + while (len0 > 0) { + len0--; + imagePixels[alphaChannel] = imagePixels[alphaChannel + 1] = imagePixels[alphaChannel + 2] = 255; + imagePixels[alphaChannel + 3] = 0; // this value is already 0. + alphaChannel += 4; + pixelsCount--; + } + } else { + imagePixels[alphaChannel] = imagePixels[alphaChannel + 1] = imagePixels[alphaChannel + 2] = 255 - tmpValue; + imagePixels[alphaChannel + 3] = tmpValue; + alphaChannel += 4; + pixelsCount--; + } + } + } ctx.putImageData(dataTmp, 0, 0); } else { ctx.clearRect(0, 0, this.width, this.heightOne); diff --git a/apps/common/main/lib/component/MenuItem.js b/apps/common/main/lib/component/MenuItem.js index 96c76d36c..ab5fc79d8 100644 --- a/apps/common/main/lib/component/MenuItem.js +++ b/apps/common/main/lib/component/MenuItem.js @@ -301,6 +301,7 @@ define([ }, onItemMouseDown: function(e) { + Common.UI.HintManager.clearHints(); if (e.which != 1) { e.preventDefault(); e.stopPropagation(); diff --git a/apps/common/main/lib/component/RadioBox.js b/apps/common/main/lib/component/RadioBox.js index f596e864b..220019ea9 100644 --- a/apps/common/main/lib/component/RadioBox.js +++ b/apps/common/main/lib/component/RadioBox.js @@ -157,7 +157,7 @@ define([ setRawValue: function(value) { var value = (value === true || value === 'true' || value === '1' || value === 1 ); - $('input[type=radio][name=' + this.name + ']').removeClass('checked'); + value && $('input[type=radio][name=' + this.name + ']').removeClass('checked'); this.$radio.toggleClass('checked', value); this.$radio.prop('checked', value); }, diff --git a/apps/common/main/lib/component/Tooltip.js b/apps/common/main/lib/component/Tooltip.js index 83d8f9c84..5d3a123dd 100644 --- a/apps/common/main/lib/component/Tooltip.js +++ b/apps/common/main/lib/component/Tooltip.js @@ -109,8 +109,12 @@ }); if (opts.hideonclick) { + var me = this; var tip = this.$element.data('bs.tooltip'); - if (tip) tip.tip().on('click', function() {tip.hide();}); + if (tip) tip.tip().on('click', function() { + tip.hide(); + me.trigger('tooltip:hideonclick', this); + }); } this.$element.on('shown.bs.tooltip', _.bind(this.onTipShown, this)); diff --git a/apps/common/main/lib/component/Window.js b/apps/common/main/lib/component/Window.js index 302e98995..2778c1cf0 100644 --- a/apps/common/main/lib/component/Window.js +++ b/apps/common/main/lib/component/Window.js @@ -490,7 +490,8 @@ define([ if (options.width=='auto') { text_cnt.height(Math.max(text.height(), icon_height) + ((check.length>0) ? (check.height() + parseInt(check.css('margin-top'))) : 0)); body.height(parseInt(text_cnt.css('height')) + parseInt(footer.css('height'))); - window.setSize(text.position().left + text.width() + parseInt(text_cnt.css('padding-right')), + var span_el = check.find('span'); + window.setSize(Math.max(text.width(), span_el.length>0 ? span_el.position().left + span_el.width() : 0) + text.position().left + parseInt(text_cnt.css('padding-right')), parseInt(body.css('height')) + parseInt(header.css('height'))); } else { text.css('white-space', 'normal'); diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js index 9d4ec992f..4f42f14dd 100644 --- a/apps/common/main/lib/controller/Desktop.js +++ b/apps/common/main/lib/controller/Desktop.js @@ -194,7 +194,21 @@ define([ }; var _onHintsShow = function (visible, level) { - native.execCommand('althints:show', JSON.stringify(visible && !(level > 0))); + let info = { + visible: visible && !(level > 0), + }; + + if ( !!titlebuttons ) { + info.hints = { + 'print': titlebuttons['print'].btn.btnEl.attr('data-hint-title'), + // 'home': Common.UI.HintManager.getStaticHint('btnhome'), + 'undo': titlebuttons['undo'].btn.btnEl.attr('data-hint-title'), + 'redo': titlebuttons['redo'].btn.btnEl.attr('data-hint-title'), + 'save': titlebuttons['save'].btn.btnEl.attr('data-hint-title'), + }; + } + + native.execCommand('althints:show', JSON.stringify(info)); } var _onKeyDown = function (e) { @@ -349,7 +363,7 @@ define([ if ( !!nativevars && nativevars.helpUrl ) { var webapp = window.SSE ? 'spreadsheeteditor' : window.PE ? 'presentationeditor' : 'documenteditor'; - return nativevars.helpUrl + webapp + '/main/resources/help'; + return nativevars.helpUrl + '/' + webapp + '/main/resources/help'; } return undefined; diff --git a/apps/common/main/lib/controller/ExternalDiagramEditor.js b/apps/common/main/lib/controller/ExternalDiagramEditor.js index 35f403ad2..70170e8ab 100644 --- a/apps/common/main/lib/controller/ExternalDiagramEditor.js +++ b/apps/common/main/lib/controller/ExternalDiagramEditor.js @@ -243,15 +243,6 @@ define([ } }, - showExternalEditor: function () { - if ( externalEditor ) { - var value = Common.localStorage.getItem("ui-theme-id", "theme-light"); - externalEditor.serviceCommand('theme:change', value); - } - - this.diagramEditorView.show(); - }, - warningTitle: 'Warning', warningText: 'The object is disabled because of editing by another user.', textClose: 'Close', diff --git a/apps/common/main/lib/controller/ExternalOleEditor.js b/apps/common/main/lib/controller/ExternalOleEditor.js index 35de11350..2b305000e 100644 --- a/apps/common/main/lib/controller/ExternalOleEditor.js +++ b/apps/common/main/lib/controller/ExternalOleEditor.js @@ -241,15 +241,6 @@ define([ } }, - showExternalEditor: function () { - if ( externalEditor ) { - var value = Common.localStorage.getItem("ui-theme-id", "theme-light"); - externalEditor.serviceCommand('theme:change', value); - } - - this.oleEditorView.show(); - }, - warningTitle: 'Warning', warningText: 'The object is disabled because of editing by another user.', textClose: 'Close', diff --git a/apps/common/main/lib/controller/HintManager.js b/apps/common/main/lib/controller/HintManager.js index 548d6e048..a946ad0f4 100644 --- a/apps/common/main/lib/controller/HintManager.js +++ b/apps/common/main/lib/controller/HintManager.js @@ -568,7 +568,7 @@ Common.UI.HintManager = new(function() { if (curr.prop('id') === 'btn-goback' || curr.closest('.btn-slot').prop('id') === 'slot-btn-options' || curr.closest('.btn-slot').prop('id') === 'slot-btn-mode' || curr.prop('id') === 'btn-favorite' || curr.parent().prop('id') === 'tlb-box-users' || curr.prop('id') === 'left-btn-thumbs' || curr.hasClass('scroll') || curr.prop('id') === 'left-btn-about' || - curr.prop('id') === 'left-btn-support') { + curr.prop('id') === 'left-btn-support' || curr.closest('.btn-slot').prop('id') === 'slot-btn-search') { _resetToDefault(); return; } diff --git a/apps/common/main/lib/controller/Plugins.js b/apps/common/main/lib/controller/Plugins.js index 9632e386e..05775c87a 100644 --- a/apps/common/main/lib/controller/Plugins.js +++ b/apps/common/main/lib/controller/Plugins.js @@ -204,17 +204,7 @@ define([ arr = []; storePlugins.each(function(item){ var plugin = new Asc.CPlugin(); - plugin.deserialize(item.attributes); - - var variations = item.get('variations'), - variationsArr = []; - variations.forEach(function(itemVar){ - var variation = new Asc.CPluginVariation(); - variation.deserialize(itemVar.attributes); - variationsArr.push(variation); - }); - - plugin.set_Variations(variationsArr); + plugin.deserialize(item.get('original')); item.set('pluginObj', plugin); arr.push(plugin); }); @@ -562,7 +552,8 @@ define([ visible: pluginVisible, groupName: (item.group) ? item.group.name : '', groupRank: (item.group) ? item.group.rank : 0, - minVersion: item.minVersion + minVersion: item.minVersion, + original: item })); } }); diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js index 64386ade3..8597fd11e 100644 --- a/apps/common/main/lib/controller/ReviewChanges.js +++ b/apps/common/main/lib/controller/ReviewChanges.js @@ -613,7 +613,8 @@ define([ this.view.turnChanges(state, global); if (userId && this.userCollection) { var rec = this.userCollection.findOriginalUser(userId); - rec && this.showTips(Common.Utils.String.format(globalFlag ? this.textOnGlobal : this.textOffGlobal, AscCommon.UserInfoParser.getParsedName(rec.get('username')))); + rec && Common.NotificationCenter.trigger('showmessage', {msg: Common.Utils.String.format(globalFlag ? this.textOnGlobal : this.textOffGlobal, AscCommon.UserInfoParser.getParsedName(rec.get('username')))}, + {timeout: 5000, hideCloseTip: true}); } } }, @@ -903,41 +904,6 @@ define([ me.appConfig.reviewHoverMode = val; }, - showTips: function(strings) { - var me = this; - if (!strings.length) return; - if (typeof(strings)!='object') strings = [strings]; - - function showNextTip() { - var str_tip = strings.shift(); - if (str_tip) { - me.tooltip.setTitle(str_tip); - me.tooltip.show(); - me.tipTimeout = setTimeout(function () { - me.tooltip.hide(); - }, 5000); - } - } - - if (!this.tooltip) { - this.tooltip = new Common.UI.Tooltip({ - owner: this.getApplication().getController('Toolbar').getView(), - hideonclick: true, - placement: 'bottom', - cls: 'main-info', - offset: 30 - }); - this.tooltip.on('tooltip:hide', function(cmp){ - if (cmp==me.tooltip) { - clearTimeout(me.tipTimeout); - setTimeout(showNextTip, 300); - } - }); - } - - showNextTip(); - }, - applySettings: function(menu) { this.view && this.view.turnSpelling( Common.localStorage.getBool(this.view.appPrefix + "settings-spellcheck", true) ); this.view && this.view.turnCoAuthMode( Common.localStorage.getBool(this.view.appPrefix + "settings-coauthmode", true) ); diff --git a/apps/common/main/lib/util/utils.js b/apps/common/main/lib/util/utils.js index 92ec5261f..52ca72d75 100644 --- a/apps/common/main/lib/util/utils.js +++ b/apps/common/main/lib/util/utils.js @@ -436,7 +436,7 @@ var metrics = new(function() { } })(); -Common.Utils.Metric = _extend_object(Common.Utils.Metric, metrics); +Common.Utils.Metric = _extend_object(metrics, Common.Utils.Metric); Common.Utils.RGBColor = function(colorString) { var r, g, b; @@ -603,8 +603,12 @@ Common.Utils.RGBColor = function(colorString) { } }; -Common.Utils.String = new (function() { +var utilsString = new (function() { return { + textCtrl: 'Ctrl', + textShift: 'Shift', + textAlt: 'Alt', + format: function(format) { var args = _.toArray(arguments).slice(1); if (args.length && typeof args[0] == 'object') @@ -648,7 +652,7 @@ Common.Utils.String = new (function() { return Common.Utils.String.format(template, string.replace(/\+(?=\S)/g, '').replace(/Ctrl|ctrl/g, '⌘').replace(/Alt|alt/g, '⌥').replace(/Shift|shift/g, '⇧')); } - return Common.Utils.String.format(template, string); + return Common.Utils.String.format(template, string.replace(/Ctrl|ctrl/g, this.textCtrl).replace(/Alt|alt/g, this.textAlt).replace(/Shift|shift/g, this.textShift)); }, parseFloat: function(string) { @@ -680,6 +684,8 @@ Common.Utils.String = new (function() { } })(); +Common.Utils.String = _extend_object(utilsString, Common.Utils.String); + Common.Utils.isBrowserSupported = function() { return !((Common.Utils.ieVersion != 0 && Common.Utils.ieVersion < 10.0) || (Common.Utils.safariVersion != 0 && Common.Utils.safariVersion < 5.0) || diff --git a/apps/common/main/lib/view/Header.js b/apps/common/main/lib/view/Header.js index 7f7fcc26a..4e7e4e8b3 100644 --- a/apps/common/main/lib/view/Header.js +++ b/apps/common/main/lib/view/Header.js @@ -209,11 +209,24 @@ define([ function updateDocNamePosition(config) { if ( $labelDocName && config) { var $parent = $labelDocName.parent(); - if (!config.isEdit || !config.customization || !config.customization.compactHeader) { + if (!config.isEdit) { var _left_width = $parent.position().left, _right_width = $parent.next().outerWidth(); $parent.css('padding-left', _left_width < _right_width ? Math.max(2, _right_width - _left_width) : 2); $parent.css('padding-right', _left_width < _right_width ? 2 : Math.max(2, _left_width - _right_width)); + } else if (!(config.customization && config.customization.compactHeader)) { + var _left_width = $parent.position().left, + _right_width = $parent.next().outerWidth(), + outerWidth = $labelDocName.outerWidth(), + cssWidth = $labelDocName[0].style.width; + cssWidth = cssWidth ? parseFloat(cssWidth) : outerWidth; + if (cssWidth - outerWidth > 0.1) { + $parent.css('padding-left', _left_width < _right_width ? Math.max(2, $parent.outerWidth() - 2 - cssWidth) : 2); + $parent.css('padding-right', _left_width < _right_width ? 2 : Math.max(2, $parent.outerWidth() - 2 - cssWidth)); + } else { + $parent.css('padding-left', _left_width < _right_width ? Math.max(2, Math.min(_right_width - _left_width + 2, $parent.outerWidth() - 2 - cssWidth)) : 2); + $parent.css('padding-right', _left_width < _right_width ? 2 : Math.max(2, Math.min(_left_width - _right_width + 2, $parent.outerWidth() - 2 - cssWidth))); + } } if (!(config.customization && config.customization.toolbarHideFileName) && (!config.isEdit || config.customization && config.customization.compactHeader)) { @@ -226,6 +239,12 @@ define([ } } + function onResize() { + if (appConfig && appConfig.isEdit && !(appConfig.customization && appConfig.customization.compactHeader)) { + updateDocNamePosition(appConfig); + } + } + function onAppShowed(config) { // config.isCrypted =true; //delete fore merge! if ( $labelDocName ) { @@ -352,6 +371,9 @@ define([ if (me.btnSearch) me.btnSearch.updateHint(me.tipSearch + Common.Utils.String.platformKey('Ctrl+F')); + + if (appConfig.isEdit && !(appConfig.customization && appConfig.customization.compactHeader)) + Common.NotificationCenter.on('window:resize', onResize); } function onFocusDocName(e){ @@ -779,6 +801,7 @@ define([ this.imgCrypted.toggleClass('hidden', false); this._showImgCrypted = false; } + (width>=0) && onResize(); }, getTextWidth: function(text) { diff --git a/apps/common/main/lib/view/Plugins.js b/apps/common/main/lib/view/Plugins.js index 75ed76e8b..37c97cc1d 100644 --- a/apps/common/main/lib/view/Plugins.js +++ b/apps/common/main/lib/view/Plugins.js @@ -60,11 +60,11 @@ define([ '', '', '', '
-
of 0
-
of 0
\ No newline at end of file diff --git a/apps/documenteditor/main/resources/help/de/UsageInstructions/NonprintingCharacters.htm b/apps/documenteditor/main/resources/help/de/UsageInstructions/NonprintingCharacters.htm index 5de95d5ff..737c527ef 100644 --- a/apps/documenteditor/main/resources/help/de/UsageInstructions/NonprintingCharacters.htm +++ b/apps/documenteditor/main/resources/help/de/UsageInstructions/NonprintingCharacters.htm @@ -5,6 +5,7 @@ + @@ -15,62 +16,62 @@

Formatierungszeichen ein-/ausblenden

Die Formatierungszeichen helfen Ihnen bei der Bearbeitung eines Dokuments. Sie zeigen das Vorhandensein verschiedener Formatierungen an, aber sie werden nicht mit dem Dokument gedruckt, auch wenn sie auf dem Bildschirm angezeigt werden.

-

Um Formatierungszeichen ein- bzw. auszublenden im Dokumenteneditor, klicken Sie auf das Symbol Formatierungszeichen Formatierungszeichen in der Registerkarte Start.

+

Um Formatierungszeichen ein- bzw. auszublenden im Dokumenteneditor, klicken Sie auf das Symbol Formatierungszeichen

in der Registerkarte Start.

Die Formatierungszeichen:

- + - + - + - + - + - - + + - - + + - - + + - + - + - +
LeerzeichenLeerzeichen
Wird eingefügt, wenn Sie die Leertaste drücken. Dieses Zeichen zeigt einen Zwischenraum zwischen den Zeichen an.
TabulatorenTabulator
Wird eingefügt, wenn Sie die Tabulatortaste drücken. Dudurch wird der Cursor zur nächsten Tabulatormarke bewegt.
Absatzzeichen (d.h. harter Zeilenumbruch)Harter Zeilenumbruch
Wird eingefügt, wenn Sie die Eingabetaste drücken. Dadurch wird der aktuelle Absatz beendet und ein Abstand zum folgenden Absatz eingefügt. Das Zeichen enthält Informationen zur Absatzformatierung.
Zeilenumbruch (d.h. weicher Zeilenumbruch)Weicher Zeilenumbruch
Wird eingefügt, wenn Sie die Tastenkombination UMSCHALT+ENTER verwenden. Dadurch wird die aktuelle Zeile umgebrochen und die folgenden Zeilen werden ohne zusätzlichen Zwischenabstand angefügt. Weiche Zeilenumbrüche werden hauptsächlich in Überschriften und Titeln verwendet.
Geschütztes LeerzeichenGeschütztes Leerzeichen
Wird eingefügt, wenn Sie die Tastenkombination STRG+UMSCHALT+LEERTASTE verwenden. Es erzeugt ein Leerzeichen zwischen Zeichen, die nicht als Beginn einer neuen Zeile verwendet werden können.
SeitenumbruchSeitenumbruchWird eingefügt, wenn Sie das Symbol Umbrüche Umbrüche in der oberen Symbolleiste auf den Registerkarten Einfügen oder Layout anklicken und die Option Seitenumbruch einfügen auswählen oder im Rechtsklickmenü oder im Fenster mit den erweiterten Einstellungen die Option Seitenumbruch vorher auswählen.
Wird eingefügt, wenn Sie das Symbol
Umbrüche in der oberen Symbolleiste auf den Registerkarten Einfügen oder Layout anklicken und die Option Seitenumbruch einfügen auswählen oder im Rechtsklickmenü oder im Fenster mit den erweiterten Einstellungen die Option Seitenumbruch vorher auswählen.
AbschnittsumbrücheAbschnittsumbruchWird eingefügt, wenn Sie das Symbol Umbrüche Umbrüche in der oberen Symbolleiste auf den Registerkarten Einfügen oder Layout anklicken und eine der Optionen im Untermenü Abschnittsumbruch einfügen auswählen (die Anzeige für den jeweiligen Umbruch unterscheidet sich je nachdem, welche Option ausgewählt ist): Nächste Seite, Fortlaufend, Gerade Seite, Ungerade Seite).
Wird eingefügt, wenn Sie das Symbol
Umbrüche in der oberen Symbolleiste auf den Registerkarten Einfügen oder Layout anklicken und eine der Optionen im Untermenü Abschnittsumbruch einfügen auswählen (die Anzeige für den jeweiligen Umbruch unterscheidet sich je nachdem, welche Option ausgewählt ist): Nächste Seite, Fortlaufend, Gerade Seite, Ungerade Seite).
SpaltenumbrücheSpaltenumbruchWird eingefügt, wenn Sie das Symbol Umbrüche Umbrüche in der oberen Symbolleiste auf den Registerkarten Einfügen oder Layout anklicken und die Option Spaltenumbruch einfügen auswählen.
Wird eingefügt, wenn Sie das Symbol
Umbrüche in der oberen Symbolleiste auf den Registerkarten Einfügen oder Layout anklicken und die Option Spaltenumbruch einfügen auswählen.
Markierungen für das Zell- und Zeilenende in TabellenMarkierungen in Tabellen
Diese Markierungen enthalten die Formatierungscodes für die jeweilige Zelle bzw. Zeile.
Kleines schwarzes Quadrat am Seitenrand links von einem AbsatzSchwarzes Quadrat
Zeigt an, dass mindestens eine der Absatzoptionen angewendet wurde, z.B. Zeilen zusammenhalten, Seitenumbruch oberhalb.
AnkerAnker
Zeigt die Position von schwebenden Objekten an (Objekte deren Position nicht auf der Seite Fixiert ist), z.B. von Bildern, AutoFormen, Diagrammen. Um den Anker sichtbar zu machen, wählen Sie einfach ein beliebiges Objekt aus.
diff --git a/apps/documenteditor/main/resources/help/de/UsageInstructions/OCR.htm b/apps/documenteditor/main/resources/help/de/UsageInstructions/OCR.htm index 04d635779..573dba5e5 100644 --- a/apps/documenteditor/main/resources/help/de/UsageInstructions/OCR.htm +++ b/apps/documenteditor/main/resources/help/de/UsageInstructions/OCR.htm @@ -5,6 +5,7 @@ + @@ -17,14 +18,14 @@

Mit ONLYOFFICE Dokumenteneditor können Sie Text aus einem Bild (.png .jpg) extrahieren und in Ihr Dokument einfügen.

  1. Öffnen Sie Ihr Dokument und platzieren Sie den Cursor an der Stelle, an der Sie den Text einfügen möchten.
  2. -
  3. Öffnen Sie die Registerkarte Plugins und wählen Sie den Menüpunkt OCR Plugin - Symbol OCR aus.
  4. +
  5. Öffnen Sie die Registerkarte Plugins und wählen Sie den Menüpunkt
    OCR aus.
  6. Klicken Sie auf Datei laden und wählen Sie das Bild aus.
  7. Wählen Sie die Erkennungssprache aus dem Drop-Down-Menü Sprache auswählen.
  8. Klicken Sie auf Erkennen.
  9. Klicken Sie auf Text einfügen.

Sie sollten den eingefügten Text auf Fehler und Layout überprüfen.

- OCR Plugin gif + OCR Plugin gif
\ No newline at end of file diff --git a/apps/documenteditor/main/resources/help/de/UsageInstructions/OpenCreateNew.htm b/apps/documenteditor/main/resources/help/de/UsageInstructions/OpenCreateNew.htm index 480ea8836..b89c9aea9 100644 --- a/apps/documenteditor/main/resources/help/de/UsageInstructions/OpenCreateNew.htm +++ b/apps/documenteditor/main/resources/help/de/UsageInstructions/OpenCreateNew.htm @@ -5,6 +5,7 @@ + @@ -27,7 +28,7 @@

Desktop-Editor

  1. Wählen Sie im Hauptfenster des Programms das Menü Dokument im Abschnitt Neu erstellen der linken Seitenleiste aus - eine neue Datei wird in einer neuen Registerkarte geöffnet.
  2. -
  3. Wenn Sie alle gewünschten Änderungen durchgeführt haben, klicken Sie auf das Symbol Speichern Speichern in der oberen linken Ecke oder wechseln Sie in die Registerkarte Datei und wählen Sie das Menü Speichern als aus.
  4. +
  5. Wenn Sie alle gewünschten Änderungen durchgeführt haben, klicken Sie auf das Symbol Speichern
    in der oberen linken Ecke oder wechseln Sie in die Registerkarte Datei und wählen Sie das Menü Speichern als aus.
  6. Wählen Sie im Fenster Dateiverwaltung den Speicherort, geben Sie den Namen an, wählen Sie das Format aus in dem Sie das Dokument speichern möchten (DOCX, DOCXF, OFORM, Dokumentvorlage (DOTX), ODT, OTT, RTF, TXT, PDF oder PDFA) und klicken Sie auf die Schaltfläche Speichern.
@@ -60,7 +61,7 @@ -

Um den Ordner in dem die Datei gespeichert ist in der Online-Version in einem neuen Browser-Tab oder in der Desktop-Version im Fenster Datei-Explorer zu öffnen, klicken Sie auf der rechten Seite des Editor-Hauptmenüs auf das Symbol Dateispeicherort öffnen Dateispeicherort öffnen. Alternativ können Sie in der oberen Menüleiste auf die Registerkarte Datei wechseln und die Option Dateispeicherort öffnen auswählen.

+

Um den Ordner in dem die Datei gespeichert ist in der Online-Version in einem neuen Browser-Tab oder in der Desktop-Version im Fenster Datei-Explorer zu öffnen, klicken Sie auf der rechten Seite des Editor-Hauptmenüs auf das Symbol

Dateispeicherort öffnen. Alternativ können Sie in der oberen Menüleiste auf die Registerkarte Datei wechseln und die Option Dateispeicherort öffnen auswählen.

\ No newline at end of file diff --git a/apps/documenteditor/main/resources/help/de/UsageInstructions/PageBreaks.htm b/apps/documenteditor/main/resources/help/de/UsageInstructions/PageBreaks.htm index feb68856e..b3c727256 100644 --- a/apps/documenteditor/main/resources/help/de/UsageInstructions/PageBreaks.htm +++ b/apps/documenteditor/main/resources/help/de/UsageInstructions/PageBreaks.htm @@ -5,6 +5,7 @@ + @@ -15,8 +16,8 @@

Seitenumbrüche einfügen

Im Dokumenteneditor können Sie einen Seitenumbruch hinzufügen, um eine neue Seite zu starten, eine leere Seite einzufügen und die Paginierungsoptionen anzupassen.

-

Um einen Seitenumbruch an der aktuellen Zeigerposition einzufügen, klicken Sie auf das Symbol Umbrüche Unterbrechungen auf der Registerkarte Einfügen oder Layout der oberen Symbolleiste oder klicken Sie auf den Pfeil neben diesem Symbol und wählen Sie im Menu die Option Seitenumbruch einfügen. Sie können auch die Tastenkombination Strg + Eingabetaste verwenden.

-

Um eine leere Seite einzufügen, klicken Sie auf das Symbol Leere Seite Leere Seite auf der Registerkarte Einfügen der oberen Symbolleiste. Dadurch werden zwei Seitenumbrüche eingefügt, wodurch eine leere Seite erstellt wird.

+

Um einen Seitenumbruch an der aktuellen Zeigerposition einzufügen, klicken Sie auf das Symbol

Unterbrechungen auf der Registerkarte Einfügen oder Layout der oberen Symbolleiste oder klicken Sie auf den Pfeil neben diesem Symbol und wählen Sie im Menu die Option Seitenumbruch einfügen. Sie können auch die Tastenkombination Strg + Eingabetaste verwenden.

+

Um eine leere Seite einzufügen, klicken Sie auf das Symbol

Leere Seite auf der Registerkarte Einfügen der oberen Symbolleiste. Dadurch werden zwei Seitenumbrüche eingefügt, wodurch eine leere Seite erstellt wird.

Um einen Seitenumbruch vor dem ausgewählten Absatz einzufügen, d. H. um diesen Absatz oben auf einer neuen Seite zu beginnen: