release/v5.2.0
39
CHANGELOG.md
|
@ -1,15 +1,44 @@
|
|||
# Change log
|
||||
## 5.1.3
|
||||
## 5.2
|
||||
### All 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
|
||||
* 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
|
||||
* Add Spanish, French formula translations
|
||||
* Change cell format from context menu (bug #16272)
|
||||
* Set options for saving in PDF format (bug #34914)
|
||||
* 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
|
||||
* Add hints to presentation themes (bug #21362)
|
||||
* Add presenter preview in the viewer (bug #37499)
|
||||
* Enable closing chart dialog while loading (bug #36870)
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
comment: <can comment in view mode> // default = edit,
|
||||
modifyFilter: <can add, remove and save filter in the spreadsheet> // default = true
|
||||
modifyContentControl: <can modify content controls in documenteditor> // default = true
|
||||
fillForms: <can edit forms in view mode> // default = edit || review
|
||||
}
|
||||
},
|
||||
editorConfig: {
|
||||
|
@ -120,7 +121,8 @@
|
|||
autosave: true,
|
||||
forcesave: false,
|
||||
commentAuthorOnly: false,
|
||||
showReviewChanges: false
|
||||
showReviewChanges: false,
|
||||
help: true
|
||||
},
|
||||
plugins: {
|
||||
autostart: ['asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}'],
|
||||
|
@ -192,6 +194,7 @@
|
|||
_config.editorConfig.canSendEmailAddresses = _config.events && !!_config.events.onRequestEmailAddresses;
|
||||
_config.editorConfig.canRequestEditRights = _config.events && !!_config.events.onRequestEditRights;
|
||||
_config.editorConfig.canRequestClose = _config.events && !!_config.events.onRequestClose;
|
||||
_config.editorConfig.canRename = _config.events && !!_config.events.onRequestRename;
|
||||
_config.frameEditorId = placeholderId;
|
||||
|
||||
_config.events && !!_config.events.onReady && console.log("Obsolete: The onReady event is deprecated. Please use onAppReady instead.");
|
||||
|
|
|
@ -187,6 +187,7 @@
|
|||
|
||||
.close {
|
||||
font-size: 28px;
|
||||
font-family: Arial, sans-serif;
|
||||
color: #666666;
|
||||
opacity: 0.8;
|
||||
display: block;
|
||||
|
|
|
@ -61,12 +61,11 @@ define([
|
|||
},
|
||||
|
||||
getEditingCount: function() {
|
||||
var count = 0;
|
||||
this.each(function(user){
|
||||
user.get('online') && !user.get('view') && ++count;
|
||||
});
|
||||
return this.filter(function(item){return item.get('online') && !item.get('view')}).length;
|
||||
},
|
||||
|
||||
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) {
|
||||
|
@ -74,6 +73,13 @@ define([
|
|||
function(model){
|
||||
return model.get('id') == id;
|
||||
});
|
||||
},
|
||||
|
||||
findOriginalUser: function(id) {
|
||||
return this.find(
|
||||
function(model){
|
||||
return model.get('idOriginal') == id;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -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 ) {
|
||||
var opts = me.options.signals;
|
||||
if ( !(opts.indexOf('disabled') < 0) ) {
|
||||
|
|
|
@ -77,7 +77,7 @@ define([
|
|||
Common.UI.ComboBorderSize = Common.UI.ComboBox.extend(_.extend({
|
||||
template: _.template([
|
||||
'<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>',
|
||||
'<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">',
|
||||
|
|
|
@ -193,6 +193,15 @@ define([
|
|||
if (modalParents.length > 0) {
|
||||
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));
|
||||
|
|
|
@ -86,15 +86,30 @@ define([
|
|||
initialize : function(options) {
|
||||
Common.UI.BaseView.prototype.initialize.call(this, options);
|
||||
|
||||
var _template_tabs =
|
||||
'<section class="tabs">' +
|
||||
'<a class="scroll left"><i class="icon"><</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">></i></a>' +
|
||||
'</section>';
|
||||
|
||||
this.$layout = $(options.template({
|
||||
tabs: options.tabs
|
||||
tabsmarkup: _.template(_template_tabs)({items: options.tabs})
|
||||
}));
|
||||
|
||||
config.tabs = options.tabs;
|
||||
$(document.body).on('click', onClickDocument.bind(this));
|
||||
|
||||
Common.NotificationCenter.on('tab:visible', _.bind(function(action, visible){
|
||||
this.setVisible(action, visible)
|
||||
this.setVisible(action, visible);
|
||||
}, this));
|
||||
},
|
||||
|
||||
|
@ -127,8 +142,12 @@ define([
|
|||
if ( this.isFolded ) {
|
||||
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.on($.support.transition.end, function (e) {
|
||||
if ( optsFold.$bar.hasClass('folded') && !optsFold.$bar.hasClass('expanded') )
|
||||
optsFold.$bar.toggleClass('z-clear', true);
|
||||
});
|
||||
optsFold.$box.on({
|
||||
mouseleave: function (e) {
|
||||
// optsFold.timer = setTimeout( function(e) {
|
||||
|
@ -167,13 +186,16 @@ define([
|
|||
|
||||
} else {
|
||||
// clearTimeout(optsFold.timer);
|
||||
optsFold.$bar.removeClass('folded');
|
||||
optsFold.$bar.removeClass('folded z-clear');
|
||||
optsFold.$box.off();
|
||||
|
||||
var active_panel = optsFold.$box.find('.panel.active');
|
||||
if ( active_panel.length ) {
|
||||
var tab = active_panel.data('tab');
|
||||
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() {
|
||||
// clearTimeout(optsFold.timer);
|
||||
|
||||
optsFold.$bar.removeClass('z-clear');
|
||||
optsFold.$bar.addClass('expanded');
|
||||
// optsFold.timer = setTimeout(this.collapse, optsFold.timeout);
|
||||
},
|
||||
|
@ -206,28 +229,40 @@ define([
|
|||
},
|
||||
|
||||
onTabClick: function (e) {
|
||||
var _is_active = $(e.currentTarget).hasClass('active');
|
||||
if ( _is_active ) {
|
||||
if ( this.isFolded ) {
|
||||
// this.collapse();
|
||||
var me = this;
|
||||
|
||||
var $target = $(e.currentTarget);
|
||||
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 {
|
||||
var tab = $(e.target).data('tab');
|
||||
this.setTab(tab);
|
||||
if ( !$target.hasClass('active') && !islone ) {
|
||||
me.setTab(tab);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
setTab: function (tab) {
|
||||
var me = this;
|
||||
if ( !tab ) {
|
||||
onShowFullviewPanel.call(this, false);
|
||||
// onShowFullviewPanel.call(this, false);
|
||||
|
||||
if ( this.isFolded ) { this.collapse(); }
|
||||
else tab = this.lastPanel;
|
||||
}
|
||||
|
||||
if ( tab ) {
|
||||
this.$tabs.removeClass('active');
|
||||
this.$panels.removeClass('active');
|
||||
me.$tabs.removeClass('active');
|
||||
me.$panels.removeClass('active');
|
||||
|
||||
var panel = this.$panels.filter('[data-tab=' + tab + ']');
|
||||
if ( panel.length ) {
|
||||
|
@ -236,10 +271,10 @@ define([
|
|||
}
|
||||
|
||||
if ( panel.length ) {
|
||||
if ( this.isFolded ) this.expand();
|
||||
if ( me.isFolded ) me.expand();
|
||||
} else {
|
||||
onShowFullviewPanel.call(this, true);
|
||||
if ( this.isFolded ) this.collapse();
|
||||
// onShowFullviewPanel.call(this, true);
|
||||
if ( me.isFolded ) me.collapse();
|
||||
}
|
||||
|
||||
var $tp = this.$tabs.find('> a[data-tab=' + tab + ']').parent();
|
||||
|
@ -273,6 +308,8 @@ define([
|
|||
|
||||
if ($target.length) {
|
||||
$target.after(panel);
|
||||
} else {
|
||||
panel.appendTo(this.$layout.find('.box-panels'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
if (effectcolors===undefined || standartcolors===undefined) return;
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ define([
|
|||
var me = this;
|
||||
Common.NotificationCenter.on('layout:changed', function(area){
|
||||
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.setupAutoSizingTextBox();
|
||||
}
|
||||
|
@ -148,6 +148,7 @@ define([
|
|||
if (user) {
|
||||
var usermodel = new Common.Models.User({
|
||||
id : user.asc_getId(),
|
||||
idOriginal : user.asc_getIdOriginal(),
|
||||
username : user.asc_getUserName(),
|
||||
online : true,
|
||||
color : user.asc_getColor(),
|
||||
|
@ -170,6 +171,7 @@ define([
|
|||
if (!user) {
|
||||
usersStore.add(new Common.Models.User({
|
||||
id : change.asc_getId(),
|
||||
idOriginal : change.asc_getIdOriginal(),
|
||||
username : change.asc_getUserName(),
|
||||
online : change.asc_getState(),
|
||||
color : change.asc_getColor(),
|
||||
|
@ -188,7 +190,7 @@ define([
|
|||
var array = [];
|
||||
messages.forEach(function(msg) {
|
||||
array.push(new Common.Models.ChatMessage({
|
||||
userid : msg.user,
|
||||
userid : msg.useridoriginal,
|
||||
message : msg.message,
|
||||
username : msg.username
|
||||
}));
|
||||
|
|
|
@ -46,7 +46,8 @@ define([
|
|||
'core',
|
||||
'common/main/lib/model/Comment',
|
||||
'common/main/lib/collection/Comments',
|
||||
'common/main/lib/view/Comments'
|
||||
'common/main/lib/view/Comments',
|
||||
'common/main/lib/view/ReviewPopover'
|
||||
], function () {
|
||||
'use strict';
|
||||
|
||||
|
@ -67,7 +68,7 @@ define([
|
|||
],
|
||||
views : [
|
||||
'Common.Views.Comments',
|
||||
'Common.Views.CommentsPopover'
|
||||
'Common.Views.ReviewPopover'
|
||||
],
|
||||
sdkViewName : '#id_main',
|
||||
subEditStrings : {},
|
||||
|
@ -101,6 +102,27 @@ define([
|
|||
|
||||
// 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:disableHint': _.bind(this.disableHint, 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('layout:changed', function(area){
|
||||
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, area);
|
||||
|
@ -125,15 +147,16 @@ define([
|
|||
|
||||
this.popoverComments = new Common.Collections.Comments();
|
||||
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', {
|
||||
store : this.collection,
|
||||
popoverComments : this.popoverComments
|
||||
});
|
||||
this.view = this.createView('Common.Views.Comments', { store: this.collection });
|
||||
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);
|
||||
},
|
||||
setConfig: function (data, api) {
|
||||
|
@ -162,7 +185,6 @@ define([
|
|||
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_onUpdateCommentPosition', _.bind(this.onApiUpdateCommentPosition, this));
|
||||
|
||||
this.api.asc_registerCallback('asc_onDocumentPlaceChanged', _.bind(this.onDocumentPlaceChanged, this));
|
||||
}
|
||||
},
|
||||
|
@ -267,7 +289,7 @@ define([
|
|||
|
||||
if (comment.get('unattached')) {
|
||||
if (this.getPopover()) {
|
||||
this.getPopover().hide();
|
||||
this.getPopover().hideComments();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -293,7 +315,7 @@ define([
|
|||
}
|
||||
|
||||
if (this.getPopover()) {
|
||||
this.getPopover().hide();
|
||||
this.getPopover().hideComments();
|
||||
}
|
||||
|
||||
this.isSelectedComment = false;
|
||||
|
@ -667,7 +689,7 @@ define([
|
|||
this.popoverComments.remove(model);
|
||||
if (0 === this.popoverComments.length) {
|
||||
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())) :
|
||||
((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('userid', data.asc_getUserId());
|
||||
comment.set('username', data.asc_getUserName());
|
||||
comment.set('usercolor', (user) ? user.get('color') : null);
|
||||
comment.set('resolved', data.asc_getSolved());
|
||||
comment.set('quote', data.asc_getQuoteText());
|
||||
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())) :
|
||||
((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({
|
||||
id : Common.UI.getId(),
|
||||
userid : data.asc_getReply(i).asc_getUserId(),
|
||||
username : data.asc_getReply(i).asc_getUserName(),
|
||||
usercolor : (user) ? user.get('color') : null,
|
||||
date : t.dateToLocaleTimeString(dateReply),
|
||||
reply : data.asc_getReply(i).asc_getText(),
|
||||
time : dateReply.getTime(),
|
||||
|
@ -751,15 +777,14 @@ define([
|
|||
},
|
||||
onApiLockComment: function (id,userId) {
|
||||
var cur = this.findComment(id),
|
||||
usersStore = null,
|
||||
user = null;
|
||||
|
||||
if (cur) {
|
||||
usersStore = this.getApplication().getCollection('Common.Collections.Users');
|
||||
if (usersStore) {
|
||||
user = usersStore.findWhere({id: userId});
|
||||
if (this.userCollection) {
|
||||
user = this.userCollection.findUser(userId);
|
||||
if (user) {
|
||||
this.getPopover() && this.getPopover().saveText();
|
||||
this.view.saveText();
|
||||
cur.set('lock', true);
|
||||
cur.set('lockuserid', this.view.getUserName(user.get('username')));
|
||||
}
|
||||
|
@ -771,6 +796,7 @@ define([
|
|||
if (cur) {
|
||||
cur.set('lock', false);
|
||||
this.getPopover() && this.getPopover().loadText();
|
||||
this.view.loadText();
|
||||
}
|
||||
},
|
||||
onApiShowComment: function (uids, posX, posY, leftX, opts, hint) {
|
||||
|
@ -805,9 +831,8 @@ define([
|
|||
saveTxtReplyId = '',
|
||||
comment = null,
|
||||
text = '',
|
||||
animate = true;
|
||||
|
||||
this.popoverComments.reset();
|
||||
animate = true,
|
||||
comments = [];
|
||||
|
||||
for (i = 0; i < uids.length; ++i) {
|
||||
saveTxtId = uids[i];
|
||||
|
@ -845,18 +870,22 @@ define([
|
|||
this.isSelectedComment = !hint || !this.hintmode;
|
||||
this.uids = _.clone(uids);
|
||||
|
||||
this.popoverComments.push(comment);
|
||||
comments.push(comment);
|
||||
if (!this._dontScrollToComment)
|
||||
this.view.commentsView.scrollToRecord(comment);
|
||||
this._dontScrollToComment = false;
|
||||
}
|
||||
comments.sort(function (a, b) {
|
||||
return a.get('time') - b.get('time');
|
||||
});
|
||||
this.popoverComments.reset(comments);
|
||||
|
||||
if (popover.isVisible()) {
|
||||
popover.hide();
|
||||
}
|
||||
|
||||
popover.setLeftTop(posX, posY, leftX);
|
||||
popover.show(animate, false, true, text);
|
||||
popover.showComments(animate, false, true, text);
|
||||
}
|
||||
},
|
||||
onApiHideComment: function (hint) {
|
||||
|
@ -880,7 +909,7 @@ define([
|
|||
});
|
||||
|
||||
this.getPopover().saveText(true);
|
||||
this.getPopover().hide();
|
||||
this.getPopover().hideComments();
|
||||
|
||||
this.collection.clearEditing();
|
||||
this.popoverComments.clearEditing();
|
||||
|
@ -911,9 +940,7 @@ define([
|
|||
if (this.isModeChanged)
|
||||
this.onApiShowComment(uids, posX, posY, leftX);
|
||||
if (0 === this.popoverComments.length) {
|
||||
|
||||
this.popoverComments.reset();
|
||||
|
||||
var comments = [];
|
||||
for (i = 0; i < uids.length; ++i) {
|
||||
saveTxtId = uids[i];
|
||||
saveTxtReplyId = uids[i] + '-R';
|
||||
|
@ -930,13 +957,17 @@ define([
|
|||
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;
|
||||
this.getPopover().show(useAnimation, undefined, undefined, text);
|
||||
this.getPopover().showComments(useAnimation, undefined, undefined, text);
|
||||
} 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);
|
||||
|
@ -1071,19 +1102,45 @@ define([
|
|||
}
|
||||
}
|
||||
},
|
||||
|
||||
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
|
||||
|
||||
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) {
|
||||
var date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :
|
||||
((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime())));
|
||||
var user = this.userCollection.findOriginalUser(data.asc_getUserId());
|
||||
var comment = new Common.Models.Comment({
|
||||
uid : id,
|
||||
userid : data.asc_getUserId(),
|
||||
username : data.asc_getUserName(),
|
||||
usercolor : (user) ? user.get('color') : null,
|
||||
date : this.dateToLocaleTimeString(date),
|
||||
quote : data.asc_getQuoteText(),
|
||||
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())) :
|
||||
((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({
|
||||
id : Common.UI.getId(),
|
||||
userid : data.asc_getReply(i).asc_getUserId(),
|
||||
username : data.asc_getReply(i).asc_getUserName(),
|
||||
usercolor : (user) ? user.get('color') : null,
|
||||
date : this.dateToLocaleTimeString(date),
|
||||
reply : data.asc_getReply(i).asc_getText(),
|
||||
time : date.getTime(),
|
||||
|
@ -1155,12 +1214,14 @@ define([
|
|||
return;
|
||||
}
|
||||
|
||||
var user = this.userCollection.findOriginalUser(this.currentUserId);
|
||||
var comment = new Common.Models.Comment({
|
||||
id: -1,
|
||||
time: date.getTime(),
|
||||
date: this.dateToLocaleTimeString(date),
|
||||
userid: this.currentUserId,
|
||||
username: this.currentUserName,
|
||||
usercolor: (user) ? user.get('color') : null,
|
||||
editTextInPopover: true,
|
||||
showReplyInPopover: false,
|
||||
hideAddReply: true,
|
||||
|
@ -1196,7 +1257,7 @@ define([
|
|||
anchor.asc_getY(),
|
||||
this.hintmode ? anchor.asc_getX() : undefined);
|
||||
|
||||
dialog.show(true, false, true);
|
||||
dialog.showComments(true, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1214,7 +1275,7 @@ define([
|
|||
|
||||
this.popoverComments.reset();
|
||||
if (this.getPopover().isVisible()) {
|
||||
this.getPopover().hide();
|
||||
this.getPopover().hideComments();
|
||||
}
|
||||
comment.asc_putText(commentVal);
|
||||
comment.asc_putTime(this.utcDateToString(new Date()));
|
||||
|
@ -1251,7 +1312,7 @@ define([
|
|||
});
|
||||
|
||||
if (dialog.isVisible()) {
|
||||
dialog.hide();
|
||||
dialog.hideComments();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1296,7 +1357,7 @@ define([
|
|||
anchor.asc_getY(),
|
||||
this.hintmode ? anchor.asc_getX() : undefined);
|
||||
|
||||
this.getPopover().show(true, false, true);
|
||||
this.getPopover().showComments(true, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -159,7 +159,6 @@ define([
|
|||
onSetHistoryData: function(opts) {
|
||||
if (opts.data.error) {
|
||||
var config = {
|
||||
closable: false,
|
||||
title: this.notcriticalErrorTitle,
|
||||
msg: opts.data.error,
|
||||
iconCls: 'warn',
|
||||
|
|
|
@ -59,7 +59,7 @@ define([
|
|||
'render:before' : function (toolbar) {
|
||||
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};
|
||||
me.$toolbarPanelPlugins = me.panelPlugins.getPanel();
|
||||
|
||||
|
@ -166,6 +166,7 @@ define([
|
|||
variation.set_Buttons(itemVar.get('buttons'));
|
||||
variation.set_Size(itemVar.get('size'));
|
||||
variation.set_InitOnSelectionChanged(itemVar.get('initOnSelectionChanged'));
|
||||
variation.set_Events(itemVar.get('events'));
|
||||
variationsArr.push(variation);
|
||||
});
|
||||
plugin.set_Variations(variationsArr);
|
||||
|
@ -195,19 +196,22 @@ define([
|
|||
me.$toolbarPanelPlugins.empty();
|
||||
|
||||
var _group = $('<div class="group"></div>'),
|
||||
rank = -1;
|
||||
rank = -1,
|
||||
rank_plugins = 0;
|
||||
collection.each(function (model) {
|
||||
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);
|
||||
$('<div class="separator long"></div>').appendTo(me.$toolbarPanelPlugins);
|
||||
_group = $('<div class="group"></div>');
|
||||
rank_plugins = 0;
|
||||
}
|
||||
|
||||
var btn = me.panelPlugins.createPluginButton(model);
|
||||
if (btn) {
|
||||
var $slot = $('<span class="slot"></span>').appendTo(_group);
|
||||
btn.render($slot);
|
||||
rank_plugins++;
|
||||
}
|
||||
rank = new_rank;
|
||||
});
|
||||
|
|
|
@ -87,14 +87,13 @@ define([
|
|||
if (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));
|
||||
if (this.appConfig.canProtect) {
|
||||
Common.NotificationCenter.on('protect:sign', _.bind(this.onSignatureRequest, 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_onUpdateSignatures', _.bind(this.onApiUpdateSignatures, this));
|
||||
}
|
||||
if (this.appConfig.isSignatureSupport) {
|
||||
Common.NotificationCenter.on('protect:sign', _.bind(this.onSignatureRequest, 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_onUpdateSignatures', _.bind(this.onApiUpdateSignatures, this));
|
||||
}
|
||||
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this));
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ define([
|
|||
'common/main/lib/model/ReviewChange',
|
||||
'common/main/lib/collection/ReviewChanges',
|
||||
'common/main/lib/view/ReviewChanges',
|
||||
'common/main/lib/view/ReviewPopover',
|
||||
'common/main/lib/view/LanguageDialog'
|
||||
], function () {
|
||||
'use strict';
|
||||
|
@ -58,7 +59,7 @@ define([
|
|||
],
|
||||
views : [
|
||||
'Common.Views.ReviewChanges',
|
||||
'Common.Views.ReviewChangesPopover'
|
||||
'Common.Views.ReviewPopover'
|
||||
],
|
||||
sdkViewName : '#id_main',
|
||||
|
||||
|
@ -69,8 +70,6 @@ define([
|
|||
'settings:apply': this.applySettings.bind(this)
|
||||
},
|
||||
'Common.Views.ReviewChanges': {
|
||||
|
||||
// comments handlers
|
||||
'reviewchange:accept': _.bind(this.onAcceptClick, this),
|
||||
'reviewchange:reject': _.bind(this.onRejectClick, this),
|
||||
'reviewchange:delete': _.bind(this.onDeleteClick, this),
|
||||
|
@ -83,6 +82,11 @@ define([
|
|||
'reviewchange:accept': _.bind(this.onAcceptClick, this),
|
||||
'reviewchange:reject': _.bind(this.onRejectClick, 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('app:ready', this.onAppReady.bind(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) {
|
||||
this.setApi(api);
|
||||
|
@ -119,12 +126,7 @@ define([
|
|||
setMode: function(mode) {
|
||||
this.appConfig = mode;
|
||||
this.popoverChanges = new Common.Collections.ReviewChanges();
|
||||
|
||||
this.view = this.createView('Common.Views.ReviewChanges', {
|
||||
// store : this.collection,
|
||||
popoverChanges : this.popoverChanges,
|
||||
mode : mode
|
||||
});
|
||||
this.view = this.createView('Common.Views.ReviewChanges', { mode: mode });
|
||||
|
||||
return this;
|
||||
},
|
||||
|
@ -150,10 +152,10 @@ define([
|
|||
|
||||
if (animate) {
|
||||
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) {
|
||||
this.view.btnAccept.setDisabled(lock==true);
|
||||
|
@ -172,8 +174,8 @@ define([
|
|||
this._state.posx = this._state.posy = -1000;
|
||||
this._state.changes_length = 0;
|
||||
this._state.popoverVisible = false;
|
||||
this.getPopover().hide();
|
||||
this.popoverChanges.reset();
|
||||
this.getPopover().hideReview();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -191,7 +193,7 @@ define([
|
|||
} else if (this.popoverChanges.length>0) {
|
||||
if (!this.getPopover().isVisible())
|
||||
this.getPopover().show(false);
|
||||
this.getPopover().setLeftTop(posX+25, posY);
|
||||
this.getPopover().setLeftTop(posX, posY);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -205,7 +207,14 @@ define([
|
|||
},
|
||||
|
||||
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
|
||||
|
@ -386,12 +395,12 @@ define([
|
|||
|
||||
}
|
||||
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({
|
||||
uid : Common.UI.getId(),
|
||||
userid : item.get_UserId(),
|
||||
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),
|
||||
changetext : changetext,
|
||||
id : Common.UI.getId(),
|
||||
|
@ -488,7 +497,7 @@ define([
|
|||
state = (state == 'on');
|
||||
|
||||
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);
|
||||
}
|
||||
|
@ -603,17 +612,9 @@ define([
|
|||
me.api.asc_SetTrackRevisions(state);
|
||||
};
|
||||
|
||||
if ( config.isReviewOnly ) {
|
||||
me.api.asc_HaveRevisionsChanges() && me.view.markChanges(true);
|
||||
|
||||
_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"));
|
||||
}
|
||||
var state = config.isReviewOnly || Common.localStorage.getBool(me.view.appPrefix + "track-changes-" + (config.fileKey || ''));
|
||||
me.api.asc_HaveRevisionsChanges() && me.view.markChanges(true);
|
||||
_setReviewStatus(state);
|
||||
|
||||
if ( typeof (me.appConfig.customization) == 'object' && (me.appConfig.customization.showReviewChanges==true) ) {
|
||||
me.dlgChanges = (new Common.Views.ReviewChangesDialog({
|
||||
|
@ -686,6 +687,14 @@ define([
|
|||
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>',
|
||||
textDeleted: '<b>Deleted:</b>',
|
||||
textParaInserted: '<b>Paragraph Inserted</b> ',
|
||||
|
|
|
@ -55,6 +55,7 @@ define([
|
|||
uid : 0, // asc
|
||||
userid : 0,
|
||||
username : 'Guest',
|
||||
usercolor : null,
|
||||
date : undefined,
|
||||
quote : '',
|
||||
comment : '',
|
||||
|
@ -84,6 +85,7 @@ define([
|
|||
time : 0, // acs
|
||||
userid : 0,
|
||||
username : 'Guest',
|
||||
usercolor : null,
|
||||
reply : '',
|
||||
date : undefined,
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ define([
|
|||
uid : 0, // asc
|
||||
userid : 0,
|
||||
username : 'Guest',
|
||||
usercolor : '#ee3525',
|
||||
usercolor : null,
|
||||
date : undefined,
|
||||
changetext : '',
|
||||
lock : false,
|
||||
|
|
|
@ -57,6 +57,7 @@ define([
|
|||
return {
|
||||
iid : Common.UI.getId(), // internal id for rendering
|
||||
id : undefined,
|
||||
idOriginal : undefined,
|
||||
username : 'Guest',
|
||||
color : '#fff',
|
||||
colorval : null,
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
|
||||
<!-- 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>
|
||||
<% if (quote!==null && quote!=='') { %>
|
||||
<div class="user-quote"><%=scope.getFixedQuote(quote)%></div>
|
||||
|
@ -24,7 +26,9 @@
|
|||
<div class="reply-arrow img-commonctrl"></div>
|
||||
<% _.each(replys, function (item) { %>
|
||||
<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>
|
||||
<% if (!item.get("editText")) { %>
|
||||
<div class="user-message" data-can-copy="true"><%=scope.pickLink(item.get("reply"))%></div>
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
<!-- 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>
|
||||
<% if (!editTextInPopover || hint) { %>
|
||||
<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>
|
||||
<% _.each(replys, function (item) { %>
|
||||
<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>
|
||||
<% if (!item.get("editTextInPopover")) { %>
|
||||
<div oo_editor_input="true" tabindex="-1" class="user-message user-select"><%=scope.pickLink(item.get("reply"))%></div>
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<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-message limit-height"><%=changetext%></div>
|
||||
<div class="edit-ct">
|
||||
|
|
|
@ -103,7 +103,8 @@ Common.Utils = _.extend(new(function() {
|
|||
Chart : 7,
|
||||
MailMerge : 8,
|
||||
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),
|
||||
me = this,
|
||||
|
@ -585,6 +586,7 @@ Common.Utils.isBrowserSupported = 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 newDiv = document.createElement("div");
|
||||
newDiv.innerHTML = '<div class="app-error-panel">' +
|
||||
|
|
|
@ -60,22 +60,23 @@ define([
|
|||
storeMessages: undefined,
|
||||
|
||||
tplUser: ['<li id="<%= user.get("iid") %>"<% if (!user.get("online")) { %> class="offline"<% } %>>',
|
||||
'<div class="name"><%= scope.getUserName(user.get("username")) %>',
|
||||
'<div class="color" style="background-color: <%= user.get("color") %>;" ></div>',
|
||||
'<div class="name"><div class="color" style="background-color: <%= user.get("color") %>;" ></div><%= scope.getUserName(user.get("username")) %>',
|
||||
'</div>',
|
||||
'</li>'].join(''),
|
||||
|
||||
templateUserList: _.template('<ul>' +
|
||||
'<% _.each(users, function(item) { %>' +
|
||||
'<%= _.template(usertpl)({user: item, scope: scope}) %>' +
|
||||
'<% }); %>' +
|
||||
'<% for (originalId in users) { %>' +
|
||||
'<%= _.template(usertpl)({user: users[originalId][0], scope: scope}) %>' +
|
||||
'<% } %>' +
|
||||
'</ul>'),
|
||||
|
||||
tplMsg: ['<li>',
|
||||
'<% if (msg.get("type")==1) { %>',
|
||||
'<div class="message service" data-can-copy="true"><%= msg.get("message") %></div>',
|
||||
'<% } 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>',
|
||||
'<% } %>',
|
||||
'</li>'].join(''),
|
||||
|
@ -98,8 +99,8 @@ define([
|
|||
Common.UI.BaseView.prototype.initialize.call(this, arguments);
|
||||
|
||||
this.storeUsers.bind({
|
||||
add : _.bind(this._onAddUser, this),
|
||||
change : _.bind(this._onUsersChanged, this),
|
||||
add : _.bind(this._onResetUsers, this),
|
||||
change : _.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) {
|
||||
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});
|
||||
}
|
||||
},
|
||||
|
@ -217,9 +205,9 @@ define([
|
|||
},
|
||||
|
||||
_prepareMessage: function(m) {
|
||||
var user = this.storeUsers.findUser(m.get('userid'));
|
||||
var user = this.storeUsers.findOriginalUser(m.get('userid'));
|
||||
m.set({
|
||||
usercolor : user ? user.get('color') : '#000',
|
||||
usercolor : user ? user.get('color') : null,
|
||||
message : this._pickLink(Common.Utils.String.htmlEncode(m.get('message')))
|
||||
}, {silent:true});
|
||||
},
|
||||
|
|
|
@ -48,14 +48,13 @@ Common.Views = Common.Views || {};
|
|||
define([
|
||||
'text!common/main/lib/template/Comments.template',
|
||||
'text!common/main/lib/template/CommentsPanel.template',
|
||||
'text!common/main/lib/template/CommentsPopover.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, panelTemplate, popoverTemplate) {
|
||||
], function (commentsTemplate, panelTemplate) {
|
||||
'use strict';
|
||||
|
||||
function replaceWords (template, words) {
|
||||
|
@ -73,757 +72,6 @@ define([
|
|||
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({
|
||||
el: '#left-panel-comments',
|
||||
template: _.template(panelTemplate),
|
||||
|
@ -836,59 +84,57 @@ define([
|
|||
Common.UI.BaseView.prototype.initialize.call(this, options);
|
||||
|
||||
this.store = this.options.store;
|
||||
this.popoverComments = this.options.popoverComments;
|
||||
},
|
||||
render: function () {
|
||||
var me = this;
|
||||
|
||||
this.$el.html(this.template({
|
||||
textAddCommentToDoc: me.textAddCommentToDoc,
|
||||
textAddComment: me.textAddComment,
|
||||
textCancel: me.textCancel,
|
||||
textEnterCommentHint: me.textEnterCommentHint,
|
||||
maxCommLength: Asc.c_oAscMaxCellOrCommentLength
|
||||
}));
|
||||
if (!this.rendered) {
|
||||
this.$el.html(this.template({
|
||||
textAddCommentToDoc: me.textAddCommentToDoc,
|
||||
textAddComment: me.textAddComment,
|
||||
textCancel: me.textCancel,
|
||||
textEnterCommentHint: me.textEnterCommentHint,
|
||||
maxCommLength: Asc.c_oAscMaxCellOrCommentLength
|
||||
}));
|
||||
|
||||
this.buttonAddCommentToDoc = new Common.UI.Button({
|
||||
el: $('.btn.new',this.$el),
|
||||
enableToggle: false
|
||||
});
|
||||
this.buttonAdd = new Common.UI.Button({
|
||||
action: 'add',
|
||||
el: $('.btn.add', this.$el),
|
||||
enableToggle: false
|
||||
});
|
||||
this.buttonCancel = new Common.UI.Button({
|
||||
el: $('.btn.cancel', this.$el),
|
||||
enableToggle: false
|
||||
});
|
||||
this.buttonAddCommentToDoc = new Common.UI.Button({
|
||||
el: $('.btn.new', this.$el),
|
||||
enableToggle: false
|
||||
});
|
||||
this.buttonAdd = new Common.UI.Button({
|
||||
action: 'add',
|
||||
el: $('.btn.add', this.$el),
|
||||
enableToggle: false
|
||||
});
|
||||
this.buttonCancel = new Common.UI.Button({
|
||||
el: $('.btn.cancel', this.$el),
|
||||
enableToggle: false
|
||||
});
|
||||
|
||||
this.buttonAddCommentToDoc.on('click', _.bind(this.onClickShowBoxDocumentComment, this));
|
||||
this.buttonAdd.on('click', _.bind(this.onClickAddDocumentComment, this));
|
||||
this.buttonCancel.on('click', _.bind(this.onClickCancelDocumentComment, this));
|
||||
this.buttonAddCommentToDoc.on('click', _.bind(this.onClickShowBoxDocumentComment, this));
|
||||
this.buttonAdd.on('click', _.bind(this.onClickAddDocumentComment, this));
|
||||
this.buttonCancel.on('click', _.bind(this.onClickCancelDocumentComment, this));
|
||||
|
||||
this.txtComment = $('#comment-msg-new', this.el);
|
||||
this.txtComment.keydown(function (event) {
|
||||
if ((event.ctrlKey || event.metaKey) && !event.altKey && event.keyCode == Common.UI.Keys.RETURN) {
|
||||
me.onClickAddDocumentComment();
|
||||
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();
|
||||
}
|
||||
});
|
||||
this.txtComment = $('#comment-msg-new', this.el);
|
||||
this.txtComment.keydown(function (event) {
|
||||
if ((event.ctrlKey || event.metaKey) && !event.altKey && event.keyCode == Common.UI.Keys.RETURN) {
|
||||
me.onClickAddDocumentComment();
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
var CommentsPanelDataView = Common.UI.DataView.extend((function() {
|
||||
|
||||
var parentView = me;
|
||||
|
||||
return {
|
||||
|
||||
options : {
|
||||
|
@ -983,7 +229,6 @@ define([
|
|||
})());
|
||||
if (CommentsPanelDataView) {
|
||||
if (this.commentsView) {
|
||||
this.commentsView.render($('.messages-ct',me.el));
|
||||
this.commentsView.onResetItems();
|
||||
} else {
|
||||
this.commentsView = new CommentsPanelDataView({
|
||||
|
@ -1139,8 +384,9 @@ define([
|
|||
}
|
||||
}
|
||||
|
||||
this.setupLayout();
|
||||
if (!this.rendered) this.setupLayout();
|
||||
this.update();
|
||||
this.rendered = true;
|
||||
|
||||
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) {
|
||||
var addCommentLink = $('.add-link-ct', this.el),
|
||||
newCommentBlock = $('.new-comment-ct', this.el),
|
||||
|
@ -1204,6 +437,23 @@ define([
|
|||
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 () {
|
||||
var me = this,
|
||||
textBox = this.commentsView.getTextBox();
|
||||
|
|
|
@ -119,7 +119,7 @@ define([
|
|||
},
|
||||
|
||||
_onMessage: function(msg) {
|
||||
if (msg /*&& msg.Referer == "onlyoffice"*/) {
|
||||
if (msg && msg.Referer == "onlyoffice") {
|
||||
if (msg.needUpdate)
|
||||
this.trigger('accessrights', this, msg.sharingSettings);
|
||||
Common.NotificationCenter.trigger('window:close', this);
|
||||
|
|
|
@ -57,16 +57,18 @@ define([
|
|||
|
||||
var templateUserItem =
|
||||
'<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") %>;" >' +
|
||||
'<label class="name"><%= fnEncode(user.get("username")) %></label>' +
|
||||
'</div>' +
|
||||
'<div class="user-name">' +
|
||||
'<div class="color" style="background-color: <%= user.get("color") %>;"></div>'+
|
||||
'<label><%= fnEncode(user.get("username")) %></label>' +
|
||||
'<% if (len>1) { %><label style="margin-left:3px;">(<%=len%>)</label><% } %>' +
|
||||
'</div>'+
|
||||
'</li>';
|
||||
|
||||
var templateUserList = _.template(
|
||||
'<ul>' +
|
||||
'<% _.each(users, function(item) { %>' +
|
||||
'<%= usertpl({user: item, fnEncode: fnEncode}) %>' +
|
||||
'<% }); %>' +
|
||||
'<% for (originalId in users) { %>' +
|
||||
'<%= usertpl({user: users[originalId][0], fnEncode: fnEncode, len: users[originalId].length}) %>' +
|
||||
'<% } %>' +
|
||||
'</ul>');
|
||||
|
||||
var templateRightBox = '<section>' +
|
||||
|
@ -115,64 +117,38 @@ define([
|
|||
'<label id="title-user-name" style="pointer-events: none;"></label>' +
|
||||
'</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) {
|
||||
var usercount = collection.getEditingCount();
|
||||
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({
|
||||
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),
|
||||
fnEncode: Common.Utils.String.htmlEncode
|
||||
}));
|
||||
|
||||
$userList.scroller = new Common.UI.Scroller({
|
||||
el: $userList.find('ul'),
|
||||
useKeyboard: true,
|
||||
minScrollbarLength: 40,
|
||||
alwaysVisibleY: true
|
||||
});
|
||||
if (!$userList.scroller)
|
||||
$userList.scroller = new Common.UI.Scroller({
|
||||
el: $userList.find('ul'),
|
||||
useKeyboard: true,
|
||||
minScrollbarLength: 40,
|
||||
alwaysVisibleY: true
|
||||
});
|
||||
$userList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: true});
|
||||
} else {
|
||||
$userList.empty();
|
||||
}
|
||||
}
|
||||
|
||||
applyUsers( usercount );
|
||||
applyUsers( usercount, collection.getEditingOriginalCount() );
|
||||
};
|
||||
|
||||
function applyUsers(count) {
|
||||
var has_edit_users = count > 1 || count > 0 && appConfig && !appConfig.isEdit && !appConfig.canComments; // has other user(s) who edit document
|
||||
function onUsersChanged(model) {
|
||||
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 ) {
|
||||
$btnUsers
|
||||
.attr('data-toggle', 'dropdown')
|
||||
|
@ -192,7 +168,7 @@ define([
|
|||
$btnUsers.find('.caption')
|
||||
.css({'font-size': ((has_edit_users) ? '12px' : '14px'),
|
||||
'margin-top': ((has_edit_users) ? '0' : '-1px')})
|
||||
.html((has_edit_users) ? count : '+');
|
||||
.html((has_edit_users) ? originalCount : '+');
|
||||
|
||||
var usertip = $btnUsers.data('bs.tooltip');
|
||||
if ( usertip ) {
|
||||
|
@ -205,16 +181,14 @@ define([
|
|||
if ( !$btnUsers.menu ) {
|
||||
$panelUsers.removeClass('open');
|
||||
this.fireEvent('click:users', this);
|
||||
} else {
|
||||
var usertip = $btnUsers.data('bs.tooltip');
|
||||
if ( usertip ) {
|
||||
if ( usertip.dontShow===undefined)
|
||||
usertip.dontShow = true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
var usertip = $btnUsers.data('bs.tooltip');
|
||||
if ( usertip ) {
|
||||
if ( usertip.dontShow===undefined)
|
||||
usertip.dontShow = true;
|
||||
|
||||
usertip.hide();
|
||||
usertip.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -248,7 +222,7 @@ define([
|
|||
|
||||
var editingUsers = storeUsers.getEditingCount();
|
||||
$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,
|
||||
titleExt: me.tipViewUsers,
|
||||
placement: 'bottom',
|
||||
|
@ -264,7 +238,7 @@ define([
|
|||
});
|
||||
|
||||
$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 ) {
|
||||
$saveStatus.attr('data-width', me.textSaveExpander);
|
||||
|
@ -393,7 +367,7 @@ define([
|
|||
|
||||
storeUsers = this.options.storeUsers;
|
||||
storeUsers.bind({
|
||||
add : onAddUser,
|
||||
add : onUsersChanged,
|
||||
change : onUsersChanged,
|
||||
reset : onResetUsers
|
||||
});
|
||||
|
@ -484,9 +458,8 @@ define([
|
|||
|
||||
if ( config.canEdit && config.canRequestEditRights )
|
||||
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');
|
||||
$panelUsers = $html.find('.box-cousers');
|
||||
|
@ -667,7 +640,7 @@ define([
|
|||
$btnUsers.addClass('disabled').attr('disabled', 'disabled'); else
|
||||
$btnUsers.removeClass('disabled').attr('disabled', '');
|
||||
} else {
|
||||
function _lockButton(btn) {
|
||||
var _lockButton = function (btn) {
|
||||
if ( btn ) {
|
||||
if ( lock ) {
|
||||
btn.keepState = {
|
||||
|
@ -679,7 +652,7 @@ define([
|
|||
delete btn.keepState;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
switch ( alias ) {
|
||||
case 'undo': _lockButton(me.btnUndo); break;
|
||||
|
|
|
@ -83,7 +83,7 @@ define([
|
|||
'style="display: block; ' + '<% if (!isRevision) { %>' + 'padding-left: 40px;' + '<% } %>' + '<% if (canRestore && selected) { %>' + 'padding-bottom: 6px;' + '<% } %>' +'">',
|
||||
'<div class="user-date"><%= created %></div>',
|
||||
'<% if (markedAsVersion) { %>',
|
||||
'<div class="user-version">ver.<%=version%></div>',
|
||||
'<div class="user-version">' + this.textVer + '<%=version%></div>',
|
||||
'<% } %>',
|
||||
'<% if (isRevision && hasChanges) { %>',
|
||||
'<div class="revision-expand img-commonctrl ' + '<% if (isExpanded) { %>' + 'up' + '<% } %>' + '"></div>',
|
||||
|
@ -150,7 +150,8 @@ define([
|
|||
textHide: 'Collapse',
|
||||
textCloseHistory: 'Close History',
|
||||
textHideAll: 'Hide detailed changes',
|
||||
textShowAll: 'Show detailed changes'
|
||||
textShowAll: 'Show detailed changes',
|
||||
textVer: 'ver.'
|
||||
|
||||
}, Common.Views.History || {}))
|
||||
});
|
|
@ -48,23 +48,23 @@ define([
|
|||
Common.Views.InsertTableDialog = Common.UI.Window.extend(_.extend({
|
||||
options: {
|
||||
width: 230,
|
||||
height: 170,
|
||||
header: false,
|
||||
height: 156,
|
||||
style: 'min-width: 230px;',
|
||||
cls: 'modal-dlg',
|
||||
split: false
|
||||
},
|
||||
|
||||
initialize : function(options) {
|
||||
_.extend(this.options, options || {});
|
||||
_.extend(this.options, {
|
||||
title: (options.split) ? this.txtTitleSplit : this.txtTitle
|
||||
}, options || {});
|
||||
|
||||
this.template = [
|
||||
'<div class="box">',
|
||||
'<h4>' + ((options.split) ? this.txtTitleSplit : this.txtTitle) + '</h4>',
|
||||
'<div class="input-row" style="margin: 10px 0;">',
|
||||
'<div class="input-row">',
|
||||
'<label class="text columns-text" style="width: 130px;">' + this.txtColumns + '</label><div class="columns-val" style="float: right;"></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>',
|
||||
'</div>',
|
||||
'</div>',
|
||||
|
|
|
@ -53,12 +53,23 @@ define([
|
|||
var t = this,
|
||||
_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, {
|
||||
closable : false,
|
||||
mode : 1, // open settings
|
||||
closable : (options.mode==2), // if save settings
|
||||
preview : options.preview,
|
||||
warning : options.warning,
|
||||
width : (options.preview) ? 414 : ((options.type == Asc.c_oAscAdvancedOptionsID.DRM && options.warning) ? 370 : 262),
|
||||
height : (options.preview) ? 277 : ((options.type == Asc.c_oAscAdvancedOptionsID.CSV) ? 190 : (options.warning ? 187 : 147)),
|
||||
width : width,
|
||||
height : height,
|
||||
header : true,
|
||||
cls : 'open-dlg',
|
||||
contentTemplate : '',
|
||||
|
@ -85,10 +96,10 @@ define([
|
|||
'</div>',
|
||||
'<% } %>',
|
||||
'<% } 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>',
|
||||
'<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>',
|
||||
'<% if (type == Asc.c_oAscAdvancedOptionsID.CSV) { %>',
|
||||
|
@ -120,7 +131,7 @@ define([
|
|||
'<div class="footer center">',
|
||||
'<button class="btn normal dlg-btn primary" result="ok">' + t.okButtonText + '</button>',
|
||||
'<% 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>'
|
||||
].join('');
|
||||
|
@ -156,16 +167,24 @@ define([
|
|||
if (this.type == Asc.c_oAscAdvancedOptionsID.DRM) {
|
||||
this.inputPwd = new Common.UI.InputField({
|
||||
el: $('#id-password-txt'),
|
||||
type: 'password',
|
||||
type: 'text',
|
||||
validateOnBlur: false,
|
||||
validation : function(value) {
|
||||
return me.txtIncorrectPwd;
|
||||
}
|
||||
});
|
||||
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 {
|
||||
this.initCodePages();
|
||||
this.updatePreview();
|
||||
if (this.preview)
|
||||
this.updatePreview();
|
||||
this.onPrimary = function() {
|
||||
me._handleInput('ok');
|
||||
return false;
|
||||
|
@ -205,10 +224,12 @@ define([
|
|||
_handleInput: function(state) {
|
||||
if (this.handler) {
|
||||
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;
|
||||
(delimiter == -1) && (delimiter = null);
|
||||
this.handler.call(this, this.cmbEncoding.getValue(), delimiter, delimiterChar);
|
||||
this.handler.call(this, state, encoding, delimiter, delimiterChar);
|
||||
} else {
|
||||
this.handler.call(this, state, this.inputPwd.getValue());
|
||||
}
|
||||
|
@ -218,7 +239,7 @@ define([
|
|||
},
|
||||
|
||||
initCodePages: function () {
|
||||
var i, c, codepage, encodedata = [], listItems = [], length = 0;
|
||||
var i, c, codepage, encodedata = [], listItems = [], length = 0, lcid_width = 0;
|
||||
|
||||
if (this.codepages) {
|
||||
encodedata = [];
|
||||
|
@ -227,218 +248,99 @@ define([
|
|||
c = [];
|
||||
c[0] = codepage.asc_getCodePage();
|
||||
c[1] = codepage.asc_getCodePageName();
|
||||
c[2] = codepage.asc_getLcid();
|
||||
|
||||
encodedata.push(c);
|
||||
}
|
||||
} else {
|
||||
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)']
|
||||
];
|
||||
lcid_width = 50;
|
||||
}
|
||||
|
||||
length = encodedata.length;
|
||||
|
||||
if (length) {
|
||||
for (i = 0; i < length; ++i) {
|
||||
listItems.push({
|
||||
value: encodedata[i][0],
|
||||
displayValue: encodedata[i][1] // Common.Utils.String.ellipsis(..., 37)
|
||||
});
|
||||
}
|
||||
|
||||
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
|
||||
for (i = 0; i < length; ++i) {
|
||||
listItems.push({
|
||||
value: encodedata[i][0],
|
||||
displayValue: Common.Utils.String.htmlEncode(encodedata[i][1]),
|
||||
lcid: encodedata[i][2] || ''
|
||||
});
|
||||
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)
|
||||
this.cmbEncoding.on('selected', _.bind(this.onCmbEncodingSelect, this));
|
||||
|
||||
if (this.type == Asc.c_oAscAdvancedOptionsID.CSV) {
|
||||
this.cmbDelimiter = new Common.UI.ComboBox({
|
||||
el: $('#id-delimiters-combo', this.$window),
|
||||
style: 'width: 100px;',
|
||||
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));
|
||||
var ul = this.cmbEncoding.cmpEl.find('ul'),
|
||||
a = ul.find('li:nth(0) a'),
|
||||
width = ul.width() - parseInt(a.css('padding-left')) - parseInt(a.css('padding-right')) - 50;
|
||||
ul.find('li div').width(width);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
if (this.type == Asc.c_oAscAdvancedOptionsID.CSV) {
|
||||
this.cmbDelimiter = new Common.UI.ComboBox({
|
||||
el: $('#id-delimiters-combo', this.$window),
|
||||
style: 'width: 100px;',
|
||||
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({
|
||||
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() {
|
||||
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) {
|
||||
var delimiter = this.cmbDelimiter ? this.cmbDelimiter.getValue() : null,
|
||||
delimiterChar = (delimiter == -1) ? this.inputDelimiter.getValue() : 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 {
|
||||
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,
|
||||
minScrollbarLength : 20,
|
||||
alwaysVisibleY: true,
|
||||
alwaysVisibleX: true,
|
||||
onChange: _.bind(function(){
|
||||
if (this.scrollerY) {
|
||||
var startPos = this.scrollerY.getScrollTop(),
|
||||
|
|
|
@ -65,7 +65,7 @@ define([
|
|||
function setEvents() {
|
||||
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) {
|
||||
button.on('click', function (b, e) {
|
||||
me.fireEvent('protect:password', [b, 'add']);
|
||||
|
@ -81,19 +81,19 @@ define([
|
|||
this.btnPwd.menu.on('item:click', function (menu, item, e) {
|
||||
me.fireEvent('protect:password', [menu, item.value]);
|
||||
});
|
||||
}
|
||||
|
||||
if (me.appConfig.canProtect) {
|
||||
if (this.btnSignature.menu)
|
||||
this.btnSignature.menu.on('item:click', function (menu, item, e) {
|
||||
me.fireEvent('protect:signature', [item.value, false]);
|
||||
});
|
||||
|
||||
this.btnsInvisibleSignature.forEach(function(button) {
|
||||
button.on('click', function (b, e) {
|
||||
me.fireEvent('protect:signature', ['invisible']);
|
||||
});
|
||||
if (me.appConfig.isSignatureSupport) {
|
||||
if (this.btnSignature.menu)
|
||||
this.btnSignature.menu.on('item:click', function (menu, item, e) {
|
||||
me.fireEvent('protect:signature', [item.value, false]);
|
||||
});
|
||||
}
|
||||
|
||||
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();
|
||||
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({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'btn-ic-protect',
|
||||
|
@ -131,18 +131,18 @@ define([
|
|||
menu: true,
|
||||
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));
|
||||
},
|
||||
|
@ -159,25 +159,26 @@ define([
|
|||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
if ( config.isProtectSupport && config.isDesktopApp && config.isOffline) {
|
||||
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'
|
||||
}
|
||||
]
|
||||
})
|
||||
);
|
||||
if ( config.canProtect) {
|
||||
if ( config.isPasswordSupport) {
|
||||
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'
|
||||
}
|
||||
]
|
||||
})
|
||||
);
|
||||
}
|
||||
if (me.btnSignature) {
|
||||
me.btnSignature.updateHint((me.btnSignature.menu) ? me.hintSignature : me.txtInvisibleSignature);
|
||||
me.btnSignature.menu && me.btnSignature.setMenu(
|
||||
|
@ -206,9 +207,9 @@ define([
|
|||
getPanel: function () {
|
||||
this.$el = $(_.template(template)( {} ));
|
||||
|
||||
if ( this.appConfig.isProtectSupport && this.appConfig.isDesktopApp && this.appConfig.isOffline ) {
|
||||
this.btnAddPwd.render(this.$el.find('#slot-btn-add-password'));
|
||||
this.btnPwd.render(this.$el.find('#slot-btn-change-password'));
|
||||
if ( this.appConfig.canProtect ) {
|
||||
this.btnAddPwd && this.btnAddPwd.render(this.$el.find('#slot-btn-add-password'));
|
||||
this.btnPwd && this.btnPwd.render(this.$el.find('#slot-btn-change-password'));
|
||||
this.btnSignature && this.btnSignature.render(this.$el.find('#slot-btn-signature'));
|
||||
}
|
||||
return this.$el;
|
||||
|
|
|
@ -46,369 +46,14 @@ if (Common === undefined)
|
|||
Common.Views = Common.Views || {};
|
||||
|
||||
define([
|
||||
'text!common/main/lib/template/ReviewChangesPopover.template',
|
||||
'common/main/lib/util/utils',
|
||||
'common/main/lib/component/Button',
|
||||
'common/main/lib/component/DataView',
|
||||
'common/main/lib/component/Layout',
|
||||
'common/main/lib/component/Window'
|
||||
], function (popoverTemplate) {
|
||||
], function () {
|
||||
'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(){
|
||||
var template =
|
||||
'<section id="review-changes-panel" class="panel" data-tab="review">' +
|
||||
|
@ -525,8 +170,6 @@ define([
|
|||
initialize: function (options) {
|
||||
Common.UI.BaseView.prototype.initialize.call(this, options);
|
||||
|
||||
// this.store = this.options.store;
|
||||
// this.popoverChanges = this.options.popoverChanges;
|
||||
this.appConfig = options.mode;
|
||||
|
||||
if ( this.appConfig.canReview ) {
|
||||
|
@ -807,18 +450,6 @@ define([
|
|||
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) {
|
||||
if ( type == 'turn' && parent == 'statusbar' ) {
|
||||
var button = new Common.UI.Button({
|
||||
|
|
935
apps/common/main/lib/view/ReviewPopover.js
Normal 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 || {}))
|
||||
});
|
|
@ -145,7 +145,7 @@ define([
|
|||
cls : 'input-group-nr',
|
||||
style : 'width: 234px;',
|
||||
menuCls : 'scrollable-menu',
|
||||
menuStyle : 'min-width: 55px;max-height: 270px;',
|
||||
menuStyle : 'min-width: 234px;max-height: 270px;',
|
||||
store : new Common.Collections.Fonts(),
|
||||
recent : 0,
|
||||
hint : me.tipFontName
|
||||
|
|
1
apps/common/main/resources/img/doc-formats/blank.svg
Normal 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 |
39
apps/common/main/resources/img/doc-formats/csv.svg
Normal 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 |
13
apps/common/main/resources/img/doc-formats/docx.svg
Normal 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 |
15
apps/common/main/resources/img/doc-formats/epub.svg
Normal 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 |
15
apps/common/main/resources/img/doc-formats/html.svg
Normal 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 |
14
apps/common/main/resources/img/doc-formats/odp.svg
Normal 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 |
14
apps/common/main/resources/img/doc-formats/ods.svg
Normal 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 |
14
apps/common/main/resources/img/doc-formats/odt.svg
Normal 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 |
12
apps/common/main/resources/img/doc-formats/pdf.svg
Normal 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 |
18
apps/common/main/resources/img/doc-formats/pdfa.svg
Normal 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 |
18
apps/common/main/resources/img/doc-formats/pptx.svg
Normal 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 |
21
apps/common/main/resources/img/doc-formats/rtf.svg
Normal 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 |
20
apps/common/main/resources/img/doc-formats/txt.svg
Normal 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 |
14
apps/common/main/resources/img/doc-formats/xlsx.svg
Normal 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 |
|
@ -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"/>
|
||||
</symbol>
|
||||
<symbol id="svg-btn-options" viewBox="0 0 20 20">
|
||||
<rect x="4" y="6" width="12" height="1"/>
|
||||
<rect x="4" y="9" width="12" height="1"/>
|
||||
<rect x="4" y="12" width="12" height="1"/>
|
||||
<rect x="3" y="6" width="14" height="1"/>
|
||||
<rect x="3" y="10" width="14" height="1"/>
|
||||
<rect x="3" y="14" width="14" height="1"/>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 661 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.3 KiB |
|
@ -52,24 +52,24 @@
|
|||
}
|
||||
|
||||
.color {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
margin-top: 1px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0 5px 3px 0;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border: 1px solid @gray-dark;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
display: block;
|
||||
position: relative;
|
||||
padding: 0 10px 0 16px;
|
||||
margin-top: -2px;
|
||||
padding: 0 10px 0 0;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
font-weight: bold;
|
||||
line-height: normal;
|
||||
height: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -100,6 +100,23 @@
|
|||
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 {
|
||||
word-wrap: break-word;
|
||||
width: 100%;
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
}
|
||||
|
||||
.user-name {
|
||||
color: @gray-darker;
|
||||
color: @gray-deep;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
@ -22,6 +23,14 @@
|
|||
max-width: 155px;
|
||||
}
|
||||
|
||||
.color {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border: 1px solid @gray-dark;
|
||||
margin: 0 5px 3px 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.user-date {
|
||||
color: @gray-darker;
|
||||
font-size: 10px;
|
||||
|
|
|
@ -109,6 +109,8 @@
|
|||
}
|
||||
|
||||
.user-name {
|
||||
color: @gray-deep;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
@ -118,6 +120,14 @@
|
|||
cursor: default;
|
||||
}
|
||||
|
||||
.color {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border: 1px solid @gray-dark;
|
||||
margin: 0 5px 3px 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.user-name-colored {
|
||||
padding: 10px 0px 0 0px;
|
||||
cursor: default;
|
||||
|
@ -336,8 +346,13 @@
|
|||
|
||||
.comments-popover {
|
||||
width:100%;
|
||||
height:100%;
|
||||
position: relative;
|
||||
overflow-y: hidden;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.dataview-ct.inner {
|
||||
overflow: visible;
|
||||
}
|
||||
}
|
||||
|
||||
.comments-arrow {
|
||||
|
|
|
@ -40,7 +40,6 @@
|
|||
|
||||
.extra {
|
||||
> section {
|
||||
line-height: 20px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
}
|
||||
|
@ -233,15 +232,23 @@
|
|||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
border: 1px solid @gray-dark;
|
||||
margin: 0 5px 1px 0;
|
||||
}
|
||||
|
||||
.name {
|
||||
display: block;
|
||||
padding-left: 16px;
|
||||
margin-top: -5px;
|
||||
.user-name {
|
||||
color: @gray-deep;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: middle;
|
||||
cursor: default;
|
||||
|
||||
label {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: middle;
|
||||
max-width: 200px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -119,8 +119,8 @@
|
|||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
color: @gray-darker;
|
||||
text-overflow: ellipsis;
|
||||
padding-right: 35px;
|
||||
}
|
||||
|
|
|
@ -142,6 +142,7 @@
|
|||
|
||||
.box-panels {
|
||||
flex-grow: 1;
|
||||
-ms-flex: 1;
|
||||
|
||||
.panel:not(.active) {
|
||||
display: none;
|
||||
|
@ -251,6 +252,10 @@
|
|||
z-index: @zindex-navbar + 4;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.cover):not(.z-clear) {
|
||||
z-index: @zindex-navbar + 1;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toolbar {
|
||||
|
|
|
@ -53,4 +53,8 @@
|
|||
|
||||
.link-tooltip .tooltip-inner {
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
.auto-tooltip .tooltip-inner {
|
||||
max-width: none;
|
||||
}
|
|
@ -395,7 +395,8 @@ define([
|
|||
},
|
||||
|
||||
changeToolbarSaveState: function (state) {
|
||||
this.leftMenu.menuFile.getButton('save').setDisabled(state);
|
||||
var btnSave = this.leftMenu.menuFile.getButton('save');
|
||||
btnSave && btnSave.setDisabled(state);
|
||||
},
|
||||
|
||||
/** coauthoring begin **/
|
||||
|
@ -634,7 +635,7 @@ define([
|
|||
}
|
||||
return false;
|
||||
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();
|
||||
this.leftMenu.showMenu('file:help');
|
||||
}
|
||||
|
|
|
@ -142,10 +142,16 @@ define([
|
|||
|
||||
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){
|
||||
item.setDisabled(need_disable);
|
||||
}, this);
|
||||
|
||||
need_disable = paragraph_locked || header_locked || in_header || control_plain;
|
||||
this.view.btnBookmarks.setDisabled(need_disable);
|
||||
},
|
||||
|
||||
onApiCanAddHyperlink: function(value) {
|
||||
|
@ -250,8 +256,7 @@ define([
|
|||
win.show();
|
||||
break;
|
||||
case 'remove':
|
||||
if (currentTOC)
|
||||
currentTOC = props.get_InternalClass();
|
||||
currentTOC = (currentTOC && props) ? props.get_InternalClass() : undefined;
|
||||
this.api.asc_RemoveTableOfContents(currentTOC);
|
||||
break;
|
||||
}
|
||||
|
@ -259,9 +264,12 @@ define([
|
|||
},
|
||||
|
||||
onTableContentsUpdate: function(type, currentTOC){
|
||||
if (currentTOC)
|
||||
currentTOC = this.api.asc_GetTableOfContentsPr(currentTOC).get_InternalClass();
|
||||
this.api.asc_UpdateTableOfContents(type == 'pages', currentTOC);
|
||||
var props = this.api.asc_GetTableOfContentsPr(currentTOC);
|
||||
if (props) {
|
||||
if (currentTOC && props)
|
||||
currentTOC = props.get_InternalClass();
|
||||
this.api.asc_UpdateTableOfContents(type == 'pages', currentTOC);
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
|
||||
},
|
||||
|
||||
|
|
|
@ -111,6 +111,7 @@ define([
|
|||
this._state = {isDisconnected: false, usersCount: 1, fastCoauth: true, lostEditingRights: false, licenseType: false};
|
||||
this.languages = null;
|
||||
this.translationTable = [];
|
||||
this.isModalShowed = 0;
|
||||
// Initialize viewport
|
||||
|
||||
if (!Common.Utils.isBrowserSupported()){
|
||||
|
@ -180,6 +181,7 @@ define([
|
|||
this.api.asc_registerCallback('asc_onPrintUrl', _.bind(this.onPrintUrl, this));
|
||||
this.api.asc_registerCallback('asc_onMeta', _.bind(this.onMeta, this));
|
||||
this.api.asc_registerCallback('asc_onSpellCheckInit', _.bind(this.loadLanguages, this));
|
||||
this.api.asc_registerCallback('asc_onLicenseError', _.bind(this.onPaidFeatureError, this));
|
||||
|
||||
Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
|
||||
Common.NotificationCenter.on('goback', _.bind(this.goBack, this));
|
||||
|
@ -244,20 +246,18 @@ define([
|
|||
|
||||
Common.NotificationCenter.on({
|
||||
'modal:show': function(){
|
||||
me.isModalShowed = true;
|
||||
me.isModalShowed++;
|
||||
me.api.asc_enableKeyEvents(false);
|
||||
},
|
||||
'modal:close': function(dlg) {
|
||||
if (dlg && dlg.$lastmodal && dlg.$lastmodal.length < 1) {
|
||||
me.isModalShowed = false;
|
||||
me.isModalShowed--;
|
||||
if (!me.isModalShowed)
|
||||
me.api.asc_enableKeyEvents(true);
|
||||
}
|
||||
},
|
||||
'modal:hide': function(dlg) {
|
||||
if (dlg && dlg.$lastmodal && dlg.$lastmodal.length < 1) {
|
||||
me.isModalShowed = false;
|
||||
me.isModalShowed--;
|
||||
if (!me.isModalShowed)
|
||||
me.api.asc_enableKeyEvents(true);
|
||||
}
|
||||
},
|
||||
'settings:unitschanged':_.bind(this.unitsChanged, this),
|
||||
'dataview:focus': function(e){
|
||||
|
@ -280,7 +280,7 @@ define([
|
|||
|
||||
Common.util.Shortcuts.delegateShortcuts({
|
||||
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.stopPropagation();
|
||||
}, this)
|
||||
|
@ -413,7 +413,8 @@ define([
|
|||
Asc.c_oAscFileType.ODT,
|
||||
Asc.c_oAscFileType.DOCX,
|
||||
Asc.c_oAscFileType.HTML,
|
||||
Asc.c_oAscFileType.PDF
|
||||
Asc.c_oAscFileType.PDF,
|
||||
Asc.c_oAscFileType.PDFA
|
||||
];
|
||||
|
||||
if ( !_format || _supported.indexOf(_format) < 0 )
|
||||
|
@ -445,7 +446,6 @@ define([
|
|||
});
|
||||
}
|
||||
Common.UI.alert({
|
||||
closable: false,
|
||||
title: this.notcriticalErrorTitle,
|
||||
msg: (opts.data.error) ? opts.data.error : this.txtErrorLoadHistory,
|
||||
iconCls: 'warn',
|
||||
|
@ -623,7 +623,7 @@ define([
|
|||
}
|
||||
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(),
|
||||
forcesave = this.appOptions.forcesave,
|
||||
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.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.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 &&
|
||||
(!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 :
|
||||
(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);
|
||||
} else if (!me.appOptions.isEdit && me.appOptions.canComments) {
|
||||
} else if (!me.appOptions.isEdit && me.appOptions.isRestrictedEdit) {
|
||||
me._state.fastCoauth = true;
|
||||
me.api.asc_SetFastCollaborative(me._state.fastCoauth);
|
||||
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) {
|
||||
var elem = document.getElementById('loadmask-text');
|
||||
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.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.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.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.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.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && (typeof (this.editorConfig.customization) == 'object' && !!this.editorConfig.customization.forcesave);
|
||||
this.appOptions.forcesave = this.appOptions.canForcesave;
|
||||
this.appOptions.canEditComments= this.appOptions.isOffline || !(typeof (this.editorConfig.customization) == 'object' && this.editorConfig.customization.commentAuthorOnly);
|
||||
this.appOptions.trialMode = params.asc_getLicenseMode();
|
||||
this.appOptions.isProtectSupport = true; // remove in 5.2
|
||||
this.appOptions.canProtect = this.appOptions.isProtectSupport && this.appOptions.isEdit && this.appOptions.isDesktopApp && this.appOptions.isOffline && this.api.asc_isSignaturesSupport();
|
||||
this.appOptions.isSignatureSupport= this.appOptions.isEdit && this.appOptions.isDesktopApp && this.appOptions.isOffline && this.api.asc_isSignaturesSupport();
|
||||
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.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 ) {
|
||||
this.appOptions.canUseHistory =
|
||||
|
@ -1115,6 +1144,8 @@ define([
|
|||
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.fileKey = this.document.key;
|
||||
|
||||
this.appOptions.canBranding = (licType === Asc.c_oLicenseResult.Success) && (typeof this.editorConfig.customization == 'object');
|
||||
if (this.appOptions.canBranding)
|
||||
appHeader.setBranding(this.editorConfig.customization);
|
||||
|
@ -1135,8 +1166,9 @@ define([
|
|||
this.onLongActionBegin(Asc.c_oAscAsyncActionType.BlockInteraction, LoadingDocument);
|
||||
}
|
||||
|
||||
this.api.asc_setViewMode(!this.appOptions.isEdit && !this.appOptions.canComments);
|
||||
(!this.appOptions.isEdit && this.appOptions.canComments) && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyComments);
|
||||
this.api.asc_setViewMode(!this.appOptions.isEdit && !this.appOptions.isRestrictedEdit);
|
||||
this.appOptions.isRestrictedEdit && this.appOptions.canComments && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyComments);
|
||||
this.appOptions.isRestrictedEdit && this.appOptions.canFillForms && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyForms);
|
||||
this.api.asc_LoadDocument();
|
||||
},
|
||||
|
||||
|
@ -1150,7 +1182,8 @@ define([
|
|||
viewport = app.getController('Viewport').getView('Viewport'),
|
||||
// headerView = app.getController('Viewport').getView('Common.Views.Header'),
|
||||
statusbarView = app.getController('Statusbar').getView('Statusbar'),
|
||||
documentHolder = app.getController('DocumentHolder').getView();
|
||||
documentHolder = app.getController('DocumentHolder').getView(),
|
||||
toolbarController = app.getController('Toolbar');
|
||||
|
||||
// if (headerView) {
|
||||
// headerView.setHeaderCaption(this.appOptions.isEdit ? 'Document Editor' : 'Document Viewer');
|
||||
|
@ -1159,13 +1192,14 @@ define([
|
|||
|
||||
viewport && viewport.setMode(this.appOptions);
|
||||
statusbarView && statusbarView.setMode(this.appOptions);
|
||||
|
||||
toolbarController.setMode(this.appOptions);
|
||||
documentHolder.setMode(this.appOptions);
|
||||
|
||||
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_onAuthParticipantsChanged', _.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() {
|
||||
|
@ -1190,27 +1224,24 @@ define([
|
|||
|
||||
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);
|
||||
|
||||
var viewport = this.getApplication().getController('Viewport').getView('Viewport');
|
||||
|
||||
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;
|
||||
|
||||
_.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) {
|
||||
toolbarView.setApi(me.api);
|
||||
toolbarView.on('editcomplete', _.bind(me.onEditComplete, me));
|
||||
toolbarView.on('insertimage', _.bind(me.onInsertImage, me));
|
||||
toolbarView.on('inserttable', _.bind(me.onInsertTable, 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_registerCallback('asc_onDocumentModifiedChanged', _.bind(me.onDocumentModifiedChanged, me));
|
||||
me.api.asc_registerCallback('asc_onDocumentCanSaveChanged', _.bind(me.onDocumentCanSaveChanged, me));
|
||||
/** coauthoring begin **/
|
||||
me.api.asc_registerCallback('asc_onCollaborativeChanges', _.bind(me.onCollaborativeChanges, me));
|
||||
|
@ -1262,7 +1292,7 @@ define([
|
|||
this.onLongActionEnd(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument);
|
||||
|
||||
var config = {
|
||||
closable: false
|
||||
closable: true
|
||||
};
|
||||
|
||||
switch (id)
|
||||
|
@ -1362,6 +1392,7 @@ define([
|
|||
|
||||
case Asc.c_oAscError.ID.Warning:
|
||||
config.msg = this.errorConnectToServer;
|
||||
config.closable = false;
|
||||
break;
|
||||
|
||||
case Asc.c_oAscError.ID.SessionAbsolute:
|
||||
|
@ -1409,6 +1440,7 @@ define([
|
|||
|
||||
config.title = this.criticalErrorTitle;
|
||||
config.iconCls = 'error';
|
||||
config.closable = false;
|
||||
|
||||
if (this.appOptions.canBackToFolder && !this.appOptions.isDesktopApp && typeof id !== 'string') {
|
||||
config.msg += '<br/><br/>' + this.criticalErrorExtText;
|
||||
|
@ -1535,8 +1567,7 @@ define([
|
|||
this.updateWindowTitle();
|
||||
|
||||
var toolbarView = this.getApplication().getController('Toolbar').getView();
|
||||
|
||||
if (toolbarView && !toolbarView._state.previewmode) {
|
||||
if (toolbarView && toolbarView.btnCollabChanges && !toolbarView._state.previewmode) {
|
||||
var isSyncButton = toolbarView.btnCollabChanges.$icon.hasClass('btn-synch'),
|
||||
forcesave = this.appOptions.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();
|
||||
},
|
||||
|
||||
onAdvancedOptions: function(advOptions) {
|
||||
onAdvancedOptions: function(advOptions, mode) {
|
||||
if (this._state.openDlg) return;
|
||||
|
||||
var type = advOptions.asc_getOptionId(),
|
||||
me = this;
|
||||
if (type == Asc.c_oAscAdvancedOptionsID.TXT) {
|
||||
me._state.openDlg = new Common.Views.OpenDialog({
|
||||
mode: mode,
|
||||
type: type,
|
||||
preview: advOptions.asc_getOptions().asc_getData(),
|
||||
codepages: advOptions.asc_getOptions().asc_getCodePages(),
|
||||
settings: advOptions.asc_getOptions().asc_getRecommendedSettings(),
|
||||
api: me.api,
|
||||
handler: function (encoding) {
|
||||
handler: function (result, encoding) {
|
||||
me.isShowOpenDialog = false;
|
||||
if (me && me.api) {
|
||||
me.api.asc_setAdvancedOptions(type, new Asc.asc_CTXTAdvancedOptions(encoding));
|
||||
me.loadMask && me.loadMask.show();
|
||||
if (result == 'ok') {
|
||||
if (me && me.api) {
|
||||
me.api.asc_setAdvancedOptions(type, new Asc.asc_CTXTAdvancedOptions(encoding));
|
||||
me.loadMask && me.loadMask.show();
|
||||
}
|
||||
}
|
||||
me._state.openDlg = null;
|
||||
}
|
||||
|
@ -1965,7 +1999,7 @@ define([
|
|||
},
|
||||
|
||||
onPrint: function() {
|
||||
if (!this.appOptions.canPrint) return;
|
||||
if (!this.appOptions.canPrint || this.isModalShowed) return;
|
||||
|
||||
if (this.api)
|
||||
this.api.asc_Print(Common.Utils.isChrome || Common.Utils.isSafari || Common.Utils.isOpera); // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event
|
||||
|
@ -2208,7 +2242,7 @@ define([
|
|||
textStrict: 'Strict mode',
|
||||
txtErrorLoadHistory: 'Loading history failed',
|
||||
textBuyNow: 'Visit website',
|
||||
textNoLicenseTitle: 'ONLYOFFICE open source version',
|
||||
textNoLicenseTitle: 'ONLYOFFICE connection limitation',
|
||||
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.',
|
||||
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.',
|
||||
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.',
|
||||
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 || {}))
|
||||
});
|
|
@ -52,13 +52,6 @@ define([
|
|||
|
||||
return {
|
||||
initialize: function () {
|
||||
this.addListeners({
|
||||
'Toolbar': {
|
||||
'insert:break': function () {
|
||||
console.log('insert page break');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onLaunch: function (view) {
|
||||
|
|
|
@ -143,27 +143,20 @@ define([
|
|||
}
|
||||
}
|
||||
|
||||
if ( config.isReviewOnly ) {
|
||||
if ( config.isReviewOnly || Common.localStorage.getBool("de-track-changes-" + (config.fileKey || ''))) {
|
||||
_process_changestip();
|
||||
} else
|
||||
if ( me.api.asc_IsTrackRevisions() ) {
|
||||
if ( Common.localStorage.getBool("de-track-changes") ) {
|
||||
// show tooltip "track changes in this document"
|
||||
_process_changestip();
|
||||
} else {
|
||||
var showNewChangesTip = !Common.localStorage.getBool("de-new-changes");
|
||||
if ( me.api.asc_HaveRevisionsChanges() && showNewChangesTip ) {
|
||||
me.btnTurnReview.updateHint('');
|
||||
} else if ( me.api.asc_IsTrackRevisions() ) {
|
||||
var showNewChangesTip = !Common.localStorage.getBool("de-new-changes");
|
||||
if ( me.api.asc_HaveRevisionsChanges() && showNewChangesTip ) {
|
||||
me.btnTurnReview.updateHint('');
|
||||
|
||||
if (me.newChangesTooltip === undefined)
|
||||
me.newChangesTooltip = me.createChangesTip(me.textHasChanges, 'de-new-changes', true);
|
||||
if (me.newChangesTooltip === undefined)
|
||||
me.newChangesTooltip = me.createChangesTip(me.textHasChanges, 'de-new-changes', true);
|
||||
|
||||
me.newChangesTooltip.show();
|
||||
} else
|
||||
me.btnTurnReview.updateHint(me.tipReview);
|
||||
}
|
||||
me.newChangesTooltip.show();
|
||||
} else
|
||||
me.btnTurnReview.updateHint(me.tipReview);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
|
|
|
@ -142,7 +142,8 @@ define([
|
|||
Asc.c_oAscFileType.RTF,
|
||||
Asc.c_oAscFileType.ODT,
|
||||
Asc.c_oAscFileType.DOCX,
|
||||
Asc.c_oAscFileType.HTML
|
||||
Asc.c_oAscFileType.HTML,
|
||||
Asc.c_oAscFileType.PDFA
|
||||
];
|
||||
|
||||
if ( !_format || _supported.indexOf(_format) < 0 )
|
||||
|
@ -226,6 +227,11 @@ define([
|
|||
Common.NotificationCenter.on('app:face', me.onAppShowed.bind(me));
|
||||
},
|
||||
|
||||
setMode: function(mode) {
|
||||
this.mode = mode;
|
||||
this.toolbar.applyLayout(mode);
|
||||
},
|
||||
|
||||
attachUIEvents: function(toolbar) {
|
||||
/**
|
||||
* UI Events
|
||||
|
@ -309,6 +315,9 @@ define([
|
|||
toolbar.listStyles.on('contextmenu', _.bind(this.onListStyleContextMenu, this));
|
||||
toolbar.styleMenu.on('hide:before', _.bind(this.onListStyleBeforeHide, 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));
|
||||
|
||||
|
@ -356,6 +365,7 @@ define([
|
|||
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_onShowParaMarks', _.bind(this.onShowParaMarks, this));
|
||||
this.api.asc_registerCallback('asc_onChangeSdtGlobalSettings',_.bind(this.onChangeSdtGlobalSettings, this));
|
||||
},
|
||||
|
||||
onChangeCompactView: function(view, compact) {
|
||||
|
@ -567,14 +577,14 @@ define([
|
|||
|
||||
var width = this._state.pgorient ? w : h,
|
||||
height = this._state.pgorient ? h : w;
|
||||
if (Math.abs(this._state.pgsize[0] - w) > 0.01 ||
|
||||
Math.abs(this._state.pgsize[1] - h) > 0.01) {
|
||||
if (Math.abs(this._state.pgsize[0] - w) > 0.1 ||
|
||||
Math.abs(this._state.pgsize[1] - h) > 0.1) {
|
||||
this._state.pgsize = [w, h];
|
||||
if (this.toolbar.mnuPageSize) {
|
||||
this.toolbar.mnuPageSize.clearAll();
|
||||
_.each(this.toolbar.mnuPageSize.items, function(item){
|
||||
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);
|
||||
return false;
|
||||
}
|
||||
|
@ -590,16 +600,16 @@ define([
|
|||
right = props.get_RightMargin(),
|
||||
bottom = props.get_BottomMargin();
|
||||
|
||||
if (!this._state.pgmargins || Math.abs(this._state.pgmargins[0] - top) > 0.01 ||
|
||||
Math.abs(this._state.pgmargins[1] - left) > 0.01 || Math.abs(this._state.pgmargins[2] - bottom) > 0.01 ||
|
||||
Math.abs(this._state.pgmargins[3] - right) > 0.01) {
|
||||
if (!this._state.pgmargins || Math.abs(this._state.pgmargins[0] - top) > 0.1 ||
|
||||
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.1) {
|
||||
this._state.pgmargins = [top, left, bottom, right];
|
||||
if (this.toolbar.btnPageMargins.menu) {
|
||||
this.toolbar.btnPageMargins.menu.clearAll();
|
||||
_.each(this.toolbar.btnPageMargins.menu.items, function(item){
|
||||
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[2] - bottom) < 0.01 && Math.abs(item.value[3] - right) < 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.1 && Math.abs(item.value[3] - right) < 0.1) {
|
||||
item.setChecked(true);
|
||||
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;
|
||||
toolbar.btnsPageBreak.setDisabled(need_disable);
|
||||
|
||||
need_disable = paragraph_locked || header_locked || !can_add_image || in_equation || control_plain;
|
||||
toolbar.btnInsertImage.setDisabled(need_disable);
|
||||
need_disable = paragraph_locked || header_locked || in_equation || control_plain;
|
||||
toolbar.btnInsertShape.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);
|
||||
|
||||
if (in_chart !== this._state.in_chart) {
|
||||
|
@ -878,6 +890,19 @@ define([
|
|||
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) {
|
||||
if (this.api)
|
||||
this.api.OpenNewDocument();
|
||||
|
@ -1616,6 +1641,7 @@ define([
|
|||
var me = this;
|
||||
(new DE.Views.ControlSettingsDialog({
|
||||
props: props,
|
||||
api: me.api,
|
||||
handler: function(result, value) {
|
||||
if (result == 'ok') {
|
||||
me.api.asc_SetContentControlProperties(value, id);
|
||||
|
@ -1639,6 +1665,26 @@ define([
|
|||
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) {
|
||||
if (_.isUndefined(item.value))
|
||||
return;
|
||||
|
@ -2510,6 +2556,9 @@ define([
|
|||
this.onParagraphColor(this._state.clrshd_asccolor);
|
||||
}
|
||||
this._state.clrshd_asccolor = undefined;
|
||||
|
||||
updateColors(this.toolbar.mnuControlsColorPicker, 1);
|
||||
this.onChangeSdtGlobalSettings();
|
||||
},
|
||||
|
||||
_onInitEditorStyles: function(styles) {
|
||||
|
@ -2700,6 +2749,8 @@ define([
|
|||
me.toolbar.render(_.extend({isCompactView: compactview}, config));
|
||||
|
||||
if ( config.isEdit ) {
|
||||
me.toolbar.setMode(config);
|
||||
|
||||
var tab = {action: 'review', caption: me.toolbar.textTabCollaboration};
|
||||
var $panel = this.getApplication().getController('Common.Controllers.ReviewChanges').createToolbarPanel();
|
||||
|
||||
|
@ -2718,7 +2769,7 @@ define([
|
|||
me.toolbar.btnPaste.$el.detach().appendTo($box);
|
||||
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};
|
||||
$panel = me.getApplication().getController('Common.Controllers.Protection').createToolbarPanel();
|
||||
|
||||
|
@ -2734,6 +2785,7 @@ define([
|
|||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
me.appOptions = config;
|
||||
|
||||
if ( config.canCoAuthoring && config.canComments ) {
|
||||
this.btnsComment = createButtonSet();
|
||||
|
@ -2784,7 +2836,13 @@ define([
|
|||
},
|
||||
|
||||
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.',
|
||||
|
|
|
@ -107,6 +107,8 @@ define([
|
|||
setApi: function(api) {
|
||||
this.api = api;
|
||||
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,
|
||||
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({
|
||||
caption: me.header.textHideStatusBar,
|
||||
|
@ -210,6 +220,8 @@ define([
|
|||
checkable: true,
|
||||
value: 'rulers'
|
||||
});
|
||||
if (!config.isEdit)
|
||||
mnuitemHideRulers.hide();
|
||||
|
||||
me.header.mnuitemFitPage = new Common.UI.MenuItem({
|
||||
caption: me.textFitPage,
|
||||
|
@ -329,6 +341,7 @@ define([
|
|||
me.header.lockHeaderBtns( 'undo', _need_disable );
|
||||
me.header.lockHeaderBtns( 'redo', _need_disable );
|
||||
me.header.lockHeaderBtns( 'opts', _need_disable );
|
||||
me.header.lockHeaderBtns( 'users', _need_disable );
|
||||
},
|
||||
|
||||
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',
|
||||
textFitWidth: 'Fit to Width'
|
||||
}, DE.Controllers.Viewport));
|
||||
|
|
|
@ -3,35 +3,35 @@
|
|||
<table cols="2" style="width: 100%;" cellpadding="10">
|
||||
<tr>
|
||||
<td class="padding-small">
|
||||
<label class="input-label"><%= scope.textFrom %></label>
|
||||
<div id="merge-email-dlg-from"></div>
|
||||
<label class="input-label header"><%= scope.textFrom %></label>
|
||||
<div id="merge-email-dlg-from" style="margin-right: 5px;"></div>
|
||||
</td>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,23 +1,8 @@
|
|||
<div class="toolbar">
|
||||
<div class="box-tabs">
|
||||
<div class="extra left"></div>
|
||||
<section class="tabs">
|
||||
<a class="scroll left">
|
||||
<i class="icon"><</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">></i>
|
||||
</a>
|
||||
</section>
|
||||
<div class="extra right">
|
||||
</div>
|
||||
<%= tabsmarkup %>
|
||||
<div class="extra right"></div>
|
||||
</div>
|
||||
<section class="box-controls">
|
||||
<section class="panel static">
|
||||
|
@ -161,7 +146,7 @@
|
|||
<div class="separator long"></div>
|
||||
<div class="group">
|
||||
<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>
|
||||
</section>
|
||||
</section>
|
||||
|
|
12
apps/documenteditor/main/app/template/ToolbarView.template
Normal 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>
|
|
@ -123,17 +123,29 @@ define([
|
|||
el : $('#bookmarks-txt-name'),
|
||||
allowBlank : true,
|
||||
validateOnChange: true,
|
||||
validateOnBlur: false,
|
||||
validateOnBlur: true,
|
||||
style : 'width: 195px;',
|
||||
value : '',
|
||||
maxLength: 40
|
||||
}).on('changing', _.bind(this.onNameChanging, this));
|
||||
maxLength: 40,
|
||||
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({
|
||||
el: $('#bookmarks-radio-name'),
|
||||
labelText: this.textName,
|
||||
name: 'asc-radio-bookmark-sort',
|
||||
checked: true
|
||||
name: 'asc-radio-bookmark-sort'
|
||||
});
|
||||
this.radioName.on('change', _.bind(this.onRadioSort, this));
|
||||
|
||||
|
@ -143,6 +155,7 @@ define([
|
|||
name: 'asc-radio-bookmark-sort'
|
||||
});
|
||||
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({
|
||||
el: $('#bookmarks-list', this.$window),
|
||||
|
@ -190,11 +203,18 @@ define([
|
|||
|
||||
show: function() {
|
||||
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() {
|
||||
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-sort-location", this.radioLocation.getValue())
|
||||
},
|
||||
|
||||
_setDefaults: function (props) {
|
||||
|
@ -266,6 +286,10 @@ define([
|
|||
var store = this.bookmarksList.store;
|
||||
var idx = _.indexOf(store.models, 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();
|
||||
},
|
||||
|
||||
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',
|
||||
textLocation: 'Location',
|
||||
textBookmarkName: 'Bookmark name',
|
||||
|
@ -297,7 +313,8 @@ define([
|
|||
textGoto: 'Go to',
|
||||
textDelete: 'Delete',
|
||||
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 || {}))
|
||||
});
|
|
@ -501,7 +501,11 @@ define([
|
|||
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) {
|
||||
|
|
|
@ -48,8 +48,8 @@ define([
|
|||
|
||||
DE.Views.ControlSettingsDialog = Common.Views.AdvancedSettingsWindow.extend(_.extend({
|
||||
options: {
|
||||
contentWidth: 300,
|
||||
height: 275
|
||||
contentWidth: 310,
|
||||
height: 412
|
||||
},
|
||||
|
||||
initialize : function(options) {
|
||||
|
@ -63,7 +63,7 @@ define([
|
|||
'<div class="settings-panel active">',
|
||||
'<table cols="1" style="width: 100%;">',
|
||||
'<tr>',
|
||||
'<td class="padding-large">',
|
||||
'<td class="padding-small">',
|
||||
'<label class="input-label">', me.textName, '</label>',
|
||||
'<div id="control-settings-txt-name"></div>',
|
||||
'</td>',
|
||||
|
@ -74,6 +74,46 @@ define([
|
|||
'<div id="control-settings-txt-tag"></div>',
|
||||
'</td>',
|
||||
'</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>',
|
||||
'<td class="padding-small">',
|
||||
'<label class="header">', me.textLock, '</label>',
|
||||
|
@ -102,6 +142,7 @@ define([
|
|||
|
||||
this.handler = options.handler;
|
||||
this.props = options.props;
|
||||
this.api = options.api;
|
||||
|
||||
Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options);
|
||||
},
|
||||
|
@ -116,6 +157,7 @@ define([
|
|||
validateOnChange: false,
|
||||
validateOnBlur: false,
|
||||
style : 'width: 100%;',
|
||||
maxLength: 64,
|
||||
value : ''
|
||||
});
|
||||
|
||||
|
@ -125,9 +167,47 @@ define([
|
|||
validateOnChange: false,
|
||||
validateOnBlur: false,
|
||||
style : 'width: 100%;',
|
||||
maxLength: 64,
|
||||
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({
|
||||
el: $('#control-settings-chb-lock-delete'),
|
||||
labelText: this.txtLockDelete
|
||||
|
@ -141,7 +221,20 @@ define([
|
|||
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() {
|
||||
this.updateThemeColors();
|
||||
this._setDefaults(this.props);
|
||||
},
|
||||
|
||||
|
@ -157,6 +250,14 @@ define([
|
|||
val = props.get_Tag();
|
||||
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===undefined) && (val = Asc.c_oAscSdtLockType.Unlocked);
|
||||
this.chLockDelete.setValue(val==Asc.c_oAscSdtLockType.SdtContentLocked || val==Asc.c_oAscSdtLockType.SdtLocked);
|
||||
|
@ -166,11 +267,12 @@ define([
|
|||
|
||||
getSettings: function () {
|
||||
var props = new AscCommon.CContentControlPr();
|
||||
|
||||
|
||||
props.put_Alias(this.txtName.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;
|
||||
|
||||
|
@ -199,6 +301,16 @@ define([
|
|||
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',
|
||||
textName: 'Title',
|
||||
textTag: 'Tag',
|
||||
|
@ -206,7 +318,14 @@ define([
|
|||
txtLockEdit: 'Contents cannot be edited',
|
||||
textLock: 'Locking',
|
||||
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 || {}))
|
||||
});
|
|
@ -53,7 +53,8 @@ define([
|
|||
'documenteditor/main/app/view/HyperlinkSettingsDialog',
|
||||
'documenteditor/main/app/view/ParagraphSettingsAdvanced',
|
||||
'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';
|
||||
|
||||
DE.Views.DocumentHolder = Backbone.View.extend(_.extend({
|
||||
|
@ -1876,6 +1877,7 @@ define([
|
|||
if (item.value == 'settings') {
|
||||
(new DE.Views.ControlSettingsDialog({
|
||||
props: props,
|
||||
api: me.api,
|
||||
handler: function (result, value) {
|
||||
if (result == 'ok') {
|
||||
me.api.asc_SetContentControlProperties(value, props.get_InternalId());
|
||||
|
@ -1891,6 +1893,29 @@ define([
|
|||
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() {
|
||||
var me = this;
|
||||
|
||||
|
@ -1922,7 +1947,7 @@ define([
|
|||
this.viewModeMenu = new Common.UI.Menu({
|
||||
initMenu: function (value) {
|
||||
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,
|
||||
isInSign = !!signProps && me._canProtect,
|
||||
canComment = !isInChart && me.api.can_AddQuotedComment() !== false && me.mode.canCoAuthoring && me.mode.canComments && !me._isDisabled;
|
||||
|
@ -2408,7 +2433,7 @@ define([
|
|||
menuImgCut.setDisabled(islocked || !cancopy);
|
||||
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;
|
||||
menuSignatureEditSign.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({
|
||||
initMenu: function(value){
|
||||
// table properties
|
||||
|
@ -2800,6 +2849,22 @@ define([
|
|||
menuTableCut.setDisabled(disabled || !cancopy);
|
||||
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
|
||||
var text = null;
|
||||
if (me.api) {
|
||||
|
@ -2807,7 +2872,7 @@ define([
|
|||
}
|
||||
menuAddHyperlinkTable.setVisible(value.hyperProps===undefined && text!==false);
|
||||
menuHyperlinkTable.setVisible(value.hyperProps!==undefined);
|
||||
menuHyperlinkSeparator.setVisible(menuAddHyperlinkTable.isVisible() || menuHyperlinkTable.isVisible());
|
||||
menuHyperlinkSeparator.setVisible(menuAddHyperlinkTable.isVisible() || menuHyperlinkTable.isVisible() || menuNumberingTable.isVisible());
|
||||
|
||||
menuEditHyperlinkTable.hyperProps = value.hyperProps;
|
||||
menuRemoveHyperlinkTable.hyperProps = value.hyperProps;
|
||||
|
@ -2982,6 +3047,7 @@ define([
|
|||
/** coauthoring begin **/
|
||||
menuAddCommentTable,
|
||||
/** coauthoring end **/
|
||||
menuNumberingTable,
|
||||
menuAddHyperlinkTable,
|
||||
menuHyperlinkTable,
|
||||
menuHyperlinkSeparator,
|
||||
|
@ -3299,6 +3365,22 @@ define([
|
|||
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({
|
||||
initMenu: function(value){
|
||||
var isInShape = (value.imgProps && value.imgProps.value && !_.isNull(value.imgProps.value.get_ShapeProperties()));
|
||||
|
@ -3421,6 +3503,24 @@ define([
|
|||
if (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: [
|
||||
me.menuSpellPara,
|
||||
|
@ -3456,6 +3556,10 @@ define([
|
|||
menuHyperlinkParaSeparator,
|
||||
menuAddHyperlinkPara,
|
||||
menuHyperlinkPara,
|
||||
menuParaNumberingSeparator,
|
||||
menuParaStartNewList,
|
||||
menuParaStartNumberingFrom,
|
||||
menuParaContinueNumbering,
|
||||
menuStyleSeparator,
|
||||
menuStyle
|
||||
]
|
||||
|
@ -3776,7 +3880,14 @@ define([
|
|||
txtPasteSourceFormat: 'Keep source formatting',
|
||||
textReplace: 'Replace image',
|
||||
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 || {}));
|
||||
});
|
|
@ -161,6 +161,13 @@ define([
|
|||
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.push(
|
||||
new Common.UI.MenuItem({
|
||||
|
@ -192,12 +199,7 @@ define([
|
|||
caption : this.btnSettingsCaption,
|
||||
canFocused: false
|
||||
}),
|
||||
new Common.UI.MenuItem({
|
||||
el : $('#fm-btn-help',this.el),
|
||||
action : 'help',
|
||||
caption : this.btnHelpCaption,
|
||||
canFocused: false
|
||||
}),
|
||||
this.miHelp,
|
||||
new Common.UI.MenuItem({
|
||||
el : $('#fm-btn-back',this.el),
|
||||
action : 'exit',
|
||||
|
@ -211,8 +213,7 @@ define([
|
|||
// 'saveas' : (new DE.Views.FileMenuPanels.ViewSaveAs({menu:me})).render(),
|
||||
'opts' : (new DE.Views.FileMenuPanels.Settings({menu:me})).render(),
|
||||
'info' : (new DE.Views.FileMenuPanels.DocumentInfo({menu:me})).render(),
|
||||
'rights' : (new DE.Views.FileMenuPanels.DocumentRights({menu:me})).render(),
|
||||
'help' : (new DE.Views.FileMenuPanels.Help({menu:me})).render()
|
||||
'rights' : (new DE.Views.FileMenuPanels.DocumentRights({menu:me})).render()
|
||||
};
|
||||
|
||||
me.$el.find('.content-box').hide();
|
||||
|
@ -243,7 +244,7 @@ define([
|
|||
applyMode: function() {
|
||||
this.miPrint[this.mode.canPrint?'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.miRecent[this.mode.canOpenRecent?'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.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.$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.panels['protect'] = (new DE.Views.FileMenuPanels.ProtectDoc({menu:this})).render();
|
||||
this.panels['protect'].setMode(this.mode);
|
||||
|
@ -291,7 +295,10 @@ define([
|
|||
} else if (this.mode.canDownloadOrigin)
|
||||
$('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']();
|
||||
},
|
||||
|
@ -325,7 +332,7 @@ define([
|
|||
if ( menu ) {
|
||||
var item = this._getMenuItem(menu),
|
||||
panel = this.panels[menu];
|
||||
if ( item.isDisabled() ) {
|
||||
if ( item.isDisabled() || !item.isVisible()) {
|
||||
item = this._getMenuItem(defMenu);
|
||||
panel = this.panels[defMenu];
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ define([
|
|||
formats: [[
|
||||
{name: 'DOCX', imgCls: 'docx', type: Asc.c_oAscFileType.DOCX},
|
||||
{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: 'DOC', imgCls: 'doc-format btn-doc', type: Asc.c_oAscFileType.DOC},
|
||||
|
@ -69,7 +70,9 @@ define([
|
|||
'<% _.each(rows, function(row) { %>',
|
||||
'<tr>',
|
||||
'<% _.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>',
|
||||
'<% }) %>',
|
||||
|
@ -337,7 +340,7 @@ define([
|
|||
/** coauthoring begin **/
|
||||
$('tr.coauth', this.el)[mode.isEdit && 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 **/
|
||||
},
|
||||
|
||||
|
@ -530,7 +533,11 @@ define([
|
|||
template: _.template([
|
||||
'<h3 style="margin-top: 20px;"><%= scope.fromBlankText %></h3><hr noshade />',
|
||||
'<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">',
|
||||
'<h3><%= scope.newDocumentText %></h3>',
|
||||
'<%= scope.newDescriptionText %>',
|
||||
|
@ -540,7 +547,13 @@ define([
|
|||
'<div class="thumb-list">',
|
||||
'<% _.each(docs, function(item) { %>',
|
||||
'<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>',
|
||||
'<% }) %>',
|
||||
|
@ -1166,7 +1179,8 @@ define([
|
|||
this.btnDeletePwd.render(this.$el.find('#fms-btn-delete-pwd'));
|
||||
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.render(this.$el.find('#fms-btn-invisible-sign'));
|
||||
|
@ -1195,7 +1209,8 @@ define([
|
|||
|
||||
setMode: function(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) {
|
||||
|
@ -1256,7 +1271,7 @@ define([
|
|||
},
|
||||
|
||||
updateEncrypt: function() {
|
||||
this.cntPassword.toggleClass('hidden', this.btnAddPwd.isVisible());
|
||||
this.cntPasswordView.toggleClass('hidden', this.btnAddPwd.isVisible());
|
||||
},
|
||||
|
||||
strProtect: 'Protect Document',
|
||||
|
|
|
@ -66,8 +66,8 @@ define([
|
|||
}, options || {});
|
||||
|
||||
this.template = [
|
||||
'<div class="box" style="height: 150px;">',
|
||||
'<div class="input-row hidden" style="margin-bottom: 10px;">',
|
||||
'<div class="box" style="height: 260px;">',
|
||||
'<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-internal" style="border-top-left-radius: 0;border-bottom-left-radius: 0;">', this.textInternal,'</button>',
|
||||
'</div>',
|
||||
|
@ -202,7 +202,7 @@ define([
|
|||
|
||||
for (var i=0; i<count; i++) {
|
||||
var anchor = anchors[i],
|
||||
level = anchors[i].asc_GetHeadingLevel(),
|
||||
level = anchors[i].asc_GetHeadingLevel()+1,
|
||||
hasParent = true;
|
||||
if (anchor.asc_GetType()== Asc.c_oAscHyperlinkAnchor.Heading){
|
||||
if (level>prev_level)
|
||||
|
@ -279,10 +279,9 @@ define([
|
|||
if (props) {
|
||||
var me = this;
|
||||
|
||||
// var bookmark = props.get_Bookmark(),
|
||||
// type = (bookmark === null || bookmark=='') ? c_oHyperlinkType.WebLink : c_oHyperlinkType.InternalLink;
|
||||
var bookmark = props.get_Bookmark(),
|
||||
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);
|
||||
me.ShowHideElem(type);
|
||||
|
||||
|
@ -335,7 +334,7 @@ define([
|
|||
|
||||
url = url.replace(new RegExp("%20",'g')," ");
|
||||
props.put_Value(url);
|
||||
// props.put_Bookmark(null);
|
||||
props.put_Bookmark(null);
|
||||
display = url;
|
||||
} else {
|
||||
var rec = this.internalList.getSelectedRec();
|
||||
|
|
|
@ -183,7 +183,7 @@ define([
|
|||
} else {
|
||||
btn.panel['hide']();
|
||||
}
|
||||
if (this.mode.isEdit) DE.getController('Toolbar').DisableToolbar(state==true);
|
||||
DE.getController('Toolbar').DisableToolbar(state==true);
|
||||
if (!this.supressEvents)
|
||||
Common.NotificationCenter.trigger('layout:changed', 'leftmenu');
|
||||
},
|
||||
|
|
|
@ -47,7 +47,7 @@ define([ 'text!documenteditor/main/app/template/MailMergeEmailDlg.template',
|
|||
options: {
|
||||
alias: 'MailMergeEmail',
|
||||
contentWidth: 500,
|
||||
height: 460
|
||||
height: 435
|
||||
},
|
||||
|
||||
initialize : function(options) {
|
||||
|
@ -169,7 +169,7 @@ define([ 'text!documenteditor/main/app/template/MailMergeEmailDlg.template',
|
|||
},
|
||||
|
||||
_onMessage: function(msg) {
|
||||
if (msg /*&& msg.Referer == "onlyoffice"*/) {
|
||||
if (msg && msg.Referer == "onlyoffice") {
|
||||
// if ( !_.isEmpty(msg.folder) ) {
|
||||
// this.trigger('mailmergefolder', this, msg.folder); // save last folder url
|
||||
// }
|
||||
|
|
|
@ -116,7 +116,7 @@ define([
|
|||
},
|
||||
|
||||
_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);
|
||||
var me = this;
|
||||
setTimeout(function() {
|
||||
|
|
|
@ -120,7 +120,7 @@ define([
|
|||
},
|
||||
|
||||
_onMessage: function(msg) {
|
||||
if (msg /*&& msg.Referer == "onlyoffice"*/) {
|
||||
if (msg && msg.Referer == "onlyoffice") {
|
||||
if ( !_.isEmpty(msg.error) ) {
|
||||
this.trigger('mailmergeerror', this, msg.error);
|
||||
}
|
||||
|
|
261
apps/documenteditor/main/app/view/NumberingValueDialog.js
Normal 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 || {}))
|
||||
});
|
|
@ -58,14 +58,20 @@ define([
|
|||
}, options || {});
|
||||
|
||||
this.template = [
|
||||
'<div class="box" style="height: 40px;">',
|
||||
'<table cols="2" style="width: 100%;margin-bottom: 10px;">',
|
||||
'<div class="box" style="height: 85px;">',
|
||||
'<table cols="2" style="width: 100%;">',
|
||||
'<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>',
|
||||
'<div id="page-size-spin-width"></div>',
|
||||
'</td>',
|
||||
'<td class="padding-small">',
|
||||
'<td>',
|
||||
'<label class="input-label">' + this.textHeight + '</label>',
|
||||
'<div id="page-size-spin-height"></div>',
|
||||
'</td>',
|
||||
|
@ -83,6 +89,7 @@ define([
|
|||
|
||||
this.spinners = [];
|
||||
this._noApply = false;
|
||||
this.isOrientPortrait = true;
|
||||
|
||||
Common.UI.Window.prototype.initialize.call(this, this.options);
|
||||
},
|
||||
|
@ -100,6 +107,10 @@ define([
|
|||
minValue: 0
|
||||
});
|
||||
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({
|
||||
el: $('#page-size-spin-height'),
|
||||
|
@ -111,6 +122,48 @@ define([
|
|||
minValue: 0
|
||||
});
|
||||
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();
|
||||
$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
|
||||
|
@ -139,10 +192,18 @@ define([
|
|||
|
||||
setSettings: function (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.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.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',
|
||||
textHeight: 'Height',
|
||||
cancelButtonText: 'Cancel',
|
||||
okButtonText: 'Ok'
|
||||
okButtonText: 'Ok',
|
||||
textPreset: 'Preset',
|
||||
txtCustom: 'Custom'
|
||||
}, DE.Views.PageSizeDialog || {}))
|
||||
});
|
|
@ -195,7 +195,7 @@ define([
|
|||
this.mergeSettings = new DE.Views.MailMergeSettings();
|
||||
}
|
||||
|
||||
if (mode && mode.canProtect) {
|
||||
if (mode && mode.isSignatureSupport) {
|
||||
this.btnSignature = new Common.UI.Button({
|
||||
hint: this.txtSignatureSettings,
|
||||
asctype: Common.Utils.documentSettingsType.Signature,
|
||||
|
|
|
@ -1164,7 +1164,7 @@ define([
|
|||
el: $('#shape-combo-fill-src'),
|
||||
cls: 'input-group-nr',
|
||||
style: 'width: 100%;',
|
||||
menuStyle: 'min-width: 190px;',
|
||||
menuStyle: 'min-width: 100%;',
|
||||
editable: false,
|
||||
data: this._arrFillSrc
|
||||
});
|
||||
|
|
|
@ -122,6 +122,9 @@ define([
|
|||
this.viewRequestedList.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.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({
|
||||
menuAlign : 'tr-br',
|
||||
|
@ -200,6 +203,26 @@ define([
|
|||
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){
|
||||
if (!record) return;
|
||||
|
||||
|
@ -211,50 +234,14 @@ define([
|
|||
return;
|
||||
}
|
||||
|
||||
var showPoint, me = this,
|
||||
currentTarget = $(e.currentTarget),
|
||||
parent = $(this.el),
|
||||
var currentTarget = $(e.currentTarget),
|
||||
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];
|
||||
|
||||
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]});
|
||||
this.showSignatureMenu(record, showPoint);
|
||||
|
||||
menu.menuAlign = 'tr-br';
|
||||
menu.menuAlignEl = currentTarget;
|
||||
menu.setOffset(-20, -currentTarget.height()/2 + 3);
|
||||
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) {
|
||||
var guid = menu.cmpEl.attr('data-value');
|
||||
switch (item.value) {
|
||||
|
|
|
@ -258,7 +258,7 @@ define([
|
|||
this.cmbStyles = new Common.UI.ComboBox({
|
||||
el: $('#tableofcontents-combo-styles'),
|
||||
cls: 'input-group-nr',
|
||||
menuStyle: 'min-width: 150px;',
|
||||
menuStyle: 'min-width: 95px;',
|
||||
editable: false,
|
||||
data: [
|
||||
{ displayValue: this.txtCurrent, value: Asc.c_oAscTOCStylesType.Current },
|
||||
|
@ -384,6 +384,10 @@ define([
|
|||
if (this.chPages.getValue() == 'checked') {
|
||||
value = props.get_RightAlignTab();
|
||||
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(),
|
||||
|
|
|
@ -810,7 +810,7 @@ define([
|
|||
el: $('#textart-combo-fill-src'),
|
||||
cls: 'input-group-nr',
|
||||
style: 'width: 100%;',
|
||||
menuStyle: 'min-width: 190px;',
|
||||
menuStyle: 'min-width: 100%;',
|
||||
editable: false,
|
||||
data: this._arrFillSrc
|
||||
});
|
||||
|
|
|
@ -262,6 +262,14 @@
|
|||
|
||||
<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/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>
|
||||
var svgpoints = document.querySelectorAll('img.inline-svg');
|
||||
SVGInjector(svgpoints);
|
||||
|
|
|
@ -283,6 +283,14 @@
|
|||
</script>
|
||||
|
||||
<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>
|
||||
<script data-main="app" src="../../../vendor/requirejs/require.js"></script>
|
||||
|
|
|
@ -168,6 +168,7 @@
|
|||
"Common.Views.History.textRestore": "Wiederherstellen",
|
||||
"Common.Views.History.textShow": "Erweitern",
|
||||
"Common.Views.History.textShowAll": "Wesentliche Änderungen anzeigen",
|
||||
"Common.Views.History.textVer": "Ver.",
|
||||
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Abbrechen",
|
||||
"Common.Views.ImageFromUrlDialog.okButtonText": "OK",
|
||||
"Common.Views.ImageFromUrlDialog.textUrl": "Bild-URL einfügen:",
|
||||
|
@ -271,6 +272,14 @@
|
|||
"Common.Views.ReviewChangesDialog.txtReject": "Ablehnen",
|
||||
"Common.Views.ReviewChangesDialog.txtRejectAll": "Alle Ä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.okButtonText": "OK",
|
||||
"Common.Views.SignDialog.textBold": "Fett",
|
||||
|
@ -380,10 +389,13 @@
|
|||
"DE.Controllers.Main.textAnonymous": "Anonym",
|
||||
"DE.Controllers.Main.textBuyNow": "Webseite besuchen",
|
||||
"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.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.textNoLicenseTitle": "ONLYOFFICE Verbindungsbeschränkung",
|
||||
"DE.Controllers.Main.textPaidFeature": "Kostenpflichtige Funktion",
|
||||
"DE.Controllers.Main.textShape": "Form",
|
||||
"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.",
|
||||
|
@ -806,6 +818,7 @@
|
|||
"DE.Views.BookmarksDialog.textName": "Name",
|
||||
"DE.Views.BookmarksDialog.textSort": "Sortieren nach",
|
||||
"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.textArea": "Fläche",
|
||||
"DE.Views.ChartSettings.textBar": "Balken",
|
||||
|
@ -834,8 +847,15 @@
|
|||
"DE.Views.ChartSettings.txtTopAndBottom": "Oben und unten",
|
||||
"DE.Views.ControlSettingsDialog.cancelButtonText": "Abbrechen",
|
||||
"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.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.textTitle": "Einstellungen des Inhaltssteuerelements",
|
||||
"DE.Views.ControlSettingsDialog.txtLockDelete": "Das Inhaltssteuerelement kann nicht gelöscht werden",
|
||||
|
@ -855,6 +875,7 @@
|
|||
"DE.Views.DocumentHolder.alignmentText": "Ausrichtung",
|
||||
"DE.Views.DocumentHolder.belowText": "Unten",
|
||||
"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.cellText": "Zelle",
|
||||
"DE.Views.DocumentHolder.centerText": "Zentriert",
|
||||
|
@ -910,7 +931,7 @@
|
|||
"DE.Views.DocumentHolder.strDetails": "Signaturdetails",
|
||||
"DE.Views.DocumentHolder.strSetup": "Signatureinrichtung",
|
||||
"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.textAlign": "Ausrichten",
|
||||
"DE.Views.DocumentHolder.textArrange": "Anordnen",
|
||||
|
@ -919,6 +940,7 @@
|
|||
"DE.Views.DocumentHolder.textArrangeForward": "Eine Ebene nach vorne",
|
||||
"DE.Views.DocumentHolder.textArrangeFront": "In den Vordergrund bringen",
|
||||
"DE.Views.DocumentHolder.textContentControls": "Inhaltssteuerelement",
|
||||
"DE.Views.DocumentHolder.textContinueNumbering": "Nummerierung fortführen",
|
||||
"DE.Views.DocumentHolder.textCopy": "Kopieren",
|
||||
"DE.Views.DocumentHolder.textCut": "Ausschneiden",
|
||||
"DE.Views.DocumentHolder.textDistributeCols": "Spalten verteilen",
|
||||
|
@ -927,14 +949,17 @@
|
|||
"DE.Views.DocumentHolder.textEditWrapBoundary": "Umbruchsgrenze bearbeiten",
|
||||
"DE.Views.DocumentHolder.textFromFile": "Aus Datei",
|
||||
"DE.Views.DocumentHolder.textFromUrl": "Aus URL",
|
||||
"DE.Views.DocumentHolder.textJoinList": "Mit der vorherigen Liste verbinden",
|
||||
"DE.Views.DocumentHolder.textNest": "Tabelle schachteln",
|
||||
"DE.Views.DocumentHolder.textNextPage": "Nächste Seite",
|
||||
"DE.Views.DocumentHolder.textNumberingValue": "Nummerierungswert",
|
||||
"DE.Views.DocumentHolder.textPaste": "Einfügen",
|
||||
"DE.Views.DocumentHolder.textPrevPage": "Vorherige Seite",
|
||||
"DE.Views.DocumentHolder.textRefreshField": "Feld aktualisieren",
|
||||
"DE.Views.DocumentHolder.textRemove": "Entfernen",
|
||||
"DE.Views.DocumentHolder.textRemoveControl": "Inhaltssteuerelement entfernen",
|
||||
"DE.Views.DocumentHolder.textReplace": "Bild ersetzen",
|
||||
"DE.Views.DocumentHolder.textSeparateList": "Separate Liste",
|
||||
"DE.Views.DocumentHolder.textSettings": "Einstellungen",
|
||||
"DE.Views.DocumentHolder.textShapeAlignBottom": "Unten ausrichten",
|
||||
"DE.Views.DocumentHolder.textShapeAlignCenter": "Zentriert ausrichten",
|
||||
|
@ -942,6 +967,8 @@
|
|||
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Mittig ausrichten",
|
||||
"DE.Views.DocumentHolder.textShapeAlignRight": "Rechtsbündig 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.textTOCSettings": "Einstellungen für das Inhaltverzeichnis",
|
||||
"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.textTo": "Zu",
|
||||
"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.txtNext": "Zum nächsten Datensatz",
|
||||
"DE.Views.MailMergeSettings.txtPrev": "Zu den vorherigen Rekord",
|
||||
|
@ -1403,6 +1430,8 @@
|
|||
"DE.Views.NoteSettingsDialog.textStart": "Starten",
|
||||
"DE.Views.NoteSettingsDialog.textTextBottom": "Unterhalb des Textes",
|
||||
"DE.Views.NoteSettingsDialog.textTitle": "Hinweise Einstellungen",
|
||||
"DE.Views.NumberingValueDialog.cancelButtonText": "Abbrechen",
|
||||
"DE.Views.NumberingValueDialog.okButtonText": "OK",
|
||||
"DE.Views.PageMarginsDialog.cancelButtonText": "Abbrechen",
|
||||
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Achtung",
|
||||
"DE.Views.PageMarginsDialog.okButtonText": "Ok",
|
||||
|
@ -1769,6 +1798,7 @@
|
|||
"DE.Views.Toolbar.mniEditHeader": "Kopfzeile bearbeiten",
|
||||
"DE.Views.Toolbar.mniHiddenBorders": "Ausgeblendete Tabellenrahmen",
|
||||
"DE.Views.Toolbar.mniHiddenChars": "Formatierungszeichen",
|
||||
"DE.Views.Toolbar.mniHighlightControls": "Einstellungen für Hervorhebungen",
|
||||
"DE.Views.Toolbar.mniImageFromFile": "Bild aus Datei",
|
||||
"DE.Views.Toolbar.mniImageFromUrl": "Bild aus URL",
|
||||
"DE.Views.Toolbar.strMenuNoFill": "Keine Füllung",
|
||||
|
@ -1806,6 +1836,7 @@
|
|||
"DE.Views.Toolbar.textMarginsWide": "Breit",
|
||||
"DE.Views.Toolbar.textNewColor": "Benutzerdefinierte Farbe",
|
||||
"DE.Views.Toolbar.textNextPage": "Nächste Seite",
|
||||
"DE.Views.Toolbar.textNoHighlight": "Ohne Hervorhebung",
|
||||
"DE.Views.Toolbar.textNone": "Kein",
|
||||
"DE.Views.Toolbar.textOddPage": "Ungerade Seite",
|
||||
"DE.Views.Toolbar.textPageMarginsCustom": "Benutzerdefinierte Seitenränder ",
|
||||
|
|
|
@ -168,6 +168,7 @@
|
|||
"Common.Views.History.textRestore": "Restore",
|
||||
"Common.Views.History.textShow": "Expand",
|
||||
"Common.Views.History.textShowAll": "Show detailed changes",
|
||||
"Common.Views.History.textVer": "ver.",
|
||||
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Cancel",
|
||||
"Common.Views.ImageFromUrlDialog.okButtonText": "OK",
|
||||
"Common.Views.ImageFromUrlDialog.textUrl": "Paste an image URL:",
|
||||
|
@ -271,6 +272,14 @@
|
|||
"Common.Views.ReviewChangesDialog.txtReject": "Reject",
|
||||
"Common.Views.ReviewChangesDialog.txtRejectAll": "Reject All Changes",
|
||||
"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.okButtonText": "Ok",
|
||||
"Common.Views.SignDialog.textBold": "Bold",
|
||||
|
@ -380,10 +389,13 @@
|
|||
"DE.Controllers.Main.textAnonymous": "Anonymous",
|
||||
"DE.Controllers.Main.textBuyNow": "Visit website",
|
||||
"DE.Controllers.Main.textChangesSaved": "All changes saved",
|
||||
"DE.Controllers.Main.textClose": "Close",
|
||||
"DE.Controllers.Main.textCloseTip": "Click to close the tip",
|
||||
"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.textNoLicenseTitle": "ONLYOFFICE connection limitation",
|
||||
"DE.Controllers.Main.textPaidFeature": "Paid feature",
|
||||
"DE.Controllers.Main.textShape": "Shape",
|
||||
"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.",
|
||||
|
@ -806,6 +818,7 @@
|
|||
"DE.Views.BookmarksDialog.textName": "Name",
|
||||
"DE.Views.BookmarksDialog.textSort": "Sort by",
|
||||
"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.textArea": "Area",
|
||||
"DE.Views.ChartSettings.textBar": "Bar",
|
||||
|
@ -834,8 +847,15 @@
|
|||
"DE.Views.ChartSettings.txtTopAndBottom": "Top and bottom",
|
||||
"DE.Views.ControlSettingsDialog.cancelButtonText": "Cancel",
|
||||
"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.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.textTitle": "Content Control Settings",
|
||||
"DE.Views.ControlSettingsDialog.txtLockDelete": "Content control cannot be deleted",
|
||||
|
@ -855,6 +875,7 @@
|
|||
"DE.Views.DocumentHolder.alignmentText": "Alignment",
|
||||
"DE.Views.DocumentHolder.belowText": "Below",
|
||||
"DE.Views.DocumentHolder.breakBeforeText": "Page break before",
|
||||
"DE.Views.DocumentHolder.bulletsText": "Bullets and Numbering",
|
||||
"DE.Views.DocumentHolder.cellAlignText": "Cell Vertical Alignment",
|
||||
"DE.Views.DocumentHolder.cellText": "Cell",
|
||||
"DE.Views.DocumentHolder.centerText": "Center",
|
||||
|
@ -919,6 +940,7 @@
|
|||
"DE.Views.DocumentHolder.textArrangeForward": "Bring Forward",
|
||||
"DE.Views.DocumentHolder.textArrangeFront": "Bring to Foreground",
|
||||
"DE.Views.DocumentHolder.textContentControls": "Content control",
|
||||
"DE.Views.DocumentHolder.textContinueNumbering": "Continue numbering",
|
||||
"DE.Views.DocumentHolder.textCopy": "Copy",
|
||||
"DE.Views.DocumentHolder.textCut": "Cut",
|
||||
"DE.Views.DocumentHolder.textDistributeCols": "Distribute columns",
|
||||
|
@ -927,14 +949,17 @@
|
|||
"DE.Views.DocumentHolder.textEditWrapBoundary": "Edit Wrap Boundary",
|
||||
"DE.Views.DocumentHolder.textFromFile": "From File",
|
||||
"DE.Views.DocumentHolder.textFromUrl": "From URL",
|
||||
"DE.Views.DocumentHolder.textJoinList": "Join to previous list",
|
||||
"DE.Views.DocumentHolder.textNest": "Nest table",
|
||||
"DE.Views.DocumentHolder.textNextPage": "Next Page",
|
||||
"DE.Views.DocumentHolder.textNumberingValue": "Numbering Value",
|
||||
"DE.Views.DocumentHolder.textPaste": "Paste",
|
||||
"DE.Views.DocumentHolder.textPrevPage": "Previous Page",
|
||||
"DE.Views.DocumentHolder.textRefreshField": "Refresh field",
|
||||
"DE.Views.DocumentHolder.textRemove": "Remove",
|
||||
"DE.Views.DocumentHolder.textRemoveControl": "Remove content control",
|
||||
"DE.Views.DocumentHolder.textReplace": "Replace image",
|
||||
"DE.Views.DocumentHolder.textSeparateList": "Separate list",
|
||||
"DE.Views.DocumentHolder.textSettings": "Settings",
|
||||
"DE.Views.DocumentHolder.textShapeAlignBottom": "Align Bottom",
|
||||
"DE.Views.DocumentHolder.textShapeAlignCenter": "Align Center",
|
||||
|
@ -942,6 +967,8 @@
|
|||
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Align Middle",
|
||||
"DE.Views.DocumentHolder.textShapeAlignRight": "Align Right",
|
||||
"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.textTOCSettings": "Table of contents settings",
|
||||
"DE.Views.DocumentHolder.textUndo": "Undo",
|
||||
|
@ -1141,7 +1168,7 @@
|
|||
"DE.Views.FileMenuPanels.Settings.strInputMode": "Turn on hieroglyphs",
|
||||
"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.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.strStrict": "Strict",
|
||||
"DE.Views.FileMenuPanels.Settings.strUnit": "Unit of Measurement",
|
||||
|
@ -1403,6 +1430,8 @@
|
|||
"DE.Views.NoteSettingsDialog.textStart": "Start at",
|
||||
"DE.Views.NoteSettingsDialog.textTextBottom": "Below text",
|
||||
"DE.Views.NoteSettingsDialog.textTitle": "Notes Settings",
|
||||
"DE.Views.NumberingValueDialog.cancelButtonText": "Cancel",
|
||||
"DE.Views.NumberingValueDialog.okButtonText": "Ok",
|
||||
"DE.Views.PageMarginsDialog.cancelButtonText": "Cancel",
|
||||
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Warning",
|
||||
"DE.Views.PageMarginsDialog.okButtonText": "Ok",
|
||||
|
@ -1769,6 +1798,7 @@
|
|||
"DE.Views.Toolbar.mniEditHeader": "Edit Header",
|
||||
"DE.Views.Toolbar.mniHiddenBorders": "Hidden Table Borders",
|
||||
"DE.Views.Toolbar.mniHiddenChars": "Nonprinting Characters",
|
||||
"DE.Views.Toolbar.mniHighlightControls": "Highlight settings",
|
||||
"DE.Views.Toolbar.mniImageFromFile": "Image from File",
|
||||
"DE.Views.Toolbar.mniImageFromUrl": "Image from URL",
|
||||
"DE.Views.Toolbar.strMenuNoFill": "No Fill",
|
||||
|
@ -1806,6 +1836,7 @@
|
|||
"DE.Views.Toolbar.textMarginsWide": "Wide",
|
||||
"DE.Views.Toolbar.textNewColor": "Add New Custom Color",
|
||||
"DE.Views.Toolbar.textNextPage": "Next Page",
|
||||
"DE.Views.Toolbar.textNoHighlight": "No highlighting",
|
||||
"DE.Views.Toolbar.textNone": "None",
|
||||
"DE.Views.Toolbar.textOddPage": "Odd Page",
|
||||
"DE.Views.Toolbar.textPageMarginsCustom": "Custom margins",
|
||||
|
|
|
@ -168,6 +168,7 @@
|
|||
"Common.Views.History.textRestore": "Restaurar",
|
||||
"Common.Views.History.textShow": "Desplegar",
|
||||
"Common.Views.History.textShowAll": "Mostrar cambios detallados",
|
||||
"Common.Views.History.textVer": "ver.",
|
||||
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Cancelar",
|
||||
"Common.Views.ImageFromUrlDialog.okButtonText": "Aceptar",
|
||||
"Common.Views.ImageFromUrlDialog.textUrl": "Pegar URL de imagen:",
|
||||
|
@ -192,6 +193,7 @@
|
|||
"Common.Views.OpenDialog.txtIncorrectPwd": "La contraseña es incorrecta",
|
||||
"Common.Views.OpenDialog.txtPassword": "Contraseña",
|
||||
"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.txtTitleProtected": "Archivo protegido",
|
||||
"Common.Views.PasswordDialog.cancelButtonText": "Cancelar",
|
||||
|
@ -216,7 +218,7 @@
|
|||
"Common.Views.Protection.txtEncrypt": "Encriptar",
|
||||
"Common.Views.Protection.txtInvisibleSignature": "Añadir firma digital",
|
||||
"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.okButtonText": "Aceptar",
|
||||
"Common.Views.RenameDialog.textName": "Nombre de archivo",
|
||||
|
@ -270,6 +272,14 @@
|
|||
"Common.Views.ReviewChangesDialog.txtReject": "Rechazar",
|
||||
"Common.Views.ReviewChangesDialog.txtRejectAll": "Rechazar todos los cambjios",
|
||||
"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.okButtonText": "Aceptar",
|
||||
"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.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.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.applyChangesTitleText": "Cargando cambios",
|
||||
"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.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.errorDataEncrypted": "Se han recibido cambios cifrados, ellos no pueden ser descifrados.",
|
||||
"DE.Controllers.Main.errorDataRange": "Rango de datos incorrecto.",
|
||||
"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.",
|
||||
|
@ -377,10 +389,13 @@
|
|||
"DE.Controllers.Main.textAnonymous": "Anónimo",
|
||||
"DE.Controllers.Main.textBuyNow": "Visitar sitio web",
|
||||
"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.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.textNoLicenseTitle": "Conexión ONLYOFFICE",
|
||||
"DE.Controllers.Main.textPaidFeature": "Función de pago",
|
||||
"DE.Controllers.Main.textShape": "Forma",
|
||||
"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.",
|
||||
|
@ -444,9 +459,11 @@
|
|||
"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.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.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.warnNoLicenseUsers": "Esta versión de",
|
||||
"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.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.Navigation.txtBeginning": "Principio del documento",
|
||||
"DE.Controllers.Navigation.txtGotoBeginning": "Ir al principio de",
|
||||
|
@ -792,12 +809,16 @@
|
|||
"DE.Controllers.Viewport.textFitPage": "Ajustar a la página",
|
||||
"DE.Controllers.Viewport.textFitWidth": "Ajustar al ancho",
|
||||
"DE.Views.BookmarksDialog.textAdd": "Añadir",
|
||||
"DE.Views.BookmarksDialog.textBookmarkName": "Nombre de marcador",
|
||||
"DE.Views.BookmarksDialog.textClose": "Cerrar",
|
||||
"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.textName": "Nombre",
|
||||
"DE.Views.BookmarksDialog.textSort": "Ordenar por",
|
||||
"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.textArea": "Área",
|
||||
"DE.Views.ChartSettings.textBar": "Barra",
|
||||
|
@ -826,8 +847,15 @@
|
|||
"DE.Views.ChartSettings.txtTopAndBottom": "Superior e inferior",
|
||||
"DE.Views.ControlSettingsDialog.cancelButtonText": "Cancelar",
|
||||
"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.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.textTitle": "Ajustes de control de contenido",
|
||||
"DE.Views.ControlSettingsDialog.txtLockDelete": "El control de contenido no puede",
|
||||
|
@ -847,6 +875,7 @@
|
|||
"DE.Views.DocumentHolder.alignmentText": "Alineación",
|
||||
"DE.Views.DocumentHolder.belowText": "Abajo",
|
||||
"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.cellText": "Celda",
|
||||
"DE.Views.DocumentHolder.centerText": "Al centro",
|
||||
|
@ -911,6 +940,7 @@
|
|||
"DE.Views.DocumentHolder.textArrangeForward": "Traer adelante",
|
||||
"DE.Views.DocumentHolder.textArrangeFront": "Traer al primer plano",
|
||||
"DE.Views.DocumentHolder.textContentControls": "Control de contenido",
|
||||
"DE.Views.DocumentHolder.textContinueNumbering": "Continuar numeración",
|
||||
"DE.Views.DocumentHolder.textCopy": "Copiar",
|
||||
"DE.Views.DocumentHolder.textCut": "Cortar",
|
||||
"DE.Views.DocumentHolder.textDistributeCols": "Distribuir columnas",
|
||||
|
@ -919,14 +949,17 @@
|
|||
"DE.Views.DocumentHolder.textEditWrapBoundary": "Editar límite de ajuste",
|
||||
"DE.Views.DocumentHolder.textFromFile": "De archivo",
|
||||
"DE.Views.DocumentHolder.textFromUrl": "De URL",
|
||||
"DE.Views.DocumentHolder.textJoinList": "Juntar con lista anterior",
|
||||
"DE.Views.DocumentHolder.textNest": "Tabla nido",
|
||||
"DE.Views.DocumentHolder.textNextPage": "Página siguiente",
|
||||
"DE.Views.DocumentHolder.textNumberingValue": "Valor de inicio",
|
||||
"DE.Views.DocumentHolder.textPaste": "Pegar",
|
||||
"DE.Views.DocumentHolder.textPrevPage": "Página anterior",
|
||||
"DE.Views.DocumentHolder.textRefreshField": "Actualize el campo",
|
||||
"DE.Views.DocumentHolder.textRemove": "Eliminar",
|
||||
"DE.Views.DocumentHolder.textRemoveControl": "Elimine el control de contenido",
|
||||
"DE.Views.DocumentHolder.textReplace": "Reemplazar imagen",
|
||||
"DE.Views.DocumentHolder.textSeparateList": "Separar lista",
|
||||
"DE.Views.DocumentHolder.textSettings": "Ajustes",
|
||||
"DE.Views.DocumentHolder.textShapeAlignBottom": "Alinear en la parte inferior",
|
||||
"DE.Views.DocumentHolder.textShapeAlignCenter": "Alinear al centro",
|
||||
|
@ -934,6 +967,8 @@
|
|||
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Alinear al medio",
|
||||
"DE.Views.DocumentHolder.textShapeAlignRight": "Alinear a la derecha",
|
||||
"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.textTOCSettings": "Ajustes de la tabla de contenidos",
|
||||
"DE.Views.DocumentHolder.textUndo": "Deshacer",
|
||||
|
@ -1055,7 +1090,7 @@
|
|||
"DE.Views.DropcapSettingsAdvanced.textLeft": "Izquierdo",
|
||||
"DE.Views.DropcapSettingsAdvanced.textMargin": "Margen",
|
||||
"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.textPage": "Página",
|
||||
"DE.Views.DropcapSettingsAdvanced.textParagraph": "Párrafo",
|
||||
|
@ -1187,12 +1222,14 @@
|
|||
"DE.Views.HyperlinkSettingsDialog.textDefault": "Fragmento de texto seleccionado",
|
||||
"DE.Views.HyperlinkSettingsDialog.textDisplay": "Mostrar",
|
||||
"DE.Views.HyperlinkSettingsDialog.textExternal": "Enlace externo",
|
||||
"DE.Views.HyperlinkSettingsDialog.textInternal": "Lugar en documento",
|
||||
"DE.Views.HyperlinkSettingsDialog.textTitle": "Configuración de hiperenlace",
|
||||
"DE.Views.HyperlinkSettingsDialog.textTooltip": "Información en pantalla",
|
||||
"DE.Views.HyperlinkSettingsDialog.textUrl": "Enlace a",
|
||||
"DE.Views.HyperlinkSettingsDialog.txtBeginning": "Principio del documento",
|
||||
"DE.Views.HyperlinkSettingsDialog.txtBookmarks": "Marcadores",
|
||||
"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.ImageSettings.textAdvanced": "Mostrar ajustes avanzados",
|
||||
"DE.Views.ImageSettings.textEdit": "Editar",
|
||||
|
@ -1285,6 +1322,7 @@
|
|||
"DE.Views.LeftMenu.tipAbout": "Acerca de programa",
|
||||
"DE.Views.LeftMenu.tipChat": "Chat",
|
||||
"DE.Views.LeftMenu.tipComments": "Comentarios",
|
||||
"DE.Views.LeftMenu.tipNavigation": "Navegación",
|
||||
"DE.Views.LeftMenu.tipPlugins": "Plugins",
|
||||
"DE.Views.LeftMenu.tipSearch": "Búsqueda",
|
||||
"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.textUpdateAll": "Actualize toda la tabla",
|
||||
"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.tipContentsUpdate": "Actualize la tabla de contenidos",
|
||||
"DE.Views.Links.tipInsertHyperlink": "Añadir hiperenlace",
|
||||
|
@ -1391,6 +1430,8 @@
|
|||
"DE.Views.NoteSettingsDialog.textStart": "Empezar con",
|
||||
"DE.Views.NoteSettingsDialog.textTextBottom": "Bajo el texto",
|
||||
"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.notcriticalErrorTitle": "Aviso",
|
||||
"DE.Views.PageMarginsDialog.okButtonText": "Aceptar",
|
||||
|
@ -1404,6 +1445,7 @@
|
|||
"DE.Views.PageSizeDialog.cancelButtonText": "Cancelar",
|
||||
"DE.Views.PageSizeDialog.okButtonText": "Aceptar",
|
||||
"DE.Views.PageSizeDialog.textHeight": "Altura",
|
||||
"DE.Views.PageSizeDialog.textPreset": "Preajuste",
|
||||
"DE.Views.PageSizeDialog.textTitle": "Tamaño de página",
|
||||
"DE.Views.PageSizeDialog.textWidth": "Ancho",
|
||||
"DE.Views.PageSizeDialog.txtCustom": "Personalizado",
|
||||
|
@ -1418,7 +1460,7 @@
|
|||
"DE.Views.ParagraphSettings.textAuto": "Múltiple",
|
||||
"DE.Views.ParagraphSettings.textBackColor": "Color de fondo",
|
||||
"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.ParagraphSettingsAdvanced.cancelButtonText": "Cancelar",
|
||||
"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.textLeader": "Director",
|
||||
"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.textPosition": "Posición",
|
||||
"DE.Views.ParagraphSettingsAdvanced.textRemove": "Eliminar",
|
||||
|
@ -1506,7 +1548,7 @@
|
|||
"DE.Views.ShapeSettings.textGradientFill": "Relleno degradado",
|
||||
"DE.Views.ShapeSettings.textImageTexture": "Imagen o textura",
|
||||
"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.textPatternFill": "Patrón",
|
||||
"DE.Views.ShapeSettings.textRadial": "Radial",
|
||||
|
@ -1615,7 +1657,7 @@
|
|||
"DE.Views.TableSettings.textHeader": "Encabezado",
|
||||
"DE.Views.TableSettings.textHeight": "Altura",
|
||||
"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.textRows": "Filas",
|
||||
"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.textMeasure": "medir en",
|
||||
"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.textOptions": "Opciones",
|
||||
"DE.Views.TableSettingsAdvanced.textOverlap": "Superposición",
|
||||
|
@ -1720,7 +1762,7 @@
|
|||
"DE.Views.TextArtSettings.textGradient": "Gradiente",
|
||||
"DE.Views.TextArtSettings.textGradientFill": "Relleno degradado",
|
||||
"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.textRadial": "Radial",
|
||||
"DE.Views.TextArtSettings.textSelectTexture": "Seleccionar",
|
||||
|
@ -1756,6 +1798,7 @@
|
|||
"DE.Views.Toolbar.mniEditHeader": "Editar encabezado",
|
||||
"DE.Views.Toolbar.mniHiddenBorders": "Bordes de tabla escogidos",
|
||||
"DE.Views.Toolbar.mniHiddenChars": "Caracteres no imprimibles",
|
||||
"DE.Views.Toolbar.mniHighlightControls": "Ajustes de resaltado",
|
||||
"DE.Views.Toolbar.mniImageFromFile": "Imagen de archivo",
|
||||
"DE.Views.Toolbar.mniImageFromUrl": "Imagen de URL",
|
||||
"DE.Views.Toolbar.strMenuNoFill": "Sin relleno",
|
||||
|
@ -1791,8 +1834,9 @@
|
|||
"DE.Views.Toolbar.textMarginsNormal": "Normal",
|
||||
"DE.Views.Toolbar.textMarginsUsNormal": "US Normal",
|
||||
"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.textNoHighlight": "No resaltar",
|
||||
"DE.Views.Toolbar.textNone": "Ningún",
|
||||
"DE.Views.Toolbar.textOddPage": "Página impar",
|
||||
"DE.Views.Toolbar.textPageMarginsCustom": "Márgenes personalizados",
|
||||
|
|
|
@ -150,7 +150,7 @@
|
|||
"Common.Views.Header.textSaveChanged": "Modifié",
|
||||
"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.textZoom": "Grossissement",
|
||||
"Common.Views.Header.textZoom": "Zoom",
|
||||
"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.tipGoEdit": "Modifier le fichier courant",
|
||||
|
@ -168,6 +168,7 @@
|
|||
"Common.Views.History.textRestore": "Restaurer",
|
||||
"Common.Views.History.textShow": "Développer",
|
||||
"Common.Views.History.textShowAll": "Afficher les modifications détaillées",
|
||||
"Common.Views.History.textVer": "ver. ",
|
||||
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Annuler",
|
||||
"Common.Views.ImageFromUrlDialog.okButtonText": "OK",
|
||||
"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.txtPassword": "Mot de passe",
|
||||
"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.txtTitleProtected": "Fichier protégé",
|
||||
"Common.Views.PasswordDialog.cancelButtonText": "Annuler",
|
||||
|
@ -216,7 +218,7 @@
|
|||
"Common.Views.Protection.txtEncrypt": "Chiffrer",
|
||||
"Common.Views.Protection.txtInvisibleSignature": "Ajouter une signature électronique",
|
||||
"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.okButtonText": "Ok",
|
||||
"Common.Views.RenameDialog.textName": "Nom de fichier",
|
||||
|
@ -270,6 +272,14 @@
|
|||
"Common.Views.ReviewChangesDialog.txtReject": "Rejeter",
|
||||
"Common.Views.ReviewChangesDialog.txtRejectAll": "Rejeter toutes les modifications",
|
||||
"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.okButtonText": "OK",
|
||||
"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.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.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.applyChangesTitleText": "Chargement des changemets",
|
||||
"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.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.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.errorDefaultMessage": "Code d'erreur: %1",
|
||||
"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.textBuyNow": "Visiter le site web",
|
||||
"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.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.textNoLicenseTitle": "Limitation de connexion ONLYOFFICE",
|
||||
"DE.Controllers.Main.textPaidFeature": "Fonction payée",
|
||||
"DE.Controllers.Main.textShape": "Forme",
|
||||
"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.",
|
||||
|
@ -444,9 +459,11 @@
|
|||
"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.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.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.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.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.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.Navigation.txtBeginning": "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.textFitWidth": "Ajuster à la largeur",
|
||||
"DE.Views.BookmarksDialog.textAdd": "Ajouter",
|
||||
"DE.Views.BookmarksDialog.textBookmarkName": "Nom du signet",
|
||||
"DE.Views.BookmarksDialog.textClose": "Fermer",
|
||||
"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.textName": "Nom",
|
||||
"DE.Views.BookmarksDialog.textSort": "Trier par",
|
||||
"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.textArea": "En aires",
|
||||
"DE.Views.ChartSettings.textBar": "En barre",
|
||||
|
@ -826,8 +847,15 @@
|
|||
"DE.Views.ChartSettings.txtTopAndBottom": "Haut et bas",
|
||||
"DE.Views.ControlSettingsDialog.cancelButtonText": "Annuler",
|
||||
"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.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.textTitle": "Paramètres de contrôle du contenu",
|
||||
"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.belowText": "En dessous",
|
||||
"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.cellText": "Cellule",
|
||||
"DE.Views.DocumentHolder.centerText": "Centre",
|
||||
|
@ -911,6 +940,7 @@
|
|||
"DE.Views.DocumentHolder.textArrangeForward": "Avancer",
|
||||
"DE.Views.DocumentHolder.textArrangeFront": "Mettre au premier plan",
|
||||
"DE.Views.DocumentHolder.textContentControls": "Contrôle du contenu",
|
||||
"DE.Views.DocumentHolder.textContinueNumbering": "Continuer la numérotation",
|
||||
"DE.Views.DocumentHolder.textCopy": "Copier",
|
||||
"DE.Views.DocumentHolder.textCut": "Couper",
|
||||
"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.textFromFile": "D'un fichier",
|
||||
"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.textNextPage": "Page suivante",
|
||||
"DE.Views.DocumentHolder.textNumberingValue": "Valeur initiale",
|
||||
"DE.Views.DocumentHolder.textPaste": "Coller",
|
||||
"DE.Views.DocumentHolder.textPrevPage": "Page précédente",
|
||||
"DE.Views.DocumentHolder.textRefreshField": "Actualiser le champ",
|
||||
"DE.Views.DocumentHolder.textRemove": "Supprimer",
|
||||
"DE.Views.DocumentHolder.textRemoveControl": "Supprimer le contrôle du contenu",
|
||||
"DE.Views.DocumentHolder.textReplace": "Remplacer l’image",
|
||||
"DE.Views.DocumentHolder.textSeparateList": "Liste séparée",
|
||||
"DE.Views.DocumentHolder.textSettings": "Paramètres",
|
||||
"DE.Views.DocumentHolder.textShapeAlignBottom": "Aligner en bas",
|
||||
"DE.Views.DocumentHolder.textShapeAlignCenter": "Aligner au centre",
|
||||
|
@ -934,6 +967,8 @@
|
|||
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Aligner au milieu",
|
||||
"DE.Views.DocumentHolder.textShapeAlignRight": "Aligner à droite",
|
||||
"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.textTOCSettings": "Paramètres de la table des matières",
|
||||
"DE.Views.DocumentHolder.textUndo": "Annuler",
|
||||
|
@ -1006,7 +1041,7 @@
|
|||
"DE.Views.DocumentHolder.txtRemLimit": "Supprimer la limite",
|
||||
"DE.Views.DocumentHolder.txtRemoveAccentChar": "Supprimer le caractère d'accent",
|
||||
"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.txtRemSuperscript": "Supprimer la suscription",
|
||||
"DE.Views.DocumentHolder.txtScriptsAfter": "Scripts après le texte",
|
||||
|
@ -1218,7 +1253,7 @@
|
|||
"DE.Views.ImageSettingsAdvanced.cancelButtonText": "Annuler",
|
||||
"DE.Views.ImageSettingsAdvanced.okButtonText": "OK",
|
||||
"DE.Views.ImageSettingsAdvanced.strMargins": "Rembourrage texte",
|
||||
"DE.Views.ImageSettingsAdvanced.textAbsoluteWH": "Absolu",
|
||||
"DE.Views.ImageSettingsAdvanced.textAbsoluteWH": "Absolue",
|
||||
"DE.Views.ImageSettingsAdvanced.textAlignment": "Alignement",
|
||||
"DE.Views.ImageSettingsAdvanced.textAlt": "Texte de remplacement",
|
||||
"DE.Views.ImageSettingsAdvanced.textAltDescription": "Description",
|
||||
|
@ -1287,6 +1322,7 @@
|
|||
"DE.Views.LeftMenu.tipAbout": "Au sujet de",
|
||||
"DE.Views.LeftMenu.tipChat": "Chat",
|
||||
"DE.Views.LeftMenu.tipComments": "Commentaires",
|
||||
"DE.Views.LeftMenu.tipNavigation": "Navigation",
|
||||
"DE.Views.LeftMenu.tipPlugins": "Plug-ins",
|
||||
"DE.Views.LeftMenu.tipSearch": "Recherche",
|
||||
"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.textUpdateAll": "Actualiser le tableau entier",
|
||||
"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.tipContentsUpdate": "Actualiser la table des matières",
|
||||
"DE.Views.Links.tipInsertHyperlink": "Ajouter un lien hypertexte",
|
||||
|
@ -1334,7 +1371,7 @@
|
|||
"DE.Views.MailMergeSettings.downloadMergeTitle": "Fusion",
|
||||
"DE.Views.MailMergeSettings.errorMailMergeSaveFile": "Fusion a échoué.",
|
||||
"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.textCurrent": "Enregistrement actuel",
|
||||
"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.txtEmptyItem": "En-tête vide",
|
||||
"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.txtHeadingBefore": "Nouvel en-tête avant",
|
||||
"DE.Views.Navigation.txtNewHeading": "Nouveau sous-titre",
|
||||
|
@ -1392,6 +1430,8 @@
|
|||
"DE.Views.NoteSettingsDialog.textStart": "Début",
|
||||
"DE.Views.NoteSettingsDialog.textTextBottom": "Sous le texte",
|
||||
"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.notcriticalErrorTitle": "Avertissement",
|
||||
"DE.Views.PageMarginsDialog.okButtonText": "Ok",
|
||||
|
@ -1405,6 +1445,7 @@
|
|||
"DE.Views.PageSizeDialog.cancelButtonText": "Annuler",
|
||||
"DE.Views.PageSizeDialog.okButtonText": "Ok",
|
||||
"DE.Views.PageSizeDialog.textHeight": "Hauteur",
|
||||
"DE.Views.PageSizeDialog.textPreset": "Prédéfini",
|
||||
"DE.Views.PageSizeDialog.textTitle": "Taille de la page",
|
||||
"DE.Views.PageSizeDialog.textWidth": "Largeur",
|
||||
"DE.Views.PageSizeDialog.txtCustom": "Personnalisé",
|
||||
|
@ -1557,8 +1598,8 @@
|
|||
"DE.Views.Statusbar.tipFitWidth": "Ajuster à la largeur",
|
||||
"DE.Views.Statusbar.tipSetLang": "Définir la langue du texte",
|
||||
"DE.Views.Statusbar.tipZoomFactor": "Grossissement",
|
||||
"DE.Views.Statusbar.tipZoomIn": "Agrandir le zoom",
|
||||
"DE.Views.Statusbar.tipZoomOut": "Réduire le zoom",
|
||||
"DE.Views.Statusbar.tipZoomIn": "Zoom avant",
|
||||
"DE.Views.Statusbar.tipZoomOut": "Zoom arrière",
|
||||
"DE.Views.Statusbar.txtPageNumInvalid": "Numéro de page non valide",
|
||||
"DE.Views.StyleTitleDialog.textHeader": "Créer un nouveau style",
|
||||
"DE.Views.StyleTitleDialog.textNextStyle": "Style du nouveau paragraphe",
|
||||
|
@ -1757,6 +1798,7 @@
|
|||
"DE.Views.Toolbar.mniEditHeader": "Modifier l'en-tête",
|
||||
"DE.Views.Toolbar.mniHiddenBorders": "Bordures du tableau cachées",
|
||||
"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.mniImageFromUrl": "Image à partir d'une URL",
|
||||
"DE.Views.Toolbar.strMenuNoFill": "Pas de remplissage",
|
||||
|
@ -1794,6 +1836,7 @@
|
|||
"DE.Views.Toolbar.textMarginsWide": "Large",
|
||||
"DE.Views.Toolbar.textNewColor": "Couleur personnalisée",
|
||||
"DE.Views.Toolbar.textNextPage": "Page suivante",
|
||||
"DE.Views.Toolbar.textNoHighlight": "Pas de surbrillance ",
|
||||
"DE.Views.Toolbar.textNone": "Aucune",
|
||||
"DE.Views.Toolbar.textOddPage": "Page impaire",
|
||||
"DE.Views.Toolbar.textPageMarginsCustom": "Marges personnalisées",
|
||||
|
@ -1898,7 +1941,7 @@
|
|||
"DE.Views.Toolbar.txtScheme20": "Urbain",
|
||||
"DE.Views.Toolbar.txtScheme21": "Verve",
|
||||
"DE.Views.Toolbar.txtScheme3": "Apex",
|
||||
"DE.Views.Toolbar.txtScheme4": "Aspect",
|
||||
"DE.Views.Toolbar.txtScheme4": "Proportions",
|
||||
"DE.Views.Toolbar.txtScheme5": "Civique",
|
||||
"DE.Views.Toolbar.txtScheme6": "Rotonde",
|
||||
"DE.Views.Toolbar.txtScheme7": "Capitaux",
|
||||
|
|
|
@ -271,6 +271,14 @@
|
|||
"Common.Views.ReviewChangesDialog.txtReject": "Respingi",
|
||||
"Common.Views.ReviewChangesDialog.txtRejectAll": "Annulla tutte le modifiche",
|
||||
"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.okButtonText": "OK",
|
||||
"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.errorBadImageUrl": "URL dell'immagine non corretto",
|
||||
"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.errorDataEncrypted": "Le modifiche crittografate sono state ricevute, non possono essere decifrate.",
|
||||
"DE.Controllers.Main.errorDataRange": "Intervallo di dati non corretto.",
|
||||
|
@ -855,6 +863,7 @@
|
|||
"DE.Views.DocumentHolder.alignmentText": "Allineamento",
|
||||
"DE.Views.DocumentHolder.belowText": "Al di sotto",
|
||||
"DE.Views.DocumentHolder.breakBeforeText": "Anteponi interruzione",
|
||||
"DE.Views.DocumentHolder.bulletsText": "Elenco puntato e Numerato",
|
||||
"DE.Views.DocumentHolder.cellAlignText": "Allineamento verticale celle",
|
||||
"DE.Views.DocumentHolder.cellText": "Cella",
|
||||
"DE.Views.DocumentHolder.centerText": "Al centro",
|
||||
|
@ -919,6 +928,7 @@
|
|||
"DE.Views.DocumentHolder.textArrangeForward": "Porta avanti",
|
||||
"DE.Views.DocumentHolder.textArrangeFront": "Porta in primo piano",
|
||||
"DE.Views.DocumentHolder.textContentControls": "Controllo Contenuto",
|
||||
"DE.Views.DocumentHolder.textContinueNumbering": "Continua la numerazione",
|
||||
"DE.Views.DocumentHolder.textCopy": "Copia",
|
||||
"DE.Views.DocumentHolder.textCut": "Taglia",
|
||||
"DE.Views.DocumentHolder.textDistributeCols": "Distribuisci colonne",
|
||||
|
@ -927,14 +937,17 @@
|
|||
"DE.Views.DocumentHolder.textEditWrapBoundary": "Modifica bordi disposizione testo",
|
||||
"DE.Views.DocumentHolder.textFromFile": "Da file",
|
||||
"DE.Views.DocumentHolder.textFromUrl": "Da URL",
|
||||
"DE.Views.DocumentHolder.textJoinList": "Iscriviti alla lista precedente",
|
||||
"DE.Views.DocumentHolder.textNest": "Tabella nidificata",
|
||||
"DE.Views.DocumentHolder.textNextPage": "Pagina successiva",
|
||||
"DE.Views.DocumentHolder.textNumberingValue": "Numerazione valore",
|
||||
"DE.Views.DocumentHolder.textPaste": "Incolla",
|
||||
"DE.Views.DocumentHolder.textPrevPage": "Pagina precedente",
|
||||
"DE.Views.DocumentHolder.textRefreshField": "Aggiorna campo",
|
||||
"DE.Views.DocumentHolder.textRemove": "Elimina",
|
||||
"DE.Views.DocumentHolder.textRemoveControl": "Rimuovi il controllo del contenuto",
|
||||
"DE.Views.DocumentHolder.textReplace": "Sostituisci immagine",
|
||||
"DE.Views.DocumentHolder.textSeparateList": "Elenco separato",
|
||||
"DE.Views.DocumentHolder.textSettings": "Impostazioni",
|
||||
"DE.Views.DocumentHolder.textShapeAlignBottom": "Allinea in basso",
|
||||
"DE.Views.DocumentHolder.textShapeAlignCenter": "Allinea al centro",
|
||||
|
@ -942,6 +955,8 @@
|
|||
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Allinea in mezzo",
|
||||
"DE.Views.DocumentHolder.textShapeAlignRight": "Allinea a destra",
|
||||
"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.textTOCSettings": "Impostazioni sommario",
|
||||
"DE.Views.DocumentHolder.textUndo": "Annulla",
|
||||
|
@ -1403,6 +1418,8 @@
|
|||
"DE.Views.NoteSettingsDialog.textStart": "Inizia da",
|
||||
"DE.Views.NoteSettingsDialog.textTextBottom": "Sotto al testo",
|
||||
"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.notcriticalErrorTitle": "Warning",
|
||||
"DE.Views.PageMarginsDialog.okButtonText": "Ok",
|
||||
|
|
|
@ -168,6 +168,7 @@
|
|||
"Common.Views.History.textRestore": "Восстановить",
|
||||
"Common.Views.History.textShow": "Развернуть",
|
||||
"Common.Views.History.textShowAll": "Показать подробные изменения",
|
||||
"Common.Views.History.textVer": "вер.",
|
||||
"Common.Views.ImageFromUrlDialog.cancelButtonText": "Отмена",
|
||||
"Common.Views.ImageFromUrlDialog.okButtonText": "OK",
|
||||
"Common.Views.ImageFromUrlDialog.textUrl": "Вставьте URL изображения:",
|
||||
|
@ -271,6 +272,14 @@
|
|||
"Common.Views.ReviewChangesDialog.txtReject": "Отклонить",
|
||||
"Common.Views.ReviewChangesDialog.txtRejectAll": "Отклонить все изменения",
|
||||
"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.okButtonText": "Ok",
|
||||
"Common.Views.SignDialog.textBold": "Жирный",
|
||||
|
@ -380,10 +389,13 @@
|
|||
"DE.Controllers.Main.textAnonymous": "Аноним",
|
||||
"DE.Controllers.Main.textBuyNow": "Перейти на сайт",
|
||||
"DE.Controllers.Main.textChangesSaved": "Все изменения сохранены",
|
||||
"DE.Controllers.Main.textClose": "Закрыть",
|
||||
"DE.Controllers.Main.textCloseTip": "Щелкните, чтобы закрыть эту подсказку",
|
||||
"DE.Controllers.Main.textContactUs": "Связаться с отделом продаж",
|
||||
"DE.Controllers.Main.textLicencePaidFeature": "Функция, которую вы пытаетесь использовать, доступна по расширенной лицензии.<br>Если вам нужна эта функция, обратитесь в отдел продаж",
|
||||
"DE.Controllers.Main.textLoadingDocument": "Загрузка документа",
|
||||
"DE.Controllers.Main.textNoLicenseTitle": "Ограничение по числу подключений ONLYOFFICE",
|
||||
"DE.Controllers.Main.textPaidFeature": "Платная функция",
|
||||
"DE.Controllers.Main.textShape": "Фигура",
|
||||
"DE.Controllers.Main.textStrict": "Строгий режим",
|
||||
"DE.Controllers.Main.textTryUndoRedo": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.<br>Нажмите на кнопку 'Строгий режим' для переключения в Строгий режим совместного редактирования, чтобы редактировать файл без вмешательства других пользователей и отправлять изменения только после того, как вы их сохраните. Переключаться между режимами совместного редактирования можно с помощью Дополнительных параметров редактора.",
|
||||
|
@ -806,6 +818,7 @@
|
|||
"DE.Views.BookmarksDialog.textName": "Имя",
|
||||
"DE.Views.BookmarksDialog.textSort": "Порядок",
|
||||
"DE.Views.BookmarksDialog.textTitle": "Закладки",
|
||||
"DE.Views.BookmarksDialog.txtInvalidName": "Имя закладки может содержать только буквы, цифры и знаки подчеркивания и должно начинаться с буквы.",
|
||||
"DE.Views.ChartSettings.textAdvanced": "Дополнительные параметры",
|
||||
"DE.Views.ChartSettings.textArea": "С областями",
|
||||
"DE.Views.ChartSettings.textBar": "Линейчатая",
|
||||
|
@ -834,8 +847,15 @@
|
|||
"DE.Views.ChartSettings.txtTopAndBottom": "Сверху и снизу",
|
||||
"DE.Views.ControlSettingsDialog.cancelButtonText": "Отмена",
|
||||
"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.textName": "Заголовок",
|
||||
"DE.Views.ControlSettingsDialog.textNewColor": "Пользовательский цвет",
|
||||
"DE.Views.ControlSettingsDialog.textNone": "Без рамки",
|
||||
"DE.Views.ControlSettingsDialog.textShowAs": "Отображать",
|
||||
"DE.Views.ControlSettingsDialog.textTag": "Тег",
|
||||
"DE.Views.ControlSettingsDialog.textTitle": "Параметры элемента управления содержимым",
|
||||
"DE.Views.ControlSettingsDialog.txtLockDelete": "Элемент управления содержимым нельзя удалить",
|
||||
|
@ -855,6 +875,7 @@
|
|||
"DE.Views.DocumentHolder.alignmentText": "Выравнивание",
|
||||
"DE.Views.DocumentHolder.belowText": "Ниже",
|
||||
"DE.Views.DocumentHolder.breakBeforeText": "С новой страницы",
|
||||
"DE.Views.DocumentHolder.bulletsText": "Маркеры и нумерация",
|
||||
"DE.Views.DocumentHolder.cellAlignText": "Вертикальное выравнивание в ячейках",
|
||||
"DE.Views.DocumentHolder.cellText": "Ячейку",
|
||||
"DE.Views.DocumentHolder.centerText": "По центру",
|
||||
|
@ -919,6 +940,7 @@
|
|||
"DE.Views.DocumentHolder.textArrangeForward": "Перенести вперед",
|
||||
"DE.Views.DocumentHolder.textArrangeFront": "Перенести на передний план",
|
||||
"DE.Views.DocumentHolder.textContentControls": "Элемент управления содержимым",
|
||||
"DE.Views.DocumentHolder.textContinueNumbering": "Продолжить нумерацию",
|
||||
"DE.Views.DocumentHolder.textCopy": "Копировать",
|
||||
"DE.Views.DocumentHolder.textCut": "Вырезать",
|
||||
"DE.Views.DocumentHolder.textDistributeCols": "Выровнять ширину столбцов",
|
||||
|
@ -927,14 +949,17 @@
|
|||
"DE.Views.DocumentHolder.textEditWrapBoundary": "Изменить границу обтекания",
|
||||
"DE.Views.DocumentHolder.textFromFile": "Из файла",
|
||||
"DE.Views.DocumentHolder.textFromUrl": "По URL",
|
||||
"DE.Views.DocumentHolder.textJoinList": "Объединить с предыдущим списком",
|
||||
"DE.Views.DocumentHolder.textNest": "Вставить как вложенную таблицу",
|
||||
"DE.Views.DocumentHolder.textNextPage": "Следующая страница",
|
||||
"DE.Views.DocumentHolder.textNumberingValue": "Начальное значение",
|
||||
"DE.Views.DocumentHolder.textPaste": "Вставить",
|
||||
"DE.Views.DocumentHolder.textPrevPage": "Предыдущая страница",
|
||||
"DE.Views.DocumentHolder.textRefreshField": "Обновить поле",
|
||||
"DE.Views.DocumentHolder.textRemove": "Удалить",
|
||||
"DE.Views.DocumentHolder.textRemoveControl": "Удалить элемент управления содержимым",
|
||||
"DE.Views.DocumentHolder.textReplace": "Заменить изображение",
|
||||
"DE.Views.DocumentHolder.textSeparateList": "Разделить список",
|
||||
"DE.Views.DocumentHolder.textSettings": "Настройки",
|
||||
"DE.Views.DocumentHolder.textShapeAlignBottom": "Выровнять по нижнему краю",
|
||||
"DE.Views.DocumentHolder.textShapeAlignCenter": "Выровнять по центру",
|
||||
|
@ -942,6 +967,8 @@
|
|||
"DE.Views.DocumentHolder.textShapeAlignMiddle": "Выровнять по середине",
|
||||
"DE.Views.DocumentHolder.textShapeAlignRight": "Выровнять по правому краю",
|
||||
"DE.Views.DocumentHolder.textShapeAlignTop": "Выровнять по верхнему краю",
|
||||
"DE.Views.DocumentHolder.textStartNewList": "Начать новый список",
|
||||
"DE.Views.DocumentHolder.textStartNumberingFrom": "Задать начальное значение",
|
||||
"DE.Views.DocumentHolder.textTOC": "Оглавление",
|
||||
"DE.Views.DocumentHolder.textTOCSettings": "Параметры оглавления",
|
||||
"DE.Views.DocumentHolder.textUndo": "Отменить",
|
||||
|
@ -1403,6 +1430,8 @@
|
|||
"DE.Views.NoteSettingsDialog.textStart": "Начать с",
|
||||
"DE.Views.NoteSettingsDialog.textTextBottom": "Под текстом",
|
||||
"DE.Views.NoteSettingsDialog.textTitle": "Параметры сносок",
|
||||
"DE.Views.NumberingValueDialog.cancelButtonText": "Отмена",
|
||||
"DE.Views.NumberingValueDialog.okButtonText": "Ok",
|
||||
"DE.Views.PageMarginsDialog.cancelButtonText": "Отмена",
|
||||
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Внимание",
|
||||
"DE.Views.PageMarginsDialog.okButtonText": "Ok",
|
||||
|
@ -1769,6 +1798,7 @@
|
|||
"DE.Views.Toolbar.mniEditHeader": "Изменить верхний колонтитул",
|
||||
"DE.Views.Toolbar.mniHiddenBorders": "Скрытые границы таблиц",
|
||||
"DE.Views.Toolbar.mniHiddenChars": "Непечатаемые символы",
|
||||
"DE.Views.Toolbar.mniHighlightControls": "Параметры выделения",
|
||||
"DE.Views.Toolbar.mniImageFromFile": "Изображение из файла",
|
||||
"DE.Views.Toolbar.mniImageFromUrl": "Изображение по URL",
|
||||
"DE.Views.Toolbar.strMenuNoFill": "Без заливки",
|
||||
|
@ -1806,6 +1836,7 @@
|
|||
"DE.Views.Toolbar.textMarginsWide": "Широкие",
|
||||
"DE.Views.Toolbar.textNewColor": "Пользовательский цвет",
|
||||
"DE.Views.Toolbar.textNextPage": "Со следующей страницы",
|
||||
"DE.Views.Toolbar.textNoHighlight": "Без выделения",
|
||||
"DE.Views.Toolbar.textNone": "Нет",
|
||||
"DE.Views.Toolbar.textOddPage": "С нечетной страницы",
|
||||
"DE.Views.Toolbar.textPageMarginsCustom": "Настраиваемые поля",
|
||||
|
|
|
@ -20,17 +20,21 @@
|
|||
"src": "ProgramInterface/LayoutTab.htm",
|
||||
"name": "Registerkarte Layout"
|
||||
},
|
||||
{
|
||||
"src": "ProgramInterface/ReferencesTab.htm",
|
||||
"name": "Registerkarte Referenzen"
|
||||
},
|
||||
{
|
||||
"src": "ProgramInterface/ReviewTab.htm",
|
||||
"name": "Registerkarte Überprüfen"
|
||||
"name": "Registerkarte Zusammenarbeit"
|
||||
},
|
||||
{
|
||||
"src": "ProgramInterface/PluginsTab.htm",
|
||||
"name": "Registerkarte Plug-in"
|
||||
"name": "Registerkarte Plug-ins"
|
||||
},
|
||||
{
|
||||
"src": "UsageInstructions/ChangeColorScheme.htm",
|
||||
"name": "Farbschema ändern",
|
||||
"src": "UsageInstructions/OpenCreateNew.htm",
|
||||
"name": "Ein neues Dokument erstellen oder ein vorhandenes öffnen",
|
||||
"headername": "Grundfunktionen"
|
||||
},
|
||||
{
|
||||
|
@ -38,8 +42,8 @@
|
|||
"name": "Textpassagen kopieren/einfügen, Aktionen rückgängig machen/wiederholen"
|
||||
},
|
||||
{
|
||||
"src": "UsageInstructions/OpenCreateNew.htm",
|
||||
"name": "Ein neues Dokument erstellen oder ein vorhandenes öffnen"
|
||||
"src": "UsageInstructions/ChangeColorScheme.htm",
|
||||
"name": "Farbschema ändern"
|
||||
},
|
||||
{
|
||||
"src": "UsageInstructions/SetPageParameters.htm",
|
||||
|
@ -145,6 +149,14 @@
|
|||
"src": "UsageInstructions/InsertTextObjects.htm",
|
||||
"name": "Textobjekte einfügen"
|
||||
},
|
||||
{
|
||||
"src": "UsageInstructions/InsertContentControls.htm",
|
||||
"name": "Inhaltssteuerelemente einfügen"
|
||||
},
|
||||
{
|
||||
"src": "UsageInstructions/CreateTableOfContents.htm",
|
||||
"name": "Inhaltsverzeichnis erstellen"
|
||||
},
|
||||
{
|
||||
"src": "UsageInstructions/AlignArrangeObjects.htm",
|
||||
"name": "Objekte auf einer Seite anordnen und ausrichten"
|
||||
|
@ -187,7 +199,7 @@
|
|||
},
|
||||
{
|
||||
"src": "HelpfulHints/Navigation.htm",
|
||||
"name": "Einstellungen und Navigationswerkzeuge anzeigen"
|
||||
"name": "Ansichtseinstellungen und Navigationswerkzeuge"
|
||||
},
|
||||
{
|
||||
"src": "HelpfulHints/Search.htm",
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
</div>
|
||||
<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>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>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -18,48 +18,49 @@
|
|||
<ul>
|
||||
<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">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>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>
|
||||
<div class="onlineDocumentFeatures">
|
||||
<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>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>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>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>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. 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 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>
|
||||
<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>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>Um auf den Chat zuzugreifen und eine Nachricht für die anderen Benutzer zu hinterlassen:</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>Chat nutzen und Nachrichten für andere Benutzer erstellen:</p>
|
||||
<ol>
|
||||
<li>Klicken Sie auf das Symbol <img alt="Chat" src="../images/chaticon.png" /> in der linken Seitenleiste.</li>
|
||||
<li>Geben Sie Ihren Text in das entsprechende nachfolgende Feld ein.</li>
|
||||
<li>Klicken Sie auf <b>Senden</b>.</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 ins entsprechende Feld unten ein.</li>
|
||||
<li>klicken Sie auf <b>Senden</b>.</li>
|
||||
</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>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>
|
||||
<h3 id="comments">Kommentare</h3>
|
||||
<p>Einen Kommentar hinterlassen:</p>
|
||||
<ol>
|
||||
<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>Klicken Sie auf <b>Hinzufügen</b>.</li>
|
||||
<li>Klicken Sie auf <b>Kommentar hinzufügen/Hinzufügen</b>.</li>
|
||||
</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>Sie können die von Ihnen hinzugefügten Kommentare wie folgt verwalten:</p>
|
||||
<p>Hinzugefügte Kommentare verwalten:</p>
|
||||
<ul>
|
||||
<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>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>
|
||||
<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>
|
||||
</body>
|
||||
</html>
|
|
@ -56,7 +56,7 @@
|
|||
<tr>
|
||||
<td>Speichern unter...</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>
|
||||
<td>Vollbild</td>
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
<p>Um Änderungen anzuzeigen, die von einem Rezensenten vorgeschlagen wurden, aktivieren Sie die Option <b>Änderungen nachverfolgen</b>:</p>
|
||||
<ul>
|
||||
<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>
|
||||
<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>
|
||||
|
@ -29,7 +29,7 @@
|
|||
<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 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>
|
||||
<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>
|
||||
|
|
|
@ -15,12 +15,11 @@
|
|||
</div>
|
||||
<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>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>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>
|
||||
<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>ö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>
|
||||
|
@ -34,7 +33,6 @@
|
|||
<p><img alt="Rechtschreibprüfung" src="../images/spellchecking.png" /></p>
|
||||
<p>Rechtschreibprüfung <b>deaktivieren</b>:</p>
|
||||
<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>ö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>
|
||||
|
|