allow for selecting lists via list menu

This commit is contained in:
rolux 2011-11-07 12:12:13 +00:00
parent 3bed914023
commit 6be21617cd
4 changed files with 52 additions and 33 deletions

View file

@ -364,11 +364,6 @@ pandora.ui.folderList = function(id) {
}, },
select: function(data) { select: function(data) {
var list = data.ids.length ? data.ids[0] : ''; var list = data.ids.length ? data.ids[0] : '';
if (list) {
Ox.forEach(pandora.$ui.folderList, function($list, id_) {
id != id_ && $list.options('selected', []);
});
}
pandora.UI.set({ pandora.UI.set({
find: { find: {
conditions: list ? [ conditions: list ? [

View file

@ -317,12 +317,23 @@ pandora.ui.folders = function() {
} }
that.bindEvent({ that.bindEvent({
pandora_find: function() { pandora_find: function() {
var previousUI = pandora.UI.getPrevious(); var folder = pandora.getListData().folder,
list = pandora.user.ui._list,
previousList = pandora.UI.getPrevious()._list;
if (list != previousList) {
Ox.forEach(pandora.$ui.folderList, function($list, id) {
id != folder && $list.options('selected', []);
});
folder && pandora.$ui.folderList[folder].options({selected: [list]});
}
/*
if (!pandora.user.ui._list && previousUI._list) { if (!pandora.user.ui._list && previousUI._list) {
pandora.$ui.folderList[pandora.getListData(previous)]
Ox.forEach(pandora.$ui.folderList, function($list) { Ox.forEach(pandora.$ui.folderList, function($list) {
$list.options({selected: []}); $list.options({selected: []});
}); });
} }
*/
} }
}) })
return that; return that;

View file

@ -155,7 +155,13 @@ pandora.ui.mainMenu = function() {
.bindEvent({ .bindEvent({
change: function(data) { change: function(data) {
var value = data.checked[0] ? data.checked[0].id : null; var value = data.checked[0] ? data.checked[0].id : null;
if (data.id == 'find') { if (data.id == 'allitems') {
if (data.checked) {
pandora.UI.set('find', {conditions: [], operator: '&'});
} else {
that.checkItem('allitems');
}
} else if (data.id == 'find') {
pandora.$ui.findSelect.options({value: value}); pandora.$ui.findSelect.options({value: value});
} else if (data.id == 'itemview') { } else if (data.id == 'itemview') {
pandora.UI.set({itemView: value}); pandora.UI.set({itemView: value});
@ -208,11 +214,11 @@ pandora.ui.mainMenu = function() {
set.listSort = pandora.site.user.ui.listSort; set.listSort = pandora.site.user.ui.listSort;
} }
pandora.UI.set(set); pandora.UI.set(set);
} else if (['personallists', 'favoritelists', 'featuredlists'].indexOf(data.id) > -1) { } else if (data.id.substr(0, 8) == 'viewlist') {
pandora.UI.set({ pandora.UI.set({
find: { find: {
conditions: value ? [ conditions: data.checked ? [
{key: 'list', value: value.substr(8), operator: '=='} {key: 'list', value: data.id.substr(8), operator: '=='}
] : [], ] : [],
operator: '&' operator: '&'
} }
@ -345,9 +351,15 @@ pandora.ui.mainMenu = function() {
&& pandora.UI.set({showTimeline: !ui.showTimeline}); && pandora.UI.set({showTimeline: !ui.showTimeline});
}, },
pandora_find: function() { pandora_find: function() {
var action = ui._list var list = ui._list,
&& pandora.getListData(ui._list).user == pandora.user.username listData = pandora.getListData(),
? 'enableItem' : 'disableItem'; previousList = pandora.UI.getPrevious()._list,
action = list && listData.user == pandora.user.username
? 'enableItem' : 'disableItem';
if (list != previousList) {
that.uncheckItem(previousList == '' ? 'allitems' : 'viewlist' + previousList);
that.checkItem(list == '' ? 'allitems' : 'viewlist' + list);
}
that[action]('editlist'); that[action]('editlist');
that[action]('duplicatelist'); that[action]('duplicatelist');
that[action]('deletelist'); that[action]('deletelist');
@ -415,18 +427,17 @@ pandora.ui.mainMenu = function() {
return { return {
id: folder + 'lists', id: folder + 'lists',
title: Ox.toTitleCase(folder) + ' Lists', title: Ox.toTitleCase(folder) + ' Lists',
items: [{ items: Ox.isUndefined(lists)
group: folder + 'lists', ? [{id: 'loading', title: 'Loading...', disabled: true}]
min: 0, : lists[folder].length == 0
max: 1, ? [{id: 'nolists', title: 'No ' + Ox.toTitleCase(folder) + ' Lists', disabled: true}]
items: lists ? lists[folder].map(function(list) { : lists[folder].map(function(list) {
return { return {
id: 'viewlist' + list.id, id: 'viewlist' + list.id,
title: (folder == 'favorite' ? list.user + ': ' : '') + list.name, title: (folder == 'favorite' ? list.user + ': ' : '') + list.name,
checked: list.id == pandora.user.ui._list checked: list.id == pandora.user.ui._list
}; };
}) : [{id: 'loading', title: 'Loading...', disabled: true}] })
}]
}; };
}), }),
[ [
@ -497,7 +508,7 @@ pandora.ui.mainMenu = function() {
] }; ] };
} }
// fixme: the sidebar makes the same requests. // fixme: the sidebar makes (almost) the same requests.
// is it ok to make them twice, or should the sidebar trigger the menu replace? // is it ok to make them twice, or should the sidebar trigger the menu replace?
var counter = 0, var counter = 0,
@ -520,7 +531,8 @@ pandora.ui.mainMenu = function() {
Ox.forEach(queries, function(query, folder) { Ox.forEach(queries, function(query, folder) {
pandora.api.findLists({ pandora.api.findLists({
query: query, query: query,
keys: ['id', 'name', 'user'] keys: ['id', 'name', 'user'],
sort: [{key: 'position', operator: '+'}]
}, function(result) { }, function(result) {
lists[folder] = result.data.items; lists[folder] = result.data.items;
if (++counter == 3) { if (++counter == 3) {

View file

@ -572,20 +572,21 @@ pandora.getItemByIdOrTitle = function(str, callback) {
}); });
} }
pandora.getListData = function() { pandora.getListData = function(list) {
var data = {}, folder; var data = {};
if (pandora.user.ui._list) { list = Ox.isUndefined(list) ? pandora.user.ui._list : list;
Ox.forEach(pandora.$ui.folderList, function(list, key) { if (list) {
if (list.options('selected').length) { Ox.forEach(pandora.$ui.folderList, function($list, id) {
folder = key; var values = $list.value(list);
if (!Ox.isEmpty(values)) {
data = Ox.extend({
editable: data.user == pandora.user.username
&& data.type == 'static',
folder: id
}, values);
return false; return false;
} }
}); });
if (folder) {
data = pandora.$ui.folderList[folder].value(pandora.user.ui._list);
data.editable = data.user == pandora.user.username && data.type == 'static';
data.folder = folder;
}
} }
return data; return data;
}; };