diff --git a/pandora/0xdb.jsonc b/pandora/0xdb.jsonc index 9fdf351d..715da10f 100644 --- a/pandora/0xdb.jsonc +++ b/pandora/0xdb.jsonc @@ -616,7 +616,6 @@ "showAnnotations": true, "showBrowser": true, "showCalendarControls": true, // fixme: should be false - "showControls": true, "showFlags": true, "showGroups": true, "showHome": true, @@ -634,6 +633,7 @@ }, "showSidebar": true, "showSitePosters": false, + "showTimeline": true, "sidebarSize": 256, "theme": "modern", "videoPoints": {}, diff --git a/static/js/pandora.js b/static/js/pandora.js index de76e5a1..ec2a9027 100644 --- a/static/js/pandora.js +++ b/static/js/pandora.js @@ -204,9 +204,16 @@ appPanel user: data.user }); + // make sure all valid ui settings are present pandora.user.ui = Ox.extend( Ox.clone(pandora.site.user.ui), pandora.user.ui ); + // make sure no invalid ui settings are present + Object.keys(pandora.user.ui).forEach(function(key) { + if (Ox.isUndefined(pandora.site.user.ui[key])) { + delete pandora.user.ui[key]; + } + }); Ox.extend(pandora.site, { clipKeys: Ox.map(data.site.clipKeys, function(key) { diff --git a/static/js/pandora/item.js b/static/js/pandora/item.js index 2433e842..c1ad45e2 100644 --- a/static/js/pandora/item.js +++ b/static/js/pandora/item.js @@ -173,7 +173,7 @@ pandora.ui.item = function() { position: pandora.user.ui.videoPoints[pandora.user.ui.item].position, scaleToFill: pandora.user.ui.videoScale == 'fill', showAnnotations: pandora.user.ui.showAnnotations, - showControls: pandora.user.ui.showControls, + showTimeline: pandora.user.ui.showTimeline, subtitles: subtitles, tooltips: true, timeline: '/' + pandora.user.ui.item + '/timeline16p.png', @@ -205,14 +205,17 @@ pandora.ui.item = function() { toggleannotations: function(data) { pandora.UI.set('showAnnotations', data.showAnnotations); }, - togglecontrols: function(data) { - pandora.UI.set('showControls', data.showControls); + toggletimeline: function(data) { + pandora.UI.set('showTimeline', data.showTimeline); }, volume: function(data) { pandora.UI.set('videoVolume', data.volume); }, pandora_showannotations: function(data) { pandora.$ui.player.options({showAnnotations: data.value}); + }, + pandora_showtimeline: function(data) { + pandora.$ui.player.options({showTimeline: data.value}); } })); diff --git a/static/js/pandora/menu.js b/static/js/pandora/menu.js index 715552d4..5ec4afb1 100644 --- a/static/js/pandora/menu.js +++ b/static/js/pandora/menu.js @@ -100,6 +100,7 @@ pandora.ui.mainMenu = function() { { id: 'showgroups', title: (ui.showGroups ? 'Hide' : 'Show') + ' Groups', disabled: !!ui.item, keyboard: 'shift g' }, { id: 'showbrowser', title: (ui.showBrowser ? 'Hide' : 'Show') + ' ' + pandora.site.itemName.singular + ' Browser', disabled: !ui.item, keyboard: 'shift b' }, { id: 'showannotations', title: (ui.showAnnotations ? 'Hide' : 'Show') + ' Annotations', disabled: !ui.item || ['timeline', 'video'].indexOf(ui.itemView) == -1, keyboard: 'shift a' }, + { id: 'showtimeline', title: (ui.showTimeline ? 'Hide' : 'Show') + ' Timeline', disabled: !ui.item || ui.itemView != 'video', keyboard: 'shift t' }, {}, { id: 'theme', title: 'Theme', items: [ { group: 'settheme', min: 1, max: 1, items: [ @@ -241,6 +242,8 @@ pandora.ui.mainMenu = function() { pandora.UI.set({showBrowser: !ui.showBrowser}); } else if (data.id == 'showannotations') { pandora.UI.set({showAnnotations: !ui.showAnnotations}); + } else if (data.id == 'showtimeline') { + pandora.UI.set({showTimeline: !ui.showTimeline}); } else if (data.id == 'titles') { (pandora.$ui.titlesDialog || ( pandora.$ui.titlesDialog = pandora.ui.titlesDialog() @@ -305,7 +308,7 @@ pandora.ui.mainMenu = function() { } }, key_shift_a: function() { - ui.item && ['video', 'timeline'].indexOf(ui.view) > -1 + ui.item && ['video', 'timeline'].indexOf(ui.itemView) > -1 && pandora.UI.set({showAnnotations: !ui.showAnnotations}); }, key_shift_b: function() { @@ -320,6 +323,10 @@ pandora.ui.mainMenu = function() { key_shift_s: function() { pandora.UI.set({showSidebar: !ui.showSidebar}); }, + key_shift_t: function() { + ui.item && ui.itemView == 'video' + && pandora.UI.set({showTimeline: !ui.showTimeline}); + }, pandora_find: function() { var action = ui._list && pandora.getListData(ui._list).user == pandora.user.username @@ -350,6 +357,9 @@ pandora.ui.mainMenu = function() { if (isVideoView != wasVideoView) { that[isVideoView ? 'enableItem' : 'disableItem']('showannotations'); } + if ((data.value == 'video') != (data.previousValue == 'video')) { + that[data.value == 'video' ? 'enableItem' : 'disableItem']('showtimeline'); + } }, pandora_listselection: function(data) { that[data.value.length ? 'enableItem' : 'disableItem']('newlistfromselection'); @@ -375,6 +385,9 @@ pandora.ui.mainMenu = function() { pandora_showsidebar: function(data) { that.setItemTitle('showsidebar', (data.value ? 'Hide' : 'Show') + ' Sidebar'); that[data.value ? 'enableItem' : 'disableItem']('showinfo'); + }, + pandora_showtimeline: function(data) { + that.setItemTitle('showtimeline', (data.value ? 'Hide' : 'Show') + ' Timeline'); } });