pandora/static/js/mainMenu.js

1086 lines
57 KiB
JavaScript
Raw Normal View History

2011-07-29 18:37:11 +00:00
// vim: et:ts=4:sw=4:sts=4:ft=javascript
2012-02-03 09:15:38 +00:00
'use strict';
2011-05-25 19:42:45 +00:00
pandora.ui.mainMenu = function() {
var isGuest = pandora.user.level == 'guest',
ui = pandora.user.ui,
findState = pandora.getFindState(ui.find),
2013-08-02 16:03:23 +00:00
fromMenu = false,
fullscreenState = Ox.Fullscreen.getState(),
2011-06-19 17:49:25 +00:00
that = Ox.MainMenu({
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();
} else if (menuExtra == 'persona') {
return pandora.$ui.personaButton = pandora.ui.personaButton();
}
}),
2011-05-25 19:42:45 +00:00
id: 'mainMenu',
2012-05-24 08:22:56 +00:00
menus: [].concat(
[
2012-05-24 08:22:56 +00:00
{ id: pandora.site.site.id + 'Menu', title: pandora.site.site.name, items: [].concat(
[
2013-05-09 10:13:58 +00:00
{ id: 'home', title: Ox._('Home') },
{}
],
2013-05-09 10:13:58 +00:00
Ox.clone(pandora.site.sitePages, true).map(function(page) {
page.title = Ox._(page.title);
return page;
}),
[
{},
2013-05-09 10:13:58 +00:00
{ id: 'software', title: Ox._('Software') }
]
) },
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 },
{},
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...')}
] },
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: [
{ group: 'listview', min: 1, max: 1, items: pandora.site.listViews.map(function(view) {
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)
});
}) },
]},
2013-05-09 10:13:58 +00:00
{ id: 'icons', title: Ox._('Icons'), items: [].concat([
{ 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};
}) },
{},
], 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 },
{}
] : [], [
2013-05-09 10:13:58 +00:00
{ id: 'showreflections', title: Ox._('Show Reflections'), checked: true, disabled: true }
]
) },
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 },
{},
2013-05-09 10:13:58 +00:00
{ id: 'resetcolumns', title: Ox._('Reset Layout'), disabled: true }
2012-03-06 21:28:27 +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: [
{ 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
}, view);
}) },
2012-03-06 21:28:27 +00:00
] },
2013-05-09 10:13:58 +00:00
{ id: 'clips', title: Ox._('Open Clips'), items: [
{ 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};
}) }
] },
{},
{ id: 'filters', title: Ox._('Filters'), disabled: ui.section != 'items', items: [
{ 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) {
return Ox.extend({
checked: Ox.getIndexById(ui.filters, filter.id) > -1
2013-05-09 10:13:58 +00:00
}, filter, {
title: Ox._(filter.title)
});
}) },
{},
2013-05-09 10:13:58 +00:00
{ id: 'resetfilters', title: Ox._('Reset Filters') }
] },
{},
2013-05-09 10:13:58 +00:00
{
id: 'showsidebar',
title: Ox._((ui.showSidebar ? 'Hide' : 'Show') + ' Sidebar'),
keyboard: 'shift s'
},
2013-05-09 10:13:58 +00:00
{
id: 'showinfo',
title: Ox._((ui.showInfo ? 'Hide' : 'Show') + ' Info'),
disabled: !ui.showSidebar, keyboard: 'shift i'
},
2013-05-09 10:13:58 +00:00
{
id: 'showfilters',
title: Ox._((ui.showFilters ? 'Hide' : 'Show') + ' Filters'),
disabled: ui.section != 'items' || !!ui.item, keyboard: 'shift f'
},
2013-05-09 10:13:58 +00:00
{
id: 'showbrowser',
title: Ox._((ui.showBrowser ? 'Hide': 'Show') + ' {0} Browser', [Ox._(pandora.site.itemName.singular)]),
disabled: !ui.item, keyboard: 'shift b'
},
2013-05-09 10:13:58 +00:00
{
id: 'showtimeline',
title: Ox._((ui.showTimeline ? 'Hide' : 'Show') + ' Timeline'),
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'
},
{},
2013-05-09 10:13:58 +00:00
{
id: 'togglefullscreen',
title: Ox._((fullscreenState ? 'Exit' : 'Enter') + ' Fullscreen'),
disabled: fullscreenState === void 0, keyboard: 'shift alt control f'
},
2013-05-09 10:13:58 +00:00
{
id: 'entervideofullscreen',
title: Ox._('Enter Video Fullscreen'),
disabled: !ui.item || ui.itemView != 'player'
},
{},
2013-05-09 10:13:58 +00:00
{ id: 'theme', title: Ox._('Theme'), items: [
{ 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
] },
{ 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-05-25 19:42:45 +00:00
]},
getSortMenu(),
2013-05-09 10:13:58 +00:00
{ id: 'findMenu', title: Ox._('Find'), items: [
{ id: 'find', title: Ox._('Find'), items: [
{ 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)
};
}) }
] },
2013-05-09 10:13:58 +00:00
{ id: 'advancedfind', title: Ox._('Advanced Find...'), keyboard: 'shift control f' },
{},
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: [
{ 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] },
{},
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
] }
],
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-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;
if (data.id == 'allitems') {
if (data.checked) {
2013-07-14 15:36:49 +00:00
pandora.UI.set({find: {conditions: [], operator: '&'}});
} else {
that.checkItem('allitems');
}
} else if (data.id == 'cliporder') {
if (!ui.item) {
pandora.UI.set({listSort: [{key: ui.listSort[0].key, operator: value == 'ascending' ? '+' : '-'}]});
} else {
pandora.UI.set({itemSort: [{key: ui.itemSort[0].key, operator: value == 'ascending' ? '+' : '-'}]});
}
} 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)}]});
}
} else if (data.id == 'find') {
if (value) {
pandora.$ui.findSelect.value(value);
if (ui._findState.key == 'advanced') {
// fixme: autocomplete function doesn't get updated
pandora.$ui.findInput.options({placeholder: ''});
}
} else {
that.checkItem('findMenu_find_' + pandora.$ui.findSelect.value());
}
pandora.$ui.findInput.focusInput(true);
} else if (data.id == 'itemorder') {
pandora.UI.set({listSort: [{key: ui.listSort[0].key, operator: value == 'ascending' ? '+' : '-'}]});
} else if (data.id == 'itemsort') {
pandora.UI.set({listSort: [{key: value, operator: pandora.getSortOperator(value)}]});
} else if (data.id == 'itemview') {
pandora.UI.set({itemView: value});
} else if (data.id == 'listview') {
var set = {listView: value};
if (
!pandora.isClipView(key, ui.item)
&& ['title', 'position'].indexOf(ui.listSort[0].key) > -1
) {
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')) {
var filters = Ox.clone(ui.filters),
2011-11-06 08:28:10 +00:00
id = data.id.replace('orderfilter', ''),
index = Ox.getIndexById(filters, id),
key = filters[index].sort[0].key,
2011-09-17 23:24:53 +00:00
operator = value == 'ascending' ? '+' : '-';
pandora.$ui.filters[index].options({
2011-09-17 23:24:53 +00:00
sort: [{key: key, operator: operator}]
});
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});
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});
pandora.setTheme(value);
} 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', ''),
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,
operator = key == 'name' && type == 'string' ? '+' : '-';
2011-11-06 08:28:10 +00:00
pandora.$ui.mainMenu.checkItem(
'sortMenu_orderfilters_orderfilter' + id + '_'
+ (operator == '+' ? 'ascending' : 'descending')
);
pandora.$ui.filters[index].options({
2011-09-17 23:24:53 +00:00
sort: [{key: key, operator: operator}]
});
filters[index].sort[0].key = key;
2011-11-06 08:28:10 +00:00
pandora.UI.set({filters: filters});
} else if (data.id == 'videoview') {
var set = {videoView: value};
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)
) {
set.itemView = value;
}
pandora.UI.set(set);
} 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: {
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) {
if ([
'home', 'software', 'signup', 'signin', 'signout',
2013-07-11 18:02:39 +00:00
'preferences', 'help', 'api'
].concat(
2012-01-20 18:10:25 +00:00
pandora.site.sitePages.map(function(page) {
return page.id;
})
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) {
pandora.addList(data.id.indexOf('smart') > -1, data.id.indexOf('from') > -1);
} else if (data.id == 'duplicatelist') {
pandora.addList(ui._list);
2011-09-29 17:25:04 +00:00
} else if (data.id == 'editlist') {
pandora.ui.listDialog().open();
} 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') {
pandora.$ui[ui.section == 'edits' ? 'editPanel' : !ui.item ? 'list' : 'clipList'].selectAll();
2013-08-02 16:03:23 +00:00
} else if (data.id == 'selectnone') {
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') {
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;
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;
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')
: pandora.isClipView() && !pandora.$ui.browser.hasFocus() ? pandora.clipboard[action](
pandora.$ui.clipList.options('selected'), 'clip'
)
: pandora.clipboard[action](ui.listSelection, 'item');
2013-08-02 16:03:23 +00:00
} else if (data.id == 'paste') {
fromMenu = true;
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') {
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();
} 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());
} 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});
} else if (data.id == 'showbrowser') {
pandora.UI.set({showBrowser: !ui.showBrowser});
} else if (data.id == 'showtimeline') {
pandora.UI.set({showTimeline: !ui.showTimeline});
} else if (data.id == 'showannotations') {
pandora.UI.set({showAnnotations: !ui.showAnnotations});
} else if (data.id == 'showclips') {
pandora.UI.set({showClips: !ui.showClips});
} else if (data.id == 'togglefullscreen') {
Ox.Fullscreen.toggle();
} else if (data.id == 'entervideofullscreen') {
pandora.$ui.player.options({fullscreen: true});
} else if (data.id == 'advancedfind') {
pandora.$ui.filterDialog = pandora.ui.filterDialog().open();
} else if (data.id == 'findsimilar') {
pandora.$ui.similarClipsDialog = pandora.ui.similarClipsDialog().open();
} 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();
} else if (data.id == 'events') {
2011-11-01 20:04:16 +00:00
(pandora.$ui.eventsDialog || (
pandora.$ui.eventsDialog = pandora.ui.eventsDialog()
)).open();
} 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();
} 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
}
},
key_alt_control_f: function() {
if (!pandora.hasDialogOrScreen() && pandora.getItemIdAndPosition()) {
pandora.$ui.similarClipsDialog = pandora.ui.similarClipsDialog().open();
}
},
key_alt_control_shift_a: function() {
if (!pandora.hasDialogOrScreen() && !ui.item) {
pandora.$ui.filters.clearFilters();
}
},
key_alt_control_shift_f: function() {
Ox.Fullscreen.toggle();
},
key_backtick: function() {
changeFocus(1);
},
2011-11-03 14:09:30 +00:00
key_control_comma: function() {
if (!pandora.hasDialogOrScreen()) {
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() {
if (!pandora.hasDialogOrScreen()) {
if (ui._findState.key != 'advanced') {
setTimeout(function() {
pandora.$ui.findInput.focusInput(true);
}, 25);
} else {
pandora.$ui.filterDialog = pandora.ui.filterDialog().open();
}
}
},
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
},
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'});
}
},
key_control_shift_w: function() {
if (!pandora.hasDialogOrScreen() || (ui.item || ui._list)) {
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() {
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'});
}
},
key_control_w: function() {
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: ''});
}
}
},
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() {
hasAnnotations() && pandora.UI.set({showAnnotations: !ui.showAnnotations});
2011-11-01 12:03:02 +00:00
},
key_shift_b: function() {
ui.item && pandora.UI.set({showBrowser: !ui.showBrowser});
2011-11-01 12:03:02 +00:00
},
key_shift_c: function() {
hasClips && pandora.UI.set({showClips: !ui.showClips});
},
key_shift_backtick: function() {
changeFocus(-1);
},
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() {
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});
},
key_shift_t: function() {
hasTimeline() && pandora.UI.set({showTimeline: !ui.showTimeline});
},
pandora_edit: function() {
// ...
},
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;
if (list != previousList) {
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-09-29 17:25:04 +00:00
that[action]('editlist');
that[action]('duplicatelist');
that[action]('deletelist');
that[ui.listSelection.length ? 'enableItem' : 'disableItem']('newlistfromselection');
2013-08-02 16:03:23 +00:00
that.replaceMenu('itemMenu', getItemMenu());
that[Ox.sum(ui._filterState.map(function(filterState) {
return filterState.selected.length;
})) > 0 ? 'enableItem' : 'disableItem']('clearfilters');
},
2011-11-06 08:28:10 +00:00
pandora_filters: function(data) {
that.replaceMenu('sortMenu', getSortMenu());
},
pandora_item: function(data) {
if (!!data.value != !!data.previousValue) {
that.replaceMenu('itemMenu', getItemMenu());
2011-11-06 08:28:10 +00:00
that[data.value ? 'disableItem' : 'enableItem']('showfilters');
that[data.value ? 'enableItem' : 'disableItem']('showbrowser');
2011-10-31 16:45:55 +00:00
that.replaceMenu('sortMenu', getSortMenu());
}
if (!data.value) {
that.disableItem('showannotations');
that.disableItem('showtimeline');
that.disableItem('entervideofullscreen');
} else {
2012-04-17 12:05:23 +00:00
if (['timeline', 'player', 'editor'].indexOf(ui.itemView) > -1) {
that.enableItem('showannotations');
}
if (ui.itemView == 'player') {
that.enableItem('showtimeline');
that.enableItem('entervideofullscreen');
}
}
},
pandora_itemsort: function(data) {
that.checkItem('sortMenu_sortclips_' + data.value[0].key);
that.checkItem('sortMenu_orderclips_' + (
data.value[0].operator == '+' ? 'ascending' : 'descending')
);
},
pandora_itemview: function(data) {
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-08-02 16:03:23 +00:00
that.checkItem('viewMenu_item_' + data.value);
if (isVideoView) {
that.checkItem('viewMenu_clips_' + data.value);
}
if (isVideoView != wasVideoView) {
that[isVideoView ? 'enableItem' : 'disableItem']('showannotations');
}
2012-04-17 08:03:11 +00:00
if ((data.value == 'player') != (data.previousValue == 'player')) {
action = data.value == 'player' ? 'enableItem' : 'disableItem';
that[action]('showtimeline');
that[action]('entervideofullscreen');
}
2013-08-02 16:03:23 +00:00
if (isClipView != wasClipView) {
that.replaceMenu('sortMenu', getSortMenu());
}
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());
that[
pandora.getItemIdAndPosition() ? 'enableItem' : 'disableItem'
]('findsimilar');
2011-09-29 17:25:04 +00:00
},
pandora_listsort: function(data) {
if (pandora.isClipView(ui.listView, false)) {
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')
);
}
},
2011-09-29 17:25:04 +00:00
pandora_listview: function(data) {
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());
}
if (pandora.isClipView() != pandora.isClipView(data.previousValue)) {
that.replaceMenu('sortMenu', getSortMenu());
}
that[
pandora.getItemIdAndPosition() ? 'enableItem' : 'disableItem'
]('findsimilar');
},
pandora_section: function() {
that.replaceMenu('listMenu', getListMenu());
that.replaceMenu('itemMenu', getItemMenu());
2013-07-14 10:21:50 +00:00
that.replaceMenu('sortMenu', getSortMenu());
},
pandora_showannotations: function(data) {
2013-05-09 10:13:58 +00:00
that.setItemTitle('showannotations', Ox._((data.value ? 'Hide' : 'Show') + ' Annotations'));
},
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)]));
},
pandora_showclips: function(data) {
that.setItemTitle('showclips', Ox._((data.value ? 'Hide' : 'Show') + ' Clips'));
},
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'));
},
pandora_showinfo: function(data) {
2013-05-09 10:13:58 +00:00
that.setItemTitle('showinfo', Ox._((data.value ? 'Hide' : 'Show') + ' Info'));
},
pandora_showsidebar: function(data) {
2013-05-09 10:13:58 +00:00
that.setItemTitle('showsidebar', Ox._((data.value ? 'Hide' : 'Show') + ' Sidebar'));
that[data.value ? 'enableItem' : 'disableItem']('showinfo');
},
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) {
var action;
if (data.value['in']) {
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
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());
}
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());
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
});
Ox.Fullscreen.bind('change', function(state) {
2013-05-09 10:13:58 +00:00
that.setItemTitle('togglefullscreen', Ox._((state ? 'Exit' : 'Enter') + ' Fullscreen'));
});
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;
}
});
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(),
listName = isVideoView || isClipView ? '' : ui.section == 'items' ? 'from List' : 'from Edit',
listItemsName = Ox._(
ui.section == 'edits' || isVideoView || isClipView ? 'Clips' : pandora.site.itemName.plural
),
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'
: ui.section == 'edits' || isClipView ? (selectionItems == 1 ? 'Clip' : 'Clips')
: pandora.site.itemName[selectionItems == 1 ? 'singular' : 'plural']
2013-08-02 16:03:23 +00:00
),
clipboardItems = pandora.clipboard.items(),
clipboardType = pandora.clipboard.type(),
clipboardItemName = clipboardItems == 0 ? ''
: (clipboardItems > 1 ? Ox.formatNumber(clipboardItems) + ' ' : '') + Ox._(
clipboardType == 'item' ? pandora.site.itemName[clipboardItems == 1 ? 'singular' : 'plural']
: clipboardType == 'clip' ? (clipboardItems == 1 ? 'Clip' : 'Clips')
: ''
),
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,
canAdd = canCopy && clipboardItems > 0 && ((clipboardType == 'item') == (!isVideoView && !isClipView)),
2013-08-02 16:26:08 +00:00
canPaste = !ui.item && !isClipView && !isVideoView
&& listData.editable && listData.type == 'static' && pandora.clipboard.type() == 'item',
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] },
{},
{ 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' },
{},
{ 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},
{},
{ 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) {
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',
title: Ox._(Ox.toTitleCase(folder) + ' ' + itemNamePlural),
items: Ox.isUndefined(lists)
2013-05-09 10:13:58 +00:00
? [{id: 'loading', title: Ox._('Loading...'), disabled: true}]
: lists[folder].length == 0
? [{id: 'nolists', title: Ox._('No ' + Ox.toTitleCase(folder) + ' ' + itemNamePlural), disabled: true}]
: lists[folder].map(function(list) {
2011-09-27 14:14:40 +00:00
return {
id: 'viewlist' + list.id.replace(/_/g, Ox.char(9)),
title: Ox.encodeHTMLEntities((
folder == 'favorite' ? list.user + ': ' : ''
) + list.name),
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-09-27 14:14:40 +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
{},
{ 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' }
] : []
2011-09-27 14:14:40 +00:00
)};
};
function getSortMenu() {
var isClipView = pandora.isClipView(),
clipItems = (isClipView ? pandora.site.clipKeys.map(function(key) {
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)
});
}) : []).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: [
{ 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-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: [
{ 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-05-09 10:13:58 +00:00
{ id: 'sortclips', title: Ox._('Sort Clips by'), disabled: !isClipView, items: [
{ 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: [
{ 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
{},
{ 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
] }
]
}
}) },
{ 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
] }
]
}
}) }
] };
}
function hasAnnotations() {
2013-08-02 16:03:23 +00:00
return ui.section == 'items' && ui.item && pandora.isVideoView();
}
function hasClips() {
return ui.section == 'edits' && ui.edit;
}
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() {
that.replaceMenu('itemMenu', getItemMenu());
2013-08-02 16:03:23 +00:00
return that;
};
// 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) {
pandora.api[
ui.section == 'items' ? 'findLists'
: ui.section == 'edits' ? 'findEdits'
: 'findTexts'
]({
2011-09-18 01:52:43 +00:00
query: query,
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
};