2011-07-29 18:37:11 +00:00
// vim: et:ts=4:sw=4:sts=4:ft=javascript
2012-11-01 14:21:44 +00:00
2012-02-03 09:15:38 +00:00
'use strict' ;
2012-11-01 14:21:44 +00:00
2011-05-25 19:42:45 +00:00
pandora . ui . mainMenu = function ( ) {
2012-03-27 07:14:59 +00:00
var isGuest = pandora . user . level == 'guest' ,
2011-09-23 10:44:54 +00:00
ui = pandora . user . ui ,
2011-11-02 02:41:24 +00:00
findState = pandora . getFindState ( ui . find ) ,
2013-08-02 16:03:23 +00:00
fromMenu = false ,
2012-11-01 14:21:44 +00:00
fullscreenState = Ox . Fullscreen . getState ( ) ,
2011-06-19 17:49:25 +00:00
that = Ox . MainMenu ( {
2013-08-08 13:02:24 +00:00
extras : pandora . site . menuExtras . map ( function ( menuExtra ) {
if ( menuExtra == 'user' ) {
return pandora . $ui . userButton = pandora . ui . userButton ( ) ;
} else if ( menuExtra == 'locale' ) {
return pandora . $ui . localeButton = pandora . ui . localeButton ( ) ;
} else if ( menuExtra == 'reload' ) {
return pandora . $ui . loadingIcon = pandora . ui . loadingIcon ( ) ;
2013-09-29 13:00:06 +00:00
} else if ( menuExtra == 'persona' ) {
return pandora . $ui . personaButton = pandora . ui . personaButton ( ) ;
2013-08-08 13:02:24 +00:00
}
} ) ,
2011-05-25 19:42:45 +00:00
id : 'mainMenu' ,
2012-05-24 08:22:56 +00:00
menus : [ ] . concat (
2011-10-14 19:25:29 +00:00
[
2012-05-24 08:22:56 +00:00
{ id : pandora . site . site . id + 'Menu' , title : pandora . site . site . name , items : [ ] . concat (
2011-10-24 15:58:10 +00:00
[
2013-05-09 10:13:58 +00:00
{ id : 'home' , title : Ox . _ ( 'Home' ) } ,
2011-10-24 15:58:10 +00:00
{ }
] ,
2013-05-09 10:13:58 +00:00
Ox . clone ( pandora . site . sitePages , true ) . map ( function ( page ) {
page . title = Ox . _ ( page . title ) ;
return page ;
} ) ,
2011-10-24 15:58:10 +00:00
[
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'software' , title : Ox . _ ( 'Software' ) }
2011-10-24 15:58:10 +00:00
]
) } ,
2013-05-09 10:13:58 +00:00
{ id : 'userMenu' , title : Ox . _ ( 'User' ) , items : [
{ id : 'username' , title : Ox . _ ( 'User: {0}' , [ isGuest ? 'not signed in' : Ox . encodeHTMLEntities ( pandora . user . username ) ] ) , disabled : true } ,
2011-09-04 21:15:53 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'preferences' , title : Ox . _ ( 'Preferences...' ) , disabled : isGuest , keyboard : 'control ,' } ,
{ id : 'archives' , title : Ox . _ ( 'Archives...' ) , disabled : /*isGuest*/ true } ,
2011-10-14 19:25:29 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'signup' , title : Ox . _ ( 'Sign Up...' ) , disabled : ! isGuest } ,
isGuest ? { id : 'signin' , title : Ox . _ ( 'Sign In...' ) }
: { id : 'signout' , title : Ox . _ ( 'Sign Out...' ) }
2011-10-14 19:25:29 +00:00
] } ,
getListMenu ( ) ,
2013-08-02 16:03:23 +00:00
getItemMenu ( ) ,
2013-05-09 10:13:58 +00:00
{ id : 'viewMenu' , title : Ox . _ ( 'View' ) , items : [
{ id : 'items' , title : Ox . _ ( 'View {0}' , [ Ox . _ ( pandora . site . itemName . plural ) ] ) , items : [
2012-03-18 14:59:00 +00:00
{ group : 'listview' , min : 1 , max : 1 , items : pandora . site . listViews . map ( function ( view ) {
2011-10-14 19:25:29 +00:00
return Ox . extend ( {
2012-05-26 15:46:24 +00:00
checked : ui . listView == view . id
2013-05-09 10:13:58 +00:00
} , view , {
title : Ox . _ ( view . title )
} ) ;
2011-10-14 19:25:29 +00:00
} ) } ,
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'icons' , title : Ox . _ ( 'Icons' ) , items : [ ] . concat ( [
2012-02-19 14:15:24 +00:00
{ group : 'viewicons' , min : 1 , max : 1 , items : [ 'posters' , 'frames' ] . map ( function ( icons ) {
2013-05-09 10:13:58 +00:00
return { id : icons , title : Ox . _ ( Ox . toTitleCase ( icons ) ) , checked : ui . icons == icons } ;
2012-12-22 01:17:59 +00:00
} ) } ,
2012-02-19 14:15:24 +00:00
{ } ,
2012-12-22 01:17:59 +00:00
] , pandora . site . media . importPosters ? [
2013-05-09 10:13:58 +00:00
{ id : 'showsiteposters' , title : Ox . _ ( 'Always Show {0} Poster' , [ pandora . site . site . name ] ) , checked : ui . showSitePosters } ,
2012-12-22 01:17:59 +00:00
{ }
] : [ ] , [
2013-05-09 10:13:58 +00:00
{ id : 'showreflections' , title : Ox . _ ( 'Show Reflections' ) , checked : true , disabled : true }
2012-12-22 01:17:59 +00:00
]
2012-02-19 14:15:24 +00:00
) } ,
2013-05-09 10:13:58 +00:00
{ id : 'timelines' , title : Ox . _ ( 'Timelines' ) , items : [
2012-03-17 06:31:34 +00:00
{ group : 'viewtimelines' , min : 1 , max : 1 , items : pandora . site . timelines . map ( function ( mode ) {
2013-05-09 10:13:58 +00:00
return { id : mode . id , title : Ox . _ ( mode . title ) , checked : ui . videoTimeline == mode . id } ;
2012-03-06 21:28:27 +00:00
} ) }
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'columns' , title : Ox . _ ( 'Columns' ) , items : [
{ id : 'loadcolumns' , title : Ox . _ ( 'Load Layout...' ) , disabled : true } ,
{ id : 'savecolumns' , title : Ox . _ ( 'Save Layout...' ) , disabled : true } ,
2011-10-14 19:25:29 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'resetcolumns' , title : Ox . _ ( 'Reset Layout' ) , disabled : true }
2012-03-06 21:28:27 +00:00
] } ,
2011-10-14 19:25:29 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'item' , title : [
Ox . _ ( 'Open {0}' , [ Ox . _ ( pandora . site . itemName . singular ) ] ) ,
Ox . _ ( 'Open {0}' , [ Ox . _ ( pandora . site . itemName . plural ) ] )
] , items : [
2011-10-14 19:25:29 +00:00
{ group : 'itemview' , min : 1 , max : 1 , items : pandora . site . itemViews . map ( function ( view ) {
return Ox . extend ( {
2012-05-26 15:46:24 +00:00
checked : ui . itemView == view . id
2011-10-14 19:25:29 +00:00
} , view ) ;
} ) } ,
2012-03-06 21:28:27 +00:00
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'clips' , title : Ox . _ ( 'Open Clips' ) , items : [
2012-04-18 08:41:32 +00:00
{ group : 'videoview' , min : 1 , max : 1 , items : [ 'player' , 'editor' , 'timeline' ] . map ( function ( view ) {
2013-05-09 10:13:58 +00:00
return { id : view , title : Ox . _ ( Ox . toTitleCase ( view ) ) , checked : ui . videoView == view } ;
2011-10-14 19:25:29 +00:00
} ) }
] } ,
{ } ,
2013-08-12 12:31:52 +00:00
{ id : 'filters' , title : Ox . _ ( 'Filters' ) , disabled : ui . section != 'items' , items : [
2013-08-12 10:35:20 +00:00
{ id : 'clearfilters' , title : Ox . _ ( 'Clear Filters' ) , disabled : Ox . sum ( ui . _filterState . map ( function ( filterState ) {
return filterState . selected . length ;
} ) ) == 0 , keyboard : 'shift alt control a' } ,
{ } ,
2011-11-06 08:28:10 +00:00
{ group : 'filters' , min : 5 , max : 5 , items : pandora . site . filters . map ( function ( filter ) {
2011-10-14 19:25:29 +00:00
return Ox . extend ( {
2012-01-04 08:10:47 +00:00
checked : Ox . getIndexById ( ui . filters , filter . id ) > - 1
2013-05-09 10:13:58 +00:00
} , filter , {
title : Ox . _ ( filter . title )
} ) ;
2011-10-14 19:25:29 +00:00
} ) } ,
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'resetfilters' , title : Ox . _ ( 'Reset Filters' ) }
2011-10-14 19:25:29 +00:00
] } ,
{ } ,
2013-05-09 10:13:58 +00:00
{
id : 'showsidebar' ,
title : Ox . _ ( ( ui . showSidebar ? 'Hide' : 'Show' ) + ' Sidebar' ) ,
2013-07-14 09:27:27 +00:00
keyboard : 'shift s'
} ,
2013-05-09 10:13:58 +00:00
{
id : 'showinfo' ,
title : Ox . _ ( ( ui . showInfo ? 'Hide' : 'Show' ) + ' Info' ) ,
2013-07-14 09:27:27 +00:00
disabled : ! ui . showSidebar , keyboard : 'shift i'
} ,
2013-05-09 10:13:58 +00:00
{
id : 'showfilters' ,
title : Ox . _ ( ( ui . showFilters ? 'Hide' : 'Show' ) + ' Filters' ) ,
2013-08-12 12:31:52 +00:00
disabled : ui . section != 'items' || ! ! ui . item , keyboard : 'shift f'
2013-07-14 09:27:27 +00:00
} ,
2013-05-09 10:13:58 +00:00
{
id : 'showbrowser' ,
title : Ox . _ ( ( ui . showBrowser ? 'Hide' : 'Show' ) + ' {0} Browser' , [ Ox . _ ( pandora . site . itemName . singular ) ] ) ,
2013-07-14 09:27:27 +00:00
disabled : ! ui . item , keyboard : 'shift b'
} ,
2014-01-06 12:34:49 +00:00
{
id : 'showdocument' ,
title : Ox . _ ( ( ui . showTimeline ? 'Hide' : 'Show' ) + ' Document' ) ,
disabled : ! hasDocument ( ) , keyboard : 'shift d'
} ,
2013-05-09 10:13:58 +00:00
{
id : 'showtimeline' ,
title : Ox . _ ( ( ui . showTimeline ? 'Hide' : 'Show' ) + ' Timeline' ) ,
2013-07-14 09:27:27 +00:00
disabled : ! hasTimeline ( ) , keyboard : 'shift t'
} ,
{
id : 'showannotations' ,
title : Ox . _ ( ( ui . showAnnotations ? 'Hide' : 'Show' ) + ' Annotations' ) ,
disabled : ! hasAnnotations ( ) , keyboard : 'shift a'
} ,
{
id : 'showclips' ,
title : Ox . _ ( ( ui . showClips ? 'Hide' : 'Show' ) + ' Clips' ) ,
disabled : ! hasClips ( ) , keyboard : 'shift c'
} ,
2011-10-14 19:25:29 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{
id : 'togglefullscreen' ,
title : Ox . _ ( ( fullscreenState ? 'Exit' : 'Enter' ) + ' Fullscreen' ) ,
2013-10-25 13:54:50 +00:00
disabled : fullscreenState === void 0 ,
keyboard : /^Mac/ . test ( window . navigator . platform )
? 'shift alt control f'
: 'F11'
2013-07-14 09:27:27 +00:00
} ,
2013-05-09 10:13:58 +00:00
{
id : 'entervideofullscreen' ,
title : Ox . _ ( 'Enter Video Fullscreen' ) ,
2013-07-14 09:27:27 +00:00
disabled : ! ui . item || ui . itemView != 'player'
} ,
2012-03-23 12:00:04 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'theme' , title : Ox . _ ( 'Theme' ) , items : [
2013-02-10 11:52:31 +00:00
{ group : 'settheme' , min : 1 , max : 1 , items : pandora . site . themes . map ( function ( theme ) {
return { id : theme , title : Ox . Theme . getThemeData ( theme ) . themeName , checked : ui . theme == theme }
} ) }
2013-05-09 10:13:58 +00:00
] } ,
2013-05-31 13:15:21 +00:00
{ id : 'locale' , disabled : pandora . user . level != 'admin' ,
title : Ox . _ ( 'Language' ) , items : [
2013-05-09 15:00:45 +00:00
{ group : 'setlocale' , min : 1 , max : 1 , items : Object . keys ( Ox . LOCALE _NAMES ) . map ( function ( locale ) {
return { id : locale , title : Ox . LOCALE _NAMES [ locale ] , checked : ui . locale == locale }
2013-05-09 10:13:58 +00:00
} ) }
2011-10-14 19:25:29 +00:00
] }
2011-05-25 19:42:45 +00:00
] } ,
2011-10-14 19:25:29 +00:00
getSortMenu ( ) ,
2013-05-09 10:13:58 +00:00
{ id : 'findMenu' , title : Ox . _ ( 'Find' ) , items : [
{ id : 'find' , title : Ox . _ ( 'Find' ) , items : [
2012-03-18 14:59:00 +00:00
{ group : 'find' , min : 0 , max : 1 , items : pandora . site . findKeys . map ( function ( key , i ) {
2013-08-03 20:13:56 +00:00
return {
id : key . id ,
checked : key . id == findState . key ,
title : Ox . _ ( key . title )
} ;
2011-10-14 19:25:29 +00:00
} ) }
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'advancedfind' , title : Ox . _ ( 'Advanced Find...' ) , keyboard : 'shift control f' } ,
2012-03-18 14:59:00 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'findsimilar' , title : Ox . _ ( 'Find Similar Clips...' ) , keyboard : 'alt control f' , disabled : ! pandora . getItemIdAndPosition ( ) }
2011-08-19 06:40:19 +00:00
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'dataMenu' , title : Ox . _ ( 'Data' ) , items : [
2013-05-27 10:13:59 +00:00
{ id : 'documents' , title : Ox . _ ( 'Manage Documents...' ) , disabled : ! pandora . site . capabilities . canManageDocuments [ pandora . user . level ] } ,
2013-03-24 09:42:22 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'titles' , title : Ox . _ ( 'Manage Titles...' ) , disabled : ! pandora . site . capabilities . canManageTitlesAndNames [ pandora . user . level ] } ,
{ id : 'names' , title : Ox . _ ( 'Manage Names...' ) , disabled : ! pandora . site . capabilities . canManageTitlesAndNames [ pandora . user . level ] } ,
2011-09-18 00:31:41 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'places' , title : Ox . _ ( 'Manage Places...' ) , disabled : ! pandora . site . capabilities . canManagePlacesAndEvents [ pandora . user . level ] } ,
{ id : 'events' , title : Ox . _ ( 'Manage Events...' ) , disabled : ! pandora . site . capabilities . canManagePlacesAndEvents [ pandora . user . level ] } ,
2011-10-14 19:25:29 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'users' , title : Ox . _ ( 'Manage Users...' ) , disabled : ! pandora . site . capabilities . canManageUsers [ pandora . user . level ] } ,
{ id : 'statistics' , title : Ox . _ ( 'Statistics...' ) , disabled : ! pandora . site . capabilities . canManageUsers [ pandora . user . level ] }
2011-09-17 23:24:53 +00:00
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'helpMenu' , title : Ox . _ ( 'Help' ) , items : [
{ id : 'help' , title : Ox . _ ( 'Help...' ) , keyboard : 'control ?' } ,
2013-07-11 18:02:39 +00:00
{ id : 'api' , title : Ox . _ ( 'API Documentation...' ) , keyboard : 'shift control ?' }
2011-09-09 12:09:05 +00:00
] }
2011-10-14 19:25:29 +00:00
] ,
pandora . site . capabilities . canSeeDebugMenu [ pandora . user . level ]
? [
2013-05-09 10:13:58 +00:00
{ id : 'debugMenu' , title : Ox . _ ( 'Debug' ) , items : [
{ id : 'clearcache' , title : Ox . _ ( 'Clear Cache' ) } ,
2012-06-30 11:56:04 +00:00
{ } ,
2013-08-27 14:43:17 +00:00
{ id : 'cache' , title : Ox . _ ( ( pandora . localStorage ( 'enableCache' ) !== false ? 'Disable' : 'Enable' ) + ' Cache' ) } ,
2013-05-09 10:13:58 +00:00
{ id : 'debugmode' , title : Ox . _ ( ( pandora . localStorage ( 'enableDebugMode' ) ? 'Disable' : 'Enable' ) + ' Debug Mode' ) } ,
{ id : 'eventlogging' , title : Ox . _ ( ( pandora . localStorage ( 'enableEventLogging' ) ? 'Disable' : 'Enable' ) + ' Event Logging' ) } ,
2012-06-30 11:56:04 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'errorlogs' , title : Ox . _ ( 'View Error Logs...' ) } ,
{ id : 'tests' , title : Ox . _ ( 'Run Tests' ) }
2011-10-14 19:25:29 +00:00
] }
]
: [ ]
)
2011-05-25 19:42:45 +00:00
} )
2011-11-01 12:03:02 +00:00
. bindKeyboard ( )
2011-05-25 19:42:45 +00:00
. bindEvent ( {
2011-09-17 17:40:15 +00:00
change : function ( data ) {
2011-09-18 01:52:43 +00:00
var value = data . checked [ 0 ] ? data . checked [ 0 ] . id : null ;
2011-11-07 12:12:13 +00:00
if ( data . id == 'allitems' ) {
if ( data . checked ) {
2013-07-14 15:36:49 +00:00
pandora . UI . set ( { find : { conditions : [ ] , operator : '&' } } ) ;
2011-11-07 12:12:13 +00:00
} else {
that . checkItem ( 'allitems' ) ;
}
2013-02-11 09:00:16 +00:00
} else if ( data . id == 'cliporder' ) {
if ( ! ui . item ) {
2013-07-15 14:20:11 +00:00
pandora . UI . set ( { listSort : [ { key : ui . listSort [ 0 ] . key , operator : value == 'ascending' ? '+' : '-' } ] } ) ;
2013-02-11 09:00:16 +00:00
} else {
2013-07-15 14:20:11 +00:00
pandora . UI . set ( { itemSort : [ { key : ui . itemSort [ 0 ] . key , operator : value == 'ascending' ? '+' : '-' } ] } ) ;
2013-02-11 09:00:16 +00:00
}
} else if ( data . id == 'clipsort' ) {
if ( ! ui . item ) {
pandora . UI . set ( { listSort : [ { key : value , operator : pandora . getSortOperator ( value ) } ] } ) ;
} else {
pandora . UI . set ( { itemSort : [ { key : value , operator : pandora . getSortOperator ( value ) } ] } ) ;
}
2011-11-07 12:12:13 +00:00
} else if ( data . id == 'find' ) {
2012-03-18 14:59:00 +00:00
if ( value ) {
pandora . $ui . findSelect . value ( value ) ;
2013-07-15 14:20:11 +00:00
if ( ui . _findState . key == 'advanced' ) {
2012-03-18 15:11:16 +00:00
// fixme: autocomplete function doesn't get updated
pandora . $ui . findInput . options ( { placeholder : '' } ) ;
}
2012-03-18 14:59:00 +00:00
} else {
that . checkItem ( 'findMenu_find_' + pandora . $ui . findSelect . value ( ) ) ;
}
2012-03-18 15:11:16 +00:00
pandora . $ui . findInput . focusInput ( true ) ;
2013-02-11 09:00:16 +00:00
} else if ( data . id == 'itemorder' ) {
2013-07-15 14:20:11 +00:00
pandora . UI . set ( { listSort : [ { key : ui . listSort [ 0 ] . key , operator : value == 'ascending' ? '+' : '-' } ] } ) ;
2013-02-11 09:00:16 +00:00
} else if ( data . id == 'itemsort' ) {
pandora . UI . set ( { listSort : [ { key : value , operator : pandora . getSortOperator ( value ) } ] } ) ;
2011-09-26 19:17:39 +00:00
} else if ( data . id == 'itemview' ) {
pandora . UI . set ( { itemView : value } ) ;
2012-03-18 14:59:00 +00:00
} else if ( data . id == 'listview' ) {
var set = { listView : value } ;
if (
2013-07-15 14:20:11 +00:00
! pandora . isClipView ( key , ui . item )
&& [ 'title' , 'position' ] . indexOf ( ui . listSort [ 0 ] . key ) > - 1
2012-03-18 14:59:00 +00:00
) {
set . listSort = pandora . site . user . ui . listSort ;
}
pandora . UI . set ( set ) ;
2011-11-06 08:28:10 +00:00
} else if ( Ox . startsWith ( data . id , 'orderfilter' ) ) {
2013-07-15 14:20:11 +00:00
var filters = Ox . clone ( ui . filters ) ,
2011-11-06 08:28:10 +00:00
id = data . id . replace ( 'orderfilter' , '' ) ,
2012-01-04 08:10:47 +00:00
index = Ox . getIndexById ( filters , id ) ,
key = filters [ index ] . sort [ 0 ] . key ,
2011-09-17 23:24:53 +00:00
operator = value == 'ascending' ? '+' : '-' ;
2012-01-04 08:10:47 +00:00
pandora . $ui . filters [ index ] . options ( {
2011-09-17 23:24:53 +00:00
sort : [ { key : key , operator : operator } ]
} ) ;
2012-01-04 08:10:47 +00:00
filters [ index ] . sort [ 0 ] . operator = operator ;
2011-11-06 08:28:10 +00:00
pandora . UI . set ( { filters : filters } ) ;
2013-05-09 10:13:58 +00:00
} else if ( data . id == 'setlocale' ) {
2013-07-14 15:36:49 +00:00
pandora . UI . set ( { locale : value } ) ;
2013-08-08 11:02:36 +00:00
pandora . setLocale ( value , pandora . $ui . appPanel . reload ) ;
2011-09-09 12:09:05 +00:00
} else if ( data . id == 'settheme' ) {
2013-07-14 15:36:49 +00:00
pandora . UI . set ( { theme : value } ) ;
2013-08-08 11:02:36 +00:00
pandora . setTheme ( value ) ;
2012-03-20 11:51:28 +00:00
} else if ( data . id == 'showsiteposters' ) {
2013-07-14 15:36:49 +00:00
pandora . UI . set ( { showSitePosters : data . checked } ) ;
2011-11-06 08:28:10 +00:00
} else if ( Ox . startsWith ( data . id , 'sortfilter' ) ) {
var filters = Ox . clone ( ui . filters ) ,
id = data . id . replace ( 'sortfilter' , '' ) ,
2012-01-04 08:10:47 +00:00
index = Ox . getIndexById ( filters , id ) ,
2011-11-06 08:28:10 +00:00
type = Ox . getObjectById ( pandora . site . filters , id ) . type ,
2011-09-17 23:24:53 +00:00
key = value ,
2011-09-17 23:50:38 +00:00
operator = key == 'name' && type == 'string' ? '+' : '-' ;
2011-11-06 08:28:10 +00:00
pandora . $ui . mainMenu . checkItem (
'sortMenu_orderfilters_orderfilter' + id + '_'
+ ( operator == '+' ? 'ascending' : 'descending' )
) ;
2012-01-04 08:10:47 +00:00
pandora . $ui . filters [ index ] . options ( {
2011-09-17 23:24:53 +00:00
sort : [ { key : key , operator : operator } ]
} ) ;
2012-01-04 08:10:47 +00:00
filters [ index ] . sort [ 0 ] . key = key ;
2011-11-06 08:28:10 +00:00
pandora . UI . set ( { filters : filters } ) ;
2012-03-18 14:59:00 +00:00
} else if ( data . id == 'videoview' ) {
var set = { videoView : value } ;
2011-10-09 13:13:11 +00:00
if (
2012-04-17 12:05:23 +00:00
( value == 'timeline' && [ 'player' , 'editor' ] . indexOf ( ui . itemView ) > - 1 )
|| ( value == 'player' && [ 'timeline' , 'editor' ] . indexOf ( ui . itemView ) > - 1 )
|| ( value == 'editor' && [ 'timeline' , 'player' ] . indexOf ( ui . itemView ) > - 1 )
2011-10-09 13:13:11 +00:00
) {
2012-03-18 14:59:00 +00:00
set . itemView = value ;
2011-10-09 13:13:11 +00:00
}
pandora . UI . set ( set ) ;
2012-03-18 14:59:00 +00:00
} else if ( data . id == 'viewicons' ) {
pandora . UI . set ( { icons : value } ) ;
2012-05-24 09:56:52 +00:00
} else if ( data . id . slice ( 0 , 8 ) == 'viewlist' ) {
2011-11-03 17:11:10 +00:00
pandora . UI . set ( {
find : {
2011-11-07 12:12:13 +00:00
conditions : data . checked ? [
2013-08-14 23:30:15 +00:00
{ key : 'list' , value : data . id . slice ( 8 ) . replace ( /\t/g , '_' ) , operator : '==' }
2011-11-03 17:11:10 +00:00
] : [ ] ,
operator : '&'
}
} ) ;
2012-03-06 21:28:27 +00:00
} else if ( data . id == 'viewtimelines' ) {
pandora . UI . set ( { videoTimeline : value } ) ;
2011-05-25 19:42:45 +00:00
}
} ,
2011-09-17 17:40:15 +00:00
click : function ( data ) {
2012-06-15 14:43:05 +00:00
if ( [
'home' , 'software' , 'signup' , 'signin' , 'signout' ,
2013-07-11 18:02:39 +00:00
'preferences' , 'help' , 'api'
2012-06-15 14:43:05 +00:00
] . concat (
2012-01-20 18:10:25 +00:00
pandora . site . sitePages . map ( function ( page ) {
return page . id ;
2012-06-15 14:43:05 +00:00
} )
2012-01-30 23:56:41 +00:00
) . indexOf ( data . id ) > - 1 ) {
2011-11-09 22:32:54 +00:00
pandora . UI . set ( { page : data . id } ) ;
2011-09-29 17:25:04 +00:00
} else if ( [
'newlist' , 'newlistfromselection' , 'newsmartlist' , 'newsmartlistfromresults'
] . indexOf ( data . id ) > - 1 ) {
2013-11-08 16:13:44 +00:00
if ( ui . section == 'texts' ) {
pandora . addText ( { type : 'text' } ) ;
} else {
pandora . addList ( data . id . indexOf ( 'smart' ) > - 1 , data . id . indexOf ( 'from' ) > - 1 ) ;
}
2011-09-29 17:25:04 +00:00
} else if ( data . id == 'duplicatelist' ) {
2013-11-08 16:13:44 +00:00
if ( ui . section == 'texts' ) {
pandora . addText ( { type : 'text' } ) ;
} else {
pandora . addList ( ui . _list ) ;
}
2011-09-29 17:25:04 +00:00
} else if ( data . id == 'editlist' ) {
pandora . ui . listDialog ( ) . open ( ) ;
2013-02-25 10:20:04 +00:00
} else if ( data . id == 'add' ) {
pandora . addItem ( ) ;
} else if ( data . id == 'upload' ) {
2013-08-06 09:00:45 +00:00
pandora . $ui . uploadVideoDialog = pandora . ui . uploadVideoDialog ( ) . open ( ) ;
2011-09-29 17:25:04 +00:00
} else if ( data . id == 'deletelist' ) {
pandora . ui . deleteListDialog ( ) . open ( ) ;
2013-03-09 03:49:15 +00:00
} else if ( data . id == 'print' ) {
2013-07-12 10:29:58 +00:00
window . open ( document . location . href + '#print' , '_blank' ) ;
2013-07-11 18:02:39 +00:00
} else if ( data . id == 'tv' ) {
pandora . UI . set ( { 'part.tv' : ui . _list } ) ;
pandora . UI . set ( { page : 'tv' } ) ;
2013-08-02 16:03:23 +00:00
} else if ( data . id == 'selectall' ) {
2013-08-12 10:35:20 +00:00
pandora . $ui [ ui . section == 'edits' ? 'editPanel' : ! ui . item ? 'list' : 'clipList' ] . selectAll ( ) ;
2013-08-02 16:03:23 +00:00
} else if ( data . id == 'selectnone' ) {
2013-08-12 10:35:20 +00:00
ui . section == 'edits' ? pandora . $ui . editPanel . options ( { selected : [ ] } )
: ! ui . item ? pandora . UI . set ( { listSelection : [ ] } )
2013-08-02 17:53:09 +00:00
: pandora . $ui . clipList . options ( { selected : [ ] } ) ;
2013-08-02 16:03:23 +00:00
} else if ( data . id == 'invertselection' ) {
2013-08-12 10:35:20 +00:00
pandora . $ui [ ui . section == 'edits' ? 'editPanel' : ! ui . item ? 'list' : 'clipList' ] . invertSelection ( ) ;
2013-08-02 16:03:23 +00:00
} else if ( data . id == 'cut' || data . id == 'cutadd' ) {
var action = data . id == 'cut' ? 'copy' : 'add' ;
fromMenu = true ;
2013-08-03 15:01:47 +00:00
pandora . clipboard [ action ] ( ui . listSelection , 'item' ) ;
2013-08-03 14:01:36 +00:00
pandora . doHistory ( 'cut' , ui . listSelection , ui . _list , function ( ) {
2013-08-02 16:03:23 +00:00
pandora . UI . set ( { listSelection : [ ] } ) ;
pandora . reloadList ( ) ;
} ) ;
} else if ( data . id == 'copy' || data . id == 'copyadd' ) {
var action = data . id == 'copy' ? 'copy' : 'add' ;
fromMenu = true ;
2013-08-03 15:01:47 +00:00
pandora . isVideoView ( ) && ! pandora . $ui . browser . hasFocus ( ) ? pandora . clipboard [ action ] ( [ {
2013-08-02 16:03:23 +00:00
annotation : ui . videoPoints [ ui . item ] . annotation ,
'in' : pandora . user . ui . videoPoints [ ui . item ] [ 'in' ] ,
item : ui . item ,
out : ui . videoPoints [ ui . item ] . out
} ] , 'clip' )
2013-08-03 15:01:47 +00:00
: pandora . isClipView ( ) && ! pandora . $ui . browser . hasFocus ( ) ? pandora . clipboard [ action ] (
2013-08-02 17:38:26 +00:00
pandora . $ui . clipList . options ( 'selected' ) , 'clip'
)
2013-08-03 15:01:47 +00:00
: pandora . clipboard [ action ] ( ui . listSelection , 'item' ) ;
2013-08-02 16:03:23 +00:00
} else if ( data . id == 'paste' ) {
fromMenu = true ;
2013-08-03 15:01:47 +00:00
var items = pandora . clipboard . paste ( ) ;
2013-08-03 14:01:36 +00:00
pandora . doHistory ( 'paste' , items , ui . _list , function ( ) {
2013-08-02 16:03:23 +00:00
pandora . UI . set ( { listSelection : items } ) ;
pandora . reloadList ( ) ;
} ) ;
2013-08-02 16:22:15 +00:00
} else if ( data . id == 'clearclipboard' ) {
2013-08-03 15:01:47 +00:00
pandora . clipboard . clear ( ) ;
2013-08-02 16:03:23 +00:00
} else if ( data . id == 'delete' ) {
2013-08-03 14:01:36 +00:00
pandora . doHistory ( 'delete' , ui . listSelection , ui . _list , function ( ) {
2013-08-02 16:03:23 +00:00
pandora . UI . set ( { listSelection : [ ] } ) ;
pandora . reloadList ( ) ;
} ) ;
2013-08-03 14:01:36 +00:00
} else if ( data . id == 'undo' ) {
2013-08-06 19:07:46 +00:00
fromMenu = true ;
2013-08-03 14:01:36 +00:00
pandora . undoHistory ( ) ;
} else if ( data . id == 'redo' ) {
2013-08-06 19:07:46 +00:00
fromMenu = true ;
2013-08-03 14:01:36 +00:00
pandora . redoHistory ( ) ;
} else if ( data . id == 'clearhistory' ) {
2013-08-06 19:07:46 +00:00
fromMenu = true ;
2013-08-03 14:01:36 +00:00
pandora . history . clear ( ) ;
2013-08-12 10:35:20 +00:00
} else if ( data . id == 'clearfilters' ) {
pandora . $ui . filters . clearFilters ( ) ;
} else if ( data . id == 'resetfilters' ) {
pandora . UI . set ( {
filters : pandora . site . user . ui . filters
} ) ;
pandora . $ui . contentPanel . replaceElement ( 0 , pandora . $ui . browser = pandora . ui . browser ( ) ) ;
2011-10-13 10:12:00 +00:00
} else if ( data . id == 'showsidebar' ) {
pandora . UI . set ( { showSidebar : ! ui . showSidebar } ) ;
} else if ( data . id == 'showinfo' ) {
pandora . UI . set ( { showInfo : ! ui . showInfo } ) ;
2011-11-06 08:28:10 +00:00
} else if ( data . id == 'showfilters' ) {
pandora . UI . set ( { showFilters : ! ui . showFilters } ) ;
2011-10-13 10:12:00 +00:00
} else if ( data . id == 'showbrowser' ) {
pandora . UI . set ( { showBrowser : ! ui . showBrowser } ) ;
2014-01-06 12:34:49 +00:00
} else if ( data . id == 'showdocument' ) {
pandora . UI . set ( { showDocument : ! ui . showDocument } ) ;
2011-11-05 22:14:10 +00:00
} else if ( data . id == 'showtimeline' ) {
pandora . UI . set ( { showTimeline : ! ui . showTimeline } ) ;
2013-07-14 09:27:27 +00:00
} else if ( data . id == 'showannotations' ) {
pandora . UI . set ( { showAnnotations : ! ui . showAnnotations } ) ;
} else if ( data . id == 'showclips' ) {
pandora . UI . set ( { showClips : ! ui . showClips } ) ;
2012-11-01 15:19:46 +00:00
} else if ( data . id == 'togglefullscreen' ) {
2012-11-01 14:21:44 +00:00
Ox . Fullscreen . toggle ( ) ;
} else if ( data . id == 'entervideofullscreen' ) {
2012-03-23 12:00:04 +00:00
pandora . $ui . player . options ( { fullscreen : true } ) ;
2011-11-11 12:28:20 +00:00
} else if ( data . id == 'advancedfind' ) {
2012-06-15 14:43:05 +00:00
pandora . $ui . filterDialog = pandora . ui . filterDialog ( ) . open ( ) ;
} else if ( data . id == 'findsimilar' ) {
2013-08-02 09:53:06 +00:00
pandora . $ui . similarClipsDialog = pandora . ui . similarClipsDialog ( ) . open ( ) ;
2013-05-27 10:13:59 +00:00
} else if ( data . id == 'documents' ) {
pandora . $ui . documentsDialog = pandora . ui . documentsDialog ( ) . open ( ) ;
2011-10-11 11:29:05 +00:00
} else if ( data . id == 'titles' ) {
2011-11-01 20:04:16 +00:00
( pandora . $ui . titlesDialog || (
pandora . $ui . titlesDialog = pandora . ui . titlesDialog ( )
) ) . open ( ) ;
} else if ( data . id == 'names' ) {
( pandora . $ui . namesDialog || (
pandora . $ui . namesDialog = pandora . ui . namesDialog ( )
) ) . open ( ) ;
2011-05-25 19:42:45 +00:00
} else if ( data . id == 'places' ) {
2011-11-01 20:04:16 +00:00
( pandora . $ui . placesDialog || (
pandora . $ui . placesDialog = pandora . ui . placesDialog ( )
) ) . open ( ) ;
2011-09-24 23:09:48 +00:00
} else if ( data . id == 'events' ) {
2011-11-01 20:04:16 +00:00
( pandora . $ui . eventsDialog || (
pandora . $ui . eventsDialog = pandora . ui . eventsDialog ( )
) ) . open ( ) ;
2011-09-24 23:09:48 +00:00
} else if ( data . id == 'users' ) {
2011-11-11 18:55:13 +00:00
pandora . $ui . usersDialog = pandora . ui . usersDialog ( ) . open ( ) ;
2012-03-22 20:08:51 +00:00
} else if ( data . id == 'statistics' ) {
pandora . $ui . statisticsDialog = pandora . ui . statisticsDialog ( ) . open ( ) ;
2013-08-27 14:43:17 +00:00
} else if ( data . id == 'clearcache' ) {
Ox . Request . clearCache ( ) ;
2013-08-27 14:27:48 +00:00
} else if ( data . id == 'cache' ) {
var enabled = pandora . localStorage ( 'enableCache' ) === false ;
pandora . localStorage ( 'enableCache' , enabled ) ;
Ox . Request . options ( { cache : enabled } )
that . setItemTitle ( 'cache' , Ox . _ ( ( enabled ? 'Disable' : 'Enable' ) + ' Cache' ) ) ;
that [ enabled ? 'enableItem' : 'disableItem' ] ( 'clearcache' ) ;
2012-06-30 11:56:04 +00:00
} else if ( data . id == 'debugmode' ) {
if ( pandora . localStorage ( 'enableDebugMode' ) ) {
pandora . localStorage [ 'delete' ] ( 'enableDebugMode' ) ;
} else {
pandora . localStorage ( 'enableDebugMode' , true ) ;
}
2012-06-30 12:13:35 +00:00
window . location . reload ( ) ;
2012-06-30 11:56:04 +00:00
} else if ( data . id == 'eventlogging' ) {
if ( pandora . localStorage ( 'enableEventLogging' ) ) {
pandora . localStorage [ 'delete' ] ( 'enableEventLogging' ) ;
2011-10-28 18:05:17 +00:00
} else {
2012-06-30 11:56:04 +00:00
pandora . localStorage ( 'enableEventLogging' , true ) ;
2011-10-28 18:05:17 +00:00
}
2012-06-30 12:13:35 +00:00
Ox . Event [ pandora . localStorage ( 'enableEventLogging' ) ? 'bind' : 'unbind' ] ( pandora . logEvent ) ;
2013-05-09 10:13:58 +00:00
that . setItemTitle ( 'eventlogging' , Ox . _ ( ( pandora . localStorage ( 'enableEventLogging' ) ? 'Disable' : 'Enable' ) + ' Event Logging' ) ) ;
2012-06-30 12:13:35 +00:00
} else if ( data . id == 'errorlogs' ) {
2012-06-30 11:56:04 +00:00
pandora . $ui . logsDialog = pandora . ui . logsDialog ( ) . open ( ) ;
2012-05-28 21:53:56 +00:00
} else if ( data . id == 'tests' ) {
pandora . tests ( ) ;
2011-05-25 19:42:45 +00:00
}
2011-09-27 23:30:13 +00:00
} ,
2012-06-07 05:00:47 +00:00
key _alt _control _f : function ( ) {
2012-06-15 14:43:05 +00:00
if ( ! pandora . hasDialogOrScreen ( ) && pandora . getItemIdAndPosition ( ) ) {
2013-08-02 09:53:06 +00:00
pandora . $ui . similarClipsDialog = pandora . ui . similarClipsDialog ( ) . open ( ) ;
2012-06-15 14:43:05 +00:00
}
2012-06-07 05:00:47 +00:00
} ,
2013-01-04 15:07:58 +00:00
key _alt _control _shift _a : function ( ) {
if ( ! pandora . hasDialogOrScreen ( ) && ! ui . item ) {
pandora . $ui . filters . clearFilters ( ) ;
}
} ,
2012-11-01 14:21:44 +00:00
key _alt _control _shift _f : function ( ) {
Ox . Fullscreen . toggle ( ) ;
} ,
2012-04-24 08:37:10 +00:00
key _backtick : function ( ) {
changeFocus ( 1 ) ;
} ,
2011-11-03 14:09:30 +00:00
key _control _comma : function ( ) {
2011-11-07 19:55:39 +00:00
if ( ! pandora . hasDialogOrScreen ( ) ) {
2011-11-10 09:12:09 +00:00
pandora . UI . set ( { page : 'preferences' } ) ;
2011-11-03 14:09:30 +00:00
}
} ,
2011-11-01 12:03:02 +00:00
key _control _f : function ( ) {
2011-11-07 19:55:39 +00:00
if ( ! pandora . hasDialogOrScreen ( ) ) {
2013-07-15 14:20:11 +00:00
if ( ui . _findState . key != 'advanced' ) {
2013-07-09 17:59:13 +00:00
setTimeout ( function ( ) {
pandora . $ui . findInput . focusInput ( true ) ;
} , 25 ) ;
2011-11-11 12:28:20 +00:00
} else {
pandora . $ui . filterDialog = pandora . ui . filterDialog ( ) . open ( ) ;
}
}
} ,
2013-08-01 10:34:07 +00:00
key _control _m : function ( ) {
if ( ! pandora . hasDialogOrScreen ( ) && ! that . isSelected ( ) ) {
that . options ( 'menus' ) [ 0 ] . element . trigger ( 'click' ) ;
}
} ,
2013-03-09 03:49:15 +00:00
key _control _p : function ( ) {
2013-03-09 05:27:07 +00:00
window . open ( document . location . href + '#?print=true' , '_blank' ) ;
2013-03-09 03:49:15 +00:00
} ,
2011-11-11 12:28:20 +00:00
key _control _shift _f : function ( ) {
if ( ! pandora . hasDialogOrScreen ( ) ) {
pandora . $ui . filterDialog = pandora . ui . filterDialog ( ) . open ( ) ;
2011-11-01 12:03:02 +00:00
}
} ,
2013-07-11 18:02:39 +00:00
key _control _shift _slash : function ( ) {
if ( ! pandora . hasDialogOrScreen ( ) ) {
pandora . UI . set ( { page : 'api' } ) ;
}
} ,
2011-11-06 21:24:47 +00:00
key _control _shift _w : function ( ) {
2011-11-07 19:55:39 +00:00
if ( ! pandora . hasDialogOrScreen ( ) || ( ui . item || ui . _list ) ) {
2011-11-06 21:24:47 +00:00
pandora . UI . set ( { find : { conditions : [ ] , operator : '&' } } ) ;
}
} ,
2013-08-03 14:01:36 +00:00
key _control _shift _z : function ( ) {
pandora . redoHistory ( ) ;
} ,
2011-11-03 14:09:30 +00:00
key _control _slash : function ( ) {
2011-11-07 19:55:39 +00:00
if ( ! pandora . hasDialogOrScreen ( ) ) {
2013-07-11 18:02:39 +00:00
pandora . UI . set ( { page : 'help' } ) ;
2011-11-03 14:09:30 +00:00
}
} ,
2011-12-22 15:48:48 +00:00
key _control _space : function ( ) {
if ( ! pandora . hasDialogOrScreen ( ) ) {
2013-07-11 18:02:39 +00:00
pandora . UI . set ( { 'part.tv' : ui . _list } ) ;
2011-12-22 15:48:48 +00:00
pandora . UI . set ( { page : 'tv' } ) ;
}
} ,
2011-11-06 21:20:59 +00:00
key _control _w : function ( ) {
2011-11-07 19:55:39 +00:00
if ( ! pandora . hasDialogOrScreen ( ) ) {
2013-07-15 15:22:11 +00:00
if ( ui . section == 'items' ) {
if ( ui . item ) {
pandora . UI . set ( { item : '' } ) ;
} else if ( ui . _list ) {
pandora . UI . set ( { find : { conditions : [ ] , operator : '&' } } ) ;
}
} else if ( ui . section == 'edits' ) {
pandora . UI . set ( { edit : '' } ) ;
} else if ( ui . section == 'texts' ) {
pandora . UI . set ( { text : '' } ) ;
2011-11-06 21:20:59 +00:00
}
}
} ,
2013-08-03 14:01:36 +00:00
key _control _z : function ( ) {
pandora . undoHistory ( ) ;
} ,
2011-11-01 12:03:02 +00:00
key _shift _a : function ( ) {
2013-07-14 09:27:27 +00:00
hasAnnotations ( ) && pandora . UI . set ( { showAnnotations : ! ui . showAnnotations } ) ;
2011-11-01 12:03:02 +00:00
} ,
key _shift _b : function ( ) {
2011-11-02 06:48:45 +00:00
ui . item && pandora . UI . set ( { showBrowser : ! ui . showBrowser } ) ;
2011-11-01 12:03:02 +00:00
} ,
2012-04-24 08:37:10 +00:00
key _shift _backtick : function ( ) {
changeFocus ( - 1 ) ;
} ,
2014-01-06 12:34:49 +00:00
key _shift _c : function ( ) {
hasClips ( ) && pandora . UI . set ( { showClips : ! ui . showClips } ) ;
} ,
key _shift _d : function ( ) {
hasDocument ( ) && pandora . UI . set ( { showDocument : ! ui . showDocument } ) ;
}
2011-11-06 08:28:10 +00:00
key _shift _f : function ( ) {
! ui . item && pandora . UI . set ( { showFilters : ! ui . showFilters } ) ;
2011-11-01 12:03:02 +00:00
} ,
key _shift _i : function ( ) {
2011-11-02 06:48:45 +00:00
ui . showSidebar && pandora . UI . set ( { showInfo : ! ui . showInfo } ) ;
2011-11-01 12:03:02 +00:00
} ,
key _shift _s : function ( ) {
pandora . UI . set ( { showSidebar : ! ui . showSidebar } ) ;
} ,
2011-11-05 22:14:10 +00:00
key _shift _t : function ( ) {
2013-07-14 09:27:27 +00:00
hasTimeline ( ) && pandora . UI . set ( { showTimeline : ! ui . showTimeline } ) ;
} ,
pandora _edit : function ( ) {
// ...
2011-11-05 22:14:10 +00:00
} ,
2011-09-29 17:25:04 +00:00
pandora _find : function ( ) {
2013-08-02 16:03:23 +00:00
var action = pandora . getListData ( ) . editable ? 'enableItem' : 'disableItem' ,
list = ui . _list ,
previousList = pandora . UI . getPrevious ( ) . _list ;
2011-11-07 12:12:13 +00:00
if ( list != previousList ) {
2013-08-14 20:21:12 +00:00
that . uncheckItem ( previousList == '' ? 'allitems' : 'viewlist' + previousList . replace ( /_/g , Ox . char ( 9 ) ) ) ;
2013-08-14 23:30:15 +00:00
that . checkItem ( list == '' ? 'allitems' : 'viewlist' + list . replace ( /_/g , '\t' ) ) ;
2011-11-07 12:12:13 +00:00
}
2011-09-29 17:25:04 +00:00
that [ action ] ( 'editlist' ) ;
that [ action ] ( 'duplicatelist' ) ;
that [ action ] ( 'deletelist' ) ;
2011-10-13 10:12:00 +00:00
that [ ui . listSelection . length ? 'enableItem' : 'disableItem' ] ( 'newlistfromselection' ) ;
2013-08-02 16:03:23 +00:00
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
2013-08-12 10:35:20 +00:00
that [ Ox . sum ( ui . _filterState . map ( function ( filterState ) {
return filterState . selected . length ;
} ) ) > 0 ? 'enableItem' : 'disableItem' ] ( 'clearfilters' ) ;
2011-10-13 10:12:00 +00:00
} ,
2011-11-06 08:28:10 +00:00
pandora _filters : function ( data ) {
2011-11-05 18:22:23 +00:00
that . replaceMenu ( 'sortMenu' , getSortMenu ( ) ) ;
} ,
2011-10-13 10:12:00 +00:00
pandora _item : function ( data ) {
if ( ! ! data . value != ! ! data . previousValue ) {
2013-08-02 17:38:26 +00:00
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
2011-11-06 08:28:10 +00:00
that [ data . value ? 'disableItem' : 'enableItem' ] ( 'showfilters' ) ;
2011-10-13 10:12:00 +00:00
that [ data . value ? 'enableItem' : 'disableItem' ] ( 'showbrowser' ) ;
2011-10-31 16:45:55 +00:00
that . replaceMenu ( 'sortMenu' , getSortMenu ( ) ) ;
2011-10-13 10:12:00 +00:00
}
2011-10-13 10:19:56 +00:00
if ( ! data . value ) {
that . disableItem ( 'showannotations' ) ;
2012-03-23 12:00:04 +00:00
that . disableItem ( 'showtimeline' ) ;
2012-11-01 14:21:44 +00:00
that . disableItem ( 'entervideofullscreen' ) ;
2012-03-23 12:00:04 +00:00
} else {
2012-04-17 12:05:23 +00:00
if ( [ 'timeline' , 'player' , 'editor' ] . indexOf ( ui . itemView ) > - 1 ) {
2012-03-23 12:00:04 +00:00
that . enableItem ( 'showannotations' ) ;
}
2012-04-17 07:06:19 +00:00
if ( ui . itemView == 'player' ) {
2012-03-23 12:00:04 +00:00
that . enableItem ( 'showtimeline' ) ;
2012-11-01 14:21:44 +00:00
that . enableItem ( 'entervideofullscreen' ) ;
2012-03-23 12:00:04 +00:00
}
2011-10-13 10:19:56 +00:00
}
2011-10-13 10:12:00 +00:00
} ,
2013-02-11 09:00:16 +00:00
pandora _itemsort : function ( data ) {
that . checkItem ( 'sortMenu_sortclips_' + data . value [ 0 ] . key ) ;
that . checkItem ( 'sortMenu_orderclips_' + (
data . value [ 0 ] . operator == '+' ? 'ascending' : 'descending' )
) ;
} ,
2011-10-13 10:12:00 +00:00
pandora _itemview : function ( data ) {
2012-03-23 12:00:04 +00:00
var action ,
2013-08-02 16:03:23 +00:00
isClipView = pandora . isClipView ( ) ,
isVideoView = pandora . isVideoView ( ) ,
wasClipView = pandora . isClipView ( data . previousValue ) ,
wasVideoView = pandora . isVideoView ( data . previousValue ) ;
if ( isClipView != wasClipView || isVideoView != wasVideoView ) {
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
2013-02-11 09:00:16 +00:00
}
2013-08-02 16:03:23 +00:00
that . checkItem ( 'viewMenu_item_' + data . value ) ;
2012-03-18 14:59:00 +00:00
if ( isVideoView ) {
that . checkItem ( 'viewMenu_clips_' + data . value ) ;
}
2011-10-13 10:12:00 +00:00
if ( isVideoView != wasVideoView ) {
that [ isVideoView ? 'enableItem' : 'disableItem' ] ( 'showannotations' ) ;
}
2012-04-17 08:03:11 +00:00
if ( ( data . value == 'player' ) != ( data . previousValue == 'player' ) ) {
2012-04-17 07:06:19 +00:00
action = data . value == 'player' ? 'enableItem' : 'disableItem' ;
2012-03-23 12:00:04 +00:00
that [ action ] ( 'showtimeline' ) ;
2012-11-01 14:21:44 +00:00
that [ action ] ( 'entervideofullscreen' ) ;
2011-11-05 22:14:10 +00:00
}
2013-08-02 16:03:23 +00:00
if ( isClipView != wasClipView ) {
that . replaceMenu ( 'sortMenu' , getSortMenu ( ) ) ;
}
2012-06-15 14:43:05 +00:00
that [
pandora . getItemIdAndPosition ( ) ? 'enableItem' : 'disableItem'
] ( 'findsimilar' ) ;
2011-09-29 17:25:04 +00:00
} ,
pandora _listselection : function ( data ) {
2013-08-02 16:03:23 +00:00
var action = data . value . length ? 'enableItem' : 'disableItem' ;
that [ action ] ( 'newlistfromselection' ) ;
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
2012-06-15 14:43:05 +00:00
that [
pandora . getItemIdAndPosition ( ) ? 'enableItem' : 'disableItem'
] ( 'findsimilar' ) ;
2011-09-29 17:25:04 +00:00
} ,
2012-03-18 14:59:00 +00:00
pandora _listsort : function ( data ) {
2013-07-15 14:20:11 +00:00
if ( pandora . isClipView ( ui . listView , false ) ) {
2013-02-11 09:00:16 +00:00
that . checkItem ( 'sortMenu_sortclips_' + data . value [ 0 ] . key ) ;
that . checkItem ( 'sortMenu_orderclips_' + (
data . value [ 0 ] . operator == '+' ? 'ascending' : 'descending' )
) ;
} else {
that . checkItem ( 'sortMenu_sortitems_' + data . value [ 0 ] . key ) ;
that . checkItem ( 'sortMenu_orderitems_' + (
data . value [ 0 ] . operator == '+' ? 'ascending' : 'descending' )
) ;
}
2012-03-18 14:59:00 +00:00
} ,
2011-09-29 17:25:04 +00:00
pandora _listview : function ( data ) {
2012-03-18 14:59:00 +00:00
that . checkItem ( 'viewMenu_items_' + data . value ) ;
2013-08-02 16:03:23 +00:00
if (
pandora . isClipView ( ) != pandora . isClipView ( data . previousValue )
|| pandora . isVideoView ( ) != pandora . isVideoView ( data . previousValue )
) {
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
}
2011-09-27 23:30:13 +00:00
if ( pandora . isClipView ( ) != pandora . isClipView ( data . previousValue ) ) {
that . replaceMenu ( 'sortMenu' , getSortMenu ( ) ) ;
}
2012-06-15 14:43:05 +00:00
that [
pandora . getItemIdAndPosition ( ) ? 'enableItem' : 'disableItem'
] ( 'findsimilar' ) ;
2011-10-13 10:12:00 +00:00
} ,
2013-07-14 09:27:27 +00:00
pandora _section : function ( ) {
2013-07-15 14:20:11 +00:00
that . replaceMenu ( 'listMenu' , getListMenu ( ) ) ;
2013-08-12 10:35:20 +00:00
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
2013-07-14 10:21:50 +00:00
that . replaceMenu ( 'sortMenu' , getSortMenu ( ) ) ;
2013-07-14 09:27:27 +00:00
} ,
2011-10-13 10:12:00 +00:00
pandora _showannotations : function ( data ) {
2013-05-09 10:13:58 +00:00
that . setItemTitle ( 'showannotations' , Ox . _ ( ( data . value ? 'Hide' : 'Show' ) + ' Annotations' ) ) ;
2011-10-13 10:12:00 +00:00
} ,
pandora _showbrowser : function ( data ) {
2013-05-09 10:13:58 +00:00
that . setItemTitle ( 'showbrowser' , Ox . _ ( ( data . value ? 'Hide' : 'Show' ) + ' {0} Browser' , [ Ox . _ ( pandora . site . itemName . singular ) ] ) ) ;
2011-10-13 10:12:00 +00:00
} ,
2013-07-14 09:27:27 +00:00
pandora _showclips : function ( data ) {
that . setItemTitle ( 'showclips' , Ox . _ ( ( data . value ? 'Hide' : 'Show' ) + ' Clips' ) ) ;
} ,
2014-01-06 12:34:49 +00:00
pandora _showdocument : function ( data ) {
that . setItemTitle ( 'showdocument' , Ox . _ ( ( data . value ? 'Hide' : 'Show' ) + ' Document' ) ) ;
}
2011-11-06 08:28:10 +00:00
pandora _showfilters : function ( data ) {
2013-05-09 10:13:58 +00:00
that . setItemTitle ( 'showfilters' , Ox . _ ( ( data . value ? 'Hide' : 'Show' ) + ' Filters' ) ) ;
2011-10-13 10:12:00 +00:00
} ,
pandora _showinfo : function ( data ) {
2013-05-09 10:13:58 +00:00
that . setItemTitle ( 'showinfo' , Ox . _ ( ( data . value ? 'Hide' : 'Show' ) + ' Info' ) ) ;
2011-10-13 10:12:00 +00:00
} ,
pandora _showsidebar : function ( data ) {
2013-05-09 10:13:58 +00:00
that . setItemTitle ( 'showsidebar' , Ox . _ ( ( data . value ? 'Hide' : 'Show' ) + ' Sidebar' ) ) ;
2011-11-02 06:48:45 +00:00
that [ data . value ? 'enableItem' : 'disableItem' ] ( 'showinfo' ) ;
2011-11-05 22:14:10 +00:00
} ,
pandora _showtimeline : function ( data ) {
2013-05-09 10:13:58 +00:00
that . setItemTitle ( 'showtimeline' , Ox . _ ( ( data . value ? 'Hide' : 'Show' ) + ' Timeline' ) ) ;
2012-06-15 13:20:35 +00:00
} ,
2013-08-02 16:03:23 +00:00
pandora _videopoints : function ( data ) {
2013-08-06 10:48:08 +00:00
var action ;
2013-10-07 19:55:20 +00:00
if ( data . value && data . value [ 'in' ] ) {
2013-08-06 10:48:08 +00:00
action = data . value [ 'in' ] != data . value . out ? 'enableItem' : 'disableItem' ;
that [ action ] ( 'copy' ) ;
that [ action ] ( 'copyadd' ) ;
}
2013-08-02 16:03:23 +00:00
} ,
2012-06-15 13:20:35 +00:00
pandora _videotimeline : function ( data ) {
that . checkItem ( 'viewMenu_timelines_' + data . value ) ;
2011-05-25 19:42:45 +00:00
}
} ) ;
2011-09-18 01:52:43 +00:00
2013-08-03 15:01:47 +00:00
pandora . clipboard . bindEvent ( function ( data , event ) {
2013-08-02 16:03:23 +00:00
if ( Ox . contains ( [ 'add' , 'copy' , 'clear' ] , event ) ) {
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
2013-08-06 19:56:11 +00:00
}
if ( Ox . contains ( [ 'add' , 'copy' , 'paste' ] , event ) && ! fromMenu ) {
that . highlightMenu ( 'itemMenu' ) ;
2013-08-06 19:07:46 +00:00
}
fromMenu = false ;
} ) ;
pandora . history . bindEvent ( function ( data , event ) {
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
2013-08-06 19:56:11 +00:00
if ( Ox . contains ( [ 'undo' , 'redo' ] , event ) && ! fromMenu ) {
2013-08-06 19:07:46 +00:00
that . highlightMenu ( 'itemMenu' ) ;
2013-08-02 16:03:23 +00:00
}
fromMenu = false ;
2013-07-15 09:05:17 +00:00
} ) ;
2012-11-01 14:21:44 +00:00
Ox . Fullscreen . bind ( 'change' , function ( state ) {
2013-05-09 10:13:58 +00:00
that . setItemTitle ( 'togglefullscreen' , Ox . _ ( ( state ? 'Exit' : 'Enter' ) + ' Fullscreen' ) ) ;
2012-11-01 14:21:44 +00:00
} ) ;
2012-04-24 08:37:10 +00:00
function changeFocus ( direction ) {
var elements = [ ] ,
index ,
listData = pandora . getListData ( ) ;
elements [ 0 ] = ! listData . folder ? pandora . $ui . allItems
: pandora . $ui . folderList [ listData . folder ] ;
if ( ! ui . item && ui . showFilters ) {
pandora . $ui . filters . forEach ( function ( $filter ) {
if ( $filter . options ( 'selected' ) . length ) {
elements . push ( $filter ) ;
}
} ) ;
} else if ( ui . item && ui . showBrowser ) {
elements . push ( pandora . $ui . browser ) ;
}
if ( ! ui . item ) {
if ( [ 'map' , 'calendar' ] . indexOf ( ui . listView ) > - 1 ) {
elements . push ( pandora . $ui [ ui . listView ] ) ;
if ( pandora . $ui . clipList . options ( 'selected' ) . length ) {
elements . push ( pandora . $ui . clipList ) ;
}
} else if ( pandora . $ui . list . options ( 'selected' ) . length ) {
elements . push ( pandora . $ui . list ) ;
}
} else {
if ( [ 'player' , 'editor' , 'timeline' , 'map' , 'calendar' ] . indexOf ( ui . itemView ) > - 1 ) {
elements . push ( pandora . $ui [ ui . itemView ] ) ;
}
if (
[ 'clips' , 'map' , 'calendar' ] . indexOf ( ui . itemView ) > - 1
&& pandora . $ui . clipList . options ( 'selected' ) . length
) {
elements . push ( pandora . $ui . clipList ) ;
}
if (
ui . itemView == 'data'
&& pandora . $ui . item . options ( 'selected' ) . length
) {
elements . push ( pandora . $ui . item ) ;
}
}
index = direction == 1 ? - 1 : elements . length ;
Ox . forEach ( elements , function ( element , i ) {
if ( element . hasFocus ( ) ) {
index = i ;
2012-07-04 11:40:37 +00:00
return false ;
2012-04-24 08:37:10 +00:00
}
} ) ;
elements [ Ox . mod ( ( index + direction ) , elements . length ) ] . gainFocus ( ) ;
}
2013-08-02 16:03:23 +00:00
function getItemMenu ( ) {
var listData = pandora . getListData ( ) ,
isClipView = pandora . isClipView ( )
&& pandora . $ui . clipList
&& pandora . $ui . clipList . hasFocus ( ) ,
isVideoView = pandora . isVideoView ( )
&& pandora . $ui [ ui . itemView ]
&& pandora . $ui [ ui . itemView ] . hasFocus ( ) ,
2013-08-12 10:35:20 +00:00
listName = isVideoView || isClipView ? '' : ui . section == 'items' ? 'from List' : 'from Edit' ,
2013-08-02 17:38:26 +00:00
listItemsName = Ox . _ (
2013-08-12 10:35:20 +00:00
ui . section == 'edits' || isVideoView || isClipView ? 'Clips' : pandora . site . itemName . plural
2013-08-02 17:38:26 +00:00
) ,
selectionItems = isVideoView ? 1
: isClipView ? pandora . $ui . clipList . options ( 'selected' ) . length
: ui . listSelection . length ,
selectionItemName = ( selectionItems > 1 ? Ox . formatNumber ( selectionItems ) + ' ' : '' ) + Ox . _ (
2013-08-02 16:03:23 +00:00
isVideoView ? 'Clip'
2013-08-12 10:35:20 +00:00
: ui . section == 'edits' || isClipView ? ( selectionItems == 1 ? 'Clip' : 'Clips' )
2013-08-02 17:38:26 +00:00
: pandora . site . itemName [ selectionItems == 1 ? 'singular' : 'plural' ]
2013-08-02 16:03:23 +00:00
) ,
2013-08-03 15:01:47 +00:00
clipboardItems = pandora . clipboard . items ( ) ,
clipboardType = pandora . clipboard . type ( ) ,
2013-08-02 17:38:26 +00:00
clipboardItemName = clipboardItems == 0 ? ''
: ( clipboardItems > 1 ? Ox . formatNumber ( clipboardItems ) + ' ' : '' ) + Ox . _ (
clipboardType == 'item' ? pandora . site . itemName [ clipboardItems == 1 ? 'singular' : 'plural' ]
: clipboardType == 'clip' ? ( clipboardItems == 1 ? 'Clip' : 'Clips' )
: ''
) ,
2013-08-12 10:35:20 +00:00
canSelect = ui . section == 'edits' || ! ui . item || isClipView ,
2013-08-02 16:03:23 +00:00
canCopy = isVideoView ? ui . videoPoints [ ui . item ] [ 'in' ] != ui . videoPoints [ ui . item ] . out
: isClipView ? pandora . $ui . clipList . options ( 'selected' ) . length
: ! ! ui . listSelection . length ,
2013-08-02 17:38:26 +00:00
canAdd = canCopy && clipboardItems > 0 && ( ( clipboardType == 'item' ) == ( ! isVideoView && ! isClipView ) ) ,
2013-08-02 16:26:08 +00:00
canPaste = ! ui . item && ! isClipView && ! isVideoView
2013-08-03 15:01:47 +00:00
&& listData . editable && listData . type == 'static' && pandora . clipboard . type ( ) == 'item' ,
2013-08-02 17:01:24 +00:00
canCut = canCopy && ! ui . item && ! isClipView && ! isVideoView
2013-08-03 14:01:36 +00:00
&& listData . editable && listData . type == 'static' ,
historyItems = pandora . history . items ( ) ,
undoText = pandora . history . undoText ( ) ,
redoText = pandora . history . redoText ( ) ;
2013-08-02 16:03:23 +00:00
return { id : 'itemMenu' , title : Ox . _ ( 'Item' ) , items : [
{ id : 'add' , title : Ox . _ ( 'Add {0}' , [ Ox . _ ( pandora . site . itemName . singular ) ] ) , disabled : pandora . site . itemRequiresVideo || ! pandora . site . capabilities . canAddItems [ pandora . user . level ] } ,
{ id : 'upload' , title : Ox . _ ( 'Upload Video...' ) , disabled : ! pandora . site . capabilities . canAddItems [ pandora . user . level ] } ,
{ } ,
2013-08-02 17:38:26 +00:00
{ id : 'selectall' , title : Ox . _ ( 'Select All {0}' , [ listItemsName ] ) , disabled : ! canSelect , keyboard : 'control a' } ,
2013-08-02 16:03:23 +00:00
{ id : 'selectnone' , title : Ox . _ ( 'Select None' ) , disabled : ! canSelect , keyboard : 'shift control a' } ,
{ id : 'invertselection' , title : Ox . _ ( 'Invert Selection' ) , disabled : ! canSelect , keyboard : 'alt control a' } ,
{ } ,
2013-08-02 17:38:26 +00:00
{ id : 'cut' , title : Ox . _ ( 'Cut {0}' , [ selectionItemName ] ) , disabled : ! canCut , keyboard : 'control x' } ,
{ id : 'cutadd' , title : Ox . _ ( 'Cut and Add to Clipboard' ) , disabled : ! canCut || ! canAdd , keyboard : 'shift control x' } ,
{ id : 'copy' , title : Ox . _ ( 'Copy {0}' , [ selectionItemName ] ) , disabled : ! canCopy , keyboard : 'control c' } ,
{ id : 'copyadd' , title : Ox . _ ( 'Copy and Add to Clipboard' ) , disabled : ! canCopy || ! canAdd , keyboard : 'shift control c' } ,
{ id : 'paste' , title : clipboardItems == 0 ? Ox . _ ( 'Paste' ) : Ox . _ ( 'Paste {0}' , [ clipboardItemName ] ) , disabled : ! canPaste , keyboard : 'control v' } ,
2013-08-02 16:22:15 +00:00
{ id : 'clearclipboard' , title : Ox . _ ( 'Clear Clipboard' ) , disabled : ! clipboardItems } ,
{ } ,
2013-08-12 10:35:20 +00:00
{ id : 'delete' , title : Ox . _ ( 'Delete {0} {1}' , [ selectionItemName , listName ] ) , disabled : ! canCut , keyboard : 'delete' } ,
2013-08-02 16:03:23 +00:00
{ } ,
2013-08-03 14:01:36 +00:00
{ id : 'undo' , title : undoText ? Ox . _ ( 'Undo {0}' , [ undoText ] ) : Ox . _ ( 'Undo' ) , disabled : ! undoText , keyboard : 'control z' } ,
{ id : 'redo' , title : redoText ? Ox . _ ( 'Redo {0}' , [ redoText ] ) : Ox . _ ( 'Redo' ) , disabled : ! redoText , keyboard : 'shift control z' } ,
{ id : 'clearhistory' , title : Ox . _ ( 'Clear History' ) , disabled : ! historyItems }
2013-08-02 16:03:23 +00:00
] } ;
}
2011-09-27 14:14:40 +00:00
function getListMenu ( lists ) {
2013-07-15 14:20:11 +00:00
var itemNameSingular = ui . section == 'items' ? 'List' : ui . section == 'edits' ? 'Edit' : 'Text' ,
itemNamePlural = ui . section == 'items' ? 'Lists' : ui . section == 'edits' ? 'Edits' : 'Texts' ;
return { id : 'listMenu' , title : Ox . _ ( itemNameSingular ) , items : [ ] . concat (
{
id : 'allitems' ,
title : pandora . getAllItemsTitle ( ) ,
checked : ui . section == 'items' ? ! ui . item && ! ui . _list
: ui . section == 'edits' ? ! ui . edit
: ! ui . text ,
keyboard : 'shift control w'
} ,
2011-09-27 14:14:40 +00:00
[ 'personal' , 'favorite' , 'featured' ] . map ( function ( folder ) {
return {
id : folder + 'lists' ,
2013-07-15 14:20:11 +00:00
title : Ox . _ ( Ox . toTitleCase ( folder ) + ' ' + itemNamePlural ) ,
2011-11-07 12:12:13 +00:00
items : Ox . isUndefined ( lists )
2013-05-09 10:13:58 +00:00
? [ { id : 'loading' , title : Ox . _ ( 'Loading...' ) , disabled : true } ]
2011-11-07 12:12:13 +00:00
: lists [ folder ] . length == 0
2013-07-15 14:20:11 +00:00
? [ { id : 'nolists' , title : Ox . _ ( 'No ' + Ox . toTitleCase ( folder ) + ' ' + itemNamePlural ) , disabled : true } ]
2011-11-07 12:12:13 +00:00
: lists [ folder ] . map ( function ( list ) {
2011-09-27 14:14:40 +00:00
return {
2013-08-14 20:21:12 +00:00
id : 'viewlist' + list . id . replace ( /_/g , Ox . char ( 9 ) ) ,
2012-02-22 10:14:07 +00:00
title : Ox . encodeHTMLEntities ( (
folder == 'favorite' ? list . user + ': ' : ''
) + list . name ) ,
2013-07-15 14:20:11 +00:00
checked : ui . section == 'items' ? list . id == ui . _list
: ui . section == 'edits' ? list . id == ui . edit
: list . id == ui . text
2011-09-27 14:14:40 +00:00
} ;
2011-11-07 12:12:13 +00:00
} )
2011-09-27 14:14:40 +00:00
} ;
} ) ,
[
{ } ,
2013-07-15 14:20:11 +00:00
{ id : 'newlist' , title : Ox . _ ( 'New ' + itemNameSingular ) , disabled : isGuest , keyboard : 'control n' } ,
] ,
ui . section != 'texts' ? [
{ id : 'newlistfromselection' , title : Ox . _ ( 'New ' + itemNameSingular + ' from Selection' ) , disabled : isGuest || ui . listSelection . length == 0 , keyboard : 'shift control n' } ,
{ id : 'newsmartlist' , title : Ox . _ ( 'New Smart ' + itemNameSingular ) , disabled : isGuest , keyboard : 'alt control n' } ,
{ id : 'newsmartlistfromresults' , title : Ox . _ ( 'New Smart ' + itemNameSingular + ' from Results' ) , disabled : isGuest , keyboard : 'shift alt control n' } ,
] : [ ] ,
[
2011-09-27 14:14:40 +00:00
{ } ,
2013-07-15 14:20:11 +00:00
{ id : 'duplicatelist' , title : Ox . _ ( 'Duplicate Selected ' + itemNameSingular ) , disabled : isGuest || ! ui . _list , keyboard : 'control d' } ,
{ id : 'editlist' , title : Ox . _ ( 'Edit Selected ' + itemNameSingular + '...' ) , disabled : isGuest || ! ui . _list , keyboard : 'control e' } ,
{ id : 'deletelist' , title : Ox . _ ( 'Delete Selected ' + itemNameSingular + '...' ) , disabled : isGuest || ! ui . _list , keyboard : 'delete' }
] ,
ui . section == 'items' ? [
2011-12-22 15:48:48 +00:00
{ } ,
2013-05-09 10:13:58 +00:00
{ id : 'print' , title : Ox . _ ( 'Print' ) , keyboard : 'control p' } ,
{ id : 'tv' , title : Ox . _ ( 'TV' ) , keyboard : 'control space' }
2013-07-15 14:20:11 +00:00
] : [ ]
2011-09-27 14:14:40 +00:00
) } ;
} ;
function getSortMenu ( ) {
2013-07-15 14:20:11 +00:00
var isClipView = pandora . isClipView ( ) ,
2013-02-11 09:00:16 +00:00
clipItems = ( isClipView ? pandora . site . clipKeys . map ( function ( key ) {
2012-03-21 09:22:31 +00:00
return Ox . extend ( Ox . clone ( key ) , {
checked : ui . listSort [ 0 ] . key == key . id ,
2013-05-09 10:13:58 +00:00
title : ( ! ui . item ? Ox . _ ( 'Clip' ) + ' ' : '' ) + Ox . _ ( key . title )
2012-03-21 09:22:31 +00:00
} ) ;
2013-02-11 09:00:16 +00:00
} ) : [ ] ) . concat ( ! ui . item ? pandora . site . sortKeys . map ( function ( key ) {
return Ox . extend ( {
checked : ui . listSort [ 0 ] . key == key . id
} , key ) ;
} ) : [ ] ) ;
2013-05-09 10:13:58 +00:00
return { id : 'sortMenu' , title : Ox . _ ( 'Sort' ) , items : [
2013-07-14 10:21:50 +00:00
{ id : 'sortitems' , title : Ox . _ ( 'Sort {0} by' , [ Ox . _ ( pandora . site . itemName . plural ) ] ) , disabled : ui . section != 'items' || ( ! ui . item && isClipView ) , items : [
2013-02-11 09:00:16 +00:00
{ group : 'itemsort' , min : 1 , max : 1 , items : pandora . site . sortKeys . map ( function ( key ) {
return Ox . extend ( {
checked : ui . listSort [ 0 ] . key == key . id
2013-05-09 10:13:58 +00:00
} , key , {
title : Ox . _ ( key . title )
} ) ;
2013-02-11 09:00:16 +00:00
} ) }
] } ,
2013-07-14 10:21:50 +00:00
{ id : 'orderitems' , title : Ox . _ ( 'Order {0}' , [ Ox . _ ( pandora . site . itemName . plural ) ] ) , disabled : ui . section != 'items' || ( ! ui . item && isClipView ) , items : [
2013-02-11 09:00:16 +00:00
{ group : 'itemorder' , min : 1 , max : 1 , items : [
2013-05-09 10:13:58 +00:00
{ id : 'ascending' , title : Ox . _ ( 'Ascending' ) , checked : ( ui . listSort [ 0 ] . operator || pandora . getSortOperator ( ui . listSort [ 0 ] . key ) ) == '+' } ,
{ id : 'descending' , title : Ox . _ ( 'Descending' ) , checked : ( ui . listSort [ 0 ] . operator || pandora . getSortOperator ( ui . listSort [ 0 ] . key ) ) == '-' }
2013-02-11 09:00:16 +00:00
] }
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'sortclips' , title : Ox . _ ( 'Sort Clips by' ) , disabled : ! isClipView , items : [
2013-02-11 09:00:16 +00:00
{ group : 'clipsort' , min : 1 , max : 1 , items : clipItems }
2011-09-27 14:14:40 +00:00
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'orderclips' , title : Ox . _ ( 'Order Clips' ) , disabled : ! isClipView , items : [
2013-02-11 09:00:16 +00:00
{ group : 'cliporder' , min : 1 , max : 1 , items : [
2013-05-09 10:13:58 +00:00
{
id : 'ascending' ,
title : Ox . _ ( 'Ascending' ) ,
checked : ( ui . listSort [ 0 ] . operator || pandora . getSortOperator ( ui . listSort [ 0 ] . key ) ) == '+'
} ,
{
id : 'descending' ,
title : Ox . _ ( 'Descending' ) ,
checked : ( ui . listSort [ 0 ] . operator || pandora . getSortOperator ( ui . listSort [ 0 ] . key ) ) == '-'
}
2011-09-27 14:14:40 +00:00
] }
] } ,
2013-05-09 10:13:58 +00:00
{ id : 'advancedsort' , title : Ox . _ ( 'Advanced Sort...' ) , keyboard : 'shift control s' , disabled : true } ,
2011-09-27 14:14:40 +00:00
{ } ,
2013-07-15 14:20:11 +00:00
{ id : 'sortfilters' , title : Ox . _ ( 'Sort Filters' ) , disabled : ui . section != 'items' , items : ui . filters . map ( function ( filter ) {
2011-09-27 14:14:40 +00:00
return {
2011-11-06 08:28:10 +00:00
id : 'sortfilter' + filter . id ,
2013-05-09 10:13:58 +00:00
title : Ox . _ ( 'Sort {0} Filter by' , [ Ox . _ ( Ox . getObjectById ( pandora . site . filters , filter . id ) . title ) ] ) ,
2011-09-27 14:14:40 +00:00
items : [
2011-11-06 08:28:10 +00:00
{ group : 'sortfilter' + filter . id , min : 1 , max : 1 , items : [
2013-05-09 10:13:58 +00:00
{ id : 'name' , title : Ox . _ ( 'Name' ) , checked : filter . sort [ 0 ] . key == 'name' } ,
{ id : 'items' , title : Ox . _ ( 'Items' ) , checked : filter . sort [ 0 ] . key == 'items' }
2011-09-27 14:14:40 +00:00
] }
]
}
} ) } ,
2013-07-15 14:20:11 +00:00
{ id : 'orderfilters' , title : Ox . _ ( 'Order Filters' ) , disabled : ui . section != 'items' , items : ui . filters . map ( function ( filter ) {
2011-09-27 14:14:40 +00:00
return {
2011-11-06 08:28:10 +00:00
id : 'orderfilter' + filter . id ,
2013-05-09 10:13:58 +00:00
title : Ox . _ ( 'Order {0} Filter' , [ Ox . _ ( Ox . getObjectById ( pandora . site . filters , filter . id ) . title ) ] ) ,
2011-09-27 14:14:40 +00:00
items : [
2011-11-06 08:28:10 +00:00
{ group : 'orderfilter' + filter . id , min : 1 , max : 1 , items : [
2013-05-09 10:13:58 +00:00
{ id : 'ascending' , title : Ox . _ ( 'Ascending' ) , checked : filter . sort [ 0 ] . operator == '+' } ,
{ id : 'descending' , title : Ox . _ ( 'Descending' ) , checked : filter . sort [ 0 ] . operator == '-' }
2011-09-27 14:14:40 +00:00
] }
]
}
} ) }
] } ;
}
2013-07-14 09:27:27 +00:00
function hasAnnotations ( ) {
2013-08-02 16:03:23 +00:00
return ui . section == 'items' && ui . item && pandora . isVideoView ( ) ;
2013-07-14 09:27:27 +00:00
}
function hasClips ( ) {
return ui . section == 'edits' && ui . edit ;
}
2014-01-06 12:34:49 +00:00
function hasDocument ( ) {
return ui . section == 'items' && ui . item && ui . itemView == 'documents' ;
}
2013-07-14 09:27:27 +00:00
function hasTimeline ( ) {
return (
ui . section == 'items' && ui . item && ui . itemView == 'player'
) || (
ui . section == 'edits' && ui . edit
) ;
}
2013-08-02 16:03:23 +00:00
that . replaceItemMenu = function ( ) {
2013-08-02 17:01:24 +00:00
that . replaceMenu ( 'itemMenu' , getItemMenu ( ) ) ;
2013-08-02 16:03:23 +00:00
return that ;
} ;
2011-11-07 12:12:13 +00:00
// fixme: the sidebar makes (almost) the same requests.
2011-09-18 01:52:43 +00:00
// is it ok to make them twice, or should the sidebar trigger the menu replace?
var counter = 0 ,
lists = { } ,
queries = {
// fixme: duplicated
personal : { conditions : [
2011-09-28 17:32:03 +00:00
{ key : 'user' , value : pandora . user . username , operator : '==' } ,
{ key : 'status' , value : 'featured' , operator : '!=' }
2011-09-18 01:52:43 +00:00
] , operator : '&' } ,
favorite : { conditions : [
{ key : 'subscribed' , value : true , operator : '=' } ,
2011-09-28 17:32:03 +00:00
{ key : 'status' , value : 'featured' , operator : '!=' } ,
2011-09-18 01:52:43 +00:00
] , operator : '&' } ,
featured : { conditions : [
{ key : 'status' , value : 'featured' , operator : '=' }
] , operator : '&' }
} ;
Ox . forEach ( queries , function ( query , folder ) {
2013-07-15 14:20:11 +00:00
pandora . api [
ui . section == 'items' ? 'findLists'
: ui . section == 'edits' ? 'findEdits'
: 'findTexts'
] ( {
2011-09-18 01:52:43 +00:00
query : query ,
2011-11-07 12:12:13 +00:00
keys : [ 'id' , 'name' , 'user' ] ,
sort : [ { key : 'position' , operator : '+' } ]
2011-09-18 01:52:43 +00:00
} , function ( result ) {
lists [ folder ] = result . data . items ;
if ( ++ counter == 3 ) {
2011-09-27 14:14:40 +00:00
pandora . $ui . mainMenu . replaceMenu ( 'listMenu' , getListMenu ( lists ) ) ;
2011-09-18 01:52:43 +00:00
}
} ) ;
} ) ;
2011-05-25 19:42:45 +00:00
return that ;
2011-09-27 22:12:37 +00:00
2011-05-25 19:42:45 +00:00
} ;