diff --git a/apps/documenteditor/main/app/controller/DocumentHolder.js b/apps/documenteditor/main/app/controller/DocumentHolder.js index c42c99a88..b33d207e1 100644 --- a/apps/documenteditor/main/app/controller/DocumentHolder.js +++ b/apps/documenteditor/main/app/controller/DocumentHolder.js @@ -425,6 +425,8 @@ define([ view.menuParaTOCSettings.on('click', _.bind(me.onParaTOCSettings, me)); view.menuTableEquation.menu.on('item:click', _.bind(me.convertEquation, me)); view.menuParagraphEquation.menu.on('item:click', _.bind(me.convertEquation, me)); + view.menuTableListIndents.on('click', _.bind(me.onListIndents, me)); + view.menuParaListIndents.on('click', _.bind(me.onListIndents, me)); }, getView: function (name) { @@ -2308,6 +2310,28 @@ define([ } }, + onListIndents: function(item, e) { + if (this.api && !this.api.asc_IsShowListIndentsSettings()) { + this.documentHolder.fireEvent('list:settings', [2]); // multilevel list + return; + } + + var me = this; + me.api && (new DE.Views.ListIndentsDialog({ + api: me.api, + props: item.value.props, + isBullet: item.value.format === Asc.c_oAscNumberingFormat.Bullet, + handler: function(result, value) { + if (result == 'ok') { + if (me.api) { + me.api.asc_ChangeNumberingLvl(item.value.listId, value, item.value.level); + } + } + me.editComplete(); + } + })).show(); + }, + editComplete: function() { this.documentHolder && this.documentHolder.fireEvent('editcomplete', this.documentHolder); } diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index bed136b3a..74ce289c5 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -175,6 +175,9 @@ define([ }, 'ViewTab': { 'toolbar:setcompact': this.onChangeCompactView.bind(this) + }, + 'DocumentHolder': { + 'list:settings': this.onMarkerSettingsClick.bind(this) } }); diff --git a/apps/documenteditor/main/app/view/DocumentHolder.js b/apps/documenteditor/main/app/view/DocumentHolder.js index 3b9f238c5..b5156a8c9 100644 --- a/apps/documenteditor/main/app/view/DocumentHolder.js +++ b/apps/documenteditor/main/app/view/DocumentHolder.js @@ -57,7 +57,8 @@ define([ 'documenteditor/main/app/view/TableSettingsAdvanced', 'documenteditor/main/app/view/ControlSettingsDialog', 'documenteditor/main/app/view/NumberingValueDialog', - 'documenteditor/main/app/view/CellsAddDialog' + 'documenteditor/main/app/view/CellsAddDialog', + 'documenteditor/main/app/view/ListIndentsDialog' ], function ($, _, Backbone, gateway) { 'use strict'; DE.Views.DocumentHolder = Backbone.View.extend(_.extend({ @@ -1122,6 +1123,10 @@ define([ caption: me.textContinueNumbering }); + me.menuTableListIndents = new Common.UI.MenuItem({ + caption: me.textIndents + }); + var menuNumberingTable = new Common.UI.MenuItem({ caption : me.bulletsText, menu : new Common.UI.Menu({ @@ -1130,7 +1135,8 @@ define([ items : [ me.menuTableStartNewList, me.menuTableStartNumberingFrom, - me.menuTableContinueNumbering + me.menuTableContinueNumbering, + me.menuTableListIndents ] }) }); @@ -1382,6 +1388,7 @@ define([ me.menuTableStartNumberingFrom.value = {format: format, start: start}; me.menuTableStartNewList.setCaption((format == Asc.c_oAscNumberingFormat.Bullet) ? me.textSeparateList : me.textStartNewList); me.menuTableContinueNumbering.setCaption((format == Asc.c_oAscNumberingFormat.Bullet) ? me.textJoinList : me.textContinueNumbering); + me.menuTableListIndents.value = {format: format, props: numLvl}; } // hyperlink properties @@ -1930,6 +1937,10 @@ define([ caption: me.textContinueNumbering }); + me.menuParaListIndents = new Common.UI.MenuItem({ + caption: me.textIndents + }); + var menuParaNumberingSeparator = new Common.UI.MenuItem({ caption : '--' }); @@ -2153,8 +2164,10 @@ define([ me.menuParaStartNewList.setVisible(in_list); me.menuParaStartNumberingFrom.setVisible(in_list); me.menuParaContinueNumbering.setVisible(in_list); + me.menuParaListIndents.setVisible(in_list); if (in_list) { - var numLvl = me.api.asc_GetNumberingPr(listId).get_Lvl(me.api.asc_GetCurrentNumberingLvl()), + var level = me.api.asc_GetCurrentNumberingLvl(), + numLvl = me.api.asc_GetNumberingPr(listId).get_Lvl(level), format = numLvl.get_Format(), start = me.api.asc_GetCalculatedNumberingValue(); me.menuParaStartNewList.setVisible(numLvl.get_Start()!=start); @@ -2163,6 +2176,7 @@ define([ me.menuParaStartNumberingFrom.value = {format: format, start: start}; me.menuParaStartNewList.setCaption((format == Asc.c_oAscNumberingFormat.Bullet) ? me.textSeparateList : me.textStartNewList); me.menuParaContinueNumbering.setCaption((format == Asc.c_oAscNumberingFormat.Bullet) ? me.textJoinList : me.textContinueNumbering); + me.menuParaListIndents.value = {listId: listId, level: level, format: format, props: numLvl}; } }, items: [ @@ -2214,6 +2228,7 @@ define([ me.menuParaStartNewList, me.menuParaStartNumberingFrom, me.menuParaContinueNumbering, + me.menuParaListIndents, menuStyleSeparator, menuStyle ] @@ -3229,7 +3244,8 @@ define([ currLinearText: 'Current - Linear', allProfText: 'All - Professional', allLinearText: 'All - Linear', - eqToInlineText: 'Change to Inline' + eqToInlineText: 'Change to Inline', + textIndents: 'Adjust list indents' }, DE.Views.DocumentHolder || {})); }); \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/ListIndentsDialog.js b/apps/documenteditor/main/app/view/ListIndentsDialog.js new file mode 100644 index 000000000..2debcb19c --- /dev/null +++ b/apps/documenteditor/main/app/view/ListIndentsDialog.js @@ -0,0 +1,212 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2022 + * + * 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 + * +*/ +/** + * ListIndentsDialog.js + * + * Created by Julia Radzhabova on 10/13/22 + * Copyright (c) 2022 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'common/main/lib/component/Window', + 'common/main/lib/component/MetricSpinner' +], function () { 'use strict'; + + DE.Views.ListIndentsDialog = Common.UI.Window.extend(_.extend({ + options: { + width: 305, + header: true, + style: 'min-width: 216px;', + cls: 'modal-dlg', + id: 'window-list-indents', + buttons: ['ok', 'cancel'] + }, + + initialize : function(options) { + _.extend(this.options, { + title: this.textTitle + }, options || {}); + + this.props = options.props; + this.isBullet = options.isBullet || false; + + this.template = [ + '
', + '', + '', + ' | ', + '', + '', + '', + ' | ', + '
', + '', + '', + ' | ', + '