2016-04-01 13:17:09 +00:00
/ *
*
2018-03-01 12:16:38 +00:00
* ( c ) Copyright Ascensio System Limited 2010 - 2018
2016-04-01 13:17:09 +00:00
*
* 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 . 125 a - 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
*
2016-11-11 13:24:21 +00:00
* /
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
/ * *
* Main . js
* Document Editor
*
* Created by Alexander Yuzhin on 9 / 22 / 16
2018-03-01 12:16:38 +00:00
* Copyright ( c ) 2018 Ascensio System SIA . All rights reserved .
2016-11-11 13:24:21 +00:00
*
* /
define ( [
'core' ,
2016-12-05 11:12:35 +00:00
'jquery' ,
'underscore' ,
'backbone' ,
2016-11-11 13:24:21 +00:00
'irregularstack' ,
'common/main/lib/util/LocalStorage'
2016-12-05 11:12:35 +00:00
] , function ( core , $ , _ , Backbone ) {
2016-11-11 13:24:21 +00:00
'use strict' ;
DE . Controllers . Main = Backbone . Controller . extend ( _ . extend ( ( function ( ) {
var ApplyEditRights = - 255 ;
var LoadingDocument = - 256 ;
Common . localStorage . setId ( 'text' ) ;
Common . localStorage . setKeysFilter ( 'de-,asc.text' ) ;
Common . localStorage . sync ( ) ;
return {
models : [ ] ,
collections : [ ] ,
views : [ ] ,
initialize : function ( ) {
//
} ,
onLaunch : function ( ) {
var me = this ;
me . stackLongActions = new Common . IrregularStack ( {
strongCompare : function ( obj1 , obj2 ) { return obj1 . id === obj2 . id && obj1 . type === obj2 . type ; } ,
weakCompare : function ( obj1 , obj2 ) { return obj1 . type === obj2 . type ; }
} ) ;
this . _state = {
isDisconnected : false ,
usersCount : 1 ,
fastCoauth : true ,
lostEditingRights : false ,
licenseWarning : false
} ;
// Initialize viewport
// if (!Common.Utils.isBrowserSupported()){
// Common.Utils.showBrowserRestriction();
// Common.Gateway.reportError(undefined, this.unsupportedBrowserErrorText);
// return;
// }
var value = Common . localStorage . getItem ( "de-settings-fontrender" ) ;
2016-11-16 13:42:35 +00:00
if ( value === null ) {
2016-11-11 13:24:21 +00:00
window . devicePixelRatio > 1 ? value = '1' : '0' ;
2016-11-16 13:42:35 +00:00
}
2016-11-11 13:24:21 +00:00
// Initialize api
window [ "flat_desine" ] = true ;
2017-06-22 13:04:31 +00:00
var styleNames = [ 'Normal' , 'No Spacing' , 'Heading 1' , 'Heading 2' , 'Heading 3' , 'Heading 4' , 'Heading 5' ,
2018-03-07 11:54:22 +00:00
'Heading 6' , 'Heading 7' , 'Heading 8' , 'Heading 9' , 'Title' , 'Subtitle' , 'Quote' , 'Intense Quote' , 'List Paragraph' , 'footnote text' ] ,
2017-06-22 13:04:31 +00:00
translate = {
'Series' : this . txtSeries ,
'Diagram Title' : this . txtDiagramTitle ,
'X Axis' : this . txtXAxis ,
'Y Axis' : this . txtYAxis ,
2018-03-07 11:54:22 +00:00
'Your text here' : this . txtArt ,
'Header' : this . txtHeader ,
'Footer' : this . txtFooter
2017-06-22 13:04:31 +00:00
} ;
styleNames . forEach ( function ( item ) {
translate [ item ] = me [ 'txtStyle_' + item . replace ( / /g , '_' ) ] || item ;
} ) ;
2016-11-11 13:24:21 +00:00
me . api = new Asc . asc _docs _api ( {
'id-view' : 'editor_sdk' ,
2017-06-23 13:43:21 +00:00
'mobile' : true ,
2017-06-22 13:04:31 +00:00
'translate' : translate
2016-11-11 13:24:21 +00:00
} ) ;
2017-01-23 14:38:53 +00:00
// Localization uiApp params
uiApp . params . modalButtonOk = me . textOK ;
uiApp . params . modalButtonCancel = me . textCancel ;
uiApp . params . modalPreloaderTitle = me . textPreloader ;
uiApp . params . modalUsernamePlaceholder = me . textUsername ;
uiApp . params . modalPasswordPlaceholder = me . textPassword ;
uiApp . params . smartSelectBackText = me . textBack ;
uiApp . params . smartSelectPopupCloseText = me . textClose ;
uiApp . params . smartSelectPickerCloseText = me . textDone ;
uiApp . params . notificationCloseButtonText = me . textClose ;
2016-11-11 13:24:21 +00:00
if ( me . api ) {
switch ( value ) {
case '0' : me . api . SetFontRenderingMode ( 3 ) ; break ;
case '1' : me . api . SetFontRenderingMode ( 1 ) ; break ;
case '2' : me . api . SetFontRenderingMode ( 2 ) ; break ;
}
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
Common . Utils . Metric . setCurrentMetric ( 1 ) ; //pt
me . api . asc _registerCallback ( 'asc_onError' , _ . bind ( me . onError , me ) ) ;
me . api . asc _registerCallback ( 'asc_onDocumentContentReady' , _ . bind ( me . onDocumentContentReady , me ) ) ;
me . api . asc _registerCallback ( 'asc_onOpenDocumentProgress' , _ . bind ( me . onOpenDocument , me ) ) ;
me . api . asc _registerCallback ( 'asc_onDocumentUpdateVersion' , _ . bind ( me . onUpdateVersion , me ) ) ;
2017-04-11 11:05:56 +00:00
me . api . asc _registerCallback ( 'asc_onServerVersion' , _ . bind ( me . onServerVersion , me ) ) ;
2016-11-11 13:24:21 +00:00
me . api . asc _registerCallback ( 'asc_onAdvancedOptions' , _ . bind ( me . onAdvancedOptions , me ) ) ;
me . api . asc _registerCallback ( 'asc_onDocumentName' , _ . bind ( me . onDocumentName , me ) ) ;
me . api . asc _registerCallback ( 'asc_onPrintUrl' , _ . bind ( me . onPrintUrl , me ) ) ;
Common . NotificationCenter . on ( 'api:disconnect' , _ . bind ( me . onCoAuthoringDisconnect , me ) ) ;
Common . NotificationCenter . on ( 'goback' , _ . bind ( me . goBack , me ) ) ;
// Initialize descendants
_ . each ( me . getApplication ( ) . controllers , function ( controller ) {
if ( controller && _ . isFunction ( controller . setApi ) ) {
controller . setApi ( me . api ) ;
}
} ) ;
// Initialize api gateway
me . editorConfig = { } ;
me . appOptions = { } ;
me . plugins = undefined ;
Common . Gateway . on ( 'init' , _ . bind ( me . loadConfig , me ) ) ;
Common . Gateway . on ( 'showmessage' , _ . bind ( me . onExternalMessage , me ) ) ;
Common . Gateway . on ( 'opendocument' , _ . bind ( me . loadDocument , me ) ) ;
2017-09-20 11:32:18 +00:00
Common . Gateway . appReady ( ) ;
2016-11-11 13:24:21 +00:00
}
} ,
loadConfig : function ( data ) {
2016-11-16 13:42:35 +00:00
var me = this ;
me . editorConfig = $ . extend ( me . editorConfig , data . config ) ;
me . editorConfig . user =
2016-11-24 13:39:52 +00:00
me . appOptions . user = Common . Utils . fillUserInfo ( me . editorConfig . user , me . editorConfig . lang , me . textAnonymous ) ;
2016-11-16 13:42:35 +00:00
me . appOptions . isDesktopApp = me . editorConfig . targetApp == 'desktop' ;
me . appOptions . canCreateNew = ! _ . isEmpty ( me . editorConfig . createUrl ) && ! me . appOptions . isDesktopApp ;
2017-04-10 13:11:09 +00:00
me . appOptions . canOpenRecent = me . editorConfig . recent !== undefined && ! me . appOptions . isDesktopApp ;
2016-11-16 13:42:35 +00:00
me . appOptions . templates = me . editorConfig . templates ;
me . appOptions . recent = me . editorConfig . recent ;
me . appOptions . createUrl = me . editorConfig . createUrl ;
me . appOptions . lang = me . editorConfig . lang ;
me . appOptions . location = ( typeof ( me . editorConfig . location ) == 'string' ) ? me . editorConfig . location . toLowerCase ( ) : '' ;
me . appOptions . sharingSettingsUrl = me . editorConfig . sharingSettingsUrl ;
me . appOptions . fileChoiceUrl = me . editorConfig . fileChoiceUrl ;
me . appOptions . mergeFolderUrl = me . editorConfig . mergeFolderUrl ;
me . appOptions . canAnalytics = false ;
me . appOptions . customization = me . editorConfig . customization ;
me . appOptions . canBackToFolder = ( me . editorConfig . canBackToFolder !== false ) && ( typeof ( me . editorConfig . customization ) == 'object' )
&& ( typeof ( me . editorConfig . customization . goback ) == 'object' ) && ! _ . isEmpty ( me . editorConfig . customization . goback . url ) ;
2017-04-10 13:11:09 +00:00
me . appOptions . canBack = me . appOptions . canBackToFolder === true ;
2016-11-16 13:42:35 +00:00
me . appOptions . canPlugins = false ;
me . plugins = me . editorConfig . plugins ;
if ( me . editorConfig . lang )
me . api . asc _setLocale ( me . editorConfig . lang ) ;
2016-11-11 13:24:21 +00:00
// if (this.appOptions.location == 'us' || this.appOptions.location == 'ca')
// Common.Utils.Metric.setDefaultMetric(Common.Utils.Metric.c_MetricUnits.inch);
} ,
loadDocument : function ( data ) {
this . permissions = { } ;
this . document = data . doc ;
var docInfo = { } ;
if ( data . doc ) {
this . permissions = $ . extend ( this . permissions , data . doc . permissions ) ;
2017-10-23 12:19:07 +00:00
var _permissions = $ . extend ( { } , data . doc . permissions ) ,
_user = new Asc . asc _CUserInfo ( ) ;
2016-11-11 13:24:21 +00:00
_user . put _Id ( this . appOptions . user . id ) ;
_user . put _FullName ( this . appOptions . user . fullname ) ;
docInfo = new Asc . asc _CDocInfo ( ) ;
docInfo . put _Id ( data . doc . key ) ;
docInfo . put _Url ( data . doc . url ) ;
docInfo . put _Title ( data . doc . title ) ;
docInfo . put _Format ( data . doc . fileType ) ;
docInfo . put _VKey ( data . doc . vkey ) ;
docInfo . put _Options ( data . doc . options ) ;
docInfo . put _UserInfo ( _user ) ;
docInfo . put _CallbackUrl ( this . editorConfig . callbackUrl ) ;
2016-11-24 13:56:12 +00:00
docInfo . put _Token ( data . doc . token ) ;
2017-10-23 12:19:07 +00:00
docInfo . put _Permissions ( _permissions ) ;
var type = /^(?:(pdf|djvu|xps))$/ . exec ( data . doc . fileType ) ;
if ( type && typeof type [ 1 ] === 'string' ) {
this . permissions . edit = this . permissions . review = false ;
}
2016-03-11 00:48:53 +00:00
}
2016-11-11 13:24:21 +00:00
this . api . asc _registerCallback ( 'asc_onGetEditorPermissions' , _ . bind ( this . onEditorPermissions , this ) ) ;
2017-11-22 13:34:00 +00:00
this . api . asc _registerCallback ( 'asc_onLicenseChanged' , _ . bind ( this . onLicenseChanged , this ) ) ;
2016-11-11 13:24:21 +00:00
this . api . asc _setDocInfo ( docInfo ) ;
this . api . asc _getEditorPermissions ( this . editorConfig . licenseUrl , this . editorConfig . customerId ) ;
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
Common . SharedSettings . set ( 'document' , data . doc ) ;
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
if ( data . doc ) {
2016-11-16 13:42:35 +00:00
DE . getController ( 'Toolbar' ) . setDocumentTitle ( data . doc . title ) ;
2016-11-11 13:24:21 +00:00
}
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
setMode : function ( mode ) {
var me = this ;
2016-03-11 00:48:53 +00:00
2017-05-25 09:55:29 +00:00
Common . SharedSettings . set ( 'mode' , mode . isEdit ? 'edit' : 'view' ) ;
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
if ( me . api ) {
2017-05-25 09:55:29 +00:00
me . api . asc _enableKeyEvents ( mode . isEdit ) ;
me . api . asc _setViewMode ( ! mode . isEdit ) ;
2016-11-11 13:24:21 +00:00
}
} ,
onProcessSaveResult : function ( data ) {
this . api . asc _OnSaveEnd ( data . result ) ;
2016-11-16 13:42:35 +00:00
2016-11-11 13:24:21 +00:00
if ( data && data . result === false ) {
uiApp . alert (
_ . isEmpty ( data . message ) ? this . errorProcessSaveResult : data . message ,
this . criticalErrorTitle
) ;
}
} ,
onProcessRightsChange : function ( data ) {
if ( data && data . enabled === false ) {
var me = this ,
old _rights = this . _state . lostEditingRights ;
this . _state . lostEditingRights = ! this . _state . lostEditingRights ;
this . api . asc _coAuthoringDisconnect ( ) ;
if ( ! old _rights ) {
uiApp . alert (
_ . isEmpty ( data . message ) ? this . warnProcessRightsChange : data . message ,
this . notcriticalErrorTitle ,
function ( ) {
me . _state . lostEditingRights = false ;
me . onEditComplete ( ) ;
}
) ;
}
}
} ,
onDownloadAs : function ( ) {
2016-11-17 10:39:19 +00:00
this . _state . isFromGatewayDownloadAs = true ;
var type = /^(?:(pdf|djvu|xps))$/ . exec ( this . document . fileType ) ;
if ( type && typeof type [ 1 ] === 'string' ) {
this . api . asc _DownloadOrigin ( true )
} else {
this . api . asc _DownloadAs ( Asc . c _oAscFileType . DOCX , true ) ;
}
2016-11-11 13:24:21 +00:00
} ,
2018-02-14 14:11:28 +00:00
goBack : function ( ) {
2016-11-11 13:24:21 +00:00
var href = this . appOptions . customization . goback . url ;
2018-02-14 14:11:28 +00:00
if ( this . appOptions . customization . goback . blank !== false ) {
2016-11-11 13:24:21 +00:00
window . open ( href , "_blank" ) ;
} else {
parent . location . href = href ;
}
} ,
onEditComplete : function ( cmp ) {
2016-11-17 10:39:19 +00:00
//
2016-11-11 13:24:21 +00:00
} ,
onLongActionBegin : function ( type , id ) {
var action = { id : id , type : type } ;
this . stackLongActions . push ( action ) ;
this . setLongActionView ( action ) ;
} ,
onLongActionEnd : function ( type , id ) {
var me = this ,
action = { id : id , type : type } ;
2016-11-17 10:39:19 +00:00
me . stackLongActions . pop ( action ) ;
me . updateWindowTitle ( true ) ;
2016-11-11 13:24:21 +00:00
2016-11-17 10:39:19 +00:00
action = me . stackLongActions . get ( { type : Asc . c _oAscAsyncActionType . Information } ) ;
2016-11-11 13:24:21 +00:00
if ( action ) {
2016-11-17 10:39:19 +00:00
me . setLongActionView ( action )
2016-11-11 13:24:21 +00:00
} else {
2016-11-17 10:39:19 +00:00
if ( me . _state . fastCoauth && me . _state . usersCount > 1 && id == Asc . c _oAscAsyncAction [ 'Save' ] ) {
2017-04-11 11:05:56 +00:00
// me._state.timerSave = setTimeout(function () {
//console.debug('End long action');
// }, 500);
2016-11-11 13:24:21 +00:00
} else {
2016-11-16 13:42:35 +00:00
// console.debug('End long action');
2016-11-11 13:24:21 +00:00
}
}
2016-03-11 00:48:53 +00:00
2016-11-17 10:39:19 +00:00
action = me . stackLongActions . get ( { type : Asc . c _oAscAsyncActionType . BlockInteraction } ) ;
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
if ( action ) {
2016-11-17 10:39:19 +00:00
me . setLongActionView ( action )
2016-11-11 13:24:21 +00:00
} else {
_ . delay ( function ( ) {
$ ( me . loadMask ) . hasClass ( 'modal-in' ) && uiApp . closeModal ( me . loadMask ) ;
2016-11-18 08:52:46 +00:00
} , 300 ) ;
2016-11-11 13:24:21 +00:00
}
2016-03-11 00:48:53 +00:00
2016-11-17 10:39:19 +00:00
if ( id == Asc . c _oAscAsyncAction [ 'Save' ] && ( ! me . _state . fastCoauth || me . _state . usersCount < 2 ) ) {
// me.synchronizeChanges();
2016-11-11 13:24:21 +00:00
}
} ,
setLongActionView : function ( action ) {
2016-11-18 08:52:46 +00:00
var me = this ,
title = '' ,
text = '' ;
2016-11-11 13:24:21 +00:00
switch ( action . id ) {
case Asc . c _oAscAsyncAction [ 'Open' ] :
2016-11-18 08:52:46 +00:00
title = me . openTitleText ;
text = me . openTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'Save' ] :
2017-04-11 11:05:56 +00:00
// clearTimeout(this._state.timerSave);
2016-11-18 08:52:46 +00:00
title = me . saveTitleText ;
text = me . saveTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'LoadDocumentFonts' ] :
2016-11-18 08:52:46 +00:00
title = me . loadFontsTitleText ;
text = me . loadFontsTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'LoadDocumentImages' ] :
2016-11-18 08:52:46 +00:00
title = me . loadImagesTitleText ;
text = me . loadImagesTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'LoadFont' ] :
2016-11-18 08:52:46 +00:00
title = me . loadFontTitleText ;
text = me . loadFontTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'LoadImage' ] :
2016-11-18 08:52:46 +00:00
title = me . loadImageTitleText ;
text = me . loadImageTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'DownloadAs' ] :
2016-11-18 08:52:46 +00:00
title = me . downloadTitleText ;
text = me . downloadTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'Print' ] :
2016-11-18 08:52:46 +00:00
title = me . printTitleText ;
text = me . printTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'UploadImage' ] :
2016-11-18 08:52:46 +00:00
title = me . uploadImageTitleText ;
text = me . uploadImageTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'ApplyChanges' ] :
2016-11-18 08:52:46 +00:00
title = me . applyChangesTitleText ;
text = me . applyChangesTextText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'PrepareToSave' ] :
2016-11-18 08:52:46 +00:00
title = me . savePreparingText ;
text = me . savePreparingTitle ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'MailMergeLoadFile' ] :
2016-11-18 08:52:46 +00:00
title = me . mailMergeLoadFileText ;
text = me . mailMergeLoadFileTitle ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'DownloadMerge' ] :
2016-11-18 08:52:46 +00:00
title = me . downloadMergeTitle ;
text = me . downloadMergeText ;
2016-11-11 13:24:21 +00:00
break ;
case Asc . c _oAscAsyncAction [ 'SendMailMerge' ] :
2016-11-18 08:52:46 +00:00
title = me . sendMergeTitle ;
text = me . sendMergeText ;
2016-11-11 13:24:21 +00:00
break ;
case ApplyEditRights :
2016-11-18 08:52:46 +00:00
title = me . txtEditingMode ;
text = me . txtEditingMode ;
2016-11-11 13:24:21 +00:00
break ;
case LoadingDocument :
2016-11-18 08:52:46 +00:00
title = me . loadingDocumentTitleText ;
text = me . loadingDocumentTextText ;
2016-11-11 13:24:21 +00:00
break ;
2018-02-05 09:22:03 +00:00
default :
if ( typeof action . id == 'string' ) {
title = action . id ;
text = action . id ;
}
break ;
2016-11-11 13:24:21 +00:00
}
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
if ( action . type == Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] ) {
2016-12-28 11:06:13 +00:00
if ( action . id == Asc . c _oAscAsyncAction [ 'ApplyChanges' ] ) {
return ;
}
2016-11-18 08:52:46 +00:00
if ( me . loadMask && $ ( me . loadMask ) . hasClass ( 'modal-in' ) ) {
$$ ( me . loadMask ) . find ( '.modal-title' ) . text ( title ) ;
} else {
me . loadMask = uiApp . showPreloader ( title ) ;
}
2016-11-11 13:24:21 +00:00
}
else {
// this.getApplication().getController('Statusbar').setStatusCaption(text);
}
} ,
onDocumentContentReady : function ( ) {
if ( this . _isDocReady )
return ;
2017-09-20 11:32:18 +00:00
Common . Gateway . documentReady ( ) ;
2017-09-08 10:41:04 +00:00
if ( this . _state . openDlg )
uiApp . closeModal ( this . _state . openDlg ) ;
2016-11-11 13:24:21 +00:00
var me = this ,
value ;
me . _isDocReady = true ;
me . api . SetDrawingFreeze ( false ) ;
me . hidePreloader ( ) ;
me . onLongActionEnd ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , LoadingDocument ) ;
2018-01-25 07:10:45 +00:00
if ( me . appOptions . isReviewOnly )
me . api . asc _SetTrackRevisions ( true ) ;
2016-11-11 13:24:21 +00:00
/** coauthoring begin **/
2017-06-16 11:53:29 +00:00
this . isLiveCommenting = Common . localStorage . getBool ( "de-settings-livecomment" , true ) ;
2017-06-05 14:51:26 +00:00
this . isLiveCommenting ? this . api . asc _showComments ( true ) : this . api . asc _hideComments ( ) ;
2016-11-11 13:24:21 +00:00
/** coauthoring end **/
value = Common . localStorage . getItem ( "de-settings-zoom" ) ;
var zf = ( value !== null ) ? parseInt ( value ) : ( this . appOptions . customization && this . appOptions . customization . zoom ? parseInt ( this . appOptions . customization . zoom ) : 100 ) ;
( zf == - 1 ) ? this . api . zoomFitToPage ( ) : ( ( zf == - 2 ) ? this . api . zoomFitToWidth ( ) : this . api . zoom ( zf > 0 ? zf : 100 ) ) ;
value = Common . localStorage . getItem ( "de-show-hiddenchars" ) ;
me . api . put _ShowParaMarks ( ( value !== null ) ? eval ( value ) : false ) ;
value = Common . localStorage . getItem ( "de-show-tableline" ) ;
me . api . put _ShowTableEmptyLine ( ( value !== null ) ? eval ( value ) : true ) ;
2017-05-25 10:03:39 +00:00
me . api . asc _setSpellCheck ( false ) ; // don't use spellcheck for mobile mode
2016-11-11 13:24:21 +00:00
me . api . asc _registerCallback ( 'asc_onStartAction' , _ . bind ( me . onLongActionBegin , me ) ) ;
me . api . asc _registerCallback ( 'asc_onEndAction' , _ . bind ( me . onLongActionEnd , me ) ) ;
me . api . asc _registerCallback ( 'asc_onCoAuthoringDisconnect' , _ . bind ( me . onCoAuthoringDisconnect , me ) ) ;
me . api . asc _registerCallback ( 'asc_onPrint' , _ . bind ( me . onPrint , me ) ) ;
me . updateWindowTitle ( true ) ;
2017-04-19 11:22:31 +00:00
me . api . SetTextBoxInputMode ( Common . localStorage . getBool ( "de-settings-inputmode" ) ) ;
2016-11-11 13:24:21 +00:00
/** coauthoring begin **/
if ( me . appOptions . isEdit && me . appOptions . canLicense && ! me . appOptions . isOffline && me . appOptions . canCoAuthoring ) {
2016-11-17 10:39:19 +00:00
// Force ON fast co-authoring mode
me . _state . fastCoauth = true ;
2016-11-11 13:24:21 +00:00
me . api . asc _SetFastCollaborative ( me . _state . fastCoauth ) ;
value = Common . localStorage . getItem ( ( me . _state . fastCoauth ) ? "de-settings-showchanges-fast" : "de-settings-showchanges-strict" ) ;
2016-11-17 10:39:19 +00:00
if ( value !== null ) {
me . api . SetCollaborativeMarksShowType (
value == 'all' ? Asc . c _oAscCollaborativeMarksShowType . All :
2016-11-11 13:24:21 +00:00
value == 'none' ? Asc . c _oAscCollaborativeMarksShowType . None : Asc . c _oAscCollaborativeMarksShowType . LastChanges ) ;
2016-11-17 10:39:19 +00:00
} else {
2016-11-11 13:24:21 +00:00
me . api . SetCollaborativeMarksShowType ( me . _state . fastCoauth ? Asc . c _oAscCollaborativeMarksShowType . None : Asc . c _oAscCollaborativeMarksShowType . LastChanges ) ;
2016-11-17 10:39:19 +00:00
}
2016-11-11 13:24:21 +00:00
} else {
me . _state . fastCoauth = false ;
me . api . asc _SetFastCollaborative ( me . _state . fastCoauth ) ;
me . api . SetCollaborativeMarksShowType ( Asc . c _oAscCollaborativeMarksShowType . None ) ;
}
/** coauthoring end **/
2016-11-17 10:39:19 +00:00
if ( me . appOptions . isEdit ) {
value = me . _state . fastCoauth ; // Common.localStorage.getItem("de-settings-autosave");
value = ( ! me . _state . fastCoauth && value !== null ) ? parseInt ( value ) : ( me . appOptions . canCoAuthoring ? 1 : 0 ) ;
2016-11-28 08:43:57 +00:00
me . api . asc _setAutoSaveGap ( value ) ;
2016-11-17 10:39:19 +00:00
if ( me . needToUpdateVersion ) {
Common . NotificationCenter . trigger ( 'api:disconnect' ) ;
}
}
2016-11-11 13:24:21 +00:00
// if (this.appOptions.canAnalytics && false)
// Common.component.Analytics.initialize('UA-12442749-13', 'Document Editor');
Common . Gateway . on ( 'processsaveresult' , _ . bind ( me . onProcessSaveResult , me ) ) ;
Common . Gateway . on ( 'processrightschange' , _ . bind ( me . onProcessRightsChange , me ) ) ;
Common . Gateway . on ( 'downloadas' , _ . bind ( me . onDownloadAs , me ) ) ;
Common . Gateway . sendInfo ( {
2016-11-17 10:39:19 +00:00
mode : me . appOptions . isEdit ? 'edit' : 'view'
2016-11-11 13:24:21 +00:00
} ) ;
2016-11-16 14:59:05 +00:00
if ( me . api ) {
me . api . Resize ( ) ;
me . api . zoomFitToWidth ( ) ;
2016-11-11 13:24:21 +00:00
}
2016-03-11 00:48:53 +00:00
2017-11-22 13:34:00 +00:00
me . applyLicense ( ) ;
} ,
onLicenseChanged : function ( params ) {
var licType = params . asc _getLicenseType ( ) ;
2017-12-07 10:36:57 +00:00
if ( licType !== undefined && ( licType === Asc . c _oLicenseResult . Connections || licType === Asc . c _oLicenseResult . UsersCount ) && this . appOptions . canEdit && this . editorConfig . mode !== 'view' ) {
2017-11-22 13:34:00 +00:00
this . _state . licenseWarning = ( licType === Asc . c _oLicenseResult . Connections ) ? this . warnNoLicense : this . warnNoLicenseUsers ;
}
if ( this . _isDocReady && this . _state . licenseWarning )
this . applyLicense ( ) ;
} ,
2017-07-07 08:41:19 +00:00
2017-11-22 13:34:00 +00:00
applyLicense : function ( ) {
var me = this ;
2016-11-17 10:39:19 +00:00
if ( me . _state . licenseWarning ) {
2017-11-23 09:01:27 +00:00
DE . getController ( 'Toolbar' ) . activateViewControls ( ) ;
DE . getController ( 'Toolbar' ) . deactivateEditControls ( ) ;
2017-11-22 13:34:00 +00:00
Common . NotificationCenter . trigger ( 'api:disconnect' ) ;
var value = Common . localStorage . getItem ( "de-license-warning" ) ;
2016-11-17 10:39:19 +00:00
value = ( value !== null ) ? parseInt ( value ) : 0 ;
var now = ( new Date ) . getTime ( ) ;
if ( now - value > 86400000 ) {
Common . localStorage . setItem ( "de-license-warning" , now ) ;
uiApp . modal ( {
title : me . textNoLicenseTitle ,
2017-11-23 09:01:27 +00:00
text : me . _state . licenseWarning ,
2016-11-17 10:39:19 +00:00
buttons : [
{
text : me . textBuyNow ,
bold : true ,
onClick : function ( ) {
2017-10-18 12:08:11 +00:00
window . open ( 'https://www.onlyoffice.com' , "_blank" ) ;
2016-11-17 10:39:19 +00:00
}
} ,
{
text : me . textContactUs ,
onClick : function ( ) {
window . open ( 'mailto:sales@onlyoffice.com' , "_blank" ) ;
}
}
2017-11-22 13:34:00 +00:00
]
2016-11-17 10:39:19 +00:00
} ) ;
}
2017-11-22 13:34:00 +00:00
} else
DE . getController ( 'Toolbar' ) . activateControls ( ) ;
2016-11-11 13:24:21 +00:00
} ,
onOpenDocument : function ( progress ) {
if ( this . loadMask ) {
var $title = $$ ( this . loadMask ) . find ( '.modal-title' ) ,
proc = ( progress . asc _getCurrentFont ( ) + progress . asc _getCurrentImage ( ) ) / ( progress . asc _getFontsCount ( ) + progress . asc _getImagesCount ( ) ) ;
$title . text ( this . textLoadingDocument + ': ' + Math . min ( Math . round ( proc * 100 ) , 100 ) + '%' ) ;
}
} ,
onEditorPermissions : function ( params ) {
var me = this ,
licType = params . asc _getLicenseType ( ) ;
if ( Asc . c _oLicenseResult . Expired === licType ||
Asc . c _oLicenseResult . Error === licType ||
Asc . c _oLicenseResult . ExpiredTrial === licType ) {
uiApp . modal ( {
title : me . titleLicenseExp ,
text : me . warnLicenseExp
} ) ;
return ;
}
2016-03-11 00:48:53 +00:00
2017-04-11 11:05:56 +00:00
if ( me . onServerVersion ( params . asc _getBuildVersion ( ) ) ) return ;
2016-11-11 13:24:21 +00:00
me . permissions . review = ( me . permissions . review === undefined ) ? ( me . permissions . edit !== false ) : me . permissions . review ;
me . appOptions . canAnalytics = params . asc _getIsAnalyticsEnable ( ) ;
2017-04-21 08:44:23 +00:00
me . appOptions . canLicense = ( licType === Asc . c _oLicenseResult . Success || licType === Asc . c _oLicenseResult . SuccessLimit ) ;
2016-11-11 13:24:21 +00:00
me . appOptions . isLightVersion = params . asc _getIsLight ( ) ;
/** coauthoring begin **/
me . appOptions . canCoAuthoring = ! me . appOptions . isLightVersion ;
/** coauthoring end **/
me . appOptions . isOffline = me . api . asc _isOffline ( ) ;
me . appOptions . isReviewOnly = ( me . permissions . review === true ) && ( me . permissions . edit === false ) ;
me . appOptions . canRequestEditRights = me . editorConfig . canRequestEditRights ;
me . appOptions . canEdit = ( me . permissions . edit !== false || me . permissions . review === true ) && // can edit or review
( me . editorConfig . canRequestEditRights || me . editorConfig . mode !== 'view' ) && // if mode=="view" -> canRequestEditRights must be defined
( ! me . appOptions . isReviewOnly || me . appOptions . canLicense ) ; // if isReviewOnly==true -> canLicense must be true
me . appOptions . isEdit = me . appOptions . canLicense && me . appOptions . canEdit && me . editorConfig . mode !== 'view' ;
me . appOptions . canReview = me . appOptions . canLicense && me . appOptions . isEdit && ( me . permissions . review === true ) ;
me . appOptions . canUseHistory = me . appOptions . canLicense && ! me . appOptions . isLightVersion && me . editorConfig . canUseHistory && me . appOptions . canCoAuthoring && ! me . appOptions . isDesktopApp ;
2016-11-16 13:42:35 +00:00
me . appOptions . canHistoryClose = me . editorConfig . canHistoryClose ;
2016-11-11 13:24:21 +00:00
me . appOptions . canHistoryRestore = me . editorConfig . canHistoryRestore && ! ! me . permissions . changeHistory ;
2016-11-16 13:42:35 +00:00
me . appOptions . canUseMailMerge = me . appOptions . canLicense && me . appOptions . canEdit && ! me . appOptions . isDesktopApp ;
2016-11-11 13:24:21 +00:00
me . appOptions . canSendEmailAddresses = me . appOptions . canLicense && me . editorConfig . canSendEmailAddresses && me . appOptions . canEdit && me . appOptions . canCoAuthoring ;
me . appOptions . canComments = me . appOptions . canLicense && ! ( ( typeof ( me . editorConfig . customization ) == 'object' ) && me . editorConfig . customization . comments === false ) ;
me . appOptions . canChat = me . appOptions . canLicense && ! me . appOptions . isOffline && ! ( ( typeof ( me . editorConfig . customization ) == 'object' ) && me . editorConfig . customization . chat === false ) ;
me . appOptions . canEditStyles = me . appOptions . canLicense && me . appOptions . canEdit ;
me . appOptions . canPrint = ( me . permissions . print !== false ) ;
var type = /^(?:(pdf|djvu|xps))$/ . exec ( me . document . fileType ) ;
2017-04-10 13:11:09 +00:00
me . appOptions . canDownloadOrigin = me . permissions . download !== false && ( type && typeof type [ 1 ] === 'string' ) ;
me . appOptions . canDownload = me . permissions . download !== false && ( ! type || typeof type [ 1 ] !== 'string' ) ;
2017-06-01 10:10:00 +00:00
me . appOptions . canReader = ( ! type || typeof type [ 1 ] !== 'string' ) ;
2016-11-11 13:24:21 +00:00
2017-04-21 08:44:23 +00:00
me . appOptions . canBranding = ( licType === Asc . c _oLicenseResult . Success ) && ( typeof me . editorConfig . customization == 'object' ) ;
2017-06-14 10:57:02 +00:00
me . appOptions . canBrandingExt = params . asc _getCanBranding ( ) && ( typeof me . editorConfig . customization == 'object' ) ;
2016-11-11 13:24:21 +00:00
me . applyModeCommonElements ( ) ;
me . applyModeEditorElements ( ) ;
me . api . asc _setViewMode ( ! me . appOptions . isEdit ) ;
me . api . asc _LoadDocument ( ) ;
me . api . Resize ( ) ;
if ( ! me . appOptions . isEdit ) {
me . hidePreloader ( ) ;
me . onLongActionBegin ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , LoadingDocument ) ;
}
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
applyModeCommonElements : function ( ) {
var me = this ;
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
window . editor _elements _prepared = true ;
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
_ . each ( me . getApplication ( ) . controllers , function ( controller ) {
if ( controller && _ . isFunction ( controller . setMode ) ) {
2017-05-25 09:55:29 +00:00
controller . setMode ( me . appOptions ) ;
2016-11-11 13:24:21 +00:00
}
} ) ;
if ( me . api ) {
2017-04-11 11:05:56 +00:00
me . api . asc _registerCallback ( 'asc_onSendThemeColors' , _ . bind ( me . onSendThemeColors , me ) ) ;
me . api . asc _registerCallback ( 'asc_onDownloadUrl' , _ . bind ( me . onDownloadUrl , me ) ) ;
2016-11-11 13:24:21 +00:00
}
} ,
applyModeEditorElements : function ( ) {
if ( this . appOptions . isEdit ) {
var me = this ;
//
// var value = Common.localStorage.getItem('de-settings-unit');
// value = (value!==null) ? parseInt(value) : Common.Utils.Metric.getDefaultMetric();
// Common.Utils.Metric.setCurrentMetric(value);
// me.api.asc_SetDocumentUnits((value==Common.Utils.Metric.c_MetricUnits.inch) ? Asc.c_oAscDocumentUnits.Inch : ((value==Common.Utils.Metric.c_MetricUnits.pt) ? Asc.c_oAscDocumentUnits.Point : Asc.c_oAscDocumentUnits.Millimeter));
me . api . asc _registerCallback ( 'asc_onDocumentModifiedChanged' , _ . bind ( me . onDocumentModifiedChanged , me ) ) ;
me . api . asc _registerCallback ( 'asc_onDocumentCanSaveChanged' , _ . bind ( me . onDocumentCanSaveChanged , me ) ) ;
/** coauthoring begin **/
me . api . asc _registerCallback ( 'asc_onCollaborativeChanges' , _ . bind ( me . onCollaborativeChanges , me ) ) ;
me . api . asc _registerCallback ( 'asc_OnTryUndoInFastCollaborative' , _ . bind ( me . onTryUndoInFastCollaborative , me ) ) ;
me . api . asc _registerCallback ( 'asc_onAuthParticipantsChanged' , _ . bind ( me . onAuthParticipantsChanged , me ) ) ;
me . api . asc _registerCallback ( 'asc_onParticipantsChanged' , _ . bind ( me . onAuthParticipantsChanged , me ) ) ;
/** coauthoring end **/
if ( me . stackLongActions . exist ( { id : ApplyEditRights , type : Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] } ) ) {
me . onLongActionEnd ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , ApplyEditRights ) ;
} else if ( ! this . _isDocReady ) {
me . hidePreloader ( ) ;
me . onLongActionBegin ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , LoadingDocument ) ;
}
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
// Message on window close
window . onbeforeunload = _ . bind ( me . onBeforeUnload , me ) ;
window . onunload = _ . bind ( me . onUnload , me ) ;
}
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
onExternalMessage : function ( msg ) {
if ( msg && msg . msg ) {
msg . msg = ( msg . msg ) . toString ( ) ;
uiApp . addNotification ( {
title : 'ONLYOFFICE' ,
message : [ msg . msg . charAt ( 0 ) . toUpperCase ( ) + msg . msg . substring ( 1 ) ]
} ) ;
2016-03-11 00:48:53 +00:00
2017-05-16 07:46:04 +00:00
Common . component . Analytics . trackEvent ( 'External Error' ) ;
2016-11-11 13:24:21 +00:00
}
} ,
onError : function ( id , level , errData ) {
this . hidePreloader ( ) ;
this . onLongActionEnd ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , LoadingDocument ) ;
var config = {
closable : false
} ;
switch ( id )
{
case Asc . c _oAscError . ID . Unknown :
config . msg = this . unknownErrorText ;
break ;
case Asc . c _oAscError . ID . ConvertationTimeout :
config . msg = this . convertationTimeoutText ;
break ;
case Asc . c _oAscError . ID . ConvertationOpenError :
config . msg = this . openErrorText ;
break ;
case Asc . c _oAscError . ID . ConvertationSaveError :
config . msg = this . saveErrorText ;
break ;
case Asc . c _oAscError . ID . DownloadError :
config . msg = this . downloadErrorText ;
break ;
case Asc . c _oAscError . ID . UplImageSize :
config . msg = this . uploadImageSizeMessage ;
break ;
case Asc . c _oAscError . ID . UplImageExt :
config . msg = this . uploadImageExtMessage ;
break ;
case Asc . c _oAscError . ID . UplImageFileCount :
config . msg = this . uploadImageFileCountMessage ;
break ;
case Asc . c _oAscError . ID . SplitCellMaxRows :
config . msg = this . splitMaxRowsErrorText . replace ( '%1' , errData . get _Value ( ) ) ;
break ;
case Asc . c _oAscError . ID . SplitCellMaxCols :
config . msg = this . splitMaxColsErrorText . replace ( '%1' , errData . get _Value ( ) ) ;
break ;
case Asc . c _oAscError . ID . SplitCellRowsDivider :
config . msg = this . splitDividerErrorText . replace ( '%1' , errData . get _Value ( ) ) ;
break ;
case Asc . c _oAscError . ID . VKeyEncrypt :
config . msg = this . errorKeyEncrypt ;
break ;
case Asc . c _oAscError . ID . KeyExpire :
config . msg = this . errorKeyExpire ;
break ;
case Asc . c _oAscError . ID . UserCountExceed :
config . msg = this . errorUsersExceed ;
break ;
case Asc . c _oAscError . ID . CoAuthoringDisconnect :
config . msg = ( this . appOptions . isEdit ) ? this . errorCoAuthoringDisconnect : this . errorViewerDisconnect ;
break ;
case Asc . c _oAscError . ID . ConvertationPassword :
config . msg = this . errorFilePassProtect ;
break ;
case Asc . c _oAscError . ID . StockChartError :
config . msg = this . errorStockChart ;
break ;
case Asc . c _oAscError . ID . DataRangeError :
config . msg = this . errorDataRange ;
break ;
case Asc . c _oAscError . ID . Database :
config . msg = this . errorDatabaseConnection ;
break ;
case Asc . c _oAscError . ID . UserDrop :
if ( this . _state . lostEditingRights ) {
this . _state . lostEditingRights = false ;
return ;
}
this . _state . lostEditingRights = true ;
config . msg = this . errorUserDrop ;
break ;
case Asc . c _oAscError . ID . MailMergeLoadFile :
config . msg = this . errorMailMergeLoadFile ;
break ;
case Asc . c _oAscError . ID . MailMergeSaveFile :
config . msg = this . errorMailMergeSaveFile ;
break ;
case Asc . c _oAscError . ID . Warning :
config . msg = this . errorConnectToServer ;
break ;
2017-04-11 11:05:56 +00:00
case Asc . c _oAscError . ID . UplImageUrl :
config . msg = this . errorBadImageUrl ;
break ;
2016-11-11 13:24:21 +00:00
default :
config . msg = this . errorDefaultMessage . replace ( '%1' , id ) ;
break ;
}
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
if ( level == Asc . c _oAscError . Level . Critical ) {
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
// report only critical errors
Common . Gateway . reportError ( id , config . msg ) ;
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
config . title = this . criticalErrorTitle ;
// config.iconCls = 'error';
2016-03-11 00:48:53 +00:00
2018-02-07 09:21:10 +00:00
if ( this . appOptions . canBackToFolder && ! this . appOptions . isDesktopApp ) {
2016-11-11 13:24:21 +00:00
config . msg += '</br></br>' + this . criticalErrorExtText ;
config . callback = function ( ) {
Common . NotificationCenter . trigger ( 'goback' ) ;
}
}
}
else {
2017-10-07 09:20:39 +00:00
Common . Gateway . reportWarning ( id , config . msg ) ;
2016-11-11 13:24:21 +00:00
config . title = this . notcriticalErrorTitle ;
config . callback = _ . bind ( function ( btn ) {
if ( id == Asc . c _oAscError . ID . Warning && btn == 'ok' && ( this . appOptions . canDownload || this . appOptions . canDownloadOrigin ) ) {
Common . UI . Menu . Manager . hideAll ( ) ;
if ( this . appOptions . isDesktopApp && this . appOptions . isOffline )
this . api . asc _DownloadAs ( ) ;
else
( this . appOptions . canDownload ) ? this . getApplication ( ) . getController ( 'LeftMenu' ) . leftMenu . showMenu ( 'file:saveas' ) : this . api . asc _DownloadOrigin ( ) ;
}
this . _state . lostEditingRights = false ;
this . onEditComplete ( ) ;
} , this ) ;
}
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
uiApp . modal ( {
title : config . title ,
text : config . msg ,
buttons : [
{
text : 'OK' ,
onClick : config . callback
}
]
} ) ;
Common . component . Analytics . trackEvent ( 'Internal Error' , id . toString ( ) ) ;
} ,
onCoAuthoringDisconnect : function ( ) {
this . _state . isDisconnected = true ;
} ,
updateWindowTitle : function ( force ) {
var isModified = this . api . isDocumentModified ( ) ;
if ( this . _state . isDocModified !== isModified || force ) {
var title = this . defaultTitleText ;
if ( window . document . title != title )
window . document . title = title ;
2017-04-11 11:05:56 +00:00
Common . Gateway . setDocumentModified ( isModified ) ;
2016-11-11 13:24:21 +00:00
this . _state . isDocModified = isModified ;
}
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
onDocumentModifiedChanged : function ( ) {
var isModified = this . api . asc _isDocumentCanSave ( ) ;
if ( this . _state . isDocModified !== isModified ) {
Common . Gateway . setDocumentModified ( this . api . isDocumentModified ( ) ) ;
}
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
this . updateWindowTitle ( ) ;
} ,
2016-11-16 14:59:05 +00:00
2016-11-11 13:24:21 +00:00
onDocumentCanSaveChanged : function ( isCanSave ) {
2016-11-17 10:39:19 +00:00
//
2016-11-11 13:24:21 +00:00
} ,
onBeforeUnload : function ( ) {
Common . localStorage . save ( ) ;
if ( this . api . isDocumentModified ( ) ) {
var me = this ;
this . api . asc _stopSaving ( ) ;
this . continueSavingTimer = window . setTimeout ( function ( ) {
me . api . asc _continueSaving ( ) ;
} , 500 ) ;
return this . leavePageText ;
}
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
onUnload : function ( ) {
if ( this . continueSavingTimer )
clearTimeout ( this . continueSavingTimer ) ;
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
hidePreloader : function ( ) {
$ ( '#loading-mask' ) . hide ( ) . remove ( ) ;
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
onDownloadUrl : function ( url ) {
if ( this . _state . isFromGatewayDownloadAs ) {
Common . Gateway . downloadAs ( url ) ;
2016-03-11 00:48:53 +00:00
}
2016-11-11 13:24:21 +00:00
this . _state . isFromGatewayDownloadAs = false ;
} ,
onUpdateVersion : function ( callback ) {
var me = this ;
me . needToUpdateVersion = true ;
me . onLongActionEnd ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , LoadingDocument ) ;
uiApp . alert (
me . errorUpdateVersion ,
me . titleUpdateVersion ,
function ( ) {
_ . defer ( function ( ) {
Common . Gateway . updateVersion ( ) ;
if ( callback ) {
callback . call ( me ) ;
}
me . onLongActionBegin ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , LoadingDocument ) ;
} )
} ) ;
} ,
2017-04-11 11:05:56 +00:00
onServerVersion : function ( buildVersion ) {
var me = this ;
if ( me . changeServerVersion ) return true ;
if ( DocsAPI . DocEditor . version ( ) !== buildVersion && ! window . compareVersions ) {
me . changeServerVersion = true ;
uiApp . alert (
me . errorServerVersion ,
me . titleServerVersion ,
function ( ) {
_ . defer ( function ( ) {
Common . Gateway . updateVersion ( ) ;
} )
} ) ;
return true ;
}
return false ;
} ,
2016-11-11 13:24:21 +00:00
onCollaborativeChanges : function ( ) {
2016-11-17 10:39:19 +00:00
//
2016-11-11 13:24:21 +00:00
} ,
/** coauthoring end **/
updateThemeColors : function ( ) {
2016-11-17 10:39:19 +00:00
//
2016-11-11 13:24:21 +00:00
} ,
onSendThemeColors : function ( colors , standart _colors ) {
Common . Utils . ThemeColor . setColors ( colors , standart _colors ) ;
} ,
onAdvancedOptions : function ( advOptions ) {
2017-09-08 10:41:04 +00:00
if ( this . _state . openDlg ) return ;
2016-11-16 13:42:35 +00:00
var type = advOptions . asc _getOptionId ( ) ,
2017-09-08 10:41:04 +00:00
me = this ;
2016-11-16 13:42:35 +00:00
if ( type == Asc . c _oAscAdvancedOptionsID . TXT ) {
var picker ,
pages = [ ] ,
pagesName = [ ] ;
_ . each ( advOptions . asc _getOptions ( ) . asc _getCodePages ( ) , function ( page ) {
pages . push ( page . asc _getCodePage ( ) ) ;
pagesName . push ( page . asc _getCodePageName ( ) ) ;
} ) ;
$ ( me . loadMask ) . hasClass ( 'modal-in' ) && uiApp . closeModal ( me . loadMask ) ;
me . onLongActionEnd ( Asc . c _oAscAsyncActionType . BlockInteraction , LoadingDocument ) ;
2017-09-08 10:41:04 +00:00
me . _state . openDlg = uiApp . modal ( {
2016-11-17 12:24:27 +00:00
title : me . advTxtOptions ,
2016-11-16 13:42:35 +00:00
text : '' ,
afterText :
'<div class="content-block">' +
'<div class="row">' +
'<div class="col-100">Encoding</div>' +
'</div>' +
'<div id="txt-encoding"></div>' +
'</div>' ,
buttons : [
{
text : 'OK' ,
bold : true ,
onClick : function ( ) {
var encoding = picker . value ;
if ( me . api ) {
me . api . asc _setAdvancedOptions ( type , new Asc . asc _CTXTAdvancedOptions ( encoding ) ) ;
2016-11-16 14:59:05 +00:00
if ( ! me . _isDocReady ) {
me . onLongActionBegin ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , LoadingDocument ) ;
}
2016-11-16 13:42:35 +00:00
}
2017-09-08 10:41:04 +00:00
me . _state . openDlg = null ;
2016-11-16 13:42:35 +00:00
}
}
]
} ) ;
picker = uiApp . picker ( {
container : '#txt-encoding' ,
toolbar : false ,
rotateEffect : true ,
value : [ advOptions . asc _getOptions ( ) . asc _getRecommendedSettings ( ) . asc _getCodePage ( ) ] ,
cols : [ {
values : pages ,
displayValues : pagesName
} ]
} ) ;
// Vertical align
2017-09-08 10:41:04 +00:00
$$ ( me . _state . openDlg ) . css ( {
marginTop : - Math . round ( $$ ( me . _state . openDlg ) . outerHeight ( ) / 2 ) + 'px'
2016-11-16 13:42:35 +00:00
} ) ;
} else if ( type == Asc . c _oAscAdvancedOptionsID . DRM ) {
2017-09-08 09:06:17 +00:00
$ ( me . loadMask ) . hasClass ( 'modal-in' ) && uiApp . closeModal ( me . loadMask ) ;
me . onLongActionEnd ( Asc . c _oAscAsyncActionType . BlockInteraction , LoadingDocument ) ;
2017-09-08 10:41:04 +00:00
me . _state . openDlg = uiApp . modal ( {
2016-11-17 12:24:27 +00:00
title : me . advDRMOptions ,
text : me . advDRMEnterPassword ,
afterText : '<div class="input-field"><input type="password" name="modal-password" placeholder="' + me . advDRMPassword + '" class="modal-text-input"></div>' ,
2016-11-16 13:42:35 +00:00
buttons : [
{
text : 'OK' ,
bold : true ,
onClick : function ( ) {
2017-09-08 10:41:04 +00:00
var password = $ ( me . _state . openDlg ) . find ( '.modal-text-input[name="modal-password"]' ) . val ( ) ;
2016-11-16 13:42:35 +00:00
me . api . asc _setAdvancedOptions ( type , new Asc . asc _CDRMAdvancedOptions ( password ) ) ;
2016-11-16 14:59:05 +00:00
if ( ! me . _isDocReady ) {
me . onLongActionBegin ( Asc . c _oAscAsyncActionType [ 'BlockInteraction' ] , LoadingDocument ) ;
}
2017-09-08 10:41:04 +00:00
me . _state . openDlg = null ;
2016-11-16 13:42:35 +00:00
}
}
]
} ) ;
2017-09-08 09:06:17 +00:00
// Vertical align
2017-09-08 10:41:04 +00:00
$$ ( me . _state . openDlg ) . css ( {
marginTop : - Math . round ( $$ ( me . _state . openDlg ) . outerHeight ( ) / 2 ) + 'px'
2017-09-08 09:06:17 +00:00
} ) ;
2016-11-16 13:42:35 +00:00
}
2016-11-11 13:24:21 +00:00
} ,
onTryUndoInFastCollaborative : function ( ) {
2016-11-16 14:59:05 +00:00
uiApp . alert (
this . textTryUndoRedo ,
this . notcriticalErrorTitle
) ;
2016-11-11 13:24:21 +00:00
} ,
onAuthParticipantsChanged : function ( users ) {
var length = 0 ;
_ . each ( users , function ( item ) {
if ( ! item . asc _getView ( ) )
length ++ ;
} ) ;
this . _state . usersCount = length ;
} ,
onDocumentName : function ( name ) {
// this.getApplication().getController('Viewport').getView('Common.Views.Header').setDocumentCaption(name);
this . updateWindowTitle ( true ) ;
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
onPrint : function ( ) {
if ( ! this . appOptions . canPrint ) return ;
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
if ( this . api )
this . api . asc _Print ( Common . Utils . isChrome || Common . Utils . isSafari || Common . Utils . isOpera ) ; // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event
Common . component . Analytics . trackEvent ( 'Print' ) ;
} ,
2016-03-11 00:48:53 +00:00
2016-11-11 13:24:21 +00:00
onPrintUrl : function ( url ) {
2016-11-17 10:39:19 +00:00
var me = this ;
if ( me . iframePrint ) {
me . iframePrint . parentNode . removeChild ( me . iframePrint ) ;
me . iframePrint = null ;
2016-11-11 13:24:21 +00:00
}
2016-11-17 10:39:19 +00:00
if ( ! me . iframePrint ) {
me . iframePrint = document . createElement ( "iframe" ) ;
me . iframePrint . id = "id-print-frame" ;
me . iframePrint . style . display = 'none' ;
me . iframePrint . style . visibility = "hidden" ;
me . iframePrint . style . position = "fixed" ;
me . iframePrint . style . right = "0" ;
me . iframePrint . style . bottom = "0" ;
document . body . appendChild ( me . iframePrint ) ;
me . iframePrint . onload = function ( ) {
2016-11-11 13:24:21 +00:00
me . iframePrint . contentWindow . focus ( ) ;
me . iframePrint . contentWindow . print ( ) ;
me . iframePrint . contentWindow . blur ( ) ;
window . focus ( ) ;
} ;
2016-03-11 00:48:53 +00:00
}
2016-11-17 10:39:19 +00:00
if ( url ) {
me . iframePrint . src = url ;
}
2016-11-11 13:24:21 +00:00
} ,
2016-11-17 12:24:27 +00:00
leavePageText : 'You have unsaved changes in this document. Click \'Stay on this Page\' to await the autosave of the document. Click \'Leave this Page\' to discard all the unsaved changes.' ,
2016-11-11 13:24:21 +00:00
defaultTitleText : 'ONLYOFFICE Document Editor' ,
criticalErrorTitle : 'Error' ,
notcriticalErrorTitle : 'Warning' ,
errorDefaultMessage : 'Error code: %1' ,
criticalErrorExtText : 'Press "Ok" to back to document list.' ,
openTitleText : 'Opening Document' ,
openTextText : 'Opening document...' ,
saveTitleText : 'Saving Document' ,
saveTextText : 'Saving document...' ,
loadFontsTitleText : 'Loading Data' ,
loadFontsTextText : 'Loading data...' ,
loadImagesTitleText : 'Loading Images' ,
loadImagesTextText : 'Loading images...' ,
loadFontTitleText : 'Loading Data' ,
loadFontTextText : 'Loading data...' ,
loadImageTitleText : 'Loading Image' ,
loadImageTextText : 'Loading image...' ,
downloadTitleText : 'Downloading Document' ,
downloadTextText : 'Downloading document...' ,
printTitleText : 'Printing Document' ,
printTextText : 'Printing document...' ,
uploadImageTitleText : 'Uploading Image' ,
uploadImageTextText : 'Uploading image...' ,
savePreparingText : 'Preparing to save' ,
savePreparingTitle : 'Preparing to save. Please wait...' ,
uploadImageSizeMessage : 'Maximium image size limit exceeded.' ,
uploadImageExtMessage : 'Unknown image format.' ,
uploadImageFileCountMessage : 'No images uploaded.' ,
unknownErrorText : 'Unknown error.' ,
convertationTimeoutText : 'Convertation timeout exceeded.' ,
downloadErrorText : 'Download failed.' ,
unsupportedBrowserErrorText : 'Your browser is not supported.' ,
splitMaxRowsErrorText : 'The number of rows must be less than %1' ,
splitMaxColsErrorText : 'The number of columns must be less than %1' ,
splitDividerErrorText : 'The number of rows must be a divisor of %1' ,
textLoadingDocument : 'Loading document' ,
applyChangesTitleText : 'Loading Data' ,
applyChangesTextText : 'Loading data...' ,
errorKeyEncrypt : 'Unknown key descriptor' ,
errorKeyExpire : 'Key descriptor expired' ,
errorUsersExceed : 'Count of users was exceed' ,
errorCoAuthoringDisconnect : 'Server connection lost. You can\'t edit anymore.' ,
errorFilePassProtect : 'The document is password protected.' ,
txtEditingMode : 'Set editing mode...' ,
textAnonymous : 'Anonymous' ,
loadingDocumentTitleText : 'Loading document' ,
loadingDocumentTextText : 'Loading document...' ,
warnProcessRightsChange : 'You have been denied the right to edit the file.' ,
errorProcessSaveResult : 'Saving is failed.' ,
errorStockChart : 'Incorrect row order. To build a stock chart place the data on the sheet in the following order:<br> opening price, max price, min price, closing price.' ,
errorDataRange : 'Incorrect data range.' ,
errorDatabaseConnection : 'External error.<br>Database connection error. Please, contact support.' ,
titleUpdateVersion : 'Version changed' ,
errorUpdateVersion : 'The file version has been changed. The page will be reloaded.' ,
errorUserDrop : 'The file cannot be accessed right now.' ,
txtDiagramTitle : 'Chart Title' ,
txtXAxis : 'X Axis' ,
txtYAxis : 'Y Axis' ,
txtSeries : 'Seria' ,
errorMailMergeLoadFile : 'Loading failed' ,
mailMergeLoadFileText : 'Loading Data Source...' ,
mailMergeLoadFileTitle : 'Loading Data Source' ,
errorMailMergeSaveFile : 'Merge failed.' ,
downloadMergeText : 'Downloading...' ,
downloadMergeTitle : 'Downloading' ,
sendMergeTitle : 'Sending Merge' ,
sendMergeText : 'Sending Merge...' ,
txtArt : 'Your text here' ,
2016-11-17 12:24:27 +00:00
errorConnectToServer : ' The document could not be saved. Please check connection settings or contact your administrator.<br>When you click the \'OK\' button, you will be prompted to download the document.<br><br>Find more information about connecting Document Server <a href=\"https://api.onlyoffice.com/editors/callback\" target=\"_blank\">here</a>' ,
2016-11-16 14:59:05 +00:00
textTryUndoRedo : 'The Undo/Redo functions are disabled for the Fast co-editing mode.' ,
2016-11-11 13:24:21 +00:00
textBuyNow : 'Visit website' ,
textNoLicenseTitle : 'ONLYOFFICE open source version' ,
2017-11-23 11:00:02 +00:00
warnNoLicense : 'This version of ONLYOFFICE Editors has certain limitations for concurrent connections to the document server.<br>If you need more please consider upgrading your current license or purchasing a commercial one.' ,
2016-11-11 13:24:21 +00:00
textContactUs : 'Contact sales' ,
errorViewerDisconnect : 'Connection is lost. You can still view the document,<br>but will not be able to download until the connection is restored.' ,
warnLicenseExp : 'Your license has expired.<br>Please update your license and refresh the page.' ,
titleLicenseExp : 'License expired' ,
openErrorText : 'An error has occurred while opening the file' ,
2016-11-17 12:24:27 +00:00
saveErrorText : 'An error has occurred while saving the file' ,
advTxtOptions : 'Choose TXT Options' ,
advDRMOptions : 'Protected File' ,
advDRMEnterPassword : 'You password please:' ,
2017-01-23 14:38:53 +00:00
advDRMPassword : 'Password' ,
textOK : 'OK' ,
textCancel : 'Cancel' ,
textPreloader : 'Loading... ' ,
textUsername : 'Username' ,
textPassword : 'Password' ,
textBack : 'Back' ,
textClose : 'Close' ,
2017-04-11 11:05:56 +00:00
textDone : 'Done' ,
titleServerVersion : 'Editor updated' ,
errorServerVersion : 'The editor version has been updated. The page will be reloaded to apply the changes.' ,
2017-06-22 13:04:31 +00:00
errorBadImageUrl : 'Image url is incorrect' ,
txtStyle _Normal : 'Normal' ,
txtStyle _No _Spacing : 'No Spacing' ,
txtStyle _Heading _1 : 'Heading 1' ,
txtStyle _Heading _2 : 'Heading 2' ,
txtStyle _Heading _3 : 'Heading 3' ,
txtStyle _Heading _4 : 'Heading 4' ,
txtStyle _Heading _5 : 'Heading 5' ,
txtStyle _Heading _6 : 'Heading 6' ,
txtStyle _Heading _7 : 'Heading 7' ,
txtStyle _Heading _8 : 'Heading 8' ,
txtStyle _Heading _9 : 'Heading 9' ,
txtStyle _Title : 'Title' ,
txtStyle _Subtitle : 'Subtitle' ,
txtStyle _Quote : 'Quote' ,
txtStyle _Intense _Quote : 'Intense Quote' ,
2017-11-23 09:01:27 +00:00
txtStyle _List _Paragraph : 'List Paragraph' ,
2018-03-07 11:54:22 +00:00
txtStyle _footnote _text : 'Footnote Text' ,
txtHeader : "Header" ,
txtFooter : "Footer" ,
2017-11-23 11:00:02 +00:00
warnNoLicenseUsers : 'This version of ONLYOFFICE Editors has certain limitations for concurrent users.<br>If you need more please consider upgrading your current license or purchasing a commercial one.'
2016-03-11 00:48:53 +00:00
}
2016-11-11 13:24:21 +00:00
} ) ( ) , DE . Controllers . Main || { } ) )
2016-03-11 00:48:53 +00:00
} ) ;