Merge branch 'develop' into feature/Bug_20632

This commit is contained in:
JuliaSvinareva 2021-08-18 19:46:55 +03:00 committed by GitHub
commit b9b94a6453
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
511 changed files with 52840 additions and 34368 deletions

View file

@ -2,23 +2,21 @@
## web-apps ## web-apps
The frontend for [ONLYOFFICE Document Server][2]. Builds the program interface and allows the user create, edit, save and export text, spreadsheet and presentation documents using the common interface of a document editor. The frontend for [ONLYOFFICE Document Server][2] and [ONLYOFFICE Desktop Editors](https://github.com/ONLYOFFICE/DesktopEditors). Builds the program interface and allows the user create, edit, save and export text documents, spreadsheets, and presentations.
## Previous versions ## Previous versions
Until 2019-10-23 the repository was called web-apps-pro Until 2019-10-23 the repository was called web-apps-pro.
## Project Information ## Project information
Official website: [http://www.onlyoffice.org](http://onlyoffice.org "http://www.onlyoffice.org") Official website: [https://www.onlyoffice.com/](https://www.onlyoffice.com "https://www.onlyoffice.com")
Code repository: [https://github.com/ONLYOFFICE/web-apps](https://github.com/ONLYOFFICE/web-apps "https://github.com/ONLYOFFICE/web-apps") Code repository: [https://github.com/ONLYOFFICE/web-apps](https://github.com/ONLYOFFICE/web-apps "https://github.com/ONLYOFFICE/web-apps")
SaaS version: [http://www.onlyoffice.com](http://www.onlyoffice.com "http://www.onlyoffice.com") ## User feedback and support
## User Feedback and Support If you have any problems with or questions about [ONLYOFFICE Document Server][2], please visit our official forum: [dev.onlyoffice.org][1] or you can ask and answer ONLYOFFICE development questions on [Stack Overflow][3].
If you have any problems with or questions about [ONLYOFFICE Document Server][2], please visit our official forum to find answers to your questions: [dev.onlyoffice.org][1] or you can ask and answer ONLYOFFICE development questions on [Stack Overflow][3].
[1]: http://dev.onlyoffice.org [1]: http://dev.onlyoffice.org
[2]: https://github.com/ONLYOFFICE/DocumentServer [2]: https://github.com/ONLYOFFICE/DocumentServer

View file

@ -135,6 +135,12 @@
request: bool (default: true), // enable set name request: bool (default: true), // enable set name
label: string (default: "Guest") // postfix for user name label: string (default: "Guest") // postfix for user name
}, },
review: {
hideReviewDisplay: false // hide button Review mode,
showReviewChanges: false,
reviewDisplay: 'original',
trackChanges: undefined // true/false - open editor with track changes mode on/off,
},
chat: true, chat: true,
comments: true, comments: true,
zoom: 100, zoom: 100,
@ -147,12 +153,12 @@
autosave: true, autosave: true,
forcesave: false, forcesave: false,
commentAuthorOnly: false, // must be deprecated. use permissions.editCommentAuthorOnly and permissions.deleteCommentAuthorOnly instead commentAuthorOnly: false, // must be deprecated. use permissions.editCommentAuthorOnly and permissions.deleteCommentAuthorOnly instead
showReviewChanges: false, showReviewChanges: false, // must be deprecated. use customization.review.showReviewChanges instead
help: true, help: true,
compactHeader: false, compactHeader: false,
toolbarNoTabs: false, toolbarNoTabs: false,
toolbarHideFileName: false, toolbarHideFileName: false,
reviewDisplay: 'original', reviewDisplay: 'original', // must be deprecated. use customization.review.reviewDisplay instead
spellcheck: true, spellcheck: true,
compatibleFeatures: false, compatibleFeatures: false,
unit: 'cm' // cm, pt, inch, unit: 'cm' // cm, pt, inch,
@ -160,7 +166,7 @@
macros: true // can run macros in document macros: true // can run macros in document
plugins: true // can run plugins in document plugins: true // can run plugins in document
macrosMode: 'warn' // warn about automatic macros, 'enable', 'disable', 'warn', macrosMode: 'warn' // warn about automatic macros, 'enable', 'disable', 'warn',
trackChanges: undefined // true/false - open editor with track changes mode on/off, trackChanges: undefined // true/false - open editor with track changes mode on/off, // must be deprecated. use customization.review.trackChanges instead
hideRulers: false // hide or show rulers on first loading (presentation or document editor) hideRulers: false // hide or show rulers on first loading (presentation or document editor)
hideNotes: false // hide or show notes panel on first loading (presentation editor) hideNotes: false // hide or show notes panel on first loading (presentation editor)
uiTheme: 'theme-dark' // set interface theme: id or default-dark/default-light uiTheme: 'theme-dark' // set interface theme: id or default-dark/default-light

View file

@ -203,12 +203,13 @@ if (window.Common === undefined) {
}); });
}, },
requestRestore: function(version, url) { requestRestore: function(version, url, fileType) {
_postMessage({ _postMessage({
event: 'onRequestRestore', event: 'onRequestRestore',
data: { data: {
version: version, version: version,
url: url url: url,
fileType: fileType
} }
}); });
}, },
@ -273,19 +274,23 @@ if (window.Common === undefined) {
_postMessage({ event: 'onOutdatedVersion' }); _postMessage({ event: 'onOutdatedVersion' });
}, },
downloadAs: function(url) { downloadAs: function(url, fileType) {
_postMessage({ _postMessage({
event: 'onDownloadAs', event: 'onDownloadAs',
data: url data: {
url: url,
fileType: fileType
}
}); });
}, },
requestSaveAs: function(url, title) { requestSaveAs: function(url, title, fileType) {
_postMessage({ _postMessage({
event: 'onRequestSaveAs', event: 'onRequestSaveAs',
data: { data: {
url: url, url: url,
title: title title: title,
fileType: fileType
} }
}); });
}, },

View file

@ -92,6 +92,14 @@
str = num.toString(); str = num.toString();
for (var i=str.length; i<digits; i++) strfill += fill; for (var i=str.length; i<digits; i++) strfill += fill;
return strfill + str; return strfill + str;
},
getKeyByValue: function(obj, value) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop)) {
if(obj[prop] === value)
return prop;
}
}
} }
}; };
})(); })();

View file

@ -687,6 +687,7 @@
font-weight: bold; font-weight: bold;
font-size: 11px; font-size: 11px;
box-shadow: 0 6px 12px rgba(0,0,0,0.175); box-shadow: 0 6px 12px rgba(0,0,0,0.175);
max-width: 350px;
padding: 5px 12px; padding: 5px 12px;
white-space: pre-wrap; white-space: pre-wrap;

View file

@ -214,6 +214,9 @@ define([
me.trigger('render:after', me); me.trigger('render:after', me);
} }
if (this.disabled) {
this.setDisabled(!!this.disabled);
}
return this; return this;
}, },

View file

@ -129,7 +129,7 @@ define([
me.dataHintDirection = me.options.dataHintDirection || ''; me.dataHintDirection = me.options.dataHintDirection || '';
me.dataHintOffset = me.options.dataHintOffset || ''; me.dataHintOffset = me.options.dataHintOffset || '';
me.listenTo(me.model, 'change', me.render); me.listenTo(me.model, 'change', this.model.get('skipRenderOnChange') ? me.onChange : me.render);
me.listenTo(me.model, 'change:selected', me.onSelectChange); me.listenTo(me.model, 'change:selected', me.onSelectChange);
me.listenTo(me.model, 'remove', me.remove); me.listenTo(me.model, 'remove', me.remove);
}, },
@ -197,6 +197,18 @@ define([
onSelectChange: function(model, selected) { onSelectChange: function(model, selected) {
this.trigger('select', this, model, selected); this.trigger('select', this, model, selected);
},
onChange: function () {
if (_.isUndefined(this.model.id))
return this;
var el = this.$el || $(this.el);
el.toggleClass('selected', this.model.get('selected') && this.model.get('allowSelected'));
el.toggleClass('disabled', !!this.model.get('disabled'));
this.trigger('change', this, this.model);
return this;
} }
}); });
@ -321,7 +333,8 @@ define([
if (this.enableKeyEvents && this.parentMenu && this.handleSelect) { if (this.enableKeyEvents && this.parentMenu && this.handleSelect) {
if (!me.showLast) if (!me.showLast)
this.parentMenu.on('show:before', function(menu) { me.deselectAll(); }); this.parentMenu.on('show:before', function(menu) { me.deselectAll(); });
this.parentMenu.on('show:after', function(menu) { this.parentMenu.on('show:after', function(menu, e) {
if (e && (menu.el !== e.target)) return;
if (me.showLast) me.showLastSelected(); if (me.showLast) me.showLastSelected();
Common.NotificationCenter.trigger('dataview:focus'); Common.NotificationCenter.trigger('dataview:focus');
_.delay(function() { _.delay(function() {

View file

@ -183,8 +183,8 @@ Common.UI.HintManager = new(function() {
}; };
var _getLetters = function(countButtons) { var _getLetters = function(countButtons) {
var arr = [..._arrAlphabet]; var arr = _arrAlphabet.slice();
arr[0] = _arrAlphabet[0].repeat(2); arr[0] = _arrAlphabet[0] + _arrAlphabet[0];
for (var i = 1; arr.length < countButtons; i++) { for (var i = 1; arr.length < countButtons; i++) {
arr.push(_arrAlphabet[0] + _arrAlphabet[i]); arr.push(_arrAlphabet[0] + _arrAlphabet[i]);
} }
@ -215,7 +215,7 @@ Common.UI.HintManager = new(function() {
if (visibleItems.length > _arrAlphabet.length) { if (visibleItems.length > _arrAlphabet.length) {
_arrLetters = _getLetters(visibleItems.length); _arrLetters = _getLetters(visibleItems.length);
} else { } else {
_arrLetters = [..._arrAlphabet]; _arrLetters = _arrAlphabet.slice();
} }
var usedLetters = []; var usedLetters = [];
if ($(_currentSection).find('[data-hint-title]').length > 0) { if ($(_currentSection).find('[data-hint-title]').length > 0) {
@ -251,10 +251,17 @@ Common.UI.HintManager = new(function() {
}; };
var _getHints = function() { var _getHints = function() {
var docH = Common.Utils.innerHeight() - 20,
docW = Common.Utils.innerWidth() - 20,
topSection = _currentLevel !== 0 && $(_currentSection).length > 0 ? $(_currentSection).offset().top : 0,
bottomSection = _currentLevel !== 0 && $(_currentSection).length > 0 ? topSection + $(_currentSection).height() : docH;
if (_currentControls.length === 0) if (_currentControls.length === 0)
_getControls(); _getControls();
_currentControls.forEach(function(item, index) { _currentControls.forEach(function(item, index) {
if (!_isItemDisabled(item)) { if (!_isItemDisabled(item)) {
var leftBorder = 0,
rightBorder = docW;
if ($(_currentSection).prop('id') === 'toolbar' && ($(_currentSection).find('.toolbar-mask').length > 0 || item.closest('.group').find('.toolbar-group-mask').length > 0)) { if ($(_currentSection).prop('id') === 'toolbar' && ($(_currentSection).find('.toolbar-mask').length > 0 || item.closest('.group').find('.toolbar-group-mask').length > 0)) {
return; return;
} }
@ -264,6 +271,15 @@ Common.UI.HintManager = new(function() {
return; return;
} }
} }
if (_currentLevel === 0 && item.closest('.tabs.short').length > 0) {
var blockTabs = item.closest('.tabs.short');
leftBorder = blockTabs.offset().left;
rightBorder = leftBorder + blockTabs.width();
if (!item.hasClass('scroll')) {
leftBorder += 20;
rightBorder -= 20;
}
}
var hint = $('<div style="" class="hint-div">' + item.attr('data-hint-title') + '</div>'); var hint = $('<div style="" class="hint-div">' + item.attr('data-hint-title') + '</div>');
var direction = item.attr('data-hint-direction'); var direction = item.attr('data-hint-direction');
// exceptions // exceptions
@ -277,6 +293,12 @@ Common.UI.HintManager = new(function() {
item.attr('data-hint-direction', 'bottom'); item.attr('data-hint-direction', 'bottom');
} }
} }
var maxHeight = docH;
if ($('#file-menu-panel').is(':visible') && _currentLevel > 1 &&
($('.fms-flex-apply').is(':visible') || $('#fms-flex-apply').is(':visible')) &&
item.closest('.fms-flex-apply').length < 1 && item.closest('#fms-flex-apply').length < 1) {
maxHeight = docH - $('.fms-flex-apply').height();
}
var offsets = item.attr('data-hint-offset'); var offsets = item.attr('data-hint-offset');
var applyOffset = offsets === 'big' ? 6 : (offsets === 'medium' ? 4 : (offsets === 'small' ? 2 : 0)); var applyOffset = offsets === 'big' ? 6 : (offsets === 'medium' ? 4 : (offsets === 'small' ? 2 : 0));
if (applyOffset) { if (applyOffset) {
@ -295,35 +317,34 @@ Common.UI.HintManager = new(function() {
break; break;
} }
} else { } else {
offsets = offsets ? item.attr('data-hint-offset').split(',').map((item) => (parseInt(item))) : [0, 0]; offsets = offsets ? item.attr('data-hint-offset').split(',').map(function (item) { return parseInt(item); }) : [0, 0];
} }
var offset = item.offset(); var offset = item.offset();
if (direction === 'left-top') var top, left;
if (direction === 'left-top') {
top = offset.top - 10 + offsets[0];
left = offset.left - 10 + offsets[1];
} else if (direction === 'top') {
top = offset.top - 18 + offsets[0];
left = offset.left + (item.outerWidth() - 18) / 2 + offsets[1];
} else if (direction === 'right') {
top = offset.top + (item.outerHeight() - 18) / 2 + offsets[0];
left = offset.left + item.outerWidth() + offsets[1];
} else if (direction === 'left') {
top = offset.top + (item.outerHeight() - 18) / 2 + offsets[0];
left = offset.left - 18 + offsets[1];
} else {
top = offset.top + item.outerHeight() + offsets[0];
left = offset.left + (item.outerWidth() - 18) / 2 + offsets[1];
}
if (top < maxHeight && left < docW && top > topSection && top < bottomSection && left > leftBorder && left + 18 < rightBorder) {
hint.css({ hint.css({
top: offset.top - 10 + offsets[0], top: top,
left: offset.left - 10 + offsets[1] left: left
});
else if (direction === 'top')
hint.css({
top: offset.top - 18 + offsets[0],
left: offset.left + (item.outerWidth() - 18) / 2 + offsets[1]
});
else if (direction === 'right')
hint.css({
top: offset.top + (item.outerHeight() - 18) / 2 + offsets[0],
left: offset.left + item.outerWidth() + offsets[1]
});
else if (direction === 'left')
hint.css({
top: offset.top + (item.outerHeight() - 18) / 2 + offsets[0],
left: offset.left - 18 + offsets[1]
});
else
hint.css({
top: offset.top + item.outerHeight() + offsets[0],
left: offset.left + (item.outerWidth() - 18) / 2 + offsets[1]
}); });
$(document.body).append(hint); $(document.body).append(hint);
}
_currentHints.push(hint); _currentHints.push(hint);
} }
@ -350,7 +371,8 @@ Common.UI.HintManager = new(function() {
_lang = mode.lang; _lang = mode.lang;
_getAlphabetLetters(); _getAlphabetLetters();
}, },
'hints:clear': _clearHints 'hints:clear': _clearHints,
'window:resize': _clearHints
}); });
$('#editor_sdk').on('click', function () { $('#editor_sdk').on('click', function () {
_clearHints(); _clearHints();
@ -362,7 +384,7 @@ Common.UI.HintManager = new(function() {
if (e.keyCode == Common.UI.Keys.ALT && _isAlt) { if (e.keyCode == Common.UI.Keys.ALT && _isAlt) {
e.preventDefault(); e.preventDefault();
if (!_hintVisible) { if (!_hintVisible) {
$('input').blur(); // to change value in inputField $('input:focus').blur(); // to change value in inputField
_currentLevel = $('#file-menu-panel').is(':visible') ? 1 : 0; _currentLevel = $('#file-menu-panel').is(':visible') ? 1 : 0;
_setCurrentSection(); _setCurrentSection();
_showHints(); _showHints();
@ -431,17 +453,17 @@ Common.UI.HintManager = new(function() {
_resetToDefault(); _resetToDefault();
return; return;
} }
if (!curr.attr('content-target') || (curr.attr('content-target') && !$(`#${curr.attr('content-target')}`).is(':visible'))) { // need to open panel if (!curr.attr('content-target') || (curr.attr('content-target') && !$('#' + curr.attr('content-target')).is(':visible'))) { // need to open panel
if (!($('#file-menu-panel').is(':visible') && (curr.parent().prop('id') === 'fm-btn-info' && $('#panel-info').is(':visible') || if (!($('#file-menu-panel').is(':visible') && (curr.parent().prop('id') === 'fm-btn-info' && $('#panel-info').is(':visible') ||
curr.parent().prop('id') === 'fm-btn-settings' && $('#panel-settings').is(':visible')))) { curr.parent().prop('id') === 'fm-btn-settings' && $('#panel-settings').is(':visible')))) {
if (curr.attr('for')) { // to trigger event in checkbox if (curr.attr('for')) { // to trigger event in checkbox
$(`#${curr.attr('for')}`).trigger(jQuery.Event('click', {which: 1})); $('#' + curr.attr('for')).trigger(jQuery.Event('click', {which: 1}));
} else { } else {
curr.trigger(jQuery.Event('click', {which: 1})); curr.trigger(jQuery.Event('click', {which: 1}));
} }
} }
} }
if (curr.prop('id') === 'btn-goback' || curr.closest('.btn-slot').prop('id') === 'slot-btn-options' || curr.prop('id') === 'left-btn-thumbs') { if (curr.prop('id') === 'btn-goback' || curr.closest('.btn-slot').prop('id') === 'slot-btn-options' || curr.prop('id') === 'left-btn-thumbs' || curr.hasClass('scroll')) {
_resetToDefault(); _resetToDefault();
return; return;
} }

View file

@ -104,38 +104,37 @@ define([
return this; return this;
}, },
show: function(){ internalShow: function() {
// if (maskeEl || loaderEl) this.ownerEl.append(this.maskeEl);
// return; this.ownerEl.append(this.loaderEl);
this.loaderEl.css('min-width', $('.asc-loadmask-title', this.loaderEl).width() + 105);
if (this.ownerEl && this.ownerEl.closest('.asc-window.modal').length==0)
Common.util.Shortcuts.suspendEvents();
},
show: function(immediately){
// The owner is already masked // The owner is already masked
var ownerEl = this.ownerEl, if (!!this.ownerEl.ismasked)
loaderEl = this.loaderEl,
maskeEl = this.maskeEl;
if (!!ownerEl.ismasked)
return this; return this;
ownerEl.ismasked = true; this.ownerEl.ismasked = true;
var me = this; var me = this;
if (me.title != me.options.title) { if (me.title != me.options.title) {
me.options.title = me.title; me.options.title = me.title;
$('.asc-loadmask-title', loaderEl).html(me.title); $('.asc-loadmask-title', this.loaderEl).html(me.title);
} }
if (immediately) {
me.internalShow();
} else if (!me.timerId) {
// show mask after 500 ms if it wont be hided // show mask after 500 ms if it wont be hided
me.timerId = setTimeout(function () { me.timerId = setTimeout(function () {
ownerEl.append(maskeEl); me.internalShow();
ownerEl.append(loaderEl);
// if (ownerEl.height()<1 || ownerEl.width()<1)
// loaderEl.css({visibility: 'hidden'});
loaderEl.css('min-width', $('.asc-loadmask-title', loaderEl).width() + 105);
if (ownerEl && ownerEl.closest('.asc-window.modal').length==0)
Common.util.Shortcuts.suspendEvents();
},500); },500);
}
return this; return this;
}, },

View file

@ -93,7 +93,7 @@ define([
var _template_tabs = var _template_tabs =
'<section class="tabs">' + '<section class="tabs">' +
'<a class="scroll left"></a>' + '<a class="scroll left" data-hint="0" data-hint-direction="bottom" data-hint-offset="-7, 0" data-hint-title="V"></a>' +
'<ul>' + '<ul>' +
'<% for(var i in items) { %>' + '<% for(var i in items) { %>' +
'<% if (typeof items[i] == "object") { %>' + '<% if (typeof items[i] == "object") { %>' +
@ -105,7 +105,7 @@ define([
'<% } %>' + '<% } %>' +
'<% } %>' + '<% } %>' +
'</ul>' + '</ul>' +
'<a class="scroll right"></a>' + '<a class="scroll right" data-hint="0" data-hint-direction="bottom" data-hint-offset="-7, 0" data-hint-title="R"></a>' +
'</section>'; '</section>';
this.$layout = $(options.template({ this.$layout = $(options.template({

View file

@ -82,13 +82,14 @@ define([
maxValue: 100, maxValue: 100,
step: 1, step: 1,
value: 100, value: 100,
enableKeyEvents: false enableKeyEvents: false,
direction: 'horizontal' // 'vertical'
}, },
disabled: false, disabled: false,
template : _.template([ template : _.template([
'<div class="slider single-slider" style="">', '<div class="slider single-slider <% if (this.options.direction === \'vertical\') { %>vertical<% } %>" style="">',
'<div class="track"></div>', '<div class="track"></div>',
'<div class="thumb" style=""></div>', '<div class="thumb" style=""></div>',
'<% if (this.options.enableKeyEvents) { %>', '<% if (this.options.enableKeyEvents) { %>',
@ -107,6 +108,7 @@ define([
me.maxValue = me.options.maxValue; me.maxValue = me.options.maxValue;
me.delta = 100/(me.maxValue - me.minValue); me.delta = 100/(me.maxValue - me.minValue);
me.step = me.options.step; me.step = me.options.step;
me.direction = me.options.direction;
if (me.options.el) { if (me.options.el) {
me.render(); me.render();
@ -133,7 +135,7 @@ define([
} }
this.cmpEl.find('.track-center').width(me.options.width - 14); this.cmpEl.find('.track-center').width(me.options.width - 14);
this.cmpEl.width(me.options.width); this.cmpEl[me.direction === 'vertical' ? 'height' : 'width'](me.options.width);
this.thumb = this.cmpEl.find('.thumb'); this.thumb = this.cmpEl.find('.thumb');
@ -141,7 +143,9 @@ define([
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
var pos = Math.max(0, Math.min(100, (Math.round((e.pageX*Common.Utils.zoom() - me.cmpEl.offset().left - me._dragstart) / me.width * 100)))); var pos = Math.max(0, Math.min(100, (Math.round((
me.direction === 'vertical' ? (e.pageY*Common.Utils.zoom() - me.cmpEl.offset().top) : (e.pageX*Common.Utils.zoom() - me.cmpEl.offset().left) - me._dragstart
) / me.width * 100))));
me.setThumbPosition(pos); me.setThumbPosition(pos);
me.lastValue = me.value; me.lastValue = me.value;
@ -162,7 +166,9 @@ define([
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
var pos = Math.max(0, Math.min(100, (Math.round((e.pageX*Common.Utils.zoom() - me.cmpEl.offset().left - me._dragstart) / me.width * 100)))); var pos = Math.max(0, Math.min(100, (Math.round((
me.direction === 'vertical' ? (e.pageY*Common.Utils.zoom() - me.cmpEl.offset().top) : (e.pageX*Common.Utils.zoom() - me.cmpEl.offset().left) - me._dragstart
) / me.width * 100))));
me.setThumbPosition(pos); me.setThumbPosition(pos);
me.lastValue = me.value; me.lastValue = me.value;
@ -174,7 +180,7 @@ define([
var onMouseDown = function (e) { var onMouseDown = function (e) {
if ( me.disabled ) return; if ( me.disabled ) return;
me._dragstart = e.pageX*Common.Utils.zoom() - me.thumb.offset().left - 7; me._dragstart = me.direction === 'vertical' ? (e.pageY*Common.Utils.zoom() - me.thumb.offset().top) : (e.pageX*Common.Utils.zoom() - me.thumb.offset().left) - 7;
me.thumb.addClass('active'); me.thumb.addClass('active');
$(document).on('mouseup', onMouseUp); $(document).on('mouseup', onMouseUp);
@ -187,7 +193,9 @@ define([
var onTrackMouseDown = function (e) { var onTrackMouseDown = function (e) {
if ( me.disabled ) return; if ( me.disabled ) return;
var pos = Math.max(0, Math.min(100, (Math.round((e.pageX*Common.Utils.zoom() - me.cmpEl.offset().left) / me.width * 100)))); var pos = Math.max(0, Math.min(100, (Math.round((
me.direction === 'vertical' ? (e.pageY*Common.Utils.zoom() - me.cmpEl.offset().top) : (e.pageX*Common.Utils.zoom() - me.cmpEl.offset().left)
) / me.width * 100))));
me.setThumbPosition(pos); me.setThumbPosition(pos);
me.lastValue = me.value; me.lastValue = me.value;
@ -245,8 +253,12 @@ define([
return this; return this;
}, },
setThumbPosition: function(x) { setThumbPosition: function(pos) {
this.thumb.css({left: x + '%'}); if (this.direction === 'vertical') {
this.thumb.css({top: pos + '%'});
} else {
this.thumb.css({left: pos + '%'});
}
}, },
setValue: function(value) { setValue: function(value) {

View file

@ -423,6 +423,7 @@ define([
this.setTabVisible('backward'); this.setTabVisible('backward');
} }
} }
Common.NotificationCenter.trigger('hints:clear');
}, },
onProcessMouse: function(data) { onProcessMouse: function(data) {

View file

@ -87,7 +87,7 @@ define([
'<% if (me.options.dynamiccolors!==undefined) { %>' + '<% if (me.options.dynamiccolors!==undefined) { %>' +
'<div class="palette-color-spacer" style="width:100%;height:8px;float:left;"></div><div style="padding: 12px;">' + '<div class="palette-color-spacer" style="width:100%;height:8px;float:left;"></div><div style="padding: 12px;">' +
'<% for (var i=0; i<me.options.dynamiccolors; i++) { %>' + '<% for (var i=0; i<me.options.dynamiccolors; i++) { %>' +
'<a class="color-dynamic-<%=i%> dynamic-empty-color" style="background:#ffffff" color="" idx="<%=idx++%>">' + '<a class="color-dynamic-<%=i%> dynamic-empty-color" color="" idx="<%=idx++%>">' +
'<em><span unselectable="on">&#160;</span></em></a>' + '<em><span unselectable="on">&#160;</span></em></a>' +
'<% } %>' + '<% } %>' +
'<% } %>' + '<% } %>' +

View file

@ -100,9 +100,10 @@ define([
this.panelHistory.$el.find('#history-list').css('padding-bottom', hasChanges ? '45px' : 0); this.panelHistory.$el.find('#history-list').css('padding-bottom', hasChanges ? '45px' : 0);
}, },
onDownloadUrl: function(url) { onDownloadUrl: function(url, fileType) {
if (this.isFromSelectRevision !== undefined) if (this.isFromSelectRevision !== undefined) {
Common.Gateway.requestRestore(this.isFromSelectRevision, url); Common.Gateway.requestRestore(this.isFromSelectRevision, url, fileType);
}
this.isFromSelectRevision = undefined; this.isFromSelectRevision = undefined;
}, },
@ -111,10 +112,11 @@ define([
var btn = $(e.target); var btn = $(e.target);
if (btn && btn.hasClass('revision-restore')) { if (btn && btn.hasClass('revision-restore')) {
if (record.get('isRevision')) if (record.get('isRevision'))
Common.Gateway.requestRestore(record.get('revision')); Common.Gateway.requestRestore(record.get('revision'), undefined, record.get('fileType'));
else { else {
this.isFromSelectRevision = record.get('revision'); this.isFromSelectRevision = record.get('revision');
this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.DOCX, true)); var fileType = Asc.c_oAscFileType[(record.get('fileType') || '').toUpperCase()] || Asc.c_oAscFileType.DOCX;
this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(fileType, true));
} }
return; return;
} }
@ -135,9 +137,15 @@ define([
this.currentServerVersion = record.get('serverVersion'); this.currentServerVersion = record.get('serverVersion');
if ( _.isEmpty(url) || (urlGetTime - record.get('urlGetTime') > 5 * 60000)) { if ( _.isEmpty(url) || (urlGetTime - record.get('urlGetTime') > 5 * 60000)) {
var me = this;
if (!me.timerId) {
me.timerId = setTimeout(function () {
me.timerId = 0;
},30000);
_.delay(function() { _.delay(function() {
Common.Gateway.requestHistoryData(rev); // получаем url-ы для ревизий Common.Gateway.requestHistoryData(rev); // получаем url-ы для ревизий
}, 10); }, 10);
}
} else { } else {
var commentsController = this.getApplication().getController('Common.Controllers.Comments'); var commentsController = this.getApplication().getController('Common.Controllers.Comments');
if (commentsController) { if (commentsController) {
@ -167,6 +175,11 @@ define([
onSetHistoryData: function(opts) { onSetHistoryData: function(opts) {
if (!this.mode.canUseHistory) return; if (!this.mode.canUseHistory) return;
if (this.timerId) {
clearTimeout(this.timerId);
this.timerId = 0;
}
if (opts.data.error) { if (opts.data.error) {
var config = { var config = {
title: this.notcriticalErrorTitle, title: this.notcriticalErrorTitle,
@ -204,6 +217,7 @@ define([
rev.set('docIdPrev', docIdPrev, {silent: true}); rev.set('docIdPrev', docIdPrev, {silent: true});
} }
rev.set('token', token, {silent: true}); rev.set('token', token, {silent: true});
opts.data.fileType && rev.set('fileType', opts.data.fileType, {silent: true});
} }
} }
var hist = new Asc.asc_CVersionHistory(); var hist = new Asc.asc_CVersionHistory();
@ -216,6 +230,7 @@ define([
hist.asc_setIsRequested(true); hist.asc_setIsRequested(true);
hist.asc_setServerVersion(this.currentServerVersion); hist.asc_setServerVersion(this.currentServerVersion);
this.api.asc_showRevision(hist); this.api.asc_showRevision(hist);
this.currentRev = data.version;
var reviewController = this.getApplication().getController('Common.Controllers.ReviewChanges'); var reviewController = this.getApplication().getController('Common.Controllers.ReviewChanges');
if (reviewController) if (reviewController)

View file

@ -153,7 +153,6 @@ define([
var me = this, var me = this,
win = new Common.Views.PasswordDialog({ win = new Common.Views.PasswordDialog({
api: me.api, api: me.api,
signType: 'invisible',
handler: function(result, props) { handler: function(result, props) {
if (result == 'ok') { if (result == 'ok') {
me.api.asc_setCurrentPassword(props); me.api.asc_setCurrentPassword(props);

View file

@ -131,6 +131,8 @@ define([
this.api.asc_registerCallback('asc_onUpdateRevisionsChangesPosition', _.bind(this.onApiUpdateChangePosition, this)); this.api.asc_registerCallback('asc_onUpdateRevisionsChangesPosition', _.bind(this.onApiUpdateChangePosition, this));
this.api.asc_registerCallback('asc_onAuthParticipantsChanged', _.bind(this.onAuthParticipantsChanged, this)); this.api.asc_registerCallback('asc_onAuthParticipantsChanged', _.bind(this.onAuthParticipantsChanged, this));
this.api.asc_registerCallback('asc_onParticipantsChanged', _.bind(this.onAuthParticipantsChanged, this)); this.api.asc_registerCallback('asc_onParticipantsChanged', _.bind(this.onAuthParticipantsChanged, this));
this.api.asc_registerCallback('asc_onBeginViewModeInReview', _.bind(this.onBeginViewModeInReview, this));
this.api.asc_registerCallback('asc_onEndViewModeInReview', _.bind(this.onEndViewModeInReview, this));
} }
if (this.appConfig.canReview) if (this.appConfig.canReview)
this.api.asc_registerCallback('asc_onOnTrackRevisionsChange', _.bind(this.onApiTrackRevisionsChange, this)); this.api.asc_registerCallback('asc_onOnTrackRevisionsChange', _.bind(this.onApiTrackRevisionsChange, this));
@ -694,6 +696,18 @@ define([
this._state.previewMode = (mode == 'final' || mode == 'original'); this._state.previewMode = (mode == 'final' || mode == 'original');
}, },
onBeginViewModeInReview: function(mode) {
this.disableEditing(true);
this.view && this.view.turnDisplayMode(mode ? 'final' : 'original');
this._state.previewMode = true;
},
onEndViewModeInReview: function() {
this.disableEditing(false);
this.view && this.view.turnDisplayMode('markup');
this._state.previewMode = false;
},
isPreviewChangesMode: function() { isPreviewChangesMode: function() {
return this._state.previewMode; return this._state.previewMode;
}, },
@ -784,7 +798,9 @@ define([
// Common.Utils.InternalSettings.set(me.view.appPrefix + "track-changes", (state ? 0 : 1) + (global ? 2 : 0)); // Common.Utils.InternalSettings.set(me.view.appPrefix + "track-changes", (state ? 0 : 1) + (global ? 2 : 0));
// }; // };
var trackChanges = typeof (me.appConfig.customization) == 'object' ? me.appConfig.customization.trackChanges : undefined; var trackChanges = me.appConfig.customization && me.appConfig.customization.review ? me.appConfig.customization.review.trackChanges : undefined;
(trackChanges===undefined) && (trackChanges = me.appConfig.customization ? me.appConfig.customization.trackChanges : undefined);
if (config.isReviewOnly || trackChanges!==undefined) if (config.isReviewOnly || trackChanges!==undefined)
me.api.asc_SetLocalTrackRevisions(config.isReviewOnly || trackChanges===true); me.api.asc_SetLocalTrackRevisions(config.isReviewOnly || trackChanges===true);
else else
@ -793,7 +809,8 @@ define([
// _setReviewStatus(state, global); // _setReviewStatus(state, global);
if ( typeof (me.appConfig.customization) == 'object' && (me.appConfig.customization.showReviewChanges==true) ) { if ( typeof (me.appConfig.customization) == 'object' && (me.appConfig.customization.review && me.appConfig.customization.review.showReviewChanges==true ||
(!me.appConfig.customization.review || me.appConfig.customization.review.showReviewChanges===undefined) && me.appConfig.customization.showReviewChanges==true) ) {
me.dlgChanges = (new Common.Views.ReviewChangesDialog({ me.dlgChanges = (new Common.Views.ReviewChangesDialog({
popoverChanges : me.popoverChanges, popoverChanges : me.popoverChanges,
mode : me.appConfig mode : me.appConfig
@ -807,8 +824,11 @@ define([
config.canViewReview = (config.isEdit || 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) { if (config.canViewReview) {
var val = Common.localStorage.getItem(me.view.appPrefix + "review-mode"); var val = Common.localStorage.getItem(me.view.appPrefix + "review-mode");
if (val===null) if (val===null) {
val = me.appConfig.customization && /^(original|final|markup)$/i.test(me.appConfig.customization.reviewDisplay) ? me.appConfig.customization.reviewDisplay.toLocaleLowerCase() : 'original'; val = me.appConfig.customization && me.appConfig.customization.review ? me.appConfig.customization.review.reviewDisplay : undefined;
!val && (val = me.appConfig.customization ? me.appConfig.customization.reviewDisplay : undefined);
val = /^(original|final|markup)$/i.test(val) ? val.toLocaleLowerCase() : 'original';
}
me.turnDisplayMode((config.isEdit || config.isRestrictedEdit) ? 'markup' : val); // load display mode only in viewer me.turnDisplayMode((config.isEdit || config.isRestrictedEdit) ? 'markup' : val); // load display mode only in viewer
me.view.turnDisplayMode((config.isEdit || config.isRestrictedEdit) ? 'markup' : val); me.view.turnDisplayMode((config.isEdit || config.isRestrictedEdit) ? 'markup' : val);
} }

View file

@ -261,6 +261,10 @@ define([
obj.name = theme_name; obj.name = theme_name;
api.asc_setSkin(obj); api.asc_setSkin(obj);
if ( !!this.api.asc_setContentDarkMode && this.isDarkTheme() ) {
this.api.asc_setContentDarkMode(this.isContentThemeDark());
}
Common.NotificationCenter.on('document:ready', on_document_ready.bind(this)); Common.NotificationCenter.on('document:ready', on_document_ready.bind(this));
}, },
@ -282,7 +286,8 @@ define([
currentThemeId: function () { currentThemeId: function () {
var t = Common.localStorage.getItem('ui-theme') || Common.localStorage.getItem('ui-theme-id'); var t = Common.localStorage.getItem('ui-theme') || Common.localStorage.getItem('ui-theme-id');
return get_ui_theme_name(t) || id_default_light_theme; var id = get_ui_theme_name(t);
return !!themes_map[id] ? id : id_default_light_theme;
}, },
defaultThemeId: function (type) { defaultThemeId: function (type) {
@ -297,12 +302,34 @@ define([
return themes_map[this.currentThemeId()].type == 'dark'; return themes_map[this.currentThemeId()].type == 'dark';
}, },
isContentThemeDark: function () {
return Common.localStorage.getItem("content-theme") == 'dark';
},
toggleContentTheme: function () {
var is_current_dark = this.isContentThemeDark();
is_current_dark ? Common.localStorage.setItem('content-theme', 'light') : Common.localStorage.setItem('content-theme', 'dark');
if ( this.api.asc_setContentDarkMode )
this.api.asc_setContentDarkMode(!is_current_dark);
Common.NotificationCenter.trigger('contenttheme:dark', !is_current_dark);
},
setTheme: function (obj, force) { setTheme: function (obj, force) {
var id = get_ui_theme_name(obj); var id = get_ui_theme_name(obj);
if ( (this.currentThemeId() != id || force) && !!themes_map[id] ) { if ( (this.currentThemeId() != id || force) && !!themes_map[id] ) {
document.body.className = document.body.className.replace(/theme-[\w-]+\s?/gi, '').trim(); document.body.className = document.body.className.replace(/theme-[\w-]+\s?/gi, '').trim();
document.body.classList.add(id, 'theme-type-' + themes_map[id].type); document.body.classList.add(id, 'theme-type-' + themes_map[id].type);
if ( this.api.asc_setContentDarkMode )
if ( themes_map[id].type == 'light' ) {
this.api.asc_setContentDarkMode(false);
} else {
this.api.asc_setContentDarkMode(this.isContentThemeDark());
Common.NotificationCenter.trigger('contenttheme:dark', this.isContentThemeDark());
}
if ( this.api ) { if ( this.api ) {
var obj = get_current_theme_colors(name_colors); var obj = get_current_theme_colors(name_colors);
obj.type = themes_map[id].type; obj.type = themes_map[id].type;

View file

@ -74,7 +74,8 @@ define([
isVisible: true, isVisible: true,
allowSelected: true, allowSelected: true,
selected: false, selected: false,
serverVersion: 0 serverVersion: 0,
fileType: 'docx'
} }
} }
}); });

View file

@ -316,6 +316,7 @@
var shouldPrevent = false; var shouldPrevent = false;
$this.bind('mousewheel' + eventClassName, function (e, deprecatedDelta, deprecatedDeltaX, deprecatedDeltaY) { $this.bind('mousewheel' + eventClassName, function (e, deprecatedDelta, deprecatedDeltaX, deprecatedDeltaY) {
Common.NotificationCenter.trigger('hints:clear');
var deltaX = e.deltaX * e.deltaFactor || deprecatedDeltaX, var deltaX = e.deltaX * e.deltaFactor || deprecatedDeltaX,
deltaY = e.deltaY * e.deltaFactor || deprecatedDeltaY; deltaY = e.deltaY * e.deltaFactor || deprecatedDeltaY;

View file

@ -1072,3 +1072,12 @@ Common.Utils.UserInfoParser = new(function() {
} }
} }
})(); })();
Common.Utils.getKeyByValue = function(obj, value) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop)) {
if(obj[prop] === value)
return prop;
}
}
};

View file

@ -102,7 +102,7 @@ define([
var view = this, var view = this,
textBox = $(this.el).find('textarea'), textBox = $(this.el).find('textarea'),
domTextBox = null, domTextBox = null,
minHeight = 50, minHeight = 55,
lineHeight = 0, lineHeight = 0,
scrollPos = 0, scrollPos = 0,
oldHeight = 0, oldHeight = 0,

View file

@ -97,6 +97,7 @@ define([
'</section>'+ '</section>'+
'</div>' + '</div>' +
'<div class="hedset">' + '<div class="hedset">' +
'<div class="btn-slot" id="slot-btn-mode"></div>' +
'<div class="btn-slot" id="slot-btn-back"></div>' + '<div class="btn-slot" id="slot-btn-back"></div>' +
'<div class="btn-slot" id="slot-btn-favorite"></div>' + '<div class="btn-slot" id="slot-btn-favorite"></div>' +
'<div class="btn-slot" id="slot-btn-options"></div>' + '<div class="btn-slot" id="slot-btn-options"></div>' +
@ -350,6 +351,10 @@ define([
if ( me.btnOptions ) if ( me.btnOptions )
me.btnOptions.updateHint(me.tipViewSettings); me.btnOptions.updateHint(me.tipViewSettings);
if ( me.btnContentMode ) {
me.btnContentMode.on('click', function (e) { Common.UI.Themes.toggleContentTheme(); });
}
} }
function onDocNameKeyDown(e) { function onDocNameKeyDown(e) {
@ -386,6 +391,12 @@ define([
} }
} }
function onContentThemeChangedToDark(isdark) {
if ( this.btnContentMode ) {
this.btnContentMode.changeIcon(!isdark ? {curr: 'btn-mode-light', next: 'btn-mode-dark'} : {curr: 'btn-mode-dark', next: 'btn-mode-light'});
}
}
return { return {
options: { options: {
branding: {}, branding: {},
@ -453,6 +464,7 @@ define([
'app:face': function(mode) {Common.Utils.asyncCall(onAppShowed, me, mode);} 'app:face': function(mode) {Common.Utils.asyncCall(onAppShowed, me, mode);}
}); });
Common.NotificationCenter.on('collaboration:sharingdeny', onLostEditRights); Common.NotificationCenter.on('collaboration:sharingdeny', onLostEditRights);
Common.NotificationCenter.on('contenttheme:dark', onContentThemeChangedToDark.bind(this));
}, },
render: function (el, role) { render: function (el, role) {
@ -548,6 +560,12 @@ define([
$panelUsers.hide(); $panelUsers.hide();
if ( !!window.DE ) {
var mode_cls = Common.UI.Themes.isContentThemeDark() ? 'btn-mode-light' : 'btn-mode-dark';
me.btnContentMode = createTitleButton('toolbar__icon icon--inverse ' + mode_cls, $html.findById('#slot-btn-mode'));
me.btnContentMode.setVisible(Common.UI.Themes.isDarkTheme());
}
return $html; return $html;
} else } else
if ( role == 'title' ) { if ( role == 'title' ) {

View file

@ -91,6 +91,8 @@ define([
}, options); }, options);
this.txtOpenFile = options.txtOpenFile || this.txtOpenFile;
this.template = options.template || [ this.template = options.template || [
'<div class="box" style="height:' + (_options.height - 85) + 'px;">', '<div class="box" style="height:' + (_options.height - 85) + 'px;">',
'<div class="content-panel" >', '<div class="content-panel" >',

View file

@ -64,13 +64,15 @@ define([
}, options); }, options);
this.handler = options.handler;
this.template = options.template || [ this.template = options.template || [
'<div class="box">', '<div class="box">',
'<div class="input-row" style="margin-bottom: 10px;">', '<div class="input-row" style="margin-bottom: 10px;">',
'<label>' + t.txtDescription + '</label>', '<label>' + t.txtDescription + '</label>',
'</div>', '</div>',
'<div class="input-row">', '<div class="input-row">',
'<label>' + t.txtPassword + '</label>', '<label>' + t.txtPassword + (t.passwordOptional ? ' (' + t.txtOptional + ')': '') + '</label>',
'</div>', '</div>',
'<div id="id-password-txt" class="input-row" style="margin-bottom: 5px;"></div>', '<div id="id-password-txt" class="input-row" style="margin-bottom: 5px;"></div>',
'<div class="input-row">', '<div class="input-row">',
@ -81,9 +83,6 @@ define([
'</div>' '</div>'
].join(''); ].join('');
this.handler = options.handler;
this.settings = options.settings;
_options.tpl = _.template(this.template)(_options); _options.tpl = _.template(this.template)(_options);
Common.UI.Window.prototype.initialize.call(this, _options); Common.UI.Window.prototype.initialize.call(this, _options);

View file

@ -121,7 +121,10 @@ define([
this.btnAddPwd = new Common.UI.Button({ this.btnAddPwd = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top', cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon btn-ic-protect', iconCls: 'toolbar__icon btn-ic-protect',
caption: this.txtEncrypt caption: this.txtEncrypt,
dataHint : '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
}); });
this.btnsAddPwd.push(this.btnAddPwd); this.btnsAddPwd.push(this.btnAddPwd);
@ -130,7 +133,10 @@ define([
iconCls: 'toolbar__icon btn-ic-protect', iconCls: 'toolbar__icon btn-ic-protect',
caption: this.txtEncrypt, caption: this.txtEncrypt,
menu: true, menu: true,
visible: false visible: false,
dataHint : '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
}); });
} }
if (this.appConfig.isSignatureSupport) { if (this.appConfig.isSignatureSupport) {
@ -138,7 +144,10 @@ define([
cls: 'btn-toolbar x-huge icon-top', cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon btn-ic-signature', iconCls: 'toolbar__icon btn-ic-signature',
caption: this.txtSignature, caption: this.txtSignature,
menu: (this.appPrefix !== 'pe-') menu: (this.appPrefix !== 'pe-'),
dataHint : '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
}); });
if (!this.btnSignature.menu) if (!this.btnSignature.menu)
this.btnsInvisibleSignature.push(this.btnSignature); this.btnsInvisibleSignature.push(this.btnSignature);

View file

@ -295,7 +295,7 @@ define([
dataHintOffset: 'small' dataHintOffset: 'small'
}); });
if (!this.appConfig.isRestrictedEdit) {// hide Display mode option for fillForms and commenting mode if (!this.appConfig.isRestrictedEdit && !(this.appConfig.customization && this.appConfig.customization.review && this.appConfig.customization.review.hideReviewDisplay)) {// hide Display mode option for fillForms and commenting mode
var menuTemplate = _.template('<a id="<%= id %>" tabindex="-1" type="menuitem"><div><%= caption %></div>' + var menuTemplate = _.template('<a id="<%= id %>" tabindex="-1" type="menuitem"><div><%= caption %></div>' +
'<% if (options.description !== null) { %><label style="display: block;color: #a5a5a5;cursor: pointer;white-space: normal;"><%= options.description %></label>' + '<% if (options.description !== null) { %><label style="display: block;color: #a5a5a5;cursor: pointer;white-space: normal;"><%= options.description %></label>' +
'<% } %></a>'); '<% } %></a>');

View file

@ -176,7 +176,7 @@ define([
var view = this, var view = this,
textBox = this.$el.find('textarea'), textBox = this.$el.find('textarea'),
domTextBox = null, domTextBox = null,
minHeight = 50, minHeight = 55,
lineHeight = 0, lineHeight = 0,
scrollPos = 0, scrollPos = 0,
oldHeight = 0, oldHeight = 0,

View file

@ -99,7 +99,7 @@
'<div class="separator horizontal"></div>', '<div class="separator horizontal"></div>',
'<div class="footer right">', '<div class="footer right">',
'<button class="btn normal dlg-btn" result="replace">'+this.txtBtnReplace+'</button>', '<button class="btn normal dlg-btn" result="replace">'+this.txtBtnReplace+'</button>',
'<button class="btn normal dlg-btn" result="replaceall" style="margin-left: 6px;width: auto;">'+this.txtBtnReplaceAll+'</button>', '<button class="btn normal dlg-btn" result="replaceall" style="margin-left: 6px;width: auto;min-width: 100px;">'+this.txtBtnReplaceAll+'</button>',
'<button class="btn normal dlg-btn iconic" result="back"><span class="icon img-commonctrl back"></span></button>', '<button class="btn normal dlg-btn iconic" result="back"><span class="icon img-commonctrl back"></span></button>',
'<button class="btn normal dlg-btn iconic" result="next" style="margin-left: 6px;"><span class="icon img-commonctrl next"></span></button>', '<button class="btn normal dlg-btn iconic" result="next" style="margin-left: 6px;"><span class="icon img-commonctrl next"></span></button>',
'</div>' '</div>'

View file

@ -0,0 +1,10 @@
<svg width="100" height="127" viewBox="0 0 100 127" fill="none" xmlns="http://www.w3.org/2000/svg">
<symbol id="svg-format-docm">
<path d="M95 23V119C95 119.796 94.6839 120.559 94.1213 121.121C93.5587 121.684 92.7956 122 92 122H8C7.20435 122 6.44129 121.684 5.87868 121.121C5.31607 120.559 5 119.796 5 119V8C5 7.20435 5.31607 6.44129 5.87868 5.87868C6.44129 5.31607 7.20435 5 8 5H77L95 23Z" fill="#214479"/>
<path opacity="0.2" d="M95 23H80C79.2044 23 78.4413 22.6839 77.8787 22.1213C77.3161 21.5587 77 20.7956 77 20V5L95 23Z" fill="black"/>
<path d="M39.4824 109.635C39.4824 111.045 39.0801 112.125 38.2754 112.875C37.4746 113.625 36.3164 114 34.8008 114H32.375V105.434H35.0645C36.4629 105.434 37.5488 105.803 38.3223 106.541C39.0957 107.279 39.4824 108.311 39.4824 109.635ZM37.5957 109.682C37.5957 107.842 36.7832 106.922 35.1582 106.922H34.1914V112.5H34.9707C36.7207 112.5 37.5957 111.561 37.5957 109.682ZM49.0332 109.705C49.0332 111.123 48.6816 112.213 47.9785 112.975C47.2754 113.736 46.2676 114.117 44.9551 114.117C43.6426 114.117 42.6348 113.736 41.9316 112.975C41.2285 112.213 40.877 111.119 40.877 109.693C40.877 108.268 41.2285 107.18 41.9316 106.43C42.6387 105.676 43.6504 105.299 44.9668 105.299C46.2832 105.299 47.2891 105.678 47.9844 106.436C48.6836 107.193 49.0332 108.283 49.0332 109.705ZM42.7812 109.705C42.7812 110.662 42.9629 111.383 43.3262 111.867C43.6895 112.352 44.2324 112.594 44.9551 112.594C46.4043 112.594 47.1289 111.631 47.1289 109.705C47.1289 107.775 46.4082 106.811 44.9668 106.811C44.2441 106.811 43.6992 107.055 43.332 107.543C42.9648 108.027 42.7812 108.748 42.7812 109.705ZM54.4473 106.822C53.7637 106.822 53.2344 107.08 52.8594 107.596C52.4844 108.107 52.2969 108.822 52.2969 109.74C52.2969 111.65 53.0137 112.605 54.4473 112.605C55.0488 112.605 55.7773 112.455 56.6328 112.154V113.678C55.9297 113.971 55.1445 114.117 54.2773 114.117C53.0312 114.117 52.0781 113.74 51.418 112.986C50.7578 112.229 50.4277 111.143 50.4277 109.729C50.4277 108.838 50.5898 108.059 50.9141 107.391C51.2383 106.719 51.7031 106.205 52.3086 105.85C52.918 105.49 53.6309 105.311 54.4473 105.311C55.2793 105.311 56.1152 105.512 56.9551 105.914L56.3691 107.391C56.0488 107.238 55.7266 107.105 55.4023 106.992C55.0781 106.879 54.7598 106.822 54.4473 106.822ZM62.0879 114L60.0254 107.279H59.9727C60.0469 108.646 60.084 109.559 60.084 110.016V114H58.4609V105.434H60.9336L62.9609 111.984H62.9961L65.1465 105.434H67.6191V114H65.9258V109.945C65.9258 109.754 65.9277 109.533 65.9316 109.283C65.9395 109.033 65.9668 108.369 66.0137 107.291H65.9609L63.752 114H62.0879Z" fill="white"/>
<path d="M67.8 48L61.5 75L54.5 48H51.5H48.5L41.5 75L35.2 48H29.4L37.9 82H44.3L51.5 54.1L58.7 82H65.1L73.6 48H67.8Z" fill="white"/>
<path d="M15 17C15 15.8954 15.8954 15 17 15H29C30.1046 15 31 15.8954 31 17V26C31 27.1046 30.1046 28 29 28H17C15.8954 28 15 27.1046 15 26V17Z" fill="white"/>
<path d="M22.2969 26L19.8125 18.8457H19.7656C19.832 19.9082 19.8652 20.9043 19.8652 21.834V26H18.5938V17.4336H20.5684L22.9473 24.248H22.9824L25.4316 17.4336H27.4121V26H26.0645V21.7637C26.0645 21.3379 26.0742 20.7832 26.0938 20.0996C26.1172 19.416 26.1367 19.002 26.1523 18.8574H26.1055L23.5332 26H22.2969Z" fill="#214479"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,14 @@
<svg width="100" height="127" viewBox="0 0 100 127" fill="none" xmlns="http://www.w3.org/2000/svg">
<symbol id="svg-format-pptm">
<path d="M95 23V119C95 119.796 94.6839 120.559 94.1213 121.121C93.5587 121.684 92.7956 122 92 122H8C7.20435 122 6.44129 121.684 5.87868 121.121C5.31607 120.559 5 119.796 5 119V8C5 7.20435 5.31607 6.44129 5.87868 5.87868C6.44129 5.31607 7.20435 5 8 5H77L95 23Z" fill="#DD682B"/>
<path opacity="0.2" d="M95 23H80C79.2044 23 78.4413 22.6839 77.8787 22.1213C77.3161 21.5587 77 20.7956 77 20V5L95 23Z" fill="black"/>
<path d="M37.2146 109.465H37.8123C38.3708 109.465 38.7888 109.355 39.0662 109.137C39.3435 108.914 39.4822 108.592 39.4822 108.17C39.4822 107.744 39.365 107.43 39.1306 107.227C38.9001 107.023 38.5369 106.922 38.0408 106.922H37.2146V109.465ZM41.3162 108.105C41.3162 109.027 41.0271 109.732 40.449 110.221C39.8748 110.709 39.0564 110.953 37.9939 110.953H37.2146V114H35.3982V105.434H38.1345C39.1736 105.434 39.9626 105.658 40.5017 106.107C41.0447 106.553 41.3162 107.219 41.3162 108.105ZM44.7498 109.465H45.3474C45.906 109.465 46.324 109.355 46.6013 109.137C46.8787 108.914 47.0173 108.592 47.0173 108.17C47.0173 107.744 46.9001 107.43 46.6658 107.227C46.4353 107.023 46.072 106.922 45.5759 106.922H44.7498V109.465ZM48.8513 108.105C48.8513 109.027 48.5623 109.732 47.9841 110.221C47.4099 110.709 46.5916 110.953 45.5291 110.953H44.7498V114H42.9333V105.434H45.6697C46.7087 105.434 47.4978 105.658 48.0369 106.107C48.5798 106.553 48.8513 107.219 48.8513 108.105ZM53.7732 114H51.9568V106.945H49.6306V105.434H56.0994V106.945H53.7732V114ZM61.0447 114L58.9822 107.279H58.9294C59.0037 108.646 59.0408 109.559 59.0408 110.016V114H57.4177V105.434H59.8904L61.9177 111.984H61.9529L64.1033 105.434H66.5759V114H64.8826V109.945C64.8826 109.754 64.8845 109.533 64.8884 109.283C64.8962 109.033 64.9236 108.369 64.9705 107.291H64.9177L62.7087 114H61.0447Z" fill="white"/>
<path d="M50 69C54.2435 69 58.3131 67.3143 61.3137 64.3137C64.3143 61.3131 66 57.2435 66 53H50V37C45.7565 37 41.6869 38.6857 38.6863 41.6863C35.6857 44.6869 34 48.7565 34 53C34 57.2435 35.6857 61.3131 38.6863 64.3137C41.6869 67.3143 45.7565 69 50 69Z" fill="white"/>
<path d="M53 34V50H69C69 45.7565 67.3143 41.6869 64.3137 38.6863C61.3131 35.6857 57.2435 34 53 34Z" fill="white"/>
<path d="M75 89H25V91H75V89Z" fill="white"/>
<path d="M75 83H25V85H75V83Z" fill="white"/>
<path d="M75 77H25V79H75V77Z" fill="white"/>
<path d="M15 17C15 15.8954 15.8954 15 17 15H29C30.1046 15 31 15.8954 31 17V26C31 27.1046 30.1046 28 29 28H17C15.8954 28 15 27.1046 15 26V17Z" fill="white"/>
<path d="M22.2969 26L19.8125 18.8457H19.7656C19.832 19.9082 19.8652 20.9043 19.8652 21.834V26H18.5938V17.4336H20.5684L22.9473 24.248H22.9824L25.4316 17.4336H27.4121V26H26.0645V21.7637C26.0645 21.3379 26.0742 20.7832 26.0938 20.0996C26.1172 19.416 26.1367 19.002 26.1523 18.8574H26.1055L23.5332 26H22.2969Z" fill="#DD682B"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -0,0 +1,10 @@
<svg width="100" height="127" viewBox="0 0 100 127" fill="none" xmlns="http://www.w3.org/2000/svg">
<symbol id="svg-format-xlsm">
<path d="M95 23V119C95 119.796 94.6839 120.559 94.1213 121.121C93.5587 121.684 92.7956 122 92 122H8C7.20435 122 6.44129 121.684 5.87868 121.121C5.31607 120.559 5 119.796 5 119V8C5 7.20435 5.31607 6.44129 5.87868 5.87868C6.44129 5.31607 7.20435 5 8 5H77L95 23Z" fill="#1F7244"/>
<path opacity="0.2" d="M95 23H80C79.2044 23 78.4413 22.6839 77.8787 22.1213C77.3161 21.5587 77 20.7956 77 20V5L95 23Z" fill="black"/>
<path d="M42.4446 114H40.3704L38.3782 110.76L36.386 114H34.4407L37.2825 109.582L34.6223 105.434H36.6262L38.4719 108.516L40.2825 105.434H42.2395L39.55 109.682L42.4446 114ZM43.5227 114V105.434H45.3391V112.5H48.8137V114H43.5227ZM55.3645 111.621C55.3645 112.395 55.0852 113.004 54.5266 113.449C53.9719 113.895 53.1985 114.117 52.2063 114.117C51.2922 114.117 50.4836 113.945 49.7805 113.602V111.914C50.3586 112.172 50.8469 112.354 51.2454 112.459C51.6477 112.564 52.0149 112.617 52.3469 112.617C52.7454 112.617 53.05 112.541 53.261 112.389C53.4758 112.236 53.5833 112.01 53.5833 111.709C53.5833 111.541 53.5364 111.393 53.4426 111.264C53.3489 111.131 53.2102 111.004 53.0266 110.883C52.8469 110.762 52.4778 110.568 51.9192 110.303C51.3958 110.057 51.0032 109.82 50.7415 109.594C50.4797 109.367 50.2708 109.104 50.1145 108.803C49.9583 108.502 49.8801 108.15 49.8801 107.748C49.8801 106.99 50.136 106.395 50.6477 105.961C51.1633 105.527 51.8743 105.311 52.7805 105.311C53.2258 105.311 53.6497 105.363 54.052 105.469C54.4583 105.574 54.8821 105.723 55.3235 105.914L54.7375 107.326C54.2805 107.139 53.9016 107.008 53.6008 106.934C53.304 106.859 53.011 106.822 52.7219 106.822C52.3782 106.822 52.1145 106.902 51.9309 107.062C51.7473 107.223 51.6555 107.432 51.6555 107.689C51.6555 107.85 51.6926 107.99 51.7668 108.111C51.8411 108.229 51.9583 108.344 52.1184 108.457C52.2825 108.566 52.6672 108.766 53.2727 109.055C54.0735 109.438 54.6223 109.822 54.9192 110.209C55.2161 110.592 55.3645 111.062 55.3645 111.621ZM60.5442 114L58.4817 107.279H58.429C58.5032 108.646 58.5403 109.559 58.5403 110.016V114H56.9172V105.434H59.3899L61.4172 111.984H61.4524L63.6028 105.434H66.0754V114H64.3821V109.945C64.3821 109.754 64.384 109.533 64.3879 109.283C64.3958 109.033 64.4231 108.369 64.47 107.291H64.4172L62.2083 114H60.5442Z" fill="white"/>
<path d="M52.75 61.63L64 45H58.5L50 57.56L41.5 45H36L47.25 61.63L35.5 79H41L50 65.7L59 79H64.5L52.75 61.63Z" fill="white"/>
<path d="M15 15C15 13.8954 15.8954 13 17 13H29C30.1046 13 31 13.8954 31 15V24C31 25.1046 30.1046 26 29 26H17C15.8954 26 15 25.1046 15 24V15Z" fill="white"/>
<path d="M22.2969 24L19.8125 16.8457H19.7656C19.832 17.9082 19.8652 18.9043 19.8652 19.834V24H18.5938V15.4336H20.5684L22.9473 22.248H22.9824L25.4316 15.4336H27.4121V24H26.0645V19.7637C26.0645 19.3379 26.0742 18.7832 26.0938 18.0996C26.1172 17.416 26.1367 17.002 26.1523 16.8574H26.1055L23.5332 24H22.2969Z" fill="#1F7244"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -677,6 +677,7 @@
&:active:not(.disabled), &:active:not(.disabled),
&.active:not(.disabled) { &.active:not(.disabled) {
.caret { .caret {
border-color: @icon-normal;
} }
} }
@ -990,6 +991,7 @@
&.active:not(.disabled) { &.active:not(.disabled) {
.caret { .caret {
background-position: @arrow-small-offset-x @arrow-small-offset-y; background-position: @arrow-small-offset-x @arrow-small-offset-y;
border-color: @icon-normal;
} }
} }

View file

@ -45,9 +45,10 @@
--text-inverse: #fff; --text-inverse: #fff;
--text-toolbar-header: #fff; --text-toolbar-header: #fff;
--text-contrast-background: #fff; --text-contrast-background: #fff;
--text-alt-key-hint: #444;
--icon-normal: #444; --icon-normal: #444;
--icon-normal-pressed: #444; --icon-normal-pressed: #fff;
--icon-inverse: #444; --icon-inverse: #444;
--icon-toolbar-header: fade(#fff, 80%); --icon-toolbar-header: fade(#fff, 80%);
--icon-notification-badge: #000; --icon-notification-badge: #000;

View file

@ -46,6 +46,7 @@
--text-inverse: #333; --text-inverse: #333;
--text-toolbar-header: fade(#fff, 80%); --text-toolbar-header: fade(#fff, 80%);
--text-contrast-background: #fff; --text-contrast-background: #fff;
--text-alt-key-hint: #2a2a2a;
--icon-normal: fade(#fff, 80%); --icon-normal: fade(#fff, 80%);
--icon-normal-pressed: fade(#fff, 80%); --icon-normal-pressed: fade(#fff, 80%);

View file

@ -188,6 +188,7 @@
@text-inverse: var(--text-inverse); @text-inverse: var(--text-inverse);
@text-toolbar-header: var(--text-toolbar-header); @text-toolbar-header: var(--text-toolbar-header);
@text-contrast-background: var(--text-contrast-background); @text-contrast-background: var(--text-contrast-background);
@text-alt-key-hint: var(--text-alt-key-hint);
// Icon // Icon
// ------------------------- // -------------------------

View file

@ -48,6 +48,12 @@
} }
} }
} }
&.active, &:active {
.caret {
border-color: @icon-normal;
}
}
} }
} }

View file

@ -23,15 +23,6 @@
font-weight: bold; font-weight: bold;
margin-top: 2px; margin-top: 2px;
} }
#comments-btn-sort {
.btn-toolbar {
min-width: 20px;
}
.inner-box-caret {
display: none;
}
}
} }
.messages-ct { .messages-ct {
@ -122,7 +113,7 @@
textarea { textarea {
width: 100%; width: 100%;
height: 50px; height: 55px;
resize: none; resize: none;
margin-bottom: 5px; margin-bottom: 5px;
border: @scaled-one-px-value-ie solid @border-regular-control-ie; border: @scaled-one-px-value-ie solid @border-regular-control-ie;

View file

@ -8,7 +8,7 @@
text-align: center; text-align: center;
background-color: @background-alt-key-hint-ie; background-color: @background-alt-key-hint-ie;
background-color: @background-alt-key-hint; background-color: @background-alt-key-hint;
color: @text-normal; color: @text-alt-key-hint;
font-size: 12px; font-size: 12px;
line-height: 18px; line-height: 18px;
padding: 0 4px; padding: 0 4px;

View file

@ -157,10 +157,10 @@
} }
.revision-restore { .revision-restore {
color: @text-normal-ie; color: @text-normal-pressed-ie;
color: @text-normal; color: @text-normal-pressed;
border-bottom: @scaled-one-px-value-ie dotted @text-normal-ie; border-bottom: @scaled-one-px-value-ie dotted @text-normal-pressed-ie;
border-bottom: @scaled-one-px-value dotted @text-normal; border-bottom: @scaled-one-px-value dotted @text-normal-pressed;
height: 16px; height: 16px;
margin-top: 5px; margin-top: 5px;
white-space: pre-wrap; white-space: pre-wrap;

View file

@ -32,6 +32,28 @@
&.active { &.active {
} }
} }
&.vertical {
height: auto;
width: 18px;
padding-top: 0;
padding-left: 7px;
.track {
position: absolute;
@track-height: 4px;
height: calc(100% + @track-height);
width: @track-height;
margin-left: 0;
margin-top: -@track-height / 2;
}
.thumb {
@thumb-width: 12px;
top: auto;
left: 3px;
margin-left: 0;
margin-top: @thumb-width / -2;
}
}
} }
.thumb { .thumb {

View file

@ -39,12 +39,17 @@
} }
} }
.dynamic-empty-color em span { .dynamic-empty-color {
background: @background-normal-ie;
background: @background-normal;
em span {
border: solid @scaled-one-px-value-ie @border-color-shading-ie; border: solid @scaled-one-px-value-ie @border-color-shading-ie;
border: solid @scaled-one-px-value @border-color-shading; border: solid @scaled-one-px-value @border-color-shading;
background: @background-normal-ie; background: @background-normal-ie;
background: @background-normal; background: @background-normal;
} }
}
.color-transparent { .color-transparent {
em span { em span {

View file

@ -239,6 +239,10 @@
&:not(:first-child) { &:not(:first-child) {
margin-top: 6px; margin-top: 6px;
} }
&.font-normal {
.font-size-normal();
}
} }
.separator { .separator {
@ -648,7 +652,8 @@
&, &:hover, &:focus { &, &:hover, &:focus {
background-color: @highlight-button-pressed-ie; background-color: @highlight-button-pressed-ie;
background-color: @highlight-button-pressed; background-color: @highlight-button-pressed;
color: @dropdown-link-active-color; color: @text-normal-ie;
color: @text-normal;
span.color { span.color {
border-color: @icon-normal-ie; border-color: @icon-normal-ie;
border-color: @icon-normal; border-color: @icon-normal;

View file

@ -45,7 +45,7 @@ const StandartColors = ({ options, standartColors, onColorClick, curColor }) =>
) )
}; };
const CustomColors = ({ options, customColors, onColorClick, curColor }) => { const CustomColors = ({ options, customColors, isTypeColors, onColorClick, curColor }) => {
const colors = customColors.length > 0 ? customColors : []; const colors = customColors.length > 0 ? customColors : [];
const emptyItems = []; const emptyItems = [];
if (colors.length < options.customcolors) { if (colors.length < options.customcolors) {
@ -64,7 +64,7 @@ const CustomColors = ({ options, customColors, onColorClick, curColor }) => {
{colors && colors.length > 0 && colors.map((color, index) => { {colors && colors.length > 0 && colors.map((color, index) => {
return( return(
<a key={`dc-${index}`} <a key={`dc-${index}`}
className={curColor && curColor === color && index === indexCurColor ? 'active' : ''} className={curColor && curColor === color && index === indexCurColor && !isTypeColors ? 'active' : ''}
style={{background: `#${color}`}} style={{background: `#${color}`}}
onClick={() => {onColorClick(color)}} onClick={() => {onColorClick(color)}}
></a> ></a>
@ -100,6 +100,7 @@ const ThemeColorPalette = props => {
themeColors[row].push(effect); themeColors[row].push(effect);
}); });
const standartColors = Common.Utils.ThemeColor.getStandartColors(); const standartColors = Common.Utils.ThemeColor.getStandartColors();
let isTypeColors = standartColors.some( value => value === curColor );
// custom color // custom color
let customColors = props.customColors; let customColors = props.customColors;
if (customColors.length < 1) { if (customColors.length < 1) {
@ -120,7 +121,7 @@ const ThemeColorPalette = props => {
</ListItem> </ListItem>
<ListItem className='dynamic-colors'> <ListItem className='dynamic-colors'>
<div>{ _t.textCustomColors }</div> <div>{ _t.textCustomColors }</div>
<CustomColors options={options} customColors={customColors} onColorClick={props.changeColor} curColor={curColor}/> <CustomColors options={options} isTypeColors={isTypeColors} customColors={customColors} onColorClick={props.changeColor} curColor={curColor}/>
</ListItem> </ListItem>
</List> </List>
</div> </div>

View file

@ -218,7 +218,7 @@ const PluginsController = inject('storeAppOptions')(observer(props => {
plugin.set_Name(item['name']); plugin.set_Name(item['name']);
plugin.set_Guid(item['guid']); plugin.set_Guid(item['guid']);
plugin.set_BaseUrl(item['baseUrl']); plugin.set_BaseUrl(item['baseUrl']);
plugin.set_MinVersion && plugin.set_MinVersion(item.get('minVersion')); plugin.set_MinVersion && plugin.set_MinVersion(item['minVersion']);
let variations = item['variations'], let variations = item['variations'],
variationsArr = []; variationsArr = [];

View file

@ -17,15 +17,24 @@ class InitReview extends Component {
Common.Notifications.on('document:ready', () => { Common.Notifications.on('document:ready', () => {
const api = Common.EditorApi.get(); const api = Common.EditorApi.get();
const appOptions = props.storeAppOptions; const appOptions = props.storeAppOptions;
api.asc_SetTrackRevisions(appOptions.isReviewOnly || LocalStorage.getBool("de-mobile-track-changes-" + (appOptions.fileKey || '')));
let trackChanges = appOptions.customization && appOptions.customization.review ? appOptions.customization.review.trackChanges : undefined;
(trackChanges===undefined) && (trackChanges = appOptions.customization ? appOptions.customization.trackChanges : undefined);
trackChanges = appOptions.isReviewOnly || trackChanges === true || trackChanges !== false
&& LocalStorage.getBool("de-mobile-track-changes-" + (appOptions.fileKey || ''));
api.asc_SetTrackRevisions(trackChanges);
// Init display mode // Init display mode
if (!appOptions.canReview) { if (!appOptions.canReview) {
const canViewReview = appOptions.isEdit || api.asc_HaveRevisionsChanges(true); const canViewReview = appOptions.isEdit || api.asc_HaveRevisionsChanges(true);
appOptions.setCanViewReview(canViewReview); appOptions.setCanViewReview(canViewReview);
if (canViewReview) { if (canViewReview) {
let viewReviewMode = LocalStorage.getItem("de-view-review-mode"); let viewReviewMode = LocalStorage.getItem("de-view-review-mode");
if (viewReviewMode === null) if (viewReviewMode === null) {
viewReviewMode = appOptions.customization && /^(original|final|markup)$/i.test(appOptions.customization.reviewDisplay) ? appOptions.customization.reviewDisplay.toLocaleLowerCase() : 'original'; viewReviewMode = appOptions.customization && appOptions.customization.review ? appOptions.customization.review.reviewDisplay : undefined;
!viewReviewMode && (viewReviewMode = appOptions.customization ? appOptions.customization.reviewDisplay : undefined);
viewReviewMode = /^(original|final|markup)$/i.test(viewReviewMode) ? viewReviewMode.toLocaleLowerCase() : 'original';
}
viewReviewMode = (appOptions.isEdit || appOptions.isRestrictedEdit) ? 'markup' : viewReviewMode; viewReviewMode = (appOptions.isEdit || appOptions.isRestrictedEdit) ? 'markup' : viewReviewMode;
const displayMode = viewReviewMode.toLocaleLowerCase(); const displayMode = viewReviewMode.toLocaleLowerCase();
if (displayMode === 'final') { if (displayMode === 'final') {
@ -60,7 +69,8 @@ class Review extends Component {
this.appConfig = props.storeAppOptions; this.appConfig = props.storeAppOptions;
this.editorPrefix = window.editorType || ''; this.editorPrefix = window.editorType || '';
let trackChanges = typeof this.appConfig.customization == 'object' ? this.appConfig.customization.trackChanges : undefined; let trackChanges = this.appConfig.customization && this.appConfig.customization.review ? this.appConfig.customization.review.trackChanges : undefined;
(trackChanges===undefined) && (trackChanges = this.appConfig.customization ? this.appConfig.customization.trackChanges : undefined);
trackChanges = this.appConfig.isReviewOnly || trackChanges === true || trackChanges !== false trackChanges = this.appConfig.isReviewOnly || trackChanges === true || trackChanges !== false
&& LocalStorage.getBool(`${this.editorPrefix}-mobile-track-changes-${this.appConfig.fileKey || ''}`); && LocalStorage.getBool(`${this.editorPrefix}-mobile-track-changes-${this.appConfig.fileKey || ''}`);

View file

@ -203,26 +203,21 @@ class SearchView extends Component {
onEditorTouchStart(e) { onEditorTouchStart(e) {
this.startPoint = this.pointerPosition(e); this.startPoint = this.pointerPosition(e);
// console.log(this.startPoint);
} }
onEditorTouchEnd(e) { onEditorTouchEnd(e) {
const endPoint = this.pointerPosition(e); const endPoint = this.pointerPosition(e);
// console.log(endPoint);
if (this.searchbar.enabled) { if (this.searchbar.enabled) {
let distance; let distance;
if(this.startPoint) { if(this.startPoint) {
distance = (!!this.startPoint.x || !!this.startPoint.y) ? 0 : distance = (this.startPoint.x === undefined || this.startPoint.y === undefined) ? 0 :
Math.sqrt((endPoint.x -= this.startPoint.x) * endPoint.x + (endPoint.y -= this.startPoint.y) * endPoint.y); Math.sqrt((endPoint.x -= this.startPoint.x) * endPoint.x + (endPoint.y -= this.startPoint.y) * endPoint.y);
} else { } else {
distance = 0; distance = 0;
} }
// const distance = (this.startPoint === undefined || this.startPoint === undefined) ? 0 :
// Math.sqrt((endPoint.x -= this.startPoint.x) * endPoint.x + (endPoint.y -= this.startPoint.y) * endPoint.y);
if (distance < 1) { if (distance < 1) {
this.searchbar.disable(); this.searchbar.disable();
} }
@ -231,15 +226,10 @@ class SearchView extends Component {
pointerPosition(e) { pointerPosition(e) {
let out = {x:0, y:0}; let out = {x:0, y:0};
if ( e.type == 'touchstart' || e.type == 'touchend' ) { if ( e.type == 'pointerdown' || e.type == 'pointerup' || e.type == 'mousedown' || e.type == 'mouseup') {
const touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
out.x = touch.pageX;
out.y = touch.pageY;
} else if ( e.type == 'mousedown' || e.type == 'mouseup' ) {
out.x = e.pageX; out.x = e.pageX;
out.y = e.pageY; out.y = e.pageY;
} }
return out; return out;
} }

View file

@ -628,10 +628,11 @@ const pickLink = (message) => {
} }
// View comments // View comments
const ViewComments = ({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, showComment}) => { const ViewComments = ({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, showComment, storeReview}) => {
const { t } = useTranslation(); const { t } = useTranslation();
const _t = t('Common.Collaboration', {returnObjects: true}); const _t = t('Common.Collaboration', {returnObjects: true});
const isAndroid = Device.android; const isAndroid = Device.android;
const displayMode = storeReview.displayMode;
const viewMode = !storeAppOptions.canComments; const viewMode = !storeAppOptions.canComments;
const comments = storeComments.groupCollectionFilter || storeComments.collectionComments; const comments = storeComments.groupCollectionFilter || storeComments.collectionComments;
@ -672,10 +673,13 @@ const ViewComments = ({storeComments, storeAppOptions, onCommentMenuClick, onRes
</div> </div>
{!viewMode && {!viewMode &&
<div className='right'> <div className='right'>
{comment.editable && <div className='comment-resolve' onClick={() => {onResolveComment(comment);}}><Icon icon={comment.resolved ? 'icon-resolve-comment check' : 'icon-resolve-comment'} /></div> } {(comment.editable && displayMode === 'markup') && <div className='comment-resolve' onClick={() => {onResolveComment(comment);}}><Icon icon={comment.resolved ? 'icon-resolve-comment check' : 'icon-resolve-comment'} /></div> }
{displayMode === 'markup' &&
<div className='comment-menu' <div className='comment-menu'
onClick={() => {setComment(comment); openActionComment(true);}} onClick={() => {setComment(comment); openActionComment(true);}}>
><Icon icon='icon-menu-comment'/></div> <Icon icon='icon-menu-comment'/>
</div>
}
</div> </div>
} }
</div> </div>
@ -734,13 +738,14 @@ const ViewComments = ({storeComments, storeAppOptions, onCommentMenuClick, onRes
) )
}; };
const _ViewComments = inject('storeComments', 'storeAppOptions')(observer(ViewComments)); const _ViewComments = inject('storeComments', 'storeAppOptions', "storeReview")(observer(ViewComments));
const CommentList = inject("storeComments", "storeAppOptions")(observer(({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment}) => { const CommentList = inject("storeComments", "storeAppOptions", "storeReview")(observer(({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, storeReview}) => {
const { t } = useTranslation(); const { t } = useTranslation();
const _t = t('Common.Collaboration', {returnObjects: true}); const _t = t('Common.Collaboration', {returnObjects: true});
const isAndroid = Device.android; const isAndroid = Device.android;
const displayMode = storeReview.displayMode;
const viewMode = !storeAppOptions.canComments; const viewMode = !storeAppOptions.canComments;
const comments = storeComments.showComments; const comments = storeComments.showComments;
@ -801,10 +806,13 @@ const CommentList = inject("storeComments", "storeAppOptions")(observer(({storeC
</div> </div>
{!viewMode && {!viewMode &&
<div className='right'> <div className='right'>
{comment.editable && <div className='comment-resolve' onClick={() => {onResolveComment(comment);}}><Icon icon={comment.resolved ? 'icon-resolve-comment check' : 'icon-resolve-comment'}/></div>} {(comment.editable && displayMode === 'markup') && <div className='comment-resolve' onClick={() => {onResolveComment(comment);}}><Icon icon={comment.resolved ? 'icon-resolve-comment check' : 'icon-resolve-comment'}/></div>}
{displayMode === 'markup' &&
<div className='comment-menu' <div className='comment-menu'
onClick={() => {openActionComment(true);}} onClick={() => {openActionComment(true);}}>
><Icon icon='icon-menu-comment'/></div> <Icon icon='icon-menu-comment'/>
</div>
}
</div> </div>
} }
</div> </div>

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 290 55"><defs><style>.cls-1,.cls-2,.cls-3{fill-rule:evenodd;}.cls-1{fill:url(#grad_173);}.cls-2{fill:url(#grad_168);}.cls-3{fill:url(#grad_91);}.cls-4{fill:#526484;}.cls-5{fill:#3a4968;}</style><linearGradient id="grad_173" x1="35" y1="63.54" x2="35" y2="24.24" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d94315" stop-opacity="0.3"/><stop offset="0.88" stop-color="#d9420b"/></linearGradient><linearGradient id="grad_168" x1="35.03" y1="46.52" x2="35.03" y2="20.68" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#8bba24" stop-opacity="0.3"/><stop offset="0.66" stop-color="#8bba25"/></linearGradient><linearGradient id="grad_91" x1="35" y1="35.95" x2="35" y2="1.23" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#28a8e0" stop-opacity="0.3"/><stop offset="1" stop-color="#26a8de"/></linearGradient></defs><path class="cls-1" d="M31.36,53.32L7.5,42.58c-2-.9-2-2.38,0-3.28l8.36-3.77,15.49,7a10.15,10.15,0,0,0,7.28,0l15.49-7L62.5,39.3c2,0.9,2,2.38,0,3.28L38.64,53.32a10.14,10.14,0,0,1-7.28,0h0Z"/><path class="cls-2" d="M31.39,40.14L7.56,29.39c-2-.9-2-2.38,0-3.28l8.1-3.65,15.73,7.09a10.12,10.12,0,0,0,7.28,0L54.4,22.46l8.1,3.65c2,0.9,2,2.38,0,3.28L38.67,40.14a10.12,10.12,0,0,1-7.28,0h0Z"/><path class="cls-3" d="M31.36,27.19L7.5,16.58c-2-.89-2-2.35,0-3.24L31.36,2.74a10.27,10.27,0,0,1,7.28,0L62.5,13.34c2,0.89,2,2.35,0,3.24L38.64,27.19a10.26,10.26,0,0,1-7.28,0h0Z"/><path class="cls-4" d="M72.06,27.86q0-6.86,4-10.31a14.37,14.37,0,0,1,18.68,0q4,3.45,4,10.35t-4,10.31a14.37,14.37,0,0,1-18.68,0q-4-3.45-4-10.31v0h0Zm5.78,0q0,4.74,1.8,7a7.77,7.77,0,0,0,3.9,2.79q0.51,0.12,1,.17a7.12,7.12,0,0,0,.92.06,7.59,7.59,0,0,0,.94-0.06,5.83,5.83,0,0,0,1-.21,7.58,7.58,0,0,0,3.87-2.79Q93,32.56,93,27.89T91.2,21a7.58,7.58,0,0,0-3.87-2.79,5.83,5.83,0,0,0-1-.21,7.76,7.76,0,0,0-.94-0.06,7.27,7.27,0,0,0-.92.06q-0.45.06-1,.17A7.77,7.77,0,0,0,79.64,21q-1.8,2.22-1.8,6.92v0h0Z"/><polygon class="cls-4" points="102 15 109 15 119.89 35 120 35 120 15 125 15 125 41 118 41 107.13 20.96 107.01 20.96 107 41 102 41 102 15 102 15"/><polygon class="cls-4" points="130 15 135 15 135 37 147 37 147 41 130 41 130 15 130 15"/><polygon class="cls-4" points="148 15 155.47 25.98 155.59 25.98 163 15 168.5 15 158 31 158 41 153 41 153 31 142.5 15 148 15"/><path class="cls-5" d="M168,27.94q0-6.77,3.9-10.18a13.88,13.88,0,0,1,18.22,0Q194,21.17,194,28t-3.88,10.18a13.88,13.88,0,0,1-18.22,0Q168,34.75,168,28v0h0Zm5.63,0q0,4.68,1.75,6.87a7.57,7.57,0,0,0,3.81,2.76q0.49,0.11.93,0.17a6.85,6.85,0,0,0,.89.06,7.31,7.31,0,0,0,.91-0.06,5.6,5.6,0,0,0,1-.21,7.39,7.39,0,0,0,3.77-2.76q1.71-2.19,1.71-6.79t-1.71-6.79a7.39,7.39,0,0,0-3.77-2.76,5.61,5.61,0,0,0-1-.21,7.48,7.48,0,0,0-.91-0.06,7,7,0,0,0-.89.06q-0.44.06-.93,0.17a7.57,7.57,0,0,0-3.81,2.76q-1.75,2.19-1.75,6.83v0h0Z"/><polygon class="cls-5" points="197 15 212 15 212 19 202 19 202 26 211 26 211 30 202 30 202 41 197 41 197 15 197 15"/><polygon class="cls-5" points="216 15 231 15 231 19 221 19 221 26 230 26 230 30 221 30 221 41 216 41 216 15 216 15"/><polygon class="cls-5" points="234 41 234 15 239 15 239 41 234 41 234 41"/><path class="cls-5" d="M262,19.88a18.8,18.8,0,0,0-6.3-1c-7,0-8.28,5.64-8.28,9.13,0,2.54.84,9.19,7.67,9.19a17,17,0,0,0,6.57-1.24L262,40.42a42.48,42.48,0,0,1-7.46.81c-5.08,0-12.54-3.1-12.54-13.36,0-9.28,7-13,13-13a24.56,24.56,0,0,1,7,.8v4.25Z"/><polygon class="cls-5" points="266 15 282 15 282 19 271 19 271 26 281 26 281 30 271 30 271 37 282 37 282 41 266 41 266 15 266 15"/></svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -36,6 +36,6 @@
display: inline-block; display: inline-block;
width: 100%; width: 100%;
height: 55px; height: 55px;
background: url('../../../../common/mobile/resources/img/about/logo.svg') no-repeat center; background: url('../../../../common/main/resources/img/about/logo_s.svg') no-repeat center;
} }
} }

View file

@ -189,6 +189,7 @@
} }
} }
.toolbar { .toolbar {
position: absolute;
border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius); border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);
} }
} }
@ -227,3 +228,11 @@
text-align: center; text-align: center;
margin-top: 35px; margin-top: 35px;
} }
.actions-modal.modal-in {
z-index: 13700;
}
.actions-backdrop.backdrop-in {
z-index: 13600;
}

View file

@ -383,7 +383,10 @@
} }
} }
.page {
.color-palettes { .color-palettes {
.list {
ul {
.palette { .palette {
padding: 8px 0px; padding: 8px 0px;
a { a {
@ -393,6 +396,7 @@
min-height: 26px; min-height: 26px;
margin: 1px 1px 0 0; margin: 1px 1px 0 0;
box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset; box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;
border-radius: 0;
&.active:after { &.active:after {
content: ' '; content: ' ';
position: absolute; position: absolute;
@ -409,6 +413,8 @@
} }
} }
} }
}
}
.row { .row {
padding: 0; padding: 0;
} }
@ -427,6 +433,7 @@
} }
} }
} }
}
#color-picker { #color-picker {
display: flex; display: flex;
@ -829,6 +836,12 @@ input[type="number"]::-webkit-inner-spin-button {
overflow: hidden; overflow: hidden;
} }
// Statusbar
.statusbar .statusbar--box-tabs > ul > .locked a {
box-shadow: inset 0 2px red;
}

View file

@ -50,7 +50,7 @@
.loadmask > .brendpanel .loading-logo > img { .loadmask > .brendpanel .loading-logo > img {
display: inline-block; display: inline-block;
max-width: 100px; max-width: 124px;
max-height: 20px; max-height: 20px;
margin-top: 2px; margin-top: 2px;
opacity: 0; opacity: 0;
@ -155,8 +155,7 @@
} }
function encodeUrlParam(str) { function encodeUrlParam(str) {
return str.replace(/&/g, '&amp;') return str.replace(/"/g, '&quot;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;') .replace(/'/g, '&#39;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;'); .replace(/>/g, '&gt;');
@ -222,7 +221,7 @@
</div> </div>
</div> </div>
<div class="hyperlink-tooltip" data-toggle="tooltip" title="Press Ctrl and click the link" style="display:none;"></div> <div class="hyperlink-tooltip" data-toggle="tooltip" title="" style="display:none;"></div>
<!--vendor--> <!--vendor-->
<script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script> <script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script>

View file

@ -48,7 +48,7 @@
.loadmask > .brendpanel .loading-logo > img { .loadmask > .brendpanel .loading-logo > img {
display: inline-block; display: inline-block;
max-width: 100px; max-width: 124px;
max-height: 20px; max-height: 20px;
margin-top: 2px; margin-top: 2px;
opacity: 0; opacity: 0;
@ -148,8 +148,7 @@
} }
function encodeUrlParam(str) { function encodeUrlParam(str) {
return str.replace(/&/g, '&amp;') return str.replace(/"/g, '&quot;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;') .replace(/'/g, '&#39;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;'); .replace(/>/g, '&gt;');
@ -214,7 +213,7 @@
</div> </div>
</div> </div>
<div class="hyperlink-tooltip" data-toggle="tooltip" title="Press Ctrl and click the link" style="display:none;"></div> <div class="hyperlink-tooltip" data-toggle="tooltip" title="" style="display:none;"></div>
<!--vendor--> <!--vendor-->
<script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script> <script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script>

View file

@ -225,8 +225,7 @@
} }
function encodeUrlParam(str) { function encodeUrlParam(str) {
return str.replace(/&/g, '&amp;') return str.replace(/"/g, '&quot;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;') .replace(/'/g, '&#39;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;'); .replace(/>/g, '&gt;');
@ -323,7 +322,7 @@
</div> </div>
</div> </div>
<div class="hyperlink-tooltip" data-toggle="tooltip" title="Press Ctrl and click the link" style="display:none;"></div> <div class="hyperlink-tooltip" data-toggle="tooltip" title="" style="display:none;"></div>
<!--vendor--> <!--vendor-->
<script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script> <script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script>

View file

@ -217,8 +217,7 @@
} }
function encodeUrlParam(str) { function encodeUrlParam(str) {
return str.replace(/&/g, '&amp;') return str.replace(/"/g, '&quot;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;') .replace(/'/g, '&#39;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;'); .replace(/>/g, '&gt;');
@ -315,7 +314,7 @@
</div> </div>
</div> </div>
<div class="hyperlink-tooltip" data-toggle="tooltip" title="Press Ctrl and click the link" style="display:none;"></div> <div class="hyperlink-tooltip" data-toggle="tooltip" title="" style="display:none;"></div>
<!--vendor--> <!--vendor-->
<script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script> <script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script>

View file

@ -43,7 +43,9 @@ DE.ApplicationController = new(function(){
labelDocName, labelDocName,
appOptions = {}, appOptions = {},
btnSubmit, btnSubmit,
_submitFail, $submitedTooltip, $requiredTooltip; _submitFail, $submitedTooltip, $requiredTooltip,
$listControlMenu, listControlItems = [], listObj,
bodyWidth = 0;
var LoadingDocument = -256; var LoadingDocument = -256;
@ -83,6 +85,7 @@ DE.ApplicationController = new(function(){
} else { } else {
$('#toolbar').addClass('top'); $('#toolbar').addClass('top');
$('#editor_sdk').addClass('top'); $('#editor_sdk').addClass('top');
ttOffset[1] = 40;
} }
config.canBackToFolder = (config.canBackToFolder!==false) && config.customization && config.customization.goback && config.canBackToFolder = (config.canBackToFolder!==false) && config.customization && config.customization.goback &&
@ -218,39 +221,53 @@ DE.ApplicationController = new(function(){
var $ttEl, $tooltip; var $ttEl, $tooltip;
function onDocMouseMove(data) { function onDocMouseMove(data) {
if (data) { if (data) {
if (data.get_Type() == 1) { // hyperlink var type = data.get_Type();
if (type == Asc.c_oAscMouseMoveDataTypes.Hyperlink || type==Asc.c_oAscMouseMoveDataTypes.Form) { // hyperlink
me.isHideBodyTip = false; me.isHideBodyTip = false;
var str = (type == Asc.c_oAscMouseMoveDataTypes.Hyperlink) ? me.txtPressLink : data.get_FormHelpText();
if (str.length>500)
str = str.substr(0, 500) + '...';
str = common.utils.htmlEncode(str);
if ( !$ttEl ) { if ( !$ttEl ) {
$ttEl = $('.hyperlink-tooltip'); $ttEl = $('.hyperlink-tooltip');
$ttEl.tooltip({'container':'body', 'trigger':'manual'}); $ttEl.tooltip({'container':'body', 'trigger':'manual'});
$ttEl.on('shown.bs.tooltip', function(e) { }
$ttEl.ttpos = [data.get_X(), data.get_Y()];
if ( !$tooltip)
$tooltip = $ttEl.data('bs.tooltip').tip(); $tooltip = $ttEl.data('bs.tooltip').tip();
if (!$tooltip.is(':visible')) {
var tip = $ttEl.data('bs.tooltip');
tip.options.title = str;
tip.show([-1000, -1000]);
} else
$tooltip.find('.tooltip-inner')['text'](str);
var ttHeight = $tooltip.height(),
ttWidth = $tooltip.width();
!bodyWidth && (bodyWidth = $('body').width());
$ttEl.ttpos[1] -= (ttHeight - ttOffset[1] + 20);
if ($ttEl.ttpos[0] + ttWidth + 10 >bodyWidth) {
$ttEl.ttpos[0] = bodyWidth - ttWidth - 5;
if ($ttEl.ttpos[1] < 0)
$ttEl.ttpos[1] += ttHeight + ttOffset[1] + 20;
} else if ($ttEl.ttpos[1] < 0) {
$ttEl.ttpos[1] = 0;
$ttEl.ttpos[0] += 20;
}
$tooltip.css({ $tooltip.css({
left: $ttEl.ttpos[0] + ttOffset[0], left: $ttEl.ttpos[0],
top: $ttEl.ttpos[1] + ttOffset[1] top: $ttEl.ttpos[1]
});
$tooltip.find('.tooltip-arrow').css({left: 10});
});
}
if ( !$tooltip ) {
$ttEl.ttpos = [data.get_X(), data.get_Y()];
$ttEl.tooltip('show');
} else {
$tooltip.css({
left:data.get_X() + ttOffset[0],
top:data.get_Y() + ttOffset[1]
}); });
} }
} }
} }
}
function onDownloadUrl(url) { function onDownloadUrl(url, fileType) {
Common.Gateway.downloadAs(url); Common.Gateway.downloadAs(url, fileType);
} }
function onPrint() { function onPrint() {
@ -273,6 +290,97 @@ DE.ApplicationController = new(function(){
} }
} }
function onShowContentControlsActions(obj, x, y) {
switch (obj.type) {
case Asc.c_oAscContentControlSpecificType.Picture:
if (obj.pr && obj.pr.get_Lock) {
var lock = obj.pr.get_Lock();
if (lock == Asc.c_oAscSdtLockType.SdtContentLocked || lock==Asc.c_oAscSdtLockType.ContentLocked)
return;
}
api.asc_addImage(obj);
setTimeout(function(){
api.asc_UncheckContentControlButtons();
}, 500);
break;
case Asc.c_oAscContentControlSpecificType.DropDownList:
case Asc.c_oAscContentControlSpecificType.ComboBox:
onShowListActions(obj, x, y);
break;
}
}
function onHideContentControlsActions() {
$listControlMenu && $listControlMenu.hide();
api.asc_UncheckContentControlButtons();
}
function onShowListActions(obj, x, y) {
var type = obj.type,
props = obj.pr,
specProps = (type == Asc.c_oAscContentControlSpecificType.ComboBox) ? props.get_ComboBoxPr() : props.get_DropDownListPr(),
isForm = !!props.get_FormPr();
var menuContainer = DE.ApplicationView.getMenuForm();
if (!$listControlMenu) {
$listControlMenu = menuContainer.find('ul');
$listControlMenu.on('click', 'li', function(e) {
var value = $(e.target).attr('value');
if (value) {
value = parseInt(value);
setTimeout(function(){
(value!==-1) && api.asc_SelectContentControlListItem(listControlItems[value], listObj.get_InternalId());
}, 1);
}
});
$('#editor_sdk').on('click', function(e){
if (e.target.localName == 'canvas') {
if (me._preventClick)
me._preventClick = false;
else {
$listControlMenu && $listControlMenu.hide();
api.asc_UncheckContentControlButtons();
}
}
});
}
$listControlMenu.find('li').remove();
listControlItems = [];
listObj = props;
if (specProps) {
var k = 0;
if (isForm){ // for dropdown and combobox form control always add placeholder item
var text = props.get_PlaceholderText();
$listControlMenu.append('<li><a tabindex="-1" type="menuitem" style="opacity: 0.6" value="0">' +
((text.trim()!=='') ? text : me.txtEmpty) +
'</a></li>');
listControlItems.push('');
}
var count = specProps.get_ItemsCount();
k = listControlItems.length;
for (var i=0; i<count; i++) {
if (specProps.get_ItemValue(i)!=='' || !isForm) {
$listControlMenu.append('<li><a tabindex="-1" type="menuitem" value="' + (i+k) + '">' +
common.utils.htmlEncode(specProps.get_ItemDisplayText(i)) +
'</a></li>');
listControlItems.push(specProps.get_ItemValue(i));
}
}
if (!isForm && listControlItems.length<1) {
$listControlMenu.append('<li><a tabindex="-1" type="menuitem" value="0">' +
me.txtEmpty +
'</a></li>');
listControlItems.push(-1);
}
}
menuContainer.css({left: x, top : y});
me._preventClick = true;
$listControlMenu.show();
}
function hidePreloader() { function hidePreloader() {
$('#loading-mask').fadeOut('slow'); $('#loading-mask').fadeOut('slow');
} }
@ -350,6 +458,11 @@ DE.ApplicationController = new(function(){
api.asc_registerCallback('asc_onPrint', onPrint); api.asc_registerCallback('asc_onPrint', onPrint);
api.asc_registerCallback('asc_onPrintUrl', onPrintUrl); api.asc_registerCallback('asc_onPrintUrl', onPrintUrl);
api.asc_registerCallback('sync_onAllRequiredFormsFilled', onFillRequiredFields); api.asc_registerCallback('sync_onAllRequiredFormsFilled', onFillRequiredFields);
if (appOptions.canFillForms) {
api.asc_registerCallback('asc_onShowContentControlsActions', onShowContentControlsActions);
api.asc_registerCallback('asc_onHideContentControlsActions', onHideContentControlsActions);
api.asc_SetHighlightRequiredFields(true);
}
Common.Gateway.on('processmouse', onProcessMouse); Common.Gateway.on('processmouse', onProcessMouse);
Common.Gateway.on('downloadas', onDownloadAs); Common.Gateway.on('downloadas', onDownloadAs);
@ -625,6 +738,11 @@ DE.ApplicationController = new(function(){
message = me.errorEditingDownloadas; message = me.errorEditingDownloadas;
break; break;
case Asc.c_oAscError.ID.ForceSaveButton:
case Asc.c_oAscError.ID.ForceSaveTimeout:
message = me.errorForceSave;
break;
default: default:
message = me.errorDefaultMessage.replace('%1', id); message = me.errorDefaultMessage.replace('%1', id);
break; break;
@ -705,6 +823,7 @@ DE.ApplicationController = new(function(){
function onDocumentResize() { function onDocumentResize() {
api && api.Resize(); api && api.Resize();
bodyWidth = $('body').width();
} }
function createController(){ function createController(){
@ -806,6 +925,9 @@ DE.ApplicationController = new(function(){
textGuest: 'Guest', textGuest: 'Guest',
textAnonymous: 'Anonymous', textAnonymous: 'Anonymous',
textRequired: 'Fill all required fields to send form.', textRequired: 'Fill all required fields to send form.',
textGotIt: 'Got it' textGotIt: 'Got it',
errorForceSave: "An error occurred while saving the file. Please use the 'Download as' option to save the file to your computer hard drive or try again later.",
txtEmpty: '(Empty)',
txtPressLink: 'Press Ctrl and click link'
} }
})(); })();

View file

@ -36,6 +36,7 @@ if (DE === undefined) {
DE.ApplicationView = new(function(){ DE.ApplicationView = new(function(){
var $btnTools; var $btnTools;
var $menuForm;
// Initialize view // Initialize view
@ -63,11 +64,23 @@ DE.ApplicationView = new(function(){
return $btnTools.parent().find(name); return $btnTools.parent().find(name);
} }
function getMenuForm() {
if (!$menuForm) {
$menuForm = $('<div id="menu-container-form" style="position: absolute; z-index: 10000;" data-value="prevent-canvas-click">' +
'<div class="dropdown-toggle" data-toggle="dropdown"></div>' +
'<ul class="dropdown-menu" oo_editor_input="true" role="menu" style="right: 0; left: auto;max-height: 200px; overflow-y: auto;"></ul>' +
'</div>');
$('#editor_sdk').append($menuForm);
}
return $menuForm;
}
return { return {
create: createView create: createView
, tools: { , tools: {
get: getTools get: getTools
}, },
getMenuForm: getMenuForm,
txtDownload: 'Download', txtDownload: 'Download',
txtPrint: 'Print', txtPrint: 'Print',

View file

@ -19,10 +19,14 @@
"DE.ApplicationController.errorUserDrop": "Ara no es pot accedir al fitxer.", "DE.ApplicationController.errorUserDrop": "Ara no es pot accedir al fitxer.",
"DE.ApplicationController.notcriticalErrorTitle": "Avis", "DE.ApplicationController.notcriticalErrorTitle": "Avis",
"DE.ApplicationController.scriptLoadError": "La connexió és massa lenta, alguns dels components no shan pogut carregar. Torneu a carregar la pàgina.", "DE.ApplicationController.scriptLoadError": "La connexió és massa lenta, alguns dels components no shan pogut carregar. Torneu a carregar la pàgina.",
"DE.ApplicationController.textAnonymous": "Anònim",
"DE.ApplicationController.textClear": "Esborrar tots els camps", "DE.ApplicationController.textClear": "Esborrar tots els camps",
"DE.ApplicationController.textGotIt": "Ho tinc",
"DE.ApplicationController.textGuest": "Convidat",
"DE.ApplicationController.textLoadingDocument": "Carregant document", "DE.ApplicationController.textLoadingDocument": "Carregant document",
"DE.ApplicationController.textNext": "Següent camp", "DE.ApplicationController.textNext": "Següent camp",
"DE.ApplicationController.textOf": "de", "DE.ApplicationController.textOf": "de",
"DE.ApplicationController.textRequired": "Ompli tots els camps requerits per enviar el formulari.",
"DE.ApplicationController.textSubmit": "Enviar", "DE.ApplicationController.textSubmit": "Enviar",
"DE.ApplicationController.textSubmited": "<b>Formulari enviat amb èxit</b><br>Faci clic per a tancar el consell", "DE.ApplicationController.textSubmited": "<b>Formulari enviat amb èxit</b><br>Faci clic per a tancar el consell",
"DE.ApplicationController.txtClose": "Tancar", "DE.ApplicationController.txtClose": "Tancar",

View file

@ -19,10 +19,14 @@
"DE.ApplicationController.errorUserDrop": "Der Zugriff auf diese Datei ist nicht möglich.", "DE.ApplicationController.errorUserDrop": "Der Zugriff auf diese Datei ist nicht möglich.",
"DE.ApplicationController.notcriticalErrorTitle": "Warnung", "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.scriptLoadError": "Die Verbindung ist zu langsam, einige der Komponenten konnten nicht geladen werden. Bitte laden Sie die Seite erneut.",
"DE.ApplicationController.textAnonymous": "Anonym",
"DE.ApplicationController.textClear": "Alle Felder löschen", "DE.ApplicationController.textClear": "Alle Felder löschen",
"DE.ApplicationController.textGotIt": "OK",
"DE.ApplicationController.textGuest": "Gast",
"DE.ApplicationController.textLoadingDocument": "Dokument wird geladen...", "DE.ApplicationController.textLoadingDocument": "Dokument wird geladen...",
"DE.ApplicationController.textNext": "Nächstes Feld", "DE.ApplicationController.textNext": "Nächstes Feld",
"DE.ApplicationController.textOf": "von", "DE.ApplicationController.textOf": "von",
"DE.ApplicationController.textRequired": "Füllen Sie alle erforderlichen Felder aus, um das Formular zu senden.",
"DE.ApplicationController.textSubmit": "Senden", "DE.ApplicationController.textSubmit": "Senden",
"DE.ApplicationController.textSubmited": "<b>Das Formular wurde erfolgreich abgesendet</b><br>Klicken Sie hier, um den Tipp auszublenden", "DE.ApplicationController.textSubmited": "<b>Das Formular wurde erfolgreich abgesendet</b><br>Klicken Sie hier, um den Tipp auszublenden",
"DE.ApplicationController.txtClose": "Schließen", "DE.ApplicationController.txtClose": "Schließen",

View file

@ -19,10 +19,14 @@
"DE.ApplicationController.errorUserDrop": "Δεν είναι δυνατή η πρόσβαση στο αρχείο αυτήν τη στιγμή.", "DE.ApplicationController.errorUserDrop": "Δεν είναι δυνατή η πρόσβαση στο αρχείο αυτήν τη στιγμή.",
"DE.ApplicationController.notcriticalErrorTitle": "Προειδοποίηση", "DE.ApplicationController.notcriticalErrorTitle": "Προειδοποίηση",
"DE.ApplicationController.scriptLoadError": "Η σύνδεση είναι πολύ αργή, δεν ήταν δυνατή η φόρτωση ορισμένων στοιχείων. Φορτώστε ξανά τη σελίδα.", "DE.ApplicationController.scriptLoadError": "Η σύνδεση είναι πολύ αργή, δεν ήταν δυνατή η φόρτωση ορισμένων στοιχείων. Φορτώστε ξανά τη σελίδα.",
"DE.ApplicationController.textAnonymous": "Ανώνυμος",
"DE.ApplicationController.textClear": "Εκκαθάριση Όλων των Πεδίων", "DE.ApplicationController.textClear": "Εκκαθάριση Όλων των Πεδίων",
"DE.ApplicationController.textGotIt": "Ελήφθη",
"DE.ApplicationController.textGuest": "Επισκέπτης",
"DE.ApplicationController.textLoadingDocument": "Φόρτωση εγγράφου", "DE.ApplicationController.textLoadingDocument": "Φόρτωση εγγράφου",
"DE.ApplicationController.textNext": "Επόμενο Πεδίο", "DE.ApplicationController.textNext": "Επόμενο Πεδίο",
"DE.ApplicationController.textOf": "του", "DE.ApplicationController.textOf": "του",
"DE.ApplicationController.textRequired": "Συμπληρώστε όλα τα απαιτούμενα πεδία για την αποστολή της φόρμας.",
"DE.ApplicationController.textSubmit": "Υποβολή", "DE.ApplicationController.textSubmit": "Υποβολή",
"DE.ApplicationController.textSubmited": "<b>Η φόρμα υποβλήθηκε με επιτυχία</b><br>Κάντε κλικ για να κλείσετε τη συμβουλή ", "DE.ApplicationController.textSubmited": "<b>Η φόρμα υποβλήθηκε με επιτυχία</b><br>Κάντε κλικ για να κλείσετε τη συμβουλή ",
"DE.ApplicationController.txtClose": "Κλείσιμο", "DE.ApplicationController.txtClose": "Κλείσιμο",

View file

@ -14,6 +14,7 @@
"DE.ApplicationController.errorEditingDownloadas": "An error occurred during the work with the document.<br>Use the 'Download as...' option to save the file backup copy to your computer hard drive.", "DE.ApplicationController.errorEditingDownloadas": "An error occurred during the work with the document.<br>Use the 'Download as...' option to save the file backup copy to your computer hard drive.",
"DE.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.", "DE.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.",
"DE.ApplicationController.errorFileSizeExceed": "The file size exceeds the limitation set for your server.<br>Please contact your Document Server administrator for details.", "DE.ApplicationController.errorFileSizeExceed": "The file size exceeds the limitation set for your server.<br>Please contact your Document Server administrator for details.",
"DE.ApplicationController.errorForceSave": "An error occurred while saving the file. Please use the 'Download as' option to save the file to your computer hard drive or try again later.",
"DE.ApplicationController.errorSubmit": "Submit failed.", "DE.ApplicationController.errorSubmit": "Submit failed.",
"DE.ApplicationController.errorUpdateVersionOnDisconnect": "Internet connection has been restored, and the file version has been changed.<br>Before you can continue working, you need to download the file or copy its content to make sure nothing is lost, and then reload this page.", "DE.ApplicationController.errorUpdateVersionOnDisconnect": "Internet connection has been restored, and the file version has been changed.<br>Before you can continue working, you need to download the file or copy its content to make sure nothing is lost, and then reload this page.",
"DE.ApplicationController.errorUserDrop": "The file cannot be accessed right now.", "DE.ApplicationController.errorUserDrop": "The file cannot be accessed right now.",
@ -30,6 +31,8 @@
"DE.ApplicationController.textSubmit": "Submit", "DE.ApplicationController.textSubmit": "Submit",
"DE.ApplicationController.textSubmited": "<b>Form submitted successfully</b><br>Click to close the tip", "DE.ApplicationController.textSubmited": "<b>Form submitted successfully</b><br>Click to close the tip",
"DE.ApplicationController.txtClose": "Close", "DE.ApplicationController.txtClose": "Close",
"DE.ApplicationController.txtEmpty": "(Empty)",
"DE.ApplicationController.txtPressLink": "Press Ctrl and click link",
"DE.ApplicationController.unknownErrorText": "Unknown error.", "DE.ApplicationController.unknownErrorText": "Unknown error.",
"DE.ApplicationController.unsupportedBrowserErrorText": "Your browser is not supported.", "DE.ApplicationController.unsupportedBrowserErrorText": "Your browser is not supported.",
"DE.ApplicationController.waitText": "Please, wait...", "DE.ApplicationController.waitText": "Please, wait...",

View file

@ -19,10 +19,14 @@
"DE.ApplicationController.errorUserDrop": "No se puede acceder al archivo en este momento.", "DE.ApplicationController.errorUserDrop": "No se puede acceder al archivo en este momento.",
"DE.ApplicationController.notcriticalErrorTitle": "Aviso", "DE.ApplicationController.notcriticalErrorTitle": "Aviso",
"DE.ApplicationController.scriptLoadError": "La conexión a Internet es demasiado lenta, algunos de los componentes no se han podido cargar. Por favor, recargue la página.", "DE.ApplicationController.scriptLoadError": "La conexión a Internet es demasiado lenta, algunos de los componentes no se han podido cargar. Por favor, recargue la página.",
"DE.ApplicationController.textAnonymous": "Anónimo",
"DE.ApplicationController.textClear": "Borrar todos los campos", "DE.ApplicationController.textClear": "Borrar todos los campos",
"DE.ApplicationController.textGotIt": "Entiendo",
"DE.ApplicationController.textGuest": "Invitado",
"DE.ApplicationController.textLoadingDocument": "Cargando documento", "DE.ApplicationController.textLoadingDocument": "Cargando documento",
"DE.ApplicationController.textNext": "Campo siguiente", "DE.ApplicationController.textNext": "Campo siguiente",
"DE.ApplicationController.textOf": "de", "DE.ApplicationController.textOf": "de",
"DE.ApplicationController.textRequired": "Rellene todos los campos obligatorios para enviar el formulario.",
"DE.ApplicationController.textSubmit": "Enviar", "DE.ApplicationController.textSubmit": "Enviar",
"DE.ApplicationController.textSubmited": "<b>Formulario enviado con éxito</b><br>Haga clic para cerrar el consejo", "DE.ApplicationController.textSubmited": "<b>Formulario enviado con éxito</b><br>Haga clic para cerrar el consejo",
"DE.ApplicationController.txtClose": "Cerrar", "DE.ApplicationController.txtClose": "Cerrar",

View file

@ -19,10 +19,14 @@
"DE.ApplicationController.errorUserDrop": "Impossible d'accéder au fichier.", "DE.ApplicationController.errorUserDrop": "Impossible d'accéder au fichier.",
"DE.ApplicationController.notcriticalErrorTitle": "Avertissement", "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.scriptLoadError": "La connexion est trop lente, certains éléments ne peuvent pas être chargés. Veuillez recharger la page.",
"DE.ApplicationController.textAnonymous": "Anonyme",
"DE.ApplicationController.textClear": "Effacer tous les champs", "DE.ApplicationController.textClear": "Effacer tous les champs",
"DE.ApplicationController.textGotIt": "C'est compris",
"DE.ApplicationController.textGuest": "Invité",
"DE.ApplicationController.textLoadingDocument": "Chargement du document", "DE.ApplicationController.textLoadingDocument": "Chargement du document",
"DE.ApplicationController.textNext": "Champ suivant", "DE.ApplicationController.textNext": "Champ suivant",
"DE.ApplicationController.textOf": "de", "DE.ApplicationController.textOf": "de",
"DE.ApplicationController.textRequired": "Veuillez remplir tous les champs obligatoires avant d'envoyer le formulaire.",
"DE.ApplicationController.textSubmit": "Soumettre ", "DE.ApplicationController.textSubmit": "Soumettre ",
"DE.ApplicationController.textSubmited": "<b>Le formulaire a été soumis avec succès</b><br>Cliquez ici pour fermer l'astuce", "DE.ApplicationController.textSubmited": "<b>Le formulaire a été soumis avec succès</b><br>Cliquez ici pour fermer l'astuce",
"DE.ApplicationController.txtClose": "Fermer", "DE.ApplicationController.txtClose": "Fermer",

View file

@ -19,10 +19,14 @@
"DE.ApplicationController.errorUserDrop": "Impossibile accedere al file subito.", "DE.ApplicationController.errorUserDrop": "Impossibile accedere al file subito.",
"DE.ApplicationController.notcriticalErrorTitle": "Avviso", "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.scriptLoadError": "La connessione è troppo lenta, alcuni componenti non possono essere caricati. Si prega di ricaricare la pagina.",
"DE.ApplicationController.textAnonymous": "Anonimo",
"DE.ApplicationController.textClear": "Cancella tutti i campi", "DE.ApplicationController.textClear": "Cancella tutti i campi",
"DE.ApplicationController.textGotIt": "Capito",
"DE.ApplicationController.textGuest": "Ospite",
"DE.ApplicationController.textLoadingDocument": "Caricamento del documento", "DE.ApplicationController.textLoadingDocument": "Caricamento del documento",
"DE.ApplicationController.textNext": "Campo successivo", "DE.ApplicationController.textNext": "Campo successivo",
"DE.ApplicationController.textOf": "di", "DE.ApplicationController.textOf": "di",
"DE.ApplicationController.textRequired": "Compila tutti i campi richiesti per inviare il modulo.",
"DE.ApplicationController.textSubmit": "Invia", "DE.ApplicationController.textSubmit": "Invia",
"DE.ApplicationController.textSubmited": "<b>Modulo inviato con successo</b><br>Fare click per chiudere la notifica</br>", "DE.ApplicationController.textSubmited": "<b>Modulo inviato con successo</b><br>Fare click per chiudere la notifica</br>",
"DE.ApplicationController.txtClose": "Chiudi", "DE.ApplicationController.txtClose": "Chiudi",

View file

@ -11,20 +11,33 @@
"DE.ApplicationController.downloadTextText": "ドキュメントのダウンロード中...", "DE.ApplicationController.downloadTextText": "ドキュメントのダウンロード中...",
"DE.ApplicationController.errorAccessDeny": "利用権限がない操作をしようとしました。<br>Documentサーバー管理者に連絡してください。", "DE.ApplicationController.errorAccessDeny": "利用権限がない操作をしようとしました。<br>Documentサーバー管理者に連絡してください。",
"DE.ApplicationController.errorDefaultMessage": "エラー コード: %1", "DE.ApplicationController.errorDefaultMessage": "エラー コード: %1",
"DE.ApplicationController.errorEditingDownloadas": "ドキュメントの作業中にエラーが発生しました。<br>「名前を付けてダウンロード」オプションを使用して、ファイルのバックアップコピーをコンピュータに保存します。",
"DE.ApplicationController.errorFilePassProtect": "ドキュメントがパスワードで保護されているため開くことができません", "DE.ApplicationController.errorFilePassProtect": "ドキュメントがパスワードで保護されているため開くことができません",
"DE.ApplicationController.errorFileSizeExceed": "ファイルサイズがサーバーで設定された制限を超過しています。<br>Documentサーバー管理者に詳細をお問い合わせください。", "DE.ApplicationController.errorFileSizeExceed": "ファイルサイズがサーバーで設定された制限を超過しています。<br>Documentサーバー管理者に詳細をお問い合わせください。",
"DE.ApplicationController.errorSubmit": "送信に失敗しました。",
"DE.ApplicationController.errorUpdateVersionOnDisconnect": "インターネット接続が復旧し、ファイルのバージョンが更新されています。<br>作業を継続する前に、ファイルをダウンロードするか内容をコピーして、変更が消えてしまわないようにしてからページを再読み込みしてください。", "DE.ApplicationController.errorUpdateVersionOnDisconnect": "インターネット接続が復旧し、ファイルのバージョンが更新されています。<br>作業を継続する前に、ファイルをダウンロードするか内容をコピーして、変更が消えてしまわないようにしてからページを再読み込みしてください。",
"DE.ApplicationController.errorUserDrop": "今、ファイルにアクセスすることはできません。", "DE.ApplicationController.errorUserDrop": "今、ファイルにアクセスすることはできません。",
"DE.ApplicationController.notcriticalErrorTitle": "警告", "DE.ApplicationController.notcriticalErrorTitle": "警告",
"DE.ApplicationController.scriptLoadError": "接続が非常に遅いため、いくつかのコンポーネントはロードされませんでした。ページを再読み込みしてください。", "DE.ApplicationController.scriptLoadError": "接続が非常に遅いため、いくつかのコンポーネントはロードされませんでした。ページを再読み込みしてください。",
"DE.ApplicationController.textAnonymous": "匿名",
"DE.ApplicationController.textClear": "すべてのフィールドを削除する",
"DE.ApplicationController.textGotIt": "OK",
"DE.ApplicationController.textGuest": "ゲスト",
"DE.ApplicationController.textLoadingDocument": "ドキュメントを読み込んでいます", "DE.ApplicationController.textLoadingDocument": "ドキュメントを読み込んでいます",
"DE.ApplicationController.textNext": "次のフィールド",
"DE.ApplicationController.textOf": "から", "DE.ApplicationController.textOf": "から",
"DE.ApplicationController.textRequired": "必須事項をすべて入力し、送信してください。",
"DE.ApplicationController.textSubmit": "送信",
"DE.ApplicationController.textSubmited": "<b>フォームが正常に送信されました。</b><br>クリックしてヒントを閉じます。",
"DE.ApplicationController.txtClose": "閉じる", "DE.ApplicationController.txtClose": "閉じる",
"DE.ApplicationController.unknownErrorText": "不明なエラー", "DE.ApplicationController.unknownErrorText": "不明なエラー",
"DE.ApplicationController.unsupportedBrowserErrorText": "お使いのブラウザがサポートされていません。", "DE.ApplicationController.unsupportedBrowserErrorText": "お使いのブラウザサポートされていません。",
"DE.ApplicationController.waitText": "少々お待ちください...", "DE.ApplicationController.waitText": "少々お待ちください...",
"DE.ApplicationView.txtDownload": "ダウンロード", "DE.ApplicationView.txtDownload": "ダウンロード",
"DE.ApplicationView.txtDownloadDocx": "docxとして保存",
"DE.ApplicationView.txtDownloadPdf": "PDFとして保存",
"DE.ApplicationView.txtEmbed": "埋め込み", "DE.ApplicationView.txtEmbed": "埋め込み",
"DE.ApplicationView.txtFileLocation": "ファイルを開く",
"DE.ApplicationView.txtFullScreen": "全画面表示", "DE.ApplicationView.txtFullScreen": "全画面表示",
"DE.ApplicationView.txtPrint": "印刷する", "DE.ApplicationView.txtPrint": "印刷する",
"DE.ApplicationView.txtShare": "シェア" "DE.ApplicationView.txtShare": "シェア"

View file

@ -17,6 +17,7 @@
"DE.ApplicationController.errorUserDrop": "파일에 지금 액세스 할 수 없습니다.", "DE.ApplicationController.errorUserDrop": "파일에 지금 액세스 할 수 없습니다.",
"DE.ApplicationController.notcriticalErrorTitle": "경고", "DE.ApplicationController.notcriticalErrorTitle": "경고",
"DE.ApplicationController.scriptLoadError": "연결 속도가 느려, 일부 요소들이 로드되지 않았습니다. 페이지를 다시 새로 고침해주세요.", "DE.ApplicationController.scriptLoadError": "연결 속도가 느려, 일부 요소들이 로드되지 않았습니다. 페이지를 다시 새로 고침해주세요.",
"DE.ApplicationController.textAnonymous": "익명사용자",
"DE.ApplicationController.textLoadingDocument": "문서 로드 중", "DE.ApplicationController.textLoadingDocument": "문서 로드 중",
"DE.ApplicationController.textOf": "의", "DE.ApplicationController.textOf": "의",
"DE.ApplicationController.txtClose": "닫기", "DE.ApplicationController.txtClose": "닫기",
@ -24,6 +25,8 @@
"DE.ApplicationController.unsupportedBrowserErrorText": "사용중인 브라우저가 지원되지 않습니다.", "DE.ApplicationController.unsupportedBrowserErrorText": "사용중인 브라우저가 지원되지 않습니다.",
"DE.ApplicationController.waitText": "잠시만 기달려주세요...", "DE.ApplicationController.waitText": "잠시만 기달려주세요...",
"DE.ApplicationView.txtDownload": "다운로드 ", "DE.ApplicationView.txtDownload": "다운로드 ",
"DE.ApplicationView.txtDownloadDocx": "docx 형식으로 다운로드",
"DE.ApplicationView.txtDownloadPdf": "PDF형식으로 다운로드",
"DE.ApplicationView.txtEmbed": "개체 삽입", "DE.ApplicationView.txtEmbed": "개체 삽입",
"DE.ApplicationView.txtFullScreen": "전체 화면", "DE.ApplicationView.txtFullScreen": "전체 화면",
"DE.ApplicationView.txtShare": "공유" "DE.ApplicationView.txtShare": "공유"

View file

@ -11,20 +11,33 @@
"DE.ApplicationController.downloadTextText": "Document wordt gedownload...", "DE.ApplicationController.downloadTextText": "Document wordt gedownload...",
"DE.ApplicationController.errorAccessDeny": "U probeert een actie uit te voeren waarvoor u geen rechten hebt.<br>Neem contact op met de beheerder van de documentserver.", "DE.ApplicationController.errorAccessDeny": "U probeert een actie uit te voeren waarvoor u geen rechten hebt.<br>Neem contact op met de beheerder van de documentserver.",
"DE.ApplicationController.errorDefaultMessage": "Foutcode: %1", "DE.ApplicationController.errorDefaultMessage": "Foutcode: %1",
"DE.ApplicationController.errorEditingDownloadas": "Er is een fout ontstaan tijdens het werken met het document.<br>Gebruik de 'Opslaan als...' optie om het bestand als back-upkopie op te slaan op uw computer.",
"DE.ApplicationController.errorFilePassProtect": "Het bestand is beschermd met een wachtwoord en kan niet worden geopend.", "DE.ApplicationController.errorFilePassProtect": "Het bestand is beschermd met een wachtwoord en kan niet worden geopend.",
"DE.ApplicationController.errorFileSizeExceed": "De bestandsgrootte overschrijdt de limiet die is ingesteld voor uw server. <br>Neem contact op met uw Document Server-beheerder voor details.", "DE.ApplicationController.errorFileSizeExceed": "De bestandsgrootte overschrijdt de limiet die is ingesteld voor uw server. <br>Neem contact op met uw Document Server-beheerder voor details.",
"DE.ApplicationController.errorSubmit": "Verzenden mislukt. ",
"DE.ApplicationController.errorUpdateVersionOnDisconnect": "De internetverbinding is hersteld en de bestandsversie is gewijzigd. <br>Voordat u verder kunt werken, moet u het bestand downloaden of de inhoud kopiëren om er zeker van te zijn dat er niets verloren gaat, en deze pagina vervolgens opnieuw laden.", "DE.ApplicationController.errorUpdateVersionOnDisconnect": "De internetverbinding is hersteld en de bestandsversie is gewijzigd. <br>Voordat u verder kunt werken, moet u het bestand downloaden of de inhoud kopiëren om er zeker van te zijn dat er niets verloren gaat, en deze pagina vervolgens opnieuw laden.",
"DE.ApplicationController.errorUserDrop": "Toegang tot het bestand is op dit moment niet mogelijk.", "DE.ApplicationController.errorUserDrop": "Toegang tot het bestand is op dit moment niet mogelijk.",
"DE.ApplicationController.notcriticalErrorTitle": "Waarschuwing", "DE.ApplicationController.notcriticalErrorTitle": "Waarschuwing",
"DE.ApplicationController.scriptLoadError": "De verbinding is te langzaam, sommige componenten konden niet geladen worden. Laad de pagina opnieuw.", "DE.ApplicationController.scriptLoadError": "De verbinding is te langzaam, sommige componenten konden niet geladen worden. Laad de pagina opnieuw.",
"DE.ApplicationController.textAnonymous": "Anoniem",
"DE.ApplicationController.textClear": "Wis Alle Velden",
"DE.ApplicationController.textGotIt": "OK",
"DE.ApplicationController.textGuest": "Gast",
"DE.ApplicationController.textLoadingDocument": "Document wordt geladen", "DE.ApplicationController.textLoadingDocument": "Document wordt geladen",
"DE.ApplicationController.textNext": "Volgend veld ",
"DE.ApplicationController.textOf": "van", "DE.ApplicationController.textOf": "van",
"DE.ApplicationController.textRequired": "Vul alle verplichte velden in om het formulier te verzenden.",
"DE.ApplicationController.textSubmit": "Verzenden ",
"DE.ApplicationController.textSubmited": "<b>Formulier succesvol ingediend</b><br>Klik om de tip te sluiten",
"DE.ApplicationController.txtClose": "Sluiten", "DE.ApplicationController.txtClose": "Sluiten",
"DE.ApplicationController.unknownErrorText": "Onbekende fout.", "DE.ApplicationController.unknownErrorText": "Onbekende fout.",
"DE.ApplicationController.unsupportedBrowserErrorText": "Uw browser wordt niet ondersteund.", "DE.ApplicationController.unsupportedBrowserErrorText": "Uw browser wordt niet ondersteund.",
"DE.ApplicationController.waitText": "Een moment geduld", "DE.ApplicationController.waitText": "Een moment geduld",
"DE.ApplicationView.txtDownload": "Downloaden", "DE.ApplicationView.txtDownload": "Downloaden",
"DE.ApplicationView.txtDownloadDocx": "Downloaden als docx",
"DE.ApplicationView.txtDownloadPdf": "Downloaden als PDF",
"DE.ApplicationView.txtEmbed": "Invoegen", "DE.ApplicationView.txtEmbed": "Invoegen",
"DE.ApplicationView.txtFileLocation": "Open bestandslocatie",
"DE.ApplicationView.txtFullScreen": "Volledig scherm", "DE.ApplicationView.txtFullScreen": "Volledig scherm",
"DE.ApplicationView.txtPrint": "Afdrukken", "DE.ApplicationView.txtPrint": "Afdrukken",
"DE.ApplicationView.txtShare": "Delen" "DE.ApplicationView.txtShare": "Delen"

View file

@ -19,10 +19,14 @@
"DE.ApplicationController.errorUserDrop": "O arquivo não pode ser acessado agora.", "DE.ApplicationController.errorUserDrop": "O arquivo não pode ser acessado agora.",
"DE.ApplicationController.notcriticalErrorTitle": "Aviso", "DE.ApplicationController.notcriticalErrorTitle": "Aviso",
"DE.ApplicationController.scriptLoadError": "A conexão está muito lenta, e alguns dos componentes não puderam ser carregados. Por favor, recarregue a página.", "DE.ApplicationController.scriptLoadError": "A conexão está muito lenta, e alguns dos componentes não puderam ser carregados. Por favor, recarregue a página.",
"DE.ApplicationController.textAnonymous": "Anônimo",
"DE.ApplicationController.textClear": "Limpar todos os campos", "DE.ApplicationController.textClear": "Limpar todos os campos",
"DE.ApplicationController.textGotIt": "Entendi",
"DE.ApplicationController.textGuest": "Convidado(a)",
"DE.ApplicationController.textLoadingDocument": "Carregando documento", "DE.ApplicationController.textLoadingDocument": "Carregando documento",
"DE.ApplicationController.textNext": "Próximo campo", "DE.ApplicationController.textNext": "Próximo campo",
"DE.ApplicationController.textOf": "de", "DE.ApplicationController.textOf": "de",
"DE.ApplicationController.textRequired": "Preencha todos os campos obrigatórios para enviar o formulário.",
"DE.ApplicationController.textSubmit": "Enviar", "DE.ApplicationController.textSubmit": "Enviar",
"DE.ApplicationController.textSubmited": "<b>Formulário apresentado com sucesso</b>>br>Click para fechar a ponta", "DE.ApplicationController.textSubmited": "<b>Formulário apresentado com sucesso</b>>br>Click para fechar a ponta",
"DE.ApplicationController.txtClose": "Fechar", "DE.ApplicationController.txtClose": "Fechar",

View file

@ -11,20 +11,33 @@
"DE.ApplicationController.downloadTextText": "Descărcarea documentului...", "DE.ApplicationController.downloadTextText": "Descărcarea documentului...",
"DE.ApplicationController.errorAccessDeny": "Nu aveți dreptul să efectuați acțiunea pe care doriți.<br>Contactați administratorul dumneavoastră de Server Documente.", "DE.ApplicationController.errorAccessDeny": "Nu aveți dreptul să efectuați acțiunea pe care doriți.<br>Contactați administratorul dumneavoastră de Server Documente.",
"DE.ApplicationController.errorDefaultMessage": "Codul de eroare: %1", "DE.ApplicationController.errorDefaultMessage": "Codul de eroare: %1",
"DE.ApplicationController.errorEditingDownloadas": "S-a produs o eroare în timpul editării documentului.<br>Pentru copierea de rezervă pe PC utilizați opțiunea Descărcare ca...",
"DE.ApplicationController.errorFilePassProtect": "Fișierul este protejat cu parolă și deaceea nu poate fi deschis.", "DE.ApplicationController.errorFilePassProtect": "Fișierul este protejat cu parolă și deaceea nu poate fi deschis.",
"DE.ApplicationController.errorFileSizeExceed": "Dimensiunea fișierului depășește limita permisă de serverul Dvs.<br>Pentru detalii, contactați administratorul dumneavoastră de Server Documente.", "DE.ApplicationController.errorFileSizeExceed": "Dimensiunea fișierului depășește limita permisă de serverul Dvs.<br>Pentru detalii, contactați administratorul dumneavoastră de Server Documente.",
"DE.ApplicationController.errorSubmit": "Remiterea eșuată.",
"DE.ApplicationController.errorUpdateVersionOnDisconnect": "Conexiunea la Internet s-a restabilit și versiunea fișierului s-a schimbat.<br>Înainte de a continua, fișierul trebuie descărcat sau conținutul fișierului copiat ca să vă asigurați că nimic nu e pierdut, apoi reîmprospătați această pagină.", "DE.ApplicationController.errorUpdateVersionOnDisconnect": "Conexiunea la Internet s-a restabilit și versiunea fișierului s-a schimbat.<br>Înainte de a continua, fișierul trebuie descărcat sau conținutul fișierului copiat ca să vă asigurați că nimic nu e pierdut, apoi reîmprospătați această pagină.",
"DE.ApplicationController.errorUserDrop": "Fișierul nu poate fi accesat deocamdată.", "DE.ApplicationController.errorUserDrop": "Fișierul nu poate fi accesat deocamdată.",
"DE.ApplicationController.notcriticalErrorTitle": "Avertisment", "DE.ApplicationController.notcriticalErrorTitle": "Avertisment",
"DE.ApplicationController.scriptLoadError": "Conexeunea e prea lentă și unele elemente nu se încarcă. Încercați să reîmprospătati pagina.", "DE.ApplicationController.scriptLoadError": "Conexeunea e prea lentă și unele elemente nu se încarcă. Încercați să reîmprospătati pagina.",
"DE.ApplicationController.textAnonymous": "Anonim",
"DE.ApplicationController.textClear": "Goleşte toate câmpurile",
"DE.ApplicationController.textGotIt": "Am înțeles",
"DE.ApplicationController.textGuest": "Invitat",
"DE.ApplicationController.textLoadingDocument": "Încărcare document", "DE.ApplicationController.textLoadingDocument": "Încărcare document",
"DE.ApplicationController.textNext": "Câmpul următor",
"DE.ApplicationController.textOf": "din", "DE.ApplicationController.textOf": "din",
"DE.ApplicationController.textRequired": "Toate câmpurile din formular trebuie completate înainte de a-l trimite.",
"DE.ApplicationController.textSubmit": "Remitere",
"DE.ApplicationController.textSubmited": "<b>Formularul a fost remis cu succes</b><br>Faceţi clic pentru a închide sfatul",
"DE.ApplicationController.txtClose": "Închidere", "DE.ApplicationController.txtClose": "Închidere",
"DE.ApplicationController.unknownErrorText": "Eroare Necunoscut.", "DE.ApplicationController.unknownErrorText": "Eroare necunoscută.",
"DE.ApplicationController.unsupportedBrowserErrorText": "Browserul nu este compatibil.", "DE.ApplicationController.unsupportedBrowserErrorText": "Browserul nu este compatibil.",
"DE.ApplicationController.waitText": "Vă rugăm să așteptați...", "DE.ApplicationController.waitText": "Vă rugăm să așteptați...",
"DE.ApplicationView.txtDownload": "Descărcare", "DE.ApplicationView.txtDownload": "Descărcare",
"DE.ApplicationView.txtDownloadDocx": "Descărcare ca docx",
"DE.ApplicationView.txtDownloadPdf": "Descărcare ca pdf",
"DE.ApplicationView.txtEmbed": "Încorporare", "DE.ApplicationView.txtEmbed": "Încorporare",
"DE.ApplicationView.txtFileLocation": "Deschidere locația fișierului",
"DE.ApplicationView.txtFullScreen": "Ecran complet", "DE.ApplicationView.txtFullScreen": "Ecran complet",
"DE.ApplicationView.txtPrint": "Imprimare", "DE.ApplicationView.txtPrint": "Imprimare",
"DE.ApplicationView.txtShare": "Partajează" "DE.ApplicationView.txtShare": "Partajează"

View file

@ -30,6 +30,7 @@
"DE.ApplicationController.textSubmit": "Отправить", "DE.ApplicationController.textSubmit": "Отправить",
"DE.ApplicationController.textSubmited": "<b>Форма успешно отправлена</b><br>Нажмите, чтобы закрыть подсказку", "DE.ApplicationController.textSubmited": "<b>Форма успешно отправлена</b><br>Нажмите, чтобы закрыть подсказку",
"DE.ApplicationController.txtClose": "Закрыть", "DE.ApplicationController.txtClose": "Закрыть",
"DE.ApplicationController.txtPressLink": "Нажмите Ctrl и щелкните по ссылке",
"DE.ApplicationController.unknownErrorText": "Неизвестная ошибка.", "DE.ApplicationController.unknownErrorText": "Неизвестная ошибка.",
"DE.ApplicationController.unsupportedBrowserErrorText": "Ваш браузер не поддерживается.", "DE.ApplicationController.unsupportedBrowserErrorText": "Ваш браузер не поддерживается.",
"DE.ApplicationController.waitText": "Пожалуйста, подождите...", "DE.ApplicationController.waitText": "Пожалуйста, подождите...",

View file

@ -11,20 +11,33 @@
"DE.ApplicationController.downloadTextText": "Laddar ner dokumentet...", "DE.ApplicationController.downloadTextText": "Laddar ner dokumentet...",
"DE.ApplicationController.errorAccessDeny": "Du försöker utföra en åtgärd som du inte har rättighet till.<br>Vänligen kontakta din systemadministratör.", "DE.ApplicationController.errorAccessDeny": "Du försöker utföra en åtgärd som du inte har rättighet till.<br>Vänligen kontakta din systemadministratör.",
"DE.ApplicationController.errorDefaultMessage": "Felkod: %1", "DE.ApplicationController.errorDefaultMessage": "Felkod: %1",
"DE.ApplicationController.errorEditingDownloadas": "Ett fel har inträffat.<br>Använd \"Ladda ned som...\" för att spara en säkerhetskopia på din dator.",
"DE.ApplicationController.errorFilePassProtect": "Dokumentet är lösenordsskyddat och kunde inte öppnas. ", "DE.ApplicationController.errorFilePassProtect": "Dokumentet är lösenordsskyddat och kunde inte öppnas. ",
"DE.ApplicationController.errorFileSizeExceed": "Filstorleken överskrider gränsen för din server.<br>Var snäll och kontakta administratören för dokumentservern för mer information.", "DE.ApplicationController.errorFileSizeExceed": "Filstorleken överskrider gränsen för din server.<br>Var snäll och kontakta administratören för dokumentservern för mer information.",
"DE.ApplicationController.errorSubmit": "Gick ej att verkställa.",
"DE.ApplicationController.errorUpdateVersionOnDisconnect": "Internetanslutningen har återställts och filversionen har ändrats.<br>Innan du fortsätter arbeta, ladda ner filen eller kopiera innehållet för att försäkra dig om att inte förlora något, ladda sedan om denna sida.", "DE.ApplicationController.errorUpdateVersionOnDisconnect": "Internetanslutningen har återställts och filversionen har ändrats.<br>Innan du fortsätter arbeta, ladda ner filen eller kopiera innehållet för att försäkra dig om att inte förlora något, ladda sedan om denna sida.",
"DE.ApplicationController.errorUserDrop": "Filen kan inte nås för tillfället. ", "DE.ApplicationController.errorUserDrop": "Filen kan inte nås för tillfället. ",
"DE.ApplicationController.notcriticalErrorTitle": "Varning", "DE.ApplicationController.notcriticalErrorTitle": "Varning",
"DE.ApplicationController.scriptLoadError": "Anslutningen är för långsam, vissa av komponenterna kunde inte laddas. Vänligen ladda om sidan.", "DE.ApplicationController.scriptLoadError": "Anslutningen är för långsam, vissa av komponenterna kunde inte laddas. Vänligen ladda om sidan.",
"DE.ApplicationController.textAnonymous": "Anonym",
"DE.ApplicationController.textClear": "Rensa fält",
"DE.ApplicationController.textGotIt": "Ok!",
"DE.ApplicationController.textGuest": "Gäst",
"DE.ApplicationController.textLoadingDocument": "Laddar dokument", "DE.ApplicationController.textLoadingDocument": "Laddar dokument",
"DE.ApplicationController.textNext": "Nästa fält",
"DE.ApplicationController.textOf": "av", "DE.ApplicationController.textOf": "av",
"DE.ApplicationController.textRequired": "Fyll i alla fält för att skicka formulär.",
"DE.ApplicationController.textSubmit": "Verkställ",
"DE.ApplicationController.textSubmited": "<b> Formulär skickat </b> <br> Klicka för att stänga tipset",
"DE.ApplicationController.txtClose": "Stäng", "DE.ApplicationController.txtClose": "Stäng",
"DE.ApplicationController.unknownErrorText": "Okänt fel.", "DE.ApplicationController.unknownErrorText": "Okänt fel.",
"DE.ApplicationController.unsupportedBrowserErrorText": "Din webbläsare stöds ej.", "DE.ApplicationController.unsupportedBrowserErrorText": "Din webbläsare stöds ej.",
"DE.ApplicationController.waitText": "Var snäll och vänta...", "DE.ApplicationController.waitText": "Var snäll och vänta...",
"DE.ApplicationView.txtDownload": "Ladda ner", "DE.ApplicationView.txtDownload": "Ladda ner",
"DE.ApplicationView.txtDownloadDocx": "Ladda ner som docx",
"DE.ApplicationView.txtDownloadPdf": "Ladda ner som pdf",
"DE.ApplicationView.txtEmbed": "Inbädda", "DE.ApplicationView.txtEmbed": "Inbädda",
"DE.ApplicationView.txtFileLocation": "Gå till filens plats",
"DE.ApplicationView.txtFullScreen": "Fullskärm", "DE.ApplicationView.txtFullScreen": "Fullskärm",
"DE.ApplicationView.txtPrint": "Skriva ut", "DE.ApplicationView.txtPrint": "Skriva ut",
"DE.ApplicationView.txtShare": "Dela" "DE.ApplicationView.txtShare": "Dela"

View file

@ -19,10 +19,14 @@
"DE.ApplicationController.errorUserDrop": "该文件现在无法访问。", "DE.ApplicationController.errorUserDrop": "该文件现在无法访问。",
"DE.ApplicationController.notcriticalErrorTitle": "警告", "DE.ApplicationController.notcriticalErrorTitle": "警告",
"DE.ApplicationController.scriptLoadError": "连接速度过慢,部分组件无法被加载。请重新加载页面。", "DE.ApplicationController.scriptLoadError": "连接速度过慢,部分组件无法被加载。请重新加载页面。",
"DE.ApplicationController.textAnonymous": "匿名",
"DE.ApplicationController.textClear": "清除所有字段", "DE.ApplicationController.textClear": "清除所有字段",
"DE.ApplicationController.textGotIt": "知道了",
"DE.ApplicationController.textGuest": "访客",
"DE.ApplicationController.textLoadingDocument": "文件加载中…", "DE.ApplicationController.textLoadingDocument": "文件加载中…",
"DE.ApplicationController.textNext": "下一域", "DE.ApplicationController.textNext": "下一域",
"DE.ApplicationController.textOf": "的", "DE.ApplicationController.textOf": "的",
"DE.ApplicationController.textRequired": "要发送表单,请填写所有必填项目。",
"DE.ApplicationController.textSubmit": "提交", "DE.ApplicationController.textSubmit": "提交",
"DE.ApplicationController.textSubmited": "<b>表单成功地被提交了</b><br>点击以关闭贴士", "DE.ApplicationController.textSubmited": "<b>表单成功地被提交了</b><br>点击以关闭贴士",
"DE.ApplicationController.txtClose": "关闭", "DE.ApplicationController.txtClose": "关闭",

View file

@ -194,6 +194,7 @@ define([
this.disableEditing(state); this.disableEditing(state);
this.api.asc_setRestriction(state ? Asc.c_oAscRestrictionType.OnlyForms : Asc.c_oAscRestrictionType.None); this.api.asc_setRestriction(state ? Asc.c_oAscRestrictionType.OnlyForms : Asc.c_oAscRestrictionType.None);
this.api.asc_SetPerformContentControlActionByClick(state); this.api.asc_SetPerformContentControlActionByClick(state);
this.api.asc_SetHighlightRequiredFields(state);
} }
Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.NotificationCenter.trigger('edit:complete', this.toolbar);
}, },

View file

@ -155,7 +155,8 @@ define([
var collection = this.getApplication().getCollection('Common.Collections.Comments'), var collection = this.getApplication().getCollection('Common.Collections.Comments'),
resolved = Common.Utils.InternalSettings.get("de-settings-resolvedcomment"); resolved = Common.Utils.InternalSettings.get("de-settings-resolvedcomment");
for (var i = 0; i < collection.length; ++i) { for (var i = 0; i < collection.length; ++i) {
if (collection.at(i).get('userid') !== this.mode.user.id && (resolved || !collection.at(i).get('resolved'))) { var comment = collection.at(i);
if (!comment.get('hide') && comment.get('userid') !== this.mode.user.id && (resolved || !comment.get('resolved'))) {
this.leftMenu.markCoauthOptions('comments', true); this.leftMenu.markCoauthOptions('comments', true);
break; break;
} }
@ -397,7 +398,7 @@ define([
} }
}, },
onDownloadUrl: function(url) { onDownloadUrl: function(url, fileType) {
if (this.isFromFileDownloadAs) { if (this.isFromFileDownloadAs) {
var me = this, var me = this,
defFileName = this.getApplication().getController('Viewport').getView('Common.Views.Header').getDocumentCaption(); defFileName = this.getApplication().getController('Viewport').getView('Common.Views.Header').getDocumentCaption();
@ -410,7 +411,7 @@ define([
} }
if (me.mode.canRequestSaveAs) { if (me.mode.canRequestSaveAs) {
Common.Gateway.requestSaveAs(url, defFileName); Common.Gateway.requestSaveAs(url, defFileName, fileType);
} else { } else {
me._saveCopyDlg = new Common.Views.SaveAsDlg({ me._saveCopyDlg = new Common.Views.SaveAsDlg({
saveFolderUrl: me.mode.saveAsUrl, saveFolderUrl: me.mode.saveAsUrl,
@ -698,14 +699,14 @@ define([
onApiAddComment: function(id, data) { onApiAddComment: function(id, data) {
var resolved = Common.Utils.InternalSettings.get("de-settings-resolvedcomment"); var resolved = Common.Utils.InternalSettings.get("de-settings-resolvedcomment");
if (data && data.asc_getUserId() !== this.mode.user.id && (resolved || !data.asc_getSolved())) if (data && data.asc_getUserId() !== this.mode.user.id && (resolved || !data.asc_getSolved()) && AscCommon.UserInfoParser.canViewComment(data.asc_getUserName()))
this.leftMenu.markCoauthOptions('comments'); this.leftMenu.markCoauthOptions('comments');
}, },
onApiAddComments: function(data) { onApiAddComments: function(data) {
var resolved = Common.Utils.InternalSettings.get("de-settings-resolvedcomment"); var resolved = Common.Utils.InternalSettings.get("de-settings-resolvedcomment");
for (var i = 0; i < data.length; ++i) { for (var i = 0; i < data.length; ++i) {
if (data[i].asc_getUserId() !== this.mode.user.id && (resolved || !data[i].asc_getSolved())) { if (data[i].asc_getUserId() !== this.mode.user.id && (resolved || !data[i].asc_getSolved()) && AscCommon.UserInfoParser.canViewComment(data.asc_getUserName())) {
this.leftMenu.markCoauthOptions('comments'); this.leftMenu.markCoauthOptions('comments');
break; break;
} }

View file

@ -535,6 +535,7 @@ define([
var _format = (format && (typeof format == 'string')) ? Asc.c_oAscFileType[ format.toUpperCase() ] : null, var _format = (format && (typeof format == 'string')) ? Asc.c_oAscFileType[ format.toUpperCase() ] : null,
_supported = [ _supported = [
Asc.c_oAscFileType.TXT, Asc.c_oAscFileType.TXT,
Asc.c_oAscFileType.RTF,
Asc.c_oAscFileType.ODT, Asc.c_oAscFileType.ODT,
Asc.c_oAscFileType.DOCX, Asc.c_oAscFileType.DOCX,
Asc.c_oAscFileType.HTML, Asc.c_oAscFileType.HTML,
@ -543,7 +544,8 @@ define([
Asc.c_oAscFileType.DOTX, Asc.c_oAscFileType.DOTX,
Asc.c_oAscFileType.OTT, Asc.c_oAscFileType.OTT,
Asc.c_oAscFileType.FB2, Asc.c_oAscFileType.FB2,
Asc.c_oAscFileType.EPUB Asc.c_oAscFileType.EPUB,
Asc.c_oAscFileType.DOCM
]; ];
if ( !_format || _supported.indexOf(_format) < 0 ) if ( !_format || _supported.indexOf(_format) < 0 )
@ -629,7 +631,8 @@ define([
selected: (opts.data.currentVersion == version.version), selected: (opts.data.currentVersion == version.version),
canRestore: this.appOptions.canHistoryRestore && (ver < versions.length-1), canRestore: this.appOptions.canHistoryRestore && (ver < versions.length-1),
isExpanded: true, isExpanded: true,
serverVersion: version.serverVersion serverVersion: version.serverVersion,
fileType: 'docx'
})); }));
if (opts.data.currentVersion == version.version) { if (opts.data.currentVersion == version.version) {
currentVersion = arrVersions[arrVersions.length-1]; currentVersion = arrVersions[arrVersions.length-1];
@ -679,7 +682,8 @@ define([
canRestore: this.appOptions.canHistoryRestore && this.appOptions.canDownload, canRestore: this.appOptions.canHistoryRestore && this.appOptions.canDownload,
isRevision: false, isRevision: false,
isVisible: true, isVisible: true,
serverVersion: version.serverVersion serverVersion: version.serverVersion,
fileType: 'docx'
})); }));
arrColors.push(user.get('colorval')); arrColors.push(user.get('colorval'));
} }
@ -1045,7 +1049,7 @@ define([
this.loadMask.setTitle(title); this.loadMask.setTitle(title);
if (!this.isShowOpenDialog) if (!this.isShowOpenDialog)
this.loadMask.show(); this.loadMask.show(action.id===Asc.c_oAscAsyncAction['Open']);
} else { } else {
this.getApplication().getController('Statusbar').setStatusCaption(text, force); this.getApplication().getController('Statusbar').setStatusCaption(text, force);
} }
@ -1395,6 +1399,15 @@ define([
if (this.permissions.editCommentAuthorOnly===undefined && this.permissions.deleteCommentAuthorOnly===undefined) if (this.permissions.editCommentAuthorOnly===undefined && this.permissions.deleteCommentAuthorOnly===undefined)
this.appOptions.canEditComments = this.appOptions.canDeleteComments = this.appOptions.isOffline; this.appOptions.canEditComments = this.appOptions.canDeleteComments = this.appOptions.isOffline;
} }
if (typeof (this.editorConfig.customization) == 'object') {
if (this.editorConfig.customization.showReviewChanges!==undefined)
console.log("Obsolete: The 'showReviewChanges' parameter of the 'customization' section is deprecated. Please use 'showReviewChanges' parameter in the 'customization.review' section instead.");
if (this.editorConfig.customization.reviewDisplay!==undefined)
console.log("Obsolete: The 'reviewDisplay' parameter of the 'customization' section is deprecated. Please use 'reviewDisplay' parameter in the 'customization.review' section instead.");
if (this.editorConfig.customization.trackChanges!==undefined)
console.log("Obsolete: The 'trackChanges' parameter of the 'customization' section is deprecated. Please use 'trackChanges' parameter in the 'customization.review' section instead.");
}
this.appOptions.trialMode = params.asc_getLicenseMode(); this.appOptions.trialMode = params.asc_getLicenseMode();
this.appOptions.isBeta = params.asc_getIsBeta(); this.appOptions.isBeta = params.asc_getIsBeta();
this.appOptions.isSignatureSupport= this.appOptions.isEdit && this.appOptions.isDesktopApp && this.appOptions.isOffline && this.api.asc_isSignaturesSupport(); this.appOptions.isSignatureSupport= this.appOptions.isEdit && this.appOptions.isDesktopApp && this.appOptions.isOffline && this.api.asc_isSignaturesSupport();
@ -1464,6 +1477,7 @@ define([
this.api.asc_setViewMode(!this.appOptions.isEdit && !this.appOptions.isRestrictedEdit); this.api.asc_setViewMode(!this.appOptions.isEdit && !this.appOptions.isRestrictedEdit);
this.appOptions.isRestrictedEdit && this.appOptions.canComments && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyComments); this.appOptions.isRestrictedEdit && this.appOptions.canComments && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyComments);
this.appOptions.isRestrictedEdit && this.appOptions.canFillForms && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyForms); this.appOptions.isRestrictedEdit && this.appOptions.canFillForms && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyForms);
this.appOptions.isRestrictedEdit && this.appOptions.canFillForms && this.api.asc_SetHighlightRequiredFields(true);
this.api.asc_LoadDocument(); this.api.asc_LoadDocument();
}, },
@ -2039,9 +2053,10 @@ define([
}); });
}, },
onDownloadUrl: function(url) { onDownloadUrl: function(url, fileType) {
if (this._state.isFromGatewayDownloadAs) if (this._state.isFromGatewayDownloadAs) {
Common.Gateway.downloadAs(url); Common.Gateway.downloadAs(url, fileType);
}
this._state.isFromGatewayDownloadAs = false; this._state.isFromGatewayDownloadAs = false;
}, },

View file

@ -144,7 +144,9 @@ define([
} }
var trackRevisions = me.api.asc_IsTrackRevisions(), var trackRevisions = me.api.asc_IsTrackRevisions(),
trackChanges = typeof (config.customization) == 'object' ? config.customization.trackChanges : undefined; trackChanges = config.customization && config.customization.review ? config.customization.review.trackChanges : undefined;
(trackChanges===undefined) && (trackChanges = config.customization ? config.customization.trackChanges : undefined);
if ( config.isReviewOnly || trackChanges===true || (trackChanges!==false) && trackRevisions) { if ( config.isReviewOnly || trackChanges===true || (trackChanges!==false) && trackRevisions) {
_process_changestip(); _process_changestip();
} else if ( trackRevisions ) { } else if ( trackRevisions ) {

View file

@ -158,7 +158,8 @@ define([
Asc.c_oAscFileType.DOTX, Asc.c_oAscFileType.DOTX,
Asc.c_oAscFileType.OTT, Asc.c_oAscFileType.OTT,
Asc.c_oAscFileType.FB2, Asc.c_oAscFileType.FB2,
Asc.c_oAscFileType.EPUB Asc.c_oAscFileType.EPUB,
Asc.c_oAscFileType.DOCM
]; ];
if ( !_format || _supported.indexOf(_format) < 0 ) if ( !_format || _supported.indexOf(_format) < 0 )
@ -321,6 +322,7 @@ define([
toolbar.btnShowHidenChars.on('toggle', _.bind(this.onNonPrintingToggle, this)); toolbar.btnShowHidenChars.on('toggle', _.bind(this.onNonPrintingToggle, this));
toolbar.mnuTablePicker.on('select', _.bind(this.onTablePickerSelect, this)); toolbar.mnuTablePicker.on('select', _.bind(this.onTablePickerSelect, this));
toolbar.mnuInsertTable.on('item:click', _.bind(this.onInsertTableClick, this)); toolbar.mnuInsertTable.on('item:click', _.bind(this.onInsertTableClick, this));
toolbar.mnuInsertTable.on('show:after', _.bind(this.onInsertTableShow, this));
toolbar.mnuInsertImage.on('item:click', _.bind(this.onInsertImageClick, this)); toolbar.mnuInsertImage.on('item:click', _.bind(this.onInsertImageClick, this));
toolbar.btnInsertText.on('click', _.bind(this.onBtnInsertTextClick, this)); toolbar.btnInsertText.on('click', _.bind(this.onBtnInsertTextClick, this));
toolbar.btnInsertShape.menu.on('hide:after', _.bind(this.onInsertShapeHide, this)); toolbar.btnInsertShape.menu.on('hide:after', _.bind(this.onInsertShapeHide, this));
@ -1523,6 +1525,11 @@ define([
Common.component.Analytics.trackEvent('ToolBar', 'Table'); Common.component.Analytics.trackEvent('ToolBar', 'Table');
}, },
onInsertTableShow: function(menu) {
var selected = this.api.asc_GetSelectedText();
menu.items[4].setDisabled(!selected || selected.length<1);
},
onInsertTableClick: function(menu, item, e) { onInsertTableClick: function(menu, item, e) {
var me = this; var me = this;
if (item.value === 'custom') { if (item.value === 'custom') {

View file

@ -153,6 +153,8 @@ define([
Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this)); Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this));
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this)); Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
Common.NotificationCenter.on('uitheme:changed', this.onThemeChanged.bind(this));
Common.NotificationCenter.on('contenttheme:dark', this.onContentThemeChangedToDark.bind(this));
}, },
onAppShowed: function (config) { onAppShowed: function (config) {
@ -248,6 +250,13 @@ define([
if (!config.isEdit) if (!config.isEdit)
mnuitemHideRulers.hide(); mnuitemHideRulers.hide();
me.header.menuItemsDarkMode = new Common.UI.MenuItem({
caption: 'Dark mode',
checkable: true,
checked: Common.UI.Themes.isContentThemeDark(),
value: 'mode:dark'
});
me.header.mnuitemFitPage = new Common.UI.MenuItem({ me.header.mnuitemFitPage = new Common.UI.MenuItem({
caption: me.textFitPage, caption: me.textFitPage,
checkable: true, checkable: true,
@ -286,6 +295,8 @@ define([
mnuitemHideStatusBar, mnuitemHideStatusBar,
mnuitemHideRulers, mnuitemHideRulers,
{caption:'--'}, {caption:'--'},
me.header.menuItemsDarkMode,
{caption:'--'},
me.header.mnuitemFitPage, me.header.mnuitemFitPage,
me.header.mnuitemFitWidth, me.header.mnuitemFitWidth,
me.header.mnuZoom, me.header.mnuZoom,
@ -314,6 +325,10 @@ define([
})).on('click', _on_btn_zoom.bind(me, 'up')); })).on('click', _on_btn_zoom.bind(me, 'up'));
me.header.btnOptions.menu.on('item:click', me.onOptionsItemClick.bind(this)); me.header.btnOptions.menu.on('item:click', me.onOptionsItemClick.bind(this));
if ( !Common.UI.Themes.isDarkTheme() ) {
me.header.menuItemsDarkMode.hide();
me.header.menuItemsDarkMode.$el.prev('.divider').hide();
}
} }
}, },
@ -354,6 +369,20 @@ define([
this.api.Resize(); this.api.Resize();
}, },
onThemeChanged: function (id) {
var current_dark = Common.UI.Themes.isDarkTheme();
var menuItem = this.header.menuItemsDarkMode;
menuItem.setVisible(current_dark);
menuItem.$el.prev('.divider')[current_dark ? 'show' : 'hide']();
menuItem.setChecked(current_dark);
this.header.btnContentMode.setVisible(current_dark);
},
onContentThemeChangedToDark: function (isdark) {
this.header.menuItemsDarkMode.setChecked(isdark, true);
},
onWindowResize: function(e) { onWindowResize: function(e) {
this.onLayoutChanged('window'); this.onLayoutChanged('window');
Common.NotificationCenter.trigger('window:resize'); Common.NotificationCenter.trigger('window:resize');
@ -400,6 +429,7 @@ define([
Common.NotificationCenter.trigger('edit:complete', me.header); Common.NotificationCenter.trigger('edit:complete', me.header);
break; break;
case 'advanced': me.header.fireEvent('file:settings', me.header); break; case 'advanced': me.header.fireEvent('file:settings', me.header); break;
case 'mode:dark': Common.UI.Themes.toggleContentTheme(); break;
} }
}, },

View file

@ -83,6 +83,22 @@
<div id="form-chb-aspect"></div> <div id="form-chb-aspect"></div>
</td> </td>
</tr> </tr>
<tr class="form-image">
<td class="padding-large">
<div id="form-cnt-position" style="width: 100%;">
<div class="row">
<div id="form-img-position-preview">
<div id="form-img-example"><%= scope.textImage %></div>
</div>
<div id="form-img-slider-position-y"></div>
</div>
<div class="row">
<div id="form-img-slider-position-x"></div>
<label id="form-img-slider-value"></label>
</div>
</div>
</td>
</tr>
<tr class="form-image"> <tr class="form-image">
<td class="padding-large"> <td class="padding-large">
<div id="form-button-replace" style="width:100%;"></div> <div id="form-button-replace" style="width:100%;"></div>

View file

@ -1,7 +1,7 @@
<div class="statusbar" style="display:table;"> <div class="statusbar" style="display:table;">
<div class="status-group dropup"> <div class="status-group dropup">
<label id="label-pages" class="status-label dropdown-toggle" style="margin-left: 40px;" data-toggle="dropdown"><%= textPageNumber %></label> <label id="label-pages" class="status-label dropdown-toggle" style="margin-left: 40px;" data-toggle="dropdown" data-hint="0" data-hint-direction="top"><%= textPageNumber %></label>
<div id="status-goto-box" class="dropdown-menu"> <div id="status-goto-box" class="dropdown-menu">
<label style="float:left;line-height:22px;"><%= textGotoPage %></label> <label style="float:left;line-height:22px;"><%= textGotoPage %></label>
<div id="status-goto-page" style="display:inline-block;"></div> <div id="status-goto-page" style="display:inline-block;"></div>

View file

@ -204,8 +204,8 @@ define([ 'text!documenteditor/main/app/template/ControlSettingsDialog.template',
this.btnDown.on('click', _.bind(this.onMoveItem, this, false)); this.btnDown.on('click', _.bind(this.onMoveItem, this, false));
// date picker // date picker
var data = [{ value: 0x042C }, { value: 0x0402 }, { value: 0x0405 }, { value: 0x0407 }, {value: 0x0807}, { value: 0x0408 }, { value: 0x0C09 }, { value: 0x0809 }, { value: 0x0409 }, { value: 0x0C0A }, { value: 0x080A }, var data = [{ value: 0x042C }, { value: 0x0402 }, { value: 0x0405 }, { value: 0x0C07 }, { value: 0x0407 }, {value: 0x0807}, { value: 0x0408 }, { value: 0x0C09 }, { value: 0x0809 }, { value: 0x0409 }, { value: 0x0C0A }, { value: 0x080A },
{ value: 0x040B }, { value: 0x040C }, { value: 0x0410 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { value: 0x0413 }, { value: 0x0415 }, { value: 0x0416 }, { value: 0x040B }, { value: 0x040C }, { value: 0x0410 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { value: 0x040E }, { value: 0x0413 }, { value: 0x0415 }, { value: 0x0416 },
{ value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }]; { value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }];
data.forEach(function(item) { data.forEach(function(item) {
var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value); var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value);

View file

@ -88,8 +88,8 @@ define([
render: function () { render: function () {
Common.UI.Window.prototype.render.call(this); 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 }, var data = [{ value: 0x042C }, { value: 0x0402 }, { value: 0x0405 }, { value: 0x0C07 }, { value: 0x0407 }, {value: 0x0807}, { value: 0x0408 }, { value: 0x0C09 }, { value: 0x0809 }, { value: 0x0409 }, { value: 0x0C0A }, { value: 0x080A },
{ value: 0x040B }, { value: 0x040C }, { value: 0x0410 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { value: 0x0413 }, { value: 0x0415 }, { value: 0x0416 }, { value: 0x040B }, { value: 0x040C }, { value: 0x0410 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { value: 0x040E }, { value: 0x0413 }, { value: 0x0415 }, { value: 0x0416 },
{ value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }]; { value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }];
data.forEach(function(item) { data.forEach(function(item) {
var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value); var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value);

View file

@ -403,12 +403,12 @@ define([
} }
if (this.mode.canDownload) { if (this.mode.canDownload) {
!this.panels['saveas'] && (this.panels['saveas'] = ((new DE.Views.FileMenuPanels.ViewSaveAs({menu: this})).render())); !this.panels['saveas'] && (this.panels['saveas'] = ((new DE.Views.FileMenuPanels.ViewSaveAs({menu: this, fileType: this.document.fileType})).render()));
} else if (this.mode.canDownloadOrigin) } else if (this.mode.canDownloadOrigin)
$('a',this.miDownload.$el).text(this.textDownload); $('a',this.miDownload.$el).text(this.textDownload);
if (this.mode.canDownload && (this.mode.canRequestSaveAs || this.mode.saveAsUrl)) { if (this.mode.canDownload && (this.mode.canRequestSaveAs || this.mode.saveAsUrl)) {
!this.panels['save-copy'] && (this.panels['save-copy'] = ((new DE.Views.FileMenuPanels.ViewSaveCopy({menu: this})).render())); !this.panels['save-copy'] && (this.panels['save-copy'] = ((new DE.Views.FileMenuPanels.ViewSaveCopy({menu: this, fileType: this.document.fileType})).render()));
} }
if (this.mode.canHelp && !this.panels['help']) { if (this.mode.canHelp && !this.panels['help']) {

View file

@ -63,6 +63,7 @@ define([
{name: 'OTT', imgCls: 'ott', type: Asc.c_oAscFileType.OTT}, {name: 'OTT', imgCls: 'ott', type: Asc.c_oAscFileType.OTT},
{name: 'RTF', imgCls: 'rtf', type: Asc.c_oAscFileType.RTF} {name: 'RTF', imgCls: 'rtf', type: Asc.c_oAscFileType.RTF}
],[ ],[
{name: 'DOCM', imgCls: 'docm', type: Asc.c_oAscFileType.DOCM},
{name: 'HTML (Zipped)', imgCls: 'html', type: Asc.c_oAscFileType.HTML}, {name: 'HTML (Zipped)', imgCls: 'html', type: Asc.c_oAscFileType.HTML},
{name: 'FB2', imgCls: 'fb2', type: Asc.c_oAscFileType.FB2}, {name: 'FB2', imgCls: 'fb2', type: Asc.c_oAscFileType.FB2},
{name: 'EPUB', imgCls: 'epub', type: Asc.c_oAscFileType.EPUB} {name: 'EPUB', imgCls: 'epub', type: Asc.c_oAscFileType.EPUB}
@ -74,9 +75,11 @@ define([
'<% _.each(rows, function(row) { %>', '<% _.each(rows, function(row) { %>',
'<tr>', '<tr>',
'<% _.each(row, function(item) { %>', '<% _.each(row, function(item) { %>',
'<% if (item.type!==Asc.c_oAscFileType.DOCM || fileType=="docm") { %>',
'<td><div><svg class="btn-doc-format" format="<%= item.type %>" data-hint="2" data-hint-direction="left-top" data-hint-offset="4, 4">', '<td><div><svg class="btn-doc-format" format="<%= item.type %>" data-hint="2" data-hint-direction="left-top" data-hint-offset="4, 4">',
'<use xlink:href="#svg-format-<%= item.imgCls %>"></use>', '<use xlink:href="#svg-format-<%= item.imgCls %>"></use>',
'</svg></div></td>', '</svg></div></td>',
'<% } %>',
'<% }) %>', '<% }) %>',
'</tr>', '</tr>',
'<% }) %>', '<% }) %>',
@ -87,10 +90,11 @@ define([
Common.UI.BaseView.prototype.initialize.call(this,arguments); Common.UI.BaseView.prototype.initialize.call(this,arguments);
this.menu = options.menu; this.menu = options.menu;
this.fileType = options.fileType;
}, },
render: function() { render: function() {
this.$el.html(this.template({rows:this.formats})); this.$el.html(this.template({rows:this.formats, fileType: (this.fileType || 'docx').toLowerCase()}));
$('.btn-doc-format',this.el).on('click', _.bind(this.onFormatClick,this)); $('.btn-doc-format',this.el).on('click', _.bind(this.onFormatClick,this));
if (_.isUndefined(this.scroller)) { if (_.isUndefined(this.scroller)) {
@ -132,6 +136,7 @@ define([
{name: 'OTT', imgCls: 'ott', type: Asc.c_oAscFileType.OTT, ext: '.ott'}, {name: 'OTT', imgCls: 'ott', type: Asc.c_oAscFileType.OTT, ext: '.ott'},
{name: 'RTF', imgCls: 'rtf', type: Asc.c_oAscFileType.RTF, ext: '.rtf'} {name: 'RTF', imgCls: 'rtf', type: Asc.c_oAscFileType.RTF, ext: '.rtf'}
],[ ],[
{name: 'DOCM', imgCls: 'docm', type: Asc.c_oAscFileType.DOCM, ext: '.docm'},
{name: 'HTML (Zipped)', imgCls: 'html', type: Asc.c_oAscFileType.HTML, ext: '.html'}, {name: 'HTML (Zipped)', imgCls: 'html', type: Asc.c_oAscFileType.HTML, ext: '.html'},
{name: 'FB2', imgCls: 'fb2', type: Asc.c_oAscFileType.FB2, ext: '.fb2'}, {name: 'FB2', imgCls: 'fb2', type: Asc.c_oAscFileType.FB2, ext: '.fb2'},
{name: 'EPUB', imgCls: 'epub', type: Asc.c_oAscFileType.EPUB, ext: '.epub'} {name: 'EPUB', imgCls: 'epub', type: Asc.c_oAscFileType.EPUB, ext: '.epub'}
@ -143,9 +148,11 @@ define([
'<% _.each(rows, function(row) { %>', '<% _.each(rows, function(row) { %>',
'<tr>', '<tr>',
'<% _.each(row, function(item) { %>', '<% _.each(row, function(item) { %>',
'<% if (item.type!==Asc.c_oAscFileType.DOCM || fileType=="docm") { %>',
'<td><div><svg class="btn-doc-format" format="<%= item.type %>", format-ext="<%= item.ext %>">', '<td><div><svg class="btn-doc-format" format="<%= item.type %>", format-ext="<%= item.ext %>">',
'<use xlink:href="#svg-format-<%= item.imgCls %>"></use>', '<use xlink:href="#svg-format-<%= item.imgCls %>"></use>',
'</svg></div></td>', '</svg></div></td>',
'<% } %>',
'<% }) %>', '<% }) %>',
'</tr>', '</tr>',
'<% }) %>', '<% }) %>',
@ -156,10 +163,11 @@ define([
Common.UI.BaseView.prototype.initialize.call(this,arguments); Common.UI.BaseView.prototype.initialize.call(this,arguments);
this.menu = options.menu; this.menu = options.menu;
this.fileType = options.fileType;
}, },
render: function() { render: function() {
this.$el.html(this.template({rows:this.formats})); this.$el.html(this.template({rows:this.formats, fileType: (this.fileType || 'docx').toLowerCase()}));
$('.btn-doc-format',this.el).on('click', _.bind(this.onFormatClick,this)); $('.btn-doc-format',this.el).on('click', _.bind(this.onFormatClick,this));
if (_.isUndefined(this.scroller)) { if (_.isUndefined(this.scroller)) {
@ -280,7 +288,7 @@ define([
'<table style="margin: 10px 0;"><tbody>', '<table style="margin: 10px 0;"><tbody>',
'<tr>', '<tr>',
'<td class="left"></td>', '<td class="left"></td>',
'<td class="right"><button class="btn normal dlg-btn primary" data-hint="2" data-hint-direction="bottom" data-hint-offset="medium"><%= scope.okButtonText %></button></td>', '<td class="right"><button class="btn normal dlg-btn primary" data-hint="2" data-hint-direction="bottom" data-hint-offset="big"><%= scope.okButtonText %></button></td>',
'</tr>', '</tr>',
'</tbody></table>', '</tbody></table>',
'</div>' '</div>'
@ -1033,7 +1041,7 @@ define([
'<table class="main" style="margin: 10px 0;">', '<table class="main" style="margin: 10px 0;">',
'<tr>', '<tr>',
'<td class="left"></td>', '<td class="left"></td>',
'<td class="right"><button id="fminfo-btn-apply" class="btn normal dlg-btn primary" data-hint="2" data-hint-direction="bottom" data-hint-offset="medium"><%= scope.okButtonText %></button></td>', '<td class="right"><button id="fminfo-btn-apply" class="btn normal dlg-btn primary" data-hint="2" data-hint-direction="bottom" data-hint-offset="big"><%= scope.okButtonText %></button></td>',
'</tr>', '</tr>',
'</table>', '</table>',
'</div>' '</div>'

View file

@ -143,6 +143,9 @@ define([
this.lockedControls.push(this.txtPlaceholder); this.lockedControls.push(this.txtPlaceholder);
this.txtPlaceholder.on('changed:after', this.onPlaceholderChanged.bind(this)); this.txtPlaceholder.on('changed:after', this.onPlaceholderChanged.bind(this));
this.txtPlaceholder.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.txtPlaceholder.on('inputleave', function(){ me.fireEvent('editcomplete', me);});
this.txtPlaceholder.cmpEl.on('focus', 'input.form-control', function() {
setTimeout(function(){me.txtPlaceholder._input && me.txtPlaceholder._input.select();}, 1);
});
this.textareaHelp = new Common.UI.TextareaField({ this.textareaHelp = new Common.UI.TextareaField({
el : $markup.findById('#form-txt-help'), el : $markup.findById('#form-txt-help'),
@ -420,6 +423,36 @@ define([
this.cmbScale.on('changed:after', this.onScaleChanged.bind(this)); this.cmbScale.on('changed:after', this.onScaleChanged.bind(this));
this.cmbScale.on('hide:after', this.onHideMenus.bind(this)); this.cmbScale.on('hide:after', this.onHideMenus.bind(this));
this.imagePositionPreview = $markup.findById('#form-img-example');
this.imagePositionLabel = $markup.findById('#form-img-slider-value');
this.sldrPreviewPositionX = new Common.UI.SingleSlider({
el: $('#form-img-slider-position-x'),
width: 116,
minValue: 0,
maxValue: 100,
value: 50
});
this.sldrPreviewPositionX.on('change', _.bind(this.onImagePositionChange, this, 'x'));
this.sldrPreviewPositionX.on('changecomplete', _.bind(this.onImagePositionChangeComplete, this, 'x'));
this.lockedControls.push(this.sldrPreviewPositionX);
this.sldrPreviewPositionY = new Common.UI.SingleSlider({
el: $('#form-img-slider-position-y'),
width: 116,
minValue: 0,
maxValue: 100,
value: 50,
direction: 'vertical'
});
this.sldrPreviewPositionY.on('change', _.bind(this.onImagePositionChange, this, 'y'));
this.sldrPreviewPositionY.on('changecomplete', _.bind(this.onImagePositionChangeComplete, this, 'y'));
this.lockedControls.push(this.sldrPreviewPositionY);
var xValue = this.sldrPreviewPositionX.getValue(),
yValue = this.sldrPreviewPositionY.getValue();
this.imagePositionLabel.text(xValue + ',' + yValue);
this.updateMetricUnit(); this.updateMetricUnit();
this.UpdateThemeColors(); this.UpdateThemeColors();
}, },
@ -716,18 +749,18 @@ define([
if (this.api && !this._noApply) { if (this.api && !this._noApply) {
var props = this._originalProps || new AscCommon.CContentControlPr(); var props = this._originalProps || new AscCommon.CContentControlPr();
var formTextPr = this._originalTextFormProps || new AscCommon.CSdtTextFormPr(); var formPr = this._originalFormProps || new AscCommon.CSdtFormPr();
if (color == 'transparent') { if (color == 'transparent') {
formTextPr.put_CombBorder(); formPr.put_Border();
} else { } else {
var brd = formTextPr.get_CombBorder(); var brd = formPr.get_Border();
if (!brd) if (!brd)
brd = new Asc.asc_CTextBorder(); brd = new Asc.asc_CTextBorder();
brd.put_Value(1); brd.put_Value(1);
brd.put_Color(Common.Utils.ThemeColor.getRgbColor(color)); brd.put_Color(Common.Utils.ThemeColor.getRgbColor(color));
formTextPr.put_CombBorder(brd); formPr.put_Border(brd);
} }
props.put_TextFormPr(formTextPr); props.put_FormPr(formPr);
this.api.asc_SetContentControlProperties(props, this.internalId); this.api.asc_SetContentControlProperties(props, this.internalId);
this.fireEvent('editcomplete', this); this.fireEvent('editcomplete', this);
} }
@ -739,9 +772,9 @@ define([
if (this.api && !this._noApply) { if (this.api && !this._noApply) {
var props = this._originalProps || new AscCommon.CContentControlPr(); var props = this._originalProps || new AscCommon.CContentControlPr();
var formTextPr = this._originalTextFormProps || new AscCommon.CSdtTextFormPr(); var formPr = this._originalFormProps || new AscCommon.CSdtFormPr();
formTextPr.put_CombBorder(); formPr.put_Border();
props.put_TextFormPr(formTextPr); props.put_FormPr(formPr);
this.api.asc_SetContentControlProperties(props, this.internalId); this.api.asc_SetContentControlProperties(props, this.internalId);
this.fireEvent('editcomplete', this); this.fireEvent('editcomplete', this);
} }
@ -887,6 +920,33 @@ define([
this._state.Fixed=val; this._state.Fixed=val;
} }
} }
var brd = formPr.get_Border();
if (brd) {
var color = brd.get_Color();
if (color) {
if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {
this.BorderColor = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value() };
} else {
this.BorderColor = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b());
}
} else
this.BorderColor = 'transparent';
} else
this.BorderColor = 'transparent';
var type1 = typeof(this.BorderColor),
type2 = typeof(this._state.BorderColor);
if ( (type1 !== type2) || (type1=='object' &&
(this.BorderColor.effectValue!==this._state.BorderColor.effectValue || this._state.BorderColor.color.indexOf(this.BorderColor.color)<0)) ||
(type1!='object' && this._state.BorderColor.indexOf(this.BorderColor)<0 )) {
this.btnColor.setColor(this.BorderColor);
this.mnuColorPicker.clearSelection();
this.mnuNoBorder.setChecked(this.BorderColor == 'transparent', true);
(this.BorderColor != 'transparent') && this.mnuColorPicker.selectByRGB(typeof(this.BorderColor) == 'object' ? this.BorderColor.color : this.BorderColor,true);
this._state.BorderColor = this.BorderColor;
}
} }
var pictPr = props.get_PictureFormPr(); var pictPr = props.get_PictureFormPr();
@ -903,6 +963,27 @@ define([
this.cmbScale.setValue(val); this.cmbScale.setValue(val);
this._state.scaleFlag=val; this._state.scaleFlag=val;
} }
val = pictPr.get_ShiftX() * 100;
if (this._state.imgPositionX !== val) {
this.sldrPreviewPositionX.setValue(val);
this._state.imgPositionX = val;
}
val = pictPr.get_ShiftY() * 100;
if (this._state.imgPositionY !== val) {
this.sldrPreviewPositionY.setValue(val);
this._state.imgPositionY = val;
}
this.imagePositionLabel.text(Math.round(this._state.imgPositionX) + ',' + Math.round(this._state.imgPositionY));
val = ((130 - 80) * this._state.imgPositionX) / 100 - 1;
this.imagePositionPreview.css({'left': val + 'px'});
val = ((130 - 80) * this._state.imgPositionY) / 100 - 1;
this.imagePositionPreview.css({'top': val + 'px'});
this.chAspect.setDisabled(this._state.scaleFlag === Asc.c_oAscPictureFormScaleFlag.Never);
var disableSliders = this._state.scaleFlag === Asc.c_oAscPictureFormScaleFlag.Always && !this._state.Aspect;
this.sldrPreviewPositionX.setDisabled(disableSliders);
this.sldrPreviewPositionY.setDisabled(disableSliders);
} }
var formTextPr = props.get_TextFormPr(); var formTextPr = props.get_TextFormPr();
@ -930,8 +1011,6 @@ define([
} }
this.chAutofit.setDisabled(!this._state.Fixed || this._state.Comb); this.chAutofit.setDisabled(!this._state.Fixed || this._state.Comb);
this.btnColor.setDisabled(!this._state.Comb);
this.spnWidth.setDisabled(!this._state.Comb); this.spnWidth.setDisabled(!this._state.Comb);
val = formTextPr.get_Width(); val = formTextPr.get_Width();
if ( (val===undefined || this._state.Width===undefined)&&(this._state.Width!==val) || Math.abs(this._state.Width-val)>0.1) { if ( (val===undefined || this._state.Width===undefined)&&(this._state.Width!==val) || Math.abs(this._state.Width-val)>0.1) {
@ -952,33 +1031,6 @@ define([
this.spnMaxChars.setValue(val && val>=0 ? val : 10, true); this.spnMaxChars.setValue(val && val>=0 ? val : 10, true);
this._state.MaxChars=val; this._state.MaxChars=val;
} }
var brd = formTextPr.get_CombBorder();
if (brd) {
var color = brd.get_Color();
if (color) {
if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {
this.BorderColor = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value() };
} else {
this.BorderColor = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b());
}
} else
this.BorderColor = 'transparent';
} else
this.BorderColor = 'transparent';
var type1 = typeof(this.BorderColor),
type2 = typeof(this._state.BorderColor);
if ( (type1 !== type2) || (type1=='object' &&
(this.BorderColor.effectValue!==this._state.BorderColor.effectValue || this._state.BorderColor.color.indexOf(this.BorderColor.color)<0)) ||
(type1!='object' && this._state.BorderColor.indexOf(this.BorderColor)<0 )) {
this.btnColor.setColor(this.BorderColor);
this.mnuColorPicker.clearSelection();
this.mnuNoBorder.setChecked(this.BorderColor == 'transparent', true);
(this.BorderColor != 'transparent') && this.mnuColorPicker.selectByRGB(typeof(this.BorderColor) == 'object' ? this.BorderColor.color : this.BorderColor,true);
this._state.BorderColor = this.BorderColor;
}
} }
this._noApply = false; this._noApply = false;
@ -1089,6 +1141,7 @@ define([
}, },
onSelectItem: function(listView, itemView, record) { onSelectItem: function(listView, itemView, record) {
if (!record) return;
this.txtNewValue.setValue(record.get('name')); this.txtNewValue.setValue(record.get('name'));
this._state.listValue = record.get('name'); this._state.listValue = record.get('name');
this._state.listIndex = undefined; this._state.listIndex = undefined;
@ -1107,6 +1160,61 @@ define([
this.btnListDown.setDisabled(disabled || this._state.DisabledControls); this.btnListDown.setDisabled(disabled || this._state.DisabledControls);
}, },
onImagePositionChange: function (type, field, newValue, oldValue) {
var value = ((130 - 80) * newValue) / 100 - 1;
if (type === 'x') {
this.imagePositionPreview.css({'left': value + 'px'});
this._state.imgPositionX = newValue;
} else {
this.imagePositionPreview.css({'top': value + 'px'});
this._state.imgPositionY = newValue;
}
if (_.isUndefined(this._state.imgPositionX)) {
this._state.imgPositionX = 50;
} else if (_.isUndefined(this._state.imgPositionY)) {
this._state.imgPositionY = 50;
}
this.imagePositionLabel.text(Math.round(this._state.imgPositionX) + ',' + Math.round(this._state.imgPositionY));
if (this._sendUndoPoint) {
this.api.setStartPointHistory();
this._sendUndoPoint = false;
this.updateslider = setInterval(_.bind(this.imgPositionApplyFunc, this, type), 100);
}
},
onImagePositionChangeComplete: function (type, field, newValue, oldValue) {
clearInterval(this.updateslider);
if (type === 'x') {
this._state.imgPositionX = newValue;
} else {
this._state.imgPositionY = newValue;
}
if (!this._sendUndoPoint) { // start point was added
this.api.setEndPointHistory();
this.imgPositionApplyFunc(type);
}
this._sendUndoPoint = true;
},
imgPositionApplyFunc: function (type) {
if (this.api && !this._noApply) {
var props = this._originalProps || new AscCommon.CContentControlPr();
var pictPr = this._originalPictProps || new AscCommon.CSdtPictureFormPr();
var val;
if (type === 'x') {
val = this._state.imgPositionX / 100;
pictPr.put_ShiftX(val);
} else {
val = this._state.imgPositionY / 100;
pictPr.put_ShiftY(val);
}
props.put_PictureFormPr(pictPr);
this.api.asc_SetContentControlProperties(props, this.internalId);
this.fireEvent('editcomplete', this);
}
},
textField: 'Text Field', textField: 'Text Field',
textKey: 'Key', textKey: 'Key',
textPlaceholder: 'Placeholder', textPlaceholder: 'Placeholder',

View file

@ -570,7 +570,7 @@ define([
} }
}, },
onSaveMailMerge: function(url) { onSaveMailMerge: function(url, fileType) {
var loadMask = DE.getController('Main').loadMask; var loadMask = DE.getController('Main').loadMask;
loadMask && loadMask.hide(); loadMask && loadMask.hide();
@ -579,7 +579,7 @@ define([
if (this.cmbMergeTo.getValue() != Asc.c_oAscFileType.HTML) { if (this.cmbMergeTo.getValue() != Asc.c_oAscFileType.HTML) {
var defFileName = me.defFileName + ((this.cmbMergeTo.getValue() == Asc.c_oAscFileType.PDF) ? '.pdf' : '.docx'); var defFileName = me.defFileName + ((this.cmbMergeTo.getValue() == Asc.c_oAscFileType.PDF) ? '.pdf' : '.docx');
if (me.mode.canRequestSaveAs) { if (me.mode.canRequestSaveAs) {
Common.Gateway.requestSaveAs(url, defFileName); Common.Gateway.requestSaveAs(url, defFileName, fileType);
} else { } else {
me._mailMergeDlg = new Common.Views.SaveAsDlg({ me._mailMergeDlg = new Common.Views.SaveAsDlg({
saveFolderUrl: me.mode.mergeFolderUrl, saveFolderUrl: me.mode.mergeFolderUrl,

View file

@ -1384,6 +1384,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem
}, },
onSelectTab: function(lisvView, itemView, record) { onSelectTab: function(lisvView, itemView, record) {
if (!record) return;
var rawData = {}, var rawData = {},
isViewSelect = _.isFunction(record.toJSON); isViewSelect = _.isFunction(record.toJSON);

View file

@ -247,7 +247,7 @@ define([
maxLength: 1, maxLength: 1,
validateOnChange: true, validateOnChange: true,
validateOnBlur: false, validateOnBlur: false,
value: '-' value: Common.Utils.InternalSettings.get("de-text-to-table-separator") || '-'
}).on ('changing', function(input, newValue) { }).on ('changing', function(input, newValue) {
if (me.props && newValue) { if (me.props && newValue) {
me.props.put_SeparatorType(3, true); me.props.put_SeparatorType(3, true);
@ -315,6 +315,7 @@ define([
if (this.props) { if (this.props) {
this.props.put_AutoFitType(this.rbFixed.getValue() ? 1 : (this.rbContents.getValue() ? 2 : 3)); this.props.put_AutoFitType(this.rbFixed.getValue() ? 1 : (this.rbContents.getValue() ? 2 : 3));
this.rbFixed.getValue() && this.props.put_Fit(Common.Utils.Metric.fnRecalcToMM(this.spnWidth.getNumberValue())); this.rbFixed.getValue() && this.props.put_Fit(Common.Utils.Metric.fnRecalcToMM(this.spnWidth.getNumberValue()));
this.rbOther.getValue() && Common.Utils.InternalSettings.set("de-text-to-table-separator", String.fromCharCode(this.props.get_Separator()));
} }
return this.props; return this.props;

View file

@ -2006,15 +2006,15 @@ define([
restoreHeight: 138, restoreHeight: 138,
allowScrollbar: false, allowScrollbar: false,
store: new Common.UI.DataViewStore([ store: new Common.UI.DataViewStore([
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: -1}}, {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: -1}, skipRenderOnChange: true},
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 1}}, {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 1}, skipRenderOnChange: true},
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 2}}, {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 2}, skipRenderOnChange: true},
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 3}}, {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 3}, skipRenderOnChange: true},
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 4}}, {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 4}, skipRenderOnChange: true},
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 5}}, {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 5}, skipRenderOnChange: true},
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 6}}, {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 6}, skipRenderOnChange: true},
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 7}}, {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 7}, skipRenderOnChange: true},
{id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 8}} {id: 'id-markers-' + Common.UI.getId(), data: {type: 0, subtype: 8}, skipRenderOnChange: true}
]), ]),
itemTemplate: _.template('<div id="<%= id %>" class="item-markerlist"></div>') itemTemplate: _.template('<div id="<%= id %>" class="item-markerlist"></div>')
}); });
@ -2027,14 +2027,14 @@ define([
restoreHeight: 92, restoreHeight: 92,
allowScrollbar: false, allowScrollbar: false,
store: new Common.UI.DataViewStore([ store: new Common.UI.DataViewStore([
{id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: -1}}, {id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: -1}, skipRenderOnChange: true},
{id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 4}}, {id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 4}, skipRenderOnChange: true},
{id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 5}}, {id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 5}, skipRenderOnChange: true},
{id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 6}}, {id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 6}, skipRenderOnChange: true},
{id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 1}}, {id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 1}, skipRenderOnChange: true},
{id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 2}}, {id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 2}, skipRenderOnChange: true},
{id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 3}}, {id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 3}, skipRenderOnChange: true},
{id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 7}} {id: 'id-numbers-' + Common.UI.getId(), data: {type: 1, subtype: 7}, skipRenderOnChange: true}
]), ]),
itemTemplate: _.template('<div id="<%= id %>" class="item-multilevellist"></div>') itemTemplate: _.template('<div id="<%= id %>" class="item-multilevellist"></div>')
}); });
@ -2047,10 +2047,10 @@ define([
restoreHeight: 92, restoreHeight: 92,
allowScrollbar: false, allowScrollbar: false,
store: new Common.UI.DataViewStore([ store: new Common.UI.DataViewStore([
{id: 'id-multilevels-' + Common.UI.getId(), data: {type: 2, subtype: -1}}, {id: 'id-multilevels-' + Common.UI.getId(), data: {type: 2, subtype: -1}, skipRenderOnChange: true},
{id: 'id-multilevels-' + Common.UI.getId(), data: {type: 2, subtype: 1}}, {id: 'id-multilevels-' + Common.UI.getId(), data: {type: 2, subtype: 1}, skipRenderOnChange: true},
{id: 'id-multilevels-' + Common.UI.getId(), data: {type: 2, subtype: 2}}, {id: 'id-multilevels-' + Common.UI.getId(), data: {type: 2, subtype: 2}, skipRenderOnChange: true},
{id: 'id-multilevels-' + Common.UI.getId(), data: {type: 2, subtype: 3}} {id: 'id-multilevels-' + Common.UI.getId(), data: {type: 2, subtype: 3}, skipRenderOnChange: true}
]), ]),
itemTemplate: _.template('<div id="<%= id %>" class="item-multilevellist"></div>') itemTemplate: _.template('<div id="<%= id %>" class="item-multilevellist"></div>')
}); });

View file

@ -225,8 +225,7 @@
} }
function encodeUrlParam(str) { function encodeUrlParam(str) {
return str.replace(/&/g, '&amp;') return str.replace(/"/g, '&quot;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;') .replace(/'/g, '&#39;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;'); .replace(/>/g, '&gt;');
@ -315,6 +314,7 @@
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/html.svg"> <img class="inline-svg" src="../../common/main/resources/img/doc-formats/html.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/fb2.svg"> <img class="inline-svg" src="../../common/main/resources/img/doc-formats/fb2.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/epub.svg"> <img class="inline-svg" src="../../common/main/resources/img/doc-formats/epub.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/docm.svg">
<img class="inline-svg" src="resources/img/blank.svg"> <img class="inline-svg" src="resources/img/blank.svg">
<img class="inline-svg" src="resources/img/recent-file.svg"> <img class="inline-svg" src="resources/img/recent-file.svg">
<img class="inline-svg" src="resources/img/file-template.svg"> <img class="inline-svg" src="resources/img/file-template.svg">

View file

@ -197,8 +197,7 @@
} }
function encodeUrlParam(str) { function encodeUrlParam(str) {
return str.replace(/&/g, '&amp;') return str.replace(/"/g, '&quot;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;') .replace(/'/g, '&#39;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;'); .replace(/>/g, '&gt;');
@ -309,6 +308,7 @@
<inline src="resources/img/doc-formats/html.svg" /> <inline src="resources/img/doc-formats/html.svg" />
<inline src="resources/img/doc-formats/fb2.svg" /> <inline src="resources/img/doc-formats/fb2.svg" />
<inline src="resources/img/doc-formats/epub.svg" /> <inline src="resources/img/doc-formats/epub.svg" />
<inline src="resources/img/doc-formats/docm.svg" />
<inline src="resources/img/toolbar/shapetypes.svg" /> <inline src="resources/img/toolbar/shapetypes.svg" />
<inline src="resources/img/toolbar/charttypes.svg" /> <inline src="resources/img/toolbar/charttypes.svg" />
<inline src="resources/img/recent-file.svg" /> <inline src="resources/img/recent-file.svg" />

View file

@ -199,8 +199,7 @@
return urlParams; return urlParams;
} }
function encodeUrlParam(str) { function encodeUrlParam(str) {
return str.replace(/&/g, '&amp;') return str.replace(/"/g, '&quot;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;') .replace(/'/g, '&#39;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;'); .replace(/>/g, '&gt;');
@ -272,6 +271,7 @@
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/html.svg"> <img class="inline-svg" src="../../common/main/resources/img/doc-formats/html.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/fb2.svg"> <img class="inline-svg" src="../../common/main/resources/img/doc-formats/fb2.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/epub.svg"> <img class="inline-svg" src="../../common/main/resources/img/doc-formats/epub.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/docm.svg">
<img class="inline-svg" src="resources/img/blank.svg"> <img class="inline-svg" src="resources/img/blank.svg">
<img class="inline-svg" src="resources/img/recent-file.svg"> <img class="inline-svg" src="resources/img/recent-file.svg">
<img class="inline-svg" src="resources/img/file-template.svg"> <img class="inline-svg" src="resources/img/file-template.svg">

View file

@ -218,8 +218,7 @@
} }
function encodeUrlParam(str) { function encodeUrlParam(str) {
return str.replace(/&/g, '&amp;') return str.replace(/"/g, '&quot;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;') .replace(/'/g, '&#39;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;'); .replace(/>/g, '&gt;');
@ -315,6 +314,7 @@
<inline src="resources/img/doc-formats/html.svg" /> <inline src="resources/img/doc-formats/html.svg" />
<inline src="resources/img/doc-formats/fb2.svg" /> <inline src="resources/img/doc-formats/fb2.svg" />
<inline src="resources/img/doc-formats/epub.svg" /> <inline src="resources/img/doc-formats/epub.svg" />
<inline src="resources/img/doc-formats/docm.svg" />
<inline src="resources/img/toolbar/shapetypes.svg" /> <inline src="resources/img/toolbar/shapetypes.svg" />
<inline src="resources/img/toolbar/charttypes.svg" /> <inline src="resources/img/toolbar/charttypes.svg" />
<inline src="resources/img/recent-file.svg" /> <inline src="resources/img/recent-file.svg" />

File diff suppressed because it is too large Load diff

View file

@ -1737,6 +1737,9 @@
"DE.Views.FileMenuPanels.Settings.txtWarnMacros": "Benachrichtigung anzeigen", "DE.Views.FileMenuPanels.Settings.txtWarnMacros": "Benachrichtigung anzeigen",
"DE.Views.FileMenuPanels.Settings.txtWarnMacrosDesc": "Alle Makros mit einer Benachrichtigung deaktivieren", "DE.Views.FileMenuPanels.Settings.txtWarnMacrosDesc": "Alle Makros mit einer Benachrichtigung deaktivieren",
"DE.Views.FileMenuPanels.Settings.txtWin": "wie Windows", "DE.Views.FileMenuPanels.Settings.txtWin": "wie Windows",
"DE.Views.FormSettings.textAlways": "Immer",
"DE.Views.FormSettings.textAspect": "Seitenverhältnis sperren",
"DE.Views.FormSettings.textAutofit": "Automatisch anpassen",
"DE.Views.FormSettings.textCheckbox": "Kontrollkästchen", "DE.Views.FormSettings.textCheckbox": "Kontrollkästchen",
"DE.Views.FormSettings.textColor": "Rahmenfarbe", "DE.Views.FormSettings.textColor": "Rahmenfarbe",
"DE.Views.FormSettings.textComb": "Zeichenanzahl in Textfeld", "DE.Views.FormSettings.textComb": "Zeichenanzahl in Textfeld",
@ -1755,16 +1758,21 @@
"DE.Views.FormSettings.textKey": "Schlüssel", "DE.Views.FormSettings.textKey": "Schlüssel",
"DE.Views.FormSettings.textLock": "Sperren", "DE.Views.FormSettings.textLock": "Sperren",
"DE.Views.FormSettings.textMaxChars": "Zeichengrenze", "DE.Views.FormSettings.textMaxChars": "Zeichengrenze",
"DE.Views.FormSettings.textMulti": "Mehrzeiliges Feld",
"DE.Views.FormSettings.textNever": "Nie",
"DE.Views.FormSettings.textNoBorder": "Kein Rahmen", "DE.Views.FormSettings.textNoBorder": "Kein Rahmen",
"DE.Views.FormSettings.textPlaceholder": "Platzhalter", "DE.Views.FormSettings.textPlaceholder": "Platzhalter",
"DE.Views.FormSettings.textRadiobox": "Radiobutton", "DE.Views.FormSettings.textRadiobox": "Radiobutton",
"DE.Views.FormSettings.textRequired": "Erforderlich", "DE.Views.FormSettings.textRequired": "Erforderlich",
"DE.Views.FormSettings.textScale": "Wann skalieren",
"DE.Views.FormSettings.textSelectImage": "Bild auswählen", "DE.Views.FormSettings.textSelectImage": "Bild auswählen",
"DE.Views.FormSettings.textTip": "Tipp", "DE.Views.FormSettings.textTip": "Tipp",
"DE.Views.FormSettings.textTipAdd": "Neuen Wert hinzufügen", "DE.Views.FormSettings.textTipAdd": "Neuen Wert hinzufügen",
"DE.Views.FormSettings.textTipDelete": "Den Wert löschen", "DE.Views.FormSettings.textTipDelete": "Den Wert löschen",
"DE.Views.FormSettings.textTipDown": "Nach unten bewegen", "DE.Views.FormSettings.textTipDown": "Nach unten bewegen",
"DE.Views.FormSettings.textTipUp": "Nach oben bewegen", "DE.Views.FormSettings.textTipUp": "Nach oben bewegen",
"DE.Views.FormSettings.textTooBig": "Das Bild ist zu groß",
"DE.Views.FormSettings.textTooSmall": "Das Bild ist zu klein",
"DE.Views.FormSettings.textUnlock": "Entsperren", "DE.Views.FormSettings.textUnlock": "Entsperren",
"DE.Views.FormSettings.textValue": "Optionen von Werten", "DE.Views.FormSettings.textValue": "Optionen von Werten",
"DE.Views.FormSettings.textWidth": "Zeilenbreite", "DE.Views.FormSettings.textWidth": "Zeilenbreite",
@ -1783,6 +1791,7 @@
"DE.Views.FormsTab.textHighlight": "Einstellungen für Hervorhebungen", "DE.Views.FormsTab.textHighlight": "Einstellungen für Hervorhebungen",
"DE.Views.FormsTab.textNewColor": "Benutzerdefinierte Farbe", "DE.Views.FormsTab.textNewColor": "Benutzerdefinierte Farbe",
"DE.Views.FormsTab.textNoHighlight": "Ohne Hervorhebung", "DE.Views.FormsTab.textNoHighlight": "Ohne Hervorhebung",
"DE.Views.FormsTab.textRequired": "Füllen Sie alle erforderlichen Felder aus, um das Formular zu senden.",
"DE.Views.FormsTab.textSubmited": "Das Formular wurde erfolgreich versandt", "DE.Views.FormsTab.textSubmited": "Das Formular wurde erfolgreich versandt",
"DE.Views.FormsTab.tipCheckBox": "Checkbox einfügen", "DE.Views.FormsTab.tipCheckBox": "Checkbox einfügen",
"DE.Views.FormsTab.tipComboBox": "Combobox einfügen", "DE.Views.FormsTab.tipComboBox": "Combobox einfügen",
@ -2721,6 +2730,7 @@
"DE.Views.Toolbar.txtScheme2": "Graustufe", "DE.Views.Toolbar.txtScheme2": "Graustufe",
"DE.Views.Toolbar.txtScheme20": "Rhea", "DE.Views.Toolbar.txtScheme20": "Rhea",
"DE.Views.Toolbar.txtScheme21": "Telesto", "DE.Views.Toolbar.txtScheme21": "Telesto",
"DE.Views.Toolbar.txtScheme22": "Neues Office",
"DE.Views.Toolbar.txtScheme3": "Apex", "DE.Views.Toolbar.txtScheme3": "Apex",
"DE.Views.Toolbar.txtScheme4": "Aspekt ", "DE.Views.Toolbar.txtScheme4": "Aspekt ",
"DE.Views.Toolbar.txtScheme5": "bürgerlich", "DE.Views.Toolbar.txtScheme5": "bürgerlich",

Some files were not shown because too many files have changed in this diff Show more