From b0eafed82a5ab6fa54f3b890ded28d283e962893 Mon Sep 17 00:00:00 2001 From: Alexander Yuzhin Date: Tue, 22 Nov 2016 13:40:00 +0300 Subject: [PATCH] [PE mobile] Add Settings view --- apps/presentationeditor/mobile/app-dev.js | 8 +- .../mobile/app/controller/Settings.js | 203 +++++++++++++++ .../mobile/app/template/Settings.template | 238 ++++++++++++++++++ .../mobile/app/view/Settings.js | 201 +++++++++++++++ .../mobile/app/view/Toolbar.js | 4 +- 5 files changed, 648 insertions(+), 6 deletions(-) create mode 100644 apps/presentationeditor/mobile/app/controller/Settings.js create mode 100644 apps/presentationeditor/mobile/app/template/Settings.template create mode 100644 apps/presentationeditor/mobile/app/view/Settings.js diff --git a/apps/presentationeditor/mobile/app-dev.js b/apps/presentationeditor/mobile/app-dev.js index 8353680b8..4fc312dbe 100644 --- a/apps/presentationeditor/mobile/app-dev.js +++ b/apps/presentationeditor/mobile/app-dev.js @@ -136,9 +136,9 @@ require([ 'Editor', 'Toolbar', 'Search', - 'Main' + 'Main', // 'DocumentHolder', - // 'Settings', + 'Settings' // 'EditContainer', // 'EditText', // 'EditParagraph', @@ -201,9 +201,9 @@ require([ 'presentationeditor/mobile/app/controller/Editor', 'presentationeditor/mobile/app/controller/Toolbar', 'presentationeditor/mobile/app/controller/Search', - 'presentationeditor/mobile/app/controller/Main' + 'presentationeditor/mobile/app/controller/Main', // 'presentationeditor/mobile/app/controller/DocumentHolder', - // 'presentationeditor/mobile/app/controller/Settings', + 'presentationeditor/mobile/app/controller/Settings' // 'presentationeditor/mobile/app/controller/edit/EditContainer', // 'presentationeditor/mobile/app/controller/edit/EditText', // 'presentationeditor/mobile/app/controller/edit/EditParagraph', diff --git a/apps/presentationeditor/mobile/app/controller/Settings.js b/apps/presentationeditor/mobile/app/controller/Settings.js new file mode 100644 index 000000000..8702bd8ae --- /dev/null +++ b/apps/presentationeditor/mobile/app/controller/Settings.js @@ -0,0 +1,203 @@ +/* + * + * (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 + * + */ + +/** + * Settings.js + * Presentation Editor + * + * Created by Alexander Yuzhin on 11/22/16 + * Copyright (c) 2016 Ascensio System SIA. All rights reserved. + * + */ + + +define([ + 'core', + 'presentationeditor/mobile/app/view/Settings' +], function (core) { + 'use strict'; + + PE.Controllers.Settings = Backbone.Controller.extend(_.extend((function() { + // private + var rootView, + inProgress, + infoObj, + modalView; + + return { + models: [], + collections: [], + views: [ + 'Settings' + ], + + initialize: function () { + Common.SharedSettings.set('readerMode', false); + Common.NotificationCenter.on('settingscontainer:show', _.bind(this.initEvents, this)); + + this.addListeners({ + 'Settings': { + 'page:show' : this.onPageShow + } + }); + }, + + setApi: function (api) { + this.api = api; + }, + + onLaunch: function () { + this.createView('Settings').render(); + }, + + setMode: function (mode) { + this.getView('Settings').setMode(mode); + }, + + initEvents: function () { + }, + + rootView : function() { + return rootView; + }, + + showModal: function() { + if (Common.SharedSettings.get('phone')) { + modalView = uiApp.popup( + '' + ); + } else { + modalView = uiApp.popover( + '
' + + '
' + + '
' + + '
' + + '' + + '
' + + '
' + + '
', + $$('#toolbar-settings') + ); + } + + if (Framework7.prototype.device.android === true) { + $$('.view.settings-root-view.navbar-through').removeClass('navbar-through').addClass('navbar-fixed'); + $$('.view.settings-root-view .navbar').prependTo('.view.settings-root-view > .pages > .page'); + } + + rootView = uiApp.addView('.settings-root-view', { + dynamicNavbar: true + }); + + Common.NotificationCenter.trigger('settingscontainer:show'); + this.onPageShow(this.getView('Settings')); + }, + + hideModal: function() { + if (modalView) { + uiApp.closeModal(modalView); + } + }, + + onPageShow: function(view) { + var me = this; + $('#settings-search').single('click', _.bind(me._onSearch, me)); + $('#settings-readermode input:checkbox').single('change', _.bind(me._onReaderMode, me)); + $('#settings-edit-presentation').single('click', _.bind(me._onEditPresentation, me)); + $(modalView).find('.formats a').single('click', _.bind(me._onSaveFormat, me)); + }, + + + // API handlers + + _onApiDocumentName: function(name) { + $('#settings-presentation-title').html(name ? name : '-'); + }, + + _onEditPresentation: function() { + Common.Gateway.requestEditRights(); + }, + + _onSearch: function (e) { + var toolbarView = PE.getController('Toolbar').getView('Toolbar'); + + if (toolbarView) { + toolbarView.showSearch(); + } + + this.hideModal(); + }, + + _onReaderMode: function (e) { + var me = this; + + Common.SharedSettings.set('readerMode', !Common.SharedSettings.get('readerMode')); + + me.api && me.api.ChangeReaderMode(); + + if (Common.SharedSettings.get('phone')) { + _.defer(function () { + me.hideModal(); + }, 1000); + } + + Common.NotificationCenter.trigger('readermode:change', Common.SharedSettings.get('readerMode')); + }, + + _onSaveFormat: function(e) { + var me = this, + format = $(e.currentTarget).data('format'); + + if (format) { + _.defer(function () { + me.api.asc_DownloadAs(format); + }); + } + + me.hideModal(); + }, + + txtLoading : 'Loading...', + notcriticalErrorTitle : 'Warning', + warnDownloadAs : 'If you continue saving in this format all features except the text will be lost.
Are you sure you want to continue?' + } + })(), PE.Controllers.Settings || {})) +}); \ No newline at end of file diff --git a/apps/presentationeditor/mobile/app/template/Settings.template b/apps/presentationeditor/mobile/app/template/Settings.template new file mode 100644 index 000000000..2307f3263 --- /dev/null +++ b/apps/presentationeditor/mobile/app/template/Settings.template @@ -0,0 +1,238 @@ + +
+ + +
+ + +
+ +
+
+
+
<%= scope.textPresentTitle %>
+
+
    +
  • +
    +
    <%= scope.textLoading %>
    +
    +
  • +
+
+
<%= scope.textAuthor %>
+
+
    +
  • +
    +
    <%= scope.textLoading %>
    +
    +
  • +
+
+
<%= scope.textCreateDate %>
+
+
    +
  • +
    +
    <%= scope.textLoading %>
    +
    +
  • +
+
+
+
+
+
+ + +
+ +
+
+
+
<%= scope.textDownloadAs %>
+ +
+
+
+
+ + +
+ +
+
+
+
+ +
+
+

PRESENTATION EDITOR

+

<%= scope.textVersion %> 4.2

+
+
+

Ascensio System SIA

+

Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021

+

support@onlyoffice.com

+

+371 660-16425

+

www.onlyoffice.com

+
+
+
+
+
\ No newline at end of file diff --git a/apps/presentationeditor/mobile/app/view/Settings.js b/apps/presentationeditor/mobile/app/view/Settings.js new file mode 100644 index 000000000..2433d6ca0 --- /dev/null +++ b/apps/presentationeditor/mobile/app/view/Settings.js @@ -0,0 +1,201 @@ +/* + * + * (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 + * + */ + +/** + * Settings.js + * Presentation Editor + * + * Created by Alexander Yuzhin on 11/22/16 + * Copyright (c) 2016 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'text!presentationeditor/mobile/app/template/Settings.template', + 'jquery', + 'underscore', + 'backbone' +], function (settingsTemplate, $, _, Backbone) { + 'use strict'; + + PE.Views.Settings = Backbone.View.extend(_.extend((function() { + // private + var isEdit; + + return { + // el: '.view-main', + + template: _.template(settingsTemplate), + + events: { + // + }, + + initialize: function () { + Common.NotificationCenter.on('settingscontainer:show', _.bind(this.initEvents, this)); + Common.Gateway.on('opendocument', _.bind(this.loadDocument, this)); + }, + + initEvents: function () { + var me = this; + + $('#settings-presentation-info').single('click', _.bind(me.showInfo, me)); + $('#settings-download').single('click', _.bind(me.showDownload, me)); + $('#settings-history').single('click', _.bind(me.showHistory, me)); + $('#settings-help').single('click', _.bind(me.showHelp, me)); + $('#settings-about').single('click', _.bind(me.showAbout, me)); + + me.initControls(); + }, + + // Render layout + render: function () { + this.layout = $('
').append(this.template({ + android: Common.SharedSettings.get('android'), + phone: Common.SharedSettings.get('phone'), + scope: this + })); + + return this; + }, + + setMode: function (mode) { + isEdit = (mode === 'edit') + }, + + rootLayout: function () { + if (this.layout) { + var $layour = this.layout.find('#settings-root-view'), + isPhone = Common.SharedSettings.get('phone'); + + if (isEdit) { + $layour.find('#settings-edit-presentation').hide(); + $layour.find('#settings-readermode').hide(); + $layour.find('#settings-search .item-title').text(this.textFindAndReplace) + } else { + $layour.find('#settings-readermode input:checkbox') + .attr('checked', Common.SharedSettings.get('readerMode')) + .prop('checked', Common.SharedSettings.get('readerMode')); + } + + return $layour.html(); + } + + return ''; + }, + + initControls: function () { + // + }, + + showPage: function (templateId) { + var rootView = PE.getController('Settings').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() + }); + + this.fireEvent('page:show', this); + } + }, + + showInfo: function () { + this.showPage('#settings-info-view'); + + var document = Common.SharedSettings.get('document') || {}, + info = document.info || {}; + + $('#settings-presentation-title').html(document.title ? document.title : this.unknownText); + $('#settings-presentation-autor').html(info.author ? info.author : this.unknownText); + $('#settings-presentation-date').html(info.created ? info.created : this.unknownText); + }, + + showDownload: function () { + this.showPage('#settings-download-view'); + }, + + showHistory: function () { + this.showPage('#settings-history-view'); + }, + + showHelp: function () { + window.open('http://support.onlyoffice.com/', "_blank"); + PE.getController('Settings').hideModal(); + }, + + showAbout: function () { + this.showPage('#settings-about-view'); + }, + + loadDocument: function (data) { + var permissions = {}; + + if (data.doc) { + permissions = _.extend(permissions, data.doc.permissions); + + if (permissions.edit === false) { + $('#settings-edit-presentation').hide(); + } + } + }, + + unknownText: 'Unknown', + textSettings: 'Settings', + textDone: 'Done', + textEditPresent: 'Edit Presentation', + textPresentSetup: 'Presentation Setup', + textDownload: 'Download', + textPresentInfo: 'Presentation Info', + textHelp: 'Help', + textAbout: 'About', + textBack: 'Back', + textPresentTitle: 'Presentation Title', + textLoading: 'Loading...', + textAuthor: 'Author', + textCreateDate: 'Create date', + textDownloadAs: 'Download As...', + textVersion: 'Version', + textAddress: 'address', + textEmail: 'email', + textTel: 'tel' + } + })(), PE.Views.Settings || {})) +}); \ No newline at end of file diff --git a/apps/presentationeditor/mobile/app/view/Toolbar.js b/apps/presentationeditor/mobile/app/view/Toolbar.js index 914ae5874..06ffb3b50 100644 --- a/apps/presentationeditor/mobile/app/view/Toolbar.js +++ b/apps/presentationeditor/mobile/app/view/Toolbar.js @@ -120,13 +120,13 @@ define([ // Editor showEdition: function () { - PE.getController('EditContainer').showModal(); + // PE.getController('EditContainer').showModal(); }, // Inserts showInserts: function () { - PE.getController('AddContainer').showModal(); + // PE.getController('AddContainer').showModal(); }, // Settings