From c7a5162e8052b6b39ad4ef9079c6be31de40da9b Mon Sep 17 00:00:00 2001 From: Julia Svinareva Date: Wed, 15 May 2019 14:48:38 +0300 Subject: [PATCH] [DE mobile] Add modal window collaboration, add Track Changes --- apps/documenteditor/mobile/app-dev.js | 6 +- apps/documenteditor/mobile/app.js | 6 +- .../mobile/app/controller/Collaboration.js | 191 ++++++++++++++++++ .../mobile/app/controller/Settings.js | 8 +- .../app/template/Collaboration.template | 81 ++++++++ .../mobile/app/template/Settings.template | 10 + .../mobile/app/view/Collaboration.js | 153 ++++++++++++++ .../mobile/app/view/Settings.js | 3 +- 8 files changed, 452 insertions(+), 6 deletions(-) create mode 100644 apps/documenteditor/mobile/app/controller/Collaboration.js create mode 100644 apps/documenteditor/mobile/app/template/Collaboration.template create mode 100644 apps/documenteditor/mobile/app/view/Collaboration.js diff --git a/apps/documenteditor/mobile/app-dev.js b/apps/documenteditor/mobile/app-dev.js index 653bd9b8c..95ac0d284 100644 --- a/apps/documenteditor/mobile/app-dev.js +++ b/apps/documenteditor/mobile/app-dev.js @@ -149,7 +149,8 @@ require([ 'AddTable', 'AddShape', 'AddImage', - 'AddOther' + 'AddOther', + 'Collaboration' ] }); @@ -218,7 +219,8 @@ require([ 'documenteditor/mobile/app/controller/add/AddTable', 'documenteditor/mobile/app/controller/add/AddShape', 'documenteditor/mobile/app/controller/add/AddImage', - 'documenteditor/mobile/app/controller/add/AddOther' + 'documenteditor/mobile/app/controller/add/AddOther', + 'documenteditor/mobile/app/controller/Collaboration' ], function() { window.compareVersions = true; app.start(); diff --git a/apps/documenteditor/mobile/app.js b/apps/documenteditor/mobile/app.js index e434c4546..4b139e5f6 100644 --- a/apps/documenteditor/mobile/app.js +++ b/apps/documenteditor/mobile/app.js @@ -160,7 +160,8 @@ require([ 'AddTable', 'AddShape', 'AddImage', - 'AddOther' + 'AddOther', + 'Collaboration' ] }); @@ -229,7 +230,8 @@ require([ 'documenteditor/mobile/app/controller/add/AddTable', 'documenteditor/mobile/app/controller/add/AddShape', 'documenteditor/mobile/app/controller/add/AddImage', - 'documenteditor/mobile/app/controller/add/AddOther' + 'documenteditor/mobile/app/controller/add/AddOther', + 'documenteditor/mobile/app/controller/Collaboration' ], function() { app.start(); }); diff --git a/apps/documenteditor/mobile/app/controller/Collaboration.js b/apps/documenteditor/mobile/app/controller/Collaboration.js new file mode 100644 index 000000000..1a7257cdd --- /dev/null +++ b/apps/documenteditor/mobile/app/controller/Collaboration.js @@ -0,0 +1,191 @@ +/* + * + * (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 + * + */ + +/** + * Collaboration.js + * Document Editor + * + * Created by Julia Svinareva on 14/5/19 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ +define([ + 'core', + 'jquery', + 'underscore', + 'backbone', + 'documenteditor/mobile/app/view/Collaboration' +], function (core, $, _, Backbone) { + 'use strict'; + + DE.Controllers.Collaboration = Backbone.Controller.extend(_.extend((function() { + // Private + var _settings = [], + _headerType = 1, + rootView, + _isReviewOnly = false, + _fileKey, + _canReview = false; + + return { + models: [], + collections: [], + views: [ + 'Collaboration' + ], + + initialize: function() { + var me = this; + me.addListeners({ + 'Collaboration': { + 'page:show' : me.onPageShow + } + }); + }, + + setApi: function(api) { + this.api = api; + }, + + onLaunch: function () { + this.createView('Collaboration').render(); + }, + + setMode: function (mode) { + _isReviewOnly = mode.isReviewOnly; + _fileKey = mode.fileKey; + _canReview = mode.canReview; + }, + + + showModal: function() { + var me = this, + isAndroid = Framework7.prototype.device.android === true, + modalView, + mainView = DE.getController('Editor').getView('Editor').f7View; + + uiApp.closeModal(); + + /*me._showByStack(Common.SharedSettings.get('phone'));*/ + + if (Common.SharedSettings.get('phone')) { + modalView = $$(uiApp.pickerModal( + '
' + + '' + + '
' + )).on('opened', function () { + if (_.isFunction(me.api.asc_OnShowContextMenu)) { + me.api.asc_OnShowContextMenu() + } + }).on('close', function (e) { + mainView.showNavbar(); + }).on('closed', function () { + if (_.isFunction(me.api.asc_OnHideContextMenu)) { + me.api.asc_OnHideContextMenu() + } + }); + mainView.hideNavbar(); + } else { + modalView = uiApp.popover( + '
' + + '
' + + '
' + + '
' + + '' + + '
' + + '
' + + '
', + $$('#toolbar-edit') + ); + } + + if (Framework7.prototype.device.android === true) { + $$('.view.collaboration-root-view.navbar-through').removeClass('navbar-through').addClass('navbar-fixed'); + $$('.view.collaboration-root-view .navbar').prependTo('.view.collaboration-root-view > .pages > .page'); + } + + rootView = uiApp.addView('.collaboration-root-view', { + dynamicNavbar: true, + domCache: true + }); + + Common.NotificationCenter.trigger('collaborationcontainer:show'); + this.onPageShow(this.getView('Collaboration')); + + DE.getController('Toolbar').getView('Toolbar').hideSearch(); + }, + + rootView : function() { + return rootView; + }, + + onPageShow: function(view, pageId) { + var me = this; + + if ('#reviewing-settings-view' == pageId) { + me.initReviewingSettingsView(); + Common.Utils.addScrollIfNeed('.page[data-page=reviewing-settings-view]', '.page[data-page=reviewing-settings-view] .page-content'); + } else { + + } + }, + + initReviewingSettingsView: function () { + var me = this; + $('#settings-review input:checkbox').attr('checked', _isReviewOnly || Common.localStorage.getBool("de-mobile-track-changes-" + (_fileKey || ''))); + $('#settings-review input:checkbox').single('change', _.bind(me.onTrackChanges, me)); + if (_isReviewOnly) $layour.find('#settings-review').addClass('disabled'); + }, + + onTrackChanges: function(e) { + var $checkbox = $(e.currentTarget), + state = $checkbox.is(':checked'); + if ( _isReviewOnly ) { + $checkbox.attr('checked', true); + } else if ( _canReview ) { + this.api.asc_SetTrackRevisions(state); + Common.localStorage.setItem("de-mobile-track-changes-" + (_fileKey || ''), state ? 1 : 0); + } + }, + + + + text: '' + + } + })(), DE.Controllers.Collaboration || {})) +}); \ No newline at end of file diff --git a/apps/documenteditor/mobile/app/controller/Settings.js b/apps/documenteditor/mobile/app/controller/Settings.js index d135ce7f2..49f377c25 100644 --- a/apps/documenteditor/mobile/app/controller/Settings.js +++ b/apps/documenteditor/mobile/app/controller/Settings.js @@ -46,7 +46,8 @@ define([ 'jquery', 'underscore', 'backbone', - 'documenteditor/mobile/app/view/Settings' + 'documenteditor/mobile/app/view/Settings', + 'documenteditor/mobile/app/controller/Collaboration' ], function (core, $, _, Backbone) { 'use strict'; @@ -249,9 +250,14 @@ define([ $('#settings-help').single('click', _.bind(me.onShowHelp, me)); $('#settings-download').single('click', _.bind(me.onDownloadOrigin, me)); $('#settings-print').single('click', _.bind(me.onPrint, me)); + $('#settings-collaboration').single('click', _.bind(me.clickCollaboration, me)); } }, + clickCollaboration: function() { + DE.getController('Collaboration').showModal(); + }, + onNoCharacters: function(e) { var me = this; var $checkbox = $(e.currentTarget), diff --git a/apps/documenteditor/mobile/app/template/Collaboration.template b/apps/documenteditor/mobile/app/template/Collaboration.template new file mode 100644 index 000000000..ffdd94803 --- /dev/null +++ b/apps/documenteditor/mobile/app/template/Collaboration.template @@ -0,0 +1,81 @@ + +
+ + +
+ + +
+ +
+
+
+
+
    +
  • +
    +
    + +
    +
    +
    <%= scope.textReview %>
    +
    + +
    +
    +
    +
  • + +
+
+ +
+
+
+
\ No newline at end of file diff --git a/apps/documenteditor/mobile/app/template/Settings.template b/apps/documenteditor/mobile/app/template/Settings.template index 7da79a08a..3c0dfa3ea 100644 --- a/apps/documenteditor/mobile/app/template/Settings.template +++ b/apps/documenteditor/mobile/app/template/Settings.template @@ -71,6 +71,16 @@ +
  • +
    +
    + +
    +
    +
    <%= scope.textCollaboration %>
    +
    +
    +
  • diff --git a/apps/documenteditor/mobile/app/view/Collaboration.js b/apps/documenteditor/mobile/app/view/Collaboration.js new file mode 100644 index 000000000..0bb12a2d2 --- /dev/null +++ b/apps/documenteditor/mobile/app/view/Collaboration.js @@ -0,0 +1,153 @@ +/* + * + * (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 + * + */ + +/** + * Collaboration.js + * Document Editor + * + * Created by Julia Svinareva on 14/5/19 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'text!documenteditor/mobile/app/template/Collaboration.template', + 'jquery', + 'underscore', + 'backbone' +], function (settingsTemplate, $, _, Backbone) { + 'use strict'; + + DE.Views.Collaboration = Backbone.View.extend(_.extend((function() { + // private + + return { + + template: _.template(settingsTemplate), + + events: { + // + }, + + initialize: function() { + Common.NotificationCenter.on('collaborationcontainer:show', _.bind(this.initEvents, this)); + this.on('page:show', _.bind(this.updateItemHandlers, this)); + }, + + initEvents: function () { + var me = this; + + Common.Utils.addScrollIfNeed('.view[data-page=collaboration-root-view] .pages', '.view[data-page=collaboration-root-view] .page'); + me.updateItemHandlers(); + }, + + initControls: function() { + // + }, + + // Render layout + render: function() { + this.layout = $('
    ').append(this.template({ + android : Common.SharedSettings.get('android'), + phone : Common.SharedSettings.get('phone'), + orthography: Common.SharedSettings.get('sailfish'), + scope : this + })); + + return this; + }, + + updateItemHandlers: function () { + var selectorsDynamicPage = [ + '.page[data-page=collaboration-root-view]', + '.page[data-page=reviewing-settings-view]' + ].map(function (selector) { + return selector + ' a.item-link[data-page]'; + }).join(', '); + + $(selectorsDynamicPage).single('click', _.bind(this.onItemClick, this)); + }, + + onItemClick: function (e) { + var $target = $(e.currentTarget), + page = $target.data('page'); + + if (page && page.length > 0 ) { + this.showPage(page); + } + }, + + rootLayout: function () { + if (this.layout) { + var $layour = this.layout.find('#collaboration-root-view'), + isPhone = Common.SharedSettings.get('phone'); + + return $layour.html(); + } + + return ''; + }, + + showPage: function(templateId, suspendEvent) { + var rootView = DE.getController('Collaboration').rootView(); + + if (rootView && this.layout) { + var $content = this.layout.find(templateId); + + // Android fix for navigation + if (Framework7.prototype.device.android) { + $content.find('.page').append($content.find('.navbar')); + } + + rootView.router.load({ + content: $content.html() + }); + + if (suspendEvent !== true) { + this.fireEvent('page:show', [this, templateId]); + } + } + }, + + + + + textCollaboration: 'Collaboration', + textReviewing: 'Reviewing', + textСomments: 'Сomments', + textBack: 'Back', + textReview: 'Track Changes', + + } + })(), DE.Views.Collaboration || {})) +}); \ No newline at end of file diff --git a/apps/documenteditor/mobile/app/view/Settings.js b/apps/documenteditor/mobile/app/view/Settings.js index b49d816bc..eb85b01ca 100644 --- a/apps/documenteditor/mobile/app/view/Settings.js +++ b/apps/documenteditor/mobile/app/view/Settings.js @@ -286,7 +286,8 @@ define([ textInch: 'Inch', textColorSchemes: 'Color Schemes', textNoCharacters: 'Nonprinting Characters', - textHiddenTableBorders: 'Hidden Table Borders' + textHiddenTableBorders: 'Hidden Table Borders', + textCollaboration: 'Collaboration' } })(), DE.Views.Settings || {}))