2016-04-01 13:17:09 +00:00
/ *
*
2017-01-17 14:58:08 +00:00
* ( c ) Copyright Ascensio System Limited 2010 - 2017
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-03-11 00:48:53 +00:00
/ * *
* RightMenu . js
*
* Created by Julia Radzhabova on 4 / 10 / 14
* Copyright ( c ) 2014 Ascensio System SIA . All rights reserved .
*
* /
define ( [
'core' ,
'presentationeditor/main/app/view/RightMenu'
] , function ( ) {
'use strict' ;
PE . Controllers . RightMenu = Backbone . Controller . extend ( {
models : [ ] ,
collections : [ ] ,
views : [
'RightMenu'
] ,
initialize : function ( ) {
this . editMode = true ;
this . _state = { no _slides : undefined } ;
this . addListeners ( {
'RightMenu' : {
'rightmenuclick' : this . onRightMenuClick
}
} ) ;
} ,
onLaunch : function ( ) {
this . rightmenu = this . createView ( 'RightMenu' ) ;
this . rightmenu . on ( 'render:after' , _ . bind ( this . onRightMenuAfterRender , this ) ) ;
} ,
onRightMenuAfterRender : function ( rightMenu ) {
rightMenu . shapeSettings . application = rightMenu . textartSettings . application = this . getApplication ( ) ;
this . _settings = [ ] ;
this . _settings [ Common . Utils . documentSettingsType . Paragraph ] = { panelId : "id-paragraph-settings" , panel : rightMenu . paragraphSettings , btn : rightMenu . btnText , hidden : 1 , locked : false } ;
this . _settings [ Common . Utils . documentSettingsType . Table ] = { panelId : "id-table-settings" , panel : rightMenu . tableSettings , btn : rightMenu . btnTable , hidden : 1 , locked : false } ;
this . _settings [ Common . Utils . documentSettingsType . Image ] = { panelId : "id-image-settings" , panel : rightMenu . imageSettings , btn : rightMenu . btnImage , hidden : 1 , locked : false } ;
this . _settings [ Common . Utils . documentSettingsType . Slide ] = { panelId : "id-slide-settings" , panel : rightMenu . slideSettings , btn : rightMenu . btnSlide , hidden : 1 , locked : false } ;
this . _settings [ Common . Utils . documentSettingsType . Shape ] = { panelId : "id-shape-settings" , panel : rightMenu . shapeSettings , btn : rightMenu . btnShape , hidden : 1 , locked : false } ;
this . _settings [ Common . Utils . documentSettingsType . TextArt ] = { panelId : "id-textart-settings" , panel : rightMenu . textartSettings , btn : rightMenu . btnTextArt , hidden : 1 , locked : false } ;
this . _settings [ Common . Utils . documentSettingsType . Chart ] = { panelId : "id-chart-settings" , panel : rightMenu . chartSettings , btn : rightMenu . btnChart , hidden : 1 , locked : false } ;
2017-11-27 11:15:10 +00:00
this . _settings [ Common . Utils . documentSettingsType . Signature ] = { panelId : "id-signature-settings" , panel : rightMenu . signatureSettings , btn : rightMenu . btnSignature , hidden : ( rightMenu . signatureSettings ) ? 0 : 1 , props : { } , locked : false } ;
2016-03-11 00:48:53 +00:00
} ,
setApi : function ( api ) {
this . api = api ;
this . api . asc _registerCallback ( 'asc_onCountPages' , _ . bind ( this . onApiCountPages , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCoAuthoringDisconnect' , _ . bind ( this . onCoAuthoringDisconnect , this ) ) ;
Common . NotificationCenter . on ( 'api:disconnect' , _ . bind ( this . onCoAuthoringDisconnect , this ) ) ;
} ,
setMode : function ( mode ) {
this . editMode = mode . isEdit ;
} ,
onRightMenuClick : function ( menu , type , minimized ) {
if ( ! minimized && this . editMode ) {
var panel = this . _settings [ type ] . panel ;
var props = this . _settings [ type ] . props ;
if ( props && panel )
2017-11-27 11:15:10 +00:00
panel . ChangeSettings . call ( panel , ( type == Common . Utils . documentSettingsType . Signature ) ? undefined : props ) ;
2016-03-11 00:48:53 +00:00
}
Common . NotificationCenter . trigger ( 'layout:changed' , 'rightmenu' ) ;
this . rightmenu . fireEvent ( 'editcomplete' , this . rightmenu ) ;
} ,
2016-03-30 08:51:07 +00:00
onFocusObject : function ( SelectedObjects , open ) {
2016-03-11 00:48:53 +00:00
if ( ! this . editMode )
return ;
var needhide = true ;
for ( var i = 0 ; i < this . _settings . length ; i ++ ) {
2017-11-27 11:15:10 +00:00
if ( i == Common . Utils . documentSettingsType . Signature ) continue ;
2016-03-11 00:48:53 +00:00
if ( this . _settings [ i ] ) {
this . _settings [ i ] . hidden = 1 ;
this . _settings [ i ] . locked = undefined ;
}
}
2016-11-15 08:55:49 +00:00
this . _settings [ Common . Utils . documentSettingsType . Slide ] . hidden = ( SelectedObjects . length > 0 ) ? 0 : 1 ;
2017-11-27 11:15:10 +00:00
this . _settings [ Common . Utils . documentSettingsType . Signature ] . locked = false ;
2016-03-11 00:48:53 +00:00
for ( i = 0 ; i < SelectedObjects . length ; i ++ )
{
var eltype = SelectedObjects [ i ] . get _ObjectType ( ) ,
settingsType = this . getDocumentSettingsType ( eltype ) ;
if ( settingsType === undefined || settingsType >= this . _settings . length || this . _settings [ settingsType ] === undefined )
continue ;
var value = SelectedObjects [ i ] . get _ObjectValue ( ) ;
this . _settings [ settingsType ] . props = value ;
this . _settings [ settingsType ] . hidden = 0 ;
if ( settingsType == Common . Utils . documentSettingsType . Slide ) {
this . _settings [ settingsType ] . locked = value . get _LockDelete ( ) ;
this . _settings [ settingsType ] . lockedBackground = value . get _LockBackground ( ) ;
this . _settings [ settingsType ] . lockedEffects = value . get _LockTranzition ( ) ;
this . _settings [ settingsType ] . lockedTiming = value . get _LockTiming ( ) ;
} else {
this . _settings [ settingsType ] . locked = value . get _Locked ( ) ;
if ( settingsType == Common . Utils . documentSettingsType . Shape && value . asc _getTextArtProperties ( ) ) {
this . _settings [ Common . Utils . documentSettingsType . TextArt ] . props = value ;
this . _settings [ Common . Utils . documentSettingsType . TextArt ] . hidden = 0 ;
this . _settings [ Common . Utils . documentSettingsType . TextArt ] . locked = value . get _Locked ( ) ;
}
}
}
if ( this . _settings [ Common . Utils . documentSettingsType . Slide ] . locked ) { // если находимся в locked slide, то считаем, что все элементы в нем тоже недоступны
for ( i = 0 ; i < this . _settings . length ; i ++ ) {
if ( this . _settings [ i ] )
this . _settings [ i ] . locked = true ;
}
}
2016-10-18 08:58:27 +00:00
var lastactive = - 1 , currentactive , priorityactive = - 1 ,
activePane = this . rightmenu . GetActivePane ( ) ;
2016-03-11 00:48:53 +00:00
for ( i = 0 ; i < this . _settings . length ; i ++ ) {
var pnl = this . _settings [ i ] ;
2017-11-27 11:15:10 +00:00
if ( pnl === undefined || pnl . btn === undefined || pnl . panel === undefined ) continue ;
2016-03-11 00:48:53 +00:00
if ( pnl . hidden ) {
if ( ! pnl . btn . isDisabled ( ) ) pnl . btn . setDisabled ( true ) ;
2016-10-18 08:58:27 +00:00
if ( activePane == pnl . panelId )
2016-03-11 00:48:53 +00:00
currentactive = - 1 ;
} else {
if ( pnl . btn . isDisabled ( ) ) pnl . btn . setDisabled ( false ) ;
2017-11-27 11:15:10 +00:00
if ( i != Common . Utils . documentSettingsType . Slide && i != Common . Utils . documentSettingsType . Signature )
2016-03-11 00:48:53 +00:00
lastactive = i ;
if ( pnl . needShow ) {
pnl . needShow = false ;
priorityactive = i ;
} else if ( i != Common . Utils . documentSettingsType . Slide || this . rightmenu . _settings [ i ] . isCurrent ) {
2016-10-18 08:58:27 +00:00
if ( activePane == pnl . panelId )
2016-03-11 00:48:53 +00:00
currentactive = i ;
}
if ( i == Common . Utils . documentSettingsType . Slide ) {
if ( pnl . locked !== undefined )
this . rightmenu . slideSettings . SetSlideDisabled ( this . _state . no _slides || pnl . lockedBackground || pnl . locked ,
this . _state . no _slides || pnl . lockedEffects || pnl . locked ,
this . _state . no _slides || pnl . lockedTiming || pnl . locked ) ;
} else
pnl . panel . setLocked ( pnl . locked ) ;
}
}
2016-03-30 08:51:07 +00:00
if ( ! this . rightmenu . minimizedMode || open ) {
2016-03-11 00:48:53 +00:00
var active ;
if ( priorityactive > - 1 ) active = priorityactive ;
else if ( currentactive >= 0 ) active = currentactive ;
else if ( lastactive >= 0 ) active = lastactive ;
else active = Common . Utils . documentSettingsType . Slide ;
if ( active !== undefined ) {
2016-03-30 08:51:07 +00:00
this . rightmenu . SetActivePane ( active , open ) ;
2017-11-27 11:15:10 +00:00
if ( active != Common . Utils . documentSettingsType . Signature )
this . _settings [ active ] . panel . ChangeSettings . call ( this . _settings [ active ] . panel , this . _settings [ active ] . props ) ;
else
this . _settings [ active ] . panel . ChangeSettings . call ( this . _settings [ active ] . panel ) ;
2016-03-11 00:48:53 +00:00
}
}
this . _settings [ Common . Utils . documentSettingsType . Image ] . needShow = false ;
this . _settings [ Common . Utils . documentSettingsType . Chart ] . needShow = false ;
this . _settings [ Common . Utils . documentSettingsType . Shape ] . needShow = false ;
} ,
onCoAuthoringDisconnect : function ( ) {
if ( this . rightmenu )
this . rightmenu . SetDisabled ( '' , true , true ) ;
this . setMode ( { isEdit : false } ) ;
} ,
2017-11-28 11:32:48 +00:00
SetDisabled : function ( disabled , allowSignature ) {
this . setMode ( { isEdit : ! disabled } ) ;
this . rightmenu . SetDisabled ( '' , disabled , true , allowSignature ) ;
} ,
2016-03-11 00:48:53 +00:00
onInsertTable : function ( ) {
this . _settings [ Common . Utils . documentSettingsType . Table ] . needShow = true ;
} ,
onInsertImage : function ( ) {
this . _settings [ Common . Utils . documentSettingsType . Image ] . needShow = true ;
} ,
onInsertChart : function ( ) {
this . _settings [ Common . Utils . documentSettingsType . Chart ] . needShow = true ;
} ,
onInsertShape : function ( ) {
this . _settings [ Common . Utils . documentSettingsType . Shape ] . needShow = true ;
} ,
onInsertTextArt : function ( ) {
this . _settings [ Common . Utils . documentSettingsType . TextArt ] . needShow = true ;
} ,
UpdateThemeColors : function ( ) {
this . rightmenu . slideSettings . UpdateThemeColors ( ) ;
this . rightmenu . tableSettings . UpdateThemeColors ( ) ;
this . rightmenu . shapeSettings . UpdateThemeColors ( ) ;
this . rightmenu . textartSettings . UpdateThemeColors ( ) ;
} ,
updateMetricUnit : function ( ) {
this . rightmenu . paragraphSettings . updateMetricUnit ( ) ;
this . rightmenu . chartSettings . updateMetricUnit ( ) ;
this . rightmenu . imageSettings . updateMetricUnit ( ) ;
} ,
fillTextArt : function ( ) {
this . rightmenu . textartSettings . fillTextArt ( ) ;
} ,
createDelayedElements : function ( ) {
if ( this . editMode && this . api ) {
this . api . asc _registerCallback ( 'asc_doubleClickOnObject' , _ . bind ( this . onDoubleClickOnObject , this ) ) ;
2016-10-14 10:48:04 +00:00
this . rightmenu . shapeSettings . createDelayedElements ( ) ;
2016-03-11 00:48:53 +00:00
var selectedElements = this . api . getSelectedElements ( ) ;
2016-03-30 08:51:07 +00:00
if ( selectedElements . length > 0 ) {
2017-04-21 09:56:11 +00:00
this . onFocusObject ( selectedElements , ! Common . localStorage . getBool ( "pe-hide-right-settings" ) ) ;
2016-03-30 08:51:07 +00:00
}
2016-03-11 00:48:53 +00:00
}
} ,
onDoubleClickOnObject : function ( obj ) {
if ( ! this . editMode ) return ;
var eltype = obj . get _ObjectType ( ) ,
settingsType = this . getDocumentSettingsType ( eltype ) ;
if ( settingsType === undefined || settingsType >= this . _settings . length || this . _settings [ settingsType ] === undefined )
return ;
if ( settingsType !== Common . Utils . documentSettingsType . Paragraph ) {
this . rightmenu . SetActivePane ( settingsType , true ) ;
this . _settings [ settingsType ] . panel . ChangeSettings . call ( this . _settings [ settingsType ] . panel , this . _settings [ settingsType ] . props ) ;
}
} ,
onApiCountPages : function ( count ) {
if ( this . _state . no _slides !== ( count <= 0 ) && this . editMode ) {
this . _state . no _slides = ( count <= 0 ) ;
if ( this . _state . no _slides && ! this . rightmenu . minimizedMode )
this . rightmenu . clearSelection ( ) ;
this . _settings [ Common . Utils . documentSettingsType . Slide ] . btn . setDisabled ( this . _state . no _slides ) ;
}
} ,
getDocumentSettingsType : function ( type ) {
switch ( type ) {
2016-04-05 11:52:34 +00:00
case Asc . c _oAscTypeSelectElement . Paragraph :
2016-03-11 00:48:53 +00:00
return Common . Utils . documentSettingsType . Paragraph ;
2016-04-05 11:52:34 +00:00
case Asc . c _oAscTypeSelectElement . Table :
2016-03-11 00:48:53 +00:00
return Common . Utils . documentSettingsType . Table ;
2016-04-05 11:52:34 +00:00
case Asc . c _oAscTypeSelectElement . Image :
2016-03-11 00:48:53 +00:00
return Common . Utils . documentSettingsType . Image ;
2016-04-05 11:52:34 +00:00
case Asc . c _oAscTypeSelectElement . Shape :
2016-03-11 00:48:53 +00:00
return Common . Utils . documentSettingsType . Shape ;
2016-04-05 11:52:34 +00:00
case Asc . c _oAscTypeSelectElement . Slide :
2016-03-11 00:48:53 +00:00
return Common . Utils . documentSettingsType . Slide ;
2016-04-05 11:52:34 +00:00
case Asc . c _oAscTypeSelectElement . Chart :
2016-03-11 00:48:53 +00:00
return Common . Utils . documentSettingsType . Chart ;
}
}
} ) ;
} ) ;