forked from 0x2620/pandora
fix bugs with dialogs that represent multiple URLs, and history
This commit is contained in:
parent
9752b2e332
commit
f93fd49bd7
6 changed files with 58 additions and 60 deletions
|
@ -75,7 +75,7 @@ pandora.URL = (function() {
|
|||
Ox.getPositionById(pandora.site.sitePages, state.page) > -1
|
||||
|| state.page == 'software'
|
||||
) {
|
||||
if (pandora.$ui.siteDialog) {
|
||||
if (pandora.$ui.siteDialog && pandora.$ui.siteDialog.is(':visible')) {
|
||||
pandora.$ui.siteDialog.select(state.page);
|
||||
} else {
|
||||
pandora.$ui.siteDialog = pandora.ui.siteDialog(state.page).open();
|
||||
|
@ -84,7 +84,11 @@ pandora.URL = (function() {
|
|||
pandora.$ui.helpDialog = pandora.ui.helpDialog().open();
|
||||
} else if (['signup', 'signin'].indexOf(state.page) > -1) {
|
||||
if (pandora.user.level == 'guest') {
|
||||
pandora.$ui.accountDialog = pandora.ui.accountDialog(state.page).open();
|
||||
if (pandora.$ui.accountDialog && pandora.$ui.accountDialog.is(':visible')) {
|
||||
pandora.$ui.accountDialog.options(pandora.ui.accountDialogOptions(state.page));
|
||||
} else {
|
||||
pandora.$ui.accountDialog = pandora.ui.accountDialog(state.page).open();
|
||||
}
|
||||
} else {
|
||||
pandora.URL.replace('/');
|
||||
}
|
||||
|
@ -270,15 +274,17 @@ pandora.URL = (function() {
|
|||
Ox.Request.cancel();
|
||||
self.isPopState = true;
|
||||
$('.OxDialog:visible').each(function() {
|
||||
Ox.UI.elements[$(this).data('oxid')].close().remove();
|
||||
Ox.UI.elements[$(this).data('oxid')].close();
|
||||
});
|
||||
if (
|
||||
pandora.user.ui.item
|
||||
&& pandora.user.ui.itemView == 'video'
|
||||
&& pandora.$ui.player
|
||||
&& pandora.$ui.player.options('fullscreen')
|
||||
) {
|
||||
pandora.$ui.player.remove();
|
||||
//pandora.$ui.player.options({fullscreen: false});
|
||||
$('body > .OxVideoPlayer').remove();
|
||||
//$('body > .OxVideoPlayer').remove();
|
||||
}
|
||||
if (!Ox.isEmpty(e.state)) {
|
||||
Ox.Log('', 'E.STATE', e.state)
|
||||
|
@ -311,24 +317,26 @@ pandora.URL = (function() {
|
|||
};
|
||||
|
||||
// pushes a new URL (as string or from state)
|
||||
that.push = function(url) {
|
||||
if (url) {
|
||||
self.URL.push(null, pandora.getPageTitle(), url, setState);
|
||||
that.push = function(stateOrURL) {
|
||||
var state, title = pandora.getPageTitle(), url;
|
||||
if (Ox.isObject(stateOrURL)) {
|
||||
state = stateOrURL;
|
||||
} else {
|
||||
// fixme
|
||||
//alert('DO YOU REALLY WANT TO CALL PUSH WITHOUT URL?')
|
||||
//self.URL.push(getState());
|
||||
url = stateOrURL;
|
||||
}
|
||||
self.URL.push(state, title, url, setState);
|
||||
return that;
|
||||
};
|
||||
|
||||
// replaces the current URL (as string or from state)
|
||||
that.replace = function(url) {
|
||||
if (url) {
|
||||
self.URL.replace(null, pandora.getPageTitle(), url, setState)
|
||||
that.replace = function(stateOrURL) {
|
||||
var state, title = pandora.getPageTitle(), url;
|
||||
if (Ox.isObject(stateOrURL)) {
|
||||
state = stateOrURL;
|
||||
} else {
|
||||
self.URL.replace(getState());
|
||||
url = stateOrURL;
|
||||
}
|
||||
self.URL.replace(state, title, url, setState);
|
||||
return that;
|
||||
};
|
||||
|
||||
|
@ -360,7 +368,7 @@ pandora.URL = (function() {
|
|||
action = 'push';
|
||||
}
|
||||
state = getState();
|
||||
self.URL[action](state, pandora.getPageTitle(), state);
|
||||
self.URL[action](state, pandora.getPageTitle(), '');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ pandora.ui.accountDialog = function(action) {
|
|||
fixedSize: true,
|
||||
height: 192,
|
||||
id: 'accountDialog',
|
||||
removeOnClose: true,
|
||||
width: 432
|
||||
}, pandora.ui.accountDialogOptions(action)))
|
||||
.bindEvent({
|
||||
|
@ -56,7 +57,7 @@ pandora.ui.accountDialogOptions = function(action, value) {
|
|||
id: 'cancel' + Ox.toTitleCase(action),
|
||||
title: 'Cancel'
|
||||
}).bindEvent('click', function() {
|
||||
pandora.$ui.accountDialog.close().remove();
|
||||
pandora.$ui.accountDialog.close();
|
||||
pandora.URL.update();
|
||||
});
|
||||
} else if (type == 'submit') {
|
||||
|
@ -72,13 +73,12 @@ pandora.ui.accountDialogOptions = function(action, value) {
|
|||
id: type,
|
||||
title: buttonTitle[type] + '...'
|
||||
}).bindEvent('click', function() {
|
||||
pandora.$ui.accountDialog.options(pandora.ui.accountDialogOptions(type));
|
||||
pandora.$ui.accountForm.find('input')[0].focus();
|
||||
if (['signin', 'signup'].indexOf(type) > -1) {
|
||||
// fixme: similar problem as in siteDialog,
|
||||
// the URL controller should handle this
|
||||
history.replaceState({}, '', '/' + type);
|
||||
pandora.URL.replace({page: type});
|
||||
} else {
|
||||
pandora.$ui.accountDialog.options(pandora.ui.accountDialogOptions(type));
|
||||
}
|
||||
pandora.$ui.accountForm.find('input.OxInput')[0].focus();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -147,7 +147,7 @@ pandora.ui.accountForm = function(action, value) {
|
|||
if (action == 'signin') {
|
||||
pandora.api.signin(data, function(result) {
|
||||
if (!result.data.errors) {
|
||||
pandora.$ui.accountDialog.close().remove();
|
||||
pandora.$ui.accountDialog.close();
|
||||
pandora.signin(result.data);
|
||||
} else {
|
||||
pandora.$ui.accountDialog.enableButtons();
|
||||
|
@ -157,7 +157,7 @@ pandora.ui.accountForm = function(action, value) {
|
|||
} else if (action == 'signup') {
|
||||
pandora.api.signup(data, function(result) {
|
||||
if (!result.data.errors) {
|
||||
pandora.$ui.accountDialog.close().remove();
|
||||
pandora.$ui.accountDialog.close();
|
||||
pandora.signin(result.data);
|
||||
pandora.ui.accountWelcomeDialog().open();
|
||||
} else {
|
||||
|
@ -181,7 +181,7 @@ pandora.ui.accountForm = function(action, value) {
|
|||
} else if (action == 'resetAndSignin') {
|
||||
pandora.api.resetPassword(data, function(result) {
|
||||
if (!result.data.errors) {
|
||||
pandora.$ui.accountDialog.close().remove();
|
||||
pandora.$ui.accountDialog.close();
|
||||
pandora.signin(result.data);
|
||||
} else {
|
||||
pandora.$ui.accountDialog.enableButtons();
|
||||
|
@ -318,14 +318,14 @@ pandora.ui.accountSignoutDialog = function() {
|
|||
id: 'stay',
|
||||
title: 'Stay Signed In'
|
||||
}).bindEvent('click', function() {
|
||||
that.close().remove();
|
||||
that.close();
|
||||
pandora.URL.update();
|
||||
}),
|
||||
Ox.Button({
|
||||
id: 'signout',
|
||||
title: 'Sign Out'
|
||||
}).bindEvent('click', function() {
|
||||
that.close().remove();
|
||||
that.close();
|
||||
pandora.api.signout({}, function(result) {
|
||||
pandora.signout(result.data);
|
||||
});
|
||||
|
@ -345,6 +345,7 @@ pandora.ui.accountSignoutDialog = function() {
|
|||
fixedSize: true,
|
||||
height: 128,
|
||||
keys: {enter: 'signout', escape: 'stay'},
|
||||
removeOnClose: true,
|
||||
title: 'Sign Out',
|
||||
width: 304
|
||||
});
|
||||
|
@ -358,7 +359,7 @@ pandora.ui.accountWelcomeDialog = function() {
|
|||
id: 'preferences',
|
||||
title: 'Preferences...'
|
||||
}).bindEvent('click', function() {
|
||||
that.close().remove();
|
||||
that.close();
|
||||
pandora.$ui.preferencesDialog = pandora.ui.preferencesDialog().open();
|
||||
}),
|
||||
{},
|
||||
|
@ -366,7 +367,7 @@ pandora.ui.accountWelcomeDialog = function() {
|
|||
id: 'close',
|
||||
title: 'Close'
|
||||
}).bindEvent('click', function() {
|
||||
that.close().remove();
|
||||
that.close();
|
||||
})
|
||||
],
|
||||
content: Ox.Element()
|
||||
|
@ -383,6 +384,7 @@ pandora.ui.accountWelcomeDialog = function() {
|
|||
fixedSize: true,
|
||||
height: 128,
|
||||
keys: {enter: 'close', escape: 'close'},
|
||||
removeOnClose: true,
|
||||
title: 'Welcome to ' + pandora.site.site.name,
|
||||
width: 304
|
||||
});
|
||||
|
|
|
@ -9,10 +9,8 @@ pandora.ui.helpDialog = function() {
|
|||
title: 'Close'
|
||||
}).bindEvent({
|
||||
click: function() {
|
||||
that.close().remove();
|
||||
//fixme: this should be using URL.push / UI.set
|
||||
//but that currenlty causes a reload
|
||||
history.pushState({}, '', '/');
|
||||
that.close();
|
||||
pandora.URL.update();
|
||||
}
|
||||
})
|
||||
],
|
||||
|
|
|
@ -94,7 +94,7 @@ pandora.ui.listDialog = function(section) {
|
|||
})
|
||||
.bindEvent({
|
||||
click: function() {
|
||||
$dialog.close().remove();
|
||||
$dialog.close();
|
||||
}
|
||||
})
|
||||
],
|
||||
|
@ -104,6 +104,7 @@ pandora.ui.listDialog = function(section) {
|
|||
minWidth: width,
|
||||
height: 312,
|
||||
// keys: {enter: 'save', escape: 'cancel'},
|
||||
removeOnClose: true,
|
||||
title: 'List - ' + listData.name,
|
||||
width: width
|
||||
});
|
||||
|
|
|
@ -5,12 +5,10 @@
|
|||
pandora.ui.siteDialog = function(section) {
|
||||
|
||||
var tabs = Ox.merge(
|
||||
Ox.clone(pandora.site.sitePages),
|
||||
Ox.clone(pandora.site.sitePages, true),
|
||||
[{id: 'software', title: 'Software'}]
|
||||
);
|
||||
//Ox.getObjectById(tabs, section).selected = true;
|
||||
tabs[Ox.getPositionById(tabs, section)].selected = true;
|
||||
//Ox.print('SITE DIALOG', section, Ox.getObjectById(tabs, section), Ox.getObjectById(tabs, section).selected)
|
||||
Ox.getObjectById(tabs, section).selected = true;
|
||||
var $tabPanel = Ox.TabPanel({
|
||||
content: function(id) {
|
||||
var $content = Ox.Element().css({padding: '16px', overflowY: 'auto'});
|
||||
|
@ -82,8 +80,6 @@ pandora.ui.siteDialog = function(section) {
|
|||
+ 'Legal Action</div>'
|
||||
)
|
||||
.appendTo($column);
|
||||
})
|
||||
pandora.site.rightsLevels.forEach(function(rightsLevel) {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -113,34 +109,34 @@ pandora.ui.siteDialog = function(section) {
|
|||
})
|
||||
.bindEvent({
|
||||
change: function(data) {
|
||||
$dialog.options({
|
||||
that.options({
|
||||
title: Ox.getObjectById(tabs, data.selected).title
|
||||
});
|
||||
//pandora.URL.replace('/' + data.selected);
|
||||
//fixme: this should be using URL.push / UI.set
|
||||
//but that currenlty causes another dialog to be opened
|
||||
history.pushState({/*page: data.selected*/}, '', '/' + data.selected);
|
||||
pandora.URL.push({page: data.selected});
|
||||
//history.pushState({page: data.selected}, '', '/' + data.selected);
|
||||
}
|
||||
});
|
||||
var $dialog = Ox.Dialog({
|
||||
|
||||
var that = Ox.Dialog({
|
||||
buttons: [
|
||||
Ox.Button({
|
||||
id: 'close',
|
||||
title: 'Close'
|
||||
}).bindEvent({
|
||||
click: function() {
|
||||
$dialog.close().remove();
|
||||
that.close();
|
||||
pandora.URL.update();
|
||||
}
|
||||
})
|
||||
],
|
||||
//closeButton: true,
|
||||
closeButton: true,
|
||||
content: $tabPanel,
|
||||
height: Math.round((window.innerHeight - 24) * 0.75),
|
||||
//maximizeButton: true,
|
||||
maximizeButton: true,
|
||||
minHeight: 256,
|
||||
minWidth: 688, // 16 + 256 + 16 + 384 + 16
|
||||
title: 'About',
|
||||
removeOnClose: true,
|
||||
title: Ox.getObjectById(tabs, section).title,
|
||||
width: Math.round(window.innerWidth * 0.75),
|
||||
})
|
||||
.bindEvent({
|
||||
|
@ -151,11 +147,11 @@ pandora.ui.siteDialog = function(section) {
|
|||
}
|
||||
});
|
||||
|
||||
$dialog.select = function(id) {
|
||||
that.select = function(id) {
|
||||
$tabPanel.select(id);
|
||||
return $dialog;
|
||||
return that;
|
||||
};
|
||||
|
||||
return $dialog;
|
||||
return that;
|
||||
|
||||
};
|
||||
|
|
|
@ -856,15 +856,9 @@ pandora.resizeFolders = function() {
|
|||
};
|
||||
|
||||
pandora.resizeWindow = function() {
|
||||
// FIXME: a lot of this throws errors on load
|
||||
pandora.$ui.leftPanel.size(2, pandora.getInfoHeight(true));
|
||||
pandora.resizeFolders();
|
||||
/*
|
||||
var infoHeight = pandora.getInfoHeight(true);
|
||||
pandora.$ui.leftPanel.size(2, infoHeight);
|
||||
!pandora.user.ui.showInfo && pandora.$ui.leftPanel.css({bottom: -infoHeight});
|
||||
pandora.resizeFolders();
|
||||
pandora.$ui.info.resizeInfo();
|
||||
*/
|
||||
if (!pandora.user.ui.item) {
|
||||
pandora.resizeFilters(pandora.$ui.rightPanel.width());
|
||||
if (pandora.user.ui.listView == 'clips') {
|
||||
|
@ -893,7 +887,6 @@ pandora.resizeWindow = function() {
|
|||
pandora.$ui.list.size();
|
||||
}
|
||||
} else {
|
||||
//Ox.Log('', 'pandora.$ui.window.resize');
|
||||
pandora.$ui.browser.scrollToSelection();
|
||||
if (pandora.user.ui.itemView == 'info') {
|
||||
pandora.$ui.item.resize();
|
||||
|
|
Loading…
Reference in a new issue