[DE] Add footnote settings.

This commit is contained in:
Julia Radzhabova 2016-12-19 14:44:02 +03:00
parent 09671949ea
commit fa6d7451e6
9 changed files with 771 additions and 5 deletions

View file

@ -53,7 +53,8 @@ define([
'documenteditor/main/app/view/MailMergeRecepients',
'documenteditor/main/app/view/StyleTitleDialog',
'documenteditor/main/app/view/PageMarginsDialog',
'documenteditor/main/app/view/PageSizeDialog'
'documenteditor/main/app/view/PageSizeDialog',
'documenteditor/main/app/view/NoteSettingsDialog'
], function () {
'use strict';
@ -264,6 +265,9 @@ define([
toolbar.mnuZoomIn.on('click', _.bind(this.onZoomInClick, this));
toolbar.mnuZoomOut.on('click', _.bind(this.onZoomOutClick, this));
toolbar.btnInsertEquation.on('click', _.bind(this.onInsertEquationClick, this));
toolbar.btnNotes.menu.on('item:click', _.bind(this.onNotesClick, this));
toolbar.mnuGotoFootPrev.on('click', _.bind(this.onFootnotePrevClick, this));
toolbar.mnuGotoFootNext.on('click', _.bind(this.onFootnoteNextClick, this));
$('#id-save-style-plus, #id-save-style-link', toolbar.$el).on('click', this.onMenuSaveStyle.bind(this));
@ -1987,6 +1991,50 @@ define([
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
},
onNotesClick: function(menu, item) {
if (this.api) {
if (item.value == 'ins_footnote')
this.api.asc_AddFootnote();
else if (item.value == 'delele')
this.api.deleteFootnotes();
else if (item.value == 'settings') {
var me = this;
(new DE.Views.NoteSettingsDialog({
api: me.api,
handler: function(result, settings) {
if (settings) {
if (result == 'insert') {
me.api.asc_SetFootnoteProps(settings);
me.api.asc_AddFootnote();
} else if (result == 'apply') {
me.api.asc_SetFootnoteProps(settings);
}
}
Common.NotificationCenter.trigger('edit:complete', me.toolbar);
},
props : me.api.asc_GetFootnoteProps()
})).show();
} else
return;
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
}
},
onFootnotePrevClick: function(btn) {
if (this.api)
this.api.GotoFootnotePrev();
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
},
onFootnoteNextClick: function(btn) {
if (this.api)
this.api.GotoFootnoteNext();
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
},
_clearBullets: function() {
this.toolbar.btnMarkers.toggle(false, true);
this.toolbar.btnNumbers.toggle(false, true);

View file

@ -191,6 +191,12 @@
<span class="btn-placeholder" id="id-toolbar-full-placeholder-btn-mailrecepients"></span>
</div>
</div>
<div class="separator long" style="margin-left: 5px;"></div>
<div class="toolbar-group">
<div class="toolbar-row">
<span class="btn-placeholder split" id="id-toolbar-full-placeholder-btn-notes"></span>
</div>
</div>
<div class="toolbar-group" id="id-toolbar-full-placeholder-field-styles" style="width: 100%; min-width: 160px;">
</div>
<div class="toolbar-group no-mask">

View file

@ -0,0 +1,134 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
* In accordance with Section 7(a) of the GNU GPL 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 more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
*
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
*
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
*
* Pursuant to Section 7  3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
* relevant author attributions when distributing the software. If the display of the logo in its graphic
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
* in every copy of the program you distribute.
* Pursuant to Section 7  3(e) we decline to grant you any rights under trademark law for use of our trademarks.
*
*/
define([
'common/main/lib/component/BaseView'
], function () {
'use strict';
DE.Views.FootnoteTip = Common.UI.BaseView.extend(_.extend((function() {
var tipEl;
return {
options : {
name : '',
text : '',
target : null,
placement: 'bottom'
},
template: _.template([
'<div class="footnote-tip-root <%= scope.placement %>">',
'<div class="asc-footnotetip">',
'<div class="tip-arrow"></div>',
'<div>',
'<label class="tip-name" style="width: 220px;"><%= scope.name %></label>',
'<label class="tip-text" style="width: 220px;"><%= scope.text %></label>',
'<div class="move-ct">',
'<button id="footnote-btn-prev" type="button" class="btn btn-toolbar"><span class="prev img-commonctrl">&nbsp;</span></button>',
'<button id="footnote-btn-next" type="button" class="btn btn-toolbar"><span class="next img-commonctrl">&nbsp;</span></button>',
'</div>',
'</div>',
'<div class="show-link"><label><%= scope.textSettings %></label></div>',
'</div>',
'</div>'
].join('')),
initialize : function(options) {
Common.UI.BaseView.prototype.initialize.call(this, options);
this.text = this.options.text;
this.name = this.options.name;
this.target = this.options.target;
this.placement = this.options.placement;
},
render: function() {
tipEl = $(this.template({ scope: this }));
this.btnPrev = new Common.UI.Button({
el: $('#footnote-btn-prev',tipEl)
});
this.btnNext = new Common.UI.Button({
el: $('#footnote-btn-next',tipEl)
});
tipEl.find('.show-link label').on('click', _.bind(function() { this.trigger('settingsclick');}, this));
this.btnPrev.on('click', _.bind(function(btn) {
this.trigger('prevclick');
}, this));
this.btnNext.on('click', _.bind(function(btn) {
this.trigger('nextclick');
}, this));
this.lblName = tipEl.find('.tip-name');
this.lblText = tipEl.find('.tip-text');
$(document.body).append(tipEl);
this.applyPlacement(this.target);
return this;
},
show: function(name, text, target){
if (tipEl) {
this.lblName.text(name);
this.lblText.text(text);
this.applyPlacement(target);
tipEl.show()
} else
this.render();
},
hide: function() {
if (tipEl) tipEl.hide();
},
applyPlacement: function (target) {
if (!target)
target = {top: 0, left: 0, width: 1, height: 1};
var docHeight = Common.Utils.innerHeight(),
elHeight = tipEl.height(),
elWidth = tipEl.width(),
placement = this.placement;
if (this.placement == 'bottom') {
if (target.top + target.height + elHeight > docHeight)
placement = 'top';
} else if (this.placement == 'top') {
if (target.top - elHeight < 0)
placement = 'bottom';
}
tipEl.removeClass(placement == 'top' ? 'bottom' : 'top');
tipEl.addClass(placement);
(placement == 'top') ? tipEl.css({top: 'auto', bottom : docHeight - target.top + 'px', left: target.left + target.width/2 - elWidth/2 + 'px'})
: tipEl.css({top : target.top + target.height + 'px', bottom: 'auto', left: target.left + target.width/2 - elWidth/2 + 'px'});
},
textSettings: 'Note Settings'
}
})(), DE.Views.FootnoteTip || {}));
});

View file

@ -0,0 +1,379 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
*
* 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
*
*/
/**
* NoteSettingsDialog.js.js
*
* Created by Julia Radzhabova on 18.12.2016
* Copyright (c) 2016 Ascensio System SIA. All rights reserved.
*
*/
define([
'common/main/lib/util/utils',
'common/main/lib/component/MetricSpinner',
'common/main/lib/component/ComboBox',
'common/main/lib/component/InputField',
'common/main/lib/view/AdvancedSettingsWindow'
], function () { 'use strict';
DE.Views.NoteSettingsDialog = Common.Views.AdvancedSettingsWindow.extend(_.extend({
options: {
contentWidth: 300,
height: 335
},
initialize : function(options) {
var me = this;
_.extend(this.options, {
title: this.textTitle,
template: [
'<div class="box" style="height:' + (me.options.height - 85) + 'px;">',
'<div class="content-panel" style="padding: 0;"><div class="inner-content">',
'<div class="settings-panel active">',
'<table cols="2" style="width: 100%;">',
'<tr>',
'<td colspan=2 class="padding-small">',
'<label class="header">', me.textLocation,'</label>',
'</td>',
'</tr>',
'<tr>',
'<td class="padding-large" style="width: 50%;">',
'<label class="input-label">', me.textFootnote,'</label>',
// '<div id="note-settings-radio-footnote" class="padding-small" style="display: block;"></div>',
'</td>',
'<td class="padding-large">',
'<div id="note-settings-combo-footnote" class="input-group-nr" style="width:100%;"></div>',
'</td>',
'</tr>',
'<tr>',
'<td colspan=2>',
'<div class="separator horizontal padding-large text-only"></div>',
'</td>',
'</tr>',
'<tr>',
'<td colspan=2 class="padding-small">',
'<label class="header">', me.textFormat,'</label>',
'</td>',
'</tr>',
'<tr>',
'<td class="padding-small">',
'<label class="input-label">', me.textNumFormat,'</label>',
'<div id="note-settings-combo-format" class="input-group-nr" style="width:100px;"></div>',
'</td>',
'<td class="padding-small">',
'<label class="input-label">', me.textStart,'</label>',
'<div id="note-settings-spin-start"></div>',
// '<div id="note-settings-txt-start"></div>',
'</td>',
'</tr>',
'<tr>',
'<td colspan=2 class="padding-large">',
'<label class="input-label">', me.textNumbering, '</label>',
'<div id="note-settings-combo-numbering" class="input-group-nr" style="width:140px;"></div>',
'</td>',
'</tr>',
'<tr>',
'<td colspan=2>',
'<div class="separator horizontal padding-large text-only"></div>',
'</td>',
'</tr>',
'<tr>',
'<td colspan=2 class="padding-small">',
'<label class="header">', me.textSeparator,'</label>',
'</td>',
'</tr>',
'<tr>',
'<td class="padding-small">',
'<label class="header">', me.textApplyTo,'</label>',
'</td>',
'<td class="padding-small">',
'<div id="note-settings-combo-apply" class="input-group-nr" style="width:100%;"></div>',
'</td>',
'</tr>',
'</table>',
'</div></div>',
'</div>',
'</div>',
'<div class="footer center">',
'<button class="btn normal dlg-btn primary" result="insert" style="margin-right: 10px; width: 86px;">' + me.textInsert + '</button>',
'<button class="btn normal dlg-btn primary" result="apply" style="margin-right: 10px; width: 86px;">' + me.textApply + '</button>',
'<button class="btn normal dlg-btn" result="cancel" style="width: 86px;">' + me.textCancel + '</button>',
'</div>'
].join('')
}, options);
this.api = options.api;
this.handler = options.handler;
this.props = options.props;
Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options);
this.FormatType = 1;
this.StartValue = 1;
},
render: function() {
Common.Views.AdvancedSettingsWindow.prototype.render.call(this);
var me = this;
this.cmbFootnote = new Common.UI.ComboBox({
el: $('#note-settings-combo-footnote'),
cls: 'input-group-nr',
menuStyle: 'min-width: 140px;',
editable: false,
data: [
{ displayValue: this.textPageBottom, value: Asc.section_footnote_PosPageBottom },
{ displayValue: this.textTextBottom, value: Asc.section_footnote_PosBeneathText }
]
});
this.cmbFootnote.setValue(Asc.section_footnote_PosPageBottom);
this.cmbFormat = new Common.UI.ComboBox({
el: $('#note-settings-combo-format'),
cls: 'input-group-nr',
menuStyle: 'min-width: 100px;',
editable: false,
data: [
{ displayValue: '1, 2, 3,...', value: 1, maskExp: /[0-9]/, defValue: 1 },
{ displayValue: 'a, b, c,...', value: 5, maskExp: /[a-z]/, defValue: 'a' },
{ displayValue: 'A, B, C,...', value: 4, maskExp: /[A-Z]/, defValue: 'A' },
{ displayValue: 'i, ii, iii,...', value: 7, maskExp: /[ivxlcdm]/, defValue: 'i' },
{ displayValue: 'I, II, III,...', value: 3, maskExp: /[IVXLCDM]/, defValue: 'I' }
]
});
this.cmbFormat.setValue(this.FormatType);
this.cmbFormat.on('selected', _.bind(this.onFormatSelect, this));
this.spnStart = new Common.UI.MetricSpinner({
el: $('#note-settings-spin-start'),
step: 1,
width: 100,
defaultUnit : "",
value: '1',
maxValue: 16383,
minValue: 1
});
/*
this.txtStart = new Common.UI.InputField({
el : $('#note-settings-txt-start'),
allowBlank : true,
validateOnChange: false,
style : 'width: 100px; vertical-align: middle;',
cls : 'masked-field',
maskExp : /[a-z]/,
value : 'a',
visible: false,
validation : function(value) {
if (this.options.maskExp.test(value)) {
} else
me.txtFieldNum.setValue('');
return true;
}
});
*/
this.cmbNumbering = new Common.UI.ComboBox({
el: $('#note-settings-combo-numbering'),
cls: 'input-group-nr',
menuStyle: 'min-width: 140px;',
editable: false,
data: [
{ displayValue: this.textContinue, value: Asc.section_footnote_RestartContinuous },
{ displayValue: this.textEachSection, value: Asc.section_footnote_RestartEachSect },
{ displayValue: this.textEachPage, value: Asc.section_footnote_RestartEachPage }
]
});
this.cmbNumbering.setValue(Asc.section_footnote_RestartContinuous);
this.cmbApply = new Common.UI.ComboBox({
el: $('#note-settings-combo-apply'),
cls: 'input-group-nr',
menuStyle: 'min-width: 140px;',
editable: false,
data: [
{ displayValue: this.textDocument, value: Asc.section_footnote_RestartContinuous },
{ displayValue: this.textSection, value: Asc.section_footnote_RestartEachSect }
]
});
this.cmbApply.setValue(Asc.section_footnote_RestartContinuous);
this.afterRender();
},
afterRender: function() {
this._setDefaults(this.props);
},
show: function() {
Common.Views.AdvancedSettingsWindow.prototype.show.apply(this, arguments);
},
_setDefaults: function (props) {
if (props) {
var val = props.get_Pos();
this.cmbFootnote.setValue(val);
val = props.get_NumFormat();
this.cmbFormat.setValue(val);
// this.spnStart.setVisible(val==1);
// this.txtStart.setVisible(val!=1);
val = props.get_NumStart();
this.spnStart.setValue(val);
// this.txtStart.setValue(val);
val = props.get_NumRestart();
this.cmbNumbering.setValue(val);
/*
val = props.get_ApplyTo();
this.cmbApply.setValue(val);
*/
}
},
getSettings: function () {
var props = new Asc.CAscFootnotePr();
props.put_Pos(this.cmbFootnote.getValue());
props.put_NumRestart(this.cmbNumbering.getValue());
var val = this.cmbFormat.getValue();
props.put_NumFormat(val);
// if (val==1)
props.put_NumStart(this.spnStart.getNumberValue());
// else
// props.put_NumStart(this.txtStart.getValue());
// props.put_ApplyTo(this.cmbApply.getValue());
return props;
},
onDlgBtnClick: function(event) {
var me = this;
var state = (typeof(event) == 'object') ? event.currentTarget.attributes['result'].value : event;
if (state == 'insert' || state == 'apply') {
this.handler && this.handler.call(this, state, (state == 'insert' || state == 'apply') ? this.getSettings() : undefined);
}
this.close();
},
onPrimary: function() {
return true;
},
onFormatSelect: function(combo, record) {
return;
this.spnStart.setVisible(record.value == 1);
this.txtStart.setVisible(record.value != 1);
if (record.value !== 1)
this.txtStart.setMask(record.maskExp);
var value = 0;
if (this.FormatType == 1) { // from 1,2,3,
this.StartValue = value = this.spnStart.getNumberValue();
if (record.value == 4 || record.value == 5) {
value = this._10toA(value);
this.txtStart.setValue((record.value == 5) ? value.toLocaleLowerCase() : value);
} else if (this.FormatType !== record.value)
this.txtStart.setValue(record.defValue);
} else if (this.FormatType == 4 || this.FormatType == 5) {
if (this.FormatType == 4 && record.value == 5)
this.txtStart.setValue(this.txtStart.getValue().toLocaleLowerCase());
else if (this.FormatType == 5 && record.value == 4)
this.txtStart.setValue(this.txtStart.getValue().toLocaleUpperCase());
else if (record.value == 1) {
value = this._Ato10((record.value == 5) ? this.txtStart.getValue().toLocaleLowerCase() : this.txtStart.getValue());
this.spnStart.setValue(value);
} else if (this.FormatType !== record.value)
this.txtStart.setValue(record.defValue);
} else if (this.FormatType !== record.value){
if (record.value==1)
this.spnStart.setValue(this.StartValue);
else
this.txtStart.setValue(record.defValue);
}
this.FormatType = record.value;
},
_10toA: function(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;
},
_Ato10: function(str) {
if ( (new RegExp('[^' + str.charAt(0) + ']')).test(str) ) return 1;
var n = str.length-1,
value = str.charCodeAt(0) - "A".charCodeAt(0) + 1;
value += 26*n;
return value;
},
textTitle: 'Notes Settings',
textLocation: 'Location',
textFootnote: 'Footnote',
textPageBottom: 'Bottom of page',
textTextBottom: 'Below text',
textFormat: 'Format',
textNumFormat: 'Number Format',
textStart: 'Start at',
textNumbering: 'Numbering',
textContinue: 'Continuous',
textEachPage: 'Restart each page',
textEachSection: 'Restart each section',
textApplyTo: 'Apply changes to',
textDocument: 'Whole document',
textSection: 'Current section',
textApply: 'Apply',
textInsert: 'Insert',
textCancel: 'Cancel'
}, DE.Views.NoteSettingsDialog || {}))
});

View file

@ -737,6 +737,14 @@ define([
});
this.toolbarControls.push(this.btnColorSchemas);
this.btnNotes = new Common.UI.Button({
id : 'id-toolbar-btn-notes',
cls : 'btn-toolbar',
iconCls : 'btn-notes',
menu : true
});
this.toolbarControls.push(this.btnNotes);
this.btnMailRecepients= new Common.UI.Button({
id : 'id-toolbar-btn-mailrecepients',
cls : 'btn-toolbar',
@ -1076,6 +1084,7 @@ define([
replacePlacholder('#id-toolbar-full-placeholder-field-styles', this.listStyles);
replacePlacholder('#id-toolbar-short-placeholder-btn-halign', this.btnHorizontalAlign);
replacePlacholder('#id-toolbar-full-placeholder-btn-mailrecepients', this.btnMailRecepients);
replacePlacholder('#id-toolbar-' + prefix + '-placeholder-btn-notes', this.btnNotes);
},
createDelayedElements: function() {
@ -1143,6 +1152,7 @@ define([
this.btnMailRecepients.updateHint(this.tipMailRecepients);
this.btnHide.updateHint(this.tipViewSettings);
this.btnAdvSettings.updateHint(this.tipAdvSettings);
this.btnNotes.updateHint(this.tipNotes);
// set menus
@ -1284,6 +1294,40 @@ define([
cls : 'btn-toolbar'
});
this.btnNotes.setMenu(
new Common.UI.Menu({
items: [
{ caption: this.mniInsFootnote, value: 'ins_footnote' },
{ caption: this.mniDelFootnote, value: 'delele' },
{ caption: '--' },
this.mnuGotoFootnote = new Common.UI.MenuItem({
template: _.template([
'<div id="id-toolbar-menu-goto-footnote" class="menu-zoom" style="height: 25px;" ',
'<% if(!_.isUndefined(options.stopPropagation)) { %>',
'data-stopPropagation="true"',
'<% } %>', '>',
'<label class="title">' + this.textGotoFootnote + '</label>',
'<button id="id-menu-goto-footnote-next" type="button" style="float:right; margin: 2px 5px 0 0;" class="btn small btn-toolbar"><span class="btn-icon mmerge-next">&nbsp;</span></button>',
'<button id="id-menu-goto-footnote-prev" type="button" style="float:right; margin-top: 2px;" class="btn small btn-toolbar"><span class="btn-icon mmerge-prev">&nbsp;</span></button>',
'</div>'
].join('')),
stopPropagation: true
}),
{ caption: '--' },
{ caption: this.mniNoteSettings, value: 'settings' }
]
})
);
this.mnuGotoFootPrev = new Common.UI.Button({
el : $('#id-menu-goto-footnote-prev'),
cls : 'btn-toolbar'
});
this.mnuGotoFootNext = new Common.UI.Button({
el : $('#id-menu-goto-footnote-next'),
cls : 'btn-toolbar'
});
// set dataviews
var _conf = this.mnuMarkersPicker.conf;
@ -1517,6 +1561,7 @@ define([
this.cmbFontName.setDisabled(true);
this.cmbFontSize.setDisabled(true);
this.listStyles.setDisabled(true);
this.btnNotes.setDisabled(true);
if (mode.disableDownload)
this.btnPrint.setDisabled(true);
}
@ -1911,7 +1956,12 @@ define([
textPortrait: 'Portrait',
textLandscape: 'Landscape',
textInsertPageCount: 'Insert number of pages',
textCharts: 'Charts'
textCharts: 'Charts',
tipNotes: 'Footnotes',
mniInsFootnote: 'Insert Footnote',
mniDelFootnote: 'Delete All Footnotes',
mniNoteSettings: 'Notes Settings',
textGotoFootnote: 'Go to Footnotes'
}, DE.Views.Toolbar || {}));
});

View file

@ -1115,6 +1115,24 @@
"DE.Views.MailMergeSettings.txtPrev": "To previous record",
"DE.Views.MailMergeSettings.txtUntitled": "Untitled",
"DE.Views.MailMergeSettings.warnProcessMailMerge": "Starting merge failed",
"DE.Views.NoteSettingsDialog.textTitle": "Notes Settings",
"DE.Views.NoteSettingsDialog.textLocation": "Location",
"DE.Views.NoteSettingsDialog.textFootnote": "Footnote",
"DE.Views.NoteSettingsDialog.textPageBottom": "Bottom of page",
"DE.Views.NoteSettingsDialog.textTextBottom": "Below text",
"DE.Views.NoteSettingsDialog.textFormat": "Format",
"DE.Views.NoteSettingsDialog.textNumFormat": "Number Format",
"DE.Views.NoteSettingsDialog.textStart": "Start at",
"DE.Views.NoteSettingsDialog.textNumbering": "Numbering",
"DE.Views.NoteSettingsDialog.textContinue": "Continuous",
"DE.Views.NoteSettingsDialog.textEachPage": "Restart each page",
"DE.Views.NoteSettingsDialog.textEachSection": "Restart each section",
"DE.Views.NoteSettingsDialog.textApplyTo": "Apply changes to",
"DE.Views.NoteSettingsDialog.textDocument": "Whole document",
"DE.Views.NoteSettingsDialog.textSection": "Current section",
"DE.Views.NoteSettingsDialog.textApply": "Apply",
"DE.Views.NoteSettingsDialog.textInsert": "Insert",
"DE.Views.NoteSettingsDialog.textCancel": "Cancel",
"DE.Views.PageMarginsDialog.cancelButtonText": "Cancel",
"DE.Views.PageMarginsDialog.notcriticalErrorTitle": "Warning",
"DE.Views.PageMarginsDialog.okButtonText": "Ok",
@ -1566,5 +1584,11 @@
"DE.Views.Toolbar.txtScheme6": "Concourse",
"DE.Views.Toolbar.txtScheme7": "Equity",
"DE.Views.Toolbar.txtScheme8": "Flow",
"DE.Views.Toolbar.txtScheme9": "Foundry"
"DE.Views.Toolbar.txtScheme9": "Foundry",
"DE.Views.Toolbar.tipNotes": "Footnotes",
"DE.Views.Toolbar.mniInsFootnote": "Insert Footnote",
"DE.Views.Toolbar.mniDelFootnote": "Delete All Footnotes",
"DE.Views.Toolbar.mniNoteSettings": "Notes Settings",
"DE.Views.Toolbar.textGotoFootnote": "Go to Footnotes"
}

View file

@ -0,0 +1,124 @@
.footnote-tip-root {
position: absolute;
z-index: @zindex-tooltip + 5;
width: 250px;
.tip-arrow {
position: absolute;
overflow: hidden;
}
&.bottom {
margin: 15px 0 0 0;
.tip-arrow {
left: 50%;
top: -15px;
width: 26px;
height: 15px;
margin-left: -13px;
&:after {
top: 8px;
left: 5px;
.box-shadow(0 0 8px -1px rgba(0, 0, 0, 0.2));
}
}
}
&.top {
margin: 0 0px 15px 0;
.tip-arrow {
left: 50%;
bottom: -15px;
width: 26px;
height: 15px;
margin-left: -13px;
&:after {
top: -8px;
left: 5px;
}
}
}
}
.asc-footnotetip {
padding: 15px 8px 10px 15px;
border-radius: 5px;
background-color: #fff;
overflow: visible;
.box-shadow(0 4px 15px -2px rgba(0, 0, 0, 0.5));
font-size: 11px;
}
.asc-footnotetip .tip-arrow:after {
content: '';
position: absolute;
top: 5px;
left: 8px;
background-color: #fff;
width: 15px;
height: 15px;
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
.box-shadow(0 4px 8px -1px rgba(0, 0, 0, 0.2));
}
.asc-footnotetip .show-link {
margin-top: 15px;
label {
border-bottom: 1px dotted #445799;
color: #445799;
cursor: pointer;
}
}
.asc-footnotetip .move-ct {
position: absolute;
right: 0;
bottom: 0;
height: 16px;
margin: 8px;
.prev, .next {
width: 16px;
height: 16px;
display: inline-block;
cursor: pointer;
}
.prev {
background-position: @search-dlg-offset-x @search-dlg-offset-y;
}
.next {
background-position: @search-dlg-offset-x @search-dlg-offset-y - 16px;
}
.btn {
&:hover,
.over,
&:active,
&.active {
background-color: transparent !important;
}
&.disabled{
cursor: default;
.prev {
background-position: @search-dlg-offset-x - 32px @search-dlg-offset-y;
}
.next{
background-position: @search-dlg-offset-x - 32px @search-dlg-offset-y - 16px;
}
}
}
}

View file

@ -149,7 +149,7 @@
.title {
padding: 5px 0 5px 20px;
float: left;
max-width: 95px;
//max-width: 95px;
overflow: hidden;
text-overflow: ellipsis;
}
@ -333,6 +333,7 @@
.button-normal-icon(btn-zoomout, 58, @toolbar-icon-size);
.button-normal-icon(btn-columns, 82, @toolbar-icon-size);
.button-normal-icon(btn-pagemargins, 83, @toolbar-icon-size);
.button-normal-icon(btn-notes, 83, @toolbar-icon-size);
.button-normal-icon(mmerge-next, 71, @toolbar-icon-size);
.button-normal-icon(mmerge-last, 72, @toolbar-icon-size);