From 48921b533eeb3971437312654ac7d509f691401e Mon Sep 17 00:00:00 2001 From: rlx <0x0073@0x2620.org> Date: Sat, 3 Sep 2011 13:19:00 +0000 Subject: [PATCH] support MSIE 8 until after app load, and MSIE 8 with Chrome Frame beyond that --- static/js/pandora.js | 291 ++++++++++++++------------- static/js/pandora/ui/placesDialog.js | 1 - 2 files changed, 147 insertions(+), 145 deletions(-) diff --git a/static/js/pandora.js b/static/js/pandora.js index 9be0102..e29daf0 100644 --- a/static/js/pandora.js +++ b/static/js/pandora.js @@ -14,163 +14,166 @@ Ox.load('UI', { loadImages: true, showScreen: true, theme: 'modern' -}, function() { +}, function(browserSupported) { // fixme: use Ox.extend() -Ox.load('Geo', function() { + Ox.load('Geo', function() { - window.pandora = new Ox.App({url: '/api/'}).bindEvent({ + window.pandora = new Ox.App({url: '/api/'}).bindEvent({ - load: function(event, data) { - Ox.extend(pandora, { - requests: {}, - ui: {} - }); - loadResources('/static/json/pandora.json', function() { - Ox.print('Ox.App load', data); + load: function(data) { - // Ox.UI.hideLoadingScreen(); - - Ox.extend(pandora, { - $ui: { - body: $('body'), - document: $(document), - window: $(window) - .resize(resizeWindow) - .unload(unloadWindow) - }, - site: data.site, - user: data.user.level == 'guest' ? Ox.extend({}, data.site.user) : data.user - }); - Ox.extend(pandora.site, { - findKeys: $.map(data.site.itemKeys, function(key, i) { - return key.find ? key : null; - }), - sectionFolders: { - items: [ - {id: 'personal', title: 'Personal Lists'}, - {id: 'favorite', title: 'Favorite Lists', showBrowser: false}, - {id: 'featured', title: 'Featured Lists', showBrowser: false}, - {id: 'volumes', title: 'Local Volumes'} - ], - edits: [ - {id: 'personal', title: 'Personal Edits'}, - {id: 'favorite', title: 'Favorite Edits', showBrowser: false}, - {id: 'featured', title: 'Featured Edits', showBrowser: false} - ], - texts: [ - {id: 'personal', title: 'Personal Texts'}, - {id: 'favorite', title: 'Favorite Texts', showBrowser: false}, - {id: 'featured', title: 'Featured Texts', showBrowser: false} - ] - }, - sortKeys: $.map(data.site.itemKeys, function(key, i) { - return key.columnWidth ? key : null; - }) - }); - Ox.extend(pandora.user, { - infoRatio: 16 / 9, - sectionElement: 'buttons', - selectedMovies: [], - videoFormat: Ox.UI.getVideoFormat(pandora.site.video.formats) - }); - // fixme: this should not happen - if (!pandora.user.ui.lists[pandora.user.ui.list]) { - pandora.user.ui.lists[pandora.user.ui.list] = pandora.user.ui.lists['']; - } - - if (data.user.level == 'guest' && $.browser.mozilla) { - pandora.user.ui.theme = 'classic'; - } - - pandora.URL.parse(); - window.onpopstate = function(event) { - pandora.URL.update(); - }; - - Ox.UI.hideLoadingScreen(); - - Ox.Theme(pandora.user.ui.theme); - pandora.$ui.appPanel = pandora.ui.appPanel().display(); - - Ox.Request.requests() && pandora.$ui.loadingIcon.start(); - pandora.$ui.body.ajaxStart(pandora.$ui.loadingIcon.start); - pandora.$ui.body.ajaxStop(pandora.$ui.loadingIcon.stop); - - pandora.site.sectionButtonsWidth = pandora.$ui.sectionButtons.width() + 8; - - }, '/static/'); - } - }); - - function loadResources(json, callback, prefix) { - prefix = prefix || ''; - $.getJSON(json, function(files) { - var promises = []; - files.forEach(function(file) { - // fixme: opera doesnt fire onload for svg - if ($.browser.opera && Ox.endsWith(file, '.svg')) { + if (!browserSupported) { return; } - //Ox.print('load', file) - var dfd = new $.Deferred(); - Ox.loadFile(prefix + file, function() { - dfd.resolve(); + + Ox.extend(pandora, { + requests: {}, + ui: {} }); - promises.push(dfd.promise()); - }); - //Ox.print('promises.length', promises.length) - $.when.apply(null, promises) - .done(function() { - //Ox.print('promises done') - $(function() { - callback(); + loadResources('/static/json/pandora.json', function() { + + Ox.print('Ox.App load', data); + + // Ox.UI.hideLoadingScreen(); + + Ox.extend(pandora, { + $ui: { + body: $('body'), + document: $(document), + window: $(window) + .resize(resizeWindow) + .unload(unloadWindow) + }, + site: data.site, + user: data.user.level == 'guest' ? Ox.extend({}, data.site.user) : data.user }); - }) - .fail(function() { - throw new Error('File not found.') - }); - }); - } + Ox.extend(pandora.site, { + findKeys: $.map(data.site.itemKeys, function(key, i) { + return key.find ? key : null; + }), + sectionFolders: { + items: [ + {id: 'personal', title: 'Personal Lists'}, + {id: 'favorite', title: 'Favorite Lists', showBrowser: false}, + {id: 'featured', title: 'Featured Lists', showBrowser: false}, + {id: 'volumes', title: 'Local Volumes'} + ], + edits: [ + {id: 'personal', title: 'Personal Edits'}, + {id: 'favorite', title: 'Favorite Edits', showBrowser: false}, + {id: 'featured', title: 'Featured Edits', showBrowser: false} + ], + texts: [ + {id: 'personal', title: 'Personal Texts'}, + {id: 'favorite', title: 'Favorite Texts', showBrowser: false}, + {id: 'featured', title: 'Featured Texts', showBrowser: false} + ] + }, + sortKeys: $.map(data.site.itemKeys, function(key, i) { + return key.columnWidth ? key : null; + }) + }); + Ox.extend(pandora.user, { + infoRatio: 16 / 9, + sectionElement: 'buttons', + selectedMovies: [], + videoFormat: Ox.UI.getVideoFormat(pandora.site.video.formats) + }); + // fixme: this should not happen + if (!pandora.user.ui.lists[pandora.user.ui.list]) { + pandora.user.ui.lists[pandora.user.ui.list] = pandora.user.ui.lists['']; + } - function resizeWindow() { - pandora.resizeFolders(); - if (!pandora.user.ui.item) { - pandora.$ui.list.size(); - pandora.resizeGroups(pandora.$ui.rightPanel.width()); - if (pandora.user.ui.listView == 'map') { - pandora.$ui.map.resize(); + if (data.user.level == 'guest' && $.browser.mozilla) { + pandora.user.ui.theme = 'classic'; + } + + pandora.URL.parse(); + window.onpopstate = function(event) { + pandora.URL.update(); + }; + + Ox.UI.hideLoadingScreen(); + + Ox.Theme(pandora.user.ui.theme); + pandora.$ui.appPanel = pandora.ui.appPanel().display(); + + Ox.Request.requests() && pandora.$ui.loadingIcon.start(); + pandora.$ui.body.ajaxStart(pandora.$ui.loadingIcon.start); + pandora.$ui.body.ajaxStop(pandora.$ui.loadingIcon.stop); + + pandora.site.sectionButtonsWidth = pandora.$ui.sectionButtons.width() + 8; + + }, '/static/'); } - } else { - //Ox.print('pandora.$ui.window.resize'); - pandora.$ui.browser.scrollToSelection(); - pandora.user.ui.itemView == 'info' && pandora.$ui.item.resize(); - pandora.user.ui.itemView == 'player' && pandora.$ui.player.options({ - // fixme: duplicated - height: pandora.$ui.contentPanel.size(1), - width: pandora.$ui.document.width() - pandora.$ui.mainPanel.size(0) - 1 - }); - pandora.user.ui.itemView == 'timeline' && pandora.$ui.editor.options({ - // fixme: duplicated - height: pandora.$ui.contentPanel.size(1), - width: pandora.$ui.document.width() - pandora.$ui.mainPanel.size(0) - 1 - }); + }); + + function loadResources(json, callback, prefix) { + prefix = prefix || ''; + $.getJSON(json, function(files) { + var promises = []; + files.forEach(function(file) { + // fixme: opera doesnt fire onload for svg + // fixme: we don't have any svgs, right? + if ($.browser.opera && Ox.endsWith(file, '.svg')) { + return; + } + var dfd = new $.Deferred(); + Ox.loadFile(prefix + file, function() { + dfd.resolve(); + }); + promises.push(dfd.promise()); + }); + $.when.apply(null, promises) + .done(function() { + callback(); + }) + .fail(function() { + throw new Error('File not found.') + }); + }); } - } - function unloadWindow() { - // fixme: ajax request has to have async set to false for this to work - pandora.user.ui.section == 'items' && - ['player', 'timeline'].indexOf(pandora.user.ui.itemView) > -1 && - pandora.user.ui.item && - pandora.UI.set( - 'videoPosition|' + pandora.user.ui.item, - pandora.$ui[ - pandora.user.ui.itemView == 'player' ? 'player' : 'editor' - ].options('position') - ); - } + function resizeWindow() { + pandora.resizeFolders(); + if (!pandora.user.ui.item) { + pandora.$ui.list.size(); + pandora.resizeGroups(pandora.$ui.rightPanel.width()); + if (pandora.user.ui.listView == 'map') { + pandora.$ui.map.resize(); + } + } else { + //Ox.print('pandora.$ui.window.resize'); + pandora.$ui.browser.scrollToSelection(); + pandora.user.ui.itemView == 'info' && pandora.$ui.item.resize(); + pandora.user.ui.itemView == 'player' && pandora.$ui.player.options({ + // fixme: duplicated + height: pandora.$ui.contentPanel.size(1), + width: pandora.$ui.document.width() - pandora.$ui.mainPanel.size(0) - 1 + }); + pandora.user.ui.itemView == 'timeline' && pandora.$ui.editor.options({ + // fixme: duplicated + height: pandora.$ui.contentPanel.size(1), + width: pandora.$ui.document.width() - pandora.$ui.mainPanel.size(0) - 1 + }); + } + } + + function unloadWindow() { + // fixme: ajax request has to have async set to false for this to work + pandora.user.ui.section == 'items' && + ['player', 'timeline'].indexOf(pandora.user.ui.itemView) > -1 && + pandora.user.ui.item && + pandora.UI.set( + 'videoPosition|' + pandora.user.ui.item, + pandora.$ui[ + pandora.user.ui.itemView == 'player' ? 'player' : 'editor' + ].options('position') + ); + } + + }); }); -}); diff --git a/static/js/pandora/ui/placesDialog.js b/static/js/pandora/ui/placesDialog.js index 9863e25..b01ed1b 100644 --- a/static/js/pandora/ui/placesDialog.js +++ b/static/js/pandora/ui/placesDialog.js @@ -27,7 +27,6 @@ pandora.ui.placesDialog = function() { Ox.Request.clearCache(); // fixme: remove callback(result); }); - }, editPlace: function(place, callback) { Ox.print('EDITPLACE', place);