diff --git a/apps/presentationeditor/main/resources/img/toolbar/1.5x/big/btn-datetime.png b/apps/common/main/resources/img/toolbar/1.5x/big/btn-datetime.png similarity index 100% rename from apps/presentationeditor/main/resources/img/toolbar/1.5x/big/btn-datetime.png rename to apps/common/main/resources/img/toolbar/1.5x/big/btn-datetime.png diff --git a/apps/presentationeditor/main/resources/img/toolbar/1x/big/btn-datetime.png b/apps/common/main/resources/img/toolbar/1x/big/btn-datetime.png similarity index 100% rename from apps/presentationeditor/main/resources/img/toolbar/1x/big/btn-datetime.png rename to apps/common/main/resources/img/toolbar/1x/big/btn-datetime.png diff --git a/apps/presentationeditor/main/resources/img/toolbar/2x/big/btn-datetime.png b/apps/common/main/resources/img/toolbar/2x/big/btn-datetime.png similarity index 100% rename from apps/presentationeditor/main/resources/img/toolbar/2x/big/btn-datetime.png rename to apps/common/main/resources/img/toolbar/2x/big/btn-datetime.png diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index da5f1e5dd..fb6a6c2e8 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -59,7 +59,8 @@ define([ 'documenteditor/main/app/view/ControlSettingsDialog', 'documenteditor/main/app/view/WatermarkSettingsDialog', 'documenteditor/main/app/view/CompareSettingsDialog', - 'documenteditor/main/app/view/ListSettingsDialog' + 'documenteditor/main/app/view/ListSettingsDialog', + 'documenteditor/main/app/view/DateTimeDialog' ], function () { 'use strict'; @@ -322,6 +323,7 @@ define([ toolbar.btnMailRecepients.on('click', _.bind(this.onSelectRecepientsClick, this)); toolbar.mnuPageNumberPosPicker.on('item:click', _.bind(this.onInsertPageNumberClick, this)); toolbar.btnEditHeader.menu.on('item:click', _.bind(this.onEditHeaderFooterClick, this)); + toolbar.btnInsDateTime.on('click', _.bind(this.onInsDateTimeClick, this)); toolbar.mnuPageNumCurrentPos.on('click', _.bind(this.onPageNumCurrentPosClick, this)); toolbar.mnuInsertPageCount.on('click', _.bind(this.onInsertPageCountClick, this)); toolbar.btnBlankPage.on('click', _.bind(this.onBtnBlankPageClick, this)); @@ -850,6 +852,7 @@ define([ toolbar.btnInsertEquation.setDisabled(need_disable); toolbar.btnInsertSymbol.setDisabled(!in_para || paragraph_locked || header_locked || rich_edit_lock || plain_edit_lock || rich_del_lock || plain_del_lock); + toolbar.btnInsDateTime.setDisabled(!in_para || paragraph_locked || header_locked || rich_edit_lock || plain_edit_lock || rich_del_lock || plain_del_lock); need_disable = paragraph_locked || header_locked || in_equation || rich_edit_lock || plain_edit_lock; toolbar.btnSuperscript.setDisabled(need_disable); @@ -3031,6 +3034,23 @@ define([ this._state.lang = langId; }, + onInsDateTimeClick: function() { + //insert date time + var me = this; + (new DE.Views.DateTimeDialog({ + api: this.api, + lang: this._state.lang, + handler: function(result, value) { + if (result == 'ok') { + if (me.api) { + me.api.asc_addDateTime(value); + } + } + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + })).show(); + }, + textEmptyImgUrl : 'You need to specify image URL.', textWarning : 'Warning', textFontSizeErr : 'The entered value is incorrect.
Please enter a numeric value between 1 and 100', diff --git a/apps/documenteditor/main/app/template/Toolbar.template b/apps/documenteditor/main/app/template/Toolbar.template index ff945a3a9..37f13e618 100644 --- a/apps/documenteditor/main/app/template/Toolbar.template +++ b/apps/documenteditor/main/app/template/Toolbar.template @@ -83,7 +83,6 @@
-
@@ -97,8 +96,13 @@
- + +
+
+
+ +
diff --git a/apps/documenteditor/main/app/view/DateTimeDialog.js b/apps/documenteditor/main/app/view/DateTimeDialog.js new file mode 100644 index 000000000..1ddd84b95 --- /dev/null +++ b/apps/documenteditor/main/app/view/DateTimeDialog.js @@ -0,0 +1,247 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 20A-12 Ernesta Birznieka-Upisha + * street, Riga, Latvia, EU, LV-1050. + * + * 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 + * + */ +/** + * DateTimeDialog.js + * + * Created by Julia Radzhabova on 26.06.2019 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'common/main/lib/component/Window', + 'common/main/lib/component/ComboBox', + 'common/main/lib/component/ListView' +], function () { + 'use strict'; + + DE.Views.DateTimeDialog = Common.UI.Window.extend(_.extend({ + options: { + width: 350, + style: 'min-width: 230px;', + cls: 'modal-dlg', + buttons: ['ok', 'cancel'] + }, + + initialize : function (options) { + var t = this, + _options = {}; + + _.extend(this.options, { + title: this.txtTitle + }, options || {}); + + this.template = [ + '
', + '
', + '', + '
', + '
', + '
', + '', + '
', + '
', + '
', + '
', + '', + '
', + '
' + ].join(''); + + this.options.tpl = _.template(this.template)(this.options); + this.api = this.options.api; + this.lang = this.options.lang; + this.handler = this.options.handler; + + Common.UI.Window.prototype.initialize.call(this, this.options); + }, + render: function () { + Common.UI.Window.prototype.render.call(this); + + var data = [{ value: 0x042C }, { value: 0x0402 }, { value: 0x0405 }, { value: 0x0407 }, {value: 0x0807}, { value: 0x0408 }, { value: 0x0C09 }, { value: 0x0809 }, { value: 0x0409 }, { value: 0x0C0A }, { value: 0x080A }, + { value: 0x040B }, { value: 0x040C }, { value: 0x0410 }, { value: 0x0411 }, { value: 0x0412 }, { value: 0x0426 }, { value: 0x0413 }, { value: 0x0415 }, { value: 0x0416 }, + { value: 0x0816 }, { value: 0x0419 }, { value: 0x041B }, { value: 0x0424 }, { value: 0x081D }, { value: 0x041D }, { value: 0x041F }, { value: 0x0422 }, { value: 0x042A }, { value: 0x0804 }]; + data.forEach(function(item) { + var langinfo = Common.util.LanguageInfo.getLocalLanguageName(item.value); + item.displayValue = langinfo[1]; + item.langName = langinfo[0]; + }); + + this.cmbLang = new Common.UI.ComboBox({ + el : $('#datetime-dlg-lang'), + menuStyle : 'min-width: 100%; max-height: 185px;', + cls : 'input-group-nr', + editable : false, + data : data + }); + this.cmbLang.setValue(0x0409); + this.cmbLang.on('selected', _.bind(function(combo, record) { + this.updateFormats(record.value); + }, this)); + + this.chUpdate = new Common.UI.CheckBox({ + el: $('#datetime-dlg-update'), + labelText: this.textUpdate + }); + this.chUpdate.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + this.onSelectFormat(this.listFormats, null, this.listFormats.getSelectedRec()); + }, this)); + + this.listFormats = new Common.UI.ListView({ + el: $('#datetime-dlg-format'), + store: new Common.UI.DataViewStore(), + scrollAlwaysVisible: true + }); + + this.listFormats.on('item:select', _.bind(this.onSelectFormat, this)); + this.listFormats.on('item:dblclick', _.bind(this.onDblClickFormat, this)); + this.listFormats.on('entervalue', _.bind(this.onPrimary, this)); + this.listFormats.$el.find('.listview').focus(); + + this.btnDefault = new Common.UI.Button({ + el: $('#datetime-dlg-default') + }); + this.btnDefault.on('click', _.bind(function(btn, e) { + var rec = this.listFormats.getSelectedRec(); + Common.UI.warning({ + msg: Common.Utils.String.format(this.confirmDefault, Common.util.LanguageInfo.getLocalLanguageName(this.cmbLang.getValue())[1], rec ? rec.get('value') : ''), + buttons: ['yes', 'no'], + primary: 'yes', + callback: _.bind(function(btn) { + if (btn == 'yes') { + this.defaultFormats[this.cmbLang.getValue()] = rec ? rec.get('format') : ''; + this.api.asc_setDefaultDateTimeFormat(this.defaultFormats); + var arr = []; + for (var name in this.defaultFormats) { + if (name) { + arr.push(name + ' ' + this.defaultFormats[name]); + } + } + var value = arr.join(';'); + Common.localStorage.setItem("de-settings-datetime-default", value); + Common.Utils.InternalSettings.set("de-settings-datetime-default", value); + } + }, this) + }); + }, this)); + + this.$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + this.afterRender(); + }, + + afterRender: function() { + var me = this, + value = Common.Utils.InternalSettings.get("de-settings-datetime-default"), + arr = (value) ? value.split(';') : []; + this.defaultFormats = []; + arr.forEach(function(item){ + var pair = item.split(' '); + me.defaultFormats[parseInt(pair[0])] = pair[1]; + }); + + this._setDefaults(); + }, + + _setDefaults: function () { + this.props = new Asc.CAscDateTime(); + if (this.lang) { + var item = this.cmbLang.store.findWhere({value: this.lang}); + item = item ? item.get('value') : 0x0409; + this.cmbLang.setValue(item) + } + this.updateFormats(this.cmbLang.getValue()); + }, + + getSettings: function () { + return this.props; + }, + + updateFormats: function(lang) { + this.props.put_Lang(lang); + var formats = this.props.get_FormatsExamples(), + arr = []; + var store = this.listFormats.store; + for (var i = 0, len = formats.length; i < len; i++) + { + var rec = new Common.UI.DataViewModel(); + rec.set({ + format: formats[i], + value: this.props.get_String(formats[i], undefined, lang) + }); + arr.push(rec); + } + store.reset(arr); + var format = this.defaultFormats[lang]; + format ? this.listFormats.selectRecord(store.findWhere({format: format})) : this.listFormats.selectByIndex(0); + var rec = this.listFormats.getSelectedRec(); + this.listFormats.scrollToRecord(rec); + this.onSelectFormat(this.listFormats, null, rec); + }, + + onSelectFormat: function(lisvView, itemView, record) { + if (!record) return; + this.props.put_Format(record.get('format')); + this.props.put_Update(this.chUpdate.getValue()=='checked'); + }, + + onBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + onDblClickFormat: function () { + this._handleInput('ok'); + }, + + onPrimary: function(event) { + this._handleInput('ok'); + return false; + }, + + _handleInput: function(state) { + if (this.options.handler) { + this.options.handler.call(this, state, this.getSettings()); + } + + this.close(); + }, + + // + txtTitle: 'Date & Time', + textLang: 'Language', + textFormat: 'Formats', + textUpdate: 'Update automatically', + textDefault: 'Set as default', + confirmDefault: 'Set default format for {0}: "{1}"' + + }, DE.Views.DateTimeDialog || {})); +}); \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js index 6e65604b8..a75aba0e1 100644 --- a/apps/documenteditor/main/app/view/Toolbar.js +++ b/apps/documenteditor/main/app/view/Toolbar.js @@ -515,6 +515,14 @@ define([ this.paragraphControls.push(this.mnuInsertPageCount); this.toolbarControls.push(this.btnEditHeader); + this.btnInsDateTime = new Common.UI.Button({ + id: 'id-toolbar-btn-datetime', + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-datetime', + caption: me.capBtnDateTime + }); + this.paragraphControls.push(this.btnInsDateTime); + this.btnBlankPage = new Common.UI.Button({ id: 'id-toolbar-btn-blankpage', cls: 'btn-toolbar x-huge icon-top', @@ -1309,6 +1317,7 @@ define([ _injectComponent('#slot-btn-controls', this.btnContentControls); _injectComponent('#slot-btn-columns', this.btnColumns); _injectComponent('#slot-btn-editheader', this.btnEditHeader); + _injectComponent('#slot-btn-datetime', this.btnInsDateTime); _injectComponent('#slot-btn-blankpage', this.btnBlankPage); _injectComponent('#slot-btn-insshape', this.btnInsertShape); _injectComponent('#slot-btn-insequation', this.btnInsertEquation); @@ -1589,6 +1598,7 @@ define([ this.btnInsertText.updateHint(this.tipInsertText); this.btnInsertTextArt.updateHint(this.tipInsertTextArt); this.btnEditHeader.updateHint(this.tipEditHeader); + this.btnInsDateTime.updateHint(this.tipDateTime); this.btnBlankPage.updateHint(this.tipBlankPage); this.btnInsertShape.updateHint(this.tipInsertShape); this.btnInsertEquation.updateHint(this.tipInsertEquation); @@ -2309,7 +2319,9 @@ define([ tipInsertSymbol: 'Insert symbol', mniDrawTable: 'Draw Table', mniEraseTable: 'Erase Table', - textListSettings: 'List Settings' + textListSettings: 'List Settings', + capBtnDateTime: 'Date & Time', + tipDateTime: 'Insert current date and time' } })(), DE.Views.Toolbar || {})); }); diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index 478e7de81..6b0be5469 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -1169,6 +1169,12 @@ "DE.Views.CustomColumnsDialog.textSeparator": "Column divider", "DE.Views.CustomColumnsDialog.textSpacing": "Spacing between columns", "DE.Views.CustomColumnsDialog.textTitle": "Columns", + "DE.Views.DateTimeDialog.confirmDefault": "Set default format for {0}: \"{1}\"", + "DE.Views.DateTimeDialog.textDefault": "Set as default", + "DE.Views.DateTimeDialog.textFormat": "Formats", + "DE.Views.DateTimeDialog.textLang": "Language", + "DE.Views.DateTimeDialog.textUpdate": "Update automatically", + "DE.Views.DateTimeDialog.txtTitle": "Date & Time", "DE.Views.DocumentHolder.aboveText": "Above", "DE.Views.DocumentHolder.addCommentText": "Add Comment", "DE.Views.DocumentHolder.advancedFrameText": "Frame Advanced Settings", @@ -2364,6 +2370,8 @@ "DE.Views.Toolbar.txtScheme7": "Equity", "DE.Views.Toolbar.txtScheme8": "Flow", "DE.Views.Toolbar.txtScheme9": "Foundry", + "DE.Views.Toolbar.capBtnDateTime": "Date & Time", + "DE.Views.Toolbar.tipDateTime": "Insert current date and time", "DE.Views.WatermarkSettingsDialog.textAuto": "Auto", "DE.Views.WatermarkSettingsDialog.textBold": "Bold", "DE.Views.WatermarkSettingsDialog.textColor": "Text color", diff --git a/apps/spreadsheeteditor/main/resources/img/toolbar/1.5x/big/btn-datetime.png b/apps/spreadsheeteditor/main/resources/img/toolbar/1.5x/big/btn-datetime.png deleted file mode 100644 index 95f813519..000000000 Binary files a/apps/spreadsheeteditor/main/resources/img/toolbar/1.5x/big/btn-datetime.png and /dev/null differ diff --git a/apps/spreadsheeteditor/main/resources/img/toolbar/1x/big/btn-datetime.png b/apps/spreadsheeteditor/main/resources/img/toolbar/1x/big/btn-datetime.png deleted file mode 100644 index c53184b79..000000000 Binary files a/apps/spreadsheeteditor/main/resources/img/toolbar/1x/big/btn-datetime.png and /dev/null differ diff --git a/apps/spreadsheeteditor/main/resources/img/toolbar/2x/big/btn-datetime.png b/apps/spreadsheeteditor/main/resources/img/toolbar/2x/big/btn-datetime.png deleted file mode 100644 index f6b595bdd..000000000 Binary files a/apps/spreadsheeteditor/main/resources/img/toolbar/2x/big/btn-datetime.png and /dev/null differ