release/v5.2.0

This commit is contained in:
Alexey Golubev 2018-09-27 19:07:48 +03:00
commit d654734b3b
10559 changed files with 79020 additions and 36147 deletions

View file

@ -1,15 +1,44 @@
# Change log # Change log
## 5.1.3 ## 5.2
### All Editors ### All Editors
* Customize initial zoom for the embedded editors * Customize initial zoom for the embedded editors
* Replace image from context menu (bug #11493) * Customize availability of help in the editor
* Add File and Plugins tabs for viewers
* Mark username by color in the comments, review changes, chat messages
* bug #37570
* Show edit-mode users in format <username>(<opened browser tabs>)
* Don't duplicate online users in the left chat panel
* Sort comments in the popover by ascending creation time
### Document Editor ### Document Editor
* Export to RTF format * Create and manage bookmarks
* Create internal hyperlinks to bookmarks and headings
* Content controls settings (highlight and appearance)
* Change numbering value, start/continue numbering
* Review changes and comments are in combined window
* Add page presets А0, А1, А2, А6 (bug #36583)
* Enable closing chart dialog while loading (bug #36870)
* Change encoding format for txt files (bug #36998)
* Add mode for filling forms
* Enable closing window when save to txt
* Enable inserting shapes when shape is selected
* Check new revisions in fast co-editing mode
* Save track-changes option for file key
* Disable bookmarks in the document headers (bug #38957)
### Spreadsheet Editor ### Spreadsheet Editor
* Add Spanish, French formula translations * Set options for saving in PDF format (bug #34914)
* Change cell format from context menu (bug #16272) * Cell settings in the right panel
* Add Layout tab: save margins, page size, orientation for sheets, align/arrange, group/ungroup objects (shapes, images, charts)
* Added hint for autofilters
* Change encoding format for csv files (bug #36998)
* Rename sheets in the mobile editor (bug #37701)
* Enable closing window when save to csv
* Save page options to file before printing
* Hide options for headings, gridlines, freeze panes in the viewer (bug #38033)
### Presentation Editor ### Presentation Editor
* Add hints to presentation themes (bug #21362) * Add hints to presentation themes (bug #21362)
* Add presenter preview in the viewer (bug #37499)
* Enable closing chart dialog while loading (bug #36870)

View file

@ -46,6 +46,7 @@
comment: <can comment in view mode> // default = edit, comment: <can comment in view mode> // default = edit,
modifyFilter: <can add, remove and save filter in the spreadsheet> // default = true modifyFilter: <can add, remove and save filter in the spreadsheet> // default = true
modifyContentControl: <can modify content controls in documenteditor> // default = true modifyContentControl: <can modify content controls in documenteditor> // default = true
fillForms: <can edit forms in view mode> // default = edit || review
} }
}, },
editorConfig: { editorConfig: {
@ -120,7 +121,8 @@
autosave: true, autosave: true,
forcesave: false, forcesave: false,
commentAuthorOnly: false, commentAuthorOnly: false,
showReviewChanges: false showReviewChanges: false,
help: true
}, },
plugins: { plugins: {
autostart: ['asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}'], autostart: ['asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}'],
@ -192,6 +194,7 @@
_config.editorConfig.canSendEmailAddresses = _config.events && !!_config.events.onRequestEmailAddresses; _config.editorConfig.canSendEmailAddresses = _config.events && !!_config.events.onRequestEmailAddresses;
_config.editorConfig.canRequestEditRights = _config.events && !!_config.events.onRequestEditRights; _config.editorConfig.canRequestEditRights = _config.events && !!_config.events.onRequestEditRights;
_config.editorConfig.canRequestClose = _config.events && !!_config.events.onRequestClose; _config.editorConfig.canRequestClose = _config.events && !!_config.events.onRequestClose;
_config.editorConfig.canRename = _config.events && !!_config.events.onRequestRename;
_config.frameEditorId = placeholderId; _config.frameEditorId = placeholderId;
_config.events && !!_config.events.onReady && console.log("Obsolete: The onReady event is deprecated. Please use onAppReady instead."); _config.events && !!_config.events.onReady && console.log("Obsolete: The onReady event is deprecated. Please use onAppReady instead.");

View file

@ -187,6 +187,7 @@
.close { .close {
font-size: 28px; font-size: 28px;
font-family: Arial, sans-serif;
color: #666666; color: #666666;
opacity: 0.8; opacity: 0.8;
display: block; display: block;

View file

@ -61,12 +61,11 @@ define([
}, },
getEditingCount: function() { getEditingCount: function() {
var count = 0; return this.filter(function(item){return item.get('online') && !item.get('view')}).length;
this.each(function(user){ },
user.get('online') && !user.get('view') && ++count;
});
return count; getEditingOriginalCount: function() {
return this.chain().filter(function(item){return item.get('online') && !item.get('view')}).groupBy(function(item) {return item.get('idOriginal');}).size().value();
}, },
findUser: function(id) { findUser: function(id) {
@ -74,6 +73,13 @@ define([
function(model){ function(model){
return model.get('id') == id; return model.get('id') == id;
}); });
},
findOriginalUser: function(id) {
return this.find(
function(model){
return model.get('idOriginal') == id;
});
} }
}); });

View file

@ -600,6 +600,9 @@ define([
} }
} }
if (disabled && this.menu && _.isObject(this.menu) && this.menu.rendered && this.menu.isVisible())
setTimeout(function(){ me.menu.hide()}, 1);
if ( !!me.options.signals ) { if ( !!me.options.signals ) {
var opts = me.options.signals; var opts = me.options.signals;
if ( !(opts.indexOf('disabled') < 0) ) { if ( !(opts.indexOf('disabled') < 0) ) {

View file

@ -77,7 +77,7 @@ define([
Common.UI.ComboBorderSize = Common.UI.ComboBox.extend(_.extend({ Common.UI.ComboBorderSize = Common.UI.ComboBox.extend(_.extend({
template: _.template([ template: _.template([
'<div class="input-group combobox combo-border-size input-group-nr <%= cls %>" id="<%= id %>" style="<%= style %>">', '<div class="input-group combobox combo-border-size input-group-nr <%= cls %>" id="<%= id %>" style="<%= style %>">',
'<div class="form-control" style="<%= style %>"></div>', '<div class="form-control" style="padding-top:2px; <%= style %>"></div>',
'<div style="display: table-cell;"></div>', '<div style="display: table-cell;"></div>',
'<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret img-commonctrl"></span></button>', '<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret img-commonctrl"></span></button>',
'<ul class="dropdown-menu <%= menuCls %>" style="<%= menuStyle %>" role="menu">', '<ul class="dropdown-menu <%= menuCls %>" style="<%= menuStyle %>" role="menu">',

View file

@ -193,6 +193,15 @@ define([
if (modalParents.length > 0) { if (modalParents.length > 0) {
el.data('bs.tooltip').tip().css('z-index', parseInt(modalParents.css('z-index')) + 10); el.data('bs.tooltip').tip().css('z-index', parseInt(modalParents.css('z-index')) + 10);
} }
el.find('.dropdown-menu').on('mouseenter', function(){ // hide tooltip when mouse is over menu
var tip = el.data('bs.tooltip');
if (tip) {
if (tip.dontShow===undefined)
tip.dontShow = true;
tip.hide();
}
});
} }
el.on('show.bs.dropdown', _.bind(me.onBeforeShowMenu, me)); el.on('show.bs.dropdown', _.bind(me.onBeforeShowMenu, me));

View file

@ -86,15 +86,30 @@ define([
initialize : function(options) { initialize : function(options) {
Common.UI.BaseView.prototype.initialize.call(this, options); Common.UI.BaseView.prototype.initialize.call(this, options);
var _template_tabs =
'<section class="tabs">' +
'<a class="scroll left"><i class="icon">&lt;</i></a>' +
'<ul>' +
'<% for(var i in items) { %>' +
'<li class="ribtab' +
'<% if (items[i].haspanel===false) print(" x-lone") %>' +
'<% if (items[i].extcls) print(\' \' + items[i].extcls) %>">' +
'<a data-tab="<%= items[i].action %>" data-title="<%= items[i].caption %>"><%= items[i].caption %></a>' +
'</li>' +
'<% } %>' +
'</ul>' +
'<a class="scroll right"><i class="icon">&gt;</i></a>' +
'</section>';
this.$layout = $(options.template({ this.$layout = $(options.template({
tabs: options.tabs tabsmarkup: _.template(_template_tabs)({items: options.tabs})
})); }));
config.tabs = options.tabs; config.tabs = options.tabs;
$(document.body).on('click', onClickDocument.bind(this)); $(document.body).on('click', onClickDocument.bind(this));
Common.NotificationCenter.on('tab:visible', _.bind(function(action, visible){ Common.NotificationCenter.on('tab:visible', _.bind(function(action, visible){
this.setVisible(action, visible) this.setVisible(action, visible);
}, this)); }, this));
}, },
@ -127,8 +142,12 @@ define([
if ( this.isFolded ) { if ( this.isFolded ) {
if (!optsFold.$box) optsFold.$box = me.$el.find('.box-controls'); if (!optsFold.$box) optsFold.$box = me.$el.find('.box-controls');
optsFold.$bar.addClass('folded').toggleClass('expanded', false); optsFold.$bar.addClass('folded z-clear').toggleClass('expanded', false);
optsFold.$bar.find('.tabs .ribtab').removeClass('active'); optsFold.$bar.find('.tabs .ribtab').removeClass('active');
optsFold.$bar.on($.support.transition.end, function (e) {
if ( optsFold.$bar.hasClass('folded') && !optsFold.$bar.hasClass('expanded') )
optsFold.$bar.toggleClass('z-clear', true);
});
optsFold.$box.on({ optsFold.$box.on({
mouseleave: function (e) { mouseleave: function (e) {
// optsFold.timer = setTimeout( function(e) { // optsFold.timer = setTimeout( function(e) {
@ -167,13 +186,16 @@ define([
} else { } else {
// clearTimeout(optsFold.timer); // clearTimeout(optsFold.timer);
optsFold.$bar.removeClass('folded'); optsFold.$bar.removeClass('folded z-clear');
optsFold.$box.off(); optsFold.$box.off();
var active_panel = optsFold.$box.find('.panel.active'); var active_panel = optsFold.$box.find('.panel.active');
if ( active_panel.length ) { if ( active_panel.length ) {
var tab = active_panel.data('tab'); var tab = active_panel.data('tab');
me.$tabs.find('> a[data-tab=' + tab + ']').parent().toggleClass('active', true); me.$tabs.find('> a[data-tab=' + tab + ']').parent().toggleClass('active', true);
} else {
tab = me.$tabs.siblings(':not(.x-lone)').first().find('> a[data-tab]').data('tab');
me.setTab(tab);
} }
} }
}, },
@ -191,6 +213,7 @@ define([
expand: function() { expand: function() {
// clearTimeout(optsFold.timer); // clearTimeout(optsFold.timer);
optsFold.$bar.removeClass('z-clear');
optsFold.$bar.addClass('expanded'); optsFold.$bar.addClass('expanded');
// optsFold.timer = setTimeout(this.collapse, optsFold.timeout); // optsFold.timer = setTimeout(this.collapse, optsFold.timeout);
}, },
@ -206,28 +229,40 @@ define([
}, },
onTabClick: function (e) { onTabClick: function (e) {
var _is_active = $(e.currentTarget).hasClass('active'); var me = this;
if ( _is_active ) {
if ( this.isFolded ) { var $target = $(e.currentTarget);
// this.collapse(); var tab = $target.find('> a[data-tab]').data('tab');
var islone = $target.hasClass('x-lone');
if ( me.isFolded ) {
if ( $target.hasClass('x-lone') ) {
me.collapse();
// me.fireEvent('')
} else
if ( $target.hasClass('active') ) {
me.collapse();
} else {
me.setTab(tab);
} }
} else { } else {
var tab = $(e.target).data('tab'); if ( !$target.hasClass('active') && !islone ) {
this.setTab(tab); me.setTab(tab);
}
} }
}, },
setTab: function (tab) { setTab: function (tab) {
var me = this;
if ( !tab ) { if ( !tab ) {
onShowFullviewPanel.call(this, false); // onShowFullviewPanel.call(this, false);
if ( this.isFolded ) { this.collapse(); } if ( this.isFolded ) { this.collapse(); }
else tab = this.lastPanel; else tab = this.lastPanel;
} }
if ( tab ) { if ( tab ) {
this.$tabs.removeClass('active'); me.$tabs.removeClass('active');
this.$panels.removeClass('active'); me.$panels.removeClass('active');
var panel = this.$panels.filter('[data-tab=' + tab + ']'); var panel = this.$panels.filter('[data-tab=' + tab + ']');
if ( panel.length ) { if ( panel.length ) {
@ -236,10 +271,10 @@ define([
} }
if ( panel.length ) { if ( panel.length ) {
if ( this.isFolded ) this.expand(); if ( me.isFolded ) me.expand();
} else { } else {
onShowFullviewPanel.call(this, true); // onShowFullviewPanel.call(this, true);
if ( this.isFolded ) this.collapse(); if ( me.isFolded ) me.collapse();
} }
var $tp = this.$tabs.find('> a[data-tab=' + tab + ']').parent(); var $tp = this.$tabs.find('> a[data-tab=' + tab + ']').parent();
@ -273,6 +308,8 @@ define([
if ($target.length) { if ($target.length) {
$target.after(panel); $target.after(panel);
} else {
panel.appendTo(this.$layout.find('.box-panels'));
} }
} }

View file

@ -320,6 +320,33 @@ define([
} }
}, },
selectByRGB: function(rgb, suppressEvent) {
var el = $(this.el);
el.find('a.' + this.selectedCls).removeClass(this.selectedCls);
var color = (typeof(rgb) == 'object') ? rgb.color : rgb;
if (/#?[a-fA-F0-9]{6}/.test(color)) {
color = /#?([a-fA-F0-9]{6})/.exec(color)[1].toUpperCase();
}
if (/^[a-fA-F0-9]{6}|transparent$/.test(color)) {
if (color != this.value || this.options.allowReselect) {
var co = (color == 'transparent') ? el.find('a.color-transparent') : el.find('a.color-' + color).first();
if (co.length==0)
co = el.find('#'+color).first();
if (co.length==0)
co = el.find('a[color="'+color+'"]').first();
if (co.length>0) {
co.addClass(this.selectedCls);
this.value = color;
}
if (suppressEvent !== true) {
this.fireEvent('select', this, color);
}
}
}
},
updateColors: function(effectcolors, standartcolors, value) { updateColors: function(effectcolors, standartcolors, value) {
if (effectcolors===undefined || standartcolors===undefined) return; if (effectcolors===undefined || standartcolors===undefined) return;

View file

@ -68,7 +68,7 @@ define([
var me = this; var me = this;
Common.NotificationCenter.on('layout:changed', function(area){ Common.NotificationCenter.on('layout:changed', function(area){
Common.Utils.asyncCall(function(e) { Common.Utils.asyncCall(function(e) {
if ( e == 'toolbar' && me.panelChat.$el.is(':visible') ) { if ( (e == 'toolbar' || e == 'status') && me.panelChat.$el.is(':visible') ) {
me.panelChat.updateLayout(true); me.panelChat.updateLayout(true);
me.panelChat.setupAutoSizingTextBox(); me.panelChat.setupAutoSizingTextBox();
} }
@ -148,6 +148,7 @@ define([
if (user) { if (user) {
var usermodel = new Common.Models.User({ var usermodel = new Common.Models.User({
id : user.asc_getId(), id : user.asc_getId(),
idOriginal : user.asc_getIdOriginal(),
username : user.asc_getUserName(), username : user.asc_getUserName(),
online : true, online : true,
color : user.asc_getColor(), color : user.asc_getColor(),
@ -170,6 +171,7 @@ define([
if (!user) { if (!user) {
usersStore.add(new Common.Models.User({ usersStore.add(new Common.Models.User({
id : change.asc_getId(), id : change.asc_getId(),
idOriginal : change.asc_getIdOriginal(),
username : change.asc_getUserName(), username : change.asc_getUserName(),
online : change.asc_getState(), online : change.asc_getState(),
color : change.asc_getColor(), color : change.asc_getColor(),
@ -188,7 +190,7 @@ define([
var array = []; var array = [];
messages.forEach(function(msg) { messages.forEach(function(msg) {
array.push(new Common.Models.ChatMessage({ array.push(new Common.Models.ChatMessage({
userid : msg.user, userid : msg.useridoriginal,
message : msg.message, message : msg.message,
username : msg.username username : msg.username
})); }));

View file

@ -46,7 +46,8 @@ define([
'core', 'core',
'common/main/lib/model/Comment', 'common/main/lib/model/Comment',
'common/main/lib/collection/Comments', 'common/main/lib/collection/Comments',
'common/main/lib/view/Comments' 'common/main/lib/view/Comments',
'common/main/lib/view/ReviewPopover'
], function () { ], function () {
'use strict'; 'use strict';
@ -67,7 +68,7 @@ define([
], ],
views : [ views : [
'Common.Views.Comments', 'Common.Views.Comments',
'Common.Views.CommentsPopover' 'Common.Views.ReviewPopover'
], ],
sdkViewName : '#id_main', sdkViewName : '#id_main',
subEditStrings : {}, subEditStrings : {},
@ -101,6 +102,27 @@ define([
// work handlers // work handlers
'comment:closeEditing': _.bind(this.closeEditing, this)
},
'Common.Views.ReviewPopover': {
// comments handlers
'comment:change': _.bind(this.onChangeComment, this),
'comment:remove': _.bind(this.onRemoveComment, this),
'comment:resolve': _.bind(this.onResolveComment, this),
'comment:show': _.bind(this.onShowComment, this),
// reply handlers
'comment:addReply': _.bind(this.onAddReplyComment, this),
'comment:changeReply': _.bind(this.onChangeReplyComment, this),
'comment:removeReply': _.bind(this.onRemoveReplyComment, this),
'comment:editReply': _.bind(this.onShowEditReplyComment, this),
// work handlers
'comment:closeEditing': _.bind(this.closeEditing, this), 'comment:closeEditing': _.bind(this.closeEditing, this),
'comment:disableHint': _.bind(this.disableHint, this), 'comment:disableHint': _.bind(this.disableHint, this),
'comment:addDummyComment': _.bind(this.onAddDummyComment, this) 'comment:addDummyComment': _.bind(this.onAddDummyComment, this)
@ -111,7 +133,7 @@ define([
Common.NotificationCenter.on('app:comment:add', _.bind(this.onAppAddComment, this)); Common.NotificationCenter.on('app:comment:add', _.bind(this.onAppAddComment, this));
Common.NotificationCenter.on('layout:changed', function(area){ Common.NotificationCenter.on('layout:changed', function(area){
Common.Utils.asyncCall(function(e) { Common.Utils.asyncCall(function(e) {
if ( e == 'toolbar' && this.view.$el.is(':visible') ) { if ( (e == 'toolbar' || e == 'status') && this.view.$el.is(':visible') ) {
this.onAfterShow(); this.onAfterShow();
} }
}, this, area); }, this, area);
@ -125,15 +147,16 @@ define([
this.popoverComments = new Common.Collections.Comments(); this.popoverComments = new Common.Collections.Comments();
if (this.popoverComments) { if (this.popoverComments) {
this.popoverComments.comparator = function (collection) { return -collection.get('time'); }; this.popoverComments.comparator = function (collection) { return collection.get('time'); };
} }
this.view = this.createView('Common.Views.Comments', { this.view = this.createView('Common.Views.Comments', { store: this.collection });
store : this.collection,
popoverComments : this.popoverComments
});
this.view.render(); this.view.render();
this.userCollection = this.getApplication().getCollection('Common.Collections.Users');
this.userCollection.on('reset', _.bind(this.onUpdateUsers, this));
this.userCollection.on('add', _.bind(this.onUpdateUsers, this));
this.bindViewEvents(this.view, this.events); this.bindViewEvents(this.view, this.events);
}, },
setConfig: function (data, api) { setConfig: function (data, api) {
@ -162,7 +185,6 @@ define([
this.api.asc_registerCallback('asc_onShowComment', _.bind(this.onApiShowComment, this)); this.api.asc_registerCallback('asc_onShowComment', _.bind(this.onApiShowComment, this));
this.api.asc_registerCallback('asc_onHideComment', _.bind(this.onApiHideComment, this)); this.api.asc_registerCallback('asc_onHideComment', _.bind(this.onApiHideComment, this));
this.api.asc_registerCallback('asc_onUpdateCommentPosition', _.bind(this.onApiUpdateCommentPosition, this)); this.api.asc_registerCallback('asc_onUpdateCommentPosition', _.bind(this.onApiUpdateCommentPosition, this));
this.api.asc_registerCallback('asc_onDocumentPlaceChanged', _.bind(this.onDocumentPlaceChanged, this)); this.api.asc_registerCallback('asc_onDocumentPlaceChanged', _.bind(this.onDocumentPlaceChanged, this));
} }
}, },
@ -267,7 +289,7 @@ define([
if (comment.get('unattached')) { if (comment.get('unattached')) {
if (this.getPopover()) { if (this.getPopover()) {
this.getPopover().hide(); this.getPopover().hideComments();
return; return;
} }
} }
@ -293,7 +315,7 @@ define([
} }
if (this.getPopover()) { if (this.getPopover()) {
this.getPopover().hide(); this.getPopover().hideComments();
} }
this.isSelectedComment = false; this.isSelectedComment = false;
@ -667,7 +689,7 @@ define([
this.popoverComments.remove(model); this.popoverComments.remove(model);
if (0 === this.popoverComments.length) { if (0 === this.popoverComments.length) {
if (this.getPopover()) { if (this.getPopover()) {
this.getPopover().hide(); this.getPopover().hideComments();
} }
} }
} }
@ -703,9 +725,11 @@ define([
date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) : date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :
((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime()))); ((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime())));
var user = this.userCollection.findOriginalUser(data.asc_getUserId());
comment.set('comment', data.asc_getText()); comment.set('comment', data.asc_getText());
comment.set('userid', data.asc_getUserId()); comment.set('userid', data.asc_getUserId());
comment.set('username', data.asc_getUserName()); comment.set('username', data.asc_getUserName());
comment.set('usercolor', (user) ? user.get('color') : null);
comment.set('resolved', data.asc_getSolved()); comment.set('resolved', data.asc_getSolved());
comment.set('quote', data.asc_getQuoteText()); comment.set('quote', data.asc_getQuoteText());
comment.set('time', date.getTime()); comment.set('time', date.getTime());
@ -721,10 +745,12 @@ define([
dateReply = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) : dateReply = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) :
((data.asc_getReply(i).asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getReply(i).asc_getTime()))); ((data.asc_getReply(i).asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getReply(i).asc_getTime())));
user = this.userCollection.findOriginalUser(data.asc_getReply(i).asc_getUserId());
replies.push(new Common.Models.Reply({ replies.push(new Common.Models.Reply({
id : Common.UI.getId(), id : Common.UI.getId(),
userid : data.asc_getReply(i).asc_getUserId(), userid : data.asc_getReply(i).asc_getUserId(),
username : data.asc_getReply(i).asc_getUserName(), username : data.asc_getReply(i).asc_getUserName(),
usercolor : (user) ? user.get('color') : null,
date : t.dateToLocaleTimeString(dateReply), date : t.dateToLocaleTimeString(dateReply),
reply : data.asc_getReply(i).asc_getText(), reply : data.asc_getReply(i).asc_getText(),
time : dateReply.getTime(), time : dateReply.getTime(),
@ -751,15 +777,14 @@ define([
}, },
onApiLockComment: function (id,userId) { onApiLockComment: function (id,userId) {
var cur = this.findComment(id), var cur = this.findComment(id),
usersStore = null,
user = null; user = null;
if (cur) { if (cur) {
usersStore = this.getApplication().getCollection('Common.Collections.Users'); if (this.userCollection) {
if (usersStore) { user = this.userCollection.findUser(userId);
user = usersStore.findWhere({id: userId});
if (user) { if (user) {
this.getPopover() && this.getPopover().saveText(); this.getPopover() && this.getPopover().saveText();
this.view.saveText();
cur.set('lock', true); cur.set('lock', true);
cur.set('lockuserid', this.view.getUserName(user.get('username'))); cur.set('lockuserid', this.view.getUserName(user.get('username')));
} }
@ -771,6 +796,7 @@ define([
if (cur) { if (cur) {
cur.set('lock', false); cur.set('lock', false);
this.getPopover() && this.getPopover().loadText(); this.getPopover() && this.getPopover().loadText();
this.view.loadText();
} }
}, },
onApiShowComment: function (uids, posX, posY, leftX, opts, hint) { onApiShowComment: function (uids, posX, posY, leftX, opts, hint) {
@ -805,9 +831,8 @@ define([
saveTxtReplyId = '', saveTxtReplyId = '',
comment = null, comment = null,
text = '', text = '',
animate = true; animate = true,
comments = [];
this.popoverComments.reset();
for (i = 0; i < uids.length; ++i) { for (i = 0; i < uids.length; ++i) {
saveTxtId = uids[i]; saveTxtId = uids[i];
@ -845,18 +870,22 @@ define([
this.isSelectedComment = !hint || !this.hintmode; this.isSelectedComment = !hint || !this.hintmode;
this.uids = _.clone(uids); this.uids = _.clone(uids);
this.popoverComments.push(comment); comments.push(comment);
if (!this._dontScrollToComment) if (!this._dontScrollToComment)
this.view.commentsView.scrollToRecord(comment); this.view.commentsView.scrollToRecord(comment);
this._dontScrollToComment = false; this._dontScrollToComment = false;
} }
comments.sort(function (a, b) {
return a.get('time') - b.get('time');
});
this.popoverComments.reset(comments);
if (popover.isVisible()) { if (popover.isVisible()) {
popover.hide(); popover.hide();
} }
popover.setLeftTop(posX, posY, leftX); popover.setLeftTop(posX, posY, leftX);
popover.show(animate, false, true, text); popover.showComments(animate, false, true, text);
} }
}, },
onApiHideComment: function (hint) { onApiHideComment: function (hint) {
@ -880,7 +909,7 @@ define([
}); });
this.getPopover().saveText(true); this.getPopover().saveText(true);
this.getPopover().hide(); this.getPopover().hideComments();
this.collection.clearEditing(); this.collection.clearEditing();
this.popoverComments.clearEditing(); this.popoverComments.clearEditing();
@ -911,9 +940,7 @@ define([
if (this.isModeChanged) if (this.isModeChanged)
this.onApiShowComment(uids, posX, posY, leftX); this.onApiShowComment(uids, posX, posY, leftX);
if (0 === this.popoverComments.length) { if (0 === this.popoverComments.length) {
var comments = [];
this.popoverComments.reset();
for (i = 0; i < uids.length; ++i) { for (i = 0; i < uids.length; ++i) {
saveTxtId = uids[i]; saveTxtId = uids[i];
saveTxtReplyId = uids[i] + '-R'; saveTxtReplyId = uids[i] + '-R';
@ -930,13 +957,17 @@ define([
text = this.subEditStrings[saveTxtReplyId]; text = this.subEditStrings[saveTxtReplyId];
} }
this.popoverComments.push(comment); comments.push(comment);
} }
comments.sort(function (a, b) {
return a.get('time') - b.get('time');
});
this.popoverComments.reset(comments);
useAnimation = true; useAnimation = true;
this.getPopover().show(useAnimation, undefined, undefined, text); this.getPopover().showComments(useAnimation, undefined, undefined, text);
} else if (!this.getPopover().isVisible()) { } else if (!this.getPopover().isVisible()) {
this.getPopover().show(false, undefined, undefined, text); this.getPopover().showComments(false, undefined, undefined, text);
} }
this.getPopover().setLeftTop(posX, posY, leftX, undefined, true); this.getPopover().setLeftTop(posX, posY, leftX, undefined, true);
@ -1071,19 +1102,45 @@ define([
} }
} }
}, },
getPopover: function () { getPopover: function () {
return this.view.getPopover(this.sdkViewName); if (_.isUndefined(this.popover)) {
this.popover = Common.Views.ReviewPopover.prototype.getPopover({
commentsStore : this.popoverComments,
renderTo : this.sdkViewName
});
this.popover.setCommentsStore(this.popoverComments);
}
return this.popover;
}, },
// helpers // helpers
onUpdateUsers: function() {
var users = this.userCollection;
this.collection.each(function (model) {
var user = users.findOriginalUser(model.get('userid'));
model.set('usercolor', (user) ? user.get('color') : null, {silent: true});
model.get('replys').forEach(function (reply) {
user = users.findOriginalUser(reply.get('userid'));
reply.set('usercolor', (user) ? user.get('color') : null, {silent: true});
});
});
this.updateComments(true);
if (this.getPopover().isVisible())
this.getPopover().update(true);
},
readSDKComment: function (id, data) { readSDKComment: function (id, data) {
var date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) : var date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :
((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime()))); ((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime())));
var user = this.userCollection.findOriginalUser(data.asc_getUserId());
var comment = new Common.Models.Comment({ var comment = new Common.Models.Comment({
uid : id, uid : id,
userid : data.asc_getUserId(), userid : data.asc_getUserId(),
username : data.asc_getUserName(), username : data.asc_getUserName(),
usercolor : (user) ? user.get('color') : null,
date : this.dateToLocaleTimeString(date), date : this.dateToLocaleTimeString(date),
quote : data.asc_getQuoteText(), quote : data.asc_getQuoteText(),
comment : data.asc_getText(), comment : data.asc_getText(),
@ -1119,10 +1176,12 @@ define([
date = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) : date = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) :
((data.asc_getReply(i).asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getReply(i).asc_getTime()))); ((data.asc_getReply(i).asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getReply(i).asc_getTime())));
var user = this.userCollection.findOriginalUser(data.asc_getReply(i).asc_getUserId());
replies.push(new Common.Models.Reply({ replies.push(new Common.Models.Reply({
id : Common.UI.getId(), id : Common.UI.getId(),
userid : data.asc_getReply(i).asc_getUserId(), userid : data.asc_getReply(i).asc_getUserId(),
username : data.asc_getReply(i).asc_getUserName(), username : data.asc_getReply(i).asc_getUserName(),
usercolor : (user) ? user.get('color') : null,
date : this.dateToLocaleTimeString(date), date : this.dateToLocaleTimeString(date),
reply : data.asc_getReply(i).asc_getText(), reply : data.asc_getReply(i).asc_getText(),
time : date.getTime(), time : date.getTime(),
@ -1155,12 +1214,14 @@ define([
return; return;
} }
var user = this.userCollection.findOriginalUser(this.currentUserId);
var comment = new Common.Models.Comment({ var comment = new Common.Models.Comment({
id: -1, id: -1,
time: date.getTime(), time: date.getTime(),
date: this.dateToLocaleTimeString(date), date: this.dateToLocaleTimeString(date),
userid: this.currentUserId, userid: this.currentUserId,
username: this.currentUserName, username: this.currentUserName,
usercolor: (user) ? user.get('color') : null,
editTextInPopover: true, editTextInPopover: true,
showReplyInPopover: false, showReplyInPopover: false,
hideAddReply: true, hideAddReply: true,
@ -1196,7 +1257,7 @@ define([
anchor.asc_getY(), anchor.asc_getY(),
this.hintmode ? anchor.asc_getX() : undefined); this.hintmode ? anchor.asc_getX() : undefined);
dialog.show(true, false, true); dialog.showComments(true, false, true);
} }
} }
} }
@ -1214,7 +1275,7 @@ define([
this.popoverComments.reset(); this.popoverComments.reset();
if (this.getPopover().isVisible()) { if (this.getPopover().isVisible()) {
this.getPopover().hide(); this.getPopover().hideComments();
} }
comment.asc_putText(commentVal); comment.asc_putText(commentVal);
comment.asc_putTime(this.utcDateToString(new Date())); comment.asc_putTime(this.utcDateToString(new Date()));
@ -1251,7 +1312,7 @@ define([
}); });
if (dialog.isVisible()) { if (dialog.isVisible()) {
dialog.hide(); dialog.hideComments();
} }
} }
@ -1296,7 +1357,7 @@ define([
anchor.asc_getY(), anchor.asc_getY(),
this.hintmode ? anchor.asc_getX() : undefined); this.hintmode ? anchor.asc_getX() : undefined);
this.getPopover().show(true, false, true); this.getPopover().showComments(true, false, true);
} }
} }
} }

View file

@ -159,7 +159,6 @@ define([
onSetHistoryData: function(opts) { onSetHistoryData: function(opts) {
if (opts.data.error) { if (opts.data.error) {
var config = { var config = {
closable: false,
title: this.notcriticalErrorTitle, title: this.notcriticalErrorTitle,
msg: opts.data.error, msg: opts.data.error,
iconCls: 'warn', iconCls: 'warn',

View file

@ -59,7 +59,7 @@ define([
'render:before' : function (toolbar) { 'render:before' : function (toolbar) {
var appOptions = me.getApplication().getController('Main').appOptions; var appOptions = me.getApplication().getController('Main').appOptions;
if ( appOptions.isEdit && !appOptions.isEditMailMerge && !appOptions.isEditDiagram ) { if ( !appOptions.isEditMailMerge && !appOptions.isEditDiagram ) {
var tab = {action: 'plugins', caption: me.panelPlugins.groupCaption}; var tab = {action: 'plugins', caption: me.panelPlugins.groupCaption};
me.$toolbarPanelPlugins = me.panelPlugins.getPanel(); me.$toolbarPanelPlugins = me.panelPlugins.getPanel();
@ -166,6 +166,7 @@ define([
variation.set_Buttons(itemVar.get('buttons')); variation.set_Buttons(itemVar.get('buttons'));
variation.set_Size(itemVar.get('size')); variation.set_Size(itemVar.get('size'));
variation.set_InitOnSelectionChanged(itemVar.get('initOnSelectionChanged')); variation.set_InitOnSelectionChanged(itemVar.get('initOnSelectionChanged'));
variation.set_Events(itemVar.get('events'));
variationsArr.push(variation); variationsArr.push(variation);
}); });
plugin.set_Variations(variationsArr); plugin.set_Variations(variationsArr);
@ -195,19 +196,22 @@ define([
me.$toolbarPanelPlugins.empty(); me.$toolbarPanelPlugins.empty();
var _group = $('<div class="group"></div>'), var _group = $('<div class="group"></div>'),
rank = -1; rank = -1,
rank_plugins = 0;
collection.each(function (model) { collection.each(function (model) {
var new_rank = model.get('groupRank'); var new_rank = model.get('groupRank');
if (new_rank!==rank && rank>-1) { if (new_rank!==rank && rank>-1 && rank_plugins>0) {
_group.appendTo(me.$toolbarPanelPlugins); _group.appendTo(me.$toolbarPanelPlugins);
$('<div class="separator long"></div>').appendTo(me.$toolbarPanelPlugins); $('<div class="separator long"></div>').appendTo(me.$toolbarPanelPlugins);
_group = $('<div class="group"></div>'); _group = $('<div class="group"></div>');
rank_plugins = 0;
} }
var btn = me.panelPlugins.createPluginButton(model); var btn = me.panelPlugins.createPluginButton(model);
if (btn) { if (btn) {
var $slot = $('<span class="slot"></span>').appendTo(_group); var $slot = $('<span class="slot"></span>').appendTo(_group);
btn.render($slot); btn.render($slot);
rank_plugins++;
} }
rank = new_rank; rank = new_rank;
}); });

View file

@ -87,14 +87,13 @@ define([
if (api) { if (api) {
this.api = api; this.api = api;
if (this.appConfig.isProtectSupport && this.appConfig.isDesktopApp && this.appConfig.isOffline) { if (this.appConfig.isPasswordSupport)
this.api.asc_registerCallback('asc_onDocumentPassword', _.bind(this.onDocumentPassword, this)); this.api.asc_registerCallback('asc_onDocumentPassword', _.bind(this.onDocumentPassword, this));
if (this.appConfig.canProtect) { if (this.appConfig.isSignatureSupport) {
Common.NotificationCenter.on('protect:sign', _.bind(this.onSignatureRequest, this)); Common.NotificationCenter.on('protect:sign', _.bind(this.onSignatureRequest, this));
Common.NotificationCenter.on('protect:signature', _.bind(this.onSignatureClick, this)); Common.NotificationCenter.on('protect:signature', _.bind(this.onSignatureClick, this));
this.api.asc_registerCallback('asc_onSignatureClick', _.bind(this.onSignatureSign, this)); this.api.asc_registerCallback('asc_onSignatureClick', _.bind(this.onSignatureSign, this));
this.api.asc_registerCallback('asc_onUpdateSignatures', _.bind(this.onApiUpdateSignatures, this)); this.api.asc_registerCallback('asc_onUpdateSignatures', _.bind(this.onApiUpdateSignatures, this));
}
} }
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this));
} }

View file

@ -47,6 +47,7 @@ define([
'common/main/lib/model/ReviewChange', 'common/main/lib/model/ReviewChange',
'common/main/lib/collection/ReviewChanges', 'common/main/lib/collection/ReviewChanges',
'common/main/lib/view/ReviewChanges', 'common/main/lib/view/ReviewChanges',
'common/main/lib/view/ReviewPopover',
'common/main/lib/view/LanguageDialog' 'common/main/lib/view/LanguageDialog'
], function () { ], function () {
'use strict'; 'use strict';
@ -58,7 +59,7 @@ define([
], ],
views : [ views : [
'Common.Views.ReviewChanges', 'Common.Views.ReviewChanges',
'Common.Views.ReviewChangesPopover' 'Common.Views.ReviewPopover'
], ],
sdkViewName : '#id_main', sdkViewName : '#id_main',
@ -69,8 +70,6 @@ define([
'settings:apply': this.applySettings.bind(this) 'settings:apply': this.applySettings.bind(this)
}, },
'Common.Views.ReviewChanges': { 'Common.Views.ReviewChanges': {
// comments handlers
'reviewchange:accept': _.bind(this.onAcceptClick, this), 'reviewchange:accept': _.bind(this.onAcceptClick, this),
'reviewchange:reject': _.bind(this.onRejectClick, this), 'reviewchange:reject': _.bind(this.onRejectClick, this),
'reviewchange:delete': _.bind(this.onDeleteClick, this), 'reviewchange:delete': _.bind(this.onDeleteClick, this),
@ -83,6 +82,11 @@ define([
'reviewchange:accept': _.bind(this.onAcceptClick, this), 'reviewchange:accept': _.bind(this.onAcceptClick, this),
'reviewchange:reject': _.bind(this.onRejectClick, this), 'reviewchange:reject': _.bind(this.onRejectClick, this),
'reviewchange:preview': _.bind(this.onBtnPreviewClick, this) 'reviewchange:preview': _.bind(this.onBtnPreviewClick, this)
},
'Common.Views.ReviewPopover': {
'reviewchange:accept': _.bind(this.onAcceptClick, this),
'reviewchange:reject': _.bind(this.onRejectClick, this),
'reviewchange:delete': _.bind(this.onDeleteClick, this)
} }
}); });
}, },
@ -96,6 +100,9 @@ define([
Common.NotificationCenter.on('spelling:turn', this.onTurnSpelling.bind(this)); Common.NotificationCenter.on('spelling:turn', this.onTurnSpelling.bind(this));
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this)); Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
this.userCollection.on('reset', _.bind(this.onUpdateUsers, this));
this.userCollection.on('add', _.bind(this.onUpdateUsers, this));
}, },
setConfig: function (data, api) { setConfig: function (data, api) {
this.setApi(api); this.setApi(api);
@ -119,12 +126,7 @@ define([
setMode: function(mode) { setMode: function(mode) {
this.appConfig = mode; this.appConfig = mode;
this.popoverChanges = new Common.Collections.ReviewChanges(); this.popoverChanges = new Common.Collections.ReviewChanges();
this.view = this.createView('Common.Views.ReviewChanges', { mode: mode });
this.view = this.createView('Common.Views.ReviewChanges', {
// store : this.collection,
popoverChanges : this.popoverChanges,
mode : mode
});
return this; return this;
}, },
@ -150,10 +152,10 @@ define([
if (animate) { if (animate) {
if ( this.getPopover().isVisible() ) this.getPopover().hide(); if ( this.getPopover().isVisible() ) this.getPopover().hide();
this.getPopover().setLeftTop(posX+25, posY); this.getPopover().setLeftTop(posX, posY);
} }
this.getPopover().show(animate, lock, lockUser); this.getPopover().showReview(animate, lock, lockUser);
if (!this.appConfig.isReviewOnly && this._state.lock !== lock) { if (!this.appConfig.isReviewOnly && this._state.lock !== lock) {
this.view.btnAccept.setDisabled(lock==true); this.view.btnAccept.setDisabled(lock==true);
@ -172,8 +174,8 @@ define([
this._state.posx = this._state.posy = -1000; this._state.posx = this._state.posy = -1000;
this._state.changes_length = 0; this._state.changes_length = 0;
this._state.popoverVisible = false; this._state.popoverVisible = false;
this.getPopover().hide();
this.popoverChanges.reset(); this.popoverChanges.reset();
this.getPopover().hideReview();
} }
} }
}, },
@ -191,7 +193,7 @@ define([
} else if (this.popoverChanges.length>0) { } else if (this.popoverChanges.length>0) {
if (!this.getPopover().isVisible()) if (!this.getPopover().isVisible())
this.getPopover().show(false); this.getPopover().show(false);
this.getPopover().setLeftTop(posX+25, posY); this.getPopover().setLeftTop(posX, posY);
} }
} }
}, },
@ -205,7 +207,14 @@ define([
}, },
getPopover: function () { getPopover: function () {
return this.view.getPopover(this.sdkViewName); if (this.appConfig.canReview && _.isUndefined(this.popover)) {
this.popover = Common.Views.ReviewPopover.prototype.getPopover({
reviewStore : this.popoverChanges,
renderTo : this.sdkViewName
});
this.popover.setReviewStore(this.popoverChanges);
}
return this.popover;
}, },
// helpers // helpers
@ -386,12 +395,12 @@ define([
} }
var date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime()), var date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime()),
color = item.get_UserColor(), user = me.userCollection.findOriginalUser(item.get_UserId()),
change = new Common.Models.ReviewChange({ change = new Common.Models.ReviewChange({
uid : Common.UI.getId(), uid : Common.UI.getId(),
userid : item.get_UserId(), userid : item.get_UserId(),
username : item.get_UserName(), username : item.get_UserName(),
usercolor : '#'+Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), usercolor : (user) ? user.get('color') : null,
date : me.dateToLocaleTimeString(date), date : me.dateToLocaleTimeString(date),
changetext : changetext, changetext : changetext,
id : Common.UI.getId(), id : Common.UI.getId(),
@ -488,7 +497,7 @@ define([
state = (state == 'on'); state = (state == 'on');
this.api.asc_SetTrackRevisions(state); this.api.asc_SetTrackRevisions(state);
Common.localStorage.setItem(this.view.appPrefix + "track-changes", state ? 1 : 0); Common.localStorage.setItem(this.view.appPrefix + "track-changes-" + (this.appConfig.fileKey || ''), state ? 1 : 0);
this.view.turnChanges(state); this.view.turnChanges(state);
} }
@ -603,17 +612,9 @@ define([
me.api.asc_SetTrackRevisions(state); me.api.asc_SetTrackRevisions(state);
}; };
if ( config.isReviewOnly ) { var state = config.isReviewOnly || Common.localStorage.getBool(me.view.appPrefix + "track-changes-" + (config.fileKey || ''));
me.api.asc_HaveRevisionsChanges() && me.view.markChanges(true); me.api.asc_HaveRevisionsChanges() && me.view.markChanges(true);
_setReviewStatus(state);
_setReviewStatus(true);
} else
if ( !me.api.asc_IsTrackRevisions() ) {
_setReviewStatus(false);
} else {
me.api.asc_HaveRevisionsChanges() && me.view.markChanges(true);
_setReviewStatus(Common.localStorage.getBool(me.view.appPrefix + "track-changes"));
}
if ( typeof (me.appConfig.customization) == 'object' && (me.appConfig.customization.showReviewChanges==true) ) { if ( typeof (me.appConfig.customization) == 'object' && (me.appConfig.customization.showReviewChanges==true) ) {
me.dlgChanges = (new Common.Views.ReviewChangesDialog({ me.dlgChanges = (new Common.Views.ReviewChangesDialog({
@ -686,6 +687,14 @@ define([
this.SetDisabled(true); this.SetDisabled(true);
}, },
onUpdateUsers: function() {
var users = this.userCollection;
this.popoverChanges && this.popoverChanges.each(function (model) {
var user = users.findOriginalUser(model.get('userid'));
model.set('usercolor', (user) ? user.get('color') : null);
});
},
textInserted: '<b>Inserted:</b>', textInserted: '<b>Inserted:</b>',
textDeleted: '<b>Deleted:</b>', textDeleted: '<b>Deleted:</b>',
textParaInserted: '<b>Paragraph Inserted</b> ', textParaInserted: '<b>Paragraph Inserted</b> ',

View file

@ -55,6 +55,7 @@ define([
uid : 0, // asc uid : 0, // asc
userid : 0, userid : 0,
username : 'Guest', username : 'Guest',
usercolor : null,
date : undefined, date : undefined,
quote : '', quote : '',
comment : '', comment : '',
@ -84,6 +85,7 @@ define([
time : 0, // acs time : 0, // acs
userid : 0, userid : 0,
username : 'Guest', username : 'Guest',
usercolor : null,
reply : '', reply : '',
date : undefined, date : undefined,

View file

@ -55,7 +55,7 @@ define([
uid : 0, // asc uid : 0, // asc
userid : 0, userid : 0,
username : 'Guest', username : 'Guest',
usercolor : '#ee3525', usercolor : null,
date : undefined, date : undefined,
changetext : '', changetext : '',
lock : false, lock : false,

View file

@ -57,6 +57,7 @@ define([
return { return {
iid : Common.UI.getId(), // internal id for rendering iid : Common.UI.getId(), // internal id for rendering
id : undefined, id : undefined,
idOriginal : undefined,
username : 'Guest', username : 'Guest',
color : '#fff', color : '#fff',
colorval : null, colorval : null,

View file

@ -3,7 +3,9 @@
<!-- comment block --> <!-- comment block -->
<div class="user-name"><%=scope.getUserName(username)%></div> <div class="user-name">
<div class="color" style="display: inline-block; background-color: <% if (usercolor!==null) { %><%=usercolor%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(username) %>
</div>
<div class="user-date"><%=date%></div> <div class="user-date"><%=date%></div>
<% if (quote!==null && quote!=='') { %> <% if (quote!==null && quote!=='') { %>
<div class="user-quote"><%=scope.getFixedQuote(quote)%></div> <div class="user-quote"><%=scope.getFixedQuote(quote)%></div>
@ -24,7 +26,9 @@
<div class="reply-arrow img-commonctrl"></div> <div class="reply-arrow img-commonctrl"></div>
<% _.each(replys, function (item) { %> <% _.each(replys, function (item) { %>
<div class="reply-item-ct"> <div class="reply-item-ct">
<div class="user-name"><%=scope.getUserName(item.get("username"))%></div> <div class="user-name">
<div class="color" style="display: inline-block; background-color: <% if (item.get("usercolor")!==null) { %><%=item.get("usercolor")%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(item.get("username")) %>
</div>
<div class="user-date"><%=item.get("date")%></div> <div class="user-date"><%=item.get("date")%></div>
<% if (!item.get("editText")) { %> <% if (!item.get("editText")) { %>
<div class="user-message" data-can-copy="true"><%=scope.pickLink(item.get("reply"))%></div> <div class="user-message" data-can-copy="true"><%=scope.pickLink(item.get("reply"))%></div>

View file

@ -2,7 +2,9 @@
<!-- comment block --> <!-- comment block -->
<div class="user-name"><%=scope.getUserName(username)%></div> <div class="user-name">
<div class="color" style="display: inline-block; background-color: <% if (usercolor!==null) { %><%=usercolor%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(username) %>
</div>
<div class="user-date"><%=date%></div> <div class="user-date"><%=date%></div>
<% if (!editTextInPopover || hint) { %> <% if (!editTextInPopover || hint) { %>
<div oo_editor_input="true" tabindex="-1" class="user-message user-select"><%=scope.pickLink(comment)%></div> <div oo_editor_input="true" tabindex="-1" class="user-message user-select"><%=scope.pickLink(comment)%></div>
@ -24,7 +26,9 @@
<div class="reply-arrow img-commonctrl"></div> <div class="reply-arrow img-commonctrl"></div>
<% _.each(replys, function (item) { %> <% _.each(replys, function (item) { %>
<div class="reply-item-ct"> <div class="reply-item-ct">
<div class="user-name"><%=scope.getUserName(item.get("username"))%></div> <div class="user-name">
<div class="color" style="display: inline-block; background-color: <% if (item.get("usercolor")!==null) { %><%=item.get("usercolor")%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(item.get("username")) %>
</div>
<div class="user-date"><%=item.get("date")%></div> <div class="user-date"><%=item.get("date")%></div>
<% if (!item.get("editTextInPopover")) { %> <% if (!item.get("editTextInPopover")) { %>
<div oo_editor_input="true" tabindex="-1" class="user-message user-select"><%=scope.pickLink(item.get("reply"))%></div> <div oo_editor_input="true" tabindex="-1" class="user-message user-select"><%=scope.pickLink(item.get("reply"))%></div>

View file

@ -1,5 +1,7 @@
<div id="<%=id%>" class="user-comment-item"> <div id="<%=id%>" class="user-comment-item">
<div class="user-name-colored"><span style="background-color:<%=usercolor%>;"><%=scope.getUserName(username)%></span></div> <div class="user-name">
<div class="color" style="display: inline-block; background-color: <% if (usercolor!==null) { %><%=usercolor%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(username) %>
</div>
<div class="user-date"><%=date%></div> <div class="user-date"><%=date%></div>
<div class="user-message limit-height"><%=changetext%></div> <div class="user-message limit-height"><%=changetext%></div>
<div class="edit-ct"> <div class="edit-ct">

View file

@ -103,7 +103,8 @@ Common.Utils = _.extend(new(function() {
Chart : 7, Chart : 7,
MailMerge : 8, MailMerge : 8,
Signature : 9, Signature : 9,
Pivot : 10 Pivot : 10,
Cell : 11
}, },
isMobile = /android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent || navigator.vendor || window.opera), isMobile = /android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent || navigator.vendor || window.opera),
me = this, me = this,
@ -585,6 +586,7 @@ Common.Utils.isBrowserSupported = function() {
}; };
Common.Utils.showBrowserRestriction = function() { Common.Utils.showBrowserRestriction = function() {
if (document.getElementsByClassName && document.getElementsByClassName('app-error-panel').length>0) return;
var editor = (window.DE ? 'Document' : window.SSE ? 'Spreadsheet' : window.PE ? 'Presentation' : 'that'); var editor = (window.DE ? 'Document' : window.SSE ? 'Spreadsheet' : window.PE ? 'Presentation' : 'that');
var newDiv = document.createElement("div"); var newDiv = document.createElement("div");
newDiv.innerHTML = '<div class="app-error-panel">' + newDiv.innerHTML = '<div class="app-error-panel">' +

View file

@ -60,22 +60,23 @@ define([
storeMessages: undefined, storeMessages: undefined,
tplUser: ['<li id="<%= user.get("iid") %>"<% if (!user.get("online")) { %> class="offline"<% } %>>', tplUser: ['<li id="<%= user.get("iid") %>"<% if (!user.get("online")) { %> class="offline"<% } %>>',
'<div class="name"><%= scope.getUserName(user.get("username")) %>', '<div class="name"><div class="color" style="background-color: <%= user.get("color") %>;" ></div><%= scope.getUserName(user.get("username")) %>',
'<div class="color" style="background-color: <%= user.get("color") %>;" ></div>',
'</div>', '</div>',
'</li>'].join(''), '</li>'].join(''),
templateUserList: _.template('<ul>' + templateUserList: _.template('<ul>' +
'<% _.each(users, function(item) { %>' + '<% for (originalId in users) { %>' +
'<%= _.template(usertpl)({user: item, scope: scope}) %>' + '<%= _.template(usertpl)({user: users[originalId][0], scope: scope}) %>' +
'<% }); %>' + '<% } %>' +
'</ul>'), '</ul>'),
tplMsg: ['<li>', tplMsg: ['<li>',
'<% if (msg.get("type")==1) { %>', '<% if (msg.get("type")==1) { %>',
'<div class="message service" data-can-copy="true"><%= msg.get("message") %></div>', '<div class="message service" data-can-copy="true"><%= msg.get("message") %></div>',
'<% } else { %>', '<% } else { %>',
'<div class="user" data-can-copy="true" style="color: <%= msg.get("usercolor") %>;"><%= scope.getUserName(msg.get("username")) %></div>', '<div class="user-name" data-can-copy="true">',
'<div class="color" style="display: inline-block; background-color: <% if (msg.get("usercolor")!==null) { %><%=msg.get("usercolor")%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(msg.get("username")) %>',
'</div>',
'<label class="message user-select" data-can-copy="true"><%= msg.get("message") %></label>', '<label class="message user-select" data-can-copy="true"><%= msg.get("message") %></label>',
'<% } %>', '<% } %>',
'</li>'].join(''), '</li>'].join(''),
@ -98,8 +99,8 @@ define([
Common.UI.BaseView.prototype.initialize.call(this, arguments); Common.UI.BaseView.prototype.initialize.call(this, arguments);
this.storeUsers.bind({ this.storeUsers.bind({
add : _.bind(this._onAddUser, this), add : _.bind(this._onResetUsers, this),
change : _.bind(this._onUsersChanged, this), change : _.bind(this._onResetUsers, this),
reset : _.bind(this._onResetUsers, this) reset : _.bind(this._onResetUsers, this)
}); });
@ -160,23 +161,10 @@ define([
} }
}, },
_onAddUser: function(m, c, opts) {
if (this.panelUsers) {
this.panelUsers.find('ul').append(_.template(this.tplUser)({user: m, scope: this}));
this.panelUsers.scroller.update({minScrollbarLength : 25, alwaysVisibleY: true});
}
},
_onUsersChanged: function(m) {
if (m.changed.online != undefined && this.panelUsers) {
this.panelUsers.find('#' + m.get('iid'))[m.changed.online?'removeClass':'addClass']('offline');
this.panelUsers.scroller.update({minScrollbarLength : 25, alwaysVisibleY: true});
}
},
_onResetUsers: function(c, opts) { _onResetUsers: function(c, opts) {
if (this.panelUsers) { if (this.panelUsers) {
this.panelUsers.html(this.templateUserList({users: c.models, usertpl: this.tplUser, scope: this})); this.panelUsers.html(this.templateUserList({users: this.storeUsers.chain().filter(function(item){return item.get('online');}).groupBy(function(item) {return item.get('idOriginal');}).value(),
usertpl: this.tplUser, scope: this}));
this.panelUsers.scroller.update({minScrollbarLength : 25, alwaysVisibleY: true}); this.panelUsers.scroller.update({minScrollbarLength : 25, alwaysVisibleY: true});
} }
}, },
@ -217,9 +205,9 @@ define([
}, },
_prepareMessage: function(m) { _prepareMessage: function(m) {
var user = this.storeUsers.findUser(m.get('userid')); var user = this.storeUsers.findOriginalUser(m.get('userid'));
m.set({ m.set({
usercolor : user ? user.get('color') : '#000', usercolor : user ? user.get('color') : null,
message : this._pickLink(Common.Utils.String.htmlEncode(m.get('message'))) message : this._pickLink(Common.Utils.String.htmlEncode(m.get('message')))
}, {silent:true}); }, {silent:true});
}, },

View file

@ -48,14 +48,13 @@ Common.Views = Common.Views || {};
define([ define([
'text!common/main/lib/template/Comments.template', 'text!common/main/lib/template/Comments.template',
'text!common/main/lib/template/CommentsPanel.template', 'text!common/main/lib/template/CommentsPanel.template',
'text!common/main/lib/template/CommentsPopover.template',
'common/main/lib/util/utils', 'common/main/lib/util/utils',
'common/main/lib/component/Button', 'common/main/lib/component/Button',
'common/main/lib/component/ComboBox', 'common/main/lib/component/ComboBox',
'common/main/lib/component/DataView', 'common/main/lib/component/DataView',
'common/main/lib/component/Layout', 'common/main/lib/component/Layout',
'common/main/lib/component/Window' 'common/main/lib/component/Window'
], function (commentsTemplate, panelTemplate, popoverTemplate) { ], function (commentsTemplate, panelTemplate) {
'use strict'; 'use strict';
function replaceWords (template, words) { function replaceWords (template, words) {
@ -73,757 +72,6 @@ define([
return tpl; return tpl;
} }
Common.Views.CommentsPopover = Common.UI.Window.extend({
// Window
initialize : function (options) {
var _options = {};
_.extend(_options, {
closable : false,
width : 265,
height : 120,
header : false,
modal : false
}, options);
this.template = options.template || [
'<div class="box">',
'<div id="id-comments-popover" class="comments-popover"></div>',
'<div id="id-comments-arrow" class="comments-arrow"></div>',
'</div>'
].join('');
this.store = options.store;
this.delegate = options.delegate;
_options.tpl = _.template(this.template)(_options);
this.arrow = {margin: 20, width: 12, height: 34};
this.sdkBounds = {width: 0, height: 0, padding: 10, paddingTop: 20};
Common.UI.Window.prototype.initialize.call(this, _options);
},
render: function () {
Common.UI.Window.prototype.render.call(this);
var me = this,
t = this.delegate,
window = this.$window;
window.css({
height: '',
minHeight: '',
overflow: 'hidden',
position: 'absolute',
zIndex: '990'
});
// for spreadsheets - bug 23127
// if ($('#ws-h-scrollbar').length) {
// window.css({zIndex: '5'});
// }
var body = window.find('.body');
if (body) {
body.css('position', 'relative');
}
window.on('click', _.bind(function() {
window.css({zIndex: '991'});
Common.NotificationCenter.trigger('comments:click');
}, this));
Common.NotificationCenter.on('review:click', function() {
window.css({zIndex: '990'});
});
var PopoverDataView = Common.UI.DataView.extend((function() {
var parentView = me;
return {
options : {
handleSelect: false,
scrollable: true,
template: _.template('<div class="dataview-ct inner" style="overflow-y: hidden;"></div>')
},
getTextBox: function () {
var text = $(this.el).find('textarea');
return (text && text.length) ? text : undefined;
},
setFocusToTextBox: function (blur) {
var text = $(this.el).find('textarea');
if (blur) {
text.blur();
} else {
if (text && text.length) {
var val = text.val();
text.focus();
text.val('');
text.val(val);
}
}
},
getActiveTextBoxVal: function () {
var text = $(this.el).find('textarea');
return (text && text.length) ? text.val().trim() : '';
},
autoHeightTextBox: function () {
var view = this,
textBox = this.$el.find('textarea'),
domTextBox = null,
minHeight = 50,
lineHeight = 0,
scrollPos = 0,
oldHeight = 0,
newHeight = 0;
function updateTextBoxHeight() {
scrollPos = $(view.scroller.el).scrollTop();
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
textBox.css({height: (domTextBox.scrollHeight + lineHeight) + 'px'});
parentView.calculateSizeOfContent();
} else {
oldHeight = domTextBox.clientHeight;
if (oldHeight >= minHeight) {
textBox.css({height: minHeight + 'px'});
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
newHeight = Math.max(domTextBox.scrollHeight + lineHeight, minHeight);
textBox.css({height: newHeight + 'px'});
}
parentView.calculateSizeOfContent();
parentView.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
parentView.calculateSizeOfContent();
}
}
view.scroller.scrollTop(scrollPos);
view.autoScrollToEditButtons();
}
if (textBox && textBox.length) {
domTextBox = textBox.get(0);
if (domTextBox) {
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
updateTextBoxHeight();
textBox.bind('input propertychange', updateTextBoxHeight)
}
}
this.textBox = textBox;
},
clearTextBoxBind: function () {
if (this.textBox) {
this.textBox.unbind('input propertychange');
this.textBox = undefined;
}
},
autoScrollToEditButtons: function () {
var button = $('#id-comments-change-popover'), // TODO: add to cache
btnBounds = null,
contentBounds = this.el.getBoundingClientRect(),
moveY = 0,
padding = 7;
if (button.length) {
btnBounds = button.get(0).getBoundingClientRect();
if (btnBounds && contentBounds) {
moveY = contentBounds.bottom - (btnBounds.bottom + padding);
if (moveY < 0) {
this.scroller.scrollTop(this.scroller.getScrollTop() - moveY);
}
}
}
}
}
})());
if (PopoverDataView) {
if (this.commentsView) {
this.commentsView.render($('#id-comments-popover'));
this.commentsView.onResetItems();
} else {
this.commentsView = new PopoverDataView({
el: $('#id-comments-popover'),
store: me.store,
itemTemplate: _.template(replaceWords(popoverTemplate, {
textAddReply: t.textAddReply,
textAdd: t.textAdd,
textCancel: t.textCancel,
textEdit: t.textEdit,
textReply: t.textReply,
textClose: t.textClose,
maxCommLength: Asc.c_oAscMaxCellOrCommentLength
})
)
});
var addtooltip = function (dataview, view, record) {
if (view.tipsArray) {
view.tipsArray.forEach(function(item){
item.remove();
});
}
var arr = [],
btns = $(view.el).find('.btn-resolve');
btns.tooltip({title: t.textResolve, placement: 'cursor'});
btns.each(function(idx, item){
arr.push($(item).data('bs.tooltip').tip());
});
btns = $(view.el).find('.btn-resolve-check');
btns.tooltip({title: t.textOpenAgain, placement: 'cursor'});
btns.each(function(idx, item){
arr.push($(item).data('bs.tooltip').tip());
});
view.tipsArray = arr;
this.autoHeightTextBox();
};
var onCommentsViewMouseOver = function() {
me._isMouseOver = true;
};
var onCommentsViewMouseOut = function() {
me._isMouseOver = false;
};
this.commentsView.on('item:add', addtooltip);
this.commentsView.on('item:remove', addtooltip);
this.commentsView.on('item:change', addtooltip);
this.commentsView.cmpEl.on('mouseover', onCommentsViewMouseOver).on('mouseout', onCommentsViewMouseOut);
this.commentsView.on('item:click', function (picker, item, record, e) {
var btn, showEditBox, showReplyBox, commentId, replyId, hideAddReply;
function readdresolves() {
me.update();
}
btn = $(e.target);
if (btn) {
showEditBox = record.get('editTextInPopover');
showReplyBox = record.get('showReplyInPopover');
hideAddReply = record.get('hideAddReply');
commentId = record.get('uid');
replyId = btn.attr('data-value');
if (record.get('hint')) {
t.fireEvent('comment:disableHint', [record]);
return;
}
if (btn.hasClass('btn-edit')) {
if (!_.isUndefined(replyId)) {
t.fireEvent('comment:closeEditing', [commentId]);
t.fireEvent('comment:editReply', [commentId, replyId, true]);
this.replyId = replyId;
this.autoHeightTextBox();
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
readdresolves();
me.hookTextBox();
this.autoScrollToEditButtons();
this.setFocusToTextBox();
} else {
if (!showEditBox) {
t.fireEvent('comment:closeEditing');
record.set('editTextInPopover', true);
t.fireEvent('comment:show', [commentId]);
this.autoHeightTextBox();
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
readdresolves();
me.hookTextBox();
this.autoScrollToEditButtons();
this.setFocusToTextBox();
}
}
} else if (btn.hasClass('btn-delete')) {
if (!_.isUndefined(replyId)) {
t.fireEvent('comment:removeReply', [commentId, replyId]);
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
} else {
t.fireEvent('comment:remove', [commentId]);
}
t.fireEvent('comment:closeEditing');
readdresolves();
} else if (btn.hasClass('user-reply')) {
t.fireEvent('comment:closeEditing');
record.set('showReplyInPopover', true);
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
readdresolves();
this.autoHeightTextBox();
me.hookTextBox();
this.autoScrollToEditButtons();
this.setFocusToTextBox();
} else if (btn.hasClass('btn-reply', false)) {
if (showReplyBox) {
this.clearTextBoxBind();
t.fireEvent('comment:addReply', [commentId, this.getActiveTextBoxVal()]);
t.fireEvent('comment:closeEditing');
readdresolves();
}
} else if (btn.hasClass('btn-close', false)) {
t.fireEvent('comment:closeEditing', [commentId]);
me.calculateSizeOfContent();
t.fireEvent('comment:show', [commentId]);
readdresolves();
} else if (btn.hasClass('btn-inner-edit', false)) {
if (record.get('dummy')) {
var commentVal = this.getActiveTextBoxVal();
if (commentVal.length>0)
t.fireEvent('comment:addDummyComment', [commentVal]);
else {
var text = me.$window.find('textarea:not(.user-message)');
if (text && text.length)
setTimeout(function(){
text.focus();
}, 10);
}
return;
}
this.clearTextBoxBind();
if (!_.isUndefined(this.replyId)) {
t.fireEvent('comment:changeReply', [commentId, this.replyId, this.getActiveTextBoxVal()]);
this.replyId = undefined;
t.fireEvent('comment:closeEditing');
} else if (showEditBox) {
t.fireEvent('comment:change', [commentId, this.getActiveTextBoxVal()]);
t.fireEvent('comment:closeEditing');
me.calculateSizeOfContent();
}
readdresolves();
} else if (btn.hasClass('btn-inner-close', false)) {
if (record.get('dummy')) {
me.hide();
return;
}
if (hideAddReply && this.getActiveTextBoxVal().length > 0) {
me.saveText();
record.set('hideAddReply', false);
this.getTextBox().val(me.textVal);
this.autoHeightTextBox();
} else {
this.clearTextBoxBind();
t.fireEvent('comment:closeEditing', [commentId]);
}
this.replyId = undefined;
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
readdresolves();
} else if (btn.hasClass('btn-resolve', false)) {
var tip = btn.data('bs.tooltip');
if (tip) tip.dontShow = true;
t.fireEvent('comment:resolve', [commentId]);
readdresolves();
} else if (btn.hasClass('btn-resolve-check', false)) {
var tip = btn.data('bs.tooltip');
if (tip) tip.dontShow = true;
t.fireEvent('comment:resolve', [commentId]);
readdresolves();
}
}
});
me.on({
'show': function () {
me.commentsView.autoHeightTextBox();
me.$window.find('textarea').keydown(function (event) {
if (event.keyCode == Common.UI.Keys.ESC) {
me.hide();
}
});
},
'animate:before': function () {
var text = me.$window.find('textarea');
if (text && text.length)
text.focus();
}
});
}
}
},
show: function (animate, loadText, focus, showText) {
this.options.animate = animate;
var me = this,textBox = this.commentsView.getTextBox();
if (loadText && this.textVal) {
textBox && textBox.val(this.textVal);
}
if (showText && showText.length) {
textBox && textBox.val(showText);
}
// this.calculateSizeOfContent();
// this.commentsView.autoHeightTextBox();
Common.UI.Window.prototype.show.call(this);
if (this.commentsView.scroller) {
this.commentsView.scroller.update({minScrollbarLength: 40, alwaysVisibleY: true});
}
this.hookTextBox();
},
hide: function () {
if (this.handlerHide) {
this.handlerHide ();
}
this.hideTips();
Common.UI.Window.prototype.hide.call(this);
if (!_.isUndefined(this.e) && this.e.keyCode == Common.UI.Keys.ESC) {
this.e.preventDefault();
this.e.stopImmediatePropagation();
this.e = undefined;
}
},
// CommentsPopover
update: function () {
if (this.commentsView && this.commentsView.scroller) {
this.commentsView.scroller.update({minScrollbarLength: 40, alwaysVisibleY: true});
}
},
isVisible: function () {
return (this.$window && this.$window.is(':visible'));
},
setLeftTop: function (posX, posY, leftX, loadInnerValues, retainContent) {
if (!this.$window)
this.render();
if (loadInnerValues) {
posX = this.arrowPosX;
posY = this.arrowPosY;
leftX = this.leftX;
}
if (_.isUndefined(posX) && _.isUndefined(posY))
return;
this.arrowPosX = posX;
this.arrowPosY = posY;
this.leftX = leftX;
var commentsView = $('#id-comments-popover'),
arrowView = $('#id-comments-arrow'),
editorView = $('#editor_sdk'),
editorBounds = null,
sdkBoundsHeight = 0,
sdkBoundsTop = 0,
sdkBoundsLeft = 0,
sdkPanelRight = '',
sdkPanelRightWidth = 0,
sdkPanelLeft = '',
sdkPanelLeftWidth = 0,
sdkPanelThumbs = '', // for PE
sdkPanelThumbsWidth = 0, // for PE
sdkPanelTop = '',
sdkPanelHeight = 0,
leftPos = 0,
windowWidth = 0,
outerHeight = 0,
topPos = 0,
sdkBoundsTopPos = 0;
if (commentsView && arrowView && editorView && editorView.get(0)) {
editorBounds = editorView.get(0).getBoundingClientRect();
if (editorBounds) {
sdkBoundsHeight = editorBounds.height - this.sdkBounds.padding * 2;
this.$window.css({maxHeight: sdkBoundsHeight + 'px'});
this.sdkBounds.width = editorBounds.width;
this.sdkBounds.height = editorBounds.height;
// LEFT CORNER
if (!_.isUndefined(posX)) {
sdkPanelRight = $('#id_vertical_scroll');
if (sdkPanelRight.length) {
sdkPanelRightWidth = (sdkPanelRight.css('display') !== 'none') ? sdkPanelRight.width() : 0;
} else {
sdkPanelRight = $('#ws-v-scrollbar');
if (sdkPanelRight.length) {
sdkPanelRightWidth = (sdkPanelRight.css('display') !== 'none') ? sdkPanelRight.width() : 0;
}
}
this.sdkBounds.width -= sdkPanelRightWidth;
sdkPanelLeft = $('#id_panel_left');
if (sdkPanelLeft.length) {
sdkPanelLeftWidth = (sdkPanelLeft.css('display') !== 'none') ? sdkPanelLeft.width() : 0;
}
sdkPanelThumbs = $('#id_panel_thumbnails');
if (sdkPanelThumbs.length) {
sdkPanelThumbsWidth = (sdkPanelThumbs.css('display') !== 'none') ? sdkPanelThumbs.width() : 0;
this.sdkBounds.width -= sdkPanelThumbsWidth;
}
leftPos = Math.min(sdkBoundsLeft + posX + this.arrow.width, sdkBoundsLeft + this.sdkBounds.width - this.$window.outerWidth() - 25);
leftPos = Math.max(sdkBoundsLeft + sdkPanelLeftWidth + this.arrow.width, leftPos);
arrowView.removeClass('right').addClass('left');
if (!_.isUndefined(leftX)) {
windowWidth = this.$window.outerWidth();
if (windowWidth) {
if ((posX + windowWidth > this.sdkBounds.width - this.arrow.width + 5) && (this.leftX > windowWidth)) {
leftPos = this.leftX - windowWidth + sdkBoundsLeft - this.arrow.width;
arrowView.removeClass('left').addClass('right');
} else {
leftPos = sdkBoundsLeft + posX + this.arrow.width;
}
}
}
this.$window.css('left', leftPos + 'px');
}
// TOP CORNER
if (!_.isUndefined(posY)) {
sdkPanelTop = $('#id_panel_top');
sdkBoundsTopPos = sdkBoundsTop;
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
sdkBoundsTopPos += this.sdkBounds.paddingTop;
} else {
sdkPanelTop = $('#ws-h-scrollbar');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
}
}
this.sdkBounds.height -= sdkPanelHeight;
outerHeight = this.$window.outerHeight();
topPos = Math.min(sdkBoundsTop + sdkBoundsHeight - outerHeight, this.arrowPosY + sdkBoundsTop - this.arrow.height);
topPos = Math.max(topPos, sdkBoundsTopPos);
this.$window.css('top', topPos + 'px');
}
}
}
if (!retainContent)
this.calculateSizeOfContent();
},
calculateSizeOfContent: function (testVisible) {
if (testVisible && !this.$window.is(':visible'))
return;
this.$window.css({overflow: 'hidden'});
var arrowView = $('#id-comments-arrow'),
commentsView = $('#id-comments-popover'),
contentBounds = null,
editorView = null,
editorBounds = null,
sdkBoundsHeight = 0,
sdkBoundsTop = 0,
sdkBoundsLeft = 0,
sdkPanelTop = '',
sdkPanelHeight = 0,
arrowPosY = 0,
windowHeight = 0,
outerHeight = 0,
topPos = 0,
sdkBoundsTopPos = 0;
if (commentsView && arrowView && commentsView.get(0)) {
commentsView.css({height: '100%'});
contentBounds = commentsView.get(0).getBoundingClientRect();
if (contentBounds) {
editorView = $('#editor_sdk');
if (editorView && editorView.get(0)) {
editorBounds = editorView.get(0).getBoundingClientRect();
if (editorBounds) {
sdkBoundsHeight = editorBounds.height - this.sdkBounds.padding * 2;
sdkBoundsTopPos = sdkBoundsTop;
windowHeight = this.$window.outerHeight();
// TOP CORNER
sdkPanelTop = $('#id_panel_top');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
sdkBoundsTopPos += this.sdkBounds.paddingTop;
} else {
sdkPanelTop = $('#ws-h-scrollbar');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
}
}
outerHeight = Math.max(commentsView.outerHeight(), this.$window.outerHeight());
if (sdkBoundsHeight <= outerHeight) {
this.$window.css({
maxHeight: sdkBoundsHeight - sdkPanelHeight + 'px',
top: sdkBoundsTop + sdkPanelHeight + 'px'});
commentsView.css({height: sdkBoundsHeight - sdkPanelHeight - 3 + 'px'});
// arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - sdkPanelHeight - this.arrow.width);
arrowPosY = Math.min(arrowPosY, sdkBoundsHeight - (sdkPanelHeight + this.arrow.margin + this.arrow.width));
arrowView.css({top: arrowPosY + 'px'});
} else {
outerHeight = windowHeight;
if (outerHeight > 0) {
if (contentBounds.top + outerHeight > sdkBoundsHeight + sdkBoundsTop || contentBounds.height === 0) {
topPos = Math.min(sdkBoundsTop + sdkBoundsHeight - outerHeight, this.arrowPosY + sdkBoundsTop - this.arrow.height);
topPos = Math.max(topPos, sdkBoundsTopPos);
this.$window.css({top: topPos + 'px'});
}
}
arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - (sdkBoundsHeight - outerHeight) - this.arrow.width);
arrowPosY = Math.min(arrowPosY, outerHeight - this.arrow.margin - this.arrow.width);
arrowView.css({top: arrowPosY + 'px'});
}
}
}
}
}
this.$window.css({overflow: ''});
},
saveText: function (clear) {
if (this.commentsView && this.commentsView.cmpEl.find('.lock-area').length<1) {
this.textVal = undefined;
if (!clear) {
this.textVal = this.commentsView.getActiveTextBoxVal();
} else {
this.commentsView.clearTextBoxBind();
}
}
},
loadText: function () {
if (this.textVal && this.commentsView) {
var textBox = this.commentsView.getTextBox();
textBox && textBox.val(this.textVal);
}
},
getEditText: function () {
if (this.commentsView) {
return this.commentsView.getActiveTextBoxVal();
}
return undefined;
},
hookTextBox: function () {
var me = this, textBox = this.commentsView.getTextBox();
textBox && textBox.keydown(function (event) {
if ((event.ctrlKey || event.metaKey) && !event.altKey && event.keyCode === Common.UI.Keys.RETURN) {
var buttonChangeComment = $('#id-comments-change-popover');
if (buttonChangeComment && buttonChangeComment.length) {
buttonChangeComment.click();
}
event.stopImmediatePropagation();
} else if (event.keyCode === Common.UI.Keys.TAB) {
var $this, end, start;
start = this.selectionStart;
end = this.selectionEnd;
$this = $(this);
$this.val($this.val().substring(0, start) + '\t' + $this.val().substring(end));
this.selectionStart = this.selectionEnd = start + 1;
event.stopImmediatePropagation();
event.preventDefault();
}
me.e = event;
});
},
hideTips: function() {
if (this.commentsView)
_.each(this.commentsView.dataViewItems, function(item) {
if (item.tipsArray) {
item.tipsArray.forEach(function(item){
item.hide();
});
}
}, this);
},
isCommentsViewMouseOver: function() {
return this._isMouseOver;
}
});
Common.Views.Comments = Common.UI.BaseView.extend(_.extend({ Common.Views.Comments = Common.UI.BaseView.extend(_.extend({
el: '#left-panel-comments', el: '#left-panel-comments',
template: _.template(panelTemplate), template: _.template(panelTemplate),
@ -836,59 +84,57 @@ define([
Common.UI.BaseView.prototype.initialize.call(this, options); Common.UI.BaseView.prototype.initialize.call(this, options);
this.store = this.options.store; this.store = this.options.store;
this.popoverComments = this.options.popoverComments;
}, },
render: function () { render: function () {
var me = this; var me = this;
this.$el.html(this.template({ if (!this.rendered) {
textAddCommentToDoc: me.textAddCommentToDoc, this.$el.html(this.template({
textAddComment: me.textAddComment, textAddCommentToDoc: me.textAddCommentToDoc,
textCancel: me.textCancel, textAddComment: me.textAddComment,
textEnterCommentHint: me.textEnterCommentHint, textCancel: me.textCancel,
maxCommLength: Asc.c_oAscMaxCellOrCommentLength textEnterCommentHint: me.textEnterCommentHint,
})); maxCommLength: Asc.c_oAscMaxCellOrCommentLength
}));
this.buttonAddCommentToDoc = new Common.UI.Button({ this.buttonAddCommentToDoc = new Common.UI.Button({
el: $('.btn.new',this.$el), el: $('.btn.new', this.$el),
enableToggle: false enableToggle: false
}); });
this.buttonAdd = new Common.UI.Button({ this.buttonAdd = new Common.UI.Button({
action: 'add', action: 'add',
el: $('.btn.add', this.$el), el: $('.btn.add', this.$el),
enableToggle: false enableToggle: false
}); });
this.buttonCancel = new Common.UI.Button({ this.buttonCancel = new Common.UI.Button({
el: $('.btn.cancel', this.$el), el: $('.btn.cancel', this.$el),
enableToggle: false enableToggle: false
}); });
this.buttonAddCommentToDoc.on('click', _.bind(this.onClickShowBoxDocumentComment, this)); this.buttonAddCommentToDoc.on('click', _.bind(this.onClickShowBoxDocumentComment, this));
this.buttonAdd.on('click', _.bind(this.onClickAddDocumentComment, this)); this.buttonAdd.on('click', _.bind(this.onClickAddDocumentComment, this));
this.buttonCancel.on('click', _.bind(this.onClickCancelDocumentComment, this)); this.buttonCancel.on('click', _.bind(this.onClickCancelDocumentComment, this));
this.txtComment = $('#comment-msg-new', this.el); this.txtComment = $('#comment-msg-new', this.el);
this.txtComment.keydown(function (event) { this.txtComment.keydown(function (event) {
if ((event.ctrlKey || event.metaKey) && !event.altKey && event.keyCode == Common.UI.Keys.RETURN) { if ((event.ctrlKey || event.metaKey) && !event.altKey && event.keyCode == Common.UI.Keys.RETURN) {
me.onClickAddDocumentComment(); me.onClickAddDocumentComment();
event.stopImmediatePropagation(); event.stopImmediatePropagation();
} else if (event.keyCode === Common.UI.Keys.TAB) { } else if (event.keyCode === Common.UI.Keys.TAB) {
var $this, end, start; var $this, end, start;
start = this.selectionStart; start = this.selectionStart;
end = this.selectionEnd; end = this.selectionEnd;
$this = $(this); $this = $(this);
$this.val($this.val().substring(0, start) + '\t' + $this.val().substring(end)); $this.val($this.val().substring(0, start) + '\t' + $this.val().substring(end));
this.selectionStart = this.selectionEnd = start + 1; this.selectionStart = this.selectionEnd = start + 1;
event.stopImmediatePropagation();
event.preventDefault();
}
});
event.stopImmediatePropagation();
event.preventDefault();
}
});
}
var CommentsPanelDataView = Common.UI.DataView.extend((function() { var CommentsPanelDataView = Common.UI.DataView.extend((function() {
var parentView = me;
return { return {
options : { options : {
@ -983,7 +229,6 @@ define([
})()); })());
if (CommentsPanelDataView) { if (CommentsPanelDataView) {
if (this.commentsView) { if (this.commentsView) {
this.commentsView.render($('.messages-ct',me.el));
this.commentsView.onResetItems(); this.commentsView.onResetItems();
} else { } else {
this.commentsView = new CommentsPanelDataView({ this.commentsView = new CommentsPanelDataView({
@ -1139,8 +384,9 @@ define([
} }
} }
this.setupLayout(); if (!this.rendered) this.setupLayout();
this.update(); this.update();
this.rendered = true;
return this; return this;
}, },
@ -1154,19 +400,6 @@ define([
} }
}, },
getPopover: function (sdkViewName) {
if (_.isUndefined(this.popover)) {
this.popover = new Common.Views.CommentsPopover({
store : this.popoverComments,
delegate : this,
renderTo : sdkViewName
});
}
return this.popover;
},
showEditContainer: function (show) { showEditContainer: function (show) {
var addCommentLink = $('.add-link-ct', this.el), var addCommentLink = $('.add-link-ct', this.el),
newCommentBlock = $('.new-comment-ct', this.el), newCommentBlock = $('.new-comment-ct', this.el),
@ -1204,6 +437,23 @@ define([
this.showEditContainer(false); this.showEditContainer(false);
}, },
saveText: function (clear) {
if (this.commentsView && this.commentsView.cmpEl.find('.lock-area').length<1) {
this.textVal = undefined;
if (!clear) {
this.textVal = this.commentsView.getActiveTextBoxVal();
} else {
this.commentsView.clearTextBoxBind();
}
}
},
loadText: function () {
if (this.textVal && this.commentsView) {
var textBox = this.commentsView.getTextBox();
textBox && textBox.val(this.textVal);
}
},
hookTextBox: function () { hookTextBox: function () {
var me = this, var me = this,
textBox = this.commentsView.getTextBox(); textBox = this.commentsView.getTextBox();

View file

@ -119,7 +119,7 @@ define([
}, },
_onMessage: function(msg) { _onMessage: function(msg) {
if (msg /*&& msg.Referer == "onlyoffice"*/) { if (msg && msg.Referer == "onlyoffice") {
if (msg.needUpdate) if (msg.needUpdate)
this.trigger('accessrights', this, msg.sharingSettings); this.trigger('accessrights', this, msg.sharingSettings);
Common.NotificationCenter.trigger('window:close', this); Common.NotificationCenter.trigger('window:close', this);

View file

@ -57,16 +57,18 @@ define([
var templateUserItem = var templateUserItem =
'<li id="<%= user.get("iid") %>" class="<% if (!user.get("online")) { %> offline <% } if (user.get("view")) {%> viewmode <% } %>">' + '<li id="<%= user.get("iid") %>" class="<% if (!user.get("online")) { %> offline <% } if (user.get("view")) {%> viewmode <% } %>">' +
'<div class="color" style="background-color: <%= user.get("color") %>;" >' + '<div class="user-name">' +
'<label class="name"><%= fnEncode(user.get("username")) %></label>' + '<div class="color" style="background-color: <%= user.get("color") %>;"></div>'+
'</div>' + '<label><%= fnEncode(user.get("username")) %></label>' +
'<% if (len>1) { %><label style="margin-left:3px;">(<%=len%>)</label><% } %>' +
'</div>'+
'</li>'; '</li>';
var templateUserList = _.template( var templateUserList = _.template(
'<ul>' + '<ul>' +
'<% _.each(users, function(item) { %>' + '<% for (originalId in users) { %>' +
'<%= usertpl({user: item, fnEncode: fnEncode}) %>' + '<%= usertpl({user: users[originalId][0], fnEncode: fnEncode, len: users[originalId].length}) %>' +
'<% }); %>' + '<% } %>' +
'</ul>'); '</ul>');
var templateRightBox = '<section>' + var templateRightBox = '<section>' +
@ -115,64 +117,38 @@ define([
'<label id="title-user-name" style="pointer-events: none;"></label>' + '<label id="title-user-name" style="pointer-events: none;"></label>' +
'</section>'; '</section>';
function onAddUser(model, collection, opts) {
if ( $userList ) {
var $ul = $userList.find('ul');
if ( !$ul.length ) {
$userList.html( templateUserList({
users: collection.models,
usertpl: _.template(templateUserItem),
fnEncode: Common.Utils.String.htmlEncode
})
);
} else {
$ul.append( _.template(templateUserItem)({
user: model,
fnEncode: Common.Utils.String.htmlEncode
}) );
}
$userList.scroller && $userList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: true});
}
applyUsers( collection.getEditingCount() );
};
function onUsersChanged(model, collection) {
if (model.changed.online != undefined && $userList) {
$userList.find('#'+ model.get('iid'))[model.changed.online ? 'removeClass' : 'addClass']('offline');
$userList.scroller && $userList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: true});
}
applyUsers(model.collection.getEditingCount());
};
function onResetUsers(collection, opts) { function onResetUsers(collection, opts) {
var usercount = collection.getEditingCount(); var usercount = collection.getEditingCount();
if ( $userList ) { if ( $userList ) {
if ( usercount > 1 || usercount > 0 && appConfig && !appConfig.isEdit && !appConfig.canComments) { if ( usercount > 1 || usercount > 0 && appConfig && !appConfig.isEdit && !appConfig.isRestrictedEdit) {
$userList.html(templateUserList({ $userList.html(templateUserList({
users: collection.models, users: collection.chain().filter(function(item){return item.get('online') && !item.get('view')}).groupBy(function(item) {return item.get('idOriginal');}).value(),
usertpl: _.template(templateUserItem), usertpl: _.template(templateUserItem),
fnEncode: Common.Utils.String.htmlEncode fnEncode: Common.Utils.String.htmlEncode
})); }));
$userList.scroller = new Common.UI.Scroller({ if (!$userList.scroller)
el: $userList.find('ul'), $userList.scroller = new Common.UI.Scroller({
useKeyboard: true, el: $userList.find('ul'),
minScrollbarLength: 40, useKeyboard: true,
alwaysVisibleY: true minScrollbarLength: 40,
}); alwaysVisibleY: true
});
$userList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: true});
} else { } else {
$userList.empty(); $userList.empty();
} }
} }
applyUsers( usercount ); applyUsers( usercount, collection.getEditingOriginalCount() );
}; };
function applyUsers(count) { function onUsersChanged(model) {
var has_edit_users = count > 1 || count > 0 && appConfig && !appConfig.isEdit && !appConfig.canComments; // has other user(s) who edit document onResetUsers(model.collection);
};
function applyUsers(count, originalCount) {
var has_edit_users = count > 1 || count > 0 && appConfig && !appConfig.isEdit && !appConfig.isRestrictedEdit; // has other user(s) who edit document
if ( has_edit_users ) { if ( has_edit_users ) {
$btnUsers $btnUsers
.attr('data-toggle', 'dropdown') .attr('data-toggle', 'dropdown')
@ -192,7 +168,7 @@ define([
$btnUsers.find('.caption') $btnUsers.find('.caption')
.css({'font-size': ((has_edit_users) ? '12px' : '14px'), .css({'font-size': ((has_edit_users) ? '12px' : '14px'),
'margin-top': ((has_edit_users) ? '0' : '-1px')}) 'margin-top': ((has_edit_users) ? '0' : '-1px')})
.html((has_edit_users) ? count : '&plus;'); .html((has_edit_users) ? originalCount : '&plus;');
var usertip = $btnUsers.data('bs.tooltip'); var usertip = $btnUsers.data('bs.tooltip');
if ( usertip ) { if ( usertip ) {
@ -205,16 +181,14 @@ define([
if ( !$btnUsers.menu ) { if ( !$btnUsers.menu ) {
$panelUsers.removeClass('open'); $panelUsers.removeClass('open');
this.fireEvent('click:users', this); this.fireEvent('click:users', this);
} else {
var usertip = $btnUsers.data('bs.tooltip');
if ( usertip ) {
if ( usertip.dontShow===undefined)
usertip.dontShow = true;
return false; usertip.hide();
} }
var usertip = $btnUsers.data('bs.tooltip');
if ( usertip ) {
if ( usertip.dontShow===undefined)
usertip.dontShow = true;
usertip.hide();
} }
} }
@ -248,7 +222,7 @@ define([
var editingUsers = storeUsers.getEditingCount(); var editingUsers = storeUsers.getEditingCount();
$btnUsers.tooltip({ $btnUsers.tooltip({
title: (editingUsers > 1 || editingUsers>0 && !appConfig.isEdit && !appConfig.canComments) ? me.tipViewUsers : me.tipAccessRights, title: (editingUsers > 1 || editingUsers>0 && !appConfig.isEdit && !appConfig.isRestrictedEdit) ? me.tipViewUsers : me.tipAccessRights,
titleNorm: me.tipAccessRights, titleNorm: me.tipAccessRights,
titleExt: me.tipViewUsers, titleExt: me.tipViewUsers,
placement: 'bottom', placement: 'bottom',
@ -264,7 +238,7 @@ define([
}); });
$labelChangeRights[(!mode.isOffline && !mode.isReviewOnly && mode.sharingSettingsUrl && mode.sharingSettingsUrl.length)?'show':'hide'](); $labelChangeRights[(!mode.isOffline && !mode.isReviewOnly && mode.sharingSettingsUrl && mode.sharingSettingsUrl.length)?'show':'hide']();
$panelUsers[(editingUsers > 1 || editingUsers > 0 && !appConfig.isEdit && !appConfig.canComments || !mode.isOffline && !mode.isReviewOnly && mode.sharingSettingsUrl && mode.sharingSettingsUrl.length) ? 'show' : 'hide'](); $panelUsers[(editingUsers > 1 || editingUsers > 0 && !appConfig.isEdit && !appConfig.isRestrictedEdit || !mode.isOffline && !mode.isReviewOnly && mode.sharingSettingsUrl && mode.sharingSettingsUrl.length) ? 'show' : 'hide']();
if ( $saveStatus ) { if ( $saveStatus ) {
$saveStatus.attr('data-width', me.textSaveExpander); $saveStatus.attr('data-width', me.textSaveExpander);
@ -393,7 +367,7 @@ define([
storeUsers = this.options.storeUsers; storeUsers = this.options.storeUsers;
storeUsers.bind({ storeUsers.bind({
add : onAddUser, add : onUsersChanged,
change : onUsersChanged, change : onUsersChanged,
reset : onResetUsers reset : onResetUsers
}); });
@ -484,9 +458,8 @@ define([
if ( config.canEdit && config.canRequestEditRights ) if ( config.canEdit && config.canRequestEditRights )
this.btnEdit = createTitleButton('svg-btn-edit', $html.find('#slot-hbtn-edit')); this.btnEdit = createTitleButton('svg-btn-edit', $html.find('#slot-hbtn-edit'));
} else {
me.btnOptions.render($html.find('#slot-btn-options'));
} }
me.btnOptions.render($html.find('#slot-btn-options'));
$userList = $html.find('.cousers-list'); $userList = $html.find('.cousers-list');
$panelUsers = $html.find('.box-cousers'); $panelUsers = $html.find('.box-cousers');
@ -667,7 +640,7 @@ define([
$btnUsers.addClass('disabled').attr('disabled', 'disabled'); else $btnUsers.addClass('disabled').attr('disabled', 'disabled'); else
$btnUsers.removeClass('disabled').attr('disabled', ''); $btnUsers.removeClass('disabled').attr('disabled', '');
} else { } else {
function _lockButton(btn) { var _lockButton = function (btn) {
if ( btn ) { if ( btn ) {
if ( lock ) { if ( lock ) {
btn.keepState = { btn.keepState = {
@ -679,7 +652,7 @@ define([
delete btn.keepState; delete btn.keepState;
} }
} }
} };
switch ( alias ) { switch ( alias ) {
case 'undo': _lockButton(me.btnUndo); break; case 'undo': _lockButton(me.btnUndo); break;

View file

@ -83,7 +83,7 @@ define([
'style="display: block; ' + '<% if (!isRevision) { %>' + 'padding-left: 40px;' + '<% } %>' + '<% if (canRestore && selected) { %>' + 'padding-bottom: 6px;' + '<% } %>' +'">', 'style="display: block; ' + '<% if (!isRevision) { %>' + 'padding-left: 40px;' + '<% } %>' + '<% if (canRestore && selected) { %>' + 'padding-bottom: 6px;' + '<% } %>' +'">',
'<div class="user-date"><%= created %></div>', '<div class="user-date"><%= created %></div>',
'<% if (markedAsVersion) { %>', '<% if (markedAsVersion) { %>',
'<div class="user-version">ver.<%=version%></div>', '<div class="user-version">' + this.textVer + '<%=version%></div>',
'<% } %>', '<% } %>',
'<% if (isRevision && hasChanges) { %>', '<% if (isRevision && hasChanges) { %>',
'<div class="revision-expand img-commonctrl ' + '<% if (isExpanded) { %>' + 'up' + '<% } %>' + '"></div>', '<div class="revision-expand img-commonctrl ' + '<% if (isExpanded) { %>' + 'up' + '<% } %>' + '"></div>',
@ -150,7 +150,8 @@ define([
textHide: 'Collapse', textHide: 'Collapse',
textCloseHistory: 'Close History', textCloseHistory: 'Close History',
textHideAll: 'Hide detailed changes', textHideAll: 'Hide detailed changes',
textShowAll: 'Show detailed changes' textShowAll: 'Show detailed changes',
textVer: 'ver.'
}, Common.Views.History || {})) }, Common.Views.History || {}))
}); });

View file

@ -48,23 +48,23 @@ define([
Common.Views.InsertTableDialog = Common.UI.Window.extend(_.extend({ Common.Views.InsertTableDialog = Common.UI.Window.extend(_.extend({
options: { options: {
width: 230, width: 230,
height: 170, height: 156,
header: false,
style: 'min-width: 230px;', style: 'min-width: 230px;',
cls: 'modal-dlg', cls: 'modal-dlg',
split: false split: false
}, },
initialize : function(options) { initialize : function(options) {
_.extend(this.options, options || {}); _.extend(this.options, {
title: (options.split) ? this.txtTitleSplit : this.txtTitle
}, options || {});
this.template = [ this.template = [
'<div class="box">', '<div class="box">',
'<h4>' + ((options.split) ? this.txtTitleSplit : this.txtTitle) + '</h4>', '<div class="input-row">',
'<div class="input-row" style="margin: 10px 0;">',
'<label class="text columns-text" style="width: 130px;">' + this.txtColumns + '</label><div class="columns-val" style="float: right;"></div>', '<label class="text columns-text" style="width: 130px;">' + this.txtColumns + '</label><div class="columns-val" style="float: right;"></div>',
'</div>', '</div>',
'<div class="input-row" style="margin: 10px 0;">', '<div class="input-row" style="margin-top: 10px;">',
'<label class="text rows-text" style="width: 130px;">' + this.txtRows + '</label><div class="rows-val" style="float: right;"></div>', '<label class="text rows-text" style="width: 130px;">' + this.txtRows + '</label><div class="rows-val" style="float: right;"></div>',
'</div>', '</div>',
'</div>', '</div>',

View file

@ -53,12 +53,23 @@ define([
var t = this, var t = this,
_options = {}; _options = {};
var width, height;
if (options.preview) {
width = 414;
height = 277;
} else {
width = (options.type !== Asc.c_oAscAdvancedOptionsID.DRM) ? 340 : (options.warning ? 370 : 262);
height = (options.type == Asc.c_oAscAdvancedOptionsID.CSV) ? 190 : (options.warning ? 187 : 147);
}
_.extend(_options, { _.extend(_options, {
closable : false, mode : 1, // open settings
closable : (options.mode==2), // if save settings
preview : options.preview, preview : options.preview,
warning : options.warning, warning : options.warning,
width : (options.preview) ? 414 : ((options.type == Asc.c_oAscAdvancedOptionsID.DRM && options.warning) ? 370 : 262), width : width,
height : (options.preview) ? 277 : ((options.type == Asc.c_oAscAdvancedOptionsID.CSV) ? 190 : (options.warning ? 187 : 147)), height : height,
header : true, header : true,
cls : 'open-dlg', cls : 'open-dlg',
contentTemplate : '', contentTemplate : '',
@ -85,10 +96,10 @@ define([
'</div>', '</div>',
'<% } %>', '<% } %>',
'<% } else { %>', '<% } else { %>',
'<div style="display: inline-block; margin-bottom:15px;margin-right: 10px;">', '<div style="<% if (!!preview && type == Asc.c_oAscAdvancedOptionsID.CSV) { %>width: 230px;margin-right: 10px;display: inline-block;<% } else { %>width: 100%;<% } %>margin-bottom:15px;">',
'<label class="header">' + t.txtEncoding + '</label>', '<label class="header">' + t.txtEncoding + '</label>',
'<div>', '<div>',
'<div id="id-codepages-combo" class="input-group-nr" style="display: inline-block; vertical-align: middle;"></div>', '<div id="id-codepages-combo" class="input-group-nr" style="width: 100%; display: inline-block; vertical-align: middle;"></div>',
'</div>', '</div>',
'</div>', '</div>',
'<% if (type == Asc.c_oAscAdvancedOptionsID.CSV) { %>', '<% if (type == Asc.c_oAscAdvancedOptionsID.CSV) { %>',
@ -120,7 +131,7 @@ define([
'<div class="footer center">', '<div class="footer center">',
'<button class="btn normal dlg-btn primary" result="ok">' + t.okButtonText + '</button>', '<button class="btn normal dlg-btn primary" result="ok">' + t.okButtonText + '</button>',
'<% if (closable) { %>', '<% if (closable) { %>',
'<button class="btn normal dlg-btn" result="cancel" style="margin-left:10px;">' + t.closeButtonText + '</button>', '<button class="btn normal dlg-btn" result="cancel" style="margin-left:10px;">' + ((_options.mode == 1) ? t.closeButtonText : t.cancelButtonText) + '</button>',
'<% } %>', '<% } %>',
'</div>' '</div>'
].join(''); ].join('');
@ -156,16 +167,24 @@ define([
if (this.type == Asc.c_oAscAdvancedOptionsID.DRM) { if (this.type == Asc.c_oAscAdvancedOptionsID.DRM) {
this.inputPwd = new Common.UI.InputField({ this.inputPwd = new Common.UI.InputField({
el: $('#id-password-txt'), el: $('#id-password-txt'),
type: 'password', type: 'text',
validateOnBlur: false, validateOnBlur: false,
validation : function(value) { validation : function(value) {
return me.txtIncorrectPwd; return me.txtIncorrectPwd;
} }
}); });
this.$window.find('input').on('keypress', _.bind(this.onKeyPress, this)); this.$window.find('input').on('keypress', _.bind(this.onKeyPress, this));
this.$window.find('input').on('input', function(){
if ($(this).val() !== '') {
($(this).attr('type') !== 'password') && $(this).attr('type', 'password');
} else {
$(this).attr('type', 'text');
}
});
} else { } else {
this.initCodePages(); this.initCodePages();
this.updatePreview(); if (this.preview)
this.updatePreview();
this.onPrimary = function() { this.onPrimary = function() {
me._handleInput('ok'); me._handleInput('ok');
return false; return false;
@ -205,10 +224,12 @@ define([
_handleInput: function(state) { _handleInput: function(state) {
if (this.handler) { if (this.handler) {
if (this.cmbEncoding) { if (this.cmbEncoding) {
var delimiter = this.cmbDelimiter ? this.cmbDelimiter.getValue() : null, var encoding = (!this.cmbEncoding.isDisabled()) ? this.cmbEncoding.getValue() :
((this.settings && this.settings.asc_getCodePage()) ? this.settings.asc_getCodePage() : 0),
delimiter = this.cmbDelimiter ? this.cmbDelimiter.getValue() : null,
delimiterChar = (delimiter == -1) ? this.inputDelimiter.getValue() : null; delimiterChar = (delimiter == -1) ? this.inputDelimiter.getValue() : null;
(delimiter == -1) && (delimiter = null); (delimiter == -1) && (delimiter = null);
this.handler.call(this, this.cmbEncoding.getValue(), delimiter, delimiterChar); this.handler.call(this, state, encoding, delimiter, delimiterChar);
} else { } else {
this.handler.call(this, state, this.inputPwd.getValue()); this.handler.call(this, state, this.inputPwd.getValue());
} }
@ -218,7 +239,7 @@ define([
}, },
initCodePages: function () { initCodePages: function () {
var i, c, codepage, encodedata = [], listItems = [], length = 0; var i, c, codepage, encodedata = [], listItems = [], length = 0, lcid_width = 0;
if (this.codepages) { if (this.codepages) {
encodedata = []; encodedata = [];
@ -227,218 +248,99 @@ define([
c = []; c = [];
c[0] = codepage.asc_getCodePage(); c[0] = codepage.asc_getCodePage();
c[1] = codepage.asc_getCodePageName(); c[1] = codepage.asc_getCodePageName();
c[2] = codepage.asc_getLcid();
encodedata.push(c); encodedata.push(c);
} }
} else { lcid_width = 50;
encodedata = [
[37, 'IBM EBCDIC (US-Canada)'],
[437, 'OEM United States'],
[500, 'IBM EBCDIC (International)'],
[708, 'Arabic (ASMO 708)'],
[720, 'Arabic (DOS)'],
[737, 'Greek (DOS)'],
[775, 'Baltic (DOS)'],
[850, 'Western European (DOS)'],
[852, 'Central European (DOS)'],
[855, 'OEM Cyrillic'],
[857, 'Turkish (DOS)'],
[858, 'OEM Multilingual Latin I'],
[860, 'Portuguese (DOS)'],
[861, 'Icelandic (DOS)'],
[862, 'Hebrew (DOS)'],
[863, 'French Canadian (DOS)'],
[864, 'Arabic (864) '],
[865, 'Nordic (DOS)'],
[866, 'Cyrillic (DOS)'],
[869, 'Greek, Modern (DOS)'],
[870, 'IBM EBCDIC (Multilingual Latin-2)'],
[874, 'Thai (Windows)'],
[875, 'IBM EBCDIC (Greek Modern)'],
[932, 'Japanese (Shift-JIS)'],
[936, 'Chinese Simplified (GB2312)'],
[949, 'Korean'],
[950, 'Chinese Traditional (Big5)'],
[1026, 'IBM EBCDIC (Turkish Latin-5)'],
[1047, 'IBM Latin-1'],
[1140, 'IBM EBCDIC (US-Canada-Euro)'],
[1141, 'IBM EBCDIC (Germany-Euro)'],
[1142, 'IBM EBCDIC (Denmark-Norway-Euro)'],
[1143, 'IBM EBCDIC (Finland-Sweden-Euro)'],
[1144, 'IBM EBCDIC (Italy-Euro)'],
[1145, 'IBM EBCDIC (Spain-Euro)'],
[1146, 'IBM EBCDIC (UK-Euro)'],
[1147, 'IBM EBCDIC (France-Euro)'],
[1148, 'IBM EBCDIC (International-Euro)'],
[1149, 'IBM EBCDIC (Icelandic-Euro)'],
[1200, 'Unicode'],
[1201, 'Unicode (Big-Endian)'],
[1250, 'Central European (Windows)'],
[1251, 'Cyrillic (Windows)'],
[1252, 'Western European (Windows)'],
[1253, 'Greek (Windows)'],
[1254, 'Turkish (Windows)'],
[1255, 'Hebrew (Windows) '],
[1256, 'Arabic (Windows) '],
[1257, 'Baltic (Windows)'],
[1258, 'Vietnamese (Windows)'],
[1361, 'Korean (Johab)'],
[10000, 'Western European (Mac)'],
[10001, 'Japanese (Mac)'],
[10002, 'Chinese Traditional (Mac)'],
[10003, 'Korean (Mac)'],
[10004, 'Arabic (Mac) '],
[10005, 'Hebrew (Mac)'],
[10006, 'Greek (Mac) '],
[10007, 'Cyrillic (Mac)'],
[10008, 'Chinese Simplified (Mac)'],
[10010, 'Romanian (Mac)'],
[10017, 'Ukrainian (Mac)'],
[10021, 'Thai (Mac)'],
[10029, 'Central European (Mac) '],
[10079, 'Icelandic (Mac)'],
[10081, 'Turkish (Mac)'],
[10082, 'Croatian (Mac)'],
[12000, 'Unicode (UTF-32)'],
[12001, 'Unicode (UTF-32 Big-Endian)'],
[20000, 'Chinese Traditional (CNS)'],
[20001, 'TCA Taiwan'],
[20002, 'Chinese Traditional (Eten)'],
[20003, 'IBM5550 Taiwan'],
[20004, 'TeleText Taiwan'],
[20005, 'Wang Taiwan'],
[20105, 'Western European (IA5)'],
[20106, 'German (IA5)'],
[20107, 'Swedish (IA5) '],
[20108, 'Norwegian (IA5) '],
[20127, 'US-ASCII'],
[20261, 'T.61 '],
[20269, 'ISO-6937'],
[20273, 'IBM EBCDIC (Germany)'],
[20277, 'IBM EBCDIC (Denmark-Norway) '],
[20278, 'IBM EBCDIC (Finland-Sweden)'],
[20280, 'IBM EBCDIC (Italy)'],
[20284, 'IBM EBCDIC (Spain)'],
[20285, 'IBM EBCDIC (UK)'],
[20290, 'IBM EBCDIC (Japanese katakana)'],
[20297, 'IBM EBCDIC (France)'],
[20420, 'IBM EBCDIC (Arabic)'],
[20423, 'IBM EBCDIC (Greek)'],
[20424, 'IBM EBCDIC (Hebrew)'],
[20833, 'IBM EBCDIC (Korean Extended)'],
[20838, 'IBM EBCDIC (Thai)'],
[20866, 'Cyrillic (KOI8-R)'],
[20871, 'IBM EBCDIC (Icelandic) '],
[20880, 'IBM EBCDIC (Cyrillic Russian)'],
[20905, 'IBM EBCDIC (Turkish)'],
[20924, 'IBM Latin-1 '],
[20932, 'Japanese (JIS 0208-1990 and 0212-1990)'],
[20936, 'Chinese Simplified (GB2312-80) '],
[20949, 'Korean Wansung '],
[21025, 'IBM EBCDIC (Cyrillic Serbian-Bulgarian)'],
[21866, 'Cyrillic (KOI8-U)'],
[28591, 'Western European (ISO) '],
[28592, 'Central European (ISO)'],
[28593, 'Latin 3 (ISO)'],
[28594, 'Baltic (ISO)'],
[28595, 'Cyrillic (ISO) '],
[28596, 'Arabic (ISO)'],
[28597, 'Greek (ISO) '],
[28598, 'Hebrew (ISO-Visual)'],
[28599, 'Turkish (ISO)'],
[28603, 'Estonian (ISO)'],
[28605, 'Latin 9 (ISO)'],
[29001, 'Europa'],
[38598, 'Hebrew (ISO-Logical)'],
[50220, 'Japanese (JIS)'],
[50221, 'Japanese (JIS-Allow 1 byte Kana) '],
[50222, 'Japanese (JIS-Allow 1 byte Kana - SO/SI)'],
[50225, 'Korean (ISO)'],
[50227, 'Chinese Simplified (ISO-2022)'],
[51932, 'Japanese (EUC)'],
[51936, 'Chinese Simplified (EUC) '],
[51949, 'Korean (EUC)'],
[52936, 'Chinese Simplified (HZ)'],
[54936, 'Chinese Simplified (GB18030)'],
[57002, 'ISCII Devanagari '],
[57003, 'ISCII Bengali '],
[57004, 'ISCII Tamil'],
[57005, 'ISCII Telugu '],
[57006, 'ISCII Assamese '],
[57007, 'ISCII Oriya'],
[57008, 'ISCII Kannada'],
[57009, 'ISCII Malayalam '],
[57010, 'ISCII Gujarati'],
[57011, 'ISCII Punjabi'],
[65000, 'Unicode (UTF-7)'],
[65001, 'Unicode (UTF-8)']
];
} }
length = encodedata.length; length = encodedata.length;
if (length) { for (i = 0; i < length; ++i) {
for (i = 0; i < length; ++i) { listItems.push({
listItems.push({ value: encodedata[i][0],
value: encodedata[i][0], displayValue: Common.Utils.String.htmlEncode(encodedata[i][1]),
displayValue: encodedata[i][1] // Common.Utils.String.ellipsis(..., 37) lcid: encodedata[i][2] || ''
});
}
this.cmbEncoding = new Common.UI.ComboBox({
el: $('#id-codepages-combo', this.$window),
style: 'width: 230px;',
menuStyle: 'min-width: 230px; max-height: 200px;',
cls: 'input-group-nr',
menuCls: 'scrollable-menu',
data: listItems,
editable: false
}); });
this.cmbEncoding.setValue( (this.settings && this.settings.asc_getCodePage()) ? this.settings.asc_getCodePage() : encodedata[0][0]); }
var itemsTemplate =
_.template([
'<% _.each(items, function(item) { %>',
'<li id="<%= item.id %>" data-value="<%= item.value %>"><a tabindex="-1" type="menuitem">',
'<div style="display: inline-block;"><%= item.displayValue %></div>',
'<label style="text-align: right;width:' + lcid_width + 'px;"><%= item.lcid %></label>',
'</a></li>',
'<% }); %>'
].join(''));
this.cmbEncoding = new Common.UI.ComboBox({
el: $('#id-codepages-combo', this.$window),
style: 'width: 100%;',
menuStyle: 'min-width: 100%; max-height: 200px;',
cls: 'input-group-nr',
menuCls: 'scrollable-menu',
data: listItems,
editable: false,
disabled: true,
itemsTemplate: itemsTemplate
});
if (length) {
this.cmbEncoding.setDisabled(false);
this.cmbEncoding.setValue((this.settings && this.settings.asc_getCodePage()) ? this.settings.asc_getCodePage() : encodedata[0][0]);
if (this.preview) if (this.preview)
this.cmbEncoding.on('selected', _.bind(this.onCmbEncodingSelect, this)); this.cmbEncoding.on('selected', _.bind(this.onCmbEncodingSelect, this));
if (this.type == Asc.c_oAscAdvancedOptionsID.CSV) { var ul = this.cmbEncoding.cmpEl.find('ul'),
this.cmbDelimiter = new Common.UI.ComboBox({ a = ul.find('li:nth(0) a'),
el: $('#id-delimiters-combo', this.$window), width = ul.width() - parseInt(a.css('padding-left')) - parseInt(a.css('padding-right')) - 50;
style: 'width: 100px;', ul.find('li div').width(width);
menuStyle: 'min-width: 100px;', }
cls: 'input-group-nr',
data: [
{value: 4, displayValue: this.txtComma},
{value: 2, displayValue: this.txtSemicolon},
{value: 3, displayValue: this.txtColon},
{value: 1, displayValue: this.txtTab},
{value: 5, displayValue: this.txtSpace},
{value: -1, displayValue: this.txtOther}],
editable: false
});
this.cmbDelimiter.setValue( (this.settings && this.settings.asc_getDelimiter()) ? this.settings.asc_getDelimiter() : 4);
this.cmbDelimiter.on('selected', _.bind(this.onCmbDelimiterSelect, this));
this.inputDelimiter = new Common.UI.InputField({ if (this.type == Asc.c_oAscAdvancedOptionsID.CSV) {
el : $('#id-delimiter-other'), this.cmbDelimiter = new Common.UI.ComboBox({
style : 'width: 30px;', el: $('#id-delimiters-combo', this.$window),
maxLength: 1, style: 'width: 100px;',
validateOnChange: true, menuStyle: 'min-width: 100px;',
validateOnBlur: false, cls: 'input-group-nr',
value: (this.settings && this.settings.asc_getDelimiterChar()) ? this.settings.asc_getDelimiterChar() : '' data: [
}); {value: 4, displayValue: this.txtComma},
this.inputDelimiter.setVisible(false); {value: 2, displayValue: this.txtSemicolon},
if (this.preview) {value: 3, displayValue: this.txtColon},
this.inputDelimiter.on ('changing', _.bind(this.updatePreview, this)); {value: 1, displayValue: this.txtTab},
} {value: 5, displayValue: this.txtSpace},
{value: -1, displayValue: this.txtOther}],
editable: false
});
this.cmbDelimiter.setValue( (this.settings && this.settings.asc_getDelimiter()) ? this.settings.asc_getDelimiter() : 4);
this.cmbDelimiter.on('selected', _.bind(this.onCmbDelimiterSelect, this));
this.inputDelimiter = new Common.UI.InputField({
el : $('#id-delimiter-other'),
style : 'width: 30px;',
maxLength: 1,
validateOnChange: true,
validateOnBlur: false,
value: (this.settings && this.settings.asc_getDelimiterChar()) ? this.settings.asc_getDelimiterChar() : ''
});
this.inputDelimiter.setVisible(false);
if (this.preview)
this.inputDelimiter.on ('changing', _.bind(this.updatePreview, this));
} }
}, },
updatePreview: function() { updatePreview: function() {
var encoding = (!this.cmbEncoding.isDisabled()) ? this.cmbEncoding.getValue() :
((this.settings && this.settings.asc_getCodePage()) ? this.settings.asc_getCodePage() : 0);
if (this.type == Asc.c_oAscAdvancedOptionsID.CSV) { if (this.type == Asc.c_oAscAdvancedOptionsID.CSV) {
var delimiter = this.cmbDelimiter ? this.cmbDelimiter.getValue() : null, var delimiter = this.cmbDelimiter ? this.cmbDelimiter.getValue() : null,
delimiterChar = (delimiter == -1) ? this.inputDelimiter.getValue() : null; delimiterChar = (delimiter == -1) ? this.inputDelimiter.getValue() : null;
(delimiter == -1) && (delimiter = null); (delimiter == -1) && (delimiter = null);
this.api.asc_decodeBuffer(this.preview, new Asc.asc_CCSVAdvancedOptions(this.cmbEncoding.getValue(), delimiter, delimiterChar), _.bind(this.previewCallback, this)); this.api.asc_decodeBuffer(this.preview, new Asc.asc_CCSVAdvancedOptions(encoding, delimiter, delimiterChar), _.bind(this.previewCallback, this));
} else { } else {
this.api.asc_decodeBuffer(this.preview, new Asc.asc_CTXTAdvancedOptions(this.cmbEncoding.getValue()), _.bind(this.previewCallback, this)); this.api.asc_decodeBuffer(this.preview, new Asc.asc_CTXTAdvancedOptions(encoding), _.bind(this.previewCallback, this));
} }
}, },
@ -453,6 +355,7 @@ define([
el: this.previewScrolled, el: this.previewScrolled,
minScrollbarLength : 20, minScrollbarLength : 20,
alwaysVisibleY: true, alwaysVisibleY: true,
alwaysVisibleX: true,
onChange: _.bind(function(){ onChange: _.bind(function(){
if (this.scrollerY) { if (this.scrollerY) {
var startPos = this.scrollerY.getScrollTop(), var startPos = this.scrollerY.getScrollTop(),

View file

@ -65,7 +65,7 @@ define([
function setEvents() { function setEvents() {
var me = this; var me = this;
if ( me.appConfig.isProtectSupport && me.appConfig.isDesktopApp && me.appConfig.isOffline ) { if (me.appConfig.isPasswordSupport) {
this.btnsAddPwd.concat(this.btnsChangePwd).forEach(function(button) { this.btnsAddPwd.concat(this.btnsChangePwd).forEach(function(button) {
button.on('click', function (b, e) { button.on('click', function (b, e) {
me.fireEvent('protect:password', [b, 'add']); me.fireEvent('protect:password', [b, 'add']);
@ -81,19 +81,19 @@ define([
this.btnPwd.menu.on('item:click', function (menu, item, e) { this.btnPwd.menu.on('item:click', function (menu, item, e) {
me.fireEvent('protect:password', [menu, item.value]); me.fireEvent('protect:password', [menu, item.value]);
}); });
}
if (me.appConfig.canProtect) { if (me.appConfig.isSignatureSupport) {
if (this.btnSignature.menu) if (this.btnSignature.menu)
this.btnSignature.menu.on('item:click', function (menu, item, e) { this.btnSignature.menu.on('item:click', function (menu, item, e) {
me.fireEvent('protect:signature', [item.value, false]); me.fireEvent('protect:signature', [item.value, false]);
});
this.btnsInvisibleSignature.forEach(function(button) {
button.on('click', function (b, e) {
me.fireEvent('protect:signature', ['invisible']);
});
}); });
}
this.btnsInvisibleSignature.forEach(function(button) {
button.on('click', function (b, e) {
me.fireEvent('protect:signature', ['invisible']);
});
});
} }
} }
@ -116,7 +116,7 @@ define([
var filter = Common.localStorage.getKeysFilter(); var filter = Common.localStorage.getKeysFilter();
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : ''; this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
if ( this.appConfig.isProtectSupport && this.appConfig.isDesktopApp && this.appConfig.isOffline ) { if ( this.appConfig.isPasswordSupport ) {
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: 'btn-ic-protect', iconCls: 'btn-ic-protect',
@ -131,18 +131,18 @@ define([
menu: true, menu: true,
visible: false visible: false
}); });
if (this.appConfig.canProtect) {
this.btnSignature = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'btn-ic-signature',
caption: this.txtSignature,
menu: (this.appPrefix !== 'pe-')
});
if (!this.btnSignature.menu)
this.btnsInvisibleSignature.push(this.btnSignature);
}
} }
if (this.appConfig.isSignatureSupport) {
this.btnSignature = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'btn-ic-signature',
caption: this.txtSignature,
menu: (this.appPrefix !== 'pe-')
});
if (!this.btnSignature.menu)
this.btnsInvisibleSignature.push(this.btnSignature);
}
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this)); Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
}, },
@ -159,25 +159,26 @@ define([
(new Promise(function (accept, reject) { (new Promise(function (accept, reject) {
accept(); accept();
})).then(function(){ })).then(function(){
if ( config.isProtectSupport && config.isDesktopApp && config.isOffline) { if ( config.canProtect) {
me.btnAddPwd.updateHint(me.hintAddPwd); if ( config.isPasswordSupport) {
me.btnPwd.updateHint(me.hintPwd); me.btnAddPwd.updateHint(me.hintAddPwd);
me.btnPwd.updateHint(me.hintPwd);
me.btnPwd.setMenu(
new Common.UI.Menu({
items: [
{
caption: me.txtChangePwd,
value: 'add'
},
{
caption: me.txtDeletePwd,
value: 'delete'
}
]
})
);
me.btnPwd.setMenu(
new Common.UI.Menu({
items: [
{
caption: me.txtChangePwd,
value: 'add'
},
{
caption: me.txtDeletePwd,
value: 'delete'
}
]
})
);
}
if (me.btnSignature) { if (me.btnSignature) {
me.btnSignature.updateHint((me.btnSignature.menu) ? me.hintSignature : me.txtInvisibleSignature); me.btnSignature.updateHint((me.btnSignature.menu) ? me.hintSignature : me.txtInvisibleSignature);
me.btnSignature.menu && me.btnSignature.setMenu( me.btnSignature.menu && me.btnSignature.setMenu(
@ -206,9 +207,9 @@ define([
getPanel: function () { getPanel: function () {
this.$el = $(_.template(template)( {} )); this.$el = $(_.template(template)( {} ));
if ( this.appConfig.isProtectSupport && this.appConfig.isDesktopApp && this.appConfig.isOffline ) { if ( this.appConfig.canProtect ) {
this.btnAddPwd.render(this.$el.find('#slot-btn-add-password')); this.btnAddPwd && this.btnAddPwd.render(this.$el.find('#slot-btn-add-password'));
this.btnPwd.render(this.$el.find('#slot-btn-change-password')); this.btnPwd && this.btnPwd.render(this.$el.find('#slot-btn-change-password'));
this.btnSignature && this.btnSignature.render(this.$el.find('#slot-btn-signature')); this.btnSignature && this.btnSignature.render(this.$el.find('#slot-btn-signature'));
} }
return this.$el; return this.$el;

View file

@ -46,369 +46,14 @@ if (Common === undefined)
Common.Views = Common.Views || {}; Common.Views = Common.Views || {};
define([ define([
'text!common/main/lib/template/ReviewChangesPopover.template',
'common/main/lib/util/utils', 'common/main/lib/util/utils',
'common/main/lib/component/Button', 'common/main/lib/component/Button',
'common/main/lib/component/DataView', 'common/main/lib/component/DataView',
'common/main/lib/component/Layout', 'common/main/lib/component/Layout',
'common/main/lib/component/Window' 'common/main/lib/component/Window'
], function (popoverTemplate) { ], function () {
'use strict'; 'use strict';
Common.Views.ReviewChangesPopover = Common.UI.Window.extend({
// Window
initialize : function (options) {
var _options = {};
_.extend(_options, {
closable : false,
width : 265,
height : 120,
header : false,
modal : false
}, options);
this.template = options.template || [
'<div class="box">',
'<div id="id-review-popover" class="comments-popover dataview-ct"></div>',
'<div id="id-review-arrow" class="comments-arrow review"></div>',
'</div>'
].join('');
this.store = options.store;
this.delegate = options.delegate;
_options.tpl = _.template(this.template)(_options);
this.arrow = {margin: 20, width: 12, height: 34};
this.sdkBounds = {width: 0, height: 0, padding: 10, paddingTop: 20};
Common.UI.Window.prototype.initialize.call(this, _options);
},
render: function () {
Common.UI.Window.prototype.render.call(this);
var me = this,
t = this.delegate,
window = this.$window;
window.css({
height: '',
minHeight: '',
overflow: 'hidden',
position: 'absolute',
zIndex: '991'
});
var body = window.find('.body');
if (body) {
body.css('position', 'relative');
}
window.on('click', function() {
window.css({zIndex: '991'});
Common.NotificationCenter.trigger('review:click');
});
Common.NotificationCenter.on('comments:click', function() {
window.css({zIndex: '990'});
});
var PopoverDataView = Common.UI.DataView.extend((function() {
var parentView = me;
return {
options : {
handleSelect: false,
scrollable: true,
template: _.template('<div class="dataview-ct inner" style="overflow-y: hidden;">'+
'</div>' +
'<div class="lock-area" style="cursor: default;"></div>' +
'<div class="lock-author" style="cursor: default;"></div>'
)
}
}
})());
if (PopoverDataView) {
if (this.reviewChangesView) {
this.reviewChangesView.render($('#id-review-popover'));
this.reviewChangesView.onResetItems();
} else {
this.reviewChangesView = new PopoverDataView({
el: $('#id-review-popover'),
store: me.store,
itemTemplate: _.template(popoverTemplate)
});
this.reviewChangesView.on('item:click', function (picker, item, record, e) {
var btn = $(e.target);
if (btn) {
if (btn.hasClass('btn-accept')) {
t.fireEvent('reviewchange:accept', [record.get('changedata')]);
} else if (btn.hasClass('btn-reject')) {
t.fireEvent('reviewchange:reject', [record.get('changedata')]);
} else if (btn.hasClass('btn-delete')) {
t.fireEvent('reviewchange:delete', [record.get('changedata')]);
}
}
});
}
}
},
show: function (animate, lock, lockuser) {
this.options.animate = animate;
var me = this;
// this.calculateSizeOfContent();
Common.UI.Window.prototype.show.call(this);
if (this.reviewChangesView.scroller) {
this.reviewChangesView.scroller.update({minScrollbarLength: 40, alwaysVisibleY: true});
}
this.reviewChangesView.cmpEl.find('.lock-area').toggleClass('hidden', !lock);
this.reviewChangesView.cmpEl.find('.lock-author').toggleClass('hidden', !lock || _.isEmpty(lockuser)).text(lockuser);
},
hide: function () {
if (this.handlerHide) {
this.handlerHide ();
}
Common.UI.Window.prototype.hide.call(this);
if (!_.isUndefined(this.e) && this.e.keyCode == Common.UI.Keys.ESC) {
this.e.preventDefault();
this.e.stopImmediatePropagation();
this.e = undefined;
}
},
update: function () {
if (this.reviewChangesView && this.reviewChangesView.scroller) {
this.reviewChangesView.scroller.update({minScrollbarLength: 40, alwaysVisibleY: true});
}
},
isVisible: function () {
return (this.$window && this.$window.is(':visible'));
},
setLeftTop: function (posX, posY, leftX, loadInnerValues) {
if (!this.$window)
this.render();
if (loadInnerValues) {
posX = this.arrowPosX;
posY = this.arrowPosY;
leftX = this.leftX;
}
if (_.isUndefined(posX) && _.isUndefined(posY))
return;
this.arrowPosX = posX;
this.arrowPosY = posY;
this.leftX = leftX;
var reviewChangesView = $('#id-review-popover'),
arrowView = $('#id-review-arrow'),
editorView = $('#editor_sdk'),
editorBounds = null,
sdkBoundsHeight = 0,
sdkBoundsTop = 0,
sdkBoundsLeft = 0,
sdkPanelRight = '',
sdkPanelRightWidth = 0,
sdkPanelLeft = '',
sdkPanelLeftWidth = 0,
sdkPanelThumbs = '', // for PE
sdkPanelThumbsWidth = 0, // for PE
sdkPanelTop = '',
sdkPanelHeight = 0,
leftPos = 0,
windowWidth = 0,
outerHeight = 0,
topPos = 0,
sdkBoundsTopPos = 0;
if (reviewChangesView && arrowView && editorView && editorView.get(0)) {
editorBounds = editorView.get(0).getBoundingClientRect();
if (editorBounds) {
sdkBoundsHeight = editorBounds.height - this.sdkBounds.padding * 2;
this.$window.css({maxHeight: sdkBoundsHeight + 'px'});
this.sdkBounds.width = editorBounds.width;
this.sdkBounds.height = editorBounds.height;
// LEFT CORNER
if (!_.isUndefined(posX)) {
sdkPanelRight = $('#id_vertical_scroll');
if (sdkPanelRight.length) {
sdkPanelRightWidth = (sdkPanelRight.css('display') !== 'none') ? sdkPanelRight.width() : 0;
} else {
sdkPanelRight = $('#ws-v-scrollbar');
if (sdkPanelRight.length) {
sdkPanelRightWidth = (sdkPanelRight.css('display') !== 'none') ? sdkPanelRight.width() : 0;
}
}
this.sdkBounds.width -= sdkPanelRightWidth;
sdkPanelLeft = $('#id_panel_left');
if (sdkPanelLeft.length) {
sdkPanelLeftWidth = (sdkPanelLeft.css('display') !== 'none') ? sdkPanelLeft.width() : 0;
}
sdkPanelThumbs = $('#id_panel_thumbnails');
if (sdkPanelThumbs.length) {
sdkPanelThumbsWidth = (sdkPanelThumbs.css('display') !== 'none') ? sdkPanelThumbs.width() : 0;
this.sdkBounds.width -= sdkPanelThumbsWidth;
}
leftPos = Math.min(sdkBoundsLeft + posX + this.arrow.width, sdkBoundsLeft + this.sdkBounds.width - this.$window.outerWidth());
leftPos = Math.max(sdkBoundsLeft + sdkPanelLeftWidth + this.arrow.width, leftPos);
arrowView.removeClass('right').addClass('left');
if (!_.isUndefined(leftX)) {
windowWidth = this.$window.outerWidth();
if (windowWidth) {
if ((posX + windowWidth > this.sdkBounds.width - this.arrow.width + 5) && (this.leftX > windowWidth)) {
leftPos = this.leftX - windowWidth + sdkBoundsLeft - this.arrow.width;
arrowView.removeClass('left').addClass('right');
} else {
leftPos = sdkBoundsLeft + posX + this.arrow.width;
}
}
}
this.$window.css('left', leftPos + 'px');
}
// TOP CORNER
if (!_.isUndefined(posY)) {
sdkPanelTop = $('#id_panel_top');
sdkBoundsTopPos = sdkBoundsTop;
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
sdkBoundsTopPos += this.sdkBounds.paddingTop;
} else {
sdkPanelTop = $('#ws-h-scrollbar');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
sdkBoundsTopPos -= this.sdkBounds.paddingTop;
}
}
this.sdkBounds.height -= sdkPanelHeight;
outerHeight = this.$window.outerHeight();
topPos = Math.min(sdkBoundsTop + sdkBoundsHeight - outerHeight, this.arrowPosY + sdkBoundsTop - this.arrow.height);
topPos = Math.max(topPos, sdkBoundsTopPos);
this.$window.css('top', topPos + 'px');
}
}
}
this.calculateSizeOfContent();
},
calculateSizeOfContent: function (testVisible) {
if (testVisible && !this.$window.is(':visible'))
return;
this.$window.css({overflow: 'hidden'});
var arrowView = $('#id-review-arrow'),
reviewChangesView = $('#id-review-popover'),
contentBounds = null,
editorView = null,
editorBounds = null,
sdkBoundsHeight = 0,
sdkBoundsTop = 0,
sdkBoundsLeft = 0,
sdkPanelTop = '',
sdkPanelHeight = 0,
arrowPosY = 0,
windowHeight = 0,
outerHeight = 0,
topPos = 0,
sdkBoundsTopPos = 0;
if (reviewChangesView && arrowView && reviewChangesView.get(0)) {
reviewChangesView.css({height: '100%'});
contentBounds = reviewChangesView.get(0).getBoundingClientRect();
if (contentBounds) {
editorView = $('#editor_sdk');
if (editorView && editorView.get(0)) {
editorBounds = editorView.get(0).getBoundingClientRect();
if (editorBounds) {
sdkBoundsHeight = editorBounds.height - this.sdkBounds.padding * 2;
sdkBoundsTopPos = sdkBoundsTop;
windowHeight = this.$window.outerHeight();
// TOP CORNER
sdkPanelTop = $('#id_panel_top');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
sdkBoundsTopPos += this.sdkBounds.paddingTop;
} else {
sdkPanelTop = $('#ws-h-scrollbar');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
sdkBoundsTopPos -= this.sdkBounds.paddingTop;
}
}
outerHeight = Math.max(reviewChangesView.outerHeight(), this.$window.outerHeight());
if (sdkBoundsHeight <= outerHeight) {
this.$window.css({
maxHeight: sdkBoundsHeight - sdkPanelHeight + 'px',
top: sdkBoundsTop + sdkPanelHeight + 'px'});
reviewChangesView.css({height: sdkBoundsHeight - sdkPanelHeight - 3 + 'px'});
// arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - sdkPanelHeight - this.arrow.width);
arrowPosY = Math.min(arrowPosY, sdkBoundsHeight - (sdkPanelHeight + this.arrow.margin + this.arrow.width));
arrowView.css({top: arrowPosY + 'px'});
} else {
outerHeight = windowHeight;
if (outerHeight > 0) {
if (contentBounds.top + outerHeight > sdkBoundsHeight + sdkBoundsTop || contentBounds.height === 0) {
topPos = Math.min(sdkBoundsTop + sdkBoundsHeight - outerHeight, this.arrowPosY + sdkBoundsTop - this.arrow.height);
topPos = Math.max(topPos, sdkBoundsTopPos);
this.$window.css({top: topPos + 'px'});
}
}
arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - (sdkBoundsHeight - outerHeight) - this.arrow.width);
arrowPosY = Math.min(arrowPosY, outerHeight - this.arrow.margin - this.arrow.width);
arrowView.css({top: arrowPosY + 'px'});
}
}
}
}
}
this.$window.css({overflow: ''});
}
});
Common.Views.ReviewChanges = Common.UI.BaseView.extend(_.extend((function(){ Common.Views.ReviewChanges = Common.UI.BaseView.extend(_.extend((function(){
var template = var template =
'<section id="review-changes-panel" class="panel" data-tab="review">' + '<section id="review-changes-panel" class="panel" data-tab="review">' +
@ -525,8 +170,6 @@ define([
initialize: function (options) { initialize: function (options) {
Common.UI.BaseView.prototype.initialize.call(this, options); Common.UI.BaseView.prototype.initialize.call(this, options);
// this.store = this.options.store;
// this.popoverChanges = this.options.popoverChanges;
this.appConfig = options.mode; this.appConfig = options.mode;
if ( this.appConfig.canReview ) { if ( this.appConfig.canReview ) {
@ -807,18 +450,6 @@ define([
this.fireEvent('show', this); this.fireEvent('show', this);
}, },
getPopover: function (sdkViewName) {
if (this.appConfig.canReview && _.isUndefined(this.popover)) {
this.popover = new Common.Views.ReviewChangesPopover({
store: this.options.popoverChanges,
delegate: this,
renderTo: sdkViewName
});
}
return this.popover;
},
getButton: function(type, parent) { getButton: function(type, parent) {
if ( type == 'turn' && parent == 'statusbar' ) { if ( type == 'turn' && parent == 'statusbar' ) {
var button = new Common.UI.Button({ var button = new Common.UI.Button({

View file

@ -0,0 +1,935 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
/**
* ReviewPopover.js
*
* View
*
* Created by Julia Radzhabova on 06.06.2018
* Copyright (c) 2018 Ascensio System SIA. All rights reserved.
*
*/
if (Common === undefined)
var Common = {};
Common.Views = Common.Views || {};
define([
'text!common/main/lib/template/CommentsPopover.template',
'text!common/main/lib/template/ReviewChangesPopover.template',
'common/main/lib/util/utils',
'common/main/lib/component/Button',
'common/main/lib/component/ComboBox',
'common/main/lib/component/DataView',
'common/main/lib/component/Layout',
'common/main/lib/component/Window'
], function (commentsTemplate, reviewTemplate) {
'use strict';
function replaceWords(template, words) {
var word,
value,
tpl = template;
for (word in words) {
if (undefined !== word) {
value = words[word];
tpl = tpl.replace(new RegExp(word, 'g'), value);
}
}
return tpl;
}
Common.Views.ReviewPopover = Common.UI.Window.extend(_.extend({
// Window
initialize: function (options) {
var _options = {};
_.extend(_options, {
closable: false,
width: 265,
height: 120,
header: false,
modal: false,
alias: 'Common.Views.ReviewPopover'
}, options);
this.template = options.template || [
'<div class="box">',
'<div id="id-popover" class="comments-popover" style="overflow-y: hidden;position: relative;">',
'<div id="id-review-popover"></div>',
'<div id="id-comments-popover"></div>',
'</div>',
'<div id="id-comments-arrow" class="comments-arrow"></div>',
'</div>'
].join('');
this.commentsStore = options.commentsStore;
this.reviewStore = options.reviewStore;
this._state = {commentsVisible: false, reviewVisible: false};
_options.tpl = _.template(this.template)(_options);
this.arrow = {margin: 20, width: 12, height: 34};
this.sdkBounds = {width: 0, height: 0, padding: 10, paddingTop: 20};
Common.UI.Window.prototype.initialize.call(this, _options);
return this;
},
render: function (comments, review) {
Common.UI.Window.prototype.render.call(this);
var me = this,
window = this.$window;
window.css({
height: '',
minHeight: '',
overflow: 'hidden',
position: 'absolute',
zIndex: '990'
});
var body = window.find('.body');
if (body) {
body.css('position', 'relative');
}
var CommentsPopoverDataView = Common.UI.DataView.extend((function () {
var parentView = me;
return {
options: {
handleSelect: false,
allowScrollbar: false,
template: _.template('<div class="dataview-ct inner" style="overflow-y: visible;"></div>')
},
getTextBox: function () {
var text = $(this.el).find('textarea');
return (text && text.length) ? text : undefined;
},
setFocusToTextBox: function (blur) {
var text = $(this.el).find('textarea');
if (blur) {
text.blur();
} else {
if (text && text.length) {
var val = text.val();
text.focus();
text.val('');
text.val(val);
}
}
},
getActiveTextBoxVal: function () {
var text = $(this.el).find('textarea');
return (text && text.length) ? text.val().trim() : '';
},
autoHeightTextBox: function () {
var view = this,
textBox = this.$el.find('textarea'),
domTextBox = null,
minHeight = 50,
lineHeight = 0,
scrollPos = 0,
oldHeight = 0,
newHeight = 0;
function updateTextBoxHeight() {
scrollPos = parentView.scroller.getScrollTop();
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
textBox.css({height: (domTextBox.scrollHeight + lineHeight) + 'px'});
parentView.calculateSizeOfContent();
} else {
oldHeight = domTextBox.clientHeight;
if (oldHeight >= minHeight) {
textBox.css({height: minHeight + 'px'});
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
newHeight = Math.max(domTextBox.scrollHeight + lineHeight, minHeight);
textBox.css({height: newHeight + 'px'});
}
parentView.calculateSizeOfContent();
parentView.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
parentView.calculateSizeOfContent();
}
}
parentView.scroller.scrollTop(scrollPos);
view.autoScrollToEditButtons();
}
if (textBox && textBox.length) {
domTextBox = textBox.get(0);
if (domTextBox) {
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
updateTextBoxHeight();
textBox.bind('input propertychange', updateTextBoxHeight)
}
}
this.textBox = textBox;
},
clearTextBoxBind: function () {
if (this.textBox) {
this.textBox.unbind('input propertychange');
this.textBox = undefined;
}
},
autoScrollToEditButtons: function () {
var button = $('#id-comments-change-popover'), // TODO: add to cache
btnBounds = null,
contentBounds = this.el.getBoundingClientRect(),
moveY = 0,
padding = 7;
if (button.length) {
btnBounds = button.get(0).getBoundingClientRect();
if (btnBounds && contentBounds) {
moveY = contentBounds.bottom - (btnBounds.bottom + padding);
if (moveY < 0) {
parentView.scroller.scrollTop(parentView.scroller.getScrollTop() - moveY);
}
}
}
}
}
})());
if (CommentsPopoverDataView) {
if (this.commentsView) {
this.commentsView.render($('#id-comments-popover'));
this.commentsView.onResetItems();
} else {
this.commentsView = new CommentsPopoverDataView({
el: $('#id-comments-popover'),
store: me.commentsStore,
itemTemplate: _.template(replaceWords(commentsTemplate, {
textAddReply: me.textAddReply,
textAdd: me.textAdd,
textCancel: me.textCancel,
textEdit: me.textEdit,
textReply: me.textReply,
textClose: me.textClose,
maxCommLength: Asc.c_oAscMaxCellOrCommentLength
})
)
});
var addtooltip = function (dataview, view, record) {
if (view.tipsArray) {
view.tipsArray.forEach(function (item) {
item.remove();
});
}
var arr = [],
btns = $(view.el).find('.btn-resolve');
btns.tooltip({title: me.textResolve, placement: 'cursor'});
btns.each(function (idx, item) {
arr.push($(item).data('bs.tooltip').tip());
});
btns = $(view.el).find('.btn-resolve-check');
btns.tooltip({title: me.textOpenAgain, placement: 'cursor'});
btns.each(function (idx, item) {
arr.push($(item).data('bs.tooltip').tip());
});
view.tipsArray = arr;
this.autoHeightTextBox();
};
var onCommentsViewMouseOver = function () {
me._isMouseOver = true;
};
var onCommentsViewMouseOut = function () {
me._isMouseOver = false;
};
this.commentsView.on('item:add', addtooltip);
this.commentsView.on('item:remove', addtooltip);
this.commentsView.on('item:change', addtooltip);
this.commentsView.cmpEl.on('mouseover', onCommentsViewMouseOver).on('mouseout', onCommentsViewMouseOut);
this.commentsView.on('item:click', function (picker, item, record, e) {
var btn, showEditBox, showReplyBox, commentId, replyId, hideAddReply;
function readdresolves() {
me.update();
}
btn = $(e.target);
if (btn) {
showEditBox = record.get('editTextInPopover');
showReplyBox = record.get('showReplyInPopover');
hideAddReply = record.get('hideAddReply');
commentId = record.get('uid');
replyId = btn.attr('data-value');
if (record.get('hint')) {
me.fireEvent('comment:disableHint', [record]);
return;
}
if (btn.hasClass('btn-edit')) {
if (!_.isUndefined(replyId)) {
me.fireEvent('comment:closeEditing', [commentId]);
me.fireEvent('comment:editReply', [commentId, replyId, true]);
this.replyId = replyId;
this.autoHeightTextBox();
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
readdresolves();
me.hookTextBox();
this.autoScrollToEditButtons();
this.setFocusToTextBox();
} else {
if (!showEditBox) {
me.fireEvent('comment:closeEditing');
record.set('editTextInPopover', true);
me.fireEvent('comment:show', [commentId]);
this.autoHeightTextBox();
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
readdresolves();
me.hookTextBox();
this.autoScrollToEditButtons();
this.setFocusToTextBox();
}
}
} else if (btn.hasClass('btn-delete')) {
if (!_.isUndefined(replyId)) {
me.fireEvent('comment:removeReply', [commentId, replyId]);
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
} else {
me.fireEvent('comment:remove', [commentId]);
}
me.fireEvent('comment:closeEditing');
readdresolves();
} else if (btn.hasClass('user-reply')) {
me.fireEvent('comment:closeEditing');
record.set('showReplyInPopover', true);
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
readdresolves();
this.autoHeightTextBox();
me.hookTextBox();
this.autoScrollToEditButtons();
this.setFocusToTextBox();
} else if (btn.hasClass('btn-reply', false)) {
if (showReplyBox) {
this.clearTextBoxBind();
me.fireEvent('comment:addReply', [commentId, this.getActiveTextBoxVal()]);
me.fireEvent('comment:closeEditing');
readdresolves();
}
} else if (btn.hasClass('btn-close', false)) {
me.fireEvent('comment:closeEditing', [commentId]);
me.calculateSizeOfContent();
me.fireEvent('comment:show', [commentId]);
readdresolves();
} else if (btn.hasClass('btn-inner-edit', false)) {
if (record.get('dummy')) {
var commentVal = this.getActiveTextBoxVal();
if (commentVal.length > 0)
me.fireEvent('comment:addDummyComment', [commentVal]);
else {
var text = me.$window.find('textarea:not(.user-message)');
if (text && text.length)
setTimeout(function () {
text.focus();
}, 10);
}
return;
}
this.clearTextBoxBind();
if (!_.isUndefined(this.replyId)) {
me.fireEvent('comment:changeReply', [commentId, this.replyId, this.getActiveTextBoxVal()]);
this.replyId = undefined;
me.fireEvent('comment:closeEditing');
} else if (showEditBox) {
me.fireEvent('comment:change', [commentId, this.getActiveTextBoxVal()]);
me.fireEvent('comment:closeEditing');
me.calculateSizeOfContent();
}
readdresolves();
} else if (btn.hasClass('btn-inner-close', false)) {
if (record.get('dummy')) {
me.hide();
return;
}
if (hideAddReply && this.getActiveTextBoxVal().length > 0) {
me.saveText();
record.set('hideAddReply', false);
this.getTextBox().val(me.textVal);
this.autoHeightTextBox();
} else {
this.clearTextBoxBind();
me.fireEvent('comment:closeEditing', [commentId]);
}
this.replyId = undefined;
me.calculateSizeOfContent();
me.setLeftTop(me.arrowPosX, me.arrowPosY, me.leftX);
me.calculateSizeOfContent();
readdresolves();
} else if (btn.hasClass('btn-resolve', false)) {
var tip = btn.data('bs.tooltip');
if (tip) tip.dontShow = true;
me.fireEvent('comment:resolve', [commentId]);
readdresolves();
} else if (btn.hasClass('btn-resolve-check', false)) {
var tip = btn.data('bs.tooltip');
if (tip) tip.dontShow = true;
me.fireEvent('comment:resolve', [commentId]);
readdresolves();
}
}
});
me.on({
'show': function () {
me.commentsView.autoHeightTextBox();
me.$window.find('textarea').keydown(function (event) {
if (event.keyCode == Common.UI.Keys.ESC) {
me.hide();
}
});
},
'animate:before': function () {
var text = me.$window.find('textarea');
if (text && text.length)
text.focus();
}
});
}
}
var ReviewPopoverDataView = Common.UI.DataView.extend((function() {
return {
options : {
handleSelect: false,
scrollable: true,
template: _.template('<div class="dataview-ct inner" style="overflow-y: visible;">'+
'</div>' +
'<div class="lock-area" style="cursor: default;"></div>' +
'<div class="lock-author" style="cursor: default;"></div>'
)
}
}
})());
if (ReviewPopoverDataView) {
if (this.reviewChangesView) {
this.reviewChangesView.render($('#id-review-popover'));
this.reviewChangesView.onResetItems();
} else {
this.reviewChangesView = new ReviewPopoverDataView({
el: $('#id-review-popover'),
store: me.reviewStore,
itemTemplate: _.template(reviewTemplate)
});
this.reviewChangesView.on('item:click', function (picker, item, record, e) {
var btn = $(e.target);
if (btn) {
if (btn.hasClass('btn-accept')) {
me.fireEvent('reviewchange:accept', [record.get('changedata')]);
} else if (btn.hasClass('btn-reject')) {
me.fireEvent('reviewchange:reject', [record.get('changedata')]);
} else if (btn.hasClass('btn-delete')) {
me.fireEvent('reviewchange:delete', [record.get('changedata')]);
}
}
});
}
}
if (_.isUndefined(this.scroller)) {
this.scroller = new Common.UI.Scroller({
el: window.find('#id-popover'),
minScrollbarLength : 40,
wheelSpeed: 10,
alwaysVisibleY: true
});
}
},
showComments: function (animate, loadText, focus, showText) {
this.options.animate = animate;
var me = this, textBox = this.commentsView.getTextBox();
if (loadText && this.textVal) {
textBox && textBox.val(this.textVal);
}
if (showText && showText.length) {
textBox && textBox.val(showText);
}
this.show(animate);
this.hookTextBox();
this._state.commentsVisible = true;
},
showReview: function (animate, lock, lockuser) {
this.show(animate);
this.reviewChangesView.cmpEl.find('.lock-area').toggleClass('hidden', !lock);
this.reviewChangesView.cmpEl.find('.lock-author').toggleClass('hidden', !lock || _.isEmpty(lockuser)).text(lockuser);
this._state.reviewVisible = true;
},
show: function (animate, loadText, focus, showText) {
this.options.animate = animate;
Common.UI.Window.prototype.show.call(this);
if (this.scroller) {
this.scroller.update({minScrollbarLength: 40, alwaysVisibleY: true});
}
},
hideComments: function () {
if (this.handlerHide) {
this.handlerHide();
}
this.hideTips();
this._state.commentsVisible = false;
if (!this._state.reviewVisible)
this.hide();
else
this.calculateSizeOfContent();
},
hideReview: function () {
if (this.handlerHide) {
this.handlerHide();
}
this.hideTips();
this._state.reviewVisible = false;
if (!this._state.commentsVisible)
this.hide();
else
this.calculateSizeOfContent();
},
hide: function () {
if (this.handlerHide) {
this.handlerHide();
}
this.hideTips();
Common.UI.Window.prototype.hide.call(this);
if (!_.isUndefined(this.e) && this.e.keyCode == Common.UI.Keys.ESC) {
this.e.preventDefault();
this.e.stopImmediatePropagation();
this.e = undefined;
}
},
// CommentsPopover
update: function (needRender) {
if (this.commentsView && needRender)
this.commentsView.onResetItems();
if (this.scroller) {
this.scroller.update({minScrollbarLength: 40, alwaysVisibleY: true});
}
},
isVisible: function () {
return (this.$window && this.$window.is(':visible'));
},
setLeftTop: function (posX, posY, leftX, loadInnerValues, retainContent) {
if (!this.$window)
this.render();
if (loadInnerValues) {
posX = this.arrowPosX;
posY = this.arrowPosY;
leftX = this.leftX;
}
if (_.isUndefined(posX) && _.isUndefined(posY))
return;
this.arrowPosX = posX;
this.arrowPosY = posY;
this.leftX = leftX;
var commentsView = $('#id-popover'),
arrowView = $('#id-comments-arrow'),
editorView = $('#editor_sdk'),
editorBounds = null,
sdkBoundsHeight = 0,
sdkBoundsTop = 0,
sdkBoundsLeft = 0,
sdkPanelRight = '',
sdkPanelRightWidth = 0,
sdkPanelLeft = '',
sdkPanelLeftWidth = 0,
sdkPanelThumbs = '', // for PE
sdkPanelThumbsWidth = 0, // for PE
sdkPanelTop = '',
sdkPanelHeight = 0,
leftPos = 0,
windowWidth = 0,
outerHeight = 0,
topPos = 0,
sdkBoundsTopPos = 0;
if (commentsView && arrowView && editorView && editorView.get(0)) {
editorBounds = editorView.get(0).getBoundingClientRect();
if (editorBounds) {
sdkBoundsHeight = editorBounds.height - this.sdkBounds.padding * 2;
this.$window.css({maxHeight: sdkBoundsHeight + 'px'});
this.sdkBounds.width = editorBounds.width;
this.sdkBounds.height = editorBounds.height;
// LEFT CORNER
if (!_.isUndefined(posX)) {
sdkPanelRight = $('#id_vertical_scroll');
if (sdkPanelRight.length) {
sdkPanelRightWidth = (sdkPanelRight.css('display') !== 'none') ? sdkPanelRight.width() : 0;
} else {
sdkPanelRight = $('#ws-v-scrollbar');
if (sdkPanelRight.length) {
sdkPanelRightWidth = (sdkPanelRight.css('display') !== 'none') ? sdkPanelRight.width() : 0;
}
}
this.sdkBounds.width -= sdkPanelRightWidth;
sdkPanelLeft = $('#id_panel_left');
if (sdkPanelLeft.length) {
sdkPanelLeftWidth = (sdkPanelLeft.css('display') !== 'none') ? sdkPanelLeft.width() : 0;
}
sdkPanelThumbs = $('#id_panel_thumbnails');
if (sdkPanelThumbs.length) {
sdkPanelThumbsWidth = (sdkPanelThumbs.css('display') !== 'none') ? sdkPanelThumbs.width() : 0;
this.sdkBounds.width -= sdkPanelThumbsWidth;
}
leftPos = Math.min(sdkBoundsLeft + posX + this.arrow.width, sdkBoundsLeft + this.sdkBounds.width - this.$window.outerWidth() - 25);
leftPos = Math.max(sdkBoundsLeft + sdkPanelLeftWidth + this.arrow.width, leftPos);
arrowView.removeClass('right').addClass('left');
if (!_.isUndefined(leftX)) {
windowWidth = this.$window.outerWidth();
if (windowWidth) {
if ((posX + windowWidth > this.sdkBounds.width - this.arrow.width + 5) && (this.leftX > windowWidth)) {
leftPos = this.leftX - windowWidth + sdkBoundsLeft - this.arrow.width;
arrowView.removeClass('left').addClass('right');
} else {
leftPos = sdkBoundsLeft + posX + this.arrow.width;
}
}
}
this.$window.css('left', leftPos + 'px');
}
// TOP CORNER
if (!_.isUndefined(posY)) {
sdkPanelTop = $('#id_panel_top');
sdkBoundsTopPos = sdkBoundsTop;
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
sdkBoundsTopPos += this.sdkBounds.paddingTop;
} else {
sdkPanelTop = $('#ws-h-scrollbar');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
}
}
this.sdkBounds.height -= sdkPanelHeight;
outerHeight = this.$window.outerHeight();
topPos = Math.min(sdkBoundsTop + sdkBoundsHeight - outerHeight, this.arrowPosY + sdkBoundsTop - this.arrow.height);
topPos = Math.max(topPos, sdkBoundsTopPos);
this.$window.css('top', topPos + 'px');
}
}
}
if (!retainContent)
this.calculateSizeOfContent();
},
calculateSizeOfContent: function (testVisible) {
if (testVisible && !this.$window.is(':visible'))
return;
this.$window.css({overflow: 'hidden'});
var arrowView = $('#id-comments-arrow'),
commentsView = $('#id-popover'),
contentBounds = null,
editorView = null,
editorBounds = null,
sdkBoundsHeight = 0,
sdkBoundsTop = 0,
sdkBoundsLeft = 0,
sdkPanelTop = '',
sdkPanelHeight = 0,
arrowPosY = 0,
windowHeight = 0,
outerHeight = 0,
topPos = 0,
sdkBoundsTopPos = 0;
if (commentsView && arrowView && commentsView.get(0)) {
commentsView.css({height: '100%'});
contentBounds = commentsView.get(0).getBoundingClientRect();
if (contentBounds) {
editorView = $('#editor_sdk');
if (editorView && editorView.get(0)) {
editorBounds = editorView.get(0).getBoundingClientRect();
if (editorBounds) {
sdkBoundsHeight = editorBounds.height - this.sdkBounds.padding * 2;
sdkBoundsTopPos = sdkBoundsTop;
windowHeight = this.$window.outerHeight();
// TOP CORNER
sdkPanelTop = $('#id_panel_top');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
sdkBoundsTopPos += this.sdkBounds.paddingTop;
} else {
sdkPanelTop = $('#ws-h-scrollbar');
if (sdkPanelTop.length) {
sdkPanelHeight = (sdkPanelTop.css('display') !== 'none') ? sdkPanelTop.height() : 0;
}
}
outerHeight = Math.max(commentsView.outerHeight(), this.$window.outerHeight());
if (sdkBoundsHeight <= outerHeight) {
this.$window.css({
maxHeight: sdkBoundsHeight - sdkPanelHeight + 'px',
top: sdkBoundsTop + sdkPanelHeight + 'px'
});
commentsView.css({height: sdkBoundsHeight - sdkPanelHeight - 3 + 'px'});
// arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - sdkPanelHeight - this.arrow.width);
arrowPosY = Math.min(arrowPosY, sdkBoundsHeight - (sdkPanelHeight + this.arrow.margin + this.arrow.width));
arrowView.css({top: arrowPosY + 'px'});
} else {
outerHeight = windowHeight;
if (outerHeight > 0) {
if (contentBounds.top + outerHeight > sdkBoundsHeight + sdkBoundsTop || contentBounds.height === 0) {
topPos = Math.min(sdkBoundsTop + sdkBoundsHeight - outerHeight, this.arrowPosY + sdkBoundsTop - this.arrow.height);
topPos = Math.max(topPos, sdkBoundsTopPos);
this.$window.css({top: topPos + 'px'});
}
}
arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - (sdkBoundsHeight - outerHeight) - this.arrow.width);
arrowPosY = Math.min(arrowPosY, outerHeight - this.arrow.margin - this.arrow.width);
arrowView.css({top: arrowPosY + 'px'});
}
}
}
}
}
this.$window.css({overflow: ''});
},
saveText: function (clear) {
if (this.commentsView && this.commentsView.cmpEl.find('.lock-area').length < 1) {
this.textVal = undefined;
if (!clear) {
this.textVal = this.commentsView.getActiveTextBoxVal();
} else {
this.commentsView.clearTextBoxBind();
}
}
},
loadText: function () {
if (this.textVal && this.commentsView) {
var textBox = this.commentsView.getTextBox();
textBox && textBox.val(this.textVal);
}
},
getEditText: function () {
if (this.commentsView) {
return this.commentsView.getActiveTextBoxVal();
}
return undefined;
},
hookTextBox: function () {
var me = this, textBox = this.commentsView.getTextBox();
textBox && textBox.keydown(function (event) {
if ((event.ctrlKey || event.metaKey) && !event.altKey && event.keyCode === Common.UI.Keys.RETURN) {
var buttonChangeComment = $('#id-comments-change-popover');
if (buttonChangeComment && buttonChangeComment.length) {
buttonChangeComment.click();
}
event.stopImmediatePropagation();
} else if (event.keyCode === Common.UI.Keys.TAB) {
var $this, end, start;
start = this.selectionStart;
end = this.selectionEnd;
$this = $(this);
$this.val($this.val().substring(0, start) + '\t' + $this.val().substring(end));
this.selectionStart = this.selectionEnd = start + 1;
event.stopImmediatePropagation();
event.preventDefault();
}
me.e = event;
});
},
hideTips: function () {
if (this.commentsView)
_.each(this.commentsView.dataViewItems, function (item) {
if (item.tipsArray) {
item.tipsArray.forEach(function (item) {
item.hide();
});
}
}, this);
},
isCommentsViewMouseOver: function () {
return this._isMouseOver;
},
setReviewStore: function(store) {
this.reviewStore = store;
if (this.reviewChangesView)
this.reviewChangesView.setStore(this.reviewStore);
},
setCommentsStore: function(store) {
this.commentsStore = store;
if (this.commentsView)
this.commentsView.setStore(this.commentsStore);
},
getPopover: function(options) {
if (!this.popover)
this.popover = new Common.Views.ReviewPopover(options);
return this.popover;
},
textAddReply : 'Add Reply',
textAdd : "Add",
textCancel : 'Cancel',
textEdit : 'Edit',
textReply : 'Reply',
textClose : 'Close',
textResolve : 'Resolve',
textOpenAgain : "Open Again"
}, Common.Views.ReviewPopover || {}))
});

View file

@ -145,7 +145,7 @@ define([
cls : 'input-group-nr', cls : 'input-group-nr',
style : 'width: 234px;', style : 'width: 234px;',
menuCls : 'scrollable-menu', menuCls : 'scrollable-menu',
menuStyle : 'min-width: 55px;max-height: 270px;', menuStyle : 'min-width: 234px;max-height: 270px;',
store : new Common.Collections.Fonts(), store : new Common.Collections.Fonts(),
recent : 0, recent : 0,
hint : me.tipFontName hint : me.tipFontName

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127"><defs><style>.cls-2-1{opacity:0.2;}</style></defs><symbol id="svg-format-blank"><path fill="#fff" d="M95,23v96a3,3,0,0,1-3,3H8a3,3,0,0,1-3-3V8A3,3,0,0,1,8,5H77Z"/><path class="cls-2-1" d="M77,5H8A3,3,0,0,0,5,8V119a3,3,0,0,0,3,3H92a3,3,0,0,0,3-3V23ZM94,119a2,2,0,0,1-2,2H8a2,2,0,0,1-2-2V8A2,2,0,0,1,8,6H76.59l.41.41V20a3,3,0,0,0,3,3H93.59l.41.41Z"/><g class="cls-2-1"><rect x="50" y="86" width="25" height="2"/><rect x="25" y="80" width="50" height="2"/><rect x="25" y="74" width="50" height="2"/><rect x="25" y="68" width="50" height="2"/><rect x="25" y="62" width="50" height="2"/><rect x="25" y="43" width="24" height="2"/><rect x="25" y="37" width="19" height="2"/></g></symbol></svg>

After

Width:  |  Height:  |  Size: 788 B

View file

@ -0,0 +1,39 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<title>csv</title>
<symbol id="svg-format-csv">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #646464"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M43.7,105.8a2.1,2.1,0,0,0-1.6.8,3.9,3.9,0,0,0-.6,2.1c0,2,.8,2.9,2.2,2.9a5.4,5.4,0,0,0,2.2-.4v1.5a6.7,6.7,0,0,1-2.4.4,3.4,3.4,0,0,1-2.8-1.1,4.8,4.8,0,0,1-1-3.3,3.7,3.7,0,0,1,.5-2.3,3.6,3.6,0,0,1,1.4-1.6,5.1,5.1,0,0,1,4.6.1l-.6,1.5-1-.4Z" style="fill: #fff"/>
<path d="M52.8,110.6a2.1,2.1,0,0,1-.9,1.8,3.2,3.2,0,0,1-2.3.7,6.9,6.9,0,0,1-2.4-.5v-1.7l1.4.6h1.1l1-.2a.9.9,0,0,0,.3-.7.5.5,0,0,0-.2-.4.8.8,0,0,0-.4-.4l-1.1-.6-1.2-.7-.6-.8a1.4,1.4,0,0,1-.2-1.1A2,2,0,0,1,48,105a3.4,3.4,0,0,1,2.2-.7l1.2.2,1.3.4-.6,1.4-1.1-.4h-.9a1.1,1.1,0,0,0-.8.3.7.7,0,0,0-.3.6l.2.4.3.4,1.2.6a3.6,3.6,0,0,1,1.6,1.1A2.1,2.1,0,0,1,52.8,110.6Z" style="fill: #fff"/>
<path d="M59.2,104.4H61L58.1,113h-2l-2.9-8.6h1.9l1.6,5.1a4.3,4.3,0,0,1,.2,1.1c.1.4.2.7.2.8s.2-1,.5-1.9Z" style="fill: #fff"/>
</g>
<rect x="21" y="90" width="17" height="2" style="fill: #fff"/>
<rect x="21" y="83" width="17" height="2" style="fill: #fff"/>
<rect x="21" y="76" width="17" height="2" style="fill: #fff"/>
<rect x="21" y="69" width="17" height="2" style="fill: #fff"/>
<rect x="21" y="62" width="17" height="2" style="fill: #fff"/>
<rect x="21" y="55" width="17" height="2" style="fill: #fff"/>
<rect x="21" y="48" width="17" height="2" style="fill: #fff"/>
<rect x="21" y="41" width="17" height="2" style="fill: #fff"/>
<rect x="21" y="34" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="90" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="83" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="76" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="69" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="62" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="55" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="48" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="41" width="17" height="2" style="fill: #fff"/>
<rect x="42" y="34" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="90" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="83" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="76" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="69" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="62" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="55" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="48" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="41" width="17" height="2" style="fill: #fff"/>
<rect x="63" y="34" width="17" height="2" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-docx">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #214479"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M41.1,108.6a4.5,4.5,0,0,1-1.2,3.3,4.8,4.8,0,0,1-3.4,1.1H34v-8.6h2.7a4.9,4.9,0,0,1,3.3,1.1A4,4,0,0,1,41.1,108.6Zm-1.8.1c0-1.9-.9-2.8-2.5-2.8h-.9v5.6h.7C38.4,111.5,39.3,110.6,39.3,108.7Z" style="fill: #fff"/>
<path d="M50.7,108.7a4.9,4.9,0,0,1-1.1,3.3,4.6,4.6,0,0,1-6,0,5.4,5.4,0,0,1,0-6.6,3.8,3.8,0,0,1,3-1.1,4,4,0,0,1,3.1,1.1A5.6,5.6,0,0,1,50.7,108.7Zm-6.3,0a3.3,3.3,0,0,0,.6,2.2,2,2,0,0,0,1.6.7c1.5,0,2.2-1,2.2-2.9s-.7-2.9-2.2-2.9a2.4,2.4,0,0,0-1.6.7A3.3,3.3,0,0,0,44.4,108.7Z" style="fill: #fff"/>
<path d="M56.1,105.8a2.1,2.1,0,0,0-1.6.8,3.1,3.1,0,0,0-.5,2.1c0,2,.7,2.9,2.1,2.9a5.4,5.4,0,0,0,2.2-.4v1.5a6.7,6.7,0,0,1-2.4.4,3.4,3.4,0,0,1-2.8-1.1,4.8,4.8,0,0,1-1-3.3,5.9,5.9,0,0,1,.5-2.3,3.6,3.6,0,0,1,1.4-1.6,5.1,5.1,0,0,1,4.6.1l-.6,1.5-.9-.4Z" style="fill: #fff"/>
<path d="M67,113H65l-2-3.2L61,113H59l2.9-4.4-2.7-4.2h2l1.9,3.1,1.8-3.1h1.9l-2.7,4.3Z" style="fill: #fff"/>
</g>
<polygon points="67.8 48 61.5 75 54.5 48 51.5 48 48.5 48 41.5 75 35.2 48 29.4 48 37.9 82 44.3 82 51.5 54.1 58.7 82 65.1 82 73.6 48 67.8 48" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-epub">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #5892b6"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M40.3,113H35.4v-8.6h4.9v1.5H37.2v1.9h2.9v1.5H37.2v2.2h3.1Z" style="fill: #fff"/>
<path d="M48,107.1a3.2,3.2,0,0,1-.8,2.1,3.8,3.8,0,0,1-2.5.8h-.8v3H42.1v-8.6h2.7a4,4,0,0,1,2.4.7A2.2,2.2,0,0,1,48,107.1Zm-4.1,1.4h.6a1.6,1.6,0,0,0,1.3-.4,1.1,1.1,0,0,0,.4-.9,1,1,0,0,0-.4-1,1.7,1.7,0,0,0-1-.3h-.9Z" style="fill: #fff"/>
<path d="M56.6,104.4V110a2.9,2.9,0,0,1-.4,1.6,2.5,2.5,0,0,1-1.2,1.1,4.8,4.8,0,0,1-4.5-.4,3.2,3.2,0,0,1-.9-2.3v-5.6h1.8v5.3a2.3,2.3,0,0,0,.4,1.4,1.9,1.9,0,0,0,2.6,0,2.3,2.3,0,0,0,.4-1.4v-5.3Z" style="fill: #fff"/>
<path d="M58.7,104.4h2.7a4,4,0,0,1,2.6.6,1.5,1.5,0,0,1,.8,1.6,2.8,2.8,0,0,1-.3,1.3,2.1,2.1,0,0,1-1,.6h0a1.9,1.9,0,0,1,1.2.7,2,2,0,0,1,.4,1.3,2.1,2.1,0,0,1-.9,1.8,3.2,3.2,0,0,1-2.3.7H58.7Zm1.8,3.4h1.1a1.4,1.4,0,0,0,1.1-.2,1.1,1.1,0,0,0,.3-.8.8.8,0,0,0-.4-.7l-1.1-.2h-1Zm0,1.5v2.2h1.2a2,2,0,0,0,1.1-.3,1.1,1.1,0,0,0,.4-.9c0-.7-.5-1-1.5-1Z" style="fill: #fff"/>
</g>
<path d="M49,84V49s-9-6-24-7V75S42,76,49,84Z" style="fill: #fff"/>
<path d="M75,75V42c-15,1-24,7-24,7V84C58,76,75,75,75,75Z" style="fill: #fff"/>
<path d="M77,47V79s-15,0-27,8.3C38,79,23,79,23,79V47H20V82s13-2,30,6c17-8,30-6,30-6V47Z" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-html">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #7c9a34"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M41,113H39.2v-3.7H35.8V113H34v-8.6h1.8v3.4h3.4v-3.4H41Z" style="fill: #fff"/>
<path d="M46.5,113H44.6v-7.1H42.3v-1.5h6.5v1.5H46.5Z" style="fill: #fff"/>
<path d="M53.7,113l-2-6.7h-.1c.1,1.3.1,2.3.1,2.7v4H50.1v-8.6h2.5l2,6.6h0l2.2-6.6h2.5V113H57.6v-4.7c0-.3,0-.9.1-2h-.1L55.4,113Z" style="fill: #fff"/>
<path d="M61.4,113v-8.6h1.8v7.1h3.5V113Z" style="fill: #fff"/>
</g>
<polygon points="62 53 62 57.8 75.5 62.5 62 67.2 62 72 80 64.2 80 60.8 62 53" style="fill: #fff"/>
<polygon points="40 75 45.5 75 59.5 50 54 50 40 75" style="fill: #fff"/>
<polygon points="19 64.2 37 72 37 67.2 23.5 62.5 37 57.8 37 53 19 60.8 19 64.2" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-odp">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #dd9426"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M45.9,108.7a4.9,4.9,0,0,1-1.1,3.3,4.6,4.6,0,0,1-6,0,5.4,5.4,0,0,1,0-6.6,4.6,4.6,0,0,1,6,0A4.9,4.9,0,0,1,45.9,108.7Zm-6.3,0a3.3,3.3,0,0,0,.6,2.2,1.7,1.7,0,0,0,1.6.7c1.4,0,2.2-1,2.2-2.9s-.8-2.9-2.2-2.9a2,2,0,0,0-1.6.7A3.3,3.3,0,0,0,39.6,108.7Z" style="fill: #fff"/>
<path d="M54.8,108.6a4.5,4.5,0,0,1-1.2,3.3,4.9,4.9,0,0,1-3.5,1.1H47.6v-8.6h2.7a4.9,4.9,0,0,1,3.3,1.1A3.9,3.9,0,0,1,54.8,108.6Zm-1.9.1c0-1.9-.8-2.8-2.5-2.8h-.9v5.6h.7C52,111.5,52.9,110.6,52.9,108.7Z" style="fill: #fff"/>
<path d="M62.4,107.1a2.4,2.4,0,0,1-.8,2.1,3.8,3.8,0,0,1-2.5.8h-.8v3H56.5v-8.6h2.8a3.9,3.9,0,0,1,2.3.7A2.2,2.2,0,0,1,62.4,107.1Zm-4.1,1.4h.6a1.6,1.6,0,0,0,1.3-.4,1.1,1.1,0,0,0,.4-.9,1.7,1.7,0,0,0-.3-1,2,2,0,0,0-1.1-.3h-.9Z" style="fill: #fff"/>
</g>
<path d="M78,52.7h-.3a14.8,14.8,0,0,0-14,.5A14.8,14.8,0,0,0,49.4,53h-.1c-.1.1-.1.1-.1.2s.1.2.3.2h0a14.8,14.8,0,0,1,4.2-.1c4,.3,7.4,1.6,9.8,4.3.2.1.3.1.4,0,3.1-3.5,7.8-4.9,12.8-4.4h1.2a.2.2,0,0,0,.2-.2h0C78.1,52.8,78.1,52.8,78,52.7Z" style="fill: #fff"/>
<path d="M72.2,65.2h0a26,26,0,0,0-25,2.8,26.1,26.1,0,0,0-25.1,2.2h0l-.2.3a.4.4,0,0,0,.4.4h.1a27.2,27.2,0,0,1,7.5-1.1c6.9,0,13.1,1.6,17.7,6h.2c.2,0,.3-.1.3-.2l.3-.3c4.7-6.4,12.5-9.6,21.1-9.6h2.4c.2-.1.4-.2.4-.4Z" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-ods">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #237453"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M46.3,108.7a4.8,4.8,0,0,1-1,3.3,3.8,3.8,0,0,1-3,1.1,4,4,0,0,1-3.1-1.1,6.1,6.1,0,0,1,0-6.6,4,4,0,0,1,3.1-1.1,3.8,3.8,0,0,1,3,1.1A4.8,4.8,0,0,1,46.3,108.7Zm-6.2,0a4.2,4.2,0,0,0,.5,2.2,1.9,1.9,0,0,0,1.7.7c1.4,0,2.1-1,2.1-2.9s-.7-2.9-2.1-2.9a2.2,2.2,0,0,0-1.7.7A4.2,4.2,0,0,0,40.1,108.7Z" style="fill: #fff"/>
<path d="M55.2,108.6a4.5,4.5,0,0,1-1.2,3.3,4.9,4.9,0,0,1-3.5,1.1H48.1v-8.6h2.7a4.9,4.9,0,0,1,3.3,1.1A5.1,5.1,0,0,1,55.2,108.6Zm-1.9.1c0-1.9-.8-2.8-2.4-2.8h-1v5.6h.8C52.5,111.5,53.3,110.6,53.3,108.7Z" style="fill: #fff"/>
<path d="M62,110.6a1.8,1.8,0,0,1-.8,1.8,3.2,3.2,0,0,1-2.3.7,6.9,6.9,0,0,1-2.4-.5v-1.7l1.4.6H59l.9-.2a.8.8,0,0,0,.4-.7.5.5,0,0,0-.2-.4l-.4-.4-1.1-.6-1.2-.7-.6-.8a1.4,1.4,0,0,1-.2-1.1,2.2,2.2,0,0,1,.7-1.7,2.9,2.9,0,0,1,2.2-.7l1.2.2,1.3.4-.6,1.4-1.1-.4h-.9a1.1,1.1,0,0,0-.8.3.7.7,0,0,0-.3.6l.2.4c0,.1.1.2.3.4l1.2.6a3.6,3.6,0,0,1,1.6,1.1A2.3,2.3,0,0,1,62,110.6Z" style="fill: #fff"/>
</g>
<path d="M78,52.7h-.3a14.8,14.8,0,0,0-14,.5A14.8,14.8,0,0,0,49.4,53h-.1c-.1.1-.1.1-.1.2s.1.2.3.2h0a14.8,14.8,0,0,1,4.2-.1c4,.3,7.4,1.6,9.8,4.3.2.1.3.1.4,0,3.1-3.5,7.8-4.9,12.8-4.4h1.2a.2.2,0,0,0,.2-.2h0C78.1,52.8,78.1,52.8,78,52.7Z" style="fill: #fff"/>
<path d="M72.2,65.2h0a26,26,0,0,0-25,2.8,26.1,26.1,0,0,0-25.1,2.2h0l-.2.3a.4.4,0,0,0,.4.4h.1a27.2,27.2,0,0,1,7.5-1.1c6.9,0,13.1,1.6,17.7,6h.2c.2,0,.3-.1.3-.2l.3-.3c4.7-6.4,12.5-9.6,21.1-9.6h2.4c.2-.1.4-.2.4-.4Z" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-odt">
<path d="M95,23v96a2.9,2.9,0,0,1-3,3H8a2.9,2.9,0,0,1-3-3V8A2.9,2.9,0,0,1,8,5H77Z" style="fill: #3c6d88"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-3V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g style="isolation: isolate">
<path d="M46.2,108.7a4.9,4.9,0,0,1-1.1,3.3,4.6,4.6,0,0,1-6,0,5.5,5.5,0,0,1,0-6.6,4.6,4.6,0,0,1,6,0A4.9,4.9,0,0,1,46.2,108.7Zm-6.3,0a3.4,3.4,0,0,0,.6,2.2,1.8,1.8,0,0,0,1.6.7c1.4,0,2.2-1,2.2-2.9s-.8-2.9-2.2-2.9a2,2,0,0,0-1.6.7A3.4,3.4,0,0,0,39.9,108.7Z" style="fill: #fff"/>
<path d="M55,108.6a4.5,4.5,0,0,1-1.2,3.3,5,5,0,0,1-3.4,1.1H47.9v-8.6h2.7a4.9,4.9,0,0,1,3.3,1.1A4.1,4.1,0,0,1,55,108.6Zm-1.8.1c0-1.9-.9-2.8-2.5-2.8h-.9v5.6h.7C52.3,111.5,53.2,110.6,53.2,108.7Z" style="fill: #fff"/>
<path d="M60.1,113H58.3v-7.1H56v-1.5h6.5v1.5H60.1Z" style="fill: #fff"/>
</g>
<path d="M78,52.7h-.3a14.8,14.8,0,0,0-14,.5,14.8,14.8,0,0,0-14.3-.2h-.1a.3.3,0,0,0-.1.2c0,.1.1.2.3.2h0a14.8,14.8,0,0,1,4.2-.1c4,.3,7.4,1.6,9.8,4.3.2.1.3.1.4,0,3.1-3.5,7.8-4.9,12.8-4.4h1.2a.2.2,0,0,0,.2-.2h0C78.1,52.8,78.1,52.8,78,52.7Z" style="fill: #fff"/>
<path d="M72.2,65.2h0a26,26,0,0,0-25,2.8,26.1,26.1,0,0,0-25.1,2.2h0l-.2.3a.4.4,0,0,0,.4.4h.1a26.7,26.7,0,0,1,7.5-1.1c6.9,0,13.1,1.6,17.7,6h.2c.2,0,.3-.1.3-.2l.3-.3c4.7-6.4,12.5-9.6,21.1-9.6h2.4c.2-.1.4-.2.4-.4Z" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-pdf">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #ba4c3f"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M45.5,107.1a2.7,2.7,0,0,1-.9,2.1,3.5,3.5,0,0,1-2.4.8h-.8v3H39.6v-8.6h2.7a4,4,0,0,1,2.4.7A2.8,2.8,0,0,1,45.5,107.1Zm-4.1,1.4H42c.6,0,1-.1,1.2-.4a1.1,1.1,0,0,0,.5-.9,1.3,1.3,0,0,0-.4-1,2,2,0,0,0-1.1-.3h-.8Z" style="fill: #fff"/>
<path d="M54.2,108.6a4.5,4.5,0,0,1-1.2,3.3,4.9,4.9,0,0,1-3.5,1.1H47.1v-8.6h2.7a4.9,4.9,0,0,1,3.3,1.1A5.1,5.1,0,0,1,54.2,108.6Zm-1.9.1c0-1.9-.8-2.8-2.4-2.8h-1v5.6h.8C51.5,111.5,52.3,110.6,52.3,108.7Z" style="fill: #fff"/>
<path d="M57.8,113H56v-8.6h4.9v1.5H57.8v2.2h2.9v1.5H57.8Z" style="fill: #fff"/>
</g>
<path id="path4463" d="M40.4,66.7c1.6-3.2,3.4-6.7,4.9-10.2h0l.6-1.4c-1.9-7.3-3.1-13.1-2-16.9h0a2.5,2.5,0,0,1,2.6-1.5h.9c1.6,0,2.4,2,2.5,2.9h0a11.2,11.2,0,0,1-.5,3.6h0a9.2,9.2,0,0,0-.5-3.7h0c-.7-1.5-1.4-2.4-2-2.5h0a1.9,1.9,0,0,0-.7,1.4h0c-.1,1.1-.2,2.1-.2,3.2h0A37.6,37.6,0,0,0,47.5,51h0c.1-.5.3-1,.4-1.5h0l1.5-5.9h0a87.2,87.2,0,0,1-.8,8.8h0l-.3,1.3h0a29.2,29.2,0,0,0,7.4,11.5h0A24.9,24.9,0,0,0,60,68.1h0a63.6,63.6,0,0,1,8.7-.6h0c3.2,0,5.6.5,6.6,1.5h0a2.4,2.4,0,0,1,.7,1.6h0c0,.4-.1.7-.1,1h0c0-.2,0-1-2.6-1.9h0c-2.1-.6-6-.6-10.6-.1h0c5.3,2.6,10.6,4,12.3,3.2h0l.9-.9h0l-.6,1.6h0a1.6,1.6,0,0,1-1.2.9h0c-2.7.7-9.5-.9-15.5-4.3h0a123.9,123.9,0,0,0-19.8,4.7h0C33,84.9,28.7,89.5,25.2,87.8h0l-1.3-.7a1.4,1.4,0,0,1-.5-1.6h0c.4-2,2.9-5,8-8.1h0l3-1.6h0l-2.2,2.1h0c-4,3.3-7,7.5-6.9,9.1h0c3.4-.5,8.5-7.5,15.1-20.4m2.1,1.1-3.2,5.8h0a77.8,77.8,0,0,1,17.1-4.9h0L54.3,67h0A30.1,30.1,0,0,1,47,57.7h0a100.4,100.4,0,0,1-4.5,10.1" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-pdfa">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #ba4c3f"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M38.9,107.1a2.7,2.7,0,0,1-.9,2.1,4.1,4.1,0,0,1-2.4.8h-.8v3H33v-8.6h2.7a4,4,0,0,1,2.4.7A2.8,2.8,0,0,1,38.9,107.1Zm-4.1,1.4h.6a1.7,1.7,0,0,0,1.2-.4,1.1,1.1,0,0,0,.4-.9,1.7,1.7,0,0,0-.3-1,2,2,0,0,0-1.1-.3h-.8Z" style="fill: #fff"/>
<path d="M47.6,108.6a4.5,4.5,0,0,1-1.2,3.3,4.9,4.9,0,0,1-3.5,1.1H40.5v-8.6h2.7a4.2,4.2,0,0,1,3.2,1.1A3.9,3.9,0,0,1,47.6,108.6Zm-1.9.1c0-1.9-.8-2.8-2.4-2.8h-1v5.6h.8C44.8,111.5,45.7,110.6,45.7,108.7Z" style="fill: #fff"/>
<path d="M51.2,113H49.4v-8.6h4.9v1.5H51.2v2.2h2.9v1.5H51.2Z" style="fill: #fff"/>
<path d="M59.8,104.4,56.6,113H55l3.2-8.6Z" style="fill: #fff"/>
<path d="M66.2,113l-.7-2H62.4l-.6,2h-2l3.1-8.6h2.2l3,8.6Zm-1.1-3.6c-.6-1.8-.9-2.9-1-3.1a1.3,1.3,0,0,1-.1-.6c0-.2-.5,1.8-1.1,3.7Z" style="fill: #fff"/>
</g>
<path id="path4463" d="M40.4,66.7c1.6-3.2,3.4-6.7,4.9-10.2h0l.6-1.4c-1.9-7.3-3.1-13.1-2-16.9h0a2.5,2.5,0,0,1,2.6-1.5h.9c1.6,0,2.4,2,2.5,2.9h0a11.2,11.2,0,0,1-.5,3.6h0a9.2,9.2,0,0,0-.5-3.7h0c-.7-1.5-1.4-2.4-2-2.5h0a1.9,1.9,0,0,0-.7,1.4h0c-.1,1.1-.2,2.1-.2,3.2h0A37.6,37.6,0,0,0,47.5,51h0c.1-.5.3-1,.4-1.5h0l1.5-5.9h0a87.2,87.2,0,0,1-.8,8.8h0l-.3,1.3h0a29.2,29.2,0,0,0,7.4,11.5h0A24.9,24.9,0,0,0,60,68.1h0a63.6,63.6,0,0,1,8.7-.6h0c3.2,0,5.6.5,6.6,1.5h0a2.4,2.4,0,0,1,.7,1.6h0c0,.4-.1.7-.1,1h0c0-.2,0-1-2.6-1.9h0c-2.1-.6-6-.6-10.6-.1h0c5.3,2.6,10.6,4,12.3,3.2h0l.9-.9h0l-.6,1.6h0a1.6,1.6,0,0,1-1.2.9h0c-2.7.7-9.5-.9-15.5-4.3h0a123.9,123.9,0,0,0-19.8,4.7h0C33,84.9,28.7,89.5,25.2,87.8h0l-1.3-.7a1.4,1.4,0,0,1-.5-1.6h0c.4-2,2.9-5,8-8.1h0l3-1.6h0l-2.2,2.1h0c-4,3.3-7,7.5-6.9,9.1h0c3.4-.5,8.5-7.5,15.1-20.4m2.1,1.1-3.2,5.8h0a77.8,77.8,0,0,1,17.1-4.9h0L54.3,67h0A30.1,30.1,0,0,1,47,57.7h0a100.4,100.4,0,0,1-4.5,10.1" style="fill: #fff"/>
<g>
<rect x="60" y="36.7" width="16" height="12.77" rx="2" ry="2" style="fill: #fff"/>
<path d="M70.8,47.3l-1-2.7H66.6l-1,2.7h-1l3.2-8.6h.8l3.2,8.6Zm-1.3-3.6L68.6,41a5.6,5.6,0,0,1-.4-1.2c-.1.3-.2.8-.3,1.2l-1,2.7Z" style="fill: #ba4c3f"/>
</g>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-pptx">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #dd682b"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M42,107.1a2.7,2.7,0,0,1-.9,2.1,4.1,4.1,0,0,1-2.4.8h-.8v3H36.1v-8.6h2.7a4,4,0,0,1,2.4.7A2.8,2.8,0,0,1,42,107.1Zm-4.1,1.4h.6a1.4,1.4,0,0,0,1.2-.4,1.1,1.1,0,0,0,.5-.9,1.3,1.3,0,0,0-.4-1,2,2,0,0,0-1.1-.3h-.8Z" style="fill: #fff"/>
<path d="M49.5,107.1a3.2,3.2,0,0,1-.8,2.1,3.8,3.8,0,0,1-2.5.8h-.8v3H43.6v-8.6h2.7a4,4,0,0,1,2.4.7A2.2,2.2,0,0,1,49.5,107.1Zm-4.1,1.4H46a1.6,1.6,0,0,0,1.3-.4,1.5,1.5,0,0,0,.4-.9,1,1,0,0,0-.4-1,2,2,0,0,0-1.1-.3h-.8Z" style="fill: #fff"/>
<path d="M54.4,113H52.6v-7.1H50.3v-1.5h6.5v1.5H54.4Z" style="fill: #fff"/>
<path d="M65,113H62.9l-2-3.2L59,113H57l2.9-4.4-2.7-4.2h2l1.8,3.1,1.9-3.1h1.9l-2.7,4.3Z" style="fill: #fff"/>
</g>
<path d="M50,69A16,16,0,0,0,66,53H50V37a16,16,0,0,0,0,32Z" style="fill: #fff"/>
<path d="M53,34V50H69A16,16,0,0,0,53,34Z" style="fill: #fff"/>
<rect x="25" y="89" width="50" height="2" style="fill: #fff"/>
<rect x="25" y="83" width="50" height="2" style="fill: #fff"/>
<rect x="25" y="77" width="50" height="2" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-rtf">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #635e9b"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M42.2,109.7V113H40.3v-8.6h2.5a3.5,3.5,0,0,1,2.6.7,2.1,2.1,0,0,1,.9,1.9,2,2,0,0,1-.4,1.3,4,4,0,0,1-1.2,1l2.5,3.7h-2l-2.1-3.3Zm0-1.5h.6l1.2-.3c.3-.1.4-.4.4-.9a.9.9,0,0,0-.4-.8,2.8,2.8,0,0,0-1.3-.3h-.5Z" style="fill: #fff"/>
<path d="M51.6,113H49.8v-7.1H47.4v-1.5h6.5v1.5H51.6Z" style="fill: #fff"/>
<path d="M57,113H55.2v-8.6h4.9v1.5H57v2.2h2.9v1.5H57Z" style="fill: #fff"/>
</g>
<rect x="49" y="38" width="25" height="2" style="fill: #fff"/>
<rect x="49" y="44" width="25" height="2" style="fill: #fff"/>
<rect x="49" y="50" width="25" height="2" style="fill: #fff"/>
<rect x="49" y="56" width="25" height="2" style="fill: #fff"/>
<rect x="25" y="62" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="68" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="74" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="80" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="86" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="38" width="20" height="20" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-txt">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #7c7c7d"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M43.4,113H41.6v-7.1H39.3v-1.5h6.5v1.5H43.4Z" style="fill: #fff"/>
<path d="M54,113H51.9l-2-3.2-2,3.2H46l2.8-4.4-2.6-4.2h2l1.8,3.1,1.8-3.1h2l-2.7,4.3Z" style="fill: #fff"/>
<path d="M58.4,113H56.6v-7.1H54.2v-1.5h6.5v1.5H58.4Z" style="fill: #fff"/>
</g>
<rect x="25" y="38" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="44" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="50" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="56" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="62" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="68" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="74" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="80" width="49" height="2" style="fill: #fff"/>
<rect x="25" y="86" width="49" height="2" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
<symbol id="svg-format-xlsx">
<path d="M95,23v96a2.9,2.9,0,0,1-2.8,3H8a2.9,2.9,0,0,1-3-2.8V8A2.9,2.9,0,0,1,7.8,5H77Z" style="fill: #1f7244"/>
<path d="M95,23H80a2.9,2.9,0,0,1-3-2.8V5Z" style="opacity: 0.20000000298023224;isolation: isolate"/>
<g>
<path d="M43.3,113H41.2l-2-3.2-2,3.2H35.3l2.8-4.4-2.6-4.2h2l1.8,3.1,1.8-3.1h2l-2.7,4.3Z" style="fill: #fff"/>
<path d="M44.4,113v-8.6h1.8v7.1h3.5V113Z" style="fill: #fff"/>
<path d="M56.2,110.6a2.3,2.3,0,0,1-.8,1.8,3.3,3.3,0,0,1-2.3.7,7,7,0,0,1-2.5-.5v-1.7l1.5.6h1.1l.9-.2a.9.9,0,0,0,.3-.7c0-.2,0-.3-.1-.4a.8.8,0,0,0-.4-.4l-1.1-.6-1.2-.7a1.6,1.6,0,0,1-.6-.8,2,2,0,0,1-.3-1.1,2.1,2.1,0,0,1,.8-1.7,2.7,2.7,0,0,1,2.1-.7l1.3.2,1.3.4-.6,1.4-1.1-.4h-.9a1.1,1.1,0,0,0-.8.3.8.8,0,0,0-.2,1l.4.4,1.1.6a3.9,3.9,0,0,1,1.7,1.1A2.3,2.3,0,0,1,56.2,110.6Z" style="fill: #fff"/>
<path d="M64.7,113H62.6l-2-3.2-2,3.2H56.7l2.8-4.4-2.6-4.2h2l1.8,3.1,1.8-3.1h2l-2.7,4.3Z" style="fill: #fff"/>
</g>
<polygon points="52.8 61.6 64 45 58.5 45 50 57.6 41.5 45 36 45 47.3 61.6 35.5 79 41 79 50 65.7 59 79 64.5 79 52.8 61.6" style="fill: #fff"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -63,8 +63,8 @@
c-0.845-1.277-2.313-2.215-3.989-2.215c-2.461,0-5.405,1.78-5.694,4.119C4.399,10.291,7.034,7.625,10.645,7.625z"/> c-0.845-1.277-2.313-2.215-3.989-2.215c-2.461,0-5.405,1.78-5.694,4.119C4.399,10.291,7.034,7.625,10.645,7.625z"/>
</symbol> </symbol>
<symbol id="svg-btn-options" viewBox="0 0 20 20"> <symbol id="svg-btn-options" viewBox="0 0 20 20">
<rect x="4" y="6" width="12" height="1"/> <rect x="3" y="6" width="14" height="1"/>
<rect x="4" y="9" width="12" height="1"/> <rect x="3" y="10" width="14" height="1"/>
<rect x="4" y="12" width="12" height="1"/> <rect x="3" y="14" width="14" height="1"/>
</symbol> </symbol>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 661 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -52,24 +52,24 @@
} }
.color { .color {
position: absolute; display: inline-block;
top: 0; vertical-align: middle;
left: 0; margin: 0 5px 3px 0;
margin-top: 1px;
width: 12px; width: 12px;
height: 12px; height: 12px;
border: 1px solid @gray-dark; border: 1px solid @gray-dark;
} }
.name { .name {
font-size: 12px;
font-weight: bold;
display: block; display: block;
position: relative; padding: 0 10px 0 0;
padding: 0 10px 0 16px;
margin-top: -2px;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
font-weight: bold; line-height: normal;
height: 16px;
} }
} }
@ -100,6 +100,23 @@
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.user-name {
color: @gray-deep;
font-size: 12px;
font-weight: bold;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.color {
width: 12px;
height: 12px;
border: 1px solid @gray-dark;
margin: 0 5px 3px 0;
vertical-align: middle;
}
.message { .message {
word-wrap: break-word; word-wrap: break-word;
width: 100%; width: 100%;

View file

@ -11,7 +11,8 @@
} }
.user-name { .user-name {
color: @gray-darker; color: @gray-deep;
font-size: 12px;
font-weight: bold; font-weight: bold;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@ -22,6 +23,14 @@
max-width: 155px; max-width: 155px;
} }
.color {
width: 12px;
height: 12px;
border: 1px solid @gray-dark;
margin: 0 5px 3px 0;
vertical-align: middle;
}
.user-date { .user-date {
color: @gray-darker; color: @gray-darker;
font-size: 10px; font-size: 10px;

View file

@ -109,6 +109,8 @@
} }
.user-name { .user-name {
color: @gray-deep;
font-size: 12px;
font-weight: bold; font-weight: bold;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@ -118,6 +120,14 @@
cursor: default; cursor: default;
} }
.color {
width: 12px;
height: 12px;
border: 1px solid @gray-dark;
margin: 0 5px 3px 0;
vertical-align: middle;
}
.user-name-colored { .user-name-colored {
padding: 10px 0px 0 0px; padding: 10px 0px 0 0px;
cursor: default; cursor: default;
@ -336,8 +346,13 @@
.comments-popover { .comments-popover {
width:100%; width:100%;
height:100%; position: relative;
overflow-y: hidden;
margin-bottom: 5px; margin-bottom: 5px;
.dataview-ct.inner {
overflow: visible;
}
} }
.comments-arrow { .comments-arrow {

View file

@ -40,7 +40,6 @@
.extra { .extra {
> section { > section {
line-height: 20px;
height: 100%; height: 100%;
display: flex; display: flex;
} }
@ -233,15 +232,23 @@
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
border: 1px solid @gray-dark; border: 1px solid @gray-dark;
margin: 0 5px 1px 0;
} }
.name { .user-name {
display: block; color: @gray-deep;
padding-left: 16px; font-size: 12px;
margin-top: -5px; font-weight: bold;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; cursor: default;
vertical-align: middle;
label {
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
max-width: 200px;
font-weight: bold;
}
} }
} }
} }

View file

@ -119,8 +119,8 @@
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
font-size: 12px; font-size: 12px;
font-weight: bold;
cursor: pointer; cursor: pointer;
color: @gray-darker;
text-overflow: ellipsis; text-overflow: ellipsis;
padding-right: 35px; padding-right: 35px;
} }

View file

@ -142,6 +142,7 @@
.box-panels { .box-panels {
flex-grow: 1; flex-grow: 1;
-ms-flex: 1;
.panel:not(.active) { .panel:not(.active) {
display: none; display: none;
@ -251,6 +252,10 @@
z-index: @zindex-navbar + 4; z-index: @zindex-navbar + 4;
} }
} }
&:not(.cover):not(.z-clear) {
z-index: @zindex-navbar + 1;
}
} }
.btn-toolbar { .btn-toolbar {

View file

@ -53,4 +53,8 @@
.link-tooltip .tooltip-inner { .link-tooltip .tooltip-inner {
max-width: 500px; max-width: 500px;
}
.auto-tooltip .tooltip-inner {
max-width: none;
} }

View file

@ -395,7 +395,8 @@ define([
}, },
changeToolbarSaveState: function (state) { changeToolbarSaveState: function (state) {
this.leftMenu.menuFile.getButton('save').setDisabled(state); var btnSave = this.leftMenu.menuFile.getButton('save');
btnSave && btnSave.setDisabled(state);
}, },
/** coauthoring begin **/ /** coauthoring begin **/
@ -634,7 +635,7 @@ define([
} }
return false; return false;
case 'help': case 'help':
if ( this.mode.isEdit ) { // TODO: unlock 'help' for 'view' mode if ( this.mode.isEdit && this.mode.canHelp ) { // TODO: unlock 'help' for 'view' mode
Common.UI.Menu.Manager.hideAll(); Common.UI.Menu.Manager.hideAll();
this.leftMenu.showMenu('file:help'); this.leftMenu.showMenu('file:help');
} }

View file

@ -142,10 +142,16 @@ define([
this._state.prcontrolsdisable = paragraph_locked || header_locked; this._state.prcontrolsdisable = paragraph_locked || header_locked;
var need_disable = paragraph_locked || in_equation || in_image || in_header; var control_props = this.api.asc_IsContentControl() ? this.api.asc_GetContentControlProperties() : null,
control_plain = (control_props) ? (control_props.get_ContentControlType()==Asc.c_oAscSdtLevelType.Inline) : false;
var need_disable = paragraph_locked || in_equation || in_image || in_header || control_plain;
_.each (this.view.btnsNotes, function(item){ _.each (this.view.btnsNotes, function(item){
item.setDisabled(need_disable); item.setDisabled(need_disable);
}, this); }, this);
need_disable = paragraph_locked || header_locked || in_header || control_plain;
this.view.btnBookmarks.setDisabled(need_disable);
}, },
onApiCanAddHyperlink: function(value) { onApiCanAddHyperlink: function(value) {
@ -250,8 +256,7 @@ define([
win.show(); win.show();
break; break;
case 'remove': case 'remove':
if (currentTOC) currentTOC = (currentTOC && props) ? props.get_InternalClass() : undefined;
currentTOC = props.get_InternalClass();
this.api.asc_RemoveTableOfContents(currentTOC); this.api.asc_RemoveTableOfContents(currentTOC);
break; break;
} }
@ -259,9 +264,12 @@ define([
}, },
onTableContentsUpdate: function(type, currentTOC){ onTableContentsUpdate: function(type, currentTOC){
if (currentTOC) var props = this.api.asc_GetTableOfContentsPr(currentTOC);
currentTOC = this.api.asc_GetTableOfContentsPr(currentTOC).get_InternalClass(); if (props) {
this.api.asc_UpdateTableOfContents(type == 'pages', currentTOC); if (currentTOC && props)
currentTOC = props.get_InternalClass();
this.api.asc_UpdateTableOfContents(type == 'pages', currentTOC);
}
Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.NotificationCenter.trigger('edit:complete', this.toolbar);
}, },

View file

@ -111,6 +111,7 @@ define([
this._state = {isDisconnected: false, usersCount: 1, fastCoauth: true, lostEditingRights: false, licenseType: false}; this._state = {isDisconnected: false, usersCount: 1, fastCoauth: true, lostEditingRights: false, licenseType: false};
this.languages = null; this.languages = null;
this.translationTable = []; this.translationTable = [];
this.isModalShowed = 0;
// Initialize viewport // Initialize viewport
if (!Common.Utils.isBrowserSupported()){ if (!Common.Utils.isBrowserSupported()){
@ -180,6 +181,7 @@ define([
this.api.asc_registerCallback('asc_onPrintUrl', _.bind(this.onPrintUrl, this)); this.api.asc_registerCallback('asc_onPrintUrl', _.bind(this.onPrintUrl, this));
this.api.asc_registerCallback('asc_onMeta', _.bind(this.onMeta, this)); this.api.asc_registerCallback('asc_onMeta', _.bind(this.onMeta, this));
this.api.asc_registerCallback('asc_onSpellCheckInit', _.bind(this.loadLanguages, this)); this.api.asc_registerCallback('asc_onSpellCheckInit', _.bind(this.loadLanguages, this));
this.api.asc_registerCallback('asc_onLicenseError', _.bind(this.onPaidFeatureError, this));
Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
Common.NotificationCenter.on('goback', _.bind(this.goBack, this)); Common.NotificationCenter.on('goback', _.bind(this.goBack, this));
@ -244,20 +246,18 @@ define([
Common.NotificationCenter.on({ Common.NotificationCenter.on({
'modal:show': function(){ 'modal:show': function(){
me.isModalShowed = true; me.isModalShowed++;
me.api.asc_enableKeyEvents(false); me.api.asc_enableKeyEvents(false);
}, },
'modal:close': function(dlg) { 'modal:close': function(dlg) {
if (dlg && dlg.$lastmodal && dlg.$lastmodal.length < 1) { me.isModalShowed--;
me.isModalShowed = false; if (!me.isModalShowed)
me.api.asc_enableKeyEvents(true); me.api.asc_enableKeyEvents(true);
}
}, },
'modal:hide': function(dlg) { 'modal:hide': function(dlg) {
if (dlg && dlg.$lastmodal && dlg.$lastmodal.length < 1) { me.isModalShowed--;
me.isModalShowed = false; if (!me.isModalShowed)
me.api.asc_enableKeyEvents(true); me.api.asc_enableKeyEvents(true);
}
}, },
'settings:unitschanged':_.bind(this.unitsChanged, this), 'settings:unitschanged':_.bind(this.unitsChanged, this),
'dataview:focus': function(e){ 'dataview:focus': function(e){
@ -280,7 +280,7 @@ define([
Common.util.Shortcuts.delegateShortcuts({ Common.util.Shortcuts.delegateShortcuts({
shortcuts: { shortcuts: {
'command+s,ctrl+s': _.bind(function (e) { 'command+s,ctrl+s,command+p,ctrl+p,command+k,ctrl+k,command+d,ctrl+d': _.bind(function (e) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
}, this) }, this)
@ -413,7 +413,8 @@ define([
Asc.c_oAscFileType.ODT, Asc.c_oAscFileType.ODT,
Asc.c_oAscFileType.DOCX, Asc.c_oAscFileType.DOCX,
Asc.c_oAscFileType.HTML, Asc.c_oAscFileType.HTML,
Asc.c_oAscFileType.PDF Asc.c_oAscFileType.PDF,
Asc.c_oAscFileType.PDFA
]; ];
if ( !_format || _supported.indexOf(_format) < 0 ) if ( !_format || _supported.indexOf(_format) < 0 )
@ -445,7 +446,6 @@ define([
}); });
} }
Common.UI.alert({ Common.UI.alert({
closable: false,
title: this.notcriticalErrorTitle, title: this.notcriticalErrorTitle,
msg: (opts.data.error) ? opts.data.error : this.txtErrorLoadHistory, msg: (opts.data.error) ? opts.data.error : this.txtErrorLoadHistory,
iconCls: 'warn', iconCls: 'warn',
@ -623,7 +623,7 @@ define([
} }
application.getController('DocumentHolder').getView().focus(); application.getController('DocumentHolder').getView().focus();
if (this.api && !toolbarView._state.previewmode) { if (this.api && this.appOptions.isEdit && !toolbarView._state.previewmode) {
var cansave = this.api.asc_isDocumentCanSave(), var cansave = this.api.asc_isDocumentCanSave(),
forcesave = this.appOptions.forcesave, forcesave = this.appOptions.forcesave,
isSyncButton = (toolbarView.btnCollabChanges.rendered) ? toolbarView.btnCollabChanges.$icon.hasClass('btn-synch') : false, isSyncButton = (toolbarView.btnCollabChanges.rendered) ? toolbarView.btnCollabChanges.$icon.hasClass('btn-synch') : false,
@ -664,9 +664,12 @@ define([
action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction}); action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction});
action ? this.setLongActionView(action) : this.loadMask && this.loadMask.hide(); action ? this.setLongActionView(action) : this.loadMask && this.loadMask.hide();
if ((id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) && (!this._state.fastCoauth || this._state.usersCount<2 || if (this.appOptions.isEdit && (id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) && (!this._state.fastCoauth || this._state.usersCount<2 ||
this.getApplication().getController('Common.Controllers.ReviewChanges').isPreviewChangesMode())) this.getApplication().getController('Common.Controllers.ReviewChanges').isPreviewChangesMode()))
this.synchronizeChanges(); this.synchronizeChanges();
else if (this.appOptions.isEdit && (id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton'] || id == Asc.c_oAscAsyncAction['ApplyChanges']) &&
this._state.fastCoauth)
this.getApplication().getController('Common.Controllers.ReviewChanges').synchronizeChanges();
if ( type == Asc.c_oAscAsyncActionType.BlockInteraction && if ( type == Asc.c_oAscAsyncActionType.BlockInteraction &&
(!this.getApplication().getController('LeftMenu').dlgSearch || !this.getApplication().getController('LeftMenu').dlgSearch.isVisible()) && (!this.getApplication().getController('LeftMenu').dlgSearch || !this.getApplication().getController('LeftMenu').dlgSearch.isVisible()) &&
@ -879,7 +882,7 @@ define([
me.api.SetCollaborativeMarksShowType(value == 'all' ? Asc.c_oAscCollaborativeMarksShowType.All : me.api.SetCollaborativeMarksShowType(value == 'all' ? Asc.c_oAscCollaborativeMarksShowType.All :
(value == 'none' ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges)); (value == 'none' ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges));
Common.Utils.InternalSettings.set((me._state.fastCoauth) ? "de-settings-showchanges-fast" : "de-settings-showchanges-strict", value); Common.Utils.InternalSettings.set((me._state.fastCoauth) ? "de-settings-showchanges-fast" : "de-settings-showchanges-strict", value);
} else if (!me.appOptions.isEdit && me.appOptions.canComments) { } else if (!me.appOptions.isEdit && me.appOptions.isRestrictedEdit) {
me._state.fastCoauth = true; me._state.fastCoauth = true;
me.api.asc_SetFastCollaborative(me._state.fastCoauth); me.api.asc_SetFastCollaborative(me._state.fastCoauth);
me.api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None); me.api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);
@ -1040,6 +1043,26 @@ define([
} }
}, },
onPaidFeatureError: function() {
var buttons = [], primary,
mail = (this.appOptions.canBranding) ? ((this.editorConfig && this.editorConfig.customization && this.editorConfig.customization.customer) ? this.editorConfig.customization.customer.mail : '') : 'sales@onlyoffice.com';
if (mail.length>0) {
buttons.push({value: 'contact', caption: this.textContactUs});
primary = 'contact';
}
buttons.push({value: 'close', caption: this.textClose});
Common.UI.info({
title: this.textPaidFeature,
msg : this.textLicencePaidFeature,
buttons: buttons,
primary: primary,
callback: function(btn) {
if (btn == 'contact')
window.open('mailto:'+mail, "_blank");
}
});
},
onOpenDocument: function(progress) { onOpenDocument: function(progress) {
var elem = document.getElementById('loadmask-text'); var elem = document.getElementById('loadmask-text');
var proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount()); var proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount());
@ -1086,20 +1109,26 @@ define([
this.appOptions.canHistoryRestore= this.editorConfig.canHistoryRestore && !!this.permissions.changeHistory; this.appOptions.canHistoryRestore= this.editorConfig.canHistoryRestore && !!this.permissions.changeHistory;
this.appOptions.canUseMailMerge= this.appOptions.canLicense && this.appOptions.canEdit && !this.appOptions.isOffline; this.appOptions.canUseMailMerge= this.appOptions.canLicense && this.appOptions.canEdit && !this.appOptions.isOffline;
this.appOptions.canSendEmailAddresses = this.appOptions.canLicense && this.editorConfig.canSendEmailAddresses && this.appOptions.canEdit && this.appOptions.canCoAuthoring; this.appOptions.canSendEmailAddresses = this.appOptions.canLicense && this.editorConfig.canSendEmailAddresses && this.appOptions.canEdit && this.appOptions.canCoAuthoring;
this.appOptions.canComments = this.appOptions.canLicense && (this.permissions.comment===undefined ? this.appOptions.isEdit : this.permissions.comment); this.appOptions.canComments = this.appOptions.canLicense && (this.permissions.comment===undefined ? this.appOptions.isEdit : this.permissions.comment) && (this.editorConfig.mode !== 'view');
this.appOptions.canComments = this.appOptions.canComments && !((typeof (this.editorConfig.customization) == 'object') && this.editorConfig.customization.comments===false); this.appOptions.canComments = this.appOptions.canComments && !((typeof (this.editorConfig.customization) == 'object') && this.editorConfig.customization.comments===false);
this.appOptions.canChat = this.appOptions.canLicense && !this.appOptions.isOffline && !((typeof (this.editorConfig.customization) == 'object') && this.editorConfig.customization.chat===false); this.appOptions.canChat = this.appOptions.canLicense && !this.appOptions.isOffline && !((typeof (this.editorConfig.customization) == 'object') && this.editorConfig.customization.chat===false);
this.appOptions.canEditStyles = this.appOptions.canLicense && this.appOptions.canEdit; this.appOptions.canEditStyles = this.appOptions.canLicense && this.appOptions.canEdit;
this.appOptions.canPrint = (this.permissions.print !== false); this.appOptions.canPrint = (this.permissions.print !== false);
this.appOptions.canRename = !!this.permissions.rename; this.appOptions.canRename = this.editorConfig.canRename && !!this.permissions.rename;
this.appOptions.buildVersion = params.asc_getBuildVersion(); this.appOptions.buildVersion = params.asc_getBuildVersion();
this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && (typeof (this.editorConfig.customization) == 'object' && !!this.editorConfig.customization.forcesave); this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && (typeof (this.editorConfig.customization) == 'object' && !!this.editorConfig.customization.forcesave);
this.appOptions.forcesave = this.appOptions.canForcesave; this.appOptions.forcesave = this.appOptions.canForcesave;
this.appOptions.canEditComments= this.appOptions.isOffline || !(typeof (this.editorConfig.customization) == 'object' && this.editorConfig.customization.commentAuthorOnly); this.appOptions.canEditComments= this.appOptions.isOffline || !(typeof (this.editorConfig.customization) == 'object' && this.editorConfig.customization.commentAuthorOnly);
this.appOptions.trialMode = params.asc_getLicenseMode(); this.appOptions.trialMode = params.asc_getLicenseMode();
this.appOptions.isProtectSupport = true; // remove in 5.2 this.appOptions.isSignatureSupport= this.appOptions.isEdit && this.appOptions.isDesktopApp && this.appOptions.isOffline && this.api.asc_isSignaturesSupport();
this.appOptions.canProtect = this.appOptions.isProtectSupport && this.appOptions.isEdit && this.appOptions.isDesktopApp && this.appOptions.isOffline && this.api.asc_isSignaturesSupport(); this.appOptions.isPasswordSupport = this.appOptions.isEdit && this.appOptions.isDesktopApp && this.appOptions.isOffline && this.api.asc_isProtectionSupport();
this.appOptions.canProtect = (this.appOptions.isSignatureSupport || this.appOptions.isPasswordSupport);
this.appOptions.canEditContentControl = (this.permissions.modifyContentControl!==false); this.appOptions.canEditContentControl = (this.permissions.modifyContentControl!==false);
this.appOptions.canHelp = !((typeof (this.editorConfig.customization) == 'object') && this.editorConfig.customization.help===false);
this.appOptions.canFillForms = ((this.permissions.fillForms===undefined) ? this.appOptions.isEdit : this.permissions.fillForms) && (this.editorConfig.mode !== 'view');
this.appOptions.isRestrictedEdit = !this.appOptions.isEdit && (this.appOptions.canComments || this.appOptions.canFillForms);
if (this.appOptions.isRestrictedEdit && this.appOptions.canComments && this.appOptions.canFillForms) // must be one restricted mode, priority for filling forms
this.appOptions.canComments = false;
if ( this.appOptions.isLightVersion ) { if ( this.appOptions.isLightVersion ) {
this.appOptions.canUseHistory = this.appOptions.canUseHistory =
@ -1115,6 +1144,8 @@ define([
this.appOptions.canDownloadOrigin = this.permissions.download !== false && (type && typeof type[1] === 'string'); this.appOptions.canDownloadOrigin = this.permissions.download !== false && (type && typeof type[1] === 'string');
this.appOptions.canDownload = this.permissions.download !== false && (!type || typeof type[1] !== 'string'); this.appOptions.canDownload = this.permissions.download !== false && (!type || typeof type[1] !== 'string');
this.appOptions.fileKey = this.document.key;
this.appOptions.canBranding = (licType === Asc.c_oLicenseResult.Success) && (typeof this.editorConfig.customization == 'object'); this.appOptions.canBranding = (licType === Asc.c_oLicenseResult.Success) && (typeof this.editorConfig.customization == 'object');
if (this.appOptions.canBranding) if (this.appOptions.canBranding)
appHeader.setBranding(this.editorConfig.customization); appHeader.setBranding(this.editorConfig.customization);
@ -1135,8 +1166,9 @@ define([
this.onLongActionBegin(Asc.c_oAscAsyncActionType.BlockInteraction, LoadingDocument); this.onLongActionBegin(Asc.c_oAscAsyncActionType.BlockInteraction, LoadingDocument);
} }
this.api.asc_setViewMode(!this.appOptions.isEdit && !this.appOptions.canComments); this.api.asc_setViewMode(!this.appOptions.isEdit && !this.appOptions.isRestrictedEdit);
(!this.appOptions.isEdit && 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.api.asc_LoadDocument(); this.api.asc_LoadDocument();
}, },
@ -1150,7 +1182,8 @@ define([
viewport = app.getController('Viewport').getView('Viewport'), viewport = app.getController('Viewport').getView('Viewport'),
// headerView = app.getController('Viewport').getView('Common.Views.Header'), // headerView = app.getController('Viewport').getView('Common.Views.Header'),
statusbarView = app.getController('Statusbar').getView('Statusbar'), statusbarView = app.getController('Statusbar').getView('Statusbar'),
documentHolder = app.getController('DocumentHolder').getView(); documentHolder = app.getController('DocumentHolder').getView(),
toolbarController = app.getController('Toolbar');
// if (headerView) { // if (headerView) {
// headerView.setHeaderCaption(this.appOptions.isEdit ? 'Document Editor' : 'Document Viewer'); // headerView.setHeaderCaption(this.appOptions.isEdit ? 'Document Editor' : 'Document Viewer');
@ -1159,13 +1192,14 @@ define([
viewport && viewport.setMode(this.appOptions); viewport && viewport.setMode(this.appOptions);
statusbarView && statusbarView.setMode(this.appOptions); statusbarView && statusbarView.setMode(this.appOptions);
toolbarController.setMode(this.appOptions);
documentHolder.setMode(this.appOptions); documentHolder.setMode(this.appOptions);
this.api.asc_registerCallback('asc_onSendThemeColors', _.bind(this.onSendThemeColors, this)); this.api.asc_registerCallback('asc_onSendThemeColors', _.bind(this.onSendThemeColors, this));
this.api.asc_registerCallback('asc_onDownloadUrl', _.bind(this.onDownloadUrl, this)); this.api.asc_registerCallback('asc_onDownloadUrl', _.bind(this.onDownloadUrl, 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_onDocumentModifiedChanged', _.bind(this.onDocumentModifiedChanged, this));
}, },
applyModeEditorElements: function() { applyModeEditorElements: function() {
@ -1190,27 +1224,24 @@ define([
reviewController.setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api); reviewController.setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api);
if (this.appOptions.isProtectSupport && this.appOptions.isDesktopApp && this.appOptions.isOffline) if (this.appOptions.canProtect)
application.getController('Common.Controllers.Protection').setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api); application.getController('Common.Controllers.Protection').setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api);
var viewport = this.getApplication().getController('Viewport').getView('Viewport'); var viewport = this.getApplication().getController('Viewport').getView('Viewport');
viewport.applyEditorMode(); viewport.applyEditorMode();
var rightmenuView = rightmenuController.getView('RightMenu');
if (rightmenuView) {
rightmenuView.setApi(me.api);
rightmenuView.on('editcomplete', _.bind(me.onEditComplete, me));
rightmenuView.setMode(me.appOptions);
}
var toolbarView = (toolbarController) ? toolbarController.getView() : null; var toolbarView = (toolbarController) ? toolbarController.getView() : null;
_.each([
toolbarView,
rightmenuController.getView('RightMenu')
], function(view) {
if (view) {
view.setApi(me.api);
view.on('editcomplete', _.bind(me.onEditComplete, me));
view.setMode(me.appOptions);
}
});
if (toolbarView) { if (toolbarView) {
toolbarView.setApi(me.api);
toolbarView.on('editcomplete', _.bind(me.onEditComplete, me));
toolbarView.on('insertimage', _.bind(me.onInsertImage, me)); toolbarView.on('insertimage', _.bind(me.onInsertImage, me));
toolbarView.on('inserttable', _.bind(me.onInsertTable, me)); toolbarView.on('inserttable', _.bind(me.onInsertTable, me));
toolbarView.on('insertshape', _.bind(me.onInsertShape, me)); toolbarView.on('insertshape', _.bind(me.onInsertShape, me));
@ -1226,7 +1257,6 @@ define([
me.api.asc_SetViewRulers(!Common.localStorage.getBool('de-hidden-rulers')); me.api.asc_SetViewRulers(!Common.localStorage.getBool('de-hidden-rulers'));
me.api.asc_registerCallback('asc_onDocumentModifiedChanged', _.bind(me.onDocumentModifiedChanged, me));
me.api.asc_registerCallback('asc_onDocumentCanSaveChanged', _.bind(me.onDocumentCanSaveChanged, me)); me.api.asc_registerCallback('asc_onDocumentCanSaveChanged', _.bind(me.onDocumentCanSaveChanged, me));
/** coauthoring begin **/ /** coauthoring begin **/
me.api.asc_registerCallback('asc_onCollaborativeChanges', _.bind(me.onCollaborativeChanges, me)); me.api.asc_registerCallback('asc_onCollaborativeChanges', _.bind(me.onCollaborativeChanges, me));
@ -1262,7 +1292,7 @@ define([
this.onLongActionEnd(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument); this.onLongActionEnd(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument);
var config = { var config = {
closable: false closable: true
}; };
switch (id) switch (id)
@ -1362,6 +1392,7 @@ define([
case Asc.c_oAscError.ID.Warning: case Asc.c_oAscError.ID.Warning:
config.msg = this.errorConnectToServer; config.msg = this.errorConnectToServer;
config.closable = false;
break; break;
case Asc.c_oAscError.ID.SessionAbsolute: case Asc.c_oAscError.ID.SessionAbsolute:
@ -1409,6 +1440,7 @@ define([
config.title = this.criticalErrorTitle; config.title = this.criticalErrorTitle;
config.iconCls = 'error'; config.iconCls = 'error';
config.closable = false;
if (this.appOptions.canBackToFolder && !this.appOptions.isDesktopApp && typeof id !== 'string') { if (this.appOptions.canBackToFolder && !this.appOptions.isDesktopApp && typeof id !== 'string') {
config.msg += '<br/><br/>' + this.criticalErrorExtText; config.msg += '<br/><br/>' + this.criticalErrorExtText;
@ -1535,8 +1567,7 @@ define([
this.updateWindowTitle(); this.updateWindowTitle();
var toolbarView = this.getApplication().getController('Toolbar').getView(); var toolbarView = this.getApplication().getController('Toolbar').getView();
if (toolbarView && toolbarView.btnCollabChanges && !toolbarView._state.previewmode) {
if (toolbarView && !toolbarView._state.previewmode) {
var isSyncButton = toolbarView.btnCollabChanges.$icon.hasClass('btn-synch'), var isSyncButton = toolbarView.btnCollabChanges.$icon.hasClass('btn-synch'),
forcesave = this.appOptions.forcesave, forcesave = this.appOptions.forcesave,
isDisabled = !isModified && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave; isDisabled = !isModified && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave;
@ -1850,23 +1881,26 @@ define([
this.getApplication().getController('Toolbar').getView().updateMetricUnit(); this.getApplication().getController('Toolbar').getView().updateMetricUnit();
}, },
onAdvancedOptions: function(advOptions) { onAdvancedOptions: function(advOptions, mode) {
if (this._state.openDlg) return; if (this._state.openDlg) return;
var type = advOptions.asc_getOptionId(), var type = advOptions.asc_getOptionId(),
me = this; me = this;
if (type == Asc.c_oAscAdvancedOptionsID.TXT) { if (type == Asc.c_oAscAdvancedOptionsID.TXT) {
me._state.openDlg = new Common.Views.OpenDialog({ me._state.openDlg = new Common.Views.OpenDialog({
mode: mode,
type: type, type: type,
preview: advOptions.asc_getOptions().asc_getData(), preview: advOptions.asc_getOptions().asc_getData(),
codepages: advOptions.asc_getOptions().asc_getCodePages(), codepages: advOptions.asc_getOptions().asc_getCodePages(),
settings: advOptions.asc_getOptions().asc_getRecommendedSettings(), settings: advOptions.asc_getOptions().asc_getRecommendedSettings(),
api: me.api, api: me.api,
handler: function (encoding) { handler: function (result, encoding) {
me.isShowOpenDialog = false; me.isShowOpenDialog = false;
if (me && me.api) { if (result == 'ok') {
me.api.asc_setAdvancedOptions(type, new Asc.asc_CTXTAdvancedOptions(encoding)); if (me && me.api) {
me.loadMask && me.loadMask.show(); me.api.asc_setAdvancedOptions(type, new Asc.asc_CTXTAdvancedOptions(encoding));
me.loadMask && me.loadMask.show();
}
} }
me._state.openDlg = null; me._state.openDlg = null;
} }
@ -1965,7 +1999,7 @@ define([
}, },
onPrint: function() { onPrint: function() {
if (!this.appOptions.canPrint) return; if (!this.appOptions.canPrint || this.isModalShowed) return;
if (this.api) if (this.api)
this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event
@ -2208,7 +2242,7 @@ define([
textStrict: 'Strict mode', textStrict: 'Strict mode',
txtErrorLoadHistory: 'Loading history failed', txtErrorLoadHistory: 'Loading history failed',
textBuyNow: 'Visit website', textBuyNow: 'Visit website',
textNoLicenseTitle: 'ONLYOFFICE open source version', textNoLicenseTitle: 'ONLYOFFICE connection limitation',
textContactUs: 'Contact sales', textContactUs: 'Contact sales',
errorViewerDisconnect: 'Connection is lost. You can still view the document,<br>but will not be able to download or print until the connection is restored.', errorViewerDisconnect: 'Connection is lost. You can still view the document,<br>but will not be able to download or print until the connection is restored.',
warnLicenseExp: 'Your license has expired.<br>Please update your license and refresh the page.', warnLicenseExp: 'Your license has expired.<br>Please update your license and refresh the page.',
@ -2263,7 +2297,10 @@ define([
warnNoLicenseUsers: 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.<br>If you need more please consider purchasing a commercial license.', warnNoLicenseUsers: 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.<br>If you need more please consider purchasing a commercial license.',
warnLicenseExceeded: 'The number of concurrent connections to the document server has been exceeded and the document will be opened for viewing only.<br>Please contact your administrator for more information.', warnLicenseExceeded: 'The number of concurrent connections to the document server has been exceeded and the document will be opened for viewing only.<br>Please contact your administrator for more information.',
warnLicenseUsersExceeded: 'The number of concurrent users has been exceeded and the document will be opened for viewing only.<br>Please contact your administrator for more information.', warnLicenseUsersExceeded: 'The number of concurrent users has been exceeded and the document will be opened for viewing only.<br>Please contact your administrator for more information.',
errorDataEncrypted: 'Encrypted changes have been received, they cannot be deciphered.' errorDataEncrypted: 'Encrypted changes have been received, they cannot be deciphered.',
textClose: 'Close',
textPaidFeature: 'Paid feature',
textLicencePaidFeature: 'The feature you are trying to use is available for additional payment.<br>If you need it, please contact Sales Department'
} }
})(), DE.Controllers.Main || {})) })(), DE.Controllers.Main || {}))
}); });

View file

@ -52,13 +52,6 @@ define([
return { return {
initialize: function () { initialize: function () {
this.addListeners({
'Toolbar': {
'insert:break': function () {
console.log('insert page break');
}
}
});
}, },
onLaunch: function (view) { onLaunch: function (view) {

View file

@ -143,27 +143,20 @@ define([
} }
} }
if ( config.isReviewOnly ) { if ( config.isReviewOnly || Common.localStorage.getBool("de-track-changes-" + (config.fileKey || ''))) {
_process_changestip(); _process_changestip();
} else } else if ( me.api.asc_IsTrackRevisions() ) {
if ( me.api.asc_IsTrackRevisions() ) { var showNewChangesTip = !Common.localStorage.getBool("de-new-changes");
if ( Common.localStorage.getBool("de-track-changes") ) { if ( me.api.asc_HaveRevisionsChanges() && showNewChangesTip ) {
// show tooltip "track changes in this document" me.btnTurnReview.updateHint('');
_process_changestip();
} else {
var showNewChangesTip = !Common.localStorage.getBool("de-new-changes");
if ( me.api.asc_HaveRevisionsChanges() && showNewChangesTip ) {
me.btnTurnReview.updateHint('');
if (me.newChangesTooltip === undefined) if (me.newChangesTooltip === undefined)
me.newChangesTooltip = me.createChangesTip(me.textHasChanges, 'de-new-changes', true); me.newChangesTooltip = me.createChangesTip(me.textHasChanges, 'de-new-changes', true);
me.newChangesTooltip.show(); me.newChangesTooltip.show();
} else } else
me.btnTurnReview.updateHint(me.tipReview); me.btnTurnReview.updateHint(me.tipReview);
}
} }
} }
}); });
}, },

View file

@ -142,7 +142,8 @@ define([
Asc.c_oAscFileType.RTF, 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,
Asc.c_oAscFileType.PDFA
]; ];
if ( !_format || _supported.indexOf(_format) < 0 ) if ( !_format || _supported.indexOf(_format) < 0 )
@ -226,6 +227,11 @@ define([
Common.NotificationCenter.on('app:face', me.onAppShowed.bind(me)); Common.NotificationCenter.on('app:face', me.onAppShowed.bind(me));
}, },
setMode: function(mode) {
this.mode = mode;
this.toolbar.applyLayout(mode);
},
attachUIEvents: function(toolbar) { attachUIEvents: function(toolbar) {
/** /**
* UI Events * UI Events
@ -309,6 +315,9 @@ define([
toolbar.listStyles.on('contextmenu', _.bind(this.onListStyleContextMenu, this)); toolbar.listStyles.on('contextmenu', _.bind(this.onListStyleContextMenu, this));
toolbar.styleMenu.on('hide:before', _.bind(this.onListStyleBeforeHide, this)); toolbar.styleMenu.on('hide:before', _.bind(this.onListStyleBeforeHide, this));
toolbar.btnInsertEquation.on('click', _.bind(this.onInsertEquationClick, this)); toolbar.btnInsertEquation.on('click', _.bind(this.onInsertEquationClick, this));
toolbar.mnuNoControlsColor.on('click', _.bind(this.onNoControlsColor, this));
toolbar.mnuControlsColorPicker.on('select', _.bind(this.onSelectControlsColor, this));
$('#id-toolbar-menu-new-control-color').on('click', _.bind(this.onNewControlsColor, this));
$('#id-save-style-plus, #id-save-style-link', toolbar.$el).on('click', this.onMenuSaveStyle.bind(this)); $('#id-save-style-plus, #id-save-style-link', toolbar.$el).on('click', this.onMenuSaveStyle.bind(this));
@ -356,6 +365,7 @@ define([
this.api.asc_registerCallback('asc_onSectionProps', _.bind(this.onSectionProps, this)); this.api.asc_registerCallback('asc_onSectionProps', _.bind(this.onSectionProps, this));
this.api.asc_registerCallback('asc_onContextMenu', _.bind(this.onContextMenu, this)); this.api.asc_registerCallback('asc_onContextMenu', _.bind(this.onContextMenu, this));
this.api.asc_registerCallback('asc_onShowParaMarks', _.bind(this.onShowParaMarks, this)); this.api.asc_registerCallback('asc_onShowParaMarks', _.bind(this.onShowParaMarks, this));
this.api.asc_registerCallback('asc_onChangeSdtGlobalSettings',_.bind(this.onChangeSdtGlobalSettings, this));
}, },
onChangeCompactView: function(view, compact) { onChangeCompactView: function(view, compact) {
@ -567,14 +577,14 @@ define([
var width = this._state.pgorient ? w : h, var width = this._state.pgorient ? w : h,
height = this._state.pgorient ? h : w; height = this._state.pgorient ? h : w;
if (Math.abs(this._state.pgsize[0] - w) > 0.01 || if (Math.abs(this._state.pgsize[0] - w) > 0.1 ||
Math.abs(this._state.pgsize[1] - h) > 0.01) { Math.abs(this._state.pgsize[1] - h) > 0.1) {
this._state.pgsize = [w, h]; this._state.pgsize = [w, h];
if (this.toolbar.mnuPageSize) { if (this.toolbar.mnuPageSize) {
this.toolbar.mnuPageSize.clearAll(); this.toolbar.mnuPageSize.clearAll();
_.each(this.toolbar.mnuPageSize.items, function(item){ _.each(this.toolbar.mnuPageSize.items, function(item){
if (item.value && typeof(item.value) == 'object' && if (item.value && typeof(item.value) == 'object' &&
Math.abs(item.value[0] - width) < 0.01 && Math.abs(item.value[1] - height) < 0.01) { Math.abs(item.value[0] - width) < 0.1 && Math.abs(item.value[1] - height) < 0.1) {
item.setChecked(true); item.setChecked(true);
return false; return false;
} }
@ -590,16 +600,16 @@ define([
right = props.get_RightMargin(), right = props.get_RightMargin(),
bottom = props.get_BottomMargin(); bottom = props.get_BottomMargin();
if (!this._state.pgmargins || Math.abs(this._state.pgmargins[0] - top) > 0.01 || if (!this._state.pgmargins || Math.abs(this._state.pgmargins[0] - top) > 0.1 ||
Math.abs(this._state.pgmargins[1] - left) > 0.01 || Math.abs(this._state.pgmargins[2] - bottom) > 0.01 || Math.abs(this._state.pgmargins[1] - left) > 0.1 || Math.abs(this._state.pgmargins[2] - bottom) > 0.1 ||
Math.abs(this._state.pgmargins[3] - right) > 0.01) { Math.abs(this._state.pgmargins[3] - right) > 0.1) {
this._state.pgmargins = [top, left, bottom, right]; this._state.pgmargins = [top, left, bottom, right];
if (this.toolbar.btnPageMargins.menu) { if (this.toolbar.btnPageMargins.menu) {
this.toolbar.btnPageMargins.menu.clearAll(); this.toolbar.btnPageMargins.menu.clearAll();
_.each(this.toolbar.btnPageMargins.menu.items, function(item){ _.each(this.toolbar.btnPageMargins.menu.items, function(item){
if (item.value && typeof(item.value) == 'object' && if (item.value && typeof(item.value) == 'object' &&
Math.abs(item.value[0] - top) < 0.01 && Math.abs(item.value[1] - left) < 0.01 && Math.abs(item.value[0] - top) < 0.1 && Math.abs(item.value[1] - left) < 0.1 &&
Math.abs(item.value[2] - bottom) < 0.01 && Math.abs(item.value[3] - right) < 0.01) { Math.abs(item.value[2] - bottom) < 0.1 && Math.abs(item.value[3] - right) < 0.1) {
item.setChecked(true); item.setChecked(true);
return false; return false;
} }
@ -736,10 +746,12 @@ define([
need_disable = paragraph_locked || header_locked || in_header || in_image || in_equation && !btn_eq_state || in_footnote || in_control; need_disable = paragraph_locked || header_locked || in_header || in_image || in_equation && !btn_eq_state || in_footnote || in_control;
toolbar.btnsPageBreak.setDisabled(need_disable); toolbar.btnsPageBreak.setDisabled(need_disable);
need_disable = paragraph_locked || header_locked || !can_add_image || in_equation || control_plain; need_disable = paragraph_locked || header_locked || in_equation || control_plain;
toolbar.btnInsertImage.setDisabled(need_disable);
toolbar.btnInsertShape.setDisabled(need_disable); toolbar.btnInsertShape.setDisabled(need_disable);
toolbar.btnInsertText.setDisabled(need_disable); toolbar.btnInsertText.setDisabled(need_disable);
need_disable = paragraph_locked || header_locked || !can_add_image || in_equation || control_plain;
toolbar.btnInsertImage.setDisabled(need_disable);
toolbar.btnInsertTextArt.setDisabled(need_disable || in_image || in_footnote); toolbar.btnInsertTextArt.setDisabled(need_disable || in_image || in_footnote);
if (in_chart !== this._state.in_chart) { if (in_chart !== this._state.in_chart) {
@ -878,6 +890,19 @@ define([
this._onInitEditorStyles(styles); this._onInitEditorStyles(styles);
}, },
onChangeSdtGlobalSettings: function() {
var show = this.api.asc_GetGlobalContentControlShowHighlight();
this.toolbar.mnuNoControlsColor.setChecked(!show, true);
this.toolbar.mnuControlsColorPicker.clearSelection();
if (show){
var clr = this.api.asc_GetGlobalContentControlHighlightColor();
if (clr) {
clr = Common.Utils.ThemeColor.getHexColor(clr.get_r(), clr.get_g(), clr.get_b());
this.toolbar.mnuControlsColorPicker.selectByRGB(clr, true);
}
}
},
onNewDocument: function(btn, e) { onNewDocument: function(btn, e) {
if (this.api) if (this.api)
this.api.OpenNewDocument(); this.api.OpenNewDocument();
@ -1616,6 +1641,7 @@ define([
var me = this; var me = this;
(new DE.Views.ControlSettingsDialog({ (new DE.Views.ControlSettingsDialog({
props: props, props: props,
api: me.api,
handler: function(result, value) { handler: function(result, value) {
if (result == 'ok') { if (result == 'ok') {
me.api.asc_SetContentControlProperties(value, id); me.api.asc_SetContentControlProperties(value, id);
@ -1639,6 +1665,26 @@ define([
Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.NotificationCenter.trigger('edit:complete', this.toolbar);
}, },
onNewControlsColor: function(picker, color) {
this.toolbar.mnuControlsColorPicker.addNewColor();
},
onNoControlsColor: function(item) {
this.api.asc_SetGlobalContentControlShowHighlight(!item.isChecked());
if (!item.isChecked())
this.api.asc_SetGlobalContentControlHighlightColor(220, 220, 220);
},
onSelectControlsColor: function(picker, color) {
var clr = Common.Utils.ThemeColor.getRgbColor(color);
if (this.api) {
this.api.asc_SetGlobalContentControlShowHighlight(true);
this.api.asc_SetGlobalContentControlHighlightColor(clr.get_r(), clr.get_g(), clr.get_b());
}
Common.component.Analytics.trackEvent('ToolBar', 'Content Controls Color');
},
onColumnsSelect: function(menu, item) { onColumnsSelect: function(menu, item) {
if (_.isUndefined(item.value)) if (_.isUndefined(item.value))
return; return;
@ -2510,6 +2556,9 @@ define([
this.onParagraphColor(this._state.clrshd_asccolor); this.onParagraphColor(this._state.clrshd_asccolor);
} }
this._state.clrshd_asccolor = undefined; this._state.clrshd_asccolor = undefined;
updateColors(this.toolbar.mnuControlsColorPicker, 1);
this.onChangeSdtGlobalSettings();
}, },
_onInitEditorStyles: function(styles) { _onInitEditorStyles: function(styles) {
@ -2700,6 +2749,8 @@ define([
me.toolbar.render(_.extend({isCompactView: compactview}, config)); me.toolbar.render(_.extend({isCompactView: compactview}, config));
if ( config.isEdit ) { if ( config.isEdit ) {
me.toolbar.setMode(config);
var tab = {action: 'review', caption: me.toolbar.textTabCollaboration}; var tab = {action: 'review', caption: me.toolbar.textTabCollaboration};
var $panel = this.getApplication().getController('Common.Controllers.ReviewChanges').createToolbarPanel(); var $panel = this.getApplication().getController('Common.Controllers.ReviewChanges').createToolbarPanel();
@ -2718,7 +2769,7 @@ define([
me.toolbar.btnPaste.$el.detach().appendTo($box); me.toolbar.btnPaste.$el.detach().appendTo($box);
me.toolbar.btnCopy.$el.removeClass('split'); me.toolbar.btnCopy.$el.removeClass('split');
if ( config.isProtectSupport && config.isOffline && false ) { // don't add protect panel to toolbar if ( config.canProtect ) {
tab = {action: 'protect', caption: me.toolbar.textTabProtect}; tab = {action: 'protect', caption: me.toolbar.textTabProtect};
$panel = me.getApplication().getController('Common.Controllers.Protection').createToolbarPanel(); $panel = me.getApplication().getController('Common.Controllers.Protection').createToolbarPanel();
@ -2734,6 +2785,7 @@ define([
onAppReady: function (config) { onAppReady: function (config) {
var me = this; var me = this;
me.appOptions = config;
if ( config.canCoAuthoring && config.canComments ) { if ( config.canCoAuthoring && config.canComments ) {
this.btnsComment = createButtonSet(); this.btnsComment = createButtonSet();
@ -2784,7 +2836,13 @@ define([
}, },
onFileMenu: function (opts) { onFileMenu: function (opts) {
this.toolbar.setTab( opts == 'show' ? 'file' : undefined ); if ( opts == 'show' ) {
if ( !this.toolbar.isTabActive('file') )
this.toolbar.setTab('file');
} else {
if ( this.toolbar.isTabActive('file') )
this.toolbar.setTab();
}
}, },
textEmptyImgUrl : 'You need to specify image URL.', textEmptyImgUrl : 'You need to specify image URL.',

View file

@ -107,6 +107,8 @@ define([
setApi: function(api) { setApi: function(api) {
this.api = api; this.api = api;
this.api.asc_registerCallback('asc_onZoomChange', this.onApiZoomChange.bind(this)); this.api.asc_registerCallback('asc_onZoomChange', this.onApiZoomChange.bind(this));
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',this.onApiCoAuthoringDisconnect.bind(this));
Common.NotificationCenter.on('api:disconnect', this.onApiCoAuthoringDisconnect.bind(this));
}, },
@ -193,6 +195,14 @@ define([
checkable: true, checkable: true,
value: 'toolbar' value: 'toolbar'
}); });
if (!config.isEdit) {
me.header.mnuitemCompactToolbar.hide();
Common.NotificationCenter.on('tab:visible', _.bind(function(action, visible){
if (action=='plugins' && visible) {
me.header.mnuitemCompactToolbar.show();
}
}, this));
}
var mnuitemHideStatusBar = new Common.UI.MenuItem({ var mnuitemHideStatusBar = new Common.UI.MenuItem({
caption: me.header.textHideStatusBar, caption: me.header.textHideStatusBar,
@ -210,6 +220,8 @@ define([
checkable: true, checkable: true,
value: 'rulers' value: 'rulers'
}); });
if (!config.isEdit)
mnuitemHideRulers.hide();
me.header.mnuitemFitPage = new Common.UI.MenuItem({ me.header.mnuitemFitPage = new Common.UI.MenuItem({
caption: me.textFitPage, caption: me.textFitPage,
@ -329,6 +341,7 @@ define([
me.header.lockHeaderBtns( 'undo', _need_disable ); me.header.lockHeaderBtns( 'undo', _need_disable );
me.header.lockHeaderBtns( 'redo', _need_disable ); me.header.lockHeaderBtns( 'redo', _need_disable );
me.header.lockHeaderBtns( 'opts', _need_disable ); me.header.lockHeaderBtns( 'opts', _need_disable );
me.header.lockHeaderBtns( 'users', _need_disable );
}, },
onApiZoomChange: function(percent, type) { onApiZoomChange: function(percent, type) {
@ -364,6 +377,17 @@ define([
} }
}, },
onApiCoAuthoringDisconnect: function() {
if (this.header) {
if (this.header.btnDownload)
this.header.btnDownload.hide();
if (this.header.btnPrint)
this.header.btnPrint.hide();
if (this.header.btnEdit)
this.header.btnEdit.hide();
}
},
textFitPage: 'Fit to Page', textFitPage: 'Fit to Page',
textFitWidth: 'Fit to Width' textFitWidth: 'Fit to Width'
}, DE.Controllers.Viewport)); }, DE.Controllers.Viewport));

View file

@ -3,35 +3,35 @@
<table cols="2" style="width: 100%;" cellpadding="10"> <table cols="2" style="width: 100%;" cellpadding="10">
<tr> <tr>
<td class="padding-small"> <td class="padding-small">
<label class="input-label"><%= scope.textFrom %></label> <label class="input-label header"><%= scope.textFrom %></label>
<div id="merge-email-dlg-from"></div> <div id="merge-email-dlg-from" style="margin-right: 5px;"></div>
</td> </td>
<td class="padding-small"> <td class="padding-small">
<label class="input-label"><%= scope.textTo %></label> <label class="input-label header"><%= scope.textTo %></label>
<div id="merge-email-dlg-to"></div> <div id="merge-email-dlg-to"></div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="2" class="padding-small"> <td colspan="2" class="padding-small">
<label class="input-label"><%= scope.textSubject %></label> <label class="input-label header"><%= scope.textSubject %></label>
<div id="merge-email-dlg-subject" style="width: 100%;"></div> <div id="merge-email-dlg-subject" style="width: 100%;"></div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="2" class="padding-small"> <td colspan="2" class="padding-small">
<label class="input-label"><%= scope.textFormat %></label> <label class="input-label header"><%= scope.textFormat %></label>
<div id="merge-email-dlg-format" style="width: 170px;"></div> <div id="merge-email-dlg-format" style="width: 170px;"></div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="2" class="padding-small"> <td colspan="2" class="padding-small">
<label id="merge-email-dlg-lbl-filename" class="input-label disabled"><%= scope.textFileName %></label> <label id="merge-email-dlg-lbl-filename" class="input-label disabled header"><%= scope.textFileName %></label>
<div id="merge-email-dlg-filename" style="width: 100%;"></div> <div id="merge-email-dlg-filename" style="width: 100%;"></div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="2" class="padding-small"> <td colspan="2" class="padding-small">
<label id="merge-email-dlg-lbl-message" class="input-label disabled"><%= scope.textMessage %></label> <label id="merge-email-dlg-lbl-message" class="input-label disabled header"><%= scope.textMessage %></label>
<textarea id="merge-email-dlg-message" class="disabled form-control" disabled="disabled" style="width: 100%;height: 70px;margin-bottom: 0;"></textarea> <textarea id="merge-email-dlg-message" class="disabled form-control" disabled="disabled" style="width: 100%;height: 70px;margin-bottom: 0;"></textarea>
</td> </td>
</tr> </tr>

View file

@ -1,23 +1,8 @@
<div class="toolbar"> <div class="toolbar">
<div class="box-tabs"> <div class="box-tabs">
<div class="extra left"></div> <div class="extra left"></div>
<section class="tabs"> <%= tabsmarkup %>
<a class="scroll left"> <div class="extra right"></div>
<i class="icon">&lt;</i>
</a>
<ul>
<% for(var i in tabs) { %>
<li class="ribtab<% if (tabs[i].extcls) print(' ' + tabs[i].extcls) %>">
<a data-tab="<%= tabs[i].action %>" data-title="<%= tabs[i].caption %>"><%= tabs[i].caption %></a>
</li>
<% } %>
</ul>
<a class="scroll right">
<i class="icon">&gt;</i>
</a>
</section>
<div class="extra right">
</div>
</div> </div>
<section class="box-controls"> <section class="box-controls">
<section class="panel static"> <section class="panel static">
@ -161,7 +146,7 @@
<div class="separator long"></div> <div class="separator long"></div>
<div class="group"> <div class="group">
<span class="btn-slot text x-huge slot-inshyperlink"></span> <span class="btn-slot text x-huge slot-inshyperlink"></span>
<!--<span class="btn-slot text x-huge" id="slot-btn-bookmarks"></span>--> <span class="btn-slot text x-huge" id="slot-btn-bookmarks"></span>
</div> </div>
</section> </section>
</section> </section>

View file

@ -0,0 +1,12 @@
<div class="toolbar">
<div class="box-tabs">
<div class="extra left"></div>
<%= tabsmarkup %>
<div class="extra right">
</div>
</div>
<section class="box-controls">
<section class="box-panels">
</section>
</section>
</div>

View file

@ -123,17 +123,29 @@ define([
el : $('#bookmarks-txt-name'), el : $('#bookmarks-txt-name'),
allowBlank : true, allowBlank : true,
validateOnChange: true, validateOnChange: true,
validateOnBlur: false, validateOnBlur: true,
style : 'width: 195px;', style : 'width: 195px;',
value : '', value : '',
maxLength: 40 maxLength: 40,
}).on('changing', _.bind(this.onNameChanging, this)); validation : function(value) {
var exist = me.props.asc_HaveBookmark(value),
check = me.props.asc_CheckNewBookmarkName(value);
if (exist)
me.bookmarksList.selectRecord(me.bookmarksList.store.findWhere({value: value}));
else
me.bookmarksList.deselectAll();
me.btnAdd.setDisabled(!check && !exist);
me.btnGoto.setDisabled(!exist);
me.btnDelete.setDisabled(!exist);
return (check || _.isEmpty(value)) ? true : me.txtInvalidName;
}
});
this.radioName = new Common.UI.RadioBox({ this.radioName = new Common.UI.RadioBox({
el: $('#bookmarks-radio-name'), el: $('#bookmarks-radio-name'),
labelText: this.textName, labelText: this.textName,
name: 'asc-radio-bookmark-sort', name: 'asc-radio-bookmark-sort'
checked: true
}); });
this.radioName.on('change', _.bind(this.onRadioSort, this)); this.radioName.on('change', _.bind(this.onRadioSort, this));
@ -143,6 +155,7 @@ define([
name: 'asc-radio-bookmark-sort' name: 'asc-radio-bookmark-sort'
}); });
this.radioLocation.on('change', _.bind(this.onRadioSort, this)); this.radioLocation.on('change', _.bind(this.onRadioSort, this));
Common.Utils.InternalSettings.get("de-bookmarks-sort-location") ? this.radioLocation.setValue(true, true) : this.radioName.setValue(true, true);
this.bookmarksList = new Common.UI.ListView({ this.bookmarksList = new Common.UI.ListView({
el: $('#bookmarks-list', this.$window), el: $('#bookmarks-list', this.$window),
@ -190,11 +203,18 @@ define([
show: function() { show: function() {
Common.Views.AdvancedSettingsWindow.prototype.show.apply(this, arguments); Common.Views.AdvancedSettingsWindow.prototype.show.apply(this, arguments);
var me = this;
_.delay(function(){
var input = $('input', me.txtName.cmpEl).select();
input.focus();
},100);
}, },
close: function() { close: function() {
Common.Views.AdvancedSettingsWindow.prototype.close.apply(this, arguments); Common.Views.AdvancedSettingsWindow.prototype.close.apply(this, arguments);
Common.Utils.InternalSettings.set("de-bookmarks-hidden", this.chHidden.getValue()=='checked'); Common.Utils.InternalSettings.set("de-bookmarks-hidden", this.chHidden.getValue()=='checked');
Common.Utils.InternalSettings.set("de-bookmarks-sort-location", this.radioLocation.getValue())
}, },
_setDefaults: function (props) { _setDefaults: function (props) {
@ -266,6 +286,10 @@ define([
var store = this.bookmarksList.store; var store = this.bookmarksList.store;
var idx = _.indexOf(store.models, rec[0]); var idx = _.indexOf(store.models, rec[0]);
store.remove(rec[0]); store.remove(rec[0]);
this.txtName.setValue('');
this.btnAdd.setDisabled(true);
this.btnGoto.setDisabled(true);
this.btnDelete.setDisabled(true);
} }
}, },
@ -280,14 +304,6 @@ define([
this.refreshBookmarks(); this.refreshBookmarks();
}, },
onNameChanging: function (input, value) {
var exist = this.props.asc_HaveBookmark(value);
this.bookmarksList.deselectAll();
this.btnAdd.setDisabled(!this.props.asc_CheckNewBookmarkName(value) && !exist);
this.btnGoto.setDisabled(!exist);
this.btnDelete.setDisabled(!exist);
},
textTitle: 'Bookmarks', textTitle: 'Bookmarks',
textLocation: 'Location', textLocation: 'Location',
textBookmarkName: 'Bookmark name', textBookmarkName: 'Bookmark name',
@ -297,7 +313,8 @@ define([
textGoto: 'Go to', textGoto: 'Go to',
textDelete: 'Delete', textDelete: 'Delete',
textClose: 'Close', textClose: 'Close',
textHidden: 'Hidden bookmarks' textHidden: 'Hidden bookmarks',
txtInvalidName: 'Bookmark name can only contain letters, digits and underscores, and should begin with the letter'
}, DE.Views.BookmarksDialog || {})) }, DE.Views.BookmarksDialog || {}))
}); });

View file

@ -501,7 +501,11 @@ define([
stylesStore.reset(stylearray, {silent: false}); stylesStore.reset(stylearray, {silent: false});
} }
} }
} else {
this.cmbChartStyle.menuPicker.store.reset();
this.cmbChartStyle.clearComboView();
} }
this.cmbChartStyle.setDisabled(!styles || styles.length<1 || this._locked);
}, },
setLocked: function (locked) { setLocked: function (locked) {

View file

@ -48,8 +48,8 @@ define([
DE.Views.ControlSettingsDialog = Common.Views.AdvancedSettingsWindow.extend(_.extend({ DE.Views.ControlSettingsDialog = Common.Views.AdvancedSettingsWindow.extend(_.extend({
options: { options: {
contentWidth: 300, contentWidth: 310,
height: 275 height: 412
}, },
initialize : function(options) { initialize : function(options) {
@ -63,7 +63,7 @@ define([
'<div class="settings-panel active">', '<div class="settings-panel active">',
'<table cols="1" style="width: 100%;">', '<table cols="1" style="width: 100%;">',
'<tr>', '<tr>',
'<td class="padding-large">', '<td class="padding-small">',
'<label class="input-label">', me.textName, '</label>', '<label class="input-label">', me.textName, '</label>',
'<div id="control-settings-txt-name"></div>', '<div id="control-settings-txt-name"></div>',
'</td>', '</td>',
@ -74,6 +74,46 @@ define([
'<div id="control-settings-txt-tag"></div>', '<div id="control-settings-txt-tag"></div>',
'</td>', '</td>',
'</tr>', '</tr>',
'<tr>',
'<td class="padding-large">',
'<div class="separator horizontal"></div>',
'</td>',
'</tr>',
'</table>',
'<table cols="2" style="width: auto;">',
'<tr>',
'<td class="padding-small" colspan="2">',
'<label class="header">', me.textAppearance, '</label>',
'</td>',
'</tr>',
'<tr>',
'<td class="padding-small">',
'<label class="input-label" style="margin-right: 10px;">', me.textShowAs,'</label>',
'</td>',
'<td class="padding-small">',
'<div id="control-settings-combo-show" class="input-group-nr" style="display: inline-block; width:120px;"></div>',
'</td>',
'</tr>',
'<tr>',
'<td class="padding-small">',
'<label class="input-label" style="margin-right: 10px;">', me.textColor, '</label>',
'</td>',
'<td class="padding-small">',
'<div id="control-settings-color-btn" style="display: inline-block;"></div>',
'</td>',
'</tr>',
'<tr>',
'<td class="padding-large" colspan="2">',
'<button type="button" class="btn btn-text-default auto" id="control-settings-btn-all" style="min-width: 98px;">', me.textApplyAll,'</button>',
'</td>',
'</tr>',
'</table>',
'<table cols="1" style="width: 100%;">',
'<tr>',
'<td class="padding-large">',
'<div class="separator horizontal"></div>',
'</td>',
'</tr>',
'<tr>', '<tr>',
'<td class="padding-small">', '<td class="padding-small">',
'<label class="header">', me.textLock, '</label>', '<label class="header">', me.textLock, '</label>',
@ -102,6 +142,7 @@ define([
this.handler = options.handler; this.handler = options.handler;
this.props = options.props; this.props = options.props;
this.api = options.api;
Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options); Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options);
}, },
@ -116,6 +157,7 @@ define([
validateOnChange: false, validateOnChange: false,
validateOnBlur: false, validateOnBlur: false,
style : 'width: 100%;', style : 'width: 100%;',
maxLength: 64,
value : '' value : ''
}); });
@ -125,9 +167,47 @@ define([
validateOnChange: false, validateOnChange: false,
validateOnBlur: false, validateOnBlur: false,
style : 'width: 100%;', style : 'width: 100%;',
maxLength: 64,
value : '' value : ''
}); });
this.cmbShow = new Common.UI.ComboBox({
el: $('#control-settings-combo-show'),
cls: 'input-group-nr',
menuStyle: 'min-width: 120px;',
editable: false,
data: [
{ displayValue: this.textBox, value: Asc.c_oAscSdtAppearance.Frame },
{ displayValue: this.textNone, value: Asc.c_oAscSdtAppearance.Hidden }
]
});
this.cmbShow.setValue(Asc.c_oAscSdtAppearance.Frame);
this.btnColor = new Common.UI.ColorButton({
style: "width:45px;",
menu : new Common.UI.Menu({
items: [
{ template: _.template('<div id="control-settings-color-menu" style="width: 169px; height: 220px; margin: 10px;"></div>') },
{ template: _.template('<a id="control-settings-color-new" style="padding-left:12px;">' + me.textNewColor + '</a>') }
]
})
});
this.btnColor.on('render:after', function(btn) {
me.colors = new Common.UI.ThemeColorPalette({
el: $('#control-settings-color-menu')
});
me.colors.on('select', _.bind(me.onColorsSelect, me));
});
this.btnColor.render( $('#control-settings-color-btn'));
this.btnColor.setColor('000000');
this.btnColor.menu.items[1].on('click', _.bind(this.addNewColor, this, this.colors, this.btnColor));
this.btnApplyAll = new Common.UI.Button({
el: $('#control-settings-btn-all')
});
this.btnApplyAll.on('click', _.bind(this.applyAllClick, this));
this.chLockDelete = new Common.UI.CheckBox({ this.chLockDelete = new Common.UI.CheckBox({
el: $('#control-settings-chb-lock-delete'), el: $('#control-settings-chb-lock-delete'),
labelText: this.txtLockDelete labelText: this.txtLockDelete
@ -141,7 +221,20 @@ define([
this.afterRender(); this.afterRender();
}, },
onColorsSelect: function(picker, color) {
this.btnColor.setColor(color);
},
updateThemeColors: function() {
this.colors.updateColors(Common.Utils.ThemeColor.getEffectColors(), Common.Utils.ThemeColor.getStandartColors());
},
addNewColor: function(picker, btn) {
picker.addNewColor((typeof(btn.color) == 'object') ? btn.color.color : btn.color);
},
afterRender: function() { afterRender: function() {
this.updateThemeColors();
this._setDefaults(this.props); this._setDefaults(this.props);
}, },
@ -157,6 +250,14 @@ define([
val = props.get_Tag(); val = props.get_Tag();
this.txtTag.setValue(val ? val : ''); this.txtTag.setValue(val ? val : '');
val = props.get_Appearance();
(val!==null && val!==undefined) && this.cmbShow.setValue(val);
val = props.get_Color();
val = (val) ? Common.Utils.ThemeColor.getHexColor(val.get_r(), val.get_g(), val.get_b()) : '#000000';
this.btnColor.setColor(val);
this.colors.selectByRGB(val,true);
val = props.get_Lock(); val = props.get_Lock();
(val===undefined) && (val = Asc.c_oAscSdtLockType.Unlocked); (val===undefined) && (val = Asc.c_oAscSdtLockType.Unlocked);
this.chLockDelete.setValue(val==Asc.c_oAscSdtLockType.SdtContentLocked || val==Asc.c_oAscSdtLockType.SdtLocked); this.chLockDelete.setValue(val==Asc.c_oAscSdtLockType.SdtContentLocked || val==Asc.c_oAscSdtLockType.SdtLocked);
@ -166,11 +267,12 @@ define([
getSettings: function () { getSettings: function () {
var props = new AscCommon.CContentControlPr(); var props = new AscCommon.CContentControlPr();
props.put_Alias(this.txtName.getValue()); props.put_Alias(this.txtName.getValue());
props.put_Tag(this.txtTag.getValue()); props.put_Tag(this.txtTag.getValue());
props.put_Appearance(this.cmbShow.getValue());
var color = Common.Utils.ThemeColor.getRgbColor(this.colors.getColor());
props.put_Color(color.get_r(), color.get_g(), color.get_b());
var lock = Asc.c_oAscSdtLockType.Unlocked; var lock = Asc.c_oAscSdtLockType.Unlocked;
@ -199,6 +301,16 @@ define([
return true; return true;
}, },
applyAllClick: function(btn, eOpts){
if (this.api) {
var props = new AscCommon.CContentControlPr();
props.put_Appearance(this.cmbShow.getValue());
var color = Common.Utils.ThemeColor.getRgbColor(this.colors.getColor());
props.put_Color(color.get_r(), color.get_g(), color.get_b());
this.api.asc_SetContentControlProperties(props, null, true);
}
},
textTitle: 'Content Control Settings', textTitle: 'Content Control Settings',
textName: 'Title', textName: 'Title',
textTag: 'Tag', textTag: 'Tag',
@ -206,7 +318,14 @@ define([
txtLockEdit: 'Contents cannot be edited', txtLockEdit: 'Contents cannot be edited',
textLock: 'Locking', textLock: 'Locking',
cancelButtonText: 'Cancel', cancelButtonText: 'Cancel',
okButtonText: 'Ok' okButtonText: 'Ok',
textShowAs: 'Show as',
textColor: 'Color',
textBox: 'Bounding box',
textNone: 'None',
textNewColor: 'Add New Custom Color',
textApplyAll: 'Apply to All',
textAppearance: 'Appearance'
}, DE.Views.ControlSettingsDialog || {})) }, DE.Views.ControlSettingsDialog || {}))
}); });

View file

@ -53,7 +53,8 @@ define([
'documenteditor/main/app/view/HyperlinkSettingsDialog', 'documenteditor/main/app/view/HyperlinkSettingsDialog',
'documenteditor/main/app/view/ParagraphSettingsAdvanced', 'documenteditor/main/app/view/ParagraphSettingsAdvanced',
'documenteditor/main/app/view/TableSettingsAdvanced', 'documenteditor/main/app/view/TableSettingsAdvanced',
'documenteditor/main/app/view/ControlSettingsDialog' 'documenteditor/main/app/view/ControlSettingsDialog',
'documenteditor/main/app/view/NumberingValueDialog'
], function ($, _, Backbone, gateway) { 'use strict'; ], function ($, _, Backbone, gateway) { 'use strict';
DE.Views.DocumentHolder = Backbone.View.extend(_.extend({ DE.Views.DocumentHolder = Backbone.View.extend(_.extend({
@ -1876,6 +1877,7 @@ define([
if (item.value == 'settings') { if (item.value == 'settings') {
(new DE.Views.ControlSettingsDialog({ (new DE.Views.ControlSettingsDialog({
props: props, props: props,
api: me.api,
handler: function (result, value) { handler: function (result, value) {
if (result == 'ok') { if (result == 'ok') {
me.api.asc_SetContentControlProperties(value, props.get_InternalId()); me.api.asc_SetContentControlProperties(value, props.get_InternalId());
@ -1891,6 +1893,29 @@ define([
me.fireEvent('editcomplete', me); me.fireEvent('editcomplete', me);
}, },
onContinueNumbering: function(item, e) {
this.api.asc_ContinueNumbering();
this.fireEvent('editcomplete', this);
},
onStartNumbering: function(startfrom, item, e) {
if (startfrom == 1)
this.api.asc_RestartNumbering(item.value.start);
else {
var me = this;
(new DE.Views.NumberingValueDialog({
title: me.textNumberingValue,
props: item.value,
handler: function (result, value) {
if (result == 'ok')
me.api.asc_RestartNumbering(value);
me.fireEvent('editcomplete', me);
}
})).show();
}
this.fireEvent('editcomplete', this);
},
createDelayedElementsViewer: function() { createDelayedElementsViewer: function() {
var me = this; var me = this;
@ -1922,7 +1947,7 @@ define([
this.viewModeMenu = new Common.UI.Menu({ this.viewModeMenu = new Common.UI.Menu({
initMenu: function (value) { initMenu: function (value) {
var isInChart = (value.imgProps && value.imgProps.value && !_.isNull(value.imgProps.value.get_ChartProperties())), var isInChart = (value.imgProps && value.imgProps.value && !_.isNull(value.imgProps.value.get_ChartProperties())),
signGuid = (value.imgProps && value.imgProps.value && me.mode.canProtect) ? value.imgProps.value.asc_getSignatureId() : undefined, signGuid = (value.imgProps && value.imgProps.value && me.mode.isSignatureSupport) ? value.imgProps.value.asc_getSignatureId() : undefined,
signProps = (signGuid) ? me.api.asc_getSignatureSetup(signGuid) : null, signProps = (signGuid) ? me.api.asc_getSignatureSetup(signGuid) : null,
isInSign = !!signProps && me._canProtect, isInSign = !!signProps && me._canProtect,
canComment = !isInChart && me.api.can_AddQuotedComment() !== false && me.mode.canCoAuthoring && me.mode.canComments && !me._isDisabled; canComment = !isInChart && me.api.can_AddQuotedComment() !== false && me.mode.canCoAuthoring && me.mode.canComments && !me._isDisabled;
@ -2408,7 +2433,7 @@ define([
menuImgCut.setDisabled(islocked || !cancopy); menuImgCut.setDisabled(islocked || !cancopy);
menuImgPaste.setDisabled(islocked); menuImgPaste.setDisabled(islocked);
var signGuid = (value.imgProps && value.imgProps.value && me.mode.canProtect) ? value.imgProps.value.asc_getSignatureId() : undefined, var signGuid = (value.imgProps && value.imgProps.value && me.mode.isSignatureSupport) ? value.imgProps.value.asc_getSignatureId() : undefined,
isInSign = !!signGuid; isInSign = !!signGuid;
menuSignatureEditSign.setVisible(isInSign); menuSignatureEditSign.setVisible(isInSign);
menuSignatureEditSetup.setVisible(isInSign); menuSignatureEditSetup.setVisible(isInSign);
@ -2757,6 +2782,30 @@ define([
}) })
}); });
var menuTableStartNewList = new Common.UI.MenuItem({
caption: me.textStartNewList
}).on('click', _.bind(me.onStartNumbering, me, 1));
var menuTableStartNumberingFrom = new Common.UI.MenuItem({
caption: me.textStartNumberingFrom
}).on('click', _.bind(me.onStartNumbering, me, 'advanced'));
var menuTableContinueNumbering = new Common.UI.MenuItem({
caption: me.textContinueNumbering
}).on('click', _.bind(me.onContinueNumbering, me));
var menuNumberingTable = new Common.UI.MenuItem({
caption : me.bulletsText,
menu : new Common.UI.Menu({
menuAlign: 'tl-tr',
items : [
menuTableStartNewList,
menuTableStartNumberingFrom,
menuTableContinueNumbering
]
})
});
this.tableMenu = new Common.UI.Menu({ this.tableMenu = new Common.UI.Menu({
initMenu: function(value){ initMenu: function(value){
// table properties // table properties
@ -2800,6 +2849,22 @@ define([
menuTableCut.setDisabled(disabled || !cancopy); menuTableCut.setDisabled(disabled || !cancopy);
menuTablePaste.setDisabled(disabled); menuTablePaste.setDisabled(disabled);
// bullets & numbering
var listId = me.api.asc_GetCurrentNumberingId(),
in_list = (listId !== null);
menuNumberingTable.setVisible(in_list);
if (in_list) {
var numLvl = me.api.asc_GetNumberingPr(listId).get_Lvl(me.api.asc_GetCurrentNumberingLvl()),
format = numLvl.get_Format(),
start = me.api.asc_GetCalculatedNumberingValue();
menuTableStartNewList.setVisible(numLvl.get_Start()!=start);
menuTableStartNewList.value = {start: numLvl.get_Start()};
menuTableStartNumberingFrom.setVisible(format != Asc.c_oAscNumberingFormat.Bullet);
menuTableStartNumberingFrom.value = {format: format, start: start};
menuTableStartNewList.setCaption((format == Asc.c_oAscNumberingFormat.Bullet) ? me.textSeparateList : me.textStartNewList);
menuTableContinueNumbering.setCaption((format == Asc.c_oAscNumberingFormat.Bullet) ? me.textJoinList : me.textContinueNumbering);
}
// hyperlink properties // hyperlink properties
var text = null; var text = null;
if (me.api) { if (me.api) {
@ -2807,7 +2872,7 @@ define([
} }
menuAddHyperlinkTable.setVisible(value.hyperProps===undefined && text!==false); menuAddHyperlinkTable.setVisible(value.hyperProps===undefined && text!==false);
menuHyperlinkTable.setVisible(value.hyperProps!==undefined); menuHyperlinkTable.setVisible(value.hyperProps!==undefined);
menuHyperlinkSeparator.setVisible(menuAddHyperlinkTable.isVisible() || menuHyperlinkTable.isVisible()); menuHyperlinkSeparator.setVisible(menuAddHyperlinkTable.isVisible() || menuHyperlinkTable.isVisible() || menuNumberingTable.isVisible());
menuEditHyperlinkTable.hyperProps = value.hyperProps; menuEditHyperlinkTable.hyperProps = value.hyperProps;
menuRemoveHyperlinkTable.hyperProps = value.hyperProps; menuRemoveHyperlinkTable.hyperProps = value.hyperProps;
@ -2982,6 +3047,7 @@ define([
/** coauthoring begin **/ /** coauthoring begin **/
menuAddCommentTable, menuAddCommentTable,
/** coauthoring end **/ /** coauthoring end **/
menuNumberingTable,
menuAddHyperlinkTable, menuAddHyperlinkTable,
menuHyperlinkTable, menuHyperlinkTable,
menuHyperlinkSeparator, menuHyperlinkSeparator,
@ -3299,6 +3365,22 @@ define([
caption : '--' caption : '--'
}); });
var menuParaStartNewList = new Common.UI.MenuItem({
caption: me.textStartNewList
}).on('click', _.bind(me.onStartNumbering, me, 1));
var menuParaStartNumberingFrom = new Common.UI.MenuItem({
caption: me.textStartNumberingFrom
}).on('click', _.bind(me.onStartNumbering, me, 'advanced'));
var menuParaContinueNumbering = new Common.UI.MenuItem({
caption: me.textContinueNumbering
}).on('click', _.bind(me.onContinueNumbering, me));
var menuParaNumberingSeparator = new Common.UI.MenuItem({
caption : '--'
});
this.textMenu = new Common.UI.Menu({ this.textMenu = new Common.UI.Menu({
initMenu: function(value){ initMenu: function(value){
var isInShape = (value.imgProps && value.imgProps.value && !_.isNull(value.imgProps.value.get_ShapeProperties())); var isInShape = (value.imgProps && value.imgProps.value && !_.isNull(value.imgProps.value.get_ShapeProperties()));
@ -3421,6 +3503,24 @@ define([
if (in_field) { if (in_field) {
menuParaRefreshField.options.fieldProps = in_field; menuParaRefreshField.options.fieldProps = in_field;
} }
var listId = me.api.asc_GetCurrentNumberingId(),
in_list = (listId !== null);
menuParaNumberingSeparator.setVisible(in_list); // hide when first item is selected
menuParaStartNewList.setVisible(in_list);
menuParaStartNumberingFrom.setVisible(in_list);
menuParaContinueNumbering.setVisible(in_list);
if (in_list) {
var numLvl = me.api.asc_GetNumberingPr(listId).get_Lvl(me.api.asc_GetCurrentNumberingLvl()),
format = numLvl.get_Format(),
start = me.api.asc_GetCalculatedNumberingValue();
menuParaStartNewList.setVisible(numLvl.get_Start()!=start);
menuParaStartNewList.value = {start: numLvl.get_Start()};
menuParaStartNumberingFrom.setVisible(format != Asc.c_oAscNumberingFormat.Bullet);
menuParaStartNumberingFrom.value = {format: format, start: start};
menuParaStartNewList.setCaption((format == Asc.c_oAscNumberingFormat.Bullet) ? me.textSeparateList : me.textStartNewList);
menuParaContinueNumbering.setCaption((format == Asc.c_oAscNumberingFormat.Bullet) ? me.textJoinList : me.textContinueNumbering);
}
}, },
items: [ items: [
me.menuSpellPara, me.menuSpellPara,
@ -3456,6 +3556,10 @@ define([
menuHyperlinkParaSeparator, menuHyperlinkParaSeparator,
menuAddHyperlinkPara, menuAddHyperlinkPara,
menuHyperlinkPara, menuHyperlinkPara,
menuParaNumberingSeparator,
menuParaStartNewList,
menuParaStartNumberingFrom,
menuParaContinueNumbering,
menuStyleSeparator, menuStyleSeparator,
menuStyle menuStyle
] ]
@ -3776,7 +3880,14 @@ define([
txtPasteSourceFormat: 'Keep source formatting', txtPasteSourceFormat: 'Keep source formatting',
textReplace: 'Replace image', textReplace: 'Replace image',
textFromUrl: 'From URL', textFromUrl: 'From URL',
textFromFile: 'From File' textFromFile: 'From File',
textStartNumberingFrom: 'Set numbering value',
textStartNewList: 'Start new list',
textContinueNumbering: 'Continue numbering',
textSeparateList: 'Separate list',
textJoinList: 'Join to previous list',
textNumberingValue: 'Numbering Value',
bulletsText: 'Bullets and Numbering'
}, DE.Views.DocumentHolder || {})); }, DE.Views.DocumentHolder || {}));
}); });

View file

@ -161,6 +161,13 @@ define([
canFocused: false canFocused: false
}); });
this.miHelp = new Common.UI.MenuItem({
el : $('#fm-btn-help',this.el),
action : 'help',
caption : this.btnHelpCaption,
canFocused: false
});
this.items = []; this.items = [];
this.items.push( this.items.push(
new Common.UI.MenuItem({ new Common.UI.MenuItem({
@ -192,12 +199,7 @@ define([
caption : this.btnSettingsCaption, caption : this.btnSettingsCaption,
canFocused: false canFocused: false
}), }),
new Common.UI.MenuItem({ this.miHelp,
el : $('#fm-btn-help',this.el),
action : 'help',
caption : this.btnHelpCaption,
canFocused: false
}),
new Common.UI.MenuItem({ new Common.UI.MenuItem({
el : $('#fm-btn-back',this.el), el : $('#fm-btn-back',this.el),
action : 'exit', action : 'exit',
@ -211,8 +213,7 @@ define([
// 'saveas' : (new DE.Views.FileMenuPanels.ViewSaveAs({menu:me})).render(), // 'saveas' : (new DE.Views.FileMenuPanels.ViewSaveAs({menu:me})).render(),
'opts' : (new DE.Views.FileMenuPanels.Settings({menu:me})).render(), 'opts' : (new DE.Views.FileMenuPanels.Settings({menu:me})).render(),
'info' : (new DE.Views.FileMenuPanels.DocumentInfo({menu:me})).render(), 'info' : (new DE.Views.FileMenuPanels.DocumentInfo({menu:me})).render(),
'rights' : (new DE.Views.FileMenuPanels.DocumentRights({menu:me})).render(), 'rights' : (new DE.Views.FileMenuPanels.DocumentRights({menu:me})).render()
'help' : (new DE.Views.FileMenuPanels.Help({menu:me})).render()
}; };
me.$el.find('.content-box').hide(); me.$el.find('.content-box').hide();
@ -243,7 +244,7 @@ define([
applyMode: function() { applyMode: function() {
this.miPrint[this.mode.canPrint?'show':'hide'](); this.miPrint[this.mode.canPrint?'show':'hide']();
this.miRename[(this.mode.canRename && !this.mode.isDesktopApp) ?'show':'hide'](); this.miRename[(this.mode.canRename && !this.mode.isDesktopApp) ?'show':'hide']();
this.miProtect[(this.mode.isProtectSupport && this.mode.isEdit && this.mode.isDesktopApp && this.mode.isOffline) ?'show':'hide'](); this.miProtect[this.mode.canProtect ?'show':'hide']();
this.miProtect.$el.find('+.devider')[!this.mode.isDisconnected?'show':'hide'](); this.miProtect.$el.find('+.devider')[!this.mode.isDisconnected?'show':'hide']();
this.miRecent[this.mode.canOpenRecent?'show':'hide'](); this.miRecent[this.mode.canOpenRecent?'show':'hide']();
this.miNew[this.mode.canCreateNew?'show':'hide'](); this.miNew[this.mode.canCreateNew?'show':'hide']();
@ -260,6 +261,9 @@ define([
(this.document.info.sharingSettings&&this.document.info.sharingSettings.length>0 || (this.document.info.sharingSettings&&this.document.info.sharingSettings.length>0 ||
this.mode.sharingSettingsUrl&&this.mode.sharingSettingsUrl.length))?'show':'hide'](); this.mode.sharingSettingsUrl&&this.mode.sharingSettingsUrl.length))?'show':'hide']();
this.miHelp[this.mode.canHelp ?'show':'hide']();
this.miHelp.$el.prev()[this.mode.canHelp ?'show':'hide']();
this.mode.canBack ? this.$el.find('#fm-btn-back').show().prev().show() : this.mode.canBack ? this.$el.find('#fm-btn-back').show().prev().show() :
this.$el.find('#fm-btn-back').hide().prev().hide(); this.$el.find('#fm-btn-back').hide().prev().hide();
@ -280,7 +284,7 @@ define([
} }
} }
if (this.mode.isProtectSupport && this.mode.isEdit && this.mode.isDesktopApp && this.mode.isOffline) { if (this.mode.canProtect) {
// this.$el.find('#fm-btn-back').hide(); // this.$el.find('#fm-btn-back').hide();
this.panels['protect'] = (new DE.Views.FileMenuPanels.ProtectDoc({menu:this})).render(); this.panels['protect'] = (new DE.Views.FileMenuPanels.ProtectDoc({menu:this})).render();
this.panels['protect'].setMode(this.mode); this.panels['protect'].setMode(this.mode);
@ -291,7 +295,10 @@ define([
} else if (this.mode.canDownloadOrigin) } else if (this.mode.canDownloadOrigin)
$('a',this.miDownload.$el).text(this.textDownload); $('a',this.miDownload.$el).text(this.textDownload);
this.panels['help'].setLangConfig(this.mode.lang); if (this.mode.canHelp) {
this.panels['help'] = ((new DE.Views.FileMenuPanels.Help({menu: this})).render());
this.panels['help'].setLangConfig(this.mode.lang);
}
this.miHistory[this.mode.canUseHistory&&!this.mode.isDisconnected?'show':'hide'](); this.miHistory[this.mode.canUseHistory&&!this.mode.isDisconnected?'show':'hide']();
}, },
@ -325,7 +332,7 @@ define([
if ( menu ) { if ( menu ) {
var item = this._getMenuItem(menu), var item = this._getMenuItem(menu),
panel = this.panels[menu]; panel = this.panels[menu];
if ( item.isDisabled() ) { if ( item.isDisabled() || !item.isVisible()) {
item = this._getMenuItem(defMenu); item = this._getMenuItem(defMenu);
panel = this.panels[defMenu]; panel = this.panels[defMenu];
} }

View file

@ -54,6 +54,7 @@ define([
formats: [[ formats: [[
{name: 'DOCX', imgCls: 'docx', type: Asc.c_oAscFileType.DOCX}, {name: 'DOCX', imgCls: 'docx', type: Asc.c_oAscFileType.DOCX},
{name: 'PDF', imgCls: 'pdf', type: Asc.c_oAscFileType.PDF}, {name: 'PDF', imgCls: 'pdf', type: Asc.c_oAscFileType.PDF},
// {name: 'PDFA', imgCls: 'pdfa', type: Asc.c_oAscFileType.PDFA},
{name: 'TXT', imgCls: 'txt', type: Asc.c_oAscFileType.TXT} {name: 'TXT', imgCls: 'txt', type: Asc.c_oAscFileType.TXT}
],[ ],[
// {name: 'DOC', imgCls: 'doc-format btn-doc', type: Asc.c_oAscFileType.DOC}, // {name: 'DOC', imgCls: 'doc-format btn-doc', type: Asc.c_oAscFileType.DOC},
@ -69,7 +70,9 @@ define([
'<% _.each(rows, function(row) { %>', '<% _.each(rows, function(row) { %>',
'<tr>', '<tr>',
'<% _.each(row, function(item) { %>', '<% _.each(row, function(item) { %>',
'<td><span class="btn-doc-format img-doc-format <%= item.imgCls %>" format="<%= item.type %>"/></td>', '<td><div><svg class="btn-doc-format" format="<%= item.type %>">',
'<use xlink:href="#svg-format-<%= item.imgCls %>"></use>',
'</svg></div></td>',
'<% }) %>', '<% }) %>',
'</tr>', '</tr>',
'<% }) %>', '<% }) %>',
@ -337,7 +340,7 @@ define([
/** coauthoring begin **/ /** coauthoring begin **/
$('tr.coauth', this.el)[mode.isEdit && mode.canCoAuthoring ? 'show' : 'hide'](); $('tr.coauth', this.el)[mode.isEdit && mode.canCoAuthoring ? 'show' : 'hide']();
$('tr.coauth.changes', this.el)[mode.isEdit && !mode.isOffline && mode.canCoAuthoring ? 'show' : 'hide'](); $('tr.coauth.changes', this.el)[mode.isEdit && !mode.isOffline && mode.canCoAuthoring ? 'show' : 'hide']();
$('tr.comments', this.el)[mode.canCoAuthoring && mode.canComments ? 'show' : 'hide'](); $('tr.comments', this.el)[mode.canCoAuthoring && (mode.isEdit || mode.canComments) ? 'show' : 'hide']();
/** coauthoring end **/ /** coauthoring end **/
}, },
@ -530,7 +533,11 @@ define([
template: _.template([ template: _.template([
'<h3 style="margin-top: 20px;"><%= scope.fromBlankText %></h3><hr noshade />', '<h3 style="margin-top: 20px;"><%= scope.fromBlankText %></h3><hr noshade />',
'<div class="blank-document">', '<div class="blank-document">',
'<div class="blank-document-btn img-doc-format"></div>', '<div class="blank-document-btn">',
'<svg class="btn-doc-format">',
'<use xlink:href="#svg-format-docx"></use>',
'</svg>',
'</div>',
'<div class="blank-document-info">', '<div class="blank-document-info">',
'<h3><%= scope.newDocumentText %></h3>', '<h3><%= scope.newDocumentText %></h3>',
'<%= scope.newDescriptionText %>', '<%= scope.newDescriptionText %>',
@ -540,7 +547,13 @@ define([
'<div class="thumb-list">', '<div class="thumb-list">',
'<% _.each(docs, function(item) { %>', '<% _.each(docs, function(item) { %>',
'<div class="thumb-wrap" template="<%= item.url %>">', '<div class="thumb-wrap" template="<%= item.url %>">',
'<div class="thumb"<% if (!_.isEmpty(item.icon)) { %> style="background-image: url(<%= item.icon %>);" <% } %> />', '<div class="thumb"',
'<% if (!_.isEmpty(item.icon)) { ' +
'print(\" style=\'background-image: url(item.icon);\'>\")' +
' } else { ' +
'print(\"><svg class=\'btn-doc-format\'><use xlink:href=\'#svg-format-blank\'></use></svg>\")' +
' } %>',
'</div>',
'<div class="title"><%= item.name %></div>', '<div class="title"><%= item.name %></div>',
'</div>', '</div>',
'<% }) %>', '<% }) %>',
@ -1166,7 +1179,8 @@ define([
this.btnDeletePwd.render(this.$el.find('#fms-btn-delete-pwd')); this.btnDeletePwd.render(this.$el.find('#fms-btn-delete-pwd'));
this.btnDeletePwd.on('click', _.bind(this.closeMenu, this)); this.btnDeletePwd.on('click', _.bind(this.closeMenu, this));
this.cntPassword = $('#id-fms-view-pwd'); this.cntPassword = $('#id-fms-password');
this.cntPasswordView = $('#id-fms-view-pwd');
this.btnAddInvisibleSign = protection.getButton('signature'); this.btnAddInvisibleSign = protection.getButton('signature');
this.btnAddInvisibleSign.render(this.$el.find('#fms-btn-invisible-sign')); this.btnAddInvisibleSign.render(this.$el.find('#fms-btn-invisible-sign'));
@ -1195,7 +1209,8 @@ define([
setMode: function(mode) { setMode: function(mode) {
this.mode = mode; this.mode = mode;
this.cntSignature.toggleClass('hidden', !this.mode.canProtect); this.cntSignature.toggleClass('hidden', !this.mode.isSignatureSupport);
this.cntPassword.toggleClass('hidden', !this.mode.isPasswordSupport);
}, },
setApi: function(o) { setApi: function(o) {
@ -1256,7 +1271,7 @@ define([
}, },
updateEncrypt: function() { updateEncrypt: function() {
this.cntPassword.toggleClass('hidden', this.btnAddPwd.isVisible()); this.cntPasswordView.toggleClass('hidden', this.btnAddPwd.isVisible());
}, },
strProtect: 'Protect Document', strProtect: 'Protect Document',

View file

@ -66,8 +66,8 @@ define([
}, options || {}); }, options || {});
this.template = [ this.template = [
'<div class="box" style="height: 150px;">', '<div class="box" style="height: 260px;">',
'<div class="input-row hidden" style="margin-bottom: 10px;">', '<div class="input-row" style="margin-bottom: 10px;">',
'<button type="button" class="btn btn-text-default auto" id="id-dlg-hyperlink-external" style="border-top-right-radius: 0;border-bottom-right-radius: 0;">', this.textExternal,'</button>', '<button type="button" class="btn btn-text-default auto" id="id-dlg-hyperlink-external" style="border-top-right-radius: 0;border-bottom-right-radius: 0;">', this.textExternal,'</button>',
'<button type="button" class="btn btn-text-default auto" id="id-dlg-hyperlink-internal" style="border-top-left-radius: 0;border-bottom-left-radius: 0;">', this.textInternal,'</button>', '<button type="button" class="btn btn-text-default auto" id="id-dlg-hyperlink-internal" style="border-top-left-radius: 0;border-bottom-left-radius: 0;">', this.textInternal,'</button>',
'</div>', '</div>',
@ -202,7 +202,7 @@ define([
for (var i=0; i<count; i++) { for (var i=0; i<count; i++) {
var anchor = anchors[i], var anchor = anchors[i],
level = anchors[i].asc_GetHeadingLevel(), level = anchors[i].asc_GetHeadingLevel()+1,
hasParent = true; hasParent = true;
if (anchor.asc_GetType()== Asc.c_oAscHyperlinkAnchor.Heading){ if (anchor.asc_GetType()== Asc.c_oAscHyperlinkAnchor.Heading){
if (level>prev_level) if (level>prev_level)
@ -279,10 +279,9 @@ define([
if (props) { if (props) {
var me = this; var me = this;
// var bookmark = props.get_Bookmark(), var bookmark = props.get_Bookmark(),
// type = (bookmark === null || bookmark=='') ? c_oHyperlinkType.WebLink : c_oHyperlinkType.InternalLink; type = (bookmark === null || bookmark=='') ? c_oHyperlinkType.WebLink : c_oHyperlinkType.InternalLink;
var type = c_oHyperlinkType.WebLink;
(type == c_oHyperlinkType.WebLink) ? me.btnExternal.toggle(true) : me.btnInternal.toggle(true); (type == c_oHyperlinkType.WebLink) ? me.btnExternal.toggle(true) : me.btnInternal.toggle(true);
me.ShowHideElem(type); me.ShowHideElem(type);
@ -335,7 +334,7 @@ define([
url = url.replace(new RegExp("%20",'g')," "); url = url.replace(new RegExp("%20",'g')," ");
props.put_Value(url); props.put_Value(url);
// props.put_Bookmark(null); props.put_Bookmark(null);
display = url; display = url;
} else { } else {
var rec = this.internalList.getSelectedRec(); var rec = this.internalList.getSelectedRec();

View file

@ -183,7 +183,7 @@ define([
} else { } else {
btn.panel['hide'](); btn.panel['hide']();
} }
if (this.mode.isEdit) DE.getController('Toolbar').DisableToolbar(state==true); DE.getController('Toolbar').DisableToolbar(state==true);
if (!this.supressEvents) if (!this.supressEvents)
Common.NotificationCenter.trigger('layout:changed', 'leftmenu'); Common.NotificationCenter.trigger('layout:changed', 'leftmenu');
}, },

View file

@ -47,7 +47,7 @@ define([ 'text!documenteditor/main/app/template/MailMergeEmailDlg.template',
options: { options: {
alias: 'MailMergeEmail', alias: 'MailMergeEmail',
contentWidth: 500, contentWidth: 500,
height: 460 height: 435
}, },
initialize : function(options) { initialize : function(options) {
@ -169,7 +169,7 @@ define([ 'text!documenteditor/main/app/template/MailMergeEmailDlg.template',
}, },
_onMessage: function(msg) { _onMessage: function(msg) {
if (msg /*&& msg.Referer == "onlyoffice"*/) { if (msg && msg.Referer == "onlyoffice") {
// if ( !_.isEmpty(msg.folder) ) { // if ( !_.isEmpty(msg.folder) ) {
// this.trigger('mailmergefolder', this, msg.folder); // save last folder url // this.trigger('mailmergefolder', this, msg.folder); // save last folder url
// } // }

View file

@ -116,7 +116,7 @@ define([
}, },
_onMessage: function(msg) { _onMessage: function(msg) {
if (msg /*&& msg.Referer == "onlyoffice"*/ && msg.file !== undefined) { if (msg && msg.Referer == "onlyoffice" && msg.file !== undefined) {
Common.NotificationCenter.trigger('window:close', this); Common.NotificationCenter.trigger('window:close', this);
var me = this; var me = this;
setTimeout(function() { setTimeout(function() {

View file

@ -120,7 +120,7 @@ define([
}, },
_onMessage: function(msg) { _onMessage: function(msg) {
if (msg /*&& msg.Referer == "onlyoffice"*/) { if (msg && msg.Referer == "onlyoffice") {
if ( !_.isEmpty(msg.error) ) { if ( !_.isEmpty(msg.error) ) {
this.trigger('mailmergeerror', this, msg.error); this.trigger('mailmergeerror', this, msg.error);
} }

View file

@ -0,0 +1,261 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
/**
* NumberingValueDialog.js
*
* Created by Julia Radzhabova on 7/20/18
* Copyright (c) 2018 Ascensio System SIA. All rights reserved.
*
*/
define([
'common/main/lib/component/Window',
'common/main/lib/component/MetricSpinner'
], function () { 'use strict';
DE.Views.NumberingValueDialog = Common.UI.Window.extend(_.extend({
options: {
width: 214,
header: true,
style: 'min-width: 214px;',
cls: 'modal-dlg'
},
initialize : function(options) {
_.extend(this.options, {
title: this.textTitle
}, options || {});
this.template = [
'<div class="box">',
'<div class="input-row">',
'<div id="id-spin-set-value"></div>',
'</div>',
'<div class="footer center">',
'<button class="btn normal dlg-btn primary" result="ok" style="margin-right: 10px;">' + this.okButtonText + '</button>',
'<button class="btn normal dlg-btn" result="cancel">' + this.cancelButtonText + '</button>',
'</div>'
].join('');
this.options.tpl = _.template(this.template)(this.options);
this.props = this.options.props;
Common.UI.Window.prototype.initialize.call(this, this.options);
},
render: function() {
Common.UI.Window.prototype.render.call(this);
this.spnStart = new Common.UI.CustomSpinner({
el: $('#id-spin-set-value'),
step: 1,
width: 182,
defaultUnit : "",
value: 1,
maxValue: 16383,
minValue: 1,
allowDecimal: false,
maskExp: /[0-9]/
});
var $window = this.getChild();
$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
this.spnStart.on('entervalue', _.bind(this.onPrimary, this));
this.spnStart.$el.find('input').focus();
this.afterRender();
},
afterRender: function() {
this._setDefaults(this.props);
},
_setDefaults: function (props) {
if (props) {
this.spnStart.setValue(props.start);
this.onFormatSelect(props.format);
}
},
_handleInput: function(state) {
if (this.options.handler) {
this.options.handler.call(this, state, this.getSettings());
}
this.close();
},
onBtnClick: function(event) {
this._handleInput(event.currentTarget.attributes['result'].value);
},
getSettings: function() {
return this.spnStart.getNumberValue();
},
onPrimary: function() {
this._handleInput('ok');
return false;
},
onFormatSelect: function(format) {
var maskExp = /[0-9]/;
var me = this;
switch (format) {
case Asc.c_oAscNumberingFormat.UpperRoman: // I, II, III, ...
this.spnStart.options.toCustomFormat = this._10toRome;
this.spnStart.options.fromCustomFormat = this._Rometo10;
maskExp = /[IVXLCDM]/;
break;
case Asc.c_oAscNumberingFormat.LowerRoman: // i, ii, iii, ...
this.spnStart.options.toCustomFormat = function(value) { return me._10toRome(value).toLocaleLowerCase(); };
this.spnStart.options.fromCustomFormat = function(value) { return me._Rometo10(value.toLocaleUpperCase()); };
maskExp = /[ivxlcdm]/;
break;
case Asc.c_oAscNumberingFormat.UpperLetter: // A, B, C, ...
this.spnStart.options.toCustomFormat = this._10toS;
this.spnStart.options.fromCustomFormat = this._Sto10;
maskExp = /[A-Z]/;
break;
case Asc.c_oAscNumberingFormat.LowerLetter: // a, b, c, ...
this.spnStart.options.toCustomFormat = function(value) { return me._10toS(value).toLocaleLowerCase(); };
this.spnStart.options.fromCustomFormat = function(value) { return me._Sto10(value.toLocaleUpperCase()); };
maskExp = /[a-z]/;
break;
default: // 1, 2, 3, ...
this.spnStart.options.toCustomFormat = function(value) { return value; };
this.spnStart.options.fromCustomFormat = function(value) { return value; };
break;
}
this.spnStart.setMask(maskExp);
this.spnStart.setValue(this.spnStart.getValue());
},
_10toS: function(value) {
value = parseInt(value);
var n = Math.ceil(value / 26),
code = String.fromCharCode((value-1) % 26 + "A".charCodeAt(0)) ,
result = '';
for (var i=0; i<n; i++ ) {
result += code;
}
return result;
},
_Sto10: function(str) {
if ( str.length<1 || (new RegExp('[^' + str.charAt(0) + ']')).test(str) || !/[A-Z]/.test(str)) return 1;
var n = str.length-1,
result = str.charCodeAt(0) - "A".charCodeAt(0) + 1;
result += 26*n;
return result;
},
_10toRome: function(value) {
value = parseInt(value);
var result = '',
digits = [
['M', 1000],
['CM', 900],
['D', 500],
['CD', 400],
['C', 100],
['XC', 90],
['L', 50],
['XL', 40],
['X', 10],
['IX', 9],
['V', 5],
['IV', 4],
['I', 1]
];
var val = digits[0][1],
div = Math.floor(value / val),
n = 0;
for (var i=0; i<div; i++)
result += digits[n][0];
value -= div * val;
n++;
while (value>0) {
val = digits[n][1];
div = value - val;
if (div>=0) {
result += digits[n][0];
value = div;
} else
n++;
}
return result;
},
_Rometo10: function(str) {
if ( !/[IVXLCDM]/.test(str) || str.length<1 ) return 1;
var digits = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
};
var n = str.length-1,
result = digits[str.charAt(n)],
prev = result;
for (var i=n-1; i>=0; i-- ) {
var val = digits[str.charAt(i)];
if (val<prev) {
if (prev/val>10) return 1;
val *= -1;
}
result += val;
}
return result;
},
cancelButtonText: 'Cancel',
okButtonText: 'Ok'
}, DE.Views.NumberingValueDialog || {}))
});

View file

@ -58,14 +58,20 @@ define([
}, options || {}); }, options || {});
this.template = [ this.template = [
'<div class="box" style="height: 40px;">', '<div class="box" style="height: 85px;">',
'<table cols="2" style="width: 100%;margin-bottom: 10px;">', '<table cols="2" style="width: 100%;">',
'<tr>', '<tr>',
'<td class="padding-small" style="padding-right: 10px;">', '<td colspan="2">',
'<label class="input-label">' + this.textPreset + '</label>',
'<div id="page-size-combo-preset" class="input-group-nr" style="margin-bottom: 10px;"></div>',
'</td>',
'</tr>',
'<tr>',
'<td style="padding-right: 10px;">',
'<label class="input-label">' + this.textWidth + '</label>', '<label class="input-label">' + this.textWidth + '</label>',
'<div id="page-size-spin-width"></div>', '<div id="page-size-spin-width"></div>',
'</td>', '</td>',
'<td class="padding-small">', '<td>',
'<label class="input-label">' + this.textHeight + '</label>', '<label class="input-label">' + this.textHeight + '</label>',
'<div id="page-size-spin-height"></div>', '<div id="page-size-spin-height"></div>',
'</td>', '</td>',
@ -83,6 +89,7 @@ define([
this.spinners = []; this.spinners = [];
this._noApply = false; this._noApply = false;
this.isOrientPortrait = true;
Common.UI.Window.prototype.initialize.call(this, this.options); Common.UI.Window.prototype.initialize.call(this, this.options);
}, },
@ -100,6 +107,10 @@ define([
minValue: 0 minValue: 0
}); });
this.spinners.push(this.spnWidth); this.spinners.push(this.spnWidth);
this.spnWidth.on('change', _.bind(function(field, newValue, oldValue, eOpts){
if (!this._noApply && this.cmbPreset.getValue() >-1)
this.cmbPreset.setValue(-1);
}, this));
this.spnHeight = new Common.UI.MetricSpinner({ this.spnHeight = new Common.UI.MetricSpinner({
el: $('#page-size-spin-height'), el: $('#page-size-spin-height'),
@ -111,6 +122,48 @@ define([
minValue: 0 minValue: 0
}); });
this.spinners.push(this.spnHeight); this.spinners.push(this.spnHeight);
this.spnHeight.on('change', _.bind(function(field, newValue, oldValue, eOpts){
if (!this._noApply && this.cmbPreset.getValue() >-1)
this.cmbPreset.setValue(-1);
}, this));
this.cmbPreset = new Common.UI.ComboBox({
el: $('#page-size-combo-preset'),
cls: 'input-group-nr',
menuStyle: 'min-width: 183px;max-height: 208px;',
editable: false,
scrollAlwaysVisible: true,
data: [
{ value: 0, displayValue: 'US Letter', size: [215.9, 279.4]},
{ value: 1, displayValue: 'US Legal', size: [215.9, 355.6]},
{ value: 2, displayValue: 'A4', size: [210, 297]},
{ value: 3, displayValue: 'A5', size: [148, 210]},
{ value: 4, displayValue: 'B5', size: [176, 250]},
{ value: 5, displayValue: 'Envelope #10', size: [104.8, 241.3]},
{ value: 6, displayValue: 'Envelope DL', size: [110, 220]},
{ value: 7, displayValue: 'Tabloid', size: [279.4, 431.8]},
{ value: 8, displayValue: 'A3', size: [297, 420]},
{ value: 9, displayValue: 'Tabloid Oversize', size: [304.8, 457.1]},
{ value: 10, displayValue: 'ROC 16K', size: [196.8, 273]},
{ value: 11, displayValue: 'Envelope Choukei 3', size: [119.9, 234.9]},
{ value: 12, displayValue: 'Super B/A3', size: [330.2, 482.5]},
{ value: 13, displayValue: 'A0', size: [841, 1189]},
{ value: 14, displayValue: 'A1', size: [594, 841]},
{ value: 16, displayValue: 'A2', size: [420, 594]},
{ value: 17, displayValue: 'A6', size: [105, 148]},
{ value: -1, displayValue: this.txtCustom, size: []}
]
});
this.cmbPreset.setValue(-1);
this.cmbPreset.on('selected', _.bind(function(combo, record) {
this._noApply = true;
if (record.value<0) {
} else {
this.spnWidth.setValue(Common.Utils.Metric.fnRecalcFromMM(this.isOrientPortrait ? record.size[0] : record.size[1]), true);
this.spnHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(this.isOrientPortrait ? record.size[1] : record.size[0]), true);
}
this._noApply = false;
}, this));
var $window = this.getChild(); var $window = this.getChild();
$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
@ -139,10 +192,18 @@ define([
setSettings: function (props) { setSettings: function (props) {
if (props) { if (props) {
this.isOrientPortrait = (props.get_W() < props.get_H());
this.spnWidth.setMinValue(Common.Utils.Metric.fnRecalcFromMM(props.get_LeftMargin() + props.get_RightMargin() + 12.7)); this.spnWidth.setMinValue(Common.Utils.Metric.fnRecalcFromMM(props.get_LeftMargin() + props.get_RightMargin() + 12.7));
this.spnWidth.setValue(Common.Utils.Metric.fnRecalcFromMM(props.get_W()), true); this.spnWidth.setValue(Common.Utils.Metric.fnRecalcFromMM(props.get_W()), true);
this.spnHeight.setMinValue(Common.Utils.Metric.fnRecalcFromMM(props.get_TopMargin() + props.get_BottomMargin() + 2.6)); this.spnHeight.setMinValue(Common.Utils.Metric.fnRecalcFromMM(props.get_TopMargin() + props.get_BottomMargin() + 2.6));
this.spnHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(props.get_H()), true); this.spnHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(props.get_H()), true);
var width = this.isOrientPortrait ? props.get_W() : props.get_H(),
height = this.isOrientPortrait ? props.get_H() : props.get_W();
var rec = this.cmbPreset.store.find(function(item){
var size = item.get('size');
return (Math.abs(size[0] - width) < 0.1 && Math.abs(size[1] - height) < 0.1);
});
this.cmbPreset.setValue((rec) ? rec.get('value') : -1);
} }
}, },
@ -165,6 +226,8 @@ define([
textWidth: 'Width', textWidth: 'Width',
textHeight: 'Height', textHeight: 'Height',
cancelButtonText: 'Cancel', cancelButtonText: 'Cancel',
okButtonText: 'Ok' okButtonText: 'Ok',
textPreset: 'Preset',
txtCustom: 'Custom'
}, DE.Views.PageSizeDialog || {})) }, DE.Views.PageSizeDialog || {}))
}); });

View file

@ -195,7 +195,7 @@ define([
this.mergeSettings = new DE.Views.MailMergeSettings(); this.mergeSettings = new DE.Views.MailMergeSettings();
} }
if (mode && mode.canProtect) { if (mode && mode.isSignatureSupport) {
this.btnSignature = new Common.UI.Button({ this.btnSignature = new Common.UI.Button({
hint: this.txtSignatureSettings, hint: this.txtSignatureSettings,
asctype: Common.Utils.documentSettingsType.Signature, asctype: Common.Utils.documentSettingsType.Signature,

View file

@ -1164,7 +1164,7 @@ define([
el: $('#shape-combo-fill-src'), el: $('#shape-combo-fill-src'),
cls: 'input-group-nr', cls: 'input-group-nr',
style: 'width: 100%;', style: 'width: 100%;',
menuStyle: 'min-width: 190px;', menuStyle: 'min-width: 100%;',
editable: false, editable: false,
data: this._arrFillSrc data: this._arrFillSrc
}); });

View file

@ -122,6 +122,9 @@ define([
this.viewRequestedList.on('item:click', _.bind(this.onSelectSignature, this)); this.viewRequestedList.on('item:click', _.bind(this.onSelectSignature, this));
this.viewValidList.on('item:click', _.bind(this.onSelectSignature, this)); this.viewValidList.on('item:click', _.bind(this.onSelectSignature, this));
this.viewInvalidList.on('item:click', _.bind(this.onSelectSignature, this)); this.viewInvalidList.on('item:click', _.bind(this.onSelectSignature, this));
this.viewRequestedList.on('item:contextmenu', _.bind(this.onItemContextMenu, this));
this.viewValidList.on('item:contextmenu', _.bind(this.onItemContextMenu, this));
this.viewInvalidList.on('item:contextmenu', _.bind(this.onItemContextMenu, this));
this.signatureMenu = new Common.UI.Menu({ this.signatureMenu = new Common.UI.Menu({
menuAlign : 'tr-br', menuAlign : 'tr-br',
@ -200,6 +203,26 @@ define([
me.disableEditing(me._state.hasValid || me._state.hasInvalid); me.disableEditing(me._state.hasValid || me._state.hasInvalid);
}, },
onItemContextMenu: function(picker, item, record, e){
var menu = this.signatureMenu;
if (menu.isVisible()) {
menu.hide();
}
var offsetParent = $(this.el).offset(),
showPoint = [e.clientX*Common.Utils.zoom() - offsetParent.left + 5, e.clientY*Common.Utils.zoom() - offsetParent.top + 5];
this.showSignatureMenu(record, showPoint);
menu.menuAlign = 'tl-bl';
menu.menuAlignEl = null;
menu.setOffset(15, 5);
menu.show();
_.delay(function() {
menu.cmpEl.focus();
}, 10);
},
onSelectSignature: function(picker, item, record, e){ onSelectSignature: function(picker, item, record, e){
if (!record) return; if (!record) return;
@ -211,50 +234,14 @@ define([
return; return;
} }
var showPoint, me = this, var currentTarget = $(e.currentTarget),
currentTarget = $(e.currentTarget),
parent = $(this.el),
offset = currentTarget.offset(), offset = currentTarget.offset(),
offsetParent = parent.offset(); offsetParent = $(this.el).offset(),
showPoint = [offset.left - offsetParent.left + currentTarget.width(), offset.top - offsetParent.top + currentTarget.height()/2];
showPoint = [offset.left - offsetParent.left + currentTarget.width(), offset.top - offsetParent.top + currentTarget.height()/2]; this.showSignatureMenu(record, showPoint);
var menuContainer = parent.find('#menu-signature-container');
if (!menu.rendered) {
if (menuContainer.length < 1) {
menuContainer = $('<div id="menu-signature-container" style="position: absolute; z-index: 10000;"><div class="dropdown-toggle" data-toggle="dropdown"></div></div>', menu.id);
parent.append(menuContainer);
}
menu.render(menuContainer);
menu.cmpEl.attr({tabindex: "-1"});
menu.on({
'show:after': function(cmp) {
if (cmp && cmp.menuAlignEl)
cmp.menuAlignEl.toggleClass('over', true);
},
'hide:after': function(cmp) {
if (cmp && cmp.menuAlignEl)
cmp.menuAlignEl.toggleClass('over', false);
}
});
}
var requested = record.get('requested'),
signed = (this._state.hasValid || this._state.hasInvalid);
menu.items[0].setVisible(requested);
menu.items[1].setVisible(!requested);
menu.items[2].setVisible(requested || !record.get('invisible'));
menu.items[3].setVisible(!requested);
menu.items[0].setDisabled(this._locked);
menu.items[3].setDisabled(this._locked);
menu.items[1].cmpEl.attr('data-value', record.get('certificateId')); // view certificate
menu.items[2].cmpEl.attr('data-value', signed ? 1 : 0); // view or edit signature settings
menu.cmpEl.attr('data-value', record.get('guid'));
menuContainer.css({left: showPoint[0], top: showPoint[1]});
menu.menuAlign = 'tr-br';
menu.menuAlignEl = currentTarget; menu.menuAlignEl = currentTarget;
menu.setOffset(-20, -currentTarget.height()/2 + 3); menu.setOffset(-20, -currentTarget.height()/2 + 3);
menu.show(); menu.show();
@ -268,6 +255,46 @@ define([
} }
}, },
showSignatureMenu: function(record, showPoint) {
var menu = this.signatureMenu,
parent = $(this.el),
menuContainer = parent.find('#menu-signature-container');
if (!menu.rendered) {
if (menuContainer.length < 1) {
menuContainer = $('<div id="menu-signature-container" style="position: absolute; z-index: 10000;"><div class="dropdown-toggle" data-toggle="dropdown"></div></div>', menu.id);
parent.append(menuContainer);
}
menu.render(menuContainer);
menu.cmpEl.attr({tabindex: "-1"});
menu.on({
'show:after': function(cmp) {
if (cmp && cmp.menuAlignEl)
cmp.menuAlignEl.toggleClass('over', true);
},
'hide:after': function(cmp) {
if (cmp && cmp.menuAlignEl)
cmp.menuAlignEl.toggleClass('over', false);
}
});
}
var requested = record.get('requested'),
signed = (this._state.hasValid || this._state.hasInvalid);
menu.items[0].setVisible(requested);
menu.items[1].setVisible(!requested);
menu.items[2].setVisible(requested || !record.get('invisible'));
menu.items[3].setVisible(!requested);
menu.items[0].setDisabled(this._locked);
menu.items[3].setDisabled(this._locked);
menu.items[1].cmpEl.attr('data-value', record.get('certificateId')); // view certificate
menu.items[2].cmpEl.attr('data-value', signed ? 1 : 0); // view or edit signature settings
menu.cmpEl.attr('data-value', record.get('guid'));
menuContainer.css({left: showPoint[0], top: showPoint[1]});
},
onMenuSignatureClick: function(menu, item) { onMenuSignatureClick: function(menu, item) {
var guid = menu.cmpEl.attr('data-value'); var guid = menu.cmpEl.attr('data-value');
switch (item.value) { switch (item.value) {

View file

@ -258,7 +258,7 @@ define([
this.cmbStyles = new Common.UI.ComboBox({ this.cmbStyles = new Common.UI.ComboBox({
el: $('#tableofcontents-combo-styles'), el: $('#tableofcontents-combo-styles'),
cls: 'input-group-nr', cls: 'input-group-nr',
menuStyle: 'min-width: 150px;', menuStyle: 'min-width: 95px;',
editable: false, editable: false,
data: [ data: [
{ displayValue: this.txtCurrent, value: Asc.c_oAscTOCStylesType.Current }, { displayValue: this.txtCurrent, value: Asc.c_oAscTOCStylesType.Current },
@ -384,6 +384,10 @@ define([
if (this.chPages.getValue() == 'checked') { if (this.chPages.getValue() == 'checked') {
value = props.get_RightAlignTab(); value = props.get_RightAlignTab();
this.chAlign.setValue((value !== null && value !== undefined) ? value : 'indeterminate'); this.chAlign.setValue((value !== null && value !== undefined) ? value : 'indeterminate');
if (this.chAlign.getValue() == 'checked') {
value = props.get_TabLeader();
(value!==undefined) && this.cmbLeader.setValue(value);
}
} }
var start = props.get_OutlineStart(), var start = props.get_OutlineStart(),

View file

@ -810,7 +810,7 @@ define([
el: $('#textart-combo-fill-src'), el: $('#textart-combo-fill-src'),
cls: 'input-group-nr', cls: 'input-group-nr',
style: 'width: 100%;', style: 'width: 100%;',
menuStyle: 'min-width: 190px;', menuStyle: 'min-width: 100%;',
editable: false, editable: false,
data: this._arrFillSrc data: this._arrFillSrc
}); });

File diff suppressed because it is too large Load diff

View file

@ -262,6 +262,14 @@
<script src="../../../vendor/svg-injector/svg-injector.min.js"></script> <script src="../../../vendor/svg-injector/svg-injector.min.js"></script>
<img class="inline-svg" src="../../common/main/resources/img/header/buttons.svg"> <img class="inline-svg" src="../../common/main/resources/img/header/buttons.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/docx.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/pdf.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/pdfa.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/txt.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/odt.svg">
<img class="inline-svg" src="../../common/main/resources/img/doc-formats/rtf.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/blank.svg">
<script> <script>
var svgpoints = document.querySelectorAll('img.inline-svg'); var svgpoints = document.querySelectorAll('img.inline-svg');
SVGInjector(svgpoints); SVGInjector(svgpoints);

View file

@ -283,6 +283,14 @@
</script> </script>
<inline src="resources/img/header/buttons.svg" /> <inline src="resources/img/header/buttons.svg" />
<inline src="resources/img/doc-formats/docx.svg" />
<inline src="resources/img/doc-formats/pdf.svg" />
<inline src="resources/img/doc-formats/pdfa.svg" />
<inline src="resources/img/doc-formats/txt.svg" />
<inline src="resources/img/doc-formats/odt.svg" />
<inline src="resources/img/doc-formats/rtf.svg" />
<inline src="resources/img/doc-formats/html.svg" />
<inline src="resources/img/doc-formats/blank.svg" />
<div id="viewport"></div> <div id="viewport"></div>
<script data-main="app" src="../../../vendor/requirejs/require.js"></script> <script data-main="app" src="../../../vendor/requirejs/require.js"></script>

View file

@ -168,6 +168,7 @@
"Common.Views.History.textRestore": "Wiederherstellen", "Common.Views.History.textRestore": "Wiederherstellen",
"Common.Views.History.textShow": "Erweitern", "Common.Views.History.textShow": "Erweitern",
"Common.Views.History.textShowAll": "Wesentliche Änderungen anzeigen", "Common.Views.History.textShowAll": "Wesentliche Änderungen anzeigen",
"Common.Views.History.textVer": "Ver.",
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Abbrechen", "Common.Views.ImageFromUrlDialog.cancelButtonText": "Abbrechen",
"Common.Views.ImageFromUrlDialog.okButtonText": "OK", "Common.Views.ImageFromUrlDialog.okButtonText": "OK",
"Common.Views.ImageFromUrlDialog.textUrl": "Bild-URL einfügen:", "Common.Views.ImageFromUrlDialog.textUrl": "Bild-URL einfügen:",
@ -271,6 +272,14 @@
"Common.Views.ReviewChangesDialog.txtReject": "Ablehnen", "Common.Views.ReviewChangesDialog.txtReject": "Ablehnen",
"Common.Views.ReviewChangesDialog.txtRejectAll": "Alle Änderungen ablehnen", "Common.Views.ReviewChangesDialog.txtRejectAll": "Alle Änderungen ablehnen",
"Common.Views.ReviewChangesDialog.txtRejectCurrent": "Aktuelle Änderungen ablehnen", "Common.Views.ReviewChangesDialog.txtRejectCurrent": "Aktuelle Änderungen ablehnen",
"Common.Views.ReviewPopover.textAdd": "Hinzufügen",
"Common.Views.ReviewPopover.textAddReply": "Antwort hinzufügen",
"Common.Views.ReviewPopover.textCancel": "Abbrechen",
"Common.Views.ReviewPopover.textClose": "Schließen",
"Common.Views.ReviewPopover.textEdit": "OK",
"Common.Views.ReviewPopover.textOpenAgain": "Erneut öffnen",
"Common.Views.ReviewPopover.textReply": "Antworten",
"Common.Views.ReviewPopover.textResolve": "Lösen",
"Common.Views.SignDialog.cancelButtonText": "Abbrechen", "Common.Views.SignDialog.cancelButtonText": "Abbrechen",
"Common.Views.SignDialog.okButtonText": "OK", "Common.Views.SignDialog.okButtonText": "OK",
"Common.Views.SignDialog.textBold": "Fett", "Common.Views.SignDialog.textBold": "Fett",
@ -380,10 +389,13 @@
"DE.Controllers.Main.textAnonymous": "Anonym", "DE.Controllers.Main.textAnonymous": "Anonym",
"DE.Controllers.Main.textBuyNow": "Webseite besuchen", "DE.Controllers.Main.textBuyNow": "Webseite besuchen",
"DE.Controllers.Main.textChangesSaved": "Alle Änderungen werden gespeichert", "DE.Controllers.Main.textChangesSaved": "Alle Änderungen werden gespeichert",
"DE.Controllers.Main.textClose": "Schließen",
"DE.Controllers.Main.textCloseTip": "Klicken Sie, um den Tipp zu schließen", "DE.Controllers.Main.textCloseTip": "Klicken Sie, um den Tipp zu schließen",
"DE.Controllers.Main.textContactUs": "Verkaufsteam kontaktieren", "DE.Controllers.Main.textContactUs": "Verkaufsteam kontaktieren",
"DE.Controllers.Main.textLicencePaidFeature": "Die Funktion, die Sie verwenden möchten, ist für zusätzliche Lizenz verfügbar. <br> Wenden Sie sich bei Bedarf an die Verkaufsabteilung",
"DE.Controllers.Main.textLoadingDocument": "Dokument wird geladen...", "DE.Controllers.Main.textLoadingDocument": "Dokument wird geladen...",
"DE.Controllers.Main.textNoLicenseTitle": "ONLYOFFICE Verbindungsbeschränkung", "DE.Controllers.Main.textNoLicenseTitle": "ONLYOFFICE Verbindungsbeschränkung",
"DE.Controllers.Main.textPaidFeature": "Kostenpflichtige Funktion",
"DE.Controllers.Main.textShape": "Form", "DE.Controllers.Main.textShape": "Form",
"DE.Controllers.Main.textStrict": "Formaler Modus", "DE.Controllers.Main.textStrict": "Formaler Modus",
"DE.Controllers.Main.textTryUndoRedo": "Undo/Redo Optionen sind für den halbformalen Zusammenbearbeitungsmodus deaktiviert.<br>Klicken Sie auf den Button \"Formaler Modus\", um den formalen Zusammenbearbeitungsmodus zu aktivieren, um die Datei, ohne Störungen anderer Benutzer zu bearbeiten und die Änderungen erst nachdem Sie sie gespeichert haben, zu senden. Sie können zwischen den Zusammenbearbeitungsmodi mit der Hilfe der erweiterten Einstellungen von Editor umschalten.", "DE.Controllers.Main.textTryUndoRedo": "Undo/Redo Optionen sind für den halbformalen Zusammenbearbeitungsmodus deaktiviert.<br>Klicken Sie auf den Button \"Formaler Modus\", um den formalen Zusammenbearbeitungsmodus zu aktivieren, um die Datei, ohne Störungen anderer Benutzer zu bearbeiten und die Änderungen erst nachdem Sie sie gespeichert haben, zu senden. Sie können zwischen den Zusammenbearbeitungsmodi mit der Hilfe der erweiterten Einstellungen von Editor umschalten.",
@ -806,6 +818,7 @@
"DE.Views.BookmarksDialog.textName": "Name", "DE.Views.BookmarksDialog.textName": "Name",
"DE.Views.BookmarksDialog.textSort": "Sortieren nach", "DE.Views.BookmarksDialog.textSort": "Sortieren nach",
"DE.Views.BookmarksDialog.textTitle": "Lesezeichen", "DE.Views.BookmarksDialog.textTitle": "Lesezeichen",
"DE.Views.BookmarksDialog.txtInvalidName": "Der Name des Lesezeichens darf nur Buchstaben, Ziffern und Unterstriche enthalten und sollte mit dem Buchstaben beginnen",
"DE.Views.ChartSettings.textAdvanced": "Erweiterte Einstellungen anzeigen", "DE.Views.ChartSettings.textAdvanced": "Erweiterte Einstellungen anzeigen",
"DE.Views.ChartSettings.textArea": "Fläche", "DE.Views.ChartSettings.textArea": "Fläche",
"DE.Views.ChartSettings.textBar": "Balken", "DE.Views.ChartSettings.textBar": "Balken",
@ -834,8 +847,15 @@
"DE.Views.ChartSettings.txtTopAndBottom": "Oben und unten", "DE.Views.ChartSettings.txtTopAndBottom": "Oben und unten",
"DE.Views.ControlSettingsDialog.cancelButtonText": "Abbrechen", "DE.Views.ControlSettingsDialog.cancelButtonText": "Abbrechen",
"DE.Views.ControlSettingsDialog.okButtonText": "OK", "DE.Views.ControlSettingsDialog.okButtonText": "OK",
"DE.Views.ControlSettingsDialog.textAppearance": "Darstellung",
"DE.Views.ControlSettingsDialog.textApplyAll": "Auf alle anwenden",
"DE.Views.ControlSettingsDialog.textBox": "Begrenzungsrahmen",
"DE.Views.ControlSettingsDialog.textColor": "Farbe",
"DE.Views.ControlSettingsDialog.textLock": "Sperrung", "DE.Views.ControlSettingsDialog.textLock": "Sperrung",
"DE.Views.ControlSettingsDialog.textName": "Titel", "DE.Views.ControlSettingsDialog.textName": "Titel",
"DE.Views.ControlSettingsDialog.textNewColor": "Benutzerdefinierte Farbe",
"DE.Views.ControlSettingsDialog.textNone": "Kein",
"DE.Views.ControlSettingsDialog.textShowAs": "Anzeigen als",
"DE.Views.ControlSettingsDialog.textTag": "Tag", "DE.Views.ControlSettingsDialog.textTag": "Tag",
"DE.Views.ControlSettingsDialog.textTitle": "Einstellungen des Inhaltssteuerelements", "DE.Views.ControlSettingsDialog.textTitle": "Einstellungen des Inhaltssteuerelements",
"DE.Views.ControlSettingsDialog.txtLockDelete": "Das Inhaltssteuerelement kann nicht gelöscht werden", "DE.Views.ControlSettingsDialog.txtLockDelete": "Das Inhaltssteuerelement kann nicht gelöscht werden",
@ -855,6 +875,7 @@
"DE.Views.DocumentHolder.alignmentText": "Ausrichtung", "DE.Views.DocumentHolder.alignmentText": "Ausrichtung",
"DE.Views.DocumentHolder.belowText": "Unten", "DE.Views.DocumentHolder.belowText": "Unten",
"DE.Views.DocumentHolder.breakBeforeText": "Seitenumbruch oberhalb", "DE.Views.DocumentHolder.breakBeforeText": "Seitenumbruch oberhalb",
"DE.Views.DocumentHolder.bulletsText": "Nummerierung und Aufzählungszeichen",
"DE.Views.DocumentHolder.cellAlignText": "Vertikale Ausrichtung in Zellen", "DE.Views.DocumentHolder.cellAlignText": "Vertikale Ausrichtung in Zellen",
"DE.Views.DocumentHolder.cellText": "Zelle", "DE.Views.DocumentHolder.cellText": "Zelle",
"DE.Views.DocumentHolder.centerText": "Zentriert", "DE.Views.DocumentHolder.centerText": "Zentriert",
@ -910,7 +931,7 @@
"DE.Views.DocumentHolder.strDetails": "Signaturdetails", "DE.Views.DocumentHolder.strDetails": "Signaturdetails",
"DE.Views.DocumentHolder.strSetup": "Signatureinrichtung", "DE.Views.DocumentHolder.strSetup": "Signatureinrichtung",
"DE.Views.DocumentHolder.strSign": "Signieren", "DE.Views.DocumentHolder.strSign": "Signieren",
"DE.Views.DocumentHolder.styleText": "Formatting as Style", "DE.Views.DocumentHolder.styleText": "Formatierung als Formatvorlage",
"DE.Views.DocumentHolder.tableText": "Tabelle", "DE.Views.DocumentHolder.tableText": "Tabelle",
"DE.Views.DocumentHolder.textAlign": "Ausrichten", "DE.Views.DocumentHolder.textAlign": "Ausrichten",
"DE.Views.DocumentHolder.textArrange": "Anordnen", "DE.Views.DocumentHolder.textArrange": "Anordnen",
@ -919,6 +940,7 @@
"DE.Views.DocumentHolder.textArrangeForward": "Eine Ebene nach vorne", "DE.Views.DocumentHolder.textArrangeForward": "Eine Ebene nach vorne",
"DE.Views.DocumentHolder.textArrangeFront": "In den Vordergrund bringen", "DE.Views.DocumentHolder.textArrangeFront": "In den Vordergrund bringen",
"DE.Views.DocumentHolder.textContentControls": "Inhaltssteuerelement", "DE.Views.DocumentHolder.textContentControls": "Inhaltssteuerelement",
"DE.Views.DocumentHolder.textContinueNumbering": "Nummerierung fortführen",
"DE.Views.DocumentHolder.textCopy": "Kopieren", "DE.Views.DocumentHolder.textCopy": "Kopieren",
"DE.Views.DocumentHolder.textCut": "Ausschneiden", "DE.Views.DocumentHolder.textCut": "Ausschneiden",
"DE.Views.DocumentHolder.textDistributeCols": "Spalten verteilen", "DE.Views.DocumentHolder.textDistributeCols": "Spalten verteilen",
@ -927,14 +949,17 @@
"DE.Views.DocumentHolder.textEditWrapBoundary": "Umbruchsgrenze bearbeiten", "DE.Views.DocumentHolder.textEditWrapBoundary": "Umbruchsgrenze bearbeiten",
"DE.Views.DocumentHolder.textFromFile": "Aus Datei", "DE.Views.DocumentHolder.textFromFile": "Aus Datei",
"DE.Views.DocumentHolder.textFromUrl": "Aus URL", "DE.Views.DocumentHolder.textFromUrl": "Aus URL",
"DE.Views.DocumentHolder.textJoinList": "Mit der vorherigen Liste verbinden",
"DE.Views.DocumentHolder.textNest": "Tabelle schachteln", "DE.Views.DocumentHolder.textNest": "Tabelle schachteln",
"DE.Views.DocumentHolder.textNextPage": "Nächste Seite", "DE.Views.DocumentHolder.textNextPage": "Nächste Seite",
"DE.Views.DocumentHolder.textNumberingValue": "Nummerierungswert",
"DE.Views.DocumentHolder.textPaste": "Einfügen", "DE.Views.DocumentHolder.textPaste": "Einfügen",
"DE.Views.DocumentHolder.textPrevPage": "Vorherige Seite", "DE.Views.DocumentHolder.textPrevPage": "Vorherige Seite",
"DE.Views.DocumentHolder.textRefreshField": "Feld aktualisieren", "DE.Views.DocumentHolder.textRefreshField": "Feld aktualisieren",
"DE.Views.DocumentHolder.textRemove": "Entfernen", "DE.Views.DocumentHolder.textRemove": "Entfernen",
"DE.Views.DocumentHolder.textRemoveControl": "Inhaltssteuerelement entfernen", "DE.Views.DocumentHolder.textRemoveControl": "Inhaltssteuerelement entfernen",
"DE.Views.DocumentHolder.textReplace": "Bild ersetzen", "DE.Views.DocumentHolder.textReplace": "Bild ersetzen",
"DE.Views.DocumentHolder.textSeparateList": "Separate Liste",
"DE.Views.DocumentHolder.textSettings": "Einstellungen", "DE.Views.DocumentHolder.textSettings": "Einstellungen",
"DE.Views.DocumentHolder.textShapeAlignBottom": "Unten ausrichten", "DE.Views.DocumentHolder.textShapeAlignBottom": "Unten ausrichten",
"DE.Views.DocumentHolder.textShapeAlignCenter": "Zentriert ausrichten", "DE.Views.DocumentHolder.textShapeAlignCenter": "Zentriert ausrichten",
@ -942,6 +967,8 @@
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Mittig ausrichten", "DE.Views.DocumentHolder.textShapeAlignMiddle": "Mittig ausrichten",
"DE.Views.DocumentHolder.textShapeAlignRight": "Rechtsbündig ausrichten", "DE.Views.DocumentHolder.textShapeAlignRight": "Rechtsbündig ausrichten",
"DE.Views.DocumentHolder.textShapeAlignTop": "Oben ausrichten", "DE.Views.DocumentHolder.textShapeAlignTop": "Oben ausrichten",
"DE.Views.DocumentHolder.textStartNewList": "Neue Liste beginnen",
"DE.Views.DocumentHolder.textStartNumberingFrom": "Nummerierungswert festlegen",
"DE.Views.DocumentHolder.textTOC": "Inhaltsverzeichnis", "DE.Views.DocumentHolder.textTOC": "Inhaltsverzeichnis",
"DE.Views.DocumentHolder.textTOCSettings": "Einstellungen für das Inhaltverzeichnis", "DE.Views.DocumentHolder.textTOCSettings": "Einstellungen für das Inhaltverzeichnis",
"DE.Views.DocumentHolder.textUndo": "Rückgängig machen", "DE.Views.DocumentHolder.textUndo": "Rückgängig machen",
@ -1367,7 +1394,7 @@
"DE.Views.MailMergeSettings.textSendMsg": "Alle E-Mail-Nachrichten sind bereit und werden innerhalb einiger Zeit versendet. <br> Die Geschwindigkeit des Email-Versands hängt von Ihrem Mail-Dienst ab. Sie können an dem Dokument weiterarbeiten oder es schließen. Nachdem Email-Versand werden Sie per E-Mail, die Sie bei der Registriering wervendeten, benachrichtigt.", "DE.Views.MailMergeSettings.textSendMsg": "Alle E-Mail-Nachrichten sind bereit und werden innerhalb einiger Zeit versendet. <br> Die Geschwindigkeit des Email-Versands hängt von Ihrem Mail-Dienst ab. Sie können an dem Dokument weiterarbeiten oder es schließen. Nachdem Email-Versand werden Sie per E-Mail, die Sie bei der Registriering wervendeten, benachrichtigt.",
"DE.Views.MailMergeSettings.textTo": "Zu", "DE.Views.MailMergeSettings.textTo": "Zu",
"DE.Views.MailMergeSettings.txtFirst": "Zum ersten Datensatz", "DE.Views.MailMergeSettings.txtFirst": "Zum ersten Datensatz",
"DE.Views.MailMergeSettings.txtFromToError": "Der Wert \"Von\" muss kleiner als \"Zu\" sein", "DE.Views.MailMergeSettings.txtFromToError": "Der Wert \"Von\" muss weniger als \"Bis\" sein",
"DE.Views.MailMergeSettings.txtLast": "Zum letzten Datensatz", "DE.Views.MailMergeSettings.txtLast": "Zum letzten Datensatz",
"DE.Views.MailMergeSettings.txtNext": "Zum nächsten Datensatz", "DE.Views.MailMergeSettings.txtNext": "Zum nächsten Datensatz",
"DE.Views.MailMergeSettings.txtPrev": "Zu den vorherigen Rekord", "DE.Views.MailMergeSettings.txtPrev": "Zu den vorherigen Rekord",
@ -1403,6 +1430,8 @@
"DE.Views.NoteSettingsDialog.textStart": "Starten", "DE.Views.NoteSettingsDialog.textStart": "Starten",
"DE.Views.NoteSettingsDialog.textTextBottom": "Unterhalb des Textes", "DE.Views.NoteSettingsDialog.textTextBottom": "Unterhalb des Textes",
"DE.Views.NoteSettingsDialog.textTitle": "Hinweise Einstellungen", "DE.Views.NoteSettingsDialog.textTitle": "Hinweise Einstellungen",
"DE.Views.NumberingValueDialog.cancelButtonText": "Abbrechen",
"DE.Views.NumberingValueDialog.okButtonText": "OK",
"DE.Views.PageMarginsDialog.cancelButtonText": "Abbrechen", "DE.Views.PageMarginsDialog.cancelButtonText": "Abbrechen",
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Achtung", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Achtung",
"DE.Views.PageMarginsDialog.okButtonText": "Ok", "DE.Views.PageMarginsDialog.okButtonText": "Ok",
@ -1769,6 +1798,7 @@
"DE.Views.Toolbar.mniEditHeader": "Kopfzeile bearbeiten", "DE.Views.Toolbar.mniEditHeader": "Kopfzeile bearbeiten",
"DE.Views.Toolbar.mniHiddenBorders": "Ausgeblendete Tabellenrahmen", "DE.Views.Toolbar.mniHiddenBorders": "Ausgeblendete Tabellenrahmen",
"DE.Views.Toolbar.mniHiddenChars": "Formatierungszeichen", "DE.Views.Toolbar.mniHiddenChars": "Formatierungszeichen",
"DE.Views.Toolbar.mniHighlightControls": "Einstellungen für Hervorhebungen",
"DE.Views.Toolbar.mniImageFromFile": "Bild aus Datei", "DE.Views.Toolbar.mniImageFromFile": "Bild aus Datei",
"DE.Views.Toolbar.mniImageFromUrl": "Bild aus URL", "DE.Views.Toolbar.mniImageFromUrl": "Bild aus URL",
"DE.Views.Toolbar.strMenuNoFill": "Keine Füllung", "DE.Views.Toolbar.strMenuNoFill": "Keine Füllung",
@ -1806,6 +1836,7 @@
"DE.Views.Toolbar.textMarginsWide": "Breit", "DE.Views.Toolbar.textMarginsWide": "Breit",
"DE.Views.Toolbar.textNewColor": "Benutzerdefinierte Farbe", "DE.Views.Toolbar.textNewColor": "Benutzerdefinierte Farbe",
"DE.Views.Toolbar.textNextPage": "Nächste Seite", "DE.Views.Toolbar.textNextPage": "Nächste Seite",
"DE.Views.Toolbar.textNoHighlight": "Ohne Hervorhebung",
"DE.Views.Toolbar.textNone": "Kein", "DE.Views.Toolbar.textNone": "Kein",
"DE.Views.Toolbar.textOddPage": "Ungerade Seite", "DE.Views.Toolbar.textOddPage": "Ungerade Seite",
"DE.Views.Toolbar.textPageMarginsCustom": "Benutzerdefinierte Seitenränder ", "DE.Views.Toolbar.textPageMarginsCustom": "Benutzerdefinierte Seitenränder ",

View file

@ -168,6 +168,7 @@
"Common.Views.History.textRestore": "Restore", "Common.Views.History.textRestore": "Restore",
"Common.Views.History.textShow": "Expand", "Common.Views.History.textShow": "Expand",
"Common.Views.History.textShowAll": "Show detailed changes", "Common.Views.History.textShowAll": "Show detailed changes",
"Common.Views.History.textVer": "ver.",
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Cancel", "Common.Views.ImageFromUrlDialog.cancelButtonText": "Cancel",
"Common.Views.ImageFromUrlDialog.okButtonText": "OK", "Common.Views.ImageFromUrlDialog.okButtonText": "OK",
"Common.Views.ImageFromUrlDialog.textUrl": "Paste an image URL:", "Common.Views.ImageFromUrlDialog.textUrl": "Paste an image URL:",
@ -271,6 +272,14 @@
"Common.Views.ReviewChangesDialog.txtReject": "Reject", "Common.Views.ReviewChangesDialog.txtReject": "Reject",
"Common.Views.ReviewChangesDialog.txtRejectAll": "Reject All Changes", "Common.Views.ReviewChangesDialog.txtRejectAll": "Reject All Changes",
"Common.Views.ReviewChangesDialog.txtRejectCurrent": "Reject Current Change", "Common.Views.ReviewChangesDialog.txtRejectCurrent": "Reject Current Change",
"Common.Views.ReviewPopover.textAdd": "Add",
"Common.Views.ReviewPopover.textAddReply": "Add Reply",
"Common.Views.ReviewPopover.textCancel": "Cancel",
"Common.Views.ReviewPopover.textClose": "Close",
"Common.Views.ReviewPopover.textEdit": "OK",
"Common.Views.ReviewPopover.textOpenAgain": "Open Again",
"Common.Views.ReviewPopover.textReply": "Reply",
"Common.Views.ReviewPopover.textResolve": "Resolve",
"Common.Views.SignDialog.cancelButtonText": "Cancel", "Common.Views.SignDialog.cancelButtonText": "Cancel",
"Common.Views.SignDialog.okButtonText": "Ok", "Common.Views.SignDialog.okButtonText": "Ok",
"Common.Views.SignDialog.textBold": "Bold", "Common.Views.SignDialog.textBold": "Bold",
@ -380,10 +389,13 @@
"DE.Controllers.Main.textAnonymous": "Anonymous", "DE.Controllers.Main.textAnonymous": "Anonymous",
"DE.Controllers.Main.textBuyNow": "Visit website", "DE.Controllers.Main.textBuyNow": "Visit website",
"DE.Controllers.Main.textChangesSaved": "All changes saved", "DE.Controllers.Main.textChangesSaved": "All changes saved",
"DE.Controllers.Main.textClose": "Close",
"DE.Controllers.Main.textCloseTip": "Click to close the tip", "DE.Controllers.Main.textCloseTip": "Click to close the tip",
"DE.Controllers.Main.textContactUs": "Contact sales", "DE.Controllers.Main.textContactUs": "Contact sales",
"DE.Controllers.Main.textLicencePaidFeature": "The feature you are trying to use is available for extended license.<br>If you need it, please contact Sales Department",
"DE.Controllers.Main.textLoadingDocument": "Loading document", "DE.Controllers.Main.textLoadingDocument": "Loading document",
"DE.Controllers.Main.textNoLicenseTitle": "ONLYOFFICE connection limitation", "DE.Controllers.Main.textNoLicenseTitle": "ONLYOFFICE connection limitation",
"DE.Controllers.Main.textPaidFeature": "Paid feature",
"DE.Controllers.Main.textShape": "Shape", "DE.Controllers.Main.textShape": "Shape",
"DE.Controllers.Main.textStrict": "Strict mode", "DE.Controllers.Main.textStrict": "Strict mode",
"DE.Controllers.Main.textTryUndoRedo": "The Undo/Redo functions are disabled for the Fast co-editing mode.<br>Click the 'Strict mode' button to switch to the Strict co-editing mode to edit the file without other users interference and send your changes only after you save them. You can switch between the co-editing modes using the editor Advanced settings.", "DE.Controllers.Main.textTryUndoRedo": "The Undo/Redo functions are disabled for the Fast co-editing mode.<br>Click the 'Strict mode' button to switch to the Strict co-editing mode to edit the file without other users interference and send your changes only after you save them. You can switch between the co-editing modes using the editor Advanced settings.",
@ -806,6 +818,7 @@
"DE.Views.BookmarksDialog.textName": "Name", "DE.Views.BookmarksDialog.textName": "Name",
"DE.Views.BookmarksDialog.textSort": "Sort by", "DE.Views.BookmarksDialog.textSort": "Sort by",
"DE.Views.BookmarksDialog.textTitle": "Bookmarks", "DE.Views.BookmarksDialog.textTitle": "Bookmarks",
"DE.Views.BookmarksDialog.txtInvalidName": "Bookmark name can only contain letters, digits and underscores, and should begin with the letter",
"DE.Views.ChartSettings.textAdvanced": "Show advanced settings", "DE.Views.ChartSettings.textAdvanced": "Show advanced settings",
"DE.Views.ChartSettings.textArea": "Area", "DE.Views.ChartSettings.textArea": "Area",
"DE.Views.ChartSettings.textBar": "Bar", "DE.Views.ChartSettings.textBar": "Bar",
@ -834,8 +847,15 @@
"DE.Views.ChartSettings.txtTopAndBottom": "Top and bottom", "DE.Views.ChartSettings.txtTopAndBottom": "Top and bottom",
"DE.Views.ControlSettingsDialog.cancelButtonText": "Cancel", "DE.Views.ControlSettingsDialog.cancelButtonText": "Cancel",
"DE.Views.ControlSettingsDialog.okButtonText": "Ok", "DE.Views.ControlSettingsDialog.okButtonText": "Ok",
"DE.Views.ControlSettingsDialog.textAppearance": "Appearance",
"DE.Views.ControlSettingsDialog.textApplyAll": "Apply to All",
"DE.Views.ControlSettingsDialog.textBox": "Bounding box",
"DE.Views.ControlSettingsDialog.textColor": "Color",
"DE.Views.ControlSettingsDialog.textLock": "Locking", "DE.Views.ControlSettingsDialog.textLock": "Locking",
"DE.Views.ControlSettingsDialog.textName": "Title", "DE.Views.ControlSettingsDialog.textName": "Title",
"DE.Views.ControlSettingsDialog.textNewColor": "Add New Custom Color",
"DE.Views.ControlSettingsDialog.textNone": "None",
"DE.Views.ControlSettingsDialog.textShowAs": "Show as",
"DE.Views.ControlSettingsDialog.textTag": "Tag", "DE.Views.ControlSettingsDialog.textTag": "Tag",
"DE.Views.ControlSettingsDialog.textTitle": "Content Control Settings", "DE.Views.ControlSettingsDialog.textTitle": "Content Control Settings",
"DE.Views.ControlSettingsDialog.txtLockDelete": "Content control cannot be deleted", "DE.Views.ControlSettingsDialog.txtLockDelete": "Content control cannot be deleted",
@ -855,6 +875,7 @@
"DE.Views.DocumentHolder.alignmentText": "Alignment", "DE.Views.DocumentHolder.alignmentText": "Alignment",
"DE.Views.DocumentHolder.belowText": "Below", "DE.Views.DocumentHolder.belowText": "Below",
"DE.Views.DocumentHolder.breakBeforeText": "Page break before", "DE.Views.DocumentHolder.breakBeforeText": "Page break before",
"DE.Views.DocumentHolder.bulletsText": "Bullets and Numbering",
"DE.Views.DocumentHolder.cellAlignText": "Cell Vertical Alignment", "DE.Views.DocumentHolder.cellAlignText": "Cell Vertical Alignment",
"DE.Views.DocumentHolder.cellText": "Cell", "DE.Views.DocumentHolder.cellText": "Cell",
"DE.Views.DocumentHolder.centerText": "Center", "DE.Views.DocumentHolder.centerText": "Center",
@ -919,6 +940,7 @@
"DE.Views.DocumentHolder.textArrangeForward": "Bring Forward", "DE.Views.DocumentHolder.textArrangeForward": "Bring Forward",
"DE.Views.DocumentHolder.textArrangeFront": "Bring to Foreground", "DE.Views.DocumentHolder.textArrangeFront": "Bring to Foreground",
"DE.Views.DocumentHolder.textContentControls": "Content control", "DE.Views.DocumentHolder.textContentControls": "Content control",
"DE.Views.DocumentHolder.textContinueNumbering": "Continue numbering",
"DE.Views.DocumentHolder.textCopy": "Copy", "DE.Views.DocumentHolder.textCopy": "Copy",
"DE.Views.DocumentHolder.textCut": "Cut", "DE.Views.DocumentHolder.textCut": "Cut",
"DE.Views.DocumentHolder.textDistributeCols": "Distribute columns", "DE.Views.DocumentHolder.textDistributeCols": "Distribute columns",
@ -927,14 +949,17 @@
"DE.Views.DocumentHolder.textEditWrapBoundary": "Edit Wrap Boundary", "DE.Views.DocumentHolder.textEditWrapBoundary": "Edit Wrap Boundary",
"DE.Views.DocumentHolder.textFromFile": "From File", "DE.Views.DocumentHolder.textFromFile": "From File",
"DE.Views.DocumentHolder.textFromUrl": "From URL", "DE.Views.DocumentHolder.textFromUrl": "From URL",
"DE.Views.DocumentHolder.textJoinList": "Join to previous list",
"DE.Views.DocumentHolder.textNest": "Nest table", "DE.Views.DocumentHolder.textNest": "Nest table",
"DE.Views.DocumentHolder.textNextPage": "Next Page", "DE.Views.DocumentHolder.textNextPage": "Next Page",
"DE.Views.DocumentHolder.textNumberingValue": "Numbering Value",
"DE.Views.DocumentHolder.textPaste": "Paste", "DE.Views.DocumentHolder.textPaste": "Paste",
"DE.Views.DocumentHolder.textPrevPage": "Previous Page", "DE.Views.DocumentHolder.textPrevPage": "Previous Page",
"DE.Views.DocumentHolder.textRefreshField": "Refresh field", "DE.Views.DocumentHolder.textRefreshField": "Refresh field",
"DE.Views.DocumentHolder.textRemove": "Remove", "DE.Views.DocumentHolder.textRemove": "Remove",
"DE.Views.DocumentHolder.textRemoveControl": "Remove content control", "DE.Views.DocumentHolder.textRemoveControl": "Remove content control",
"DE.Views.DocumentHolder.textReplace": "Replace image", "DE.Views.DocumentHolder.textReplace": "Replace image",
"DE.Views.DocumentHolder.textSeparateList": "Separate list",
"DE.Views.DocumentHolder.textSettings": "Settings", "DE.Views.DocumentHolder.textSettings": "Settings",
"DE.Views.DocumentHolder.textShapeAlignBottom": "Align Bottom", "DE.Views.DocumentHolder.textShapeAlignBottom": "Align Bottom",
"DE.Views.DocumentHolder.textShapeAlignCenter": "Align Center", "DE.Views.DocumentHolder.textShapeAlignCenter": "Align Center",
@ -942,6 +967,8 @@
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Align Middle", "DE.Views.DocumentHolder.textShapeAlignMiddle": "Align Middle",
"DE.Views.DocumentHolder.textShapeAlignRight": "Align Right", "DE.Views.DocumentHolder.textShapeAlignRight": "Align Right",
"DE.Views.DocumentHolder.textShapeAlignTop": "Align Top", "DE.Views.DocumentHolder.textShapeAlignTop": "Align Top",
"DE.Views.DocumentHolder.textStartNewList": "Start new list",
"DE.Views.DocumentHolder.textStartNumberingFrom": "Set numbering value",
"DE.Views.DocumentHolder.textTOC": "Table of contents", "DE.Views.DocumentHolder.textTOC": "Table of contents",
"DE.Views.DocumentHolder.textTOCSettings": "Table of contents settings", "DE.Views.DocumentHolder.textTOCSettings": "Table of contents settings",
"DE.Views.DocumentHolder.textUndo": "Undo", "DE.Views.DocumentHolder.textUndo": "Undo",
@ -1141,7 +1168,7 @@
"DE.Views.FileMenuPanels.Settings.strInputMode": "Turn on hieroglyphs", "DE.Views.FileMenuPanels.Settings.strInputMode": "Turn on hieroglyphs",
"DE.Views.FileMenuPanels.Settings.strLiveComment": "Turn on display of the comments", "DE.Views.FileMenuPanels.Settings.strLiveComment": "Turn on display of the comments",
"DE.Views.FileMenuPanels.Settings.strResolvedComment": "Turn on display of the resolved comments", "DE.Views.FileMenuPanels.Settings.strResolvedComment": "Turn on display of the resolved comments",
"DE.Views.FileMenuPanels.Settings.strShowChanges": "Realtime Collaboration Changes", "DE.Views.FileMenuPanels.Settings.strShowChanges": "Real-time Collaboration Changes",
"DE.Views.FileMenuPanels.Settings.strSpellCheckMode": "Turn on spell checking option", "DE.Views.FileMenuPanels.Settings.strSpellCheckMode": "Turn on spell checking option",
"DE.Views.FileMenuPanels.Settings.strStrict": "Strict", "DE.Views.FileMenuPanels.Settings.strStrict": "Strict",
"DE.Views.FileMenuPanels.Settings.strUnit": "Unit of Measurement", "DE.Views.FileMenuPanels.Settings.strUnit": "Unit of Measurement",
@ -1403,6 +1430,8 @@
"DE.Views.NoteSettingsDialog.textStart": "Start at", "DE.Views.NoteSettingsDialog.textStart": "Start at",
"DE.Views.NoteSettingsDialog.textTextBottom": "Below text", "DE.Views.NoteSettingsDialog.textTextBottom": "Below text",
"DE.Views.NoteSettingsDialog.textTitle": "Notes Settings", "DE.Views.NoteSettingsDialog.textTitle": "Notes Settings",
"DE.Views.NumberingValueDialog.cancelButtonText": "Cancel",
"DE.Views.NumberingValueDialog.okButtonText": "Ok",
"DE.Views.PageMarginsDialog.cancelButtonText": "Cancel", "DE.Views.PageMarginsDialog.cancelButtonText": "Cancel",
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Warning", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Warning",
"DE.Views.PageMarginsDialog.okButtonText": "Ok", "DE.Views.PageMarginsDialog.okButtonText": "Ok",
@ -1769,6 +1798,7 @@
"DE.Views.Toolbar.mniEditHeader": "Edit Header", "DE.Views.Toolbar.mniEditHeader": "Edit Header",
"DE.Views.Toolbar.mniHiddenBorders": "Hidden Table Borders", "DE.Views.Toolbar.mniHiddenBorders": "Hidden Table Borders",
"DE.Views.Toolbar.mniHiddenChars": "Nonprinting Characters", "DE.Views.Toolbar.mniHiddenChars": "Nonprinting Characters",
"DE.Views.Toolbar.mniHighlightControls": "Highlight settings",
"DE.Views.Toolbar.mniImageFromFile": "Image from File", "DE.Views.Toolbar.mniImageFromFile": "Image from File",
"DE.Views.Toolbar.mniImageFromUrl": "Image from URL", "DE.Views.Toolbar.mniImageFromUrl": "Image from URL",
"DE.Views.Toolbar.strMenuNoFill": "No Fill", "DE.Views.Toolbar.strMenuNoFill": "No Fill",
@ -1806,6 +1836,7 @@
"DE.Views.Toolbar.textMarginsWide": "Wide", "DE.Views.Toolbar.textMarginsWide": "Wide",
"DE.Views.Toolbar.textNewColor": "Add New Custom Color", "DE.Views.Toolbar.textNewColor": "Add New Custom Color",
"DE.Views.Toolbar.textNextPage": "Next Page", "DE.Views.Toolbar.textNextPage": "Next Page",
"DE.Views.Toolbar.textNoHighlight": "No highlighting",
"DE.Views.Toolbar.textNone": "None", "DE.Views.Toolbar.textNone": "None",
"DE.Views.Toolbar.textOddPage": "Odd Page", "DE.Views.Toolbar.textOddPage": "Odd Page",
"DE.Views.Toolbar.textPageMarginsCustom": "Custom margins", "DE.Views.Toolbar.textPageMarginsCustom": "Custom margins",

View file

@ -168,6 +168,7 @@
"Common.Views.History.textRestore": "Restaurar", "Common.Views.History.textRestore": "Restaurar",
"Common.Views.History.textShow": "Desplegar", "Common.Views.History.textShow": "Desplegar",
"Common.Views.History.textShowAll": "Mostrar cambios detallados", "Common.Views.History.textShowAll": "Mostrar cambios detallados",
"Common.Views.History.textVer": "ver.",
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Cancelar", "Common.Views.ImageFromUrlDialog.cancelButtonText": "Cancelar",
"Common.Views.ImageFromUrlDialog.okButtonText": "Aceptar", "Common.Views.ImageFromUrlDialog.okButtonText": "Aceptar",
"Common.Views.ImageFromUrlDialog.textUrl": "Pegar URL de imagen:", "Common.Views.ImageFromUrlDialog.textUrl": "Pegar URL de imagen:",
@ -192,6 +193,7 @@
"Common.Views.OpenDialog.txtIncorrectPwd": "La contraseña es incorrecta", "Common.Views.OpenDialog.txtIncorrectPwd": "La contraseña es incorrecta",
"Common.Views.OpenDialog.txtPassword": "Contraseña", "Common.Views.OpenDialog.txtPassword": "Contraseña",
"Common.Views.OpenDialog.txtPreview": "Vista previa", "Common.Views.OpenDialog.txtPreview": "Vista previa",
"Common.Views.OpenDialog.txtProtected": "Una vez que se ha introducido la contraseña y abierto el archivo, la contraseña actual al archivo se restablecerá",
"Common.Views.OpenDialog.txtTitle": "Elegir opciones de %1", "Common.Views.OpenDialog.txtTitle": "Elegir opciones de %1",
"Common.Views.OpenDialog.txtTitleProtected": "Archivo protegido", "Common.Views.OpenDialog.txtTitleProtected": "Archivo protegido",
"Common.Views.PasswordDialog.cancelButtonText": "Cancelar", "Common.Views.PasswordDialog.cancelButtonText": "Cancelar",
@ -216,7 +218,7 @@
"Common.Views.Protection.txtEncrypt": "Encriptar", "Common.Views.Protection.txtEncrypt": "Encriptar",
"Common.Views.Protection.txtInvisibleSignature": "Añadir firma digital", "Common.Views.Protection.txtInvisibleSignature": "Añadir firma digital",
"Common.Views.Protection.txtSignature": "Firma", "Common.Views.Protection.txtSignature": "Firma",
"Common.Views.Protection.txtSignatureLine": "Línea de la firma", "Common.Views.Protection.txtSignatureLine": "Añadir línea de firma",
"Common.Views.RenameDialog.cancelButtonText": "Cancelar", "Common.Views.RenameDialog.cancelButtonText": "Cancelar",
"Common.Views.RenameDialog.okButtonText": "Aceptar", "Common.Views.RenameDialog.okButtonText": "Aceptar",
"Common.Views.RenameDialog.textName": "Nombre de archivo", "Common.Views.RenameDialog.textName": "Nombre de archivo",
@ -270,6 +272,14 @@
"Common.Views.ReviewChangesDialog.txtReject": "Rechazar", "Common.Views.ReviewChangesDialog.txtReject": "Rechazar",
"Common.Views.ReviewChangesDialog.txtRejectAll": "Rechazar todos los cambjios", "Common.Views.ReviewChangesDialog.txtRejectAll": "Rechazar todos los cambjios",
"Common.Views.ReviewChangesDialog.txtRejectCurrent": "Rechazar Cambio Actual", "Common.Views.ReviewChangesDialog.txtRejectCurrent": "Rechazar Cambio Actual",
"Common.Views.ReviewPopover.textAdd": "Añadir",
"Common.Views.ReviewPopover.textAddReply": "Añadir respuesta",
"Common.Views.ReviewPopover.textCancel": "Cancelar",
"Common.Views.ReviewPopover.textClose": "Cerrar",
"Common.Views.ReviewPopover.textEdit": "OK",
"Common.Views.ReviewPopover.textOpenAgain": "Abrir de nuevo",
"Common.Views.ReviewPopover.textReply": "Responder",
"Common.Views.ReviewPopover.textResolve": "Resolver",
"Common.Views.SignDialog.cancelButtonText": "Cancelar", "Common.Views.SignDialog.cancelButtonText": "Cancelar",
"Common.Views.SignDialog.okButtonText": "Aceptar", "Common.Views.SignDialog.okButtonText": "Aceptar",
"Common.Views.SignDialog.textBold": "Negrilla", "Common.Views.SignDialog.textBold": "Negrilla",
@ -306,6 +316,7 @@
"DE.Controllers.LeftMenu.textReplaceSkipped": "Se ha realizado el reemplazo. {0} ocurrencias fueron saltadas.", "DE.Controllers.LeftMenu.textReplaceSkipped": "Se ha realizado el reemplazo. {0} ocurrencias fueron saltadas.",
"DE.Controllers.LeftMenu.textReplaceSuccess": "La búsqueda se ha realizado. Ocurrencias reemplazadas: {0}", "DE.Controllers.LeftMenu.textReplaceSuccess": "La búsqueda se ha realizado. Ocurrencias reemplazadas: {0}",
"DE.Controllers.LeftMenu.warnDownloadAs": "Si sigue guardando en este formato todas las características a excepción del texto se perderán.<br> ¿Está seguro de que quiere continuar?", "DE.Controllers.LeftMenu.warnDownloadAs": "Si sigue guardando en este formato todas las características a excepción del texto se perderán.<br> ¿Está seguro de que quiere continuar?",
"DE.Controllers.LeftMenu.warnDownloadAsRTF": "Si Usted sigue guardando en este formato, una parte de formateo puede perderse.<br>¿Está seguro de que desea continuar?",
"DE.Controllers.Main.applyChangesTextText": "Cargando cambios...", "DE.Controllers.Main.applyChangesTextText": "Cargando cambios...",
"DE.Controllers.Main.applyChangesTitleText": "Cargando cambios", "DE.Controllers.Main.applyChangesTitleText": "Cargando cambios",
"DE.Controllers.Main.convertationTimeoutText": "Tiempo de conversión está superado.", "DE.Controllers.Main.convertationTimeoutText": "Tiempo de conversión está superado.",
@ -322,6 +333,7 @@
"DE.Controllers.Main.errorCoAuthoringDisconnect": "Se ha perdido la conexión con servidor. El documento no puede ser editado ahora.", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Se ha perdido la conexión con servidor. El documento no puede ser editado ahora.",
"DE.Controllers.Main.errorConnectToServer": "No se pudo guardar el documento. Por favor, compruebe la configuración de conexión o póngase en contacto con el administrador.<br>Al hacer clic en el botón \"Aceptar\", se le pedirá que descargue el documento.<br> Encuentre más información acerca de la conexión Servidor de Documentos<a href=\"https://api.onlyoffice.com/editors/callback\" target=\"_blank\">aquí</a>", "DE.Controllers.Main.errorConnectToServer": "No se pudo guardar el documento. Por favor, compruebe la configuración de conexión o póngase en contacto con el administrador.<br>Al hacer clic en el botón \"Aceptar\", se le pedirá que descargue el documento.<br> Encuentre más información acerca de la conexión Servidor de Documentos<a href=\"https://api.onlyoffice.com/editors/callback\" target=\"_blank\">aquí</a>",
"DE.Controllers.Main.errorDatabaseConnection": "Error externo.<br>Error de conexión de base de datos. Por favor póngase en contacto con soporte si el error se mantiene.", "DE.Controllers.Main.errorDatabaseConnection": "Error externo.<br>Error de conexión de base de datos. Por favor póngase en contacto con soporte si el error se mantiene.",
"DE.Controllers.Main.errorDataEncrypted": "Se han recibido cambios cifrados, ellos no pueden ser descifrados.",
"DE.Controllers.Main.errorDataRange": "Rango de datos incorrecto.", "DE.Controllers.Main.errorDataRange": "Rango de datos incorrecto.",
"DE.Controllers.Main.errorDefaultMessage": "Código de error: %1", "DE.Controllers.Main.errorDefaultMessage": "Código de error: %1",
"DE.Controllers.Main.errorFilePassProtect": "El archivo está protegido por una contraseña y no puede ser abierto.", "DE.Controllers.Main.errorFilePassProtect": "El archivo está protegido por una contraseña y no puede ser abierto.",
@ -377,10 +389,13 @@
"DE.Controllers.Main.textAnonymous": "Anónimo", "DE.Controllers.Main.textAnonymous": "Anónimo",
"DE.Controllers.Main.textBuyNow": "Visitar sitio web", "DE.Controllers.Main.textBuyNow": "Visitar sitio web",
"DE.Controllers.Main.textChangesSaved": "Todos los cambios son guardados", "DE.Controllers.Main.textChangesSaved": "Todos los cambios son guardados",
"DE.Controllers.Main.textClose": "Cerrar",
"DE.Controllers.Main.textCloseTip": "Pulse para cerrar el consejo", "DE.Controllers.Main.textCloseTip": "Pulse para cerrar el consejo",
"DE.Controllers.Main.textContactUs": "Contactar con equipo de ventas", "DE.Controllers.Main.textContactUs": "Contactar con equipo de ventas",
"DE.Controllers.Main.textLicencePaidFeature": "Función que Usted intenta usar es disponible por la licencia avanzada.<br>Si la necesita, por favor, póngase en contacto con departamento de ventas",
"DE.Controllers.Main.textLoadingDocument": "Cargando documento", "DE.Controllers.Main.textLoadingDocument": "Cargando documento",
"DE.Controllers.Main.textNoLicenseTitle": "Conexión ONLYOFFICE", "DE.Controllers.Main.textNoLicenseTitle": "Conexión ONLYOFFICE",
"DE.Controllers.Main.textPaidFeature": "Función de pago",
"DE.Controllers.Main.textShape": "Forma", "DE.Controllers.Main.textShape": "Forma",
"DE.Controllers.Main.textStrict": "Modo estricto", "DE.Controllers.Main.textStrict": "Modo estricto",
"DE.Controllers.Main.textTryUndoRedo": "Las funciones Anular/Rehacer se desactivan para el modo co-edición rápido.<br>Haga Clic en el botón \"modo estricto\" para cambiar al modo de co-edición estricta para editar el archivo sin la interferencia de otros usuarios y enviar sus cambios sólo después de guardarlos. Se puede cambiar entre los modos de co-edición usando los ajustes avanzados de edición.", "DE.Controllers.Main.textTryUndoRedo": "Las funciones Anular/Rehacer se desactivan para el modo co-edición rápido.<br>Haga Clic en el botón \"modo estricto\" para cambiar al modo de co-edición estricta para editar el archivo sin la interferencia de otros usuarios y enviar sus cambios sólo después de guardarlos. Se puede cambiar entre los modos de co-edición usando los ajustes avanzados de edición.",
@ -444,9 +459,11 @@
"DE.Controllers.Main.uploadImageTitleText": "Subiendo imagen", "DE.Controllers.Main.uploadImageTitleText": "Subiendo imagen",
"DE.Controllers.Main.warnBrowserIE9": "Este aplicación tiene baja capacidad en IE9. Utilice IE10 o superior", "DE.Controllers.Main.warnBrowserIE9": "Este aplicación tiene baja capacidad en IE9. Utilice IE10 o superior",
"DE.Controllers.Main.warnBrowserZoom": "La configuración actual de zoom de su navegador no está soportada por completo. Por favor restablezca zoom predeterminado pulsando Ctrl+0.", "DE.Controllers.Main.warnBrowserZoom": "La configuración actual de zoom de su navegador no está soportada por completo. Por favor restablezca zoom predeterminado pulsando Ctrl+0.",
"DE.Controllers.Main.warnLicenseExceeded": "Se ha excedido el número permitido de las conexiones simultáneas al servidor de documentos, y el documento se abrirá para sólo lectura.<br>Por favor, contacte con su administrador para recibir más información.",
"DE.Controllers.Main.warnLicenseExp": "Su licencia ha expirado.<br>Por favor, actualice su licencia y después recargue la página.", "DE.Controllers.Main.warnLicenseExp": "Su licencia ha expirado.<br>Por favor, actualice su licencia y después recargue la página.",
"DE.Controllers.Main.warnNoLicense": "Esta versión tiene limitaciones respecto a la cantidad de conexiones concurrentes al servidor del documentos.<br>Si se requiere más, considere la posibilidad de actualizar la licencia actual o de adquirir la licencia comercial.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Se ha excedido el número permitido de los usuarios simultáneos, y el documento se abrirá para sólo lectura.<br>Por favor, contacte con su administrador para recibir más información.",
"DE.Controllers.Main.warnNoLicenseUsers": "Esta versión de", "DE.Controllers.Main.warnNoLicense": "Esta versión de los Editores de ONLYOFFICE tiene ciertas limitaciones para el número de conexiones simultáneas al servidor de documentos.<br>Si se requiere más, por favor, considere comprar una licencia comercial.",
"DE.Controllers.Main.warnNoLicenseUsers": "Esta versión de Editores de ONLYOFFICE tiene ciertas limitaciones para usuarios simultáneos.<br>Si se requiere más, por favor, considere comprar una licencia comercial.",
"DE.Controllers.Main.warnProcessRightsChange": "El derecho de edición del archivo es denegado", "DE.Controllers.Main.warnProcessRightsChange": "El derecho de edición del archivo es denegado",
"DE.Controllers.Navigation.txtBeginning": "Principio del documento", "DE.Controllers.Navigation.txtBeginning": "Principio del documento",
"DE.Controllers.Navigation.txtGotoBeginning": "Ir al principio de", "DE.Controllers.Navigation.txtGotoBeginning": "Ir al principio de",
@ -792,12 +809,16 @@
"DE.Controllers.Viewport.textFitPage": "Ajustar a la página", "DE.Controllers.Viewport.textFitPage": "Ajustar a la página",
"DE.Controllers.Viewport.textFitWidth": "Ajustar al ancho", "DE.Controllers.Viewport.textFitWidth": "Ajustar al ancho",
"DE.Views.BookmarksDialog.textAdd": "Añadir", "DE.Views.BookmarksDialog.textAdd": "Añadir",
"DE.Views.BookmarksDialog.textBookmarkName": "Nombre de marcador",
"DE.Views.BookmarksDialog.textClose": "Cerrar", "DE.Views.BookmarksDialog.textClose": "Cerrar",
"DE.Views.BookmarksDialog.textDelete": "Borrar", "DE.Views.BookmarksDialog.textDelete": "Borrar",
"DE.Views.BookmarksDialog.textGoto": "Pasar a",
"DE.Views.BookmarksDialog.textHidden": "Marcadores ocultados",
"DE.Views.BookmarksDialog.textLocation": "Ubicación", "DE.Views.BookmarksDialog.textLocation": "Ubicación",
"DE.Views.BookmarksDialog.textName": "Nombre", "DE.Views.BookmarksDialog.textName": "Nombre",
"DE.Views.BookmarksDialog.textSort": "Ordenar por", "DE.Views.BookmarksDialog.textSort": "Ordenar por",
"DE.Views.BookmarksDialog.textTitle": "Marcadores", "DE.Views.BookmarksDialog.textTitle": "Marcadores",
"DE.Views.BookmarksDialog.txtInvalidName": "Nombre de marcador sólo puede contener letras, dígitos y barras bajas y debe comenzar con la letra",
"DE.Views.ChartSettings.textAdvanced": "Mostrar ajustes avanzados", "DE.Views.ChartSettings.textAdvanced": "Mostrar ajustes avanzados",
"DE.Views.ChartSettings.textArea": "Área", "DE.Views.ChartSettings.textArea": "Área",
"DE.Views.ChartSettings.textBar": "Barra", "DE.Views.ChartSettings.textBar": "Barra",
@ -826,8 +847,15 @@
"DE.Views.ChartSettings.txtTopAndBottom": "Superior e inferior", "DE.Views.ChartSettings.txtTopAndBottom": "Superior e inferior",
"DE.Views.ControlSettingsDialog.cancelButtonText": "Cancelar", "DE.Views.ControlSettingsDialog.cancelButtonText": "Cancelar",
"DE.Views.ControlSettingsDialog.okButtonText": "Ok", "DE.Views.ControlSettingsDialog.okButtonText": "Ok",
"DE.Views.ControlSettingsDialog.textAppearance": "Aspecto",
"DE.Views.ControlSettingsDialog.textApplyAll": "Aplicar a todo",
"DE.Views.ControlSettingsDialog.textBox": "Cuadro delimitador",
"DE.Views.ControlSettingsDialog.textColor": "Color",
"DE.Views.ControlSettingsDialog.textLock": "Cerrando", "DE.Views.ControlSettingsDialog.textLock": "Cerrando",
"DE.Views.ControlSettingsDialog.textName": "Título", "DE.Views.ControlSettingsDialog.textName": "Título",
"DE.Views.ControlSettingsDialog.textNewColor": "Color personalizado",
"DE.Views.ControlSettingsDialog.textNone": "Ninguno",
"DE.Views.ControlSettingsDialog.textShowAs": "Mostrar como",
"DE.Views.ControlSettingsDialog.textTag": "Etiqueta", "DE.Views.ControlSettingsDialog.textTag": "Etiqueta",
"DE.Views.ControlSettingsDialog.textTitle": "Ajustes de control de contenido", "DE.Views.ControlSettingsDialog.textTitle": "Ajustes de control de contenido",
"DE.Views.ControlSettingsDialog.txtLockDelete": "El control de contenido no puede", "DE.Views.ControlSettingsDialog.txtLockDelete": "El control de contenido no puede",
@ -847,6 +875,7 @@
"DE.Views.DocumentHolder.alignmentText": "Alineación", "DE.Views.DocumentHolder.alignmentText": "Alineación",
"DE.Views.DocumentHolder.belowText": "Abajo", "DE.Views.DocumentHolder.belowText": "Abajo",
"DE.Views.DocumentHolder.breakBeforeText": "Salto de página antes", "DE.Views.DocumentHolder.breakBeforeText": "Salto de página antes",
"DE.Views.DocumentHolder.bulletsText": "Viñetas y numeración",
"DE.Views.DocumentHolder.cellAlignText": "Alineación vertical de celda", "DE.Views.DocumentHolder.cellAlignText": "Alineación vertical de celda",
"DE.Views.DocumentHolder.cellText": "Celda", "DE.Views.DocumentHolder.cellText": "Celda",
"DE.Views.DocumentHolder.centerText": "Al centro", "DE.Views.DocumentHolder.centerText": "Al centro",
@ -911,6 +940,7 @@
"DE.Views.DocumentHolder.textArrangeForward": "Traer adelante", "DE.Views.DocumentHolder.textArrangeForward": "Traer adelante",
"DE.Views.DocumentHolder.textArrangeFront": "Traer al primer plano", "DE.Views.DocumentHolder.textArrangeFront": "Traer al primer plano",
"DE.Views.DocumentHolder.textContentControls": "Control de contenido", "DE.Views.DocumentHolder.textContentControls": "Control de contenido",
"DE.Views.DocumentHolder.textContinueNumbering": "Continuar numeración",
"DE.Views.DocumentHolder.textCopy": "Copiar", "DE.Views.DocumentHolder.textCopy": "Copiar",
"DE.Views.DocumentHolder.textCut": "Cortar", "DE.Views.DocumentHolder.textCut": "Cortar",
"DE.Views.DocumentHolder.textDistributeCols": "Distribuir columnas", "DE.Views.DocumentHolder.textDistributeCols": "Distribuir columnas",
@ -919,14 +949,17 @@
"DE.Views.DocumentHolder.textEditWrapBoundary": "Editar límite de ajuste", "DE.Views.DocumentHolder.textEditWrapBoundary": "Editar límite de ajuste",
"DE.Views.DocumentHolder.textFromFile": "De archivo", "DE.Views.DocumentHolder.textFromFile": "De archivo",
"DE.Views.DocumentHolder.textFromUrl": "De URL", "DE.Views.DocumentHolder.textFromUrl": "De URL",
"DE.Views.DocumentHolder.textJoinList": "Juntar con lista anterior",
"DE.Views.DocumentHolder.textNest": "Tabla nido", "DE.Views.DocumentHolder.textNest": "Tabla nido",
"DE.Views.DocumentHolder.textNextPage": "Página siguiente", "DE.Views.DocumentHolder.textNextPage": "Página siguiente",
"DE.Views.DocumentHolder.textNumberingValue": "Valor de inicio",
"DE.Views.DocumentHolder.textPaste": "Pegar", "DE.Views.DocumentHolder.textPaste": "Pegar",
"DE.Views.DocumentHolder.textPrevPage": "Página anterior", "DE.Views.DocumentHolder.textPrevPage": "Página anterior",
"DE.Views.DocumentHolder.textRefreshField": "Actualize el campo", "DE.Views.DocumentHolder.textRefreshField": "Actualize el campo",
"DE.Views.DocumentHolder.textRemove": "Eliminar", "DE.Views.DocumentHolder.textRemove": "Eliminar",
"DE.Views.DocumentHolder.textRemoveControl": "Elimine el control de contenido", "DE.Views.DocumentHolder.textRemoveControl": "Elimine el control de contenido",
"DE.Views.DocumentHolder.textReplace": "Reemplazar imagen", "DE.Views.DocumentHolder.textReplace": "Reemplazar imagen",
"DE.Views.DocumentHolder.textSeparateList": "Separar lista",
"DE.Views.DocumentHolder.textSettings": "Ajustes", "DE.Views.DocumentHolder.textSettings": "Ajustes",
"DE.Views.DocumentHolder.textShapeAlignBottom": "Alinear en la parte inferior", "DE.Views.DocumentHolder.textShapeAlignBottom": "Alinear en la parte inferior",
"DE.Views.DocumentHolder.textShapeAlignCenter": "Alinear al centro", "DE.Views.DocumentHolder.textShapeAlignCenter": "Alinear al centro",
@ -934,6 +967,8 @@
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Alinear al medio", "DE.Views.DocumentHolder.textShapeAlignMiddle": "Alinear al medio",
"DE.Views.DocumentHolder.textShapeAlignRight": "Alinear a la derecha", "DE.Views.DocumentHolder.textShapeAlignRight": "Alinear a la derecha",
"DE.Views.DocumentHolder.textShapeAlignTop": "Alinear en la parte superior", "DE.Views.DocumentHolder.textShapeAlignTop": "Alinear en la parte superior",
"DE.Views.DocumentHolder.textStartNewList": "Iniciar nueva lista",
"DE.Views.DocumentHolder.textStartNumberingFrom": "Establecer valor de inicio",
"DE.Views.DocumentHolder.textTOC": "Tabla de contenidos", "DE.Views.DocumentHolder.textTOC": "Tabla de contenidos",
"DE.Views.DocumentHolder.textTOCSettings": "Ajustes de la tabla de contenidos", "DE.Views.DocumentHolder.textTOCSettings": "Ajustes de la tabla de contenidos",
"DE.Views.DocumentHolder.textUndo": "Deshacer", "DE.Views.DocumentHolder.textUndo": "Deshacer",
@ -1055,7 +1090,7 @@
"DE.Views.DropcapSettingsAdvanced.textLeft": "Izquierdo", "DE.Views.DropcapSettingsAdvanced.textLeft": "Izquierdo",
"DE.Views.DropcapSettingsAdvanced.textMargin": "Margen", "DE.Views.DropcapSettingsAdvanced.textMargin": "Margen",
"DE.Views.DropcapSettingsAdvanced.textMove": "Desplazar con texto", "DE.Views.DropcapSettingsAdvanced.textMove": "Desplazar con texto",
"DE.Views.DropcapSettingsAdvanced.textNewColor": "Añadir Color Personalizado Nuevo", "DE.Views.DropcapSettingsAdvanced.textNewColor": "Color personalizado",
"DE.Views.DropcapSettingsAdvanced.textNone": "Ningún", "DE.Views.DropcapSettingsAdvanced.textNone": "Ningún",
"DE.Views.DropcapSettingsAdvanced.textPage": "Página", "DE.Views.DropcapSettingsAdvanced.textPage": "Página",
"DE.Views.DropcapSettingsAdvanced.textParagraph": "Párrafo", "DE.Views.DropcapSettingsAdvanced.textParagraph": "Párrafo",
@ -1187,12 +1222,14 @@
"DE.Views.HyperlinkSettingsDialog.textDefault": "Fragmento de texto seleccionado", "DE.Views.HyperlinkSettingsDialog.textDefault": "Fragmento de texto seleccionado",
"DE.Views.HyperlinkSettingsDialog.textDisplay": "Mostrar", "DE.Views.HyperlinkSettingsDialog.textDisplay": "Mostrar",
"DE.Views.HyperlinkSettingsDialog.textExternal": "Enlace externo", "DE.Views.HyperlinkSettingsDialog.textExternal": "Enlace externo",
"DE.Views.HyperlinkSettingsDialog.textInternal": "Lugar en documento",
"DE.Views.HyperlinkSettingsDialog.textTitle": "Configuración de hiperenlace", "DE.Views.HyperlinkSettingsDialog.textTitle": "Configuración de hiperenlace",
"DE.Views.HyperlinkSettingsDialog.textTooltip": "Información en pantalla", "DE.Views.HyperlinkSettingsDialog.textTooltip": "Información en pantalla",
"DE.Views.HyperlinkSettingsDialog.textUrl": "Enlace a", "DE.Views.HyperlinkSettingsDialog.textUrl": "Enlace a",
"DE.Views.HyperlinkSettingsDialog.txtBeginning": "Principio del documento", "DE.Views.HyperlinkSettingsDialog.txtBeginning": "Principio del documento",
"DE.Views.HyperlinkSettingsDialog.txtBookmarks": "Marcadores", "DE.Views.HyperlinkSettingsDialog.txtBookmarks": "Marcadores",
"DE.Views.HyperlinkSettingsDialog.txtEmpty": "Este campo es obligatorio", "DE.Views.HyperlinkSettingsDialog.txtEmpty": "Este campo es obligatorio",
"DE.Views.HyperlinkSettingsDialog.txtHeadings": "Títulos",
"DE.Views.HyperlinkSettingsDialog.txtNotUrl": "Este campo debe ser URL en el formato \"http://www.example.com\"", "DE.Views.HyperlinkSettingsDialog.txtNotUrl": "Este campo debe ser URL en el formato \"http://www.example.com\"",
"DE.Views.ImageSettings.textAdvanced": "Mostrar ajustes avanzados", "DE.Views.ImageSettings.textAdvanced": "Mostrar ajustes avanzados",
"DE.Views.ImageSettings.textEdit": "Editar", "DE.Views.ImageSettings.textEdit": "Editar",
@ -1285,6 +1322,7 @@
"DE.Views.LeftMenu.tipAbout": "Acerca de programa", "DE.Views.LeftMenu.tipAbout": "Acerca de programa",
"DE.Views.LeftMenu.tipChat": "Chat", "DE.Views.LeftMenu.tipChat": "Chat",
"DE.Views.LeftMenu.tipComments": "Comentarios", "DE.Views.LeftMenu.tipComments": "Comentarios",
"DE.Views.LeftMenu.tipNavigation": "Navegación",
"DE.Views.LeftMenu.tipPlugins": "Plugins", "DE.Views.LeftMenu.tipPlugins": "Plugins",
"DE.Views.LeftMenu.tipSearch": "Búsqueda", "DE.Views.LeftMenu.tipSearch": "Búsqueda",
"DE.Views.LeftMenu.tipSupport": "Feedback y Soporte", "DE.Views.LeftMenu.tipSupport": "Feedback y Soporte",
@ -1305,6 +1343,7 @@
"DE.Views.Links.textGotoFootnote": "Ir a las notas a pie de página", "DE.Views.Links.textGotoFootnote": "Ir a las notas a pie de página",
"DE.Views.Links.textUpdateAll": "Actualize toda la tabla", "DE.Views.Links.textUpdateAll": "Actualize toda la tabla",
"DE.Views.Links.textUpdatePages": "Actualize solo los números de página", "DE.Views.Links.textUpdatePages": "Actualize solo los números de página",
"DE.Views.Links.tipBookmarks": "Crear marcador",
"DE.Views.Links.tipContents": "Introducir tabla de contenidos", "DE.Views.Links.tipContents": "Introducir tabla de contenidos",
"DE.Views.Links.tipContentsUpdate": "Actualize la tabla de contenidos", "DE.Views.Links.tipContentsUpdate": "Actualize la tabla de contenidos",
"DE.Views.Links.tipInsertHyperlink": "Añadir hiperenlace", "DE.Views.Links.tipInsertHyperlink": "Añadir hiperenlace",
@ -1391,6 +1430,8 @@
"DE.Views.NoteSettingsDialog.textStart": "Empezar con", "DE.Views.NoteSettingsDialog.textStart": "Empezar con",
"DE.Views.NoteSettingsDialog.textTextBottom": "Bajo el texto", "DE.Views.NoteSettingsDialog.textTextBottom": "Bajo el texto",
"DE.Views.NoteSettingsDialog.textTitle": "Ajustes de las notas a pie de página", "DE.Views.NoteSettingsDialog.textTitle": "Ajustes de las notas a pie de página",
"DE.Views.NumberingValueDialog.cancelButtonText": "Cancelar",
"DE.Views.NumberingValueDialog.okButtonText": "Ok",
"DE.Views.PageMarginsDialog.cancelButtonText": "Cancelar", "DE.Views.PageMarginsDialog.cancelButtonText": "Cancelar",
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Aviso", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Aviso",
"DE.Views.PageMarginsDialog.okButtonText": "Aceptar", "DE.Views.PageMarginsDialog.okButtonText": "Aceptar",
@ -1404,6 +1445,7 @@
"DE.Views.PageSizeDialog.cancelButtonText": "Cancelar", "DE.Views.PageSizeDialog.cancelButtonText": "Cancelar",
"DE.Views.PageSizeDialog.okButtonText": "Aceptar", "DE.Views.PageSizeDialog.okButtonText": "Aceptar",
"DE.Views.PageSizeDialog.textHeight": "Altura", "DE.Views.PageSizeDialog.textHeight": "Altura",
"DE.Views.PageSizeDialog.textPreset": "Preajuste",
"DE.Views.PageSizeDialog.textTitle": "Tamaño de página", "DE.Views.PageSizeDialog.textTitle": "Tamaño de página",
"DE.Views.PageSizeDialog.textWidth": "Ancho", "DE.Views.PageSizeDialog.textWidth": "Ancho",
"DE.Views.PageSizeDialog.txtCustom": "Personalizado", "DE.Views.PageSizeDialog.txtCustom": "Personalizado",
@ -1418,7 +1460,7 @@
"DE.Views.ParagraphSettings.textAuto": "Múltiple", "DE.Views.ParagraphSettings.textAuto": "Múltiple",
"DE.Views.ParagraphSettings.textBackColor": "Color de fondo", "DE.Views.ParagraphSettings.textBackColor": "Color de fondo",
"DE.Views.ParagraphSettings.textExact": "Exacto", "DE.Views.ParagraphSettings.textExact": "Exacto",
"DE.Views.ParagraphSettings.textNewColor": "Añadir Color Personalizado Nuevo", "DE.Views.ParagraphSettings.textNewColor": "Color personalizado",
"DE.Views.ParagraphSettings.txtAutoText": "Auto", "DE.Views.ParagraphSettings.txtAutoText": "Auto",
"DE.Views.ParagraphSettingsAdvanced.cancelButtonText": "Cancelar", "DE.Views.ParagraphSettingsAdvanced.cancelButtonText": "Cancelar",
"DE.Views.ParagraphSettingsAdvanced.noTabs": "Las pestañas especificadas aparecerán en este campo", "DE.Views.ParagraphSettingsAdvanced.noTabs": "Las pestañas especificadas aparecerán en este campo",
@ -1453,7 +1495,7 @@
"DE.Views.ParagraphSettingsAdvanced.textEffects": "Efectos", "DE.Views.ParagraphSettingsAdvanced.textEffects": "Efectos",
"DE.Views.ParagraphSettingsAdvanced.textLeader": "Director", "DE.Views.ParagraphSettingsAdvanced.textLeader": "Director",
"DE.Views.ParagraphSettingsAdvanced.textLeft": "Izquierdo", "DE.Views.ParagraphSettingsAdvanced.textLeft": "Izquierdo",
"DE.Views.ParagraphSettingsAdvanced.textNewColor": "Añadir Color Personalizado Nuevo", "DE.Views.ParagraphSettingsAdvanced.textNewColor": "Color personalizado",
"DE.Views.ParagraphSettingsAdvanced.textNone": "Ninguno", "DE.Views.ParagraphSettingsAdvanced.textNone": "Ninguno",
"DE.Views.ParagraphSettingsAdvanced.textPosition": "Posición", "DE.Views.ParagraphSettingsAdvanced.textPosition": "Posición",
"DE.Views.ParagraphSettingsAdvanced.textRemove": "Eliminar", "DE.Views.ParagraphSettingsAdvanced.textRemove": "Eliminar",
@ -1506,7 +1548,7 @@
"DE.Views.ShapeSettings.textGradientFill": "Relleno degradado", "DE.Views.ShapeSettings.textGradientFill": "Relleno degradado",
"DE.Views.ShapeSettings.textImageTexture": "Imagen o textura", "DE.Views.ShapeSettings.textImageTexture": "Imagen o textura",
"DE.Views.ShapeSettings.textLinear": "Lineal", "DE.Views.ShapeSettings.textLinear": "Lineal",
"DE.Views.ShapeSettings.textNewColor": "Añadir Color Personalizado Nuevo", "DE.Views.ShapeSettings.textNewColor": "Color personalizado",
"DE.Views.ShapeSettings.textNoFill": "Sin relleno", "DE.Views.ShapeSettings.textNoFill": "Sin relleno",
"DE.Views.ShapeSettings.textPatternFill": "Patrón", "DE.Views.ShapeSettings.textPatternFill": "Patrón",
"DE.Views.ShapeSettings.textRadial": "Radial", "DE.Views.ShapeSettings.textRadial": "Radial",
@ -1615,7 +1657,7 @@
"DE.Views.TableSettings.textHeader": "Encabezado", "DE.Views.TableSettings.textHeader": "Encabezado",
"DE.Views.TableSettings.textHeight": "Altura", "DE.Views.TableSettings.textHeight": "Altura",
"DE.Views.TableSettings.textLast": "Última", "DE.Views.TableSettings.textLast": "Última",
"DE.Views.TableSettings.textNewColor": "Añadir Color Personalizado Nuevo", "DE.Views.TableSettings.textNewColor": "Color personalizado",
"DE.Views.TableSettings.textOK": "Aceptar", "DE.Views.TableSettings.textOK": "Aceptar",
"DE.Views.TableSettings.textRows": "Filas", "DE.Views.TableSettings.textRows": "Filas",
"DE.Views.TableSettings.textSelectBorders": "Seleccione bordes que usted desea cambiar aplicando estilo seleccionado", "DE.Views.TableSettings.textSelectBorders": "Seleccione bordes que usted desea cambiar aplicando estilo seleccionado",
@ -1667,7 +1709,7 @@
"DE.Views.TableSettingsAdvanced.textMargins": "Márgenes de celda", "DE.Views.TableSettingsAdvanced.textMargins": "Márgenes de celda",
"DE.Views.TableSettingsAdvanced.textMeasure": "medir en", "DE.Views.TableSettingsAdvanced.textMeasure": "medir en",
"DE.Views.TableSettingsAdvanced.textMove": "Desplazar objeto con texto", "DE.Views.TableSettingsAdvanced.textMove": "Desplazar objeto con texto",
"DE.Views.TableSettingsAdvanced.textNewColor": "Añadir Color Personalizado Nuevo", "DE.Views.TableSettingsAdvanced.textNewColor": "Color personalizado",
"DE.Views.TableSettingsAdvanced.textOnlyCells": "Sólo para celdas seleccionadas", "DE.Views.TableSettingsAdvanced.textOnlyCells": "Sólo para celdas seleccionadas",
"DE.Views.TableSettingsAdvanced.textOptions": "Opciones", "DE.Views.TableSettingsAdvanced.textOptions": "Opciones",
"DE.Views.TableSettingsAdvanced.textOverlap": "Superposición", "DE.Views.TableSettingsAdvanced.textOverlap": "Superposición",
@ -1720,7 +1762,7 @@
"DE.Views.TextArtSettings.textGradient": "Gradiente", "DE.Views.TextArtSettings.textGradient": "Gradiente",
"DE.Views.TextArtSettings.textGradientFill": "Relleno degradado", "DE.Views.TextArtSettings.textGradientFill": "Relleno degradado",
"DE.Views.TextArtSettings.textLinear": "Lineal", "DE.Views.TextArtSettings.textLinear": "Lineal",
"DE.Views.TextArtSettings.textNewColor": "Añadir Color Personalizado Nuevo", "DE.Views.TextArtSettings.textNewColor": "Color personalizado",
"DE.Views.TextArtSettings.textNoFill": "Sin relleno", "DE.Views.TextArtSettings.textNoFill": "Sin relleno",
"DE.Views.TextArtSettings.textRadial": "Radial", "DE.Views.TextArtSettings.textRadial": "Radial",
"DE.Views.TextArtSettings.textSelectTexture": "Seleccionar", "DE.Views.TextArtSettings.textSelectTexture": "Seleccionar",
@ -1756,6 +1798,7 @@
"DE.Views.Toolbar.mniEditHeader": "Editar encabezado", "DE.Views.Toolbar.mniEditHeader": "Editar encabezado",
"DE.Views.Toolbar.mniHiddenBorders": "Bordes de tabla escogidos", "DE.Views.Toolbar.mniHiddenBorders": "Bordes de tabla escogidos",
"DE.Views.Toolbar.mniHiddenChars": "Caracteres no imprimibles", "DE.Views.Toolbar.mniHiddenChars": "Caracteres no imprimibles",
"DE.Views.Toolbar.mniHighlightControls": "Ajustes de resaltado",
"DE.Views.Toolbar.mniImageFromFile": "Imagen de archivo", "DE.Views.Toolbar.mniImageFromFile": "Imagen de archivo",
"DE.Views.Toolbar.mniImageFromUrl": "Imagen de URL", "DE.Views.Toolbar.mniImageFromUrl": "Imagen de URL",
"DE.Views.Toolbar.strMenuNoFill": "Sin relleno", "DE.Views.Toolbar.strMenuNoFill": "Sin relleno",
@ -1791,8 +1834,9 @@
"DE.Views.Toolbar.textMarginsNormal": "Normal", "DE.Views.Toolbar.textMarginsNormal": "Normal",
"DE.Views.Toolbar.textMarginsUsNormal": "US Normal", "DE.Views.Toolbar.textMarginsUsNormal": "US Normal",
"DE.Views.Toolbar.textMarginsWide": "Amplio", "DE.Views.Toolbar.textMarginsWide": "Amplio",
"DE.Views.Toolbar.textNewColor": "Añadir Color Personalizado Nuevo", "DE.Views.Toolbar.textNewColor": "Color personalizado",
"DE.Views.Toolbar.textNextPage": "Página siguiente", "DE.Views.Toolbar.textNextPage": "Página siguiente",
"DE.Views.Toolbar.textNoHighlight": "No resaltar",
"DE.Views.Toolbar.textNone": "Ningún", "DE.Views.Toolbar.textNone": "Ningún",
"DE.Views.Toolbar.textOddPage": "Página impar", "DE.Views.Toolbar.textOddPage": "Página impar",
"DE.Views.Toolbar.textPageMarginsCustom": "Márgenes personalizados", "DE.Views.Toolbar.textPageMarginsCustom": "Márgenes personalizados",

View file

@ -150,7 +150,7 @@
"Common.Views.Header.textSaveChanged": "Modifié", "Common.Views.Header.textSaveChanged": "Modifié",
"Common.Views.Header.textSaveEnd": "Toutes les modifications ont été enregistrées", "Common.Views.Header.textSaveEnd": "Toutes les modifications ont été enregistrées",
"Common.Views.Header.textSaveExpander": "Toutes les modifications ont été enregistrées", "Common.Views.Header.textSaveExpander": "Toutes les modifications ont été enregistrées",
"Common.Views.Header.textZoom": "Grossissement", "Common.Views.Header.textZoom": "Zoom",
"Common.Views.Header.tipAccessRights": "Gérer les droits d'accès au document", "Common.Views.Header.tipAccessRights": "Gérer les droits d'accès au document",
"Common.Views.Header.tipDownload": "Télécharger le fichier", "Common.Views.Header.tipDownload": "Télécharger le fichier",
"Common.Views.Header.tipGoEdit": "Modifier le fichier courant", "Common.Views.Header.tipGoEdit": "Modifier le fichier courant",
@ -168,6 +168,7 @@
"Common.Views.History.textRestore": "Restaurer", "Common.Views.History.textRestore": "Restaurer",
"Common.Views.History.textShow": "Développer", "Common.Views.History.textShow": "Développer",
"Common.Views.History.textShowAll": "Afficher les modifications détaillées", "Common.Views.History.textShowAll": "Afficher les modifications détaillées",
"Common.Views.History.textVer": "ver. ",
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Annuler", "Common.Views.ImageFromUrlDialog.cancelButtonText": "Annuler",
"Common.Views.ImageFromUrlDialog.okButtonText": "OK", "Common.Views.ImageFromUrlDialog.okButtonText": "OK",
"Common.Views.ImageFromUrlDialog.textUrl": "Coller URL d'image", "Common.Views.ImageFromUrlDialog.textUrl": "Coller URL d'image",
@ -192,6 +193,7 @@
"Common.Views.OpenDialog.txtIncorrectPwd": "Le mot de passe est incorrect.", "Common.Views.OpenDialog.txtIncorrectPwd": "Le mot de passe est incorrect.",
"Common.Views.OpenDialog.txtPassword": "Mot de passe", "Common.Views.OpenDialog.txtPassword": "Mot de passe",
"Common.Views.OpenDialog.txtPreview": "Aperçu", "Common.Views.OpenDialog.txtPreview": "Aperçu",
"Common.Views.OpenDialog.txtProtected": "Une fois le mot de passe saisi et le fichier ouvert, le mot de passe actuel de fichier sera réinitialisé.",
"Common.Views.OpenDialog.txtTitle": "Choisir %1 des options ", "Common.Views.OpenDialog.txtTitle": "Choisir %1 des options ",
"Common.Views.OpenDialog.txtTitleProtected": "Fichier protégé", "Common.Views.OpenDialog.txtTitleProtected": "Fichier protégé",
"Common.Views.PasswordDialog.cancelButtonText": "Annuler", "Common.Views.PasswordDialog.cancelButtonText": "Annuler",
@ -216,7 +218,7 @@
"Common.Views.Protection.txtEncrypt": "Chiffrer", "Common.Views.Protection.txtEncrypt": "Chiffrer",
"Common.Views.Protection.txtInvisibleSignature": "Ajouter une signature électronique", "Common.Views.Protection.txtInvisibleSignature": "Ajouter une signature électronique",
"Common.Views.Protection.txtSignature": "Signature", "Common.Views.Protection.txtSignature": "Signature",
"Common.Views.Protection.txtSignatureLine": "Zone de signature", "Common.Views.Protection.txtSignatureLine": "Ajouter la zone de signature",
"Common.Views.RenameDialog.cancelButtonText": "Annuler", "Common.Views.RenameDialog.cancelButtonText": "Annuler",
"Common.Views.RenameDialog.okButtonText": "Ok", "Common.Views.RenameDialog.okButtonText": "Ok",
"Common.Views.RenameDialog.textName": "Nom de fichier", "Common.Views.RenameDialog.textName": "Nom de fichier",
@ -270,6 +272,14 @@
"Common.Views.ReviewChangesDialog.txtReject": "Rejeter", "Common.Views.ReviewChangesDialog.txtReject": "Rejeter",
"Common.Views.ReviewChangesDialog.txtRejectAll": "Rejeter toutes les modifications", "Common.Views.ReviewChangesDialog.txtRejectAll": "Rejeter toutes les modifications",
"Common.Views.ReviewChangesDialog.txtRejectCurrent": "Rejeter cette modification", "Common.Views.ReviewChangesDialog.txtRejectCurrent": "Rejeter cette modification",
"Common.Views.ReviewPopover.textAdd": "Ajouter",
"Common.Views.ReviewPopover.textAddReply": "Ajouter Réponse",
"Common.Views.ReviewPopover.textCancel": "Annuler",
"Common.Views.ReviewPopover.textClose": "Fermer",
"Common.Views.ReviewPopover.textEdit": "OK",
"Common.Views.ReviewPopover.textOpenAgain": "Ouvrir à nouveau",
"Common.Views.ReviewPopover.textReply": "Répondre",
"Common.Views.ReviewPopover.textResolve": "Résoudre",
"Common.Views.SignDialog.cancelButtonText": "Annuler", "Common.Views.SignDialog.cancelButtonText": "Annuler",
"Common.Views.SignDialog.okButtonText": "OK", "Common.Views.SignDialog.okButtonText": "OK",
"Common.Views.SignDialog.textBold": "Gras", "Common.Views.SignDialog.textBold": "Gras",
@ -306,6 +316,7 @@
"DE.Controllers.LeftMenu.textReplaceSkipped": "Le remplacement est fait. {0} occurrences ont été ignorées.", "DE.Controllers.LeftMenu.textReplaceSkipped": "Le remplacement est fait. {0} occurrences ont été ignorées.",
"DE.Controllers.LeftMenu.textReplaceSuccess": "La recherche est effectuée. Occurrences ont été remplacées:{0}", "DE.Controllers.LeftMenu.textReplaceSuccess": "La recherche est effectuée. Occurrences ont été remplacées:{0}",
"DE.Controllers.LeftMenu.warnDownloadAs": "Si vous continuez à enregistrer dans ce format toutes les fonctions sauf le texte seront perdues.<br>Êtes-vous sûr de vouloir continuer ?", "DE.Controllers.LeftMenu.warnDownloadAs": "Si vous continuez à enregistrer dans ce format toutes les fonctions sauf le texte seront perdues.<br>Êtes-vous sûr de vouloir continuer ?",
"DE.Controllers.LeftMenu.warnDownloadAsRTF": "Si vous continuer à sauvegarder dans ce format une partie de la mise en forme peut être supprimée <br>Êtes-vous sûr de vouloir continuer?",
"DE.Controllers.Main.applyChangesTextText": "Chargement des changemets...", "DE.Controllers.Main.applyChangesTextText": "Chargement des changemets...",
"DE.Controllers.Main.applyChangesTitleText": "Chargement des changemets", "DE.Controllers.Main.applyChangesTitleText": "Chargement des changemets",
"DE.Controllers.Main.convertationTimeoutText": "Délai de conversion expiré.", "DE.Controllers.Main.convertationTimeoutText": "Délai de conversion expiré.",
@ -322,6 +333,7 @@
"DE.Controllers.Main.errorCoAuthoringDisconnect": "Connexion au serveur perdue. Le document ne peut être modifié en ce moment.", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Connexion au serveur perdue. Le document ne peut être modifié en ce moment.",
"DE.Controllers.Main.errorConnectToServer": "Le document n'a pas pu être enregistré. Veuillez vérifier les paramètres de connexion ou contactez votre administrateur.<br>Lorsque vous cliquez sur le bouton 'OK', vous serez invité à télécharger le document.<br><br>Trouvez plus d'informations sur la connexion de Document Server<a href=\"https://api.onlyoffice.com/editors/callback\" target=\"_blank\">ici</a>", "DE.Controllers.Main.errorConnectToServer": "Le document n'a pas pu être enregistré. Veuillez vérifier les paramètres de connexion ou contactez votre administrateur.<br>Lorsque vous cliquez sur le bouton 'OK', vous serez invité à télécharger le document.<br><br>Trouvez plus d'informations sur la connexion de Document Server<a href=\"https://api.onlyoffice.com/editors/callback\" target=\"_blank\">ici</a>",
"DE.Controllers.Main.errorDatabaseConnection": "Erreur externe.<br>Erreur de connexion à la base de données. Si l'erreur persiste veillez contactez l'assistance technique.", "DE.Controllers.Main.errorDatabaseConnection": "Erreur externe.<br>Erreur de connexion à la base de données. Si l'erreur persiste veillez contactez l'assistance technique.",
"DE.Controllers.Main.errorDataEncrypted": "Les modifications chiffrées ont été reçues, elle ne peuvent pas être déchiffrées.",
"DE.Controllers.Main.errorDataRange": "Plage de données incorrecte.", "DE.Controllers.Main.errorDataRange": "Plage de données incorrecte.",
"DE.Controllers.Main.errorDefaultMessage": "Code d'erreur: %1", "DE.Controllers.Main.errorDefaultMessage": "Code d'erreur: %1",
"DE.Controllers.Main.errorFilePassProtect": "Le fichier est protégé par le mot de passe et ne peut être ouvert.", "DE.Controllers.Main.errorFilePassProtect": "Le fichier est protégé par le mot de passe et ne peut être ouvert.",
@ -377,10 +389,13 @@
"DE.Controllers.Main.textAnonymous": "Anonyme", "DE.Controllers.Main.textAnonymous": "Anonyme",
"DE.Controllers.Main.textBuyNow": "Visiter le site web", "DE.Controllers.Main.textBuyNow": "Visiter le site web",
"DE.Controllers.Main.textChangesSaved": "Toutes les modifications ont été enregistrées", "DE.Controllers.Main.textChangesSaved": "Toutes les modifications ont été enregistrées",
"DE.Controllers.Main.textClose": "Fermer",
"DE.Controllers.Main.textCloseTip": "Cliquez pour fermer le conseil", "DE.Controllers.Main.textCloseTip": "Cliquez pour fermer le conseil",
"DE.Controllers.Main.textContactUs": "Contacter l'équipe de ventes", "DE.Controllers.Main.textContactUs": "Contacter l'équipe de ventes",
"DE.Controllers.Main.textLicencePaidFeature": "La fonction que vouz essayez d'utiliser est disponible pour la Licence Etendue.<br>Si vous en avez besoin, veuillez contacter Sales Department ",
"DE.Controllers.Main.textLoadingDocument": "Chargement du document", "DE.Controllers.Main.textLoadingDocument": "Chargement du document",
"DE.Controllers.Main.textNoLicenseTitle": "Limitation de connexion ONLYOFFICE", "DE.Controllers.Main.textNoLicenseTitle": "Limitation de connexion ONLYOFFICE",
"DE.Controllers.Main.textPaidFeature": "Fonction payée",
"DE.Controllers.Main.textShape": "Forme", "DE.Controllers.Main.textShape": "Forme",
"DE.Controllers.Main.textStrict": "Mode strict", "DE.Controllers.Main.textStrict": "Mode strict",
"DE.Controllers.Main.textTryUndoRedo": "Les fonctions annuler/rétablir sont désactivées pour le mode de co-édition rapide.<br>Cliquez sur le bouton \"Mode strict\" pour passer au mode de la co-édition stricte pour modifier le fichier sans interférence d'autres utilisateurs et envoyer vos modifications seulement après que vous les enregistrez. Vous pouvez basculer entre les modes de co-édition à l'aide de paramètres avancés d'éditeur.", "DE.Controllers.Main.textTryUndoRedo": "Les fonctions annuler/rétablir sont désactivées pour le mode de co-édition rapide.<br>Cliquez sur le bouton \"Mode strict\" pour passer au mode de la co-édition stricte pour modifier le fichier sans interférence d'autres utilisateurs et envoyer vos modifications seulement après que vous les enregistrez. Vous pouvez basculer entre les modes de co-édition à l'aide de paramètres avancés d'éditeur.",
@ -444,9 +459,11 @@
"DE.Controllers.Main.uploadImageTitleText": "Chargement d'une image", "DE.Controllers.Main.uploadImageTitleText": "Chargement d'une image",
"DE.Controllers.Main.warnBrowserIE9": "L'application est peu compatible avec IE9. Utilisez IE10 ou version plus récente", "DE.Controllers.Main.warnBrowserIE9": "L'application est peu compatible avec IE9. Utilisez IE10 ou version plus récente",
"DE.Controllers.Main.warnBrowserZoom": "Le paramètre actuel de zoom de votre navigateur n'est pas accepté. Veuillez rétablir le niveau de zoom par défaut en appuyant sur Ctrl+0.", "DE.Controllers.Main.warnBrowserZoom": "Le paramètre actuel de zoom de votre navigateur n'est pas accepté. Veuillez rétablir le niveau de zoom par défaut en appuyant sur Ctrl+0.",
"DE.Controllers.Main.warnLicenseExceeded": "Le nombre de connexions simultanées a été dépassée et le document sera ouvert en mode lecture seule.<br>Veuillez contacter votre administrateur pour plus d'informations.",
"DE.Controllers.Main.warnLicenseExp": "Votre licence a expiré.<br>Veuillez mettre à jour votre licence et actualisez la page.", "DE.Controllers.Main.warnLicenseExp": "Votre licence a expiré.<br>Veuillez mettre à jour votre licence et actualisez la page.",
"DE.Controllers.Main.warnNoLicense": "Cette version de ONLYOFFICE Editors a certaines limitations pour les connexions simultanées au serveur de documents.<br>Si vous avez besoin de plus, pensez à mettre à jour votre licence actuelle ou à acheter une licence commerciale.", "DE.Controllers.Main.warnLicenseUsersExceeded": "Le nombre d'utilisateurs simultanés a été dépassé et le document sera ouvert en mode lecture seule.<br>Veuillez contacter votre administrateur pour plus d'informations.",
"DE.Controllers.Main.warnNoLicenseUsers": "Cette version de ONLYOFFICE Editors a certaines limitations pour les utilisateurs simultanés.<br>Si vous avez besoin de plus, pensez à mettre à jour votre licence actuelle ou à acheter une licence commerciale.", "DE.Controllers.Main.warnNoLicense": "Cette version de ONLYOFFICE Editors a certaines limitations pour les connexions simultanées au serveur de documents.<br>Si vous avez besoin de plus, considérez la possibilité de mettre à jour votre licence actuelle ou d'acheter une licence commerciale.",
"DE.Controllers.Main.warnNoLicenseUsers": "Cette version de ONLYOFFICE Editors a certaines limitations pour les utilisateurs simultanés.<br>Si vous avez besoin de plus, considérez la possibilité de mettre à jour votre licence actuelle ou d'acheter une licence commerciale.",
"DE.Controllers.Main.warnProcessRightsChange": "Le droit d'édition du fichier vous a été refusé.", "DE.Controllers.Main.warnProcessRightsChange": "Le droit d'édition du fichier vous a été refusé.",
"DE.Controllers.Navigation.txtBeginning": "Début du document", "DE.Controllers.Navigation.txtBeginning": "Début du document",
"DE.Controllers.Navigation.txtGotoBeginning": "Aller au début du document", "DE.Controllers.Navigation.txtGotoBeginning": "Aller au début du document",
@ -792,12 +809,16 @@
"DE.Controllers.Viewport.textFitPage": "Ajuster à la page", "DE.Controllers.Viewport.textFitPage": "Ajuster à la page",
"DE.Controllers.Viewport.textFitWidth": "Ajuster à la largeur", "DE.Controllers.Viewport.textFitWidth": "Ajuster à la largeur",
"DE.Views.BookmarksDialog.textAdd": "Ajouter", "DE.Views.BookmarksDialog.textAdd": "Ajouter",
"DE.Views.BookmarksDialog.textBookmarkName": "Nom du signet",
"DE.Views.BookmarksDialog.textClose": "Fermer", "DE.Views.BookmarksDialog.textClose": "Fermer",
"DE.Views.BookmarksDialog.textDelete": "Supprimer", "DE.Views.BookmarksDialog.textDelete": "Supprimer",
"DE.Views.BookmarksDialog.textGoto": "Aller à",
"DE.Views.BookmarksDialog.textHidden": "Signets cachés",
"DE.Views.BookmarksDialog.textLocation": "Emplacement", "DE.Views.BookmarksDialog.textLocation": "Emplacement",
"DE.Views.BookmarksDialog.textName": "Nom", "DE.Views.BookmarksDialog.textName": "Nom",
"DE.Views.BookmarksDialog.textSort": "Trier par", "DE.Views.BookmarksDialog.textSort": "Trier par",
"DE.Views.BookmarksDialog.textTitle": "Signets", "DE.Views.BookmarksDialog.textTitle": "Signets",
"DE.Views.BookmarksDialog.txtInvalidName": "Nom du signet ne peut pas contenir que des lettres, des chiffres et des barres de soulignement et doit commencer avec une lettre",
"DE.Views.ChartSettings.textAdvanced": "Afficher les paramètres avancés", "DE.Views.ChartSettings.textAdvanced": "Afficher les paramètres avancés",
"DE.Views.ChartSettings.textArea": "En aires", "DE.Views.ChartSettings.textArea": "En aires",
"DE.Views.ChartSettings.textBar": "En barre", "DE.Views.ChartSettings.textBar": "En barre",
@ -826,8 +847,15 @@
"DE.Views.ChartSettings.txtTopAndBottom": "Haut et bas", "DE.Views.ChartSettings.txtTopAndBottom": "Haut et bas",
"DE.Views.ControlSettingsDialog.cancelButtonText": "Annuler", "DE.Views.ControlSettingsDialog.cancelButtonText": "Annuler",
"DE.Views.ControlSettingsDialog.okButtonText": "Ok", "DE.Views.ControlSettingsDialog.okButtonText": "Ok",
"DE.Views.ControlSettingsDialog.textAppearance": "Apparence",
"DE.Views.ControlSettingsDialog.textApplyAll": "Appliquer à tous",
"DE.Views.ControlSettingsDialog.textBox": "Boîte d'encombrement",
"DE.Views.ControlSettingsDialog.textColor": "Couleur",
"DE.Views.ControlSettingsDialog.textLock": "Verrouillage ", "DE.Views.ControlSettingsDialog.textLock": "Verrouillage ",
"DE.Views.ControlSettingsDialog.textName": "Titre", "DE.Views.ControlSettingsDialog.textName": "Titre",
"DE.Views.ControlSettingsDialog.textNewColor": "Couleur personnalisée",
"DE.Views.ControlSettingsDialog.textNone": "Aucun",
"DE.Views.ControlSettingsDialog.textShowAs": "Afficher comme ",
"DE.Views.ControlSettingsDialog.textTag": "Tag", "DE.Views.ControlSettingsDialog.textTag": "Tag",
"DE.Views.ControlSettingsDialog.textTitle": "Paramètres de contrôle du contenu", "DE.Views.ControlSettingsDialog.textTitle": "Paramètres de contrôle du contenu",
"DE.Views.ControlSettingsDialog.txtLockDelete": "Le contrôle du contenu ne peut pas être supprimé", "DE.Views.ControlSettingsDialog.txtLockDelete": "Le contrôle du contenu ne peut pas être supprimé",
@ -847,6 +875,7 @@
"DE.Views.DocumentHolder.alignmentText": "Alignement", "DE.Views.DocumentHolder.alignmentText": "Alignement",
"DE.Views.DocumentHolder.belowText": "En dessous", "DE.Views.DocumentHolder.belowText": "En dessous",
"DE.Views.DocumentHolder.breakBeforeText": "Saut de page avant", "DE.Views.DocumentHolder.breakBeforeText": "Saut de page avant",
"DE.Views.DocumentHolder.bulletsText": "Puces et Numérotation",
"DE.Views.DocumentHolder.cellAlignText": "Alignement vertical de la cellule", "DE.Views.DocumentHolder.cellAlignText": "Alignement vertical de la cellule",
"DE.Views.DocumentHolder.cellText": "Cellule", "DE.Views.DocumentHolder.cellText": "Cellule",
"DE.Views.DocumentHolder.centerText": "Centre", "DE.Views.DocumentHolder.centerText": "Centre",
@ -911,6 +940,7 @@
"DE.Views.DocumentHolder.textArrangeForward": "Avancer", "DE.Views.DocumentHolder.textArrangeForward": "Avancer",
"DE.Views.DocumentHolder.textArrangeFront": "Mettre au premier plan", "DE.Views.DocumentHolder.textArrangeFront": "Mettre au premier plan",
"DE.Views.DocumentHolder.textContentControls": "Contrôle du contenu", "DE.Views.DocumentHolder.textContentControls": "Contrôle du contenu",
"DE.Views.DocumentHolder.textContinueNumbering": "Continuer la numérotation",
"DE.Views.DocumentHolder.textCopy": "Copier", "DE.Views.DocumentHolder.textCopy": "Copier",
"DE.Views.DocumentHolder.textCut": "Couper", "DE.Views.DocumentHolder.textCut": "Couper",
"DE.Views.DocumentHolder.textDistributeCols": "Distribuer les colonnes", "DE.Views.DocumentHolder.textDistributeCols": "Distribuer les colonnes",
@ -919,14 +949,17 @@
"DE.Views.DocumentHolder.textEditWrapBoundary": "Modifier les limites du renvoi à la ligne", "DE.Views.DocumentHolder.textEditWrapBoundary": "Modifier les limites du renvoi à la ligne",
"DE.Views.DocumentHolder.textFromFile": "D'un fichier", "DE.Views.DocumentHolder.textFromFile": "D'un fichier",
"DE.Views.DocumentHolder.textFromUrl": "D'une URL", "DE.Views.DocumentHolder.textFromUrl": "D'une URL",
"DE.Views.DocumentHolder.textJoinList": "Rejoindre la liste précédente. ",
"DE.Views.DocumentHolder.textNest": "Tableau imbriqué", "DE.Views.DocumentHolder.textNest": "Tableau imbriqué",
"DE.Views.DocumentHolder.textNextPage": "Page suivante", "DE.Views.DocumentHolder.textNextPage": "Page suivante",
"DE.Views.DocumentHolder.textNumberingValue": "Valeur initiale",
"DE.Views.DocumentHolder.textPaste": "Coller", "DE.Views.DocumentHolder.textPaste": "Coller",
"DE.Views.DocumentHolder.textPrevPage": "Page précédente", "DE.Views.DocumentHolder.textPrevPage": "Page précédente",
"DE.Views.DocumentHolder.textRefreshField": "Actualiser le champ", "DE.Views.DocumentHolder.textRefreshField": "Actualiser le champ",
"DE.Views.DocumentHolder.textRemove": "Supprimer", "DE.Views.DocumentHolder.textRemove": "Supprimer",
"DE.Views.DocumentHolder.textRemoveControl": "Supprimer le contrôle du contenu", "DE.Views.DocumentHolder.textRemoveControl": "Supprimer le contrôle du contenu",
"DE.Views.DocumentHolder.textReplace": "Remplacer limage", "DE.Views.DocumentHolder.textReplace": "Remplacer limage",
"DE.Views.DocumentHolder.textSeparateList": "Liste séparée",
"DE.Views.DocumentHolder.textSettings": "Paramètres", "DE.Views.DocumentHolder.textSettings": "Paramètres",
"DE.Views.DocumentHolder.textShapeAlignBottom": "Aligner en bas", "DE.Views.DocumentHolder.textShapeAlignBottom": "Aligner en bas",
"DE.Views.DocumentHolder.textShapeAlignCenter": "Aligner au centre", "DE.Views.DocumentHolder.textShapeAlignCenter": "Aligner au centre",
@ -934,6 +967,8 @@
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Aligner au milieu", "DE.Views.DocumentHolder.textShapeAlignMiddle": "Aligner au milieu",
"DE.Views.DocumentHolder.textShapeAlignRight": "Aligner à droite", "DE.Views.DocumentHolder.textShapeAlignRight": "Aligner à droite",
"DE.Views.DocumentHolder.textShapeAlignTop": "Aligner en haut", "DE.Views.DocumentHolder.textShapeAlignTop": "Aligner en haut",
"DE.Views.DocumentHolder.textStartNewList": "Commencer une autre liste",
"DE.Views.DocumentHolder.textStartNumberingFrom": "Fixer la valeur initiale",
"DE.Views.DocumentHolder.textTOC": "Table des matières", "DE.Views.DocumentHolder.textTOC": "Table des matières",
"DE.Views.DocumentHolder.textTOCSettings": "Paramètres de la table des matières", "DE.Views.DocumentHolder.textTOCSettings": "Paramètres de la table des matières",
"DE.Views.DocumentHolder.textUndo": "Annuler", "DE.Views.DocumentHolder.textUndo": "Annuler",
@ -1006,7 +1041,7 @@
"DE.Views.DocumentHolder.txtRemLimit": "Supprimer la limite", "DE.Views.DocumentHolder.txtRemLimit": "Supprimer la limite",
"DE.Views.DocumentHolder.txtRemoveAccentChar": "Supprimer le caractère d'accent", "DE.Views.DocumentHolder.txtRemoveAccentChar": "Supprimer le caractère d'accent",
"DE.Views.DocumentHolder.txtRemoveBar": "Supprimer la barre", "DE.Views.DocumentHolder.txtRemoveBar": "Supprimer la barre",
"DE.Views.DocumentHolder.txtRemScripts": "Supprimer scripts", "DE.Views.DocumentHolder.txtRemScripts": "Supprimer les scripts",
"DE.Views.DocumentHolder.txtRemSubscript": "Supprimer la souscription", "DE.Views.DocumentHolder.txtRemSubscript": "Supprimer la souscription",
"DE.Views.DocumentHolder.txtRemSuperscript": "Supprimer la suscription", "DE.Views.DocumentHolder.txtRemSuperscript": "Supprimer la suscription",
"DE.Views.DocumentHolder.txtScriptsAfter": "Scripts après le texte", "DE.Views.DocumentHolder.txtScriptsAfter": "Scripts après le texte",
@ -1218,7 +1253,7 @@
"DE.Views.ImageSettingsAdvanced.cancelButtonText": "Annuler", "DE.Views.ImageSettingsAdvanced.cancelButtonText": "Annuler",
"DE.Views.ImageSettingsAdvanced.okButtonText": "OK", "DE.Views.ImageSettingsAdvanced.okButtonText": "OK",
"DE.Views.ImageSettingsAdvanced.strMargins": "Rembourrage texte", "DE.Views.ImageSettingsAdvanced.strMargins": "Rembourrage texte",
"DE.Views.ImageSettingsAdvanced.textAbsoluteWH": "Absolu", "DE.Views.ImageSettingsAdvanced.textAbsoluteWH": "Absolue",
"DE.Views.ImageSettingsAdvanced.textAlignment": "Alignement", "DE.Views.ImageSettingsAdvanced.textAlignment": "Alignement",
"DE.Views.ImageSettingsAdvanced.textAlt": "Texte de remplacement", "DE.Views.ImageSettingsAdvanced.textAlt": "Texte de remplacement",
"DE.Views.ImageSettingsAdvanced.textAltDescription": "Description", "DE.Views.ImageSettingsAdvanced.textAltDescription": "Description",
@ -1287,6 +1322,7 @@
"DE.Views.LeftMenu.tipAbout": "Au sujet de", "DE.Views.LeftMenu.tipAbout": "Au sujet de",
"DE.Views.LeftMenu.tipChat": "Chat", "DE.Views.LeftMenu.tipChat": "Chat",
"DE.Views.LeftMenu.tipComments": "Commentaires", "DE.Views.LeftMenu.tipComments": "Commentaires",
"DE.Views.LeftMenu.tipNavigation": "Navigation",
"DE.Views.LeftMenu.tipPlugins": "Plug-ins", "DE.Views.LeftMenu.tipPlugins": "Plug-ins",
"DE.Views.LeftMenu.tipSearch": "Recherche", "DE.Views.LeftMenu.tipSearch": "Recherche",
"DE.Views.LeftMenu.tipSupport": "Commentaires & assistance", "DE.Views.LeftMenu.tipSupport": "Commentaires & assistance",
@ -1307,6 +1343,7 @@
"DE.Views.Links.textGotoFootnote": "Accéder aux notes de bas de page", "DE.Views.Links.textGotoFootnote": "Accéder aux notes de bas de page",
"DE.Views.Links.textUpdateAll": "Actualiser le tableau entier", "DE.Views.Links.textUpdateAll": "Actualiser le tableau entier",
"DE.Views.Links.textUpdatePages": "Actualiser les numéros de page uniquement", "DE.Views.Links.textUpdatePages": "Actualiser les numéros de page uniquement",
"DE.Views.Links.tipBookmarks": "Créer un signet",
"DE.Views.Links.tipContents": "Insérer la table des matières", "DE.Views.Links.tipContents": "Insérer la table des matières",
"DE.Views.Links.tipContentsUpdate": "Actualiser la table des matières", "DE.Views.Links.tipContentsUpdate": "Actualiser la table des matières",
"DE.Views.Links.tipInsertHyperlink": "Ajouter un lien hypertexte", "DE.Views.Links.tipInsertHyperlink": "Ajouter un lien hypertexte",
@ -1334,7 +1371,7 @@
"DE.Views.MailMergeSettings.downloadMergeTitle": "Fusion", "DE.Views.MailMergeSettings.downloadMergeTitle": "Fusion",
"DE.Views.MailMergeSettings.errorMailMergeSaveFile": "Fusion a échoué.", "DE.Views.MailMergeSettings.errorMailMergeSaveFile": "Fusion a échoué.",
"DE.Views.MailMergeSettings.notcriticalErrorTitle": "Avertissement", "DE.Views.MailMergeSettings.notcriticalErrorTitle": "Avertissement",
"DE.Views.MailMergeSettings.textAddRecipients": "Ajouter des destinataires d'abord à la liste", "DE.Views.MailMergeSettings.textAddRecipients": "D'abord ajouter quelques destinataires à la liste",
"DE.Views.MailMergeSettings.textAll": "Tous les enregistrements", "DE.Views.MailMergeSettings.textAll": "Tous les enregistrements",
"DE.Views.MailMergeSettings.textCurrent": "Enregistrement actuel", "DE.Views.MailMergeSettings.textCurrent": "Enregistrement actuel",
"DE.Views.MailMergeSettings.textDataSource": "La source de données", "DE.Views.MailMergeSettings.textDataSource": "La source de données",
@ -1368,6 +1405,7 @@
"DE.Views.Navigation.txtEmpty": "Ce document ne contient pas d'en-têtes", "DE.Views.Navigation.txtEmpty": "Ce document ne contient pas d'en-têtes",
"DE.Views.Navigation.txtEmptyItem": "En-tête vide", "DE.Views.Navigation.txtEmptyItem": "En-tête vide",
"DE.Views.Navigation.txtExpand": "Développer tout", "DE.Views.Navigation.txtExpand": "Développer tout",
"DE.Views.Navigation.txtExpandToLevel": "Décomprimer jusqu'au niveau",
"DE.Views.Navigation.txtHeadingAfter": "Nouvel en-tête après", "DE.Views.Navigation.txtHeadingAfter": "Nouvel en-tête après",
"DE.Views.Navigation.txtHeadingBefore": "Nouvel en-tête avant", "DE.Views.Navigation.txtHeadingBefore": "Nouvel en-tête avant",
"DE.Views.Navigation.txtNewHeading": "Nouveau sous-titre", "DE.Views.Navigation.txtNewHeading": "Nouveau sous-titre",
@ -1392,6 +1430,8 @@
"DE.Views.NoteSettingsDialog.textStart": "Début", "DE.Views.NoteSettingsDialog.textStart": "Début",
"DE.Views.NoteSettingsDialog.textTextBottom": "Sous le texte", "DE.Views.NoteSettingsDialog.textTextBottom": "Sous le texte",
"DE.Views.NoteSettingsDialog.textTitle": "Paramètres des notes de bas de page", "DE.Views.NoteSettingsDialog.textTitle": "Paramètres des notes de bas de page",
"DE.Views.NumberingValueDialog.cancelButtonText": "Annuler",
"DE.Views.NumberingValueDialog.okButtonText": "OK",
"DE.Views.PageMarginsDialog.cancelButtonText": "Annuler", "DE.Views.PageMarginsDialog.cancelButtonText": "Annuler",
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Avertissement", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Avertissement",
"DE.Views.PageMarginsDialog.okButtonText": "Ok", "DE.Views.PageMarginsDialog.okButtonText": "Ok",
@ -1405,6 +1445,7 @@
"DE.Views.PageSizeDialog.cancelButtonText": "Annuler", "DE.Views.PageSizeDialog.cancelButtonText": "Annuler",
"DE.Views.PageSizeDialog.okButtonText": "Ok", "DE.Views.PageSizeDialog.okButtonText": "Ok",
"DE.Views.PageSizeDialog.textHeight": "Hauteur", "DE.Views.PageSizeDialog.textHeight": "Hauteur",
"DE.Views.PageSizeDialog.textPreset": "Prédéfini",
"DE.Views.PageSizeDialog.textTitle": "Taille de la page", "DE.Views.PageSizeDialog.textTitle": "Taille de la page",
"DE.Views.PageSizeDialog.textWidth": "Largeur", "DE.Views.PageSizeDialog.textWidth": "Largeur",
"DE.Views.PageSizeDialog.txtCustom": "Personnalisé", "DE.Views.PageSizeDialog.txtCustom": "Personnalisé",
@ -1557,8 +1598,8 @@
"DE.Views.Statusbar.tipFitWidth": "Ajuster à la largeur", "DE.Views.Statusbar.tipFitWidth": "Ajuster à la largeur",
"DE.Views.Statusbar.tipSetLang": "Définir la langue du texte", "DE.Views.Statusbar.tipSetLang": "Définir la langue du texte",
"DE.Views.Statusbar.tipZoomFactor": "Grossissement", "DE.Views.Statusbar.tipZoomFactor": "Grossissement",
"DE.Views.Statusbar.tipZoomIn": "Agrandir le zoom", "DE.Views.Statusbar.tipZoomIn": "Zoom avant",
"DE.Views.Statusbar.tipZoomOut": "Réduire le zoom", "DE.Views.Statusbar.tipZoomOut": "Zoom arrière",
"DE.Views.Statusbar.txtPageNumInvalid": "Numéro de page non valide", "DE.Views.Statusbar.txtPageNumInvalid": "Numéro de page non valide",
"DE.Views.StyleTitleDialog.textHeader": "Créer un nouveau style", "DE.Views.StyleTitleDialog.textHeader": "Créer un nouveau style",
"DE.Views.StyleTitleDialog.textNextStyle": "Style du nouveau paragraphe", "DE.Views.StyleTitleDialog.textNextStyle": "Style du nouveau paragraphe",
@ -1757,6 +1798,7 @@
"DE.Views.Toolbar.mniEditHeader": "Modifier l'en-tête", "DE.Views.Toolbar.mniEditHeader": "Modifier l'en-tête",
"DE.Views.Toolbar.mniHiddenBorders": "Bordures du tableau cachées", "DE.Views.Toolbar.mniHiddenBorders": "Bordures du tableau cachées",
"DE.Views.Toolbar.mniHiddenChars": "Caractères non imprimables", "DE.Views.Toolbar.mniHiddenChars": "Caractères non imprimables",
"DE.Views.Toolbar.mniHighlightControls": "Paramètres de surbrillance",
"DE.Views.Toolbar.mniImageFromFile": "Image à partir d'un fichier", "DE.Views.Toolbar.mniImageFromFile": "Image à partir d'un fichier",
"DE.Views.Toolbar.mniImageFromUrl": "Image à partir d'une URL", "DE.Views.Toolbar.mniImageFromUrl": "Image à partir d'une URL",
"DE.Views.Toolbar.strMenuNoFill": "Pas de remplissage", "DE.Views.Toolbar.strMenuNoFill": "Pas de remplissage",
@ -1794,6 +1836,7 @@
"DE.Views.Toolbar.textMarginsWide": "Large", "DE.Views.Toolbar.textMarginsWide": "Large",
"DE.Views.Toolbar.textNewColor": "Couleur personnalisée", "DE.Views.Toolbar.textNewColor": "Couleur personnalisée",
"DE.Views.Toolbar.textNextPage": "Page suivante", "DE.Views.Toolbar.textNextPage": "Page suivante",
"DE.Views.Toolbar.textNoHighlight": "Pas de surbrillance ",
"DE.Views.Toolbar.textNone": "Aucune", "DE.Views.Toolbar.textNone": "Aucune",
"DE.Views.Toolbar.textOddPage": "Page impaire", "DE.Views.Toolbar.textOddPage": "Page impaire",
"DE.Views.Toolbar.textPageMarginsCustom": "Marges personnalisées", "DE.Views.Toolbar.textPageMarginsCustom": "Marges personnalisées",
@ -1898,7 +1941,7 @@
"DE.Views.Toolbar.txtScheme20": "Urbain", "DE.Views.Toolbar.txtScheme20": "Urbain",
"DE.Views.Toolbar.txtScheme21": "Verve", "DE.Views.Toolbar.txtScheme21": "Verve",
"DE.Views.Toolbar.txtScheme3": "Apex", "DE.Views.Toolbar.txtScheme3": "Apex",
"DE.Views.Toolbar.txtScheme4": "Aspect", "DE.Views.Toolbar.txtScheme4": "Proportions",
"DE.Views.Toolbar.txtScheme5": "Civique", "DE.Views.Toolbar.txtScheme5": "Civique",
"DE.Views.Toolbar.txtScheme6": "Rotonde", "DE.Views.Toolbar.txtScheme6": "Rotonde",
"DE.Views.Toolbar.txtScheme7": "Capitaux", "DE.Views.Toolbar.txtScheme7": "Capitaux",

View file

@ -271,6 +271,14 @@
"Common.Views.ReviewChangesDialog.txtReject": "Respingi", "Common.Views.ReviewChangesDialog.txtReject": "Respingi",
"Common.Views.ReviewChangesDialog.txtRejectAll": "Annulla tutte le modifiche", "Common.Views.ReviewChangesDialog.txtRejectAll": "Annulla tutte le modifiche",
"Common.Views.ReviewChangesDialog.txtRejectCurrent": "Annulla la modifica attuale", "Common.Views.ReviewChangesDialog.txtRejectCurrent": "Annulla la modifica attuale",
"Common.Views.ReviewPopover.textAdd": "Aggiungi",
"Common.Views.ReviewPopover.textAddReply": "Aggiungi risposta",
"Common.Views.ReviewPopover.textCancel": "Annulla",
"Common.Views.ReviewPopover.textClose": "Chiudi",
"Common.Views.ReviewPopover.textEdit": "OK",
"Common.Views.ReviewPopover.textOpenAgain": "Apri di nuovo",
"Common.Views.ReviewPopover.textReply": "Rispondi",
"Common.Views.ReviewPopover.textResolve": "Risolvere",
"Common.Views.SignDialog.cancelButtonText": "Annulla", "Common.Views.SignDialog.cancelButtonText": "Annulla",
"Common.Views.SignDialog.okButtonText": "OK", "Common.Views.SignDialog.okButtonText": "OK",
"Common.Views.SignDialog.textBold": "Grassetto", "Common.Views.SignDialog.textBold": "Grassetto",
@ -322,7 +330,7 @@
"DE.Controllers.Main.errorAccessDeny": "Stai tentando di eseguire un'azione per la quale non disponi di permessi sufficienti.<br>Si prega di contattare l'amministratore del Server dei Documenti.", "DE.Controllers.Main.errorAccessDeny": "Stai tentando di eseguire un'azione per la quale non disponi di permessi sufficienti.<br>Si prega di contattare l'amministratore del Server dei Documenti.",
"DE.Controllers.Main.errorBadImageUrl": "URL dell'immagine non corretto", "DE.Controllers.Main.errorBadImageUrl": "URL dell'immagine non corretto",
"DE.Controllers.Main.errorCoAuthoringDisconnect": "Connessione al server persa. Impossibile modificare il documento.", "DE.Controllers.Main.errorCoAuthoringDisconnect": "Connessione al server persa. Impossibile modificare il documento.",
"DE.Controllers.Main.errorConnectToServer": "The document could not be saved. Please check connection settings or contact your administrator.<br>When you click the 'OK' button, you will be prompted to download the document.<br><br>Find more information about connecting Document Server <a href=\"https://api.onlyoffice.com/editors/callback\" target=\"_blank\">here</a>", "DE.Controllers.Main.errorConnectToServer": "Il documento non può essere salvato. Controllare le impostazioni di rete o contatta l'Amministratore.<br>Quando clicchi 'OK' Ti verrà richiesto di scaricare il documento.<br><br>Per maggiori dettagli sulla connessione al Document Server <a href=\"https://api.onlyoffice.com/editors/callback\" target=\"_blank\">clicca qui</a>",
"DE.Controllers.Main.errorDatabaseConnection": "Errore esterno.<br>Errore di connessione a banca dati. Si prega di contattare l'assistenza tecnica nel caso in cui l'errore persiste.", "DE.Controllers.Main.errorDatabaseConnection": "Errore esterno.<br>Errore di connessione a banca dati. Si prega di contattare l'assistenza tecnica nel caso in cui l'errore persiste.",
"DE.Controllers.Main.errorDataEncrypted": "Le modifiche crittografate sono state ricevute, non possono essere decifrate.", "DE.Controllers.Main.errorDataEncrypted": "Le modifiche crittografate sono state ricevute, non possono essere decifrate.",
"DE.Controllers.Main.errorDataRange": "Intervallo di dati non corretto.", "DE.Controllers.Main.errorDataRange": "Intervallo di dati non corretto.",
@ -855,6 +863,7 @@
"DE.Views.DocumentHolder.alignmentText": "Allineamento", "DE.Views.DocumentHolder.alignmentText": "Allineamento",
"DE.Views.DocumentHolder.belowText": "Al di sotto", "DE.Views.DocumentHolder.belowText": "Al di sotto",
"DE.Views.DocumentHolder.breakBeforeText": "Anteponi interruzione", "DE.Views.DocumentHolder.breakBeforeText": "Anteponi interruzione",
"DE.Views.DocumentHolder.bulletsText": "Elenco puntato e Numerato",
"DE.Views.DocumentHolder.cellAlignText": "Allineamento verticale celle", "DE.Views.DocumentHolder.cellAlignText": "Allineamento verticale celle",
"DE.Views.DocumentHolder.cellText": "Cella", "DE.Views.DocumentHolder.cellText": "Cella",
"DE.Views.DocumentHolder.centerText": "Al centro", "DE.Views.DocumentHolder.centerText": "Al centro",
@ -919,6 +928,7 @@
"DE.Views.DocumentHolder.textArrangeForward": "Porta avanti", "DE.Views.DocumentHolder.textArrangeForward": "Porta avanti",
"DE.Views.DocumentHolder.textArrangeFront": "Porta in primo piano", "DE.Views.DocumentHolder.textArrangeFront": "Porta in primo piano",
"DE.Views.DocumentHolder.textContentControls": "Controllo Contenuto", "DE.Views.DocumentHolder.textContentControls": "Controllo Contenuto",
"DE.Views.DocumentHolder.textContinueNumbering": "Continua la numerazione",
"DE.Views.DocumentHolder.textCopy": "Copia", "DE.Views.DocumentHolder.textCopy": "Copia",
"DE.Views.DocumentHolder.textCut": "Taglia", "DE.Views.DocumentHolder.textCut": "Taglia",
"DE.Views.DocumentHolder.textDistributeCols": "Distribuisci colonne", "DE.Views.DocumentHolder.textDistributeCols": "Distribuisci colonne",
@ -927,14 +937,17 @@
"DE.Views.DocumentHolder.textEditWrapBoundary": "Modifica bordi disposizione testo", "DE.Views.DocumentHolder.textEditWrapBoundary": "Modifica bordi disposizione testo",
"DE.Views.DocumentHolder.textFromFile": "Da file", "DE.Views.DocumentHolder.textFromFile": "Da file",
"DE.Views.DocumentHolder.textFromUrl": "Da URL", "DE.Views.DocumentHolder.textFromUrl": "Da URL",
"DE.Views.DocumentHolder.textJoinList": "Iscriviti alla lista precedente",
"DE.Views.DocumentHolder.textNest": "Tabella nidificata", "DE.Views.DocumentHolder.textNest": "Tabella nidificata",
"DE.Views.DocumentHolder.textNextPage": "Pagina successiva", "DE.Views.DocumentHolder.textNextPage": "Pagina successiva",
"DE.Views.DocumentHolder.textNumberingValue": "Numerazione valore",
"DE.Views.DocumentHolder.textPaste": "Incolla", "DE.Views.DocumentHolder.textPaste": "Incolla",
"DE.Views.DocumentHolder.textPrevPage": "Pagina precedente", "DE.Views.DocumentHolder.textPrevPage": "Pagina precedente",
"DE.Views.DocumentHolder.textRefreshField": "Aggiorna campo", "DE.Views.DocumentHolder.textRefreshField": "Aggiorna campo",
"DE.Views.DocumentHolder.textRemove": "Elimina", "DE.Views.DocumentHolder.textRemove": "Elimina",
"DE.Views.DocumentHolder.textRemoveControl": "Rimuovi il controllo del contenuto", "DE.Views.DocumentHolder.textRemoveControl": "Rimuovi il controllo del contenuto",
"DE.Views.DocumentHolder.textReplace": "Sostituisci immagine", "DE.Views.DocumentHolder.textReplace": "Sostituisci immagine",
"DE.Views.DocumentHolder.textSeparateList": "Elenco separato",
"DE.Views.DocumentHolder.textSettings": "Impostazioni", "DE.Views.DocumentHolder.textSettings": "Impostazioni",
"DE.Views.DocumentHolder.textShapeAlignBottom": "Allinea in basso", "DE.Views.DocumentHolder.textShapeAlignBottom": "Allinea in basso",
"DE.Views.DocumentHolder.textShapeAlignCenter": "Allinea al centro", "DE.Views.DocumentHolder.textShapeAlignCenter": "Allinea al centro",
@ -942,6 +955,8 @@
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Allinea in mezzo", "DE.Views.DocumentHolder.textShapeAlignMiddle": "Allinea in mezzo",
"DE.Views.DocumentHolder.textShapeAlignRight": "Allinea a destra", "DE.Views.DocumentHolder.textShapeAlignRight": "Allinea a destra",
"DE.Views.DocumentHolder.textShapeAlignTop": "Allinea in alto", "DE.Views.DocumentHolder.textShapeAlignTop": "Allinea in alto",
"DE.Views.DocumentHolder.textStartNewList": "Inizia nuovo elenco",
"DE.Views.DocumentHolder.textStartNumberingFrom": "Imposta il valore numerico",
"DE.Views.DocumentHolder.textTOC": "Sommario", "DE.Views.DocumentHolder.textTOC": "Sommario",
"DE.Views.DocumentHolder.textTOCSettings": "Impostazioni sommario", "DE.Views.DocumentHolder.textTOCSettings": "Impostazioni sommario",
"DE.Views.DocumentHolder.textUndo": "Annulla", "DE.Views.DocumentHolder.textUndo": "Annulla",
@ -1403,6 +1418,8 @@
"DE.Views.NoteSettingsDialog.textStart": "Inizia da", "DE.Views.NoteSettingsDialog.textStart": "Inizia da",
"DE.Views.NoteSettingsDialog.textTextBottom": "Sotto al testo", "DE.Views.NoteSettingsDialog.textTextBottom": "Sotto al testo",
"DE.Views.NoteSettingsDialog.textTitle": "Impostazioni delle note", "DE.Views.NoteSettingsDialog.textTitle": "Impostazioni delle note",
"DE.Views.NumberingValueDialog.cancelButtonText": "Annulla",
"DE.Views.NumberingValueDialog.okButtonText": "OK",
"DE.Views.PageMarginsDialog.cancelButtonText": "Annulla", "DE.Views.PageMarginsDialog.cancelButtonText": "Annulla",
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Warning", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Warning",
"DE.Views.PageMarginsDialog.okButtonText": "Ok", "DE.Views.PageMarginsDialog.okButtonText": "Ok",

View file

@ -168,6 +168,7 @@
"Common.Views.History.textRestore": "Восстановить", "Common.Views.History.textRestore": "Восстановить",
"Common.Views.History.textShow": "Развернуть", "Common.Views.History.textShow": "Развернуть",
"Common.Views.History.textShowAll": "Показать подробные изменения", "Common.Views.History.textShowAll": "Показать подробные изменения",
"Common.Views.History.textVer": "вер.",
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Отмена", "Common.Views.ImageFromUrlDialog.cancelButtonText": "Отмена",
"Common.Views.ImageFromUrlDialog.okButtonText": "OK", "Common.Views.ImageFromUrlDialog.okButtonText": "OK",
"Common.Views.ImageFromUrlDialog.textUrl": "Вставьте URL изображения:", "Common.Views.ImageFromUrlDialog.textUrl": "Вставьте URL изображения:",
@ -271,6 +272,14 @@
"Common.Views.ReviewChangesDialog.txtReject": "Отклонить", "Common.Views.ReviewChangesDialog.txtReject": "Отклонить",
"Common.Views.ReviewChangesDialog.txtRejectAll": "Отклонить все изменения", "Common.Views.ReviewChangesDialog.txtRejectAll": "Отклонить все изменения",
"Common.Views.ReviewChangesDialog.txtRejectCurrent": "Отклонить текущее изменение", "Common.Views.ReviewChangesDialog.txtRejectCurrent": "Отклонить текущее изменение",
"Common.Views.ReviewPopover.textAdd": "Добавить",
"Common.Views.ReviewPopover.textAddReply": "Добавить ответ",
"Common.Views.ReviewPopover.textCancel": "Отмена",
"Common.Views.ReviewPopover.textClose": "Закрыть",
"Common.Views.ReviewPopover.textEdit": "OK",
"Common.Views.ReviewPopover.textOpenAgain": "Открыть снова",
"Common.Views.ReviewPopover.textReply": "Ответить",
"Common.Views.ReviewPopover.textResolve": "Решить",
"Common.Views.SignDialog.cancelButtonText": "Отмена", "Common.Views.SignDialog.cancelButtonText": "Отмена",
"Common.Views.SignDialog.okButtonText": "Ok", "Common.Views.SignDialog.okButtonText": "Ok",
"Common.Views.SignDialog.textBold": "Жирный", "Common.Views.SignDialog.textBold": "Жирный",
@ -380,10 +389,13 @@
"DE.Controllers.Main.textAnonymous": "Аноним", "DE.Controllers.Main.textAnonymous": "Аноним",
"DE.Controllers.Main.textBuyNow": "Перейти на сайт", "DE.Controllers.Main.textBuyNow": "Перейти на сайт",
"DE.Controllers.Main.textChangesSaved": "Все изменения сохранены", "DE.Controllers.Main.textChangesSaved": "Все изменения сохранены",
"DE.Controllers.Main.textClose": "Закрыть",
"DE.Controllers.Main.textCloseTip": "Щелкните, чтобы закрыть эту подсказку", "DE.Controllers.Main.textCloseTip": "Щелкните, чтобы закрыть эту подсказку",
"DE.Controllers.Main.textContactUs": "Связаться с отделом продаж", "DE.Controllers.Main.textContactUs": "Связаться с отделом продаж",
"DE.Controllers.Main.textLicencePaidFeature": "Функция, которую вы пытаетесь использовать, доступна по расширенной лицензии.<br>Если вам нужна эта функция, обратитесь в отдел продаж",
"DE.Controllers.Main.textLoadingDocument": "Загрузка документа", "DE.Controllers.Main.textLoadingDocument": "Загрузка документа",
"DE.Controllers.Main.textNoLicenseTitle": "Ограничение по числу подключений ONLYOFFICE", "DE.Controllers.Main.textNoLicenseTitle": "Ограничение по числу подключений ONLYOFFICE",
"DE.Controllers.Main.textPaidFeature": "Платная функция",
"DE.Controllers.Main.textShape": "Фигура", "DE.Controllers.Main.textShape": "Фигура",
"DE.Controllers.Main.textStrict": "Строгий режим", "DE.Controllers.Main.textStrict": "Строгий режим",
"DE.Controllers.Main.textTryUndoRedo": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.<br>Нажмите на кнопку 'Строгий режим' для переключения в Строгий режим совместного редактирования, чтобы редактировать файл без вмешательства других пользователей и отправлять изменения только после того, как вы их сохраните. Переключаться между режимами совместного редактирования можно с помощью Дополнительных параметров редактора.", "DE.Controllers.Main.textTryUndoRedo": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.<br>Нажмите на кнопку 'Строгий режим' для переключения в Строгий режим совместного редактирования, чтобы редактировать файл без вмешательства других пользователей и отправлять изменения только после того, как вы их сохраните. Переключаться между режимами совместного редактирования можно с помощью Дополнительных параметров редактора.",
@ -806,6 +818,7 @@
"DE.Views.BookmarksDialog.textName": "Имя", "DE.Views.BookmarksDialog.textName": "Имя",
"DE.Views.BookmarksDialog.textSort": "Порядок", "DE.Views.BookmarksDialog.textSort": "Порядок",
"DE.Views.BookmarksDialog.textTitle": "Закладки", "DE.Views.BookmarksDialog.textTitle": "Закладки",
"DE.Views.BookmarksDialog.txtInvalidName": "Имя закладки может содержать только буквы, цифры и знаки подчеркивания и должно начинаться с буквы.",
"DE.Views.ChartSettings.textAdvanced": "Дополнительные параметры", "DE.Views.ChartSettings.textAdvanced": "Дополнительные параметры",
"DE.Views.ChartSettings.textArea": "С областями", "DE.Views.ChartSettings.textArea": "С областями",
"DE.Views.ChartSettings.textBar": "Линейчатая", "DE.Views.ChartSettings.textBar": "Линейчатая",
@ -834,8 +847,15 @@
"DE.Views.ChartSettings.txtTopAndBottom": "Сверху и снизу", "DE.Views.ChartSettings.txtTopAndBottom": "Сверху и снизу",
"DE.Views.ControlSettingsDialog.cancelButtonText": "Отмена", "DE.Views.ControlSettingsDialog.cancelButtonText": "Отмена",
"DE.Views.ControlSettingsDialog.okButtonText": "Ok", "DE.Views.ControlSettingsDialog.okButtonText": "Ok",
"DE.Views.ControlSettingsDialog.textAppearance": "Вид",
"DE.Views.ControlSettingsDialog.textApplyAll": "Применить ко всем",
"DE.Views.ControlSettingsDialog.textBox": "С ограничивающей рамкой",
"DE.Views.ControlSettingsDialog.textColor": "Цвет",
"DE.Views.ControlSettingsDialog.textLock": "Блокировка", "DE.Views.ControlSettingsDialog.textLock": "Блокировка",
"DE.Views.ControlSettingsDialog.textName": "Заголовок", "DE.Views.ControlSettingsDialog.textName": "Заголовок",
"DE.Views.ControlSettingsDialog.textNewColor": "Пользовательский цвет",
"DE.Views.ControlSettingsDialog.textNone": "Без рамки",
"DE.Views.ControlSettingsDialog.textShowAs": "Отображать",
"DE.Views.ControlSettingsDialog.textTag": "Тег", "DE.Views.ControlSettingsDialog.textTag": "Тег",
"DE.Views.ControlSettingsDialog.textTitle": "Параметры элемента управления содержимым", "DE.Views.ControlSettingsDialog.textTitle": "Параметры элемента управления содержимым",
"DE.Views.ControlSettingsDialog.txtLockDelete": "Элемент управления содержимым нельзя удалить", "DE.Views.ControlSettingsDialog.txtLockDelete": "Элемент управления содержимым нельзя удалить",
@ -855,6 +875,7 @@
"DE.Views.DocumentHolder.alignmentText": "Выравнивание", "DE.Views.DocumentHolder.alignmentText": "Выравнивание",
"DE.Views.DocumentHolder.belowText": "Ниже", "DE.Views.DocumentHolder.belowText": "Ниже",
"DE.Views.DocumentHolder.breakBeforeText": "С новой страницы", "DE.Views.DocumentHolder.breakBeforeText": "С новой страницы",
"DE.Views.DocumentHolder.bulletsText": "Маркеры и нумерация",
"DE.Views.DocumentHolder.cellAlignText": "Вертикальное выравнивание в ячейках", "DE.Views.DocumentHolder.cellAlignText": "Вертикальное выравнивание в ячейках",
"DE.Views.DocumentHolder.cellText": "Ячейку", "DE.Views.DocumentHolder.cellText": "Ячейку",
"DE.Views.DocumentHolder.centerText": "По центру", "DE.Views.DocumentHolder.centerText": "По центру",
@ -919,6 +940,7 @@
"DE.Views.DocumentHolder.textArrangeForward": "Перенести вперед", "DE.Views.DocumentHolder.textArrangeForward": "Перенести вперед",
"DE.Views.DocumentHolder.textArrangeFront": "Перенести на передний план", "DE.Views.DocumentHolder.textArrangeFront": "Перенести на передний план",
"DE.Views.DocumentHolder.textContentControls": "Элемент управления содержимым", "DE.Views.DocumentHolder.textContentControls": "Элемент управления содержимым",
"DE.Views.DocumentHolder.textContinueNumbering": "Продолжить нумерацию",
"DE.Views.DocumentHolder.textCopy": "Копировать", "DE.Views.DocumentHolder.textCopy": "Копировать",
"DE.Views.DocumentHolder.textCut": "Вырезать", "DE.Views.DocumentHolder.textCut": "Вырезать",
"DE.Views.DocumentHolder.textDistributeCols": "Выровнять ширину столбцов", "DE.Views.DocumentHolder.textDistributeCols": "Выровнять ширину столбцов",
@ -927,14 +949,17 @@
"DE.Views.DocumentHolder.textEditWrapBoundary": "Изменить границу обтекания", "DE.Views.DocumentHolder.textEditWrapBoundary": "Изменить границу обтекания",
"DE.Views.DocumentHolder.textFromFile": "Из файла", "DE.Views.DocumentHolder.textFromFile": "Из файла",
"DE.Views.DocumentHolder.textFromUrl": "По URL", "DE.Views.DocumentHolder.textFromUrl": "По URL",
"DE.Views.DocumentHolder.textJoinList": "Объединить с предыдущим списком",
"DE.Views.DocumentHolder.textNest": "Вставить как вложенную таблицу", "DE.Views.DocumentHolder.textNest": "Вставить как вложенную таблицу",
"DE.Views.DocumentHolder.textNextPage": "Следующая страница", "DE.Views.DocumentHolder.textNextPage": "Следующая страница",
"DE.Views.DocumentHolder.textNumberingValue": "Начальное значение",
"DE.Views.DocumentHolder.textPaste": "Вставить", "DE.Views.DocumentHolder.textPaste": "Вставить",
"DE.Views.DocumentHolder.textPrevPage": "Предыдущая страница", "DE.Views.DocumentHolder.textPrevPage": "Предыдущая страница",
"DE.Views.DocumentHolder.textRefreshField": "Обновить поле", "DE.Views.DocumentHolder.textRefreshField": "Обновить поле",
"DE.Views.DocumentHolder.textRemove": "Удалить", "DE.Views.DocumentHolder.textRemove": "Удалить",
"DE.Views.DocumentHolder.textRemoveControl": "Удалить элемент управления содержимым", "DE.Views.DocumentHolder.textRemoveControl": "Удалить элемент управления содержимым",
"DE.Views.DocumentHolder.textReplace": "Заменить изображение", "DE.Views.DocumentHolder.textReplace": "Заменить изображение",
"DE.Views.DocumentHolder.textSeparateList": "Разделить список",
"DE.Views.DocumentHolder.textSettings": "Настройки", "DE.Views.DocumentHolder.textSettings": "Настройки",
"DE.Views.DocumentHolder.textShapeAlignBottom": "Выровнять по нижнему краю", "DE.Views.DocumentHolder.textShapeAlignBottom": "Выровнять по нижнему краю",
"DE.Views.DocumentHolder.textShapeAlignCenter": "Выровнять по центру", "DE.Views.DocumentHolder.textShapeAlignCenter": "Выровнять по центру",
@ -942,6 +967,8 @@
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Выровнять по середине", "DE.Views.DocumentHolder.textShapeAlignMiddle": "Выровнять по середине",
"DE.Views.DocumentHolder.textShapeAlignRight": "Выровнять по правому краю", "DE.Views.DocumentHolder.textShapeAlignRight": "Выровнять по правому краю",
"DE.Views.DocumentHolder.textShapeAlignTop": "Выровнять по верхнему краю", "DE.Views.DocumentHolder.textShapeAlignTop": "Выровнять по верхнему краю",
"DE.Views.DocumentHolder.textStartNewList": "Начать новый список",
"DE.Views.DocumentHolder.textStartNumberingFrom": "Задать начальное значение",
"DE.Views.DocumentHolder.textTOC": "Оглавление", "DE.Views.DocumentHolder.textTOC": "Оглавление",
"DE.Views.DocumentHolder.textTOCSettings": "Параметры оглавления", "DE.Views.DocumentHolder.textTOCSettings": "Параметры оглавления",
"DE.Views.DocumentHolder.textUndo": "Отменить", "DE.Views.DocumentHolder.textUndo": "Отменить",
@ -1403,6 +1430,8 @@
"DE.Views.NoteSettingsDialog.textStart": "Начать с", "DE.Views.NoteSettingsDialog.textStart": "Начать с",
"DE.Views.NoteSettingsDialog.textTextBottom": "Под текстом", "DE.Views.NoteSettingsDialog.textTextBottom": "Под текстом",
"DE.Views.NoteSettingsDialog.textTitle": "Параметры сносок", "DE.Views.NoteSettingsDialog.textTitle": "Параметры сносок",
"DE.Views.NumberingValueDialog.cancelButtonText": "Отмена",
"DE.Views.NumberingValueDialog.okButtonText": "Ok",
"DE.Views.PageMarginsDialog.cancelButtonText": "Отмена", "DE.Views.PageMarginsDialog.cancelButtonText": "Отмена",
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Внимание", "DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Внимание",
"DE.Views.PageMarginsDialog.okButtonText": "Ok", "DE.Views.PageMarginsDialog.okButtonText": "Ok",
@ -1769,6 +1798,7 @@
"DE.Views.Toolbar.mniEditHeader": "Изменить верхний колонтитул", "DE.Views.Toolbar.mniEditHeader": "Изменить верхний колонтитул",
"DE.Views.Toolbar.mniHiddenBorders": "Скрытые границы таблиц", "DE.Views.Toolbar.mniHiddenBorders": "Скрытые границы таблиц",
"DE.Views.Toolbar.mniHiddenChars": "Непечатаемые символы", "DE.Views.Toolbar.mniHiddenChars": "Непечатаемые символы",
"DE.Views.Toolbar.mniHighlightControls": "Параметры выделения",
"DE.Views.Toolbar.mniImageFromFile": "Изображение из файла", "DE.Views.Toolbar.mniImageFromFile": "Изображение из файла",
"DE.Views.Toolbar.mniImageFromUrl": "Изображение по URL", "DE.Views.Toolbar.mniImageFromUrl": "Изображение по URL",
"DE.Views.Toolbar.strMenuNoFill": "Без заливки", "DE.Views.Toolbar.strMenuNoFill": "Без заливки",
@ -1806,6 +1836,7 @@
"DE.Views.Toolbar.textMarginsWide": "Широкие", "DE.Views.Toolbar.textMarginsWide": "Широкие",
"DE.Views.Toolbar.textNewColor": "Пользовательский цвет", "DE.Views.Toolbar.textNewColor": "Пользовательский цвет",
"DE.Views.Toolbar.textNextPage": "Со следующей страницы", "DE.Views.Toolbar.textNextPage": "Со следующей страницы",
"DE.Views.Toolbar.textNoHighlight": "Без выделения",
"DE.Views.Toolbar.textNone": "Нет", "DE.Views.Toolbar.textNone": "Нет",
"DE.Views.Toolbar.textOddPage": "С нечетной страницы", "DE.Views.Toolbar.textOddPage": "С нечетной страницы",
"DE.Views.Toolbar.textPageMarginsCustom": "Настраиваемые поля", "DE.Views.Toolbar.textPageMarginsCustom": "Настраиваемые поля",

View file

@ -20,17 +20,21 @@
"src": "ProgramInterface/LayoutTab.htm", "src": "ProgramInterface/LayoutTab.htm",
"name": "Registerkarte Layout" "name": "Registerkarte Layout"
}, },
{
"src": "ProgramInterface/ReferencesTab.htm",
"name": "Registerkarte Referenzen"
},
{ {
"src": "ProgramInterface/ReviewTab.htm", "src": "ProgramInterface/ReviewTab.htm",
"name": "Registerkarte Überprüfen" "name": "Registerkarte Zusammenarbeit"
}, },
{ {
"src": "ProgramInterface/PluginsTab.htm", "src": "ProgramInterface/PluginsTab.htm",
"name": "Registerkarte Plug-in" "name": "Registerkarte Plug-ins"
}, },
{ {
"src": "UsageInstructions/ChangeColorScheme.htm", "src": "UsageInstructions/OpenCreateNew.htm",
"name": "Farbschema ändern", "name": "Ein neues Dokument erstellen oder ein vorhandenes öffnen",
"headername": "Grundfunktionen" "headername": "Grundfunktionen"
}, },
{ {
@ -38,8 +42,8 @@
"name": "Textpassagen kopieren/einfügen, Aktionen rückgängig machen/wiederholen" "name": "Textpassagen kopieren/einfügen, Aktionen rückgängig machen/wiederholen"
}, },
{ {
"src": "UsageInstructions/OpenCreateNew.htm", "src": "UsageInstructions/ChangeColorScheme.htm",
"name": "Ein neues Dokument erstellen oder ein vorhandenes öffnen" "name": "Farbschema ändern"
}, },
{ {
"src": "UsageInstructions/SetPageParameters.htm", "src": "UsageInstructions/SetPageParameters.htm",
@ -145,6 +149,14 @@
"src": "UsageInstructions/InsertTextObjects.htm", "src": "UsageInstructions/InsertTextObjects.htm",
"name": "Textobjekte einfügen" "name": "Textobjekte einfügen"
}, },
{
"src": "UsageInstructions/InsertContentControls.htm",
"name": "Inhaltssteuerelemente einfügen"
},
{
"src": "UsageInstructions/CreateTableOfContents.htm",
"name": "Inhaltsverzeichnis erstellen"
},
{ {
"src": "UsageInstructions/AlignArrangeObjects.htm", "src": "UsageInstructions/AlignArrangeObjects.htm",
"name": "Objekte auf einer Seite anordnen und ausrichten" "name": "Objekte auf einer Seite anordnen und ausrichten"
@ -187,7 +199,7 @@
}, },
{ {
"src": "HelpfulHints/Navigation.htm", "src": "HelpfulHints/Navigation.htm",
"name": "Einstellungen und Navigationswerkzeuge anzeigen" "name": "Ansichtseinstellungen und Navigationswerkzeuge"
}, },
{ {
"src": "HelpfulHints/Search.htm", "src": "HelpfulHints/Search.htm",

View file

@ -15,7 +15,7 @@
</div> </div>
<h1>Über den Dokumenteneditor</h1> <h1>Über den Dokumenteneditor</h1>
<p>Der <b>Dokumenteneditor</b> ist eine <span class="onlineDocumentFeatures">Online-</span>Anwendung, mit der Sie Ihre Dokumente<span class="onlineDocumentFeatures"> direkt in Ihrem Browser</span> betrachten und bearbeiten können.</p> <p>Der <b>Dokumenteneditor</b> ist eine <span class="onlineDocumentFeatures">Online-</span>Anwendung, mit der Sie Ihre Dokumente<span class="onlineDocumentFeatures"> direkt in Ihrem Browser</span> betrachten und bearbeiten können.</p>
<p>Mit dem <b>Dokumenteneditor</b> können Sie Editiervorgänge durchführen, wie bei einem beliebigen Desktopeditor, editierte Dokumente unter Beibehaltung aller Formatierungsdetails drucken oder sie auf der Festplatte Ihres Rechners als PDF-, TXT-, DOCX-, DOC-, ODT-, RTF-, HTML- oder EPUB-Dateien speichern.</p> <p>Mit dem <b>Dokumenteneditor</b> können Sie Editiervorgänge durchführen, wie bei einem beliebigen Desktopeditor, editierte Dokumente unter Beibehaltung aller Formatierungsdetails drucken oder sie auf der Festplatte Ihres Rechners als DOCX-, PDF-, TXT-, ODT-, RTF- oder HTML-Dateien speichern.</p>
<p>Wenn Sie mehr über die aktuelle Softwareversion und den Lizenzgeber erfahren möchten, klicken Sie auf das <img alt="Über" src="../images/about.png" /> Symbol in der linken Seitenleiste.</p> <p>Wenn Sie mehr über die aktuelle Softwareversion und den Lizenzgeber erfahren möchten, klicken Sie auf das <img alt="Über" src="../images/about.png" /> Symbol in der linken Seitenleiste.</p>
</div> </div>
</body> </body>

View file

@ -18,48 +18,49 @@
<ul> <ul>
<li class="onlineDocumentFeatures">gleichzeitiger Zugriff von mehreren Benutzern auf das bearbeitete Dokument</li> <li class="onlineDocumentFeatures">gleichzeitiger Zugriff von mehreren Benutzern auf das bearbeitete Dokument</li>
<li class="onlineDocumentFeatures">visuelle Markierung von Textabschnitten, die aktuell von anderen Benutzern bearbeitet werden</li> <li class="onlineDocumentFeatures">visuelle Markierung von Textabschnitten, die aktuell von anderen Benutzern bearbeitet werden</li>
<li class="onlineDocumentFeatures">Synchronisierung von Änderungen mit einem Klick</li> <li class="onlineDocumentFeatures">Synchronisierung von Änderungen mit einem Klick.</li>
<li class="onlineDocumentFeatures">Chat zum Austauschen von Ideen zu bestimmten Abschnitten des Dokuments</li> <li class="onlineDocumentFeatures">Chat zum Austauschen von Ideen zu bestimmten Abschnitten des Dokuments</li>
<li>Kommentare mit der Beschreibung von Aufgaben oder Problemen, die Folgehandlungen erforderlich machen</li> <li>Kommentare mit der Beschreibung von Aufgaben oder Problemen, die Folgehandlungen erforderlich machen.</li>
</ul> </ul>
<div class="onlineDocumentFeatures"> <div class="onlineDocumentFeatures">
<h3>Co-Bearbeitung</h3> <h3>Co-Bearbeitung</h3>
<p>Im <b>Dokumenteneditor</b> stehen die folgenden Modelle für die Co-Bearbeitung zur Verfügung. Standardmäßig ist der <b>Schnellmodus</b> aktiviert. Die Änderungen von anderen Benutzern werden in Echtzeit angezeigt. Im Modus <b>Strikt</b> werden die Änderungen von anderen Nutzern verborgen, bis Sie auf das Symbol <b>Speichern</b> <img alt="Speichern" src="../images/saveupdate.png" /> klicken, um Ihre eigenen Änderungen zu speichern und die Änderungen von anderen anzunehmen. Der Modus kann unter <a href="../HelpfulHints/AdvancedSettings.htm" onclick="onhyperlinkclick(this)">Erweiterte Einstellungen</a> festgelegt werden.</p> <p>Im <b>Dokumenteneditor</b> stehen die folgenden Modelle für die Co-Bearbeitung zur Verfügung. Standardmäßig ist der <b>Schnellmodus</b> aktiviert. Die Änderungen von anderen Benutzern werden in Echtzeit angezeigt. Im Modus <b>Strikt</b> werden die Änderungen von anderen Nutzern verborgen, bis Sie auf das Symbol <b>Speichern</b> <img alt="Speichern" src="../images/saveupdate.png" /> klicken, um Ihre eigenen Änderungen zu speichern und die Änderungen von anderen anzunehmen. Der Modus kann unter <a href="../HelpfulHints/AdvancedSettings.htm" onclick="onhyperlinkclick(this)">Erweiterte Einstellungen</a> festgelegt werden. Sie können den gewünschten Modus auch in der Registerkarte <b>Zusammenarbeit</b> in der oberen Symbolleiste festlegen, klicken Sie dazu einfach auf das Symbol <img alt="Co-Bearbeitung" src="../images/coeditingmode.png" /> <b>Co-Bearbeitung</b>.</p>
<p><img alt="Menü Co-Bearbeitung" src="../images/coeditingmodemenu.png" /></p>
<p>Wenn ein Dokument im Modus <b>Strikt</b> von mehreren Benutzern gleichzeitig bearbeitet wird, werden die bearbeiteten Textpassagen mit gestrichelten Linien in verschiedenen Farben markiert. Wenn Sie den Mauszeiger über eine der bearbeiteten Passagen bewegen, wird der Name des Benutzers angezeigt, der diese Passage aktuell bearbeitet. Im <b>Schnellmodus</b> werden die Aktionen und die Namen der Co-Editoren angezeigt, sobald sie eine Textstelle bearbeitet haben.</p> <p>Wenn ein Dokument im Modus <b>Strikt</b> von mehreren Benutzern gleichzeitig bearbeitet wird, werden die bearbeiteten Textpassagen mit gestrichelten Linien in verschiedenen Farben markiert. Wenn Sie den Mauszeiger über eine der bearbeiteten Passagen bewegen, wird der Name des Benutzers angezeigt, der diese Passage aktuell bearbeitet. Im <b>Schnellmodus</b> werden die Aktionen und die Namen der Co-Editoren angezeigt, sobald sie eine Textstelle bearbeitet haben.</p>
<p>Die Anzahl der Benutzer, die am aktuellen Dokument arbeiten, wird in der linken unteren Ecke auf der Statusleiste angegeben - <img alt="Anzahl der Benutzer" src="../images/usersnumber.png" />. Wenn Sie sehen möchten, wer gerade die Datei gerade bearbeitet, können Sie auf dieses Symbol klicken oder den Bereich <b>Chat</b> öffnen, der eine vollständige Liste aller Benutzer enthält.</p> <p>Die Anzahl der Benutzer, die am aktuellen Dokument arbeiten, wird in der linken unteren Ecke auf der Statusleiste angegeben - <img alt="Anzahl der Benutzer" src="../images/usersnumber.png" />. Wenn Sie sehen möchten wer die Datei aktuell bearbeitet, können Sie auf dieses Symbol klicken oder den Bereich <b>Chat</b> öffnen, der eine vollständige Liste aller Benutzer enthält.</p>
<p>Wenn niemand die Datei anzeigt oder bearbeitet, sieht das Symbol in der Kopfzeile des Editors folgendermaßen aus: <img alt="Zugriffsrechte verwalten" src="../images/access_rights.png" /> über dieses Symbol können Sie die Benutzer verwalten, die direkt aus dem Dokument auf die Datei zugreifen können; neue Benutzer einladen und ihnen die Berechtigung zum Bearbeiten, Lesen oder Überprüfen erteilen oder Benutzern Zugriffsrechte für die Datei verweigern. Klicken Sie auf dieses Symbol <img alt="Anzahl der Benutzer" src="../images/usersnumber.png" />, um den Zugriff auf die Datei zu verwalten. Sie können die Datei auch verwalten, wenn andere Benutzer aktuell mit der Bearbeitung oder Anzeige des Dokuments beschäftigt sind.</p> <p>Wenn niemand die Datei anzeigt oder bearbeitet, sieht das Symbol in der Kopfzeile des Editors folgendermaßen aus: <img alt="Zugriffsrechte verwalten" src="../images/access_rights.png" /> über dieses Symbol können Sie die Benutzer verwalten, die direkt aus dem Dokument auf die Datei zugreifen können; neue Benutzer einladen und ihnen die Berechtigung zum Bearbeiten, Lesen oder Überprüfen erteilen oder Benutzern Zugriffsrechte für die Datei verweigern. Klicken Sie auf dieses Symbol <img alt="Anzahl der Benutzer" src="../images/usersnumber.png" />, um den Zugriff auf die Datei zu verwalten. Sie können die Datei auch verwalten, wenn andere Benutzer aktuell mit der Bearbeitung oder Anzeige des Dokuments beschäftigt sind. Sie können die Zugriffsrechte auch in der Registerkarte <b>Zusammenarbeit</b> in der oberen Symbolleiste festlegen, klicken Sie dazu einfach auf das Symbol <img alt="Teilen" src="../images/sharingicon.png" /> <b>Teilen</b>.</p>
<p>Sobald einer der Benutzer Änderungen durch Klicken auf das Symbol <img alt="Speichern" src="../images/savewhilecoediting.png" /> speichert, sehen die anderen Benutzer in der Statusleiste eine Notiz über vorliegende Aktualisierungen. Um die Änderungen zu speichern und die Aktualisierungen zu erhalten, klicken Sie aufs Symbol <img alt="Speichern" src="../images/saveupdate.png" /> in der linken oberen Ecke der oberen Symbolleiste. Die Updates werden hervorgehoben, damit Sie nachvollziehen können, was genau geändert wurde.</p> <p>Sobald einer der Benutzer Änderungen durch Klicken auf das Symbol <img alt="Speichern" src="../images/savewhilecoediting.png" /> speichert, sehen die anderen Benutzer in der Statusleiste eine Notiz über vorliegende Aktualisierungen. Um Ihre eigenen Änderungen zu speichern, so dass diese auch von den anderen Benutzern eingesehen werden können und um die Aktualisierungen Ihrer Co-Editoren einzusehen, klicken die Aktualisierungen zu erhalten, klicken Sie in der oberen linken Ecke der oberen Symbolleiste auf <img alt="Speichern" src="../images/saveupdate.png" />. Die Updates werden hervorgehoben, damit Sie nachvollziehen können, was genau geändert wurde.</p>
<p>Sie können festlegen, welche Änderungen bei der Co-Bearbeitung hervorgehoben werden sollen: Klicken Sie dazu in der Registerkarte <b>Datei</b> auf die Option <b>Erweiterte Einstellungen</b> und wählen Sie zwischen <b>keine</b>, <b>alle</b> und <b>letzte</b> Änderungen in Echtzeit. Wenn Sie die Option <b>Alle anzeigen</b> auswählen, werden alle während der aktuellen Sitzung vorgenommenen Änderungen hervorgehoben. Wenn Sie die Option <b>Letzte anzeigen</b> auswählen, werden alle Änderungen hervorgehoben, die Sie vorgenommen haben, seit Sie das letzte Mal das Symbol Speichern <img alt="Speichern" src="../images/saveupdate.png" /> angeklickt haben. Wenn Sie die Option <b>Keine anzeigen</b> auswählen, werden die während der aktuellen Sitzung vorgenommenen Änderungen nicht hervorgehoben.</p> <p>Sie können festlegen, welche Änderungen bei der Co-Bearbeitung hervorgehoben werden sollen: Klicken Sie dazu in der Registerkarte <b>Datei</b> auf die Option <b>Erweiterte Einstellungen</b> und wählen Sie zwischen <b>keine</b>, <b>alle</b> und <b>letzte</b> Änderungen in Echtzeit. Wenn Sie die Option <b>Alle anzeigen</b> auswählen, werden alle während der aktuellen Sitzung vorgenommenen Änderungen hervorgehoben. Wenn Sie die Option <b>Letzte anzeigen</b> auswählen, werden alle Änderungen hervorgehoben, die Sie vorgenommen haben, seit Sie das letzte Mal das Symbol Speichern <img alt="Speichern" src="../images/saveupdate.png" /> angeklickt haben. Wenn Sie die Option <b>Keine anzeigen</b> auswählen, werden die während der aktuellen Sitzung vorgenommenen Änderungen nicht hervorgehoben.</p>
<h3 id="chat">Chat</h3> <h3 id="chat">Chat</h3>
<p>Mit diesem Tool können Sie die Co-Bearbeitung spontan bei Bedarf koordinieren, beispielsweise um mit Ihren Mitarbeitern zu vereinbaren, wer was macht, welchen Absatz Sie jetzt bearbeiten usw.</p> <p>Mit diesem Tool können Sie die Co-Bearbeitung spontan bei Bedarf koordinieren, beispielsweise um mit Ihren Mitarbeitern zu vereinbaren, wer was macht, welchen Absatz Sie jetzt bearbeiten usw.</p>
<p>Die Chatnachrichten werden nur während einer Sitzung gespeichert. Um den Dokumentinhalt zu besprechen, ist es besser, Kommentare zu verwenden, die bis zum Löschen gespeichert werden.</p> <p>Die Chat-Nachrichten werden nur während einer aktiven Sitzung gespeichert. Um den Inhalt der Präsentation zu besprechen, ist es besser die Kommentarfunktion zu verwenden, da Kommentare bis zum Löschen gespeichert werden.</p>
<p>Um auf den Chat zuzugreifen und eine Nachricht für die anderen Benutzer zu hinterlassen:</p> <p>Chat nutzen und Nachrichten für andere Benutzer erstellen:</p>
<ol> <ol>
<li>Klicken Sie auf das Symbol <img alt="Chat" src="../images/chaticon.png" /> in der linken Seitenleiste.</li> <li>Klicken Sie im linken Seitenbereich auf das Symbol <img alt="Chat" src="../images/chaticon.png" /> oder <br /> wechseln Sie in der oberen Symbolleiste in die Registerkarte <b>Zusammenarbeit</b> und klicken Sie auf die Schaltfläche <img alt="Chat" src="../images/chat_toptoolbar.png" /> <b>Chat</b>.</li>
<li>Geben Sie Ihren Text in das entsprechende nachfolgende Feld ein.</li> <li>Geben Sie Ihren Text ins entsprechende Feld unten ein.</li>
<li>Klicken Sie auf <b>Senden</b>.</li> <li>klicken Sie auf <b>Senden</b>.</li>
</ol> </ol>
<p>Alle Nachrichten, die von Benutzern hinterlassen wurden, werden links in der Leiste angezeigt. Liegen ungelesene neue Nachrichten vor, sieht das Chat-Symbol wie folgt aus - <img alt="Chat" src="../images/chaticon_new.png" />.</p> <p>Alle Nachrichten, die von Benutzern hinterlassen wurden, werden links in der Leiste angezeigt. Liegen ungelesene neue Nachrichten vor, sieht das Chat-Symbol wie folgt aus - <img alt="Chat" src="../images/chaticon_new.png" />.</p>
<p>Um die Leiste mit den Chat-Nachrichten zu schließen, klicken Sie erneut auf das <img alt="Chat" src="../images/chaticon.png" /> Symbol.</p> <p>Um die Leiste mit den Chat-Nachrichten zu schließen, klicken Sie in der linken Seitenleiste auf das Symbol <img alt="Chat" src="../images/chaticon.png" /> oder klicken Sie in der oberen Symbolleiste erneut auf <img alt="Chat" src="../images/chat_toptoolbar.png" /> <b>Chat</b>.</p>
</div> </div>
<h3 id="comments">Kommentare</h3> <h3 id="comments">Kommentare</h3>
<p>Einen Kommentar hinterlassen:</p> <p>Einen Kommentar hinterlassen:</p>
<ol> <ol>
<li>Wählen Sie einen Textabschnitt, der Ihrer Meinung nach einen Fehler oder ein Problem enthält.</li> <li>Wählen Sie einen Textabschnitt, der Ihrer Meinung nach einen Fehler oder ein Problem enthält.</li>
<li>Wechseln Sie in der oberen Symbolleiste in die Registerkarte <b>Einfügen</b> oder <b>Überprüfen</b> und klicken Sie in der rechten Seitenleiste auf <img alt="Kommentare" src="../images/comment_toptoolbar.png" /> <b>Kommentare</b>, oder<br /> nutzen Sie das <img alt="Kommentare" src="../images/commentsicon.png" /> Symbol in der linken Seitenleiste, um das <b>Kommentarfeld</b> zu öffnen, klicken Sie anschließend auf <b>Kommentar hinzufügen</b> oder<br /> klicken Sie mit der rechten Maustaste auf den gewünschten Textabschnitt und wählen Sie die Option <b>Kommentar hinzufügen</b> aus dem Kontextmenü aus.</li> <li>Wechseln Sie in der oberen Symbolleiste in die Registerkarte <b>Einfügen</b> oder <b>Zusammenarbeit</b> und klicken Sie in der rechten Seitenleiste auf <img alt="Kommentar" src="../images/comment_toptoolbar.png" /> <b>Kommentare</b>, oder<br /> nutzen Sie das <img alt="Kommentare" src="../images/commentsicon.png" /> Symbol in der linken Seitenleiste, um das <b>Kommentarfeld</b> zu öffnen, klicken Sie anschließend auf <b>Kommentar hinzufügen</b> oder<br /> klicken Sie mit der rechten Maustaste auf den gewünschten Textabschnitt und wählen Sie die Option <b>Kommentar hinzufügen</b> aus dem Kontextmenü aus.</li>
<li>Geben Sie den gewünschten Text ein.</li> <li>Geben Sie den gewünschten Text ein.</li>
<li>Klicken Sie auf <b>Hinzufügen</b>.</li> <li>Klicken Sie auf <b>Kommentar hinzufügen/Hinzufügen</b>.</li>
</ol> </ol>
<p>Der Kommentar erscheint auf der Leiste links. Ein anderer Benutzer kann auf den hinzugefügten Kommentar antworten, Fragen stellen oder über die durchgeführte Arbeit berichten. Um auf einen Kommentar zu reagieren, klicken Sie auf unterhalb des Kommentars auf die Schaltfläche <b>Antwort hinzufügen</b>.</p> <p>Der Kommentar wird im linken Seitenbereich angezeigt. Alle Nutzer können nun auf hinzugefügte Kommentare antworten, Fragen stellen oder über durchgeführte Aktionen berichten. Klicken Sie dazu einfach in das Feld <b>Antworten</b>, direkt unter dem Kommentar.</p>
<p>Der von Ihnen kommentierte Textabschnitt wird im Dokument markiert. Um den Kommentar einzusehen, klicken Sie innerhalb des Abschnitts mit der Maus. Wenn Sie diese Funktion deaktivieren möchten, wechseln Sie in die Registerkarte <b>Datei</b>, wählen Sie die Option <b>Erweiterte Einstellungen...</b> und deaktivieren Sie das Kästchen <b>Live-Kommentare einblenden</b>. In diesem Fall werden die kommentierten Abschnitte nur markiert, wenn Sie auf <img alt="Kommentare" src="../images/commentsicon.png" /> klicken.</p> <p>Der von Ihnen kommentierte Textabschnitt wird im Dokument markiert. Um den Kommentar einzusehen, klicken Sie innerhalb des Abschnitts mit der Maus. Wenn Sie diese Funktion deaktivieren möchten, wechseln Sie in die Registerkarte <b>Datei</b>, wählen Sie die Option <b>Erweiterte Einstellungen...</b> und deaktivieren Sie das Kästchen <b>Live-Kommentare einblenden</b>. In diesem Fall werden die kommentierten Abschnitte nur markiert, wenn Sie auf <img alt="Kommentare" src="../images/commentsicon.png" /> klicken.</p>
<p>Sie können die von Ihnen hinzugefügten Kommentare wie folgt verwalten:</p> <p>Hinzugefügte Kommentare verwalten:</p>
<ul> <ul>
<li>bearbeiten - klicken Sie dazu auf <img alt="Bearbeiten" src="../images/editcommenticon.png" /></li> <li>bearbeiten - klicken Sie dazu auf <img alt="Bearbeiten" src="../images/editcommenticon.png" /></li>
<li>löschen - klicken Sie dazu auf <img alt="Löschen" src="../images/deletecommenticon.png" /></li> <li>löschen - klicken Sie dazu auf <img alt="Löschen" src="../images/deletecommenticon.png" /></li>
<li>die Diskussion schließen - klicken Sie dazu auf <img alt="Gelöst" src="../images/resolveicon.png" />, wenn die im Kommentar angegebene Aufgabe oder das Problem gelöst wurde. Danach erhält die Diskussion, die Sie mit Ihrem Kommentar geöffnet haben, den Status aufgelöst. Um die Diskussion wieder zu öffnen, klicken Sie auf <img alt="Erneut öffnen" src="../images/resolvedicon.png" />. Wenn Sie diese Funktion deaktivieren möchten, wechseln Sie in die Registerkarte <b>Datei</b>, wählen Sie die Option <b>Erweiterte Einstellungen...</b> und deaktivieren Sie das Kästchen <b>Gelöste Kommentare einblenden</b>, klicken Sie anschließend auf <b>Anwenden</b>. In diesem Fall werden die kommentierten Abschnitte nur markiert, nur wenn Sie auf <img alt="Kommentare" src="../images/commentsicon.png" /> klicken.</li> <li>die Diskussion schließen - klicken Sie dazu auf <img alt="Gelöst" src="../images/resolveicon.png" />, wenn die im Kommentar angegebene Aufgabe oder das Problem gelöst wurde. Danach erhält die Diskussion, die Sie mit Ihrem Kommentar geöffnet haben, den Status aufgelöst. Um die Diskussion wieder zu öffnen, klicken Sie auf <img alt="Erneut öffnen" src="../images/resolvedicon.png" />. Wenn Sie diese Funktion deaktivieren möchten, wechseln Sie in die Registerkarte <b>Datei</b>, wählen Sie die Option <b>Erweiterte Einstellungen...</b> und deaktivieren Sie das Kästchen <b>Gelöste Kommentare einblenden</b>, klicken Sie anschließend auf <b>Anwenden</b>. In diesem Fall werden die kommentierten Abschnitte nur markiert, wenn Sie auf <img alt="Kommentare" src="../images/commentsicon.png" /> klicken.</li>
</ul> </ul>
<p>Wenn Sie im Modus <b>Strikt</b> arbeiten, werden neue Kommentare, die von den anderen Benutzern hinzugefügt wurden, erst eingeblendet, wenn Sie in der linken oberen Ecke der oberen Symbolleiste auf <img alt="Speichern" src="../images/saveupdate.png" /> geklickt haben.</p> <p>Wenn Sie im Modus <b>Strikt</b> arbeiten, werden neue Kommentare, die von den anderen Benutzern hinzugefügt wurden, erst eingeblendet, wenn Sie in der linken oberen Ecke der oberen Symbolleiste auf <img alt="Speichern" src="../images/saveupdate.png" /> geklickt haben.</p>
<p>Um die Leiste mit den Kommentaren zu schließen, klicken Sie erneut auf <img alt="Kommentare" src="../images/commentsicon.png" /> in der linken Seitenleiste.</p> <p>Um die Leiste mit den Kommentaren zu schließen, klicken Sie in der linken Seitenleiste erneut auf <img alt="Kommentare" src="../images/commentsicon.png" />.</p>
</div> </div>
</body> </body>
</html> </html>

View file

@ -56,7 +56,7 @@
<tr> <tr>
<td>Speichern unter...</td> <td>Speichern unter...</td>
<td>Strg+Unschalt+S</td> <td>Strg+Unschalt+S</td>
<td>Das Dokument wird in einem der unterstützten Dateiformate auf der Festplatte gespeichert: PDF, TXT, DOCX, ODT, HTML.</td> <td>Das Dokument wird in einem der unterstützten Dateiformate auf der Festplatte gespeichert: DOCX, PDF, TXT, ODT, RTF, HTML.</td>
</tr> </tr>
<tr> <tr>
<td>Vollbild</td> <td>Vollbild</td>

View file

@ -21,7 +21,7 @@
<p>Um Änderungen anzuzeigen, die von einem Rezensenten vorgeschlagen wurden, aktivieren Sie die Option <b>Änderungen nachverfolgen</b>:</p> <p>Um Änderungen anzuzeigen, die von einem Rezensenten vorgeschlagen wurden, aktivieren Sie die Option <b>Änderungen nachverfolgen</b>:</p>
<ul> <ul>
<li>Klicken Sie in der rechten unteren Statusleiste auf das <img alt="Änderungen nachverfolgen" src="../images/trackchangesstatusbar.png" /> Symbol oder</li> <li>Klicken Sie in der rechten unteren Statusleiste auf das <img alt="Änderungen nachverfolgen" src="../images/trackchangesstatusbar.png" /> Symbol oder</li>
<li>wechseln Sie in der oberen Symbolleiste in die Registerkarte <b>Überprüfen</b> und klicken Sie auf <img alt="Änderungen nachverfolgen" src="../images/trackchangestoptoolbar.png" /> <b>Änderungen nachverfolgen</b>.</li> <li>Wechseln Sie in der oberen Symbolleiste in die Registerkarte <b>Zusammenarbeit</b> und klicken Sie auf <img alt="Änderungen nachverfolgen" src="../images/trackchangestoptoolbar.png" /> <b>Änderungen nachverfolgen</b>.</li>
</ul> </ul>
<p class="note"><b>Hinweis</b>: Der Rezensent muss die Option <b>Änderungen nachverfolgen</b> nicht aktivieren. Die Funktion ist standardmäßig aktiviert und kann nicht deaktiviert werden, wenn das Dokument mit Zugriffsrechten nur für die Überprüfung freigegeben ist.</p> <p class="note"><b>Hinweis</b>: Der Rezensent muss die Option <b>Änderungen nachverfolgen</b> nicht aktivieren. Die Funktion ist standardmäßig aktiviert und kann nicht deaktiviert werden, wenn das Dokument mit Zugriffsrechten nur für die Überprüfung freigegeben ist.</p>
<h3 id="displaymode">Modus Änderungen anzeigen lassen</h3> <h3 id="displaymode">Modus Änderungen anzeigen lassen</h3>
@ -29,7 +29,7 @@
<ul> <ul>
<li><b>Alle Änderungen (Bearbeiten)</b> - diese Option ist standardmäßig ausgewählt. Dieser Modus ermöglicht es Änderungsvorschläge anzuzeigen und das Dokument zu bearbeiten.</li> <li><b>Alle Änderungen (Bearbeiten)</b> - diese Option ist standardmäßig ausgewählt. Dieser Modus ermöglicht es Änderungsvorschläge anzuzeigen und das Dokument zu bearbeiten.</li>
<li><b>Alle Änderungen angenommen</b> - In diesem Modus werden alle Änderungen so angezeigt, als wären sie angenommen worden. Die Änderungen werden nicht wirklich akzeptiert, die Funktion ermöglicht Ihnen lediglich eine Vorschau, für den Fall, dass alle Änderungen angenommen werden. In diesem Modus kann das Dokument nicht bearbeitet werden.</li> <li><b>Alle Änderungen angenommen</b> - In diesem Modus werden alle Änderungen so angezeigt, als wären sie angenommen worden. Die Änderungen werden nicht wirklich akzeptiert, die Funktion ermöglicht Ihnen lediglich eine Vorschau, für den Fall, dass alle Änderungen angenommen werden. In diesem Modus kann das Dokument nicht bearbeitet werden.</li>
<li><b>Alle Änderungen abgelehnt</b> - In diesem Modus werden alle Änderungen so angezeigt, als wären sie abgelehnt worden. Die Änderungen werden nicht wirklich abgelehnt, die Funktion ermöglicht Ihnen lediglich eine Vorschau, für den Fall, dass alle Änderungen abgelehnt werden. In diesem Modus kann das Dokument nicht bearbeitet werden.</li> <li><b>Original</b> - In diesem Modus werden alle Änderungen so angezeigt, als wären sie abgelehnt worden. Die Änderungen werden nicht wirklich abgelehnt, die Funktion ermöglicht Ihnen lediglich eine Vorschau, für den Fall, dass alle Änderungen abgelehnt werden. In diesem Modus kann das Dokument nicht bearbeitet werden.</li>
</ul> </ul>
<h3 id="managechanges">Änderungen annehmen oder ablehnen</h3> <h3 id="managechanges">Änderungen annehmen oder ablehnen</h3>
<p>Über die Schaltflächen <img alt="Vorherige Änderung" src="../images/review_previous.png" /> <b>Vorherige</b> und <img alt="Nächste Änderung" src="../images/review_next.png" /> <b>Nächste</b> in der oberen Symbolleiste, können Sie zwischen den Änderungen navigieren.</p> <p>Über die Schaltflächen <img alt="Vorherige Änderung" src="../images/review_previous.png" /> <b>Vorherige</b> und <img alt="Nächste Änderung" src="../images/review_next.png" /> <b>Nächste</b> in der oberen Symbolleiste, können Sie zwischen den Änderungen navigieren.</p>

View file

@ -15,12 +15,11 @@
</div> </div>
<h1>Rechtschreibprüfung</h1> <h1>Rechtschreibprüfung</h1>
<p>Der <b>Dokumenteneditor</b> bietet Ihnen die Möglichkeit, die Rechtschreibung Ihres Textes in einer bestimmten Sprache zu überprüfen und Fehler während der Bearbeitung zu korrigieren.</p> <p>Der <b>Dokumenteneditor</b> bietet Ihnen die Möglichkeit, die Rechtschreibung Ihres Textes in einer bestimmten Sprache zu überprüfen und Fehler während der Bearbeitung zu korrigieren.</p>
<p>Wählen Sie zunächst die <b>Sprache</b> für Ihr Dokument aus Wechseln Sie in der oberen Symbolleiste in die Registerkarte <b>Überprüfen</b> und klicken Sie auf das Symbol <img alt="Dokumentsprache festlegen" src="../images/document_language.png" /> <b>Sprache</b>. Wählen Sie nun im angezeigten Fenster die gewünschte Sprache und klicken Sie auf <b>OK</b>. Die ausgewählte Sprache wird auf das gesamte Dokument angewandt.</p> <p>Wählen Sie zunächst die <b>Sprache</b> für Ihr Dokument aus. Klicken Sie in der Statusleiste auf das Symbol <img alt="Dokumentsprache festlegen" src="../images/document_language.png" /> <b>Rechtschreibprüfung</b>. Wählen Sie nun im angezeigten Fenster die gewünschte Sprache und klicken Sie auf <b>OK</b>. Die ausgewählte Sprache wird auf das gesamte Dokument angewandt.</p>
<p><img alt="Fenster Dokumentsprache festlegen" src="../images/document_language_window.png" /></p> <p><img alt="Fenster Dokumentsprache festlegen" src="../images/document_language_window.png" /></p>
<p>Um für einen Abschnitt im Dokument eine <b>andere Sprache auszuwählen</b>, markieren Sie den entsprechenden Abschnitt mit der Maus und klicken Sie anschließend auf das <img alt="Rechtschreibprüfung - Sprachenauswahl" src="../images/spellchecking_language.png" /> Menü in der Statusleiste.</p> <p>Um für einen Abschnitt im Dokument eine <b>andere Sprache auszuwählen</b>, markieren Sie den entsprechenden Abschnitt mit der Maus und klicken Sie anschließend auf das <img alt="Rechtschreibprüfung - Sprachenauswahl" src="../images/spellchecking_language.png" /> Menü in der Statusleiste.</p>
<p>Rechtschreibprüfung <b>aktivieren</b>:</p> <p>Rechtschreibprüfung <b>aktivieren</b>:</p>
<ul> <ul>
<li>Klicken Sie in der Registerkarte <b>Überprüfen</b> auf das Symbol <img alt="Rechtschreibprüfung obere Symbolleiste" src="../images/spellchecking_toptoolbar.png" /> <b>Rechtschreibprüfung</b> oder</li>
<li>klicken Sie in der Statusleiste auf das Symbol <img alt="Rechtschreibprüfung deaktiviert" src="../images/spellcheckdeactivated.png" /> <b>Rechtschreibprüfung</b> oder</li> <li>klicken Sie in der Statusleiste auf das Symbol <img alt="Rechtschreibprüfung deaktiviert" src="../images/spellcheckdeactivated.png" /> <b>Rechtschreibprüfung</b> oder</li>
<li>öffnen Sie in der oberen Symbolleiste die Registerkarte <b>Datei</b> und wählen Sie die Option <b>erweiterte Einstellungen...</b>, setzen Sie das Häkchen in der Box <b>Rechtschreibprüfung aktivieren</b> und klicken Sie auf <b>Übernehmen</b>.</li> <li>öffnen Sie in der oberen Symbolleiste die Registerkarte <b>Datei</b> und wählen Sie die Option <b>erweiterte Einstellungen...</b>, setzen Sie das Häkchen in der Box <b>Rechtschreibprüfung aktivieren</b> und klicken Sie auf <b>Übernehmen</b>.</li>
</ul> </ul>
@ -34,7 +33,6 @@
<p><img alt="Rechtschreibprüfung" src="../images/spellchecking.png" /></p> <p><img alt="Rechtschreibprüfung" src="../images/spellchecking.png" /></p>
<p>Rechtschreibprüfung <b>deaktivieren</b>:</p> <p>Rechtschreibprüfung <b>deaktivieren</b>:</p>
<ul> <ul>
<li>klicken Sie in der Registerkarte <b>Überprüfen</b> auf das Symbol <img alt="Rechtschreibprüfung obere Symbolleiste" src="../images/spellchecking_toptoolbar_activated.png" /> <b>Rechtschreibprüfung</b> oder</li>
<li>klicken Sie in der Statusleiste auf das Symbol <img alt="Rechtschreibprüfung aktiviert" src="../images/spellcheckactivated.png" /> <b>Rechtschreibprüfung</b> oder</li> <li>klicken Sie in der Statusleiste auf das Symbol <img alt="Rechtschreibprüfung aktiviert" src="../images/spellcheckactivated.png" /> <b>Rechtschreibprüfung</b> oder</li>
<li>öffnen Sie in der oberen Symbolleiste die Registerkarte <b>Datei</b> und wählen Sie die Option <b>erweiterte Einstellungen...</b>, entfernen Sie das Häkchen in der Box <b>Rechtschreibprüfung aktivieren</b> und klicken Sie auf <b>Übernehmen</b>.</li> <li>öffnen Sie in der oberen Symbolleiste die Registerkarte <b>Datei</b> und wählen Sie die Option <b>erweiterte Einstellungen...</b>, entfernen Sie das Häkchen in der Box <b>Rechtschreibprüfung aktivieren</b> und klicken Sie auf <b>Übernehmen</b>.</li>
</ul> </ul>

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