diff --git a/apps/common/mobile/lib/controller/Collaboration.js b/apps/common/mobile/lib/controller/Collaboration.js deleted file mode 100644 index ad90994d9..000000000 --- a/apps/common/mobile/lib/controller/Collaboration.js +++ /dev/null @@ -1,1876 +0,0 @@ -/* - * - * (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 - * - * Created by Julia Svinareva on 12/7/19 - * Copyright (c) 2019 Ascensio System SIA. All rights reserved. - * - */ - -if (Common === undefined) - var Common = {}; - -Common.Controllers = Common.Controllers || {}; - -define([ - 'core', - 'jquery', - 'underscore', - 'backbone', - 'common/mobile/lib/view/Collaboration' -], function (core, $, _, Backbone) { - 'use strict'; - - Common.Controllers.Collaboration = Backbone.Controller.extend(_.extend((function() { - // Private - var rootView, - _userId, - editUsers = [], - editor = !!window.DE ? 'DE' : !!window.PE ? 'PE' : 'SSE', - displayMode = "markup", - canViewReview, - arrChangeReview = [], - dateChange = [], - _fileKey; - - - return { - models: [], - collections: [], - views: [ - 'Common.Views.Collaboration' - ], - - initialize: function() { - var me = this; - me.addListeners({ - 'Common.Views.Collaboration': { - 'page:show' : me.onPageShow - } - }); - Common.NotificationCenter.on('comments:filterchange', _.bind(this.onFilterChange, this)); - }, - - setApi: function(api) { - this.api = api; - this.api.asc_registerCallback('asc_onAuthParticipantsChanged', _.bind(this.onChangeEditUsers, this)); - this.api.asc_registerCallback('asc_onParticipantsChanged', _.bind(this.onChangeEditUsers, this)); - this.api.asc_registerCallback('asc_onConnectionStateChanged', _.bind(this.onUserConnection, this)); - this.api.asc_registerCallback('asc_onAddComment', _.bind(this.onApiAddComment, this)); - this.api.asc_registerCallback('asc_onAddComments', _.bind(this.onApiAddComments, this)); - this.api.asc_registerCallback('asc_onChangeCommentData', _.bind(this.onApiChangeCommentData, this)); - this.api.asc_registerCallback('asc_onRemoveComment', _.bind(this.onApiRemoveComment, this)); - this.api.asc_registerCallback('asc_onRemoveComments', _.bind(this.onApiRemoveComments, this)); - this.api.asc_registerCallback('asc_onShowComment', _.bind(this.apiShowComments, this)); - this.api.asc_registerCallback('asc_onHideComment', _.bind(this.apiHideComments, this)); - - if (editor === 'DE') { - this.api.asc_registerCallback('asc_onShowRevisionsChange', _.bind(this.changeReview, this)); - } - }, - - onLaunch: function () { - this.createView('Common.Views.Collaboration').render(); - }, - - setMode: function(mode) { - this.appConfig = mode; - this.view = this.getView('Common.Views.Collaboration'); - this.view.viewmode = !mode.canComments; - this.view.canViewComments = mode.canViewComments; - _userId = mode.user.id; - if (editor === 'DE') { - _fileKey = mode.fileKey; - } - return this; - }, - - - showModal: function() { - var me = this, - isAndroid = Framework7.prototype.device.android === true, - modalView, - appPrefix = !!window.DE ? DE : !!window.PE ? PE : SSE, - mainView = appPrefix.getController('Editor').getView('Editor').f7View; - - uiApp.closeModal(); - - 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-collaboration') - ); - } - - 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 - }); - - if (!Common.SharedSettings.get('phone')) { - this.picker = $$(modalView); - var $overlay = $('.modal-overlay'); - - $$(this.picker).on('opened', function () { - $overlay.on('removeClass', function () { - if (!$overlay.hasClass('modal-overlay-visible')) { - $overlay.addClass('modal-overlay-visible') - } - }); - }).on('close', function () { - $overlay.off('removeClass'); - $overlay.removeClass('modal-overlay-visible') - }); - } - - Common.NotificationCenter.trigger('collaborationcontainer:show'); - this.onPageShow(this.getView('Common.Views.Collaboration')); - - appPrefix.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 if ('#display-mode-view' == pageId) { - me.initDisplayMode(); - Common.Utils.addScrollIfNeed('.page[data-page=display-mode-view]', '.page[data-page=display-mode-view] .page-content'); - } else if('#change-view' == pageId) { - me.initChange(); - Common.Utils.addScrollIfNeed('.page[data-page=change-view]', '.page[data-page=change-view] .page-content'); - } else if('#edit-users-view' == pageId) { - me.initEditUsers(); - Common.Utils.addScrollIfNeed('.page[data-page=edit-users-view]', '.page[data-page=edit-users-view] .page-content'); - } else if ('#comments-view' == pageId) { - me.initComments(); - Common.Utils.addScrollIfNeed('.page[data-page=comments-view]', '.page[data-page=comments-view] .page-content'); - } else { - var length = 0; - _.each(editUsers, function (item) { - if ((item.asc_getState()!==false) && !item.asc_getView()) - length++; - }); - (length<1) && $('#item-edit-users').hide(); - - if(editor === 'DE' && !this.appConfig.canReview && !canViewReview) { - $('#reviewing-settings').hide(); - } - } - }, - - //Edit users - - onChangeEditUsers: function(users) { - editUsers = users; - }, - - onUserConnection: function(change){ - var changed = false; - for (var uid in editUsers) { - if (undefined !== uid) { - var user = editUsers[uid]; - if (user && user.asc_getId() == change.asc_getId()) { - editUsers[uid] = change; - changed = true; - } - } - } - !changed && change && (editUsers[change.asc_getId()] = change); - }, - - getUsersInfo: function() { - var me = this; - var usersArray = []; - _.each(editUsers, function(item){ - var name = AscCommon.UserInfoParser.getParsedName(item.asc_getUserName()); - var initials = me.getInitials(name); - if((item.asc_getState()!==false) && !item.asc_getView()) { - var userAttr = { - color: item.asc_getColor(), - id: item.asc_getId(), - idOriginal: item.asc_getIdOriginal(), - name: name, - view: item.asc_getView(), - initial: initials - }; - if(item.asc_getIdOriginal() == _userId) { - usersArray.unshift(userAttr); - } else { - usersArray.push(userAttr); - } - } - }); - var userSort = _.chain(usersArray).groupBy('idOriginal').value(); - return userSort; - }, - - initEditUsers: function() { - var users = this.getUsersInfo(); - var templateUserItem = _.template([ - '<% _.each(users, function (user) { %>', - '
  • ' + - '
    ' + - '
    <%= user[0].initial %>
    '+ - '' + - '<% if (user.length>1) { %><% } %>' + - '
    '+ - '
  • ', - '<% }); %>'].join('')); - var templateUserList = _.template( - '
    ' + - this.textEditUser + - '
    ' + - ''); - $('#user-list').html(templateUserList()); - }, - - //Review - - initReviewingSettingsView: function () { - var me = this; - - var trackChanges = typeof (this.appConfig.customization) == 'object' ? this.appConfig.customization.trackChanges : undefined; - $('#settings-review input:checkbox').attr('checked', this.appConfig.isReviewOnly || trackChanges===true || (trackChanges!==false) && Common.localStorage.getBool("de-mobile-track-changes-" + (_fileKey || ''))); - $('#settings-review input:checkbox').single('change', _.bind(me.onTrackChanges, me)); - $('#settings-accept-all').single('click', _.bind(me.onAcceptAllClick, me)); - $('#settings-reject-all').single('click', _.bind(me.onRejectAllClick, me)); - if(this.appConfig.isReviewOnly || displayMode == "final" || displayMode == "original" ) { - $('#settings-accept-all').addClass('disabled'); - $('#settings-reject-all').addClass('disabled'); - $('#settings-review').addClass('disabled'); - } else { - $('#settings-accept-all').removeClass('disabled'); - $('#settings-reject-all').removeClass('disabled'); - $('#settings-review').removeClass('disabled'); - } - if (!this.appConfig.canReview) { - $('#settings-review').hide(); - $('#settings-accept-all').hide(); - $('#settings-reject-all').hide(); - } - if (this.appConfig.canUseReviewPermissions) { - $('#settings-accept-all').hide(); - $('#settings-reject-all').hide(); - } - if (this.appConfig.isRestrictedEdit) { - $('#display-mode-settings').hide(); - } - }, - - onTrackChanges: function(e) { - var $checkbox = $(e.currentTarget), - state = $checkbox.is(':checked'); - if ( this.appConfig.isReviewOnly ) { - $checkbox.attr('checked', true); - } else { - this.api.asc_SetTrackRevisions(state); - var prefix = !!window.DE ? 'de' : !!window.PE ? 'pe' : 'sse'; - Common.localStorage.setItem(prefix + "-mobile-track-changes-" + (_fileKey || ''), state ? 1 : 0); - } - }, - - onAcceptAllClick: function() { - if (this.api) { - this.api.asc_AcceptAllChanges(); - } - }, - - onRejectAllClick: function() { - if (this.api) { - this.api.asc_RejectAllChanges(); - } - }, - - initDisplayMode: function() { - var me = this; - $('input:radio').single('change', _.bind(me.onReviewViewClick, me)); - var value = displayMode; - if (value == null || value === "markup") { - $('input[value="markup"]').attr('checked', true); - } else if (value === 'final') { - $('input[value="final"]').attr('checked', true); - } else if (value === 'original') { - $('input[value="original"]').attr('checked', true); - } - }, - - getDisplayMode: function() { - return displayMode; - }, - - setCanViewReview: function(config) { - canViewReview = config; - }, - - onReviewViewClick: function(event) { - var value = $(event.currentTarget).val(); - this.turnDisplayMode(value); - !this.appConfig.canReview && Common.localStorage.setItem("de-view-review-mode", value); - }, - - turnDisplayMode: function(value, suppressEvent) { - displayMode = value.toLocaleLowerCase(); - if (this.api) { - if (displayMode === 'final') - this.api.asc_BeginViewModeInReview(true); - - else if (displayMode === 'original') - this.api.asc_BeginViewModeInReview(false); - else - this.api.asc_EndViewModeInReview(); - } - !suppressEvent && this.initReviewingSettingsView(); - DE.getController('Toolbar').setDisplayMode(displayMode); - DE.getController('DocumentHolder').setDisplayMode(displayMode); - }, - - - initChange: function() { - var goto = false; - if(arrChangeReview.length == 0) { - $('#current-change').css('display','none'); - $('.accept-reject').find('a').addClass('disabled'); - $('#current-change').after(_.template('
    ' + this.textNoChanges + '
    ')); - } else { - if ($('#no-changes').length > 0) { - $('#no-changes').remove(); - } - var arr = { - date: arrChangeReview[0].date, - user: arrChangeReview[0].user, - color: arrChangeReview[0].usercolor.get_hex(), - text: arrChangeReview[0].changetext, - initials: this.getInitials(arrChangeReview[0].user) - }; - this.view.renderChangeReview(arr); - goto = arrChangeReview[0].goto; - } - if (goto) { - $('#btn-goto-change').show(); - } else { - $('#btn-goto-change').hide(); - } - $('#btn-prev-change').single('click', _.bind(this.onPrevChange, this)); - $('#btn-next-change').single('click', _.bind(this.onNextChange, this)); - $('#btn-accept-change').single('click', _.bind(this.onAcceptCurrentChange, this)); - $('#btn-reject-change').single('click', _.bind(this.onRejectCurrentChange, this)); - $('#btn-goto-change').single('click', _.bind(this.onGotoNextChange, this)); - - if(this.appConfig.isReviewOnly) { - $('#btn-accept-change').remove(); - $('#btn-reject-change').remove(); - if(arrChangeReview.length != 0 && arrChangeReview[0].editable) { - $('.accept-reject').html('' + this.textDelete + ''); - $('#btn-delete-change').single('click', _.bind(this.onDeleteChange, this)); - } - } else { - if(arrChangeReview.length != 0 && !arrChangeReview[0].editable) { - $('#btn-accept-change').addClass('disabled'); - $('#btn-reject-change').addClass('disabled'); - } - } - if(displayMode == "final" || displayMode == "original") { - $('#btn-accept-change').addClass('disabled'); - $('#btn-reject-change').addClass('disabled'); - $('#btn-prev-change').addClass('disabled'); - $('#btn-next-change').addClass('disabled'); - } - if (!this.appConfig.canReview) { - $('#btn-accept-change').addClass('disabled'); - $('#btn-reject-change').addClass('disabled'); - } - }, - - onPrevChange: function() { - this.api.asc_GetPrevRevisionsChange(); - }, - - onNextChange: function() { - this.api.asc_GetNextRevisionsChange(); - }, - - onAcceptCurrentChange: function() { - var me = this; - if (this.api) { - this.api.asc_AcceptChanges(dateChange[0]); - setTimeout(function () { - me.api.asc_GetNextRevisionsChange(); - }, 10); - } - }, - - onRejectCurrentChange: function() { - var me = this; - if (this.api) { - this.api.asc_RejectChanges(dateChange[0]); - setTimeout(function () { - me.api.asc_GetNextRevisionsChange(); - }, 10); - } - }, - - updateInfoChange: function() { - if($("[data-page=change-view]").length > 0) { - if (arrChangeReview.length == 0) { - $('#current-change #date-change').empty(); - $('#current-change #user-name').empty(); - $('#current-change #text-change').empty(); - $('#current-change').hide(); - $('#btn-goto-change').hide(); - $('#btn-delete-change').hide(); - $('.accept-reject').find('a').addClass('disabled'); - $('#current-change').after(_.template('
    ' + this.textNoChanges + '
    ')); - } else { - $('#current-change').show(); - $('.accept-reject').find('a').removeClass('disabled'); - this.initChange(); - } - } - }, - - changeReview: function (data) { - if (data && data.length>0) { - var me = this, arr = []; - var c_paragraphLinerule = { - LINERULE_LEAST: 0, - LINERULE_AUTO: 1, - LINERULE_EXACT: 2 - }; - _.each(data, function (item) { - var changetext = '', proptext = '', - value = item.get_Value(), - movetype = item.get_MoveType(), - settings = false; - switch (item.get_Type()) { - case Asc.c_oAscRevisionsChangeType.TextAdd: - changetext = (movetype==Asc.c_oAscRevisionsMove.NoMove) ? me.textInserted : me.textParaMoveTo; - if (typeof value == 'object') { - _.each(value, function (obj) { - if (typeof obj === 'string') - changetext += (' ' + Common.Utils.String.htmlEncode(obj)); - else { - switch (obj) { - case 0: - changetext += (' <' + me.textImage + '>'); - break; - case 1: - changetext += (' <' + me.textShape + '>'); - break; - case 2: - changetext += (' <' + me.textChart + '>'); - break; - case 3: - changetext += (' <' + me.textEquation + '>'); - break; - } - } - }) - } else if (typeof value === 'string') { - changetext += (' ' + Common.Utils.String.htmlEncode(value)); - } - break; - case Asc.c_oAscRevisionsChangeType.TextRem: - changetext = (movetype==Asc.c_oAscRevisionsMove.NoMove) ? me.textDeleted : (item.is_MovedDown() ? me.textParaMoveFromDown : me.textParaMoveFromUp); - if (typeof value == 'object') { - _.each(value, function (obj) { - if (typeof obj === 'string') - changetext += (' ' + Common.Utils.String.htmlEncode(obj)); - else { - switch (obj) { - case 0: - changetext += (' <' + me.textImage + '>'); - break; - case 1: - changetext += (' <' + me.textShape + '>'); - break; - case 2: - changetext += (' <' + me.textChart + '>'); - break; - case 3: - changetext += (' <' + me.textEquation + '>'); - break; - } - } - }) - } else if (typeof value === 'string') { - changetext += (' ' + Common.Utils.String.htmlEncode(value)); - } - break; - case Asc.c_oAscRevisionsChangeType.ParaAdd: - changetext = me.textParaInserted; - break; - case Asc.c_oAscRevisionsChangeType.ParaRem: - changetext = me.textParaDeleted; - break; - case Asc.c_oAscRevisionsChangeType.TextPr: - changetext = '' + me.textFormatted; - if (value.Get_Bold() !== undefined) - proptext += ((value.Get_Bold() ? '' : me.textNot) + me.textBold + ', '); - if (value.Get_Italic() !== undefined) - proptext += ((value.Get_Italic() ? '' : me.textNot) + me.textItalic + ', '); - if (value.Get_Underline() !== undefined) - proptext += ((value.Get_Underline() ? '' : me.textNot) + me.textUnderline + ', '); - if (value.Get_Strikeout() !== undefined) - proptext += ((value.Get_Strikeout() ? '' : me.textNot) + me.textStrikeout + ', '); - if (value.Get_DStrikeout() !== undefined) - proptext += ((value.Get_DStrikeout() ? '' : me.textNot) + me.textDStrikeout + ', '); - if (value.Get_Caps() !== undefined) - proptext += ((value.Get_Caps() ? '' : me.textNot) + me.textCaps + ', '); - if (value.Get_SmallCaps() !== undefined) - proptext += ((value.Get_SmallCaps() ? '' : me.textNot) + me.textSmallCaps + ', '); - if (value.Get_VertAlign() !== undefined) - proptext += (((value.Get_VertAlign() == 1) ? me.textSuperScript : ((value.Get_VertAlign() == 2) ? me.textSubScript : me.textBaseline)) + ', '); - if (value.Get_Color() !== undefined) - proptext += (me.textColor + ', '); - if (value.Get_Highlight() !== undefined) - proptext += (me.textHighlight + ', '); - if (value.Get_Shd() !== undefined) - proptext += (me.textShd + ', '); - if (value.Get_FontFamily() !== undefined) - proptext += (value.Get_FontFamily() + ', '); - if (value.Get_FontSize() !== undefined) - proptext += (value.Get_FontSize() + ', '); - if (value.Get_Spacing() !== undefined) - proptext += (me.textSpacing + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_Spacing()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); - if (value.Get_Position() !== undefined) - proptext += (me.textPosition + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_Position()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); - if (value.Get_Lang() !== undefined) - proptext += (Common.util.LanguageInfo.getLocalLanguageName(value.Get_Lang())[1] + ', '); - - if (!_.isEmpty(proptext)) { - changetext += ': '; - proptext = proptext.substring(0, proptext.length - 2); - } - changetext += ''; - changetext += proptext; - break; - case Asc.c_oAscRevisionsChangeType.ParaPr: - changetext = '' + me.textParaFormatted; - if (value.Get_ContextualSpacing()) - proptext += ((value.Get_ContextualSpacing() ? me.textContextual : me.textNoContextual) + ', '); - if (value.Get_IndLeft() !== undefined) - proptext += (me.textIndentLeft + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_IndLeft()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); - if (value.Get_IndRight() !== undefined) - proptext += (me.textIndentRight + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_IndRight()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); - if (value.Get_IndFirstLine() !== undefined) - proptext += (me.textFirstLine + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_IndFirstLine()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); - if (value.Get_Jc() !== undefined) { - switch (value.Get_Jc()) { - case 0: - proptext += (me.textRight + ', '); - break; - case 1: - proptext += (me.textLeft + ', '); - break; - case 2: - proptext += (me.textCenter + ', '); - break; - case 3: - proptext += (me.textJustify + ', '); - break; - - } - } - if (value.Get_KeepLines() !== undefined) - proptext += ((value.Get_KeepLines() ? me.textKeepLines : me.textNoKeepLines) + ', '); - if (value.Get_KeepNext()) - proptext += ((value.Get_KeepNext() ? me.textKeepNext : me.textNoKeepNext) + ', '); - if (value.Get_PageBreakBefore()) - proptext += ((value.Get_PageBreakBefore() ? me.textBreakBefore : me.textNoBreakBefore) + ', '); - if (value.Get_SpacingLineRule() !== undefined && value.Get_SpacingLine() !== undefined) { - proptext += me.textLineSpacing; - proptext += (((value.Get_SpacingLineRule() == c_paragraphLinerule.LINERULE_LEAST) ? me.textAtLeast : ((value.Get_SpacingLineRule() == c_paragraphLinerule.LINERULE_AUTO) ? me.textMultiple : me.textExact)) + ' '); - proptext += (((value.Get_SpacingLineRule() == c_paragraphLinerule.LINERULE_AUTO) ? value.Get_SpacingLine() : Common.Utils.Metric.fnRecalcFromMM(value.Get_SpacingLine()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName()) + ', '); - } - if (value.Get_SpacingBeforeAutoSpacing()) - proptext += (me.textSpacingBefore + ' ' + me.textAuto + ', '); - else if (value.Get_SpacingBefore() !== undefined) - proptext += (me.textSpacingBefore + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_SpacingBefore()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); - if (value.Get_SpacingAfterAutoSpacing()) - proptext += (me.textSpacingAfter + ' ' + me.textAuto + ', '); - else if (value.Get_SpacingAfter() !== undefined) - proptext += (me.textSpacingAfter + ' ' + Common.Utils.Metric.fnRecalcFromMM(value.Get_SpacingAfter()).toFixed(2) + ' ' + Common.Utils.Metric.getCurrentMetricName() + ', '); - if (value.Get_WidowControl()) - proptext += ((value.Get_WidowControl() ? me.textWidow : me.textNoWidow) + ', '); - if (value.Get_Tabs() !== undefined) - proptext += (me.textTabs + ', '); - if (value.Get_NumPr() !== undefined) - proptext += (me.textNum + ', '); - if (value.Get_PStyle() !== undefined) { - var style = me.api.asc_GetStyleNameById(value.Get_PStyle()); - if (!_.isEmpty(style)) proptext += (style + ', '); - } - - if (!_.isEmpty(proptext)) { - changetext += ': '; - proptext = proptext.substring(0, proptext.length - 2); - } - changetext += ''; - changetext += proptext; - break; - case Asc.c_oAscRevisionsChangeType.TablePr: - changetext = me.textTableChanged; - break; - case Asc.c_oAscRevisionsChangeType.RowsAdd: - changetext = me.textTableRowsAdd; - break; - case Asc.c_oAscRevisionsChangeType.RowsRem: - changetext = me.textTableRowsDel; - break; - - } - var date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime()), - user = item.get_UserName(), - userColor = item.get_UserColor(), - goto = (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom); - date = me.dateToLocaleTimeString(date); - var editable = me.appConfig.isReviewOnly && (item.get_UserId() == _userId) || !me.appConfig.isReviewOnly && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName())); - arr.push({date: date, user: user, usercolor: userColor, changetext: changetext, goto: goto, editable: editable}); - }); - arrChangeReview = arr; - dateChange = data; - } else { - arrChangeReview = []; - dateChange = []; - } - this.updateInfoChange(); - }, - - dateToLocaleTimeString: function (date) { - function format(date) { - var strTime, - hours = date.getHours(), - minutes = date.getMinutes(), - ampm = hours >= 12 ? 'pm' : 'am'; - - hours = hours % 12; - hours = hours ? hours : 12; // the hour '0' should be '12' - minutes = minutes < 10 ? '0'+minutes : minutes; - strTime = hours + ':' + minutes + ' ' + ampm; - - return strTime; - } - - // MM/dd/yyyy hh:mm AM - return (date.getMonth() + 1) + '/' + (date.getDate()) + '/' + date.getFullYear() + ' ' + format(date); - }, - - onDeleteChange: function() { - if (this.api) { - this.api.asc_RejectChanges(dateChange[0]); - } - }, - - onGotoNextChange: function() { - if (this.api) { - this.api.asc_FollowRevisionMove(dateChange[0]); - } - }, - - //Comments - getCurrentUser: function () { - var me = this; - _.each(editUsers, function(item){ - if (item.asc_getIdOriginal() === _userId) { - me.currentUser = item; - } - }); - return me.currentUser; - }, - - getCommentInfo: function () { - this.getCurrentUser(); - if (this.currentUser) { - var date = new Date(); - var comment = { - time: date.getTime(), - date: this.dateToLocaleTimeString(date), - userid: _userId, - username: this.currentUser.asc_getUserName(), - usercolor: this.currentUser.asc_getColor(), - userInitials: this.getInitials(this.currentUser.asc_getUserName()) - }; - return comment; - } - }, - - getInitials: function(name) { - var fio = AscCommon.UserInfoParser.getParsedName(name).split(' '); - var initials = fio[0].substring(0, 1).toUpperCase(); - for (var i=fio.length-1; i>0; i--) { - if (fio[i][0]!=='(' && fio[i][0]!==')') { - initials += fio[i].substring(0, 1).toUpperCase(); - break; - } - } - return initials; - }, - - findComment: function(uid) { - var comment; - if (this.groupCollectionFilter.length !== 0) { - comment = this.findCommentInGroup(uid); - } else if (this.collectionComments.length !== 0) { - comment = _.findWhere(this.collectionComments, {uid: uid}); - } - return comment; - }, - - findVisibleComment: function(uid) { - var comment; - if (this.groupCollectionFilter.length !== 0) { - comment = this.findVisibleCommentInGroup(uid); - } else if (this.collectionComments.length !== 0) { - comment = _.findWhere(this.collectionComments, {uid: uid, hide: false}); - } - return comment; - }, - - apiShowComments: function(uid) { - var comments, - me = this; - me.showComments = []; - if (this.groupCollectionFilter.length !== 0) { - comments = this.groupCollectionFilter; - _.each(uid, function (id) { - var comment = me.findCommentInGroup(uid); - if (comment) { - me.showComments.push(comment); - } - }); - } else if (this.collectionComments.length !== 0) { - comments = this.collectionComments; - _.each(uid, function (id) { - var comment = _.findWhere(comments, {uid: id}); - if (comment) { - me.showComments.push(comment); - } - }); - } - if ($('.container-view-comment').length > 0) { - me.indexCurrentComment = 0; - me.updateViewComment(); - } - }, - - apiHideComments: function() { - if ($('.container-view-comment').length > 0) { - uiApp.closeModal(); - $('.container-view-comment').remove(); - } - }, - - disabledViewComments: function(disabled) { - if ($('.container-view-comment').length > 0) { - if (disabled) { - $('.comment-resolve, .comment-menu, .add-reply, .reply-menu').addClass('disabled'); - if (!$('.prev-comment').hasClass('disabled')) { - $('.prev-comment').addClass('disabled'); - } - if (!$('.next-comment').hasClass('disabled')) { - $('.next-comment').addClass('disabled'); - } - } else { - $('.comment-resolve, .comment-menu, .add-reply, .reply-menu').removeClass('disabled'); - if (this.showComments && this.showComments.length > 1) { - $('.prev-comment, .next-comment').removeClass('disabled'); - } - } - } - }, - - updateViewComment: function() { - this.view.renderViewComments(this.showComments, this.indexCurrentComment); - $('.comment-menu').single('click', _.buffered(this.initMenuComments, 100, this)); - $('.reply-menu').single('click', _.buffered(this.initReplyMenu, 100, this)); - $('.comment-resolve').single('click', _.bind(this.onClickResolveComment, this, false)); - if (this.showComments && this.showComments.length === 1) { - $('.prev-comment, .next-comment').addClass('disabled'); - } - }, - - showCommentModal: function() { - var me = this, - appPrefix = !!window.DE ? DE : !!window.PE ? PE : SSE, - mainView = appPrefix.getController('Editor').getView('Editor').f7View; - - me.indexCurrentComment = 0; - - uiApp.closeModal(); - - if (Common.SharedSettings.get('phone')) { - me.modalViewComment = $$(uiApp.pickerModal( - '
    ' + - '
    ' + - '
    ' + - '
    ' + - me.view.getTemplateContainerViewComments() + - '
    ' - )).on('close', function (e) { - mainView.showNavbar(); - }); - mainView.hideNavbar(); - } else { - if (!me.openModal) { - me.modalViewComment = uiApp.popover( - '
    ' + - '
    ' + - me.view.getTemplateContainerViewComments() + - '
    ' + - '
    ', - $$('#toolbar-collaboration') - ); - this.picker = $$(me.modalViewComment); - var $overlay = $('.modal-overlay'); - me.openModal = true; - $$(this.picker).on('opened', function () { - $overlay.on('removeClass', function () { - if (!$overlay.hasClass('modal-overlay-visible')) { - $overlay.addClass('modal-overlay-visible') - } - }); - }).on('close', function () { - $overlay.off('removeClass'); - $overlay.removeClass('modal-overlay-visible'); - $('.popover').remove(); - me.openModal = false; - }); - } - } - me.getView('Common.Views.Collaboration').renderViewComments(me.showComments, me.indexCurrentComment); - $('.prev-comment').single('click', _.bind(me.onViewPrevComment, me)); - $('.next-comment').single('click', _.bind(me.onViewNextComment, me)); - $('.comment-menu').single('click', _.buffered(me.initMenuComments, 100, me)); - $('.add-reply').single('click', _.bind(me.onClickAddReply, me, false)); - $('.reply-menu').single('click', _.buffered(me.initReplyMenu, 100, me)); - $('.comment-resolve').single('click', _.bind(me.onClickResolveComment, me, false)); - - if (me.showComments && me.showComments.length === 1) { - $('.prev-comment, .next-comment').addClass('disabled'); - } - - appPrefix.getController('Toolbar').getView('Toolbar').hideSearch(); - - //swipe modal window - if ($('.swipe-container').length > 0) { - me.swipeFull = false; - var $swipeContainer = $('.swipe-container'); - $swipeContainer.single('touchstart', _.bind(function (e) { - var touchobj = e.changedTouches[0]; - me.swipeStart = parseInt(touchobj.clientY); - me.swipeChange = parseInt(touchobj.clientY); - me.swipeHeight = parseInt($('.container-view-comment').css('height')); - e.preventDefault(); - }, me)); - $swipeContainer.single('touchmove', _.bind(function (e) { - var touchobj = e.changedTouches[0]; - var dist = parseInt(touchobj.clientY) - me.swipeStart; - var newHeight; - if (dist < 0) { - newHeight = '100%'; - me.swipeFull = true; - me.closeCommentPicker = false; - if (window.SSE) { - if ($('.container-view-comment').hasClass('onHide')) { - $('.container-view-comment').removeClass('onHide'); - } - } else { - $('.container-view-comment').css('opacity', '1'); - } - } else if (dist < 100) { - newHeight = '50%'; - me.swipeFull = false; - me.closeCommentPicker = false; - if (window.SSE) { - if ($('.container-view-comment').hasClass('onHide')) { - $('.container-view-comment').removeClass('onHide'); - } - } else { - $('.container-view-comment').css('opacity', '1'); - } - } else { - me.closeCommentPicker = true; - if (window.SSE) { - if (!$('.container-view-comment').hasClass('onHide')) { - $('.container-view-comment').addClass('onHide'); - } - } else { - $('.container-view-comment').css('opacity', '0.6'); - } - } - $('.container-view-comment').css('height', newHeight); - me.swipeHeight = newHeight; - e.preventDefault(); - }, me)); - $swipeContainer.single('touchend', _.bind(function (e) { - var touchobj = e.changedTouches[0]; - var swipeEnd = parseInt(touchobj.clientY); - var dist = swipeEnd - me.swipeStart; - if (me.closeCommentPicker) { - uiApp.closeModal(); - me.modalViewComment.remove(); - } else if (me.swipeFull) { - if (dist > 20) { - $('.container-view-comment').css('height', '50%'); - } - } - me.swipeHeight = undefined; - me.swipeChange = undefined; - me.closeCommentPicker = undefined; - }, me)); - } - }, - - onViewPrevComment: function() { - if (this.showComments && this.showComments.length > 0) { - for (var i=0; i 0) { - for (var i=0; i 0) { - if (phone) { - var colorUser = me.currentUser.asc_getColor(), - name = me.currentUser.asc_getUserName(), - initialUser = me.getInitials(name); - var templatePopup = me.getView('Common.Views.Collaboration').getTemplateAddReplyPopup(name, colorUser, initialUser, date); - me.addReplyView = uiApp.popup( - templatePopup - ); - $('.popup').css('z-index', '20000'); - } else { - me.disabledViewComments(true); - $('.container-view-comment .toolbar').find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'none'); - var template = _.template('' + me.textDone + ''); - $('.container-view-comment .button-right').append(template); - template = _.template('' + me.textCancel + ''); - $('.container-view-comment .button-left').append(template); - template = _.template('
    '); - $('.page-view-comments .page-content').append(template); - } - } else if ($('.container-collaboration').length > 0) { - me.getView('Common.Views.Collaboration').showPage('#comments-add-reply-view', false); - var name = me.currentUser.asc_getUserName(), - color = me.currentUser.asc_getColor(); - me.getView('Common.Views.Collaboration').renderAddReply(name, color, me.getInitials(name), date); - } - _.defer(function () { - var $textarea = $('.reply-textarea')[0]; - var $btnAddReply = $('#add-new-reply'); - $textarea.focus(); - $btnAddReply.addClass('disabled'); - $textarea.oninput = function () { - if ($textarea.value.length < 1) { - if (!$btnAddReply.hasClass('disabled')) - $btnAddReply.addClass('disabled'); - } else { - if ($btnAddReply.hasClass('disabled')) { - $btnAddReply.removeClass('disabled'); - } - } - }; - }); - $('#add-new-reply').single('click', _.bind(me.onDoneAddNewReply, me, comment.uid)); - $('.cancel-reply').single('click', _.bind(me.onCancelAddNewReply, me)); - } - }, - - onDoneAddNewReply: function(uid) { - var phone = Common.SharedSettings.get('phone'); - var reply = $('.reply-textarea')[0].value.trim(); - if ($('.container-view-comment').length > 0) { - var $viewComment = $('.container-view-comment'); - if (reply && reply.length > 0) { - this.addReply && this.addReply(uid, reply, _userId); - if (!phone) { - $viewComment.find('a#add-new-reply, a.cancel-reply').remove(); - $viewComment.find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'flex'); - if ($('.block-reply').length > 0) { - $('.block-reply').remove(); - } - } else { - uiApp.closeModal($$(this.addReplyView)); - } - this.disabledViewComments(false); - } - } else if ($('.container-collaboration').length > 0) { - this.addReply && this.addReply(uid, reply, _userId); - rootView.router.back(); - } - }, - - onCancelAddNewReply: function() { - var $viewComment = $('.container-view-comment'); - if ($viewComment.find('.block-reply').length > 0) { - $viewComment.find('.block-reply').remove(); - } - $viewComment.find('a#add-new-reply, a.cancel-reply').remove(); - $viewComment.find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'flex'); - this.disabledViewComments(false); - }, - - onAddNewComment: function() { - }, - - initMenuComments: function(e) { - if ($('.actions-modal').length < 1) { - var $comment = $(e.currentTarget).closest('.comment'); - var idComment = $comment.data('uid'); - if (_.isNumber(idComment)) { - idComment = idComment.toString(); - } - var comment = this.findComment(idComment); - if ($('.actions-modal').length === 0 && comment) { - var me = this; - _.delay(function () { - var _menuItems = []; - comment.editable && _menuItems.push({ - caption: me.textEdit, - event: 'edit' - }); - if (comment.editable) { - if (!comment.resolved) { - _menuItems.push({ - caption: me.textResolve, - event: 'resolve' - }); - } else { - _menuItems.push({ - caption: me.textReopen, - event: 'resolve' - }); - } - } - if ($('.container-collaboration').length > 0) { - _menuItems.push({ - caption: me.textAddReply, - event: 'addreply' - }); - } - comment.removable && _menuItems.push({ - caption: me.textDeleteComment, - event: 'delete', - color: 'red' - }); - _.each(_menuItems, function (item) { - item.text = item.caption; - item.onClick = function () { - me.onCommentMenuClick(item.event, idComment) - } - }); - - me.menuComments = uiApp.actions([_menuItems, [ - { - text: me.textCancel, - bold: true, - onClick: function () { - me.onCommentMenuClick(); - } - } - ]]); - $$(me.menuComments).on('close', function () { - me.disabledViewComments(false); - }); - }, 100); - } - this.disabledViewComments(true); - } - }, - - initReplyMenu: function(event) { - if ($('.actions-modal').length < 1) { - var me = this; - var ind = $(event.currentTarget).parent().parent().data('ind'); - var idComment = $(event.currentTarget).closest('.comment').data('uid'); - if (_.isNumber(idComment)) { - idComment = idComment.toString(); - } - var comment = this.findComment(idComment); - var reply = comment && comment.replys ? comment.replys[ind] : null; - reply && _.delay(function () { - var _menuItems = []; - reply.editable && _menuItems.push({ - caption: me.textEdit, - event: 'editreply' - }); - reply.removable && _menuItems.push({ - caption: me.textDeleteReply, - event: 'deletereply', - color: 'red' - }); - _.each(_menuItems, function (item) { - item.text = item.caption; - item.onClick = function () { - me.onCommentMenuClick(item.event, idComment, ind); - } - }); - me.menuReply = uiApp.actions([_menuItems, [ - { - text: me.textCancel, - bold: true, - onClick: function () { - me.onCommentMenuClick(); - } - } - ]]); - $$(me.menuReply).on('close', function () { - me.disabledViewComments(false); - }); - }, 100); - this.disabledViewComments(true); - } - }, - - onCommentMenuClick: function(action, idComment, indReply) { - var me = this; - function addOverlay () { - if (!Common.SharedSettings.get('phone')) { - var $overlay = $('.modal-overlay'); - if (!$overlay.hasClass('modal-overlay-visible')) { - $overlay.addClass('modal-overlay-visible') - } - } - } - switch (action) { - case 'edit': - addOverlay(); - me.showEditComment(idComment); - break; - case 'resolve': - addOverlay(); - me.onClickResolveComment(idComment); - me.disabledViewComments(false); - break; - case 'delete': - addOverlay(); - $$(uiApp.modal({ - title: this.textDeleteComment, - text: this.textMessageDeleteComment, - buttons: [ - { - text: this.textCancel - }, - { - text: this.textYes, - onClick: function () { - me.onDeleteComment && me.onDeleteComment(idComment); - } - }] - })).on('close', function () { - addOverlay(); - }); - me.disabledViewComments(false); - break; - case 'editreply': - addOverlay(); - me.showEditReply(idComment, indReply); - break; - case 'deletereply': - addOverlay(); - $$(uiApp.modal({ - title: this.textDeleteReply, - text: this.textMessageDeleteReply, - buttons: [ - { - text: this.textCancel - }, - { - text: this.textYes, - onClick: function () { - me.onDeleteReply && me.onDeleteReply(idComment, indReply); - } - }] - })).on('close', function () { - addOverlay(); - }); - me.disabledViewComments(false); - break; - case 'addreply': - addOverlay(); - me.onClickAddReply(idComment); - default: - addOverlay(); - me.disabledViewComments(false); - break; - } - }, - - showEditComment: function(idComment) { - var me = this; - if (idComment) { - var comment = this.findComment(idComment); - if ($('.container-view-comment').length > 0) { - if (Common.SharedSettings.get('phone')) { - me.editView = uiApp.popup( - me.view.getTemplateEditCommentPopup(comment) - ); - $$(me.editView).on('close', function(){ - me.disabledViewComments(false); - }); - $('.popup').css('z-index', '20000'); - _.delay(function () { - var $textarea = $('.comment-textarea')[0]; - $textarea.focus(); - $textarea.selectionStart = $textarea.value.length; - }, 100); - } else { - me.disabledViewComments(true); - if ($('.comment-textarea').length === 0) { - var $viewComment = $('.container-view-comment'); - var oldComment = $viewComment.find('.comment-text pre').text(); - $viewComment.find('.comment-text pre').css('display', 'none'); - var template = _.template(''); - $viewComment.find('.comment-text').append(template); - $viewComment.find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'none'); - template = _.template('' + me.textDone + ''); - $viewComment.find('.button-right').append(template); - template = _.template('' + me.textCancel + ''); - $viewComment.find('.button-left').append(template); - } - } - } else if ($('.container-collaboration').length > 0) { - this.getView('Common.Views.Collaboration').showPage('#comments-edit-view', false); - this.getView('Common.Views.Collaboration').renderEditComment(comment); - } - _.defer(function () { - var $textarea = $('.comment-textarea')[0]; - $textarea.focus(); - $textarea.selectionStart = $textarea.value.length; - }); - $('#edit-comment').single('click', _.bind(me.onEditComment, me, comment)); - $('.cancel-edit-comment').single('click', _.bind(me.onCancelEditComment, me)); - } - }, - - onEditComment: function(comment) { - var value = $('#comment-text')[0].value.trim(); - if (value && value.length > 0) { - this.getCurrentUser(); - if (!_.isUndefined(this.onChangeComment)) { - comment.comment = value; - comment.userid = this.currentUser.asc_getIdOriginal(); - comment.username = this.currentUser.asc_getUserName(); - this.onChangeComment(comment); - } - if ($('.container-view-comment').length > 0) { - if (Common.SharedSettings.get('phone')) { - uiApp.closeModal($$(this.editView)); - } else { - var $viewComment = $('.container-view-comment'); - $viewComment.find('a.done-edit-comment, a.cancel-edit-comment').remove(); - $viewComment.find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'flex'); - if ($viewComment.find('.comment-textarea').length > 0) { - $viewComment.find('.comment-textarea').remove(); - $viewComment.find('.comment-text pre').css('display', 'block'); - } - } - this.disabledViewComments(false); - } else if ($('.container-collaboration').length > 0) { - rootView.router.back(); - } - } - }, - - onCancelEditComment: function() { - var $viewComment = $('.container-view-comment'); - $viewComment.find('a.done-edit-comment, a.cancel-edit-comment, .comment-textarea').remove(); - $viewComment.find('.comment-text pre').css('display', 'block'); - $viewComment.find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'flex'); - this.disabledViewComments(false); - }, - - showEditReply: function(idComment, indReply) { - var me = this; - var comment = me.findComment(idComment); - if (comment) { - var replies, - reply; - replies = comment.replys; - reply = replies[indReply]; - if (reply) { - if ($('.container-view-comment').length > 0) { - if (Common.SharedSettings.get('phone')) { - me.editReplyView = uiApp.popup( - me.view.getTemplateEditReplyPopup(reply) - ); - $$(me.editReplyView).on('close', function () { - me.disabledViewComments(false); - }); - $('.popup').css('z-index', '20000'); - } else { - me.disabledViewComments(true); - var $reply = $('.reply-item[data-ind=' + indReply + ']'); - var $viewComment = $('.container-view-comment'); - $reply.find('.reply-text').css('display', 'none'); - $viewComment.find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'none'); - var template = _.template(''); - $reply.append(template); - template = _.template('' + me.textDone + ''); - $viewComment.find('.button-right').append(template); - template = _.template('' + me.textCancel + ''); - $viewComment.find('.button-left').append(template); - } - } else if ($('.container-collaboration').length > 0) { - me.getView('Common.Views.Collaboration').showPage('#comments-edit-reply-view', false); - me.getView('Common.Views.Collaboration').renderEditReply(reply); - } - _.defer(function () { - var $textarea = $('.edit-reply-textarea')[0]; - $textarea.focus(); - $textarea.selectionStart = $textarea.value.length; - }); - $('#edit-reply').single('click', _.bind(me.onEditReply, me, comment, indReply)); - $('.cancel-reply').single('click', _.bind(me.onCancelEditReply, me, indReply)); - } - } - }, - - onEditReply: function(comment, indReply) { - var value = $('.edit-reply-textarea')[0].value.trim(); - if (value && value.length > 0) { - this.getCurrentUser(); - if ($('.container-view-comment').length > 0) { - if (!_.isUndefined(this.onChangeComment)) { - comment.replys[indReply].reply = value; - comment.replys[indReply].userid = this.currentUser.asc_getIdOriginal(); - comment.replys[indReply].username = this.currentUser.asc_getUserName(); - this.onChangeComment(comment); - } - if (Common.SharedSettings.get('phone')) { - uiApp.closeModal($$(this.editReplyView)); - } else { - var $viewComment = $('.container-view-comment'); - $viewComment.find('a#edit-reply, a.cancel-reply').remove(); - $viewComment.find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'flex'); - if ($viewComment.find('.edit-reply-textarea').length > 0) { - $viewComment.find('.edit-reply-textarea').remove(); - $viewComment.find('.reply-text').css('display', 'block'); - } - } - } else { - if (!_.isUndefined(this.onChangeComment)) { - comment.replys[indReply].reply = value; - comment.replys[indReply].userid = this.currentUser.asc_getIdOriginal(); - comment.replys[indReply].username = this.currentUser.asc_getUserName(); - this.onChangeComment(comment); - } - rootView.router.back(); - } - this.disabledViewComments(false); - } - }, - - onCancelEditReply: function(indReply) { - var $viewComment = $('.container-view-comment'), - $reply = $('.reply-item[data-ind=' + indReply + ']'); - $viewComment.find('a#edit-reply, a.cancel-reply, .edit-reply-textarea').remove(); - $reply.find('.reply-text').css('display', 'block'); - $viewComment.find('a.prev-comment, a.next-comment, a.add-reply').css('display', 'flex'); - this.disabledViewComments(false); - }, - - onClickResolveComment: function(uid, e) { - var idComment; - if (!uid) { - var $comment = $(e.currentTarget).closest('.comment'); - idComment = $comment.data('uid'); - } else { - idComment = uid; - } - if (_.isNumber(idComment)) { - idComment = idComment.toString(); - } - var comment = this.findComment(idComment); - if (comment) { - this.resolveComment && this.resolveComment(comment.uid); - } - }, - - // utils - timeZoneOffsetInMs: (new Date()).getTimezoneOffset() * 60000, - utcDateToString: function (date) { - if (Object.prototype.toString.call(date) === '[object Date]') - return (date.getTime() - this.timeZoneOffsetInMs).toString(); - - return ''; - }, - ooDateToString: function (date) { - if (Object.prototype.toString.call(date) === '[object Date]') - return (date.getTime()).toString(); - - return ''; - }, - //end utils - - - groupCollectionComments: [], - collectionComments: [], - groupCollectionFilter: [], - filter: [], - - initComments: function() { - this.getView('Common.Views.Collaboration').renderComments((this.groupCollectionFilter.length !== 0) ? this.groupCollectionFilter : (this.collectionComments.length !== 0) ? this.collectionComments : false); - $('.comment-menu').single('click', _.buffered(this.initMenuComments, 100, this)); - $('.reply-menu').single('click', _.buffered(this.initReplyMenu, 100, this)); - $('.comment-resolve').single('click', _.bind(this.onClickResolveComment, this, false)); - $('.comment-quote').single('click', _.bind(this.onSelectComment, this)); - }, - - readSDKReplies: function (data) { - var i = 0, - replies = [], - date = null; - var repliesCount = data.asc_getRepliesCount(); - if (repliesCount) { - for (i = 0; i < repliesCount; ++i) { - date = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) : - ((data.asc_getReply(i).asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getReply(i).asc_getTime()))); - - var user = _.find(editUsers, function(item){ - return (item.asc_getIdOriginal()==data.asc_getReply(i).asc_getUserId()); - }); - var username = data.asc_getReply(i).asc_getUserName(); - replies.push({ - ind : i, - userid : data.asc_getReply(i).asc_getUserId(), - username : username, - usercolor : (user) ? user.asc_getColor() : null, - date : this.dateToLocaleTimeString(date), - reply : data.asc_getReply(i).asc_getText(), - time : date.getTime(), - userInitials : this.getInitials(username), - editable : (this.appConfig.canEditComments || (data.asc_getReply(i).asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canEditComment(username), - removable : (this.appConfig.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canDeleteComment(username) - }); - } - } - return replies; - }, - - readSDKComment: function(id, data) { - var date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) : - ((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime()))); - var user = _.find(editUsers, function(item){ - return (item.asc_getIdOriginal()==data.asc_getUserId()); - }); - var groupname = id.substr(0, id.lastIndexOf('_')+1).match(/^(doc|sheet[0-9_]+)_/); - var username = data.asc_getUserName(); - var comment = { - uid : id, - userid : data.asc_getUserId(), - username : username, - usercolor : (user) ? user.asc_getColor() : null, - date : this.dateToLocaleTimeString(date), - quote : data.asc_getQuoteText(), - comment : data.asc_getText(), - resolved : data.asc_getSolved(), - unattached : !_.isUndefined(data.asc_getDocumentFlag) ? data.asc_getDocumentFlag() : false, - time : date.getTime(), - replys : [], - groupName : (groupname && groupname.length>1) ? groupname[1] : null, - userInitials : this.getInitials(username), - editable : (this.appConfig.canEditComments || (data.asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canEditComment(username), - removable : (this.appConfig.canDeleteComments || (data.asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canDeleteComment(username), - hide : !AscCommon.UserInfoParser.canViewComment(username) - }; - if (comment) { - var replies = this.readSDKReplies(data); - if (replies.length) { - comment.replys = replies; - } - } - return comment; - }, - - onApiChangeCommentData: function(id, data) { - var me = this, - i = 0, - date = null, - replies = null, - repliesCount = 0, - dateReply = null, - comment = _.findWhere(me.collectionComments, {uid: id}) || this.findCommentInGroup(id); - - if (comment) { - - date = (data.asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getOnlyOfficeTime())) : - ((data.asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getTime()))); - - var user = _.find(editUsers, function(item){ - return (item.asc_getIdOriginal()==data.asc_getUserId()); - }); - comment.comment = data.asc_getText(); - comment.userid = data.asc_getUserId(); - comment.username = data.asc_getUserName(); - comment.usercolor = (user) ? user.asc_getColor() : null; - comment.resolved = data.asc_getSolved(); - comment.quote = data.asc_getQuoteText(); - comment.time = date.getTime(); - comment.date = me.dateToLocaleTimeString(date); - comment.editable = (me.appConfig.canEditComments || (data.asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canEditComment(data.asc_getUserName()); - comment.removable = (me.appConfig.canDeleteComments || (data.asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canDeleteComment(data.asc_getUserName()); - comment.hide = !AscCommon.UserInfoParser.canViewComment(data.asc_getUserName()); - - replies = _.clone(comment.replys); - - replies.length = 0; - - repliesCount = data.asc_getRepliesCount(); - for (i = 0; i < repliesCount; ++i) { - - dateReply = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(this.stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) : - ((data.asc_getReply(i).asc_getTime() == '') ? new Date() : new Date(this.stringUtcToLocalDate(data.asc_getReply(i).asc_getTime()))); - - user = _.find(editUsers, function(item){ - return (item.asc_getIdOriginal()==data.asc_getReply(i).asc_getUserId()); - }); - var username = data.asc_getReply(i).asc_getUserName(); - replies.push({ - ind : i, - userid : data.asc_getReply(i).asc_getUserId(), - username : username, - usercolor : (user) ? user.asc_getColor() : null, - date : me.dateToLocaleTimeString(dateReply), - reply : data.asc_getReply(i).asc_getText(), - time : dateReply.getTime(), - userInitials : me.getInitials(username), - editable : (me.appConfig.canEditComments || (data.asc_getReply(i).asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canEditComment(username), - removable : (me.appConfig.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canDeleteComment(username) - }); - } - comment.replys = replies; - if($('.page-comments').length > 0) { - this.initComments(); - } - - if (this.showComments && this.showComments.length > 0) { - var showComment = _.findWhere(this.showComments, {uid: id}); - if (showComment) { - showComment = comment; - } - } - if ($('.container-view-comment').length > 0) { - this.updateViewComment(); - } - } - }, - - onApiAddComment: function (id, data) { - var comment = this.readSDKComment(id, data); - if (comment) { - comment.groupName ? this.addCommentToGroupCollection(comment) : this.collectionComments.push(comment); - } - if($('.page-comments').length > 0) { - this.initComments(); - } - }, - - onApiAddComments: function (data) { - for (var i = 0; i < data.length; ++i) { - var comment = this.readSDKComment(data[i].asc_getId(), data[i]); - comment.groupName ? this.addCommentToGroupCollection(comment) : this.collectionComments.push(comment); - } - if($('.page-comments').length > 0) { - this.initComments(); - } - }, - - stringOOToLocalDate: function (date) { - if (typeof date === 'string') - return parseInt(date); - return 0; - }, - - stringUtcToLocalDate: function (date) { - if (typeof date === 'string') - return parseInt(date) + this.timeZoneOffsetInMs; - - return 0; - }, - - addCommentToGroupCollection: function (comment) { - var groupname = comment.groupName; - if (!this.groupCollectionComments[groupname]) - this.groupCollectionComments[groupname] = []; - this.groupCollectionComments[groupname].push(comment); - if (this.filter.indexOf(groupname) != -1) { - this.groupCollectionFilter.push(comment); - } - }, - - findCommentInGroup: function (id) { - for (var name in this.groupCollectionComments) { - var store = this.groupCollectionComments[name]; - var id = _.isArray(id) ? id[0] : id; - var model = _.findWhere(store, {uid: id}); - if (model) return model; - } - }, - - findVisibleCommentInGroup: function (id) { - for (var name in this.groupCollectionComments) { - var store = this.groupCollectionComments[name]; - var id = _.isArray(id) ? id[0] : id; - var model = _.findWhere(store, {uid: id, hide: false}); - if (model) return model; - } - }, - - onApiRemoveComment: function (id, silentUpdate) { - function remove (collection, key) { - if(collection instanceof Array) { - var index = collection.indexOf(key); - if(index != -1) { - collection.splice(index, 1); - } - } - } - if (this.collectionComments.length > 0) { - var comment = _.findWhere(this.collectionComments, {uid: id}); - if (comment) { - remove(this.collectionComments, comment); - } - } else { - for (var name in this.groupCollectionComments) { - var store = this.groupCollectionComments[name], - comment = _.findWhere(store, {uid: id}); - if (comment) { - remove(this.groupCollectionComments[name], comment); - if (this.filter.indexOf(name) != -1) { - remove(this.groupCollectionFilter, comment); - } - } - } - } - if(!silentUpdate && $('.page-comments').length > 0) { - this.initComments(); - } - - if (this.showComments && this.showComments.length > 0) { - var removeComment = _.findWhere(this.showComments, {uid: id}); - if (removeComment) { - this.showComments = _.without(this.showComments, removeComment); - } - } - }, - - onApiRemoveComments: function(data) { - for (var i = 0; i < data.length; i++) { - this.onApiRemoveComment(data[i], true); - } - }, - - onFilterChange: function (filter) { - if (filter) { - var me = this, - comments = []; - this.filter = filter; - filter.forEach(function(item){ - if (!me.groupCollectionComments[item]) - me.groupCollectionComments[item] = []; - comments = comments.concat(me.groupCollectionComments[item]); - }); - this.groupCollectionFilter = comments; - } - }, - - onSelectComment: function (e) { - var id = $(e.currentTarget).data('id'); - this.api.asc_selectComment(id); - }, - - - textInserted: 'Inserted:', - textDeleted: 'Deleted:', - textParaInserted: 'Paragraph Inserted ', - textParaDeleted: 'Paragraph Deleted ', - textFormatted: 'Formatted', - textParaFormatted: 'Paragraph Formatted', - textNot: 'Not ', - textBold: 'Bold', - textItalic: 'Italic', - textStrikeout: 'Strikeout', - textUnderline: 'Underline', - textColor: 'Font color', - textBaseline: 'Baseline', - textSuperScript: 'Superscript', - textSubScript: 'Subscript', - textHighlight: 'Highlight color', - textSpacing: 'Spacing', - textDStrikeout: 'Double strikeout', - textCaps: 'All caps', - textSmallCaps: 'Small caps', - textPosition: 'Position', - textShd: 'Background color', - textContextual: 'Don\'t add interval between paragraphs of the same style', - textNoContextual: 'Add interval between paragraphs of the same style', - textIndentLeft: 'Indent left', - textIndentRight: 'Indent right', - textFirstLine: 'First line', - textRight: 'Align right', - textLeft: 'Align left', - textCenter: 'Align center', - textJustify: 'Align justify', - textBreakBefore: 'Page break before', - textKeepNext: 'Keep with next', - textKeepLines: 'Keep lines together', - textNoBreakBefore: 'No page break before', - textNoKeepNext: 'Don\'t keep with next', - textNoKeepLines: 'Don\'t keep lines together', - textLineSpacing: 'Line Spacing: ', - textMultiple: 'multiple', - textAtLeast: 'at least', - textExact: 'exactly', - textSpacingBefore: 'Spacing before', - textSpacingAfter: 'Spacing after', - textAuto: 'auto', - textWidow: 'Widow control', - textNoWidow: 'No widow control', - textTabs: 'Change tabs', - textNum: 'Change numbering', - textEquation: 'Equation', - textImage: 'Image', - textChart: 'Chart', - textShape: 'Shape', - textTableChanged: 'Table Settings Changed', - textTableRowsAdd: 'Table Rows Added', - textTableRowsDel: 'Table Rows Deleted', - textParaMoveTo: 'Moved:', - textParaMoveFromUp: 'Moved Up:', - textParaMoveFromDown: 'Moved Down:', - textEditUser: 'Document is currently being edited by several users.', - textCancel: "Cancel", - textDone: "Done", - textAddReply: "Add Reply", - textEdit: 'Edit', - textResolve: 'Resolve', - textDeleteComment: 'Delete comment', - textDeleteReply: 'Delete reply', - textReopen: 'Reopen', - textMessageDeleteComment: 'Do you really want to delete this comment?', - textMessageDeleteReply: 'Do you really want to delete this reply?', - textYes: 'Yes', - textDelete: 'Delete', - textNoChanges: 'There are no changes.' - - } - })(), Common.Controllers.Collaboration || {})) -}); \ No newline at end of file