2011-05-25 19:42:45 +00:00
// vim: et:ts=4:sw=4:sts=4:ft=js
pandora . ui . mainMenu = function ( ) {
2011-06-06 15:48:11 +00:00
var isGuest = pandora . user . level == 'guest' ,
2011-05-25 19:42:45 +00:00
that = new Ox . MainMenu ( {
extras : [
$ ( '<div>' ) . html ( 'beta' ) . css ( { marginRight : '8px' , color : 'rgb(128, 128, 128)' } ) ,
2011-06-06 15:48:11 +00:00
pandora . $ui . loadingIcon = new Ox . LoadingIcon ( {
2011-05-25 19:42:45 +00:00
size : 'medium'
} )
] ,
id : 'mainMenu' ,
menus : [
2011-06-06 15:48:11 +00:00
{ id : pandora . site . site . id + 'Menu' , title : pandora . site . site . name , items : [
2011-05-25 19:42:45 +00:00
{ id : 'home' , title : 'Home' } ,
{ } ,
2011-06-06 15:48:11 +00:00
{ id : 'about' , title : 'About ' + pandora . site . site . name } ,
{ id : 'news' , title : pandora . site . site . name + ' News' } ,
2011-05-25 19:42:45 +00:00
{ id : 'tour' , title : 'Take a Tour' } ,
{ id : 'faq' , title : 'Frequently Asked Questions' } ,
{ id : 'terms' , title : 'Terms of Service' } ,
{ } ,
{ id : 'software' , title : 'Software' , items : [
{ id : 'about' , title : 'About' } ,
{ id : 'download' , title : 'Download' } ,
{ id : 'report' , title : 'Report a Bug' }
] } ,
{ } ,
2011-06-06 15:48:11 +00:00
{ id : 'contact' , title : 'Contact ' + pandora . site . site . name }
2011-05-25 19:42:45 +00:00
] } ,
{ id : 'userMenu' , title : 'User' , items : [
2011-06-06 15:48:11 +00:00
{ id : 'username' , title : 'User: ' + ( isGuest ? 'not logged in' : pandora . user . username ) , disabled : true } ,
2011-05-25 19:42:45 +00:00
{ } ,
{ id : 'preferences' , title : 'Preferences...' , disabled : isGuest , keyboard : 'control ,' } ,
{ } ,
{ id : 'register' , title : 'Register...' , disabled : ! isGuest } ,
{ id : 'loginlogout' , title : isGuest ? 'Login...' : 'Logout...' }
] } ,
{ id : 'listMenu' , title : 'List' , items : [
{ id : 'history' , title : 'History' , items : [
2011-06-06 15:48:11 +00:00
{ id : 'allmovies' , title : 'All ' + pandora . site . itemName . plural }
2011-05-25 19:42:45 +00:00
] } ,
{ id : 'lists' , title : 'View List' , items : [
{ id : 'favorites' , title : 'Favorites' }
] } ,
{ id : 'features' , title : 'View Feature' , items : [
{ id : 'situationistfilm' , title : 'Situationist Film' } ,
{ id : 'timelines' , title : 'Timelines' }
] } ,
{ } ,
{ id : 'newlist' , title : 'New List...' , keyboard : 'control n' } ,
{ id : 'newlistfromselection' , title : 'New List from Selection...' , disabled : true , keyboard : 'shift control n' } ,
{ id : 'newsmartlist' , title : 'New Smart List...' , keyboard : 'alt control n' } ,
{ id : 'newsmartlistfromresults' , title : 'New Smart List from Results...' , keyboard : 'shift alt control n' } ,
{ } ,
2011-06-06 15:48:11 +00:00
{ id : 'addmovietolist' , title : [ 'Add Selected ' + pandora . site . itemName . singular + ' to List...' , 'Add Selected ' + pandora . site . itemName . plural + ' to List...' ] , disabled : true } ,
2011-05-25 19:42:45 +00:00
{ } ,
{ id : 'setposterframe' , title : 'Set Poster Frame' , disabled : true }
] } ,
{ id : 'editMenu' , title : 'Edit' , items : [
{ id : 'undo' , title : 'Undo' , disabled : true , keyboard : 'control z' } ,
{ id : 'redo' , title : 'Redo' , disabled : true , keyboard : 'shift control z' } ,
{ } ,
{ id : 'cut' , title : 'Cut' , disabled : true , keyboard : 'control x' } ,
{ id : 'copy' , title : 'Copy' , disabled : true , keyboard : 'control c' } ,
{ id : 'paste' , title : 'Paste' , disabled : true , keyboard : 'control v' } ,
{ id : 'delete' , title : 'Delete' , disabled : true , keyboard : 'delete' } ,
{ } ,
{ id : 'selectall' , title : 'Select All' , disabled : true , keyboard : 'control a' } ,
{ id : 'selectnone' , title : 'Select None' , disabled : true , keyboard : 'shift control a' } ,
{ id : 'invertselection' , title : 'Invert Selection' , disabled : true , keyboard : 'alt control a' }
] } ,
{ id : 'viewMenu' , title : 'View' , items : [
2011-06-06 15:48:11 +00:00
{ id : 'movies' , title : 'View ' + pandora . site . itemName . plural , items : [
{ group : 'viewmovies' , min : 0 , max : 1 , items : $ . map ( pandora . site . listViews , function ( view , i ) {
2011-05-25 19:42:45 +00:00
return $ . extend ( {
2011-06-06 15:48:11 +00:00
checked : pandora . user . ui . lists [ pandora . user . ui . list ] . listView == view . id ,
2011-05-25 19:42:45 +00:00
} , view ) ;
} ) } ,
] } ,
{ id : 'icons' , title : 'Icons' , items : [
{ id : 'poster' , title : 'Poster' } ,
{ id : 'still' , title : 'Still' } ,
{ id : 'timeline' , title : 'Timeline' }
] } ,
{ id : 'info' , title : 'Info' , items : [
{ id : 'poster' , title : 'Poster' } ,
{ id : 'video' , title : 'Video' }
] } ,
{ } ,
2011-06-06 15:48:11 +00:00
{ id : 'openmovie' , title : [ 'Open ' + pandora . site . itemName . singular , 'Open ' + pandora . site . itemName . plural ] , disabled : true , items : [
{ group : 'movieview' , min : 0 , max : 1 , items : $ . map ( pandora . site . itemViews , function ( view , i ) {
2011-05-25 19:42:45 +00:00
return $ . extend ( {
2011-06-06 15:48:11 +00:00
checked : pandora . user . ui . itemView == view . id ,
2011-05-25 19:42:45 +00:00
} , view ) ;
} ) } ,
] } ,
{ } ,
{ id : 'lists' , title : 'Hide Lists' , keyboard : 'shift l' } ,
{ id : 'info' , title : 'Hide Info' , keyboard : 'shift i' } ,
{ id : 'groups' , title : 'Hide Groups' , keyboard : 'shift g' } ,
2011-06-06 15:48:11 +00:00
{ id : 'movies' , title : 'Hide ' + pandora . site . itemName . plural , disabled : true , keyboard : 'shift m' }
2011-05-25 19:42:45 +00:00
] } ,
{ id : 'sortMenu' , title : 'Sort' , items : [
2011-06-06 15:48:11 +00:00
{ id : 'sortmovies' , title : 'Sort ' + pandora . site . itemName . plural + ' by' , items : [
{ group : 'sortmovies' , min : 1 , max : 1 , items : $ . map ( pandora . site . sortKeys , function ( key , i ) {
2011-05-25 19:42:45 +00:00
return $ . extend ( {
2011-06-06 15:48:11 +00:00
checked : pandora . user . ui . lists [ pandora . user . ui . list ] . sort [ 0 ] . key == key . id ,
2011-05-25 19:42:45 +00:00
} , key ) ;
} ) }
] } ,
2011-06-06 15:48:11 +00:00
{ id : 'ordermovies' , title : 'Order ' + pandora . site . itemName . plural , items : [
2011-05-25 19:42:45 +00:00
{ group : 'ordermovies' , min : 1 , max : 1 , items : [
2011-06-06 15:48:11 +00:00
{ id : 'ascending' , title : 'Ascending' , checked : pandora . user . ui . lists [ pandora . user . ui . list ] . sort [ 0 ] . operator === '' } ,
{ id : 'descending' , title : 'Descending' , checked : pandora . user . ui . lists [ pandora . user . ui . list ] . sort [ 0 ] . operator == '-' }
2011-05-25 19:42:45 +00:00
] }
] } ,
{ id : 'advancedsort' , title : 'Advanced Sort...' , keyboard : 'shift control s' } ,
{ } ,
{ id : 'groupsstuff' , title : 'Groups Stuff' }
] } ,
{ id : 'findMenu' , title : 'Find' , items : [
{ id : 'find' , title : 'Find' , items : [
2011-06-06 15:48:11 +00:00
{ group : 'find' , min : 1 , max : 1 , items : $ . map ( pandora . site . findKeys , function ( key , i ) {
2011-05-25 19:42:45 +00:00
return $ . extend ( {
2011-06-06 15:48:11 +00:00
checked : pandora . user . ui . findQuery . conditions . length &&
( pandora . user . ui . findQuery . conditions [ 0 ] . key == key . id ||
( pandora . user . ui . findQuery . conditions [ 0 ] . key === '' && key . id == 'all' ) ) ,
2011-05-25 19:42:45 +00:00
} , key )
} ) }
] } ,
{ id : 'advancedfind' , title : 'Advanced Find...' , keyboard : 'shift control f' }
] } ,
{ id : 'dataMenu' , title : 'Data' , items : [
{ id : 'titles' , title : 'Manage Titles...' } ,
{ id : 'names' , title : 'Manage Names...' } ,
{ } ,
{ id : 'posters' , title : 'Manage Stills...' } ,
{ id : 'posters' , title : 'Manage Posters...' } ,
{ } ,
{ id : 'places' , title : 'Manage Places...' } ,
{ id : 'events' , title : 'Manage Events...' } ,
{ } ,
{ id : 'users' , title : 'Manage Users...' } ,
{ id : 'lists' , title : 'Manage Lists...' } ,
] } ,
{ id : 'codeMenu' , title : 'Code' , items : [
{ id : 'download' , title : 'Download' } ,
{ id : 'contribute' , title : 'Contribute' } ,
{ id : 'report' , title : 'Report a Bug' } ,
] } ,
{ id : 'helpMenu' , title : 'Help' , items : [
2011-06-06 15:48:11 +00:00
{ id : 'help' , title : pandora . site . site . name + ' Help' , keyboard : 'shift ?' }
2011-05-25 19:42:45 +00:00
] } ,
{ id : 'debugMenu' , title : 'Debug' , items : [
{ id : 'query' , title : 'Show pandora.Query' } ,
{ id : 'resetui' , title : 'Reset UI Settings' }
] } ,
{ id : 'testMenu' , title : 'Test' , items : [
{ group : 'foogroup' , items : [
{ id : 'item1' , title : 'Item 1' } ,
{ id : 'item2' , title : 'Item 2' }
] }
] }
]
} )
. bindEvent ( {
change : function ( event , data ) {
if ( data . id == 'find' ) {
var id = data . checked [ 0 ] . id ;
2011-06-06 15:48:11 +00:00
pandora . $ui . findSelect . selectItem ( id ) ;
2011-05-25 19:42:45 +00:00
} else if ( data . id == 'movieview' ) {
var view = data . checked [ 0 ] . id ;
var id = document . location . pathname . split ( '/' ) [ 1 ] ;
if ( view == 'info' )
url ( id + '/info' ) ;
else
url ( id ) ;
} else if ( data . id == 'ordermovies' ) {
var id = data . checked [ 0 ] . id ;
2011-06-06 15:48:11 +00:00
pandora . $ui . list . sortList ( pandora . user . ui . lists [ pandora . user . ui . list ] . sort [ 0 ] . key , id == 'ascending' ? '' : '-' ) ;
2011-05-25 19:42:45 +00:00
} else if ( data . id == 'sortmovies' ) {
var id = data . checked [ 0 ] . id ,
operator = pandora . getSortOperator ( id ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . mainMenu . checkItem ( 'sortMenu_ordermovies_' + ( operator === '' ? 'ascending' : 'descending' ) ) ;
pandora . $ui . sortSelect . selectItem ( id ) ;
pandora . $ui . list . sortList ( id , operator ) ;
2011-05-25 19:42:45 +00:00
pandora . URL . set ( pandora . Query . toString ( ) ) ;
} else if ( data . id == 'viewmovies' ) {
var view = data . checked [ 0 ] . id ;
url ( '#view=' + view ) ;
}
} ,
click : function ( event , data ) {
if ( data . id == 'about' ) {
var $dialog = new Ox . Dialog ( {
buttons : [
new Ox . Button ( {
id : 'close' ,
title : 'Close'
} ) . bindEvent ( {
click : function ( ) {
$dialog . close ( ) ;
}
} )
] ,
id : 'about' ,
title : 'About'
} ) . open ( ) ;
} else if ( data . id == 'home' ) {
var $dialog = new Ox . Dialog ( {
buttons : [
new Ox . Button ( {
id : 'close' ,
title : 'Close'
} ) . bindEvent ( {
click : function ( ) {
$dialog . close ( ) ;
}
} )
] ,
height : 498 ,
id : 'home' ,
keys : { enter : 'close' , escape : 'close' } ,
2011-06-06 15:48:11 +00:00
title : pandora . site . site . name ,
2011-05-25 19:42:45 +00:00
width : 800
} ) . open ( ) ;
} else if ( data . id == 'register' ) {
2011-06-06 15:48:11 +00:00
pandora . $ui . accountDialog = pandora . ui . accountDialog ( 'register' ) . open ( ) ;
2011-05-25 19:42:45 +00:00
} else if ( data . id == 'loginlogout' ) {
2011-06-06 15:48:11 +00:00
pandora . $ui . accountDialog = ( pandora . user . level == 'guest' ?
2011-05-25 19:42:45 +00:00
pandora . ui . accountDialog ( 'login' ) : pandora . ui . accountLogoutDialog ( ) ) . open ( ) ;
} else if ( data . id == 'places' ) {
2011-06-06 15:48:11 +00:00
pandora . $ui . placesDialog = pandora . ui . placesDialog ( ) . open ( ) ;
2011-05-25 19:42:45 +00:00
/ *
var $manage = new Ox . SplitPanel ( {
elements : [
{
collapsible : true ,
element : new Ox . SplitPanel ( {
elements : [
{
element : new Ox . Toolbar ( {
orientation : 'horizontal' ,
size : 44
} ) . append (
2011-06-06 15:48:11 +00:00
pandora . $ui . findPlacesElement = new Ox . FormElementGroup ( {
2011-05-25 19:42:45 +00:00
elements : [
2011-06-06 15:48:11 +00:00
pandora . $ui . findPlacesSelect = new Ox . Select ( {
2011-05-25 19:42:45 +00:00
id : 'findPlacesSelect' ,
items : [
{ id : 'name' , title : 'Find: Name' } ,
{ id : 'region' , title : 'Find: Region' } ,
{ id : 'user' , title : 'Find: User' }
] ,
overlap : 'right' ,
type : 'image'
} )
. bindEvent ( {
change : function ( event , data ) {
2011-06-06 15:48:11 +00:00
pandora . $ui . findPlacesSelect . loseFocus ( ) ;
pandora . $ui . findPlacesInput . options ( {
2011-05-25 19:42:45 +00:00
placeholder : data . selected [ 0 ] . title
} ) ;
}
} ) ,
2011-06-06 15:48:11 +00:00
pandora . $ui . findPlacesInput = new Ox . Input ( {
2011-05-25 19:42:45 +00:00
clear : true ,
id : 'findPlacesInput' ,
placeholder : 'Find: Name' ,
width : 234
} )
] ,
id : 'findPlacesElement'
} )
. css ( {
float : 'left' ,
margin : '4px'
} )
) . append (
2011-06-06 15:48:11 +00:00
pandora . $ui . sortPlacesSelect = new Ox . Select ( {
2011-05-25 19:42:45 +00:00
id : 'sortPlacesSelect' ,
items : [
{ id : 'name' , title : 'Sort by Name' , checked : true } ,
{ id : 'region' , title : 'Sort by Region' } ,
{ id : 'size' , title : 'Sort by Size' } ,
{ id : 'latitude' , title : 'Sort by Latitude' } ,
{ id : 'longitude' , title : 'Sort by Longitude' } ,
{ id : 'clips' , title : 'Sort by Number of Clips' } ,
{ id : 'user' , title : 'Sort by User' } ,
{ id : 'datecreated' , title : 'Sort by Date Added' } ,
{ id : 'datemodified' , title : 'Sort by Date Modified' }
] ,
width : 246
} )
. css ( {
float : 'left' ,
margin : '0 4px 4px 4px'
} )
) ,
size : 44
} ,
{
element : new Ox . Element ( 'div' )
} ,
{
element : new Ox . Toolbar ( {
orientation : 'horizontal' ,
size : 16
} ) ,
size : 16
}
] ,
orientation : 'vertical'
} ) ,
size : 256
} ,
{
element : new Ox . SplitPanel ( {
elements : [
{
element : new Ox . Toolbar ( {
orientation : 'horizontal' ,
size : 24
} ) . append (
2011-06-06 15:48:11 +00:00
pandora . $ui . labelsButton = new Ox . Button ( {
2011-05-25 19:42:45 +00:00
id : 'labelsButton' ,
title : [
{ id : 'show' , title : 'Show Labels' } ,
{ id : 'hide' , title : 'Hide Labels' }
] ,
width : 96
} )
. css ( {
float : 'left' ,
margin : '4px'
} )
) . append (
2011-06-06 15:48:11 +00:00
pandora . $ui . findMapInput = new Ox . Input ( {
2011-05-25 19:42:45 +00:00
clear : true ,
id : 'findMapInput' ,
placeholder : 'Find on Map' ,
width : 192
} )
. css ( {
float : 'right' ,
margin : '4px'
} )
. bindEvent ( {
submit : function ( event , data ) {
2011-06-06 15:48:11 +00:00
pandora . $ui . map . find ( data . value , function ( location ) {
2011-05-25 19:42:45 +00:00
2011-06-06 15:48:11 +00:00
pandora . $ui . placeNameInput . options ( {
2011-05-25 19:42:45 +00:00
disabled : false ,
value : location . name
} ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . placeAliasesInput . options ( {
2011-05-25 19:42:45 +00:00
disabled : false
} ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . placeGeonameLabel . options ( {
2011-05-25 19:42:45 +00:00
disabled : false ,
title : location . names . join ( ', ' )
} ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . removePlaceButton . options ( {
2011-05-25 19:42:45 +00:00
disabled : false
} ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . addPlaceButton . options ( {
2011-05-25 19:42:45 +00:00
disabled : false
} ) ;
} ) ;
}
} )
) ,
size : 24
} ,
{
2011-06-06 15:48:11 +00:00
element : pandora . $ui . map = new Ox . Map ( {
2011-05-25 19:42:45 +00:00
places : [ 'Boston' , 'Brussels' , 'Barcelona' , 'Berlin' , 'Beirut' , 'Bombay' , 'Bangalore' , 'Beijing' ]
} )
. css ( {
left : 0 ,
top : 0 ,
right : 0 ,
bottom : 0
} )
. bindEvent ( {
select : function ( event , location ) {
2011-06-06 15:48:11 +00:00
pandora . $ui . placeNameInput . options ( {
2011-05-25 19:42:45 +00:00
disabled : false ,
value : location . name
} ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . placeAliasesInput . options ( {
2011-05-25 19:42:45 +00:00
disabled : false
} ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . placeGeonameLabel . options ( {
2011-05-25 19:42:45 +00:00
disabled : false ,
title : location . names . join ( ', ' )
} ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . removePlaceButton . options ( {
2011-05-25 19:42:45 +00:00
disabled : false
} ) ;
2011-06-06 15:48:11 +00:00
pandora . $ui . addPlaceButton . options ( {
2011-05-25 19:42:45 +00:00
disabled : false
} ) ;
}
} )
} ,
{
2011-06-06 15:48:11 +00:00
element : pandora . $ui . bottomBar = new Ox . Toolbar ( {
2011-05-25 19:42:45 +00:00
orientation : 'horizontal' ,
size : 24
} )
. append (
2011-06-06 15:48:11 +00:00
pandora . $ui . placeNameInput = new Ox . Input ( {
2011-05-25 19:42:45 +00:00
disabled : true ,
id : 'placeName' ,
placeholder : 'Name' ,
width : 128
} )
. css ( {
float : 'left' ,
margin : '4px 0 0 4px'
} )
)
. append (
2011-06-06 15:48:11 +00:00
pandora . $ui . placeAliasesInput = new Ox . Input ( {
2011-05-25 19:42:45 +00:00
disabled : true ,
id : 'aliases' ,
placeholder : 'Aliases' ,
width : 128
} )
. css ( {
float : 'left' ,
margin : '4px 0 0 4px'
} )
)
. append (
2011-06-06 15:48:11 +00:00
pandora . $ui . placeGeonameLabel = new Ox . Label ( {
2011-05-25 19:42:45 +00:00
disabled : true ,
id : 'placeGeoname' ,
title : 'Geoname' ,
2011-06-06 15:48:11 +00:00
width : parseInt ( pandora . $ui . document . width ( ) * 0.8 ) - 256 - 256 - 32 - 24
2011-05-25 19:42:45 +00:00
} )
. css ( {
float : 'left' ,
margin : '4px 0 0 4px'
} )
)
. append (
2011-06-06 15:48:11 +00:00
pandora . $ui . addPlaceButton = new Ox . Button ( {
2011-05-25 19:42:45 +00:00
disabled : true ,
id : 'addPlaceButton' ,
title : 'add' ,
type : 'image'
} )
. css ( {
float : 'right' ,
margin : '4px 4px 0 0'
} )
)
. append (
2011-06-06 15:48:11 +00:00
pandora . $ui . removePlaceButton = new Ox . Button ( {
2011-05-25 19:42:45 +00:00
disabled : true ,
id : 'removePlaceButton' ,
title : 'remove' ,
type : 'image'
} )
. css ( {
float : 'right' ,
margin : '4px 4px 0 0'
} )
) ,
size : 24
}
] ,
orientation : 'vertical'
} )
}
] ,
orientation : 'horizontal'
} ) . css ( {
top : '24px' ,
bottom : '24px' ,
} ) ,
$dialog = new Ox . Dialog ( {
buttons : [
{
click : function ( ) {
$dialog . close ( ) ;
} ,
id : 'close' ,
title : 'Close' ,
value : 'Close'
}
] ,
2011-06-06 15:48:11 +00:00
height : parseInt ( pandora . $ui . document . height ( ) * 0.8 ) ,
2011-05-25 19:42:45 +00:00
id : 'places' ,
minHeight : 400 ,
minWidth : 600 ,
padding : 0 ,
title : 'Manage Places' ,
2011-06-06 15:48:11 +00:00
width : parseInt ( pandora . $ui . document . width ( ) * 0.8 )
2011-05-25 19:42:45 +00:00
} ) . css ( {
overflow : 'hidden'
} ) . append ( $manage ) . open ( ) ;
* /
} else if ( data . id == 'query' ) {
var $dialog = new Ox . Dialog ( {
buttons : [
new Ox . Button ( {
id : 'close' ,
title : 'Close'
} ) . bindEvent ( {
click : function ( ) {
$dialog . close ( ) ;
}
} )
] ,
content : new Ox . Element ( )
. html ( [
'Query: ' + JSON . stringify ( pandora . Query . toObject ( ) ) ,
2011-06-06 15:48:11 +00:00
'findQuery: ' + JSON . stringify ( pandora . user . ui . findQuery ) ,
'listQuery: ' + JSON . stringify ( pandora . user . ui . listQuery )
2011-05-25 19:42:45 +00:00
] . join ( '<br/><br/>' ) ) ,
height : 200 ,
keys : { enter : 'close' , escape : 'close' } ,
width : 400
} ) . open ( ) ;
} else if ( data . id == 'resetui' ) {
pandora . api . resetUI ( { } , function ( ) {
2011-06-06 15:48:11 +00:00
pandora . $ui . appPanel . reload ( ) ;
2011-05-25 19:42:45 +00:00
} ) ;
}
}
} ) ;
return that ;
} ;