addEdit + addList = addFolderItem
This commit is contained in:
parent
336acb326f
commit
faf6917d4b
1 changed files with 116 additions and 85 deletions
|
@ -12,37 +12,23 @@ pandora.addItem = function() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
pandora.addEdit = function(options) {
|
pandora.addEdit = function() {
|
||||||
var $folderList = pandora.$ui.folderList.personal;
|
// addEdit(isSmart, isFrom) or addEdit(edit) [=duplicate]
|
||||||
options = options || {};
|
pandora.addFolderItem.apply(null, ['edit'].concat(Ox.slice(arguments)));
|
||||||
pandora.api.addEdit(options, function(result) {
|
|
||||||
reloadFolder(result.data.id);
|
|
||||||
});
|
|
||||||
function reloadFolder(newId) {
|
|
||||||
pandora.$ui.folder[0].options({collapsed: false});
|
|
||||||
Ox.Request.clearCache('findEdits');
|
|
||||||
$folderList.bindEventOnce({
|
|
||||||
load: function(data) {
|
|
||||||
$folderList.gainFocus()
|
|
||||||
.options({selected: [newId]})
|
|
||||||
.editCell(newId, 'name', true);
|
|
||||||
pandora.UI.set(pandora.user.ui.section.slice(0, -1), newId);
|
|
||||||
}
|
|
||||||
}).reloadList();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pandora.addList = function() {
|
pandora.addFolderItem = function(section) {
|
||||||
// addList(isSmart, isFrom) or addList(list) [=duplicate]
|
// addFolderItem(section, isSmart, isFrom)
|
||||||
|
// or addFolderItem(section, list) [=duplicate]
|
||||||
var $folderList = pandora.$ui.folderList.personal,
|
var $folderList = pandora.$ui.folderList.personal,
|
||||||
isDuplicate = arguments.length == 1,
|
isDuplicate = arguments.length == 2,
|
||||||
isSmart, isFrom, list, listData, data;
|
isItems = section == 'items',
|
||||||
pandora.UI.set({
|
isSmart, isFrom, list, listData, data,
|
||||||
showSidebar: true
|
ui = pandora.user.ui;
|
||||||
});
|
pandora.UI.set({showSidebar: true});
|
||||||
if (!isDuplicate) {
|
if (!isDuplicate) {
|
||||||
isSmart = arguments[0];
|
isSmart = arguments[1];
|
||||||
isFrom = arguments[1];
|
isFrom = arguments[2];
|
||||||
data = {
|
data = {
|
||||||
name: Ox._('Untitled'),
|
name: Ox._('Untitled'),
|
||||||
status: 'private',
|
status: 'private',
|
||||||
|
@ -50,14 +36,16 @@ pandora.addList = function() {
|
||||||
};
|
};
|
||||||
if (isFrom) {
|
if (isFrom) {
|
||||||
if (!isSmart) {
|
if (!isSmart) {
|
||||||
data.items = pandora.user.ui.listSelection;
|
data.items = isItems
|
||||||
|
? ui.listSelection
|
||||||
|
: ui.edits[ui.edit].selection;
|
||||||
} else {
|
} else {
|
||||||
data.query = pandora.user.ui.find;
|
data.query = ui.find;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addList();
|
addList();
|
||||||
} else {
|
} else {
|
||||||
list = arguments[0];
|
list = arguments[1];
|
||||||
listData = pandora.getListData();
|
listData = pandora.getListData();
|
||||||
data = {
|
data = {
|
||||||
name: listData.name,
|
name: listData.name,
|
||||||
|
@ -67,83 +55,119 @@ pandora.addList = function() {
|
||||||
if (data.type == 'smart') {
|
if (data.type == 'smart') {
|
||||||
data.query = listData.query;
|
data.query = listData.query;
|
||||||
}
|
}
|
||||||
pandora.api.findLists({
|
pandora.api[isItems ? 'findLists' : 'findEdits']({
|
||||||
query: {conditions: [{key: 'id', value: list, operator: '=='}]},
|
query: {conditions: [{key: 'id', value: list, operator: '=='}]},
|
||||||
keys: ['description']
|
keys: ['description']
|
||||||
}, function(result) {
|
}, function(result) {
|
||||||
data.description = result.data.items[0].description;
|
data.description = result.data.items[0].description;
|
||||||
if (data.type == 'static') {
|
if (data.type == 'static') {
|
||||||
var query = {
|
var query;
|
||||||
conditions: [{key: 'list', value: list, operator: '=='}],
|
if (isItems) {
|
||||||
operator: '&'
|
query = {
|
||||||
};
|
conditions: [{key: 'list', value: list, operator: '=='}],
|
||||||
pandora.api.find({
|
operator: '&'
|
||||||
query: query
|
};
|
||||||
}, function(result) {
|
pandora.api.find({query: query}, function(result) {
|
||||||
if (result.data.items) {
|
if (result.data.items) {
|
||||||
pandora.api.find({
|
pandora.api.find({
|
||||||
query: query,
|
query: query,
|
||||||
keys: ['id'],
|
keys: ['id'],
|
||||||
sort: [{key: 'id', operator: ''}],
|
sort: [{key: 'id', operator: ''}],
|
||||||
range: [0, result.data.items]
|
range: [0, result.data.items]
|
||||||
}, function(result) {
|
}, function(result) {
|
||||||
var items = result.data.items.map(function(item) {
|
var items = result.data.items.map(function(item) {
|
||||||
return item.id;
|
return item.id;
|
||||||
|
});
|
||||||
|
addList(items);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
addList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
pandora.api.getEdit({id: list}, function(result) {
|
||||||
|
var items = result.data.clips.map(function(clip) {
|
||||||
|
return Ox.extend({
|
||||||
|
item: clip.item
|
||||||
|
}, clip.annotation ? {
|
||||||
|
annotation: clip.annotation
|
||||||
|
} : {
|
||||||
|
'in': clip['in'],
|
||||||
|
out: clip.out
|
||||||
});
|
});
|
||||||
addList(items);
|
|
||||||
});
|
});
|
||||||
} else {
|
addList(items);
|
||||||
addList();
|
});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
addList();
|
addList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function addList(items) {
|
function addList(items) {
|
||||||
pandora.api.addList(data, function(result) {
|
pandora.api[isItems ? 'addList' : 'addEdit'](data, function(result) {
|
||||||
var newList = result.data.id;
|
var newList = result.data.id;
|
||||||
if (items) {
|
if (items) {
|
||||||
pandora.api.addListItems({
|
if (isItems) {
|
||||||
list: newList,
|
pandora.api.addListItems({
|
||||||
items: items
|
list: newList,
|
||||||
}, function() {
|
items: items
|
||||||
getPosterFrames(newList);
|
}, function() {
|
||||||
});
|
getPosterFrames(newList);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
pandora.api.addClips({
|
||||||
|
clips: items,
|
||||||
|
edit: newList
|
||||||
|
}, function(result) {
|
||||||
|
getPosterFrames(newList);
|
||||||
|
});
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
getPosterFrames(newList);
|
getPosterFrames(newList);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function getPosterFrames(newList) {
|
function getPosterFrames(newList) {
|
||||||
var sortKey = Ox.getObjectById(pandora.site.itemKeys, 'votes')
|
var query,
|
||||||
? 'votes'
|
sortKey = Ox.getObjectById(pandora.site.itemKeys, 'votes')
|
||||||
: 'timesaccessed';
|
? 'votes' : 'timesaccessed';
|
||||||
if (!isDuplicate) {
|
if (!isDuplicate) {
|
||||||
pandora.api.find({
|
(isItems ? Ox.noop : pandora.api.getEdit)({id: newList}, function(result) {
|
||||||
query: {
|
Ox.print('RESULT::::', result.data)
|
||||||
|
query = isItems ? {
|
||||||
conditions: [{key: 'list', value: newList, operator: '=='}],
|
conditions: [{key: 'list', value: newList, operator: '=='}],
|
||||||
operator: '&'
|
operator: '&'
|
||||||
},
|
} : {
|
||||||
keys: ['id', 'posterFrame'],
|
conditions: Ox.unique(result.data.clips.map(function(clips) {
|
||||||
sort: [{key: sortKey, operator: ''}],
|
return {key: 'id', value: clip.item, operator: '=='};
|
||||||
range: [0, 4]
|
})),
|
||||||
}, function(result) {
|
operator: '|'
|
||||||
var posterFrames = result.data.items.map(function(item) {
|
};
|
||||||
return {item: item.id, position: item.posterFrame};
|
pandora.api.find({
|
||||||
|
query: {
|
||||||
|
conditions: [{key: 'list', value: newList, operator: '=='}],
|
||||||
|
operator: '&'
|
||||||
|
},
|
||||||
|
keys: ['id', 'posterFrame'],
|
||||||
|
sort: [{key: sortKey, operator: ''}],
|
||||||
|
range: [0, 4]
|
||||||
|
}, function(result) {
|
||||||
|
var posterFrames = result.data.items.map(function(item) {
|
||||||
|
return {item: item.id, position: item.posterFrame};
|
||||||
|
});
|
||||||
|
posterFrames = posterFrames.length == 1
|
||||||
|
? Ox.repeat([posterFrames[0]], 4)
|
||||||
|
: posterFrames.length == 2
|
||||||
|
? [posterFrames[0], posterFrames[1], posterFrames[1], posterFrames[0]]
|
||||||
|
: posterFrames.length == 3
|
||||||
|
? [posterFrames[0], posterFrames[1], posterFrames[2], posterFrames[0]]
|
||||||
|
: posterFrames;
|
||||||
|
setPosterFrames(newList, posterFrames);
|
||||||
});
|
});
|
||||||
posterFrames = posterFrames.length == 1
|
});
|
||||||
? Ox.repeat([posterFrames[0]], 4)
|
|
||||||
: posterFrames.length == 2
|
|
||||||
? [posterFrames[0], posterFrames[1], posterFrames[1], posterFrames[0]]
|
|
||||||
: posterFrames.length == 3
|
|
||||||
? [posterFrames[0], posterFrames[1], posterFrames[2], posterFrames[0]]
|
|
||||||
: posterFrames;
|
|
||||||
setPosterFrames(newList, posterFrames);
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
pandora.api.findLists({
|
pandora.api[isItems ? 'findLists' : 'findEdits']({
|
||||||
query: {
|
query: {
|
||||||
conditions: [{key: 'id', value: list, operator: '=='}],
|
conditions: [{key: 'id', value: list, operator: '=='}],
|
||||||
operator: '&'
|
operator: '&'
|
||||||
|
@ -155,7 +179,7 @@ pandora.addList = function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function setPosterFrames(newList, posterFrames) {
|
function setPosterFrames(newList, posterFrames) {
|
||||||
pandora.api.editList({
|
pandora.api[isItems ? 'editList' : 'editEdit']({
|
||||||
id: newList,
|
id: newList,
|
||||||
posterFrames: posterFrames
|
posterFrames: posterFrames
|
||||||
}, function() {
|
}, function() {
|
||||||
|
@ -164,23 +188,30 @@ pandora.addList = function() {
|
||||||
}
|
}
|
||||||
function reloadFolder(newList) {
|
function reloadFolder(newList) {
|
||||||
pandora.$ui.folder[0].options({collapsed: false});
|
pandora.$ui.folder[0].options({collapsed: false});
|
||||||
Ox.Request.clearCache('findLists');
|
Ox.Request.clearCache(isItems ? 'findLists' : 'findEdits');
|
||||||
$folderList.bindEventOnce({
|
$folderList.bindEventOnce({
|
||||||
load: function() {
|
load: function() {
|
||||||
$folderList.gainFocus()
|
$folderList.gainFocus()
|
||||||
.options({selected: [newList]})
|
.options({selected: [newList]})
|
||||||
.editCell(newList, 'name', true);
|
.editCell(newList, 'name', true);
|
||||||
pandora.UI.set({
|
pandora.UI.set(isItems ? {
|
||||||
find: {
|
find: {
|
||||||
conditions: [{key: 'list', value: newList, operator: '=='}],
|
conditions: [{key: 'list', value: newList, operator: '=='}],
|
||||||
operator: '&'
|
operator: '&'
|
||||||
}
|
}
|
||||||
|
} : {
|
||||||
|
edit: newList
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}).reloadList();
|
}).reloadList();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pandora.addList = function() {
|
||||||
|
// addList(isSmart, isFrom) or addList(list) [=duplicate]
|
||||||
|
pandora.addFolderItem.apply(null, ['items'].concat(Ox.slice(arguments)));
|
||||||
|
};
|
||||||
|
|
||||||
pandora.addText = function(options) {
|
pandora.addText = function(options) {
|
||||||
var $folderList = pandora.$ui.folderList.personal;
|
var $folderList = pandora.$ui.folderList.personal;
|
||||||
options = options || {};
|
options = options || {};
|
||||||
|
@ -1583,7 +1614,7 @@ pandora.getSpan = function(state, val, callback) {
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
pandora.api.getEdit({id: state.item, keys: ['clips']}, function(result) {
|
pandora.api.getEdit({id: state.item, keys: ['clips']}, function(result) {
|
||||||
if (Ox.getObjectById(result.data.clips, val)) {
|
if (result.data.clips && Ox.getObjectById(result.data.clips, val)) {
|
||||||
state.span = val;
|
state.span = val;
|
||||||
}
|
}
|
||||||
callback();
|
callback();
|
||||||
|
|
Loading…
Reference in a new issue