forked from 0x2620/pandora
first version of new upload interface
This commit is contained in:
parent
8feed54bf9
commit
6c013ebc92
20 changed files with 966 additions and 102 deletions
177
static/js/addFilesDialog.js
Normal file
177
static/js/addFilesDialog.js
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
'use strict';
|
||||
|
||||
pandora.ui.addFilesDialog = function(options) {
|
||||
|
||||
var $button = Ox.Button({
|
||||
id: 'add',
|
||||
title: Ox._(Ox.toTitleCase(options.action))
|
||||
}).bindEvent({
|
||||
click: function() {
|
||||
$button.options({disabled: true});
|
||||
(options.action == 'upload' ? uploadVideos : importVideos)(function() {
|
||||
that.close();
|
||||
pandora.ui.tasksDialog({
|
||||
tasks: options.action == 'import' ? 'all' : 'uploads'
|
||||
}).open();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
var $list = Ox.TableList({
|
||||
columns: [
|
||||
{
|
||||
id: 'id',
|
||||
title: Ox._('ID')
|
||||
},
|
||||
{
|
||||
id: 'index',
|
||||
title: Ox._('Index')
|
||||
},
|
||||
{
|
||||
format: function(value) {
|
||||
return Ox.encodeHTMLEntities(value);
|
||||
},
|
||||
id: 'title',
|
||||
title: Ox._('Title'),
|
||||
visible: true,
|
||||
width: 256
|
||||
},
|
||||
{
|
||||
format: function(value, data) {
|
||||
return data.width && data.height
|
||||
? data.width + ' × ' + data.height + ' px'
|
||||
: Ox._('unknown')
|
||||
},
|
||||
id: 'resolution',
|
||||
title: Ox._('Resolution'),
|
||||
align: 'right',
|
||||
visible: true,
|
||||
width: 128
|
||||
},
|
||||
{
|
||||
format: function(value) {
|
||||
return value ? Ox.formatDuration(value) : Ox._('unknown');
|
||||
},
|
||||
id: 'duration',
|
||||
title: Ox._('Duration'),
|
||||
align: 'right',
|
||||
visible: true,
|
||||
width: 128
|
||||
},
|
||||
{
|
||||
format: function(value) {
|
||||
return value ? Ox.formatValue(value, 'B') : Ox._('unknown');
|
||||
},
|
||||
id: 'size',
|
||||
title: Ox._('Size'),
|
||||
align: 'right',
|
||||
visible: true,
|
||||
width: 128
|
||||
},
|
||||
{
|
||||
id: 'width',
|
||||
title: Ox._('Width')
|
||||
},
|
||||
{
|
||||
id: 'height',
|
||||
title: Ox._('Height')
|
||||
}
|
||||
],
|
||||
columnsResizable: true,
|
||||
columnsVisible: true,
|
||||
items: options.items.map(function(value, index) {
|
||||
return Ox.extend(value, {index: index})
|
||||
}),
|
||||
scrollbarsVisible: true,
|
||||
sort: [{key: 'index', operator: '+'}],
|
||||
sortable: true
|
||||
}).css({
|
||||
height: '320px',
|
||||
width: '640px'
|
||||
});
|
||||
|
||||
var that = Ox.Dialog({
|
||||
buttons: [$button],
|
||||
closeButton: true,
|
||||
content: $list,
|
||||
height: 320,
|
||||
removeOnClose: true,
|
||||
title: Ox._('{0} Video Files', [Ox.toTitleCase(options.action)]),
|
||||
width: 640
|
||||
});
|
||||
|
||||
var $select = Ox.Select({
|
||||
items: [
|
||||
{
|
||||
id: 'one',
|
||||
title: Ox._(
|
||||
'Create one {0} with multiple parts',
|
||||
[pandora.site.itemName.singular.toLowerCase()]
|
||||
)
|
||||
},
|
||||
{
|
||||
id: 'multiple',
|
||||
title: Ox._(
|
||||
'Create multiple {0}',
|
||||
[pandora.site.itemName.plural.toLowerCase()]
|
||||
)
|
||||
}
|
||||
],
|
||||
width: 256
|
||||
}).css({
|
||||
display: options.items.length > 1 ? 'block' : 'none',
|
||||
margin: '4px'
|
||||
});
|
||||
$($select.find('.OxButton')[0]).css({margin: '-1px'});
|
||||
$button.parent().parent().append($select);
|
||||
|
||||
function importVideos(callback) {
|
||||
var id;
|
||||
Ox.serialForEach(options.items, function(item, index, items, callback) {
|
||||
var isNewItem = index == 0 || $select.value() == 'multiple';
|
||||
(isNewItem ? pandora.api.add : Ox.noop)({
|
||||
title: item.title
|
||||
}, function(result) {
|
||||
if (isNewItem) {
|
||||
id = result.data.id;
|
||||
}
|
||||
(isNewItem ? pandora.api.edit : Ox.noop)(Ox.extend(
|
||||
Ox.filter(item, function(value, key) {
|
||||
return key != 'title';
|
||||
}),
|
||||
{'id': id}
|
||||
), function(result) {
|
||||
pandora.api.addMediaUrl({
|
||||
url: item.url,
|
||||
item: id
|
||||
}, callback);
|
||||
});
|
||||
});
|
||||
}, callback);
|
||||
}
|
||||
|
||||
function uploadVideos(callback) {
|
||||
var id;
|
||||
Ox.serialForEach(options.items, function(item, index, items, callback) {
|
||||
var isNewItem = index == 0 || $select.value() == 'multiple';
|
||||
var title = items[$select.value() == 'one' ? 0 : index].title;
|
||||
(isNewItem ? pandora.api.add : Ox.noop)({
|
||||
title: title
|
||||
}, function(result) {
|
||||
if (isNewItem) {
|
||||
id = result.data.id;
|
||||
}
|
||||
pandora.uploadQueue.add(Ox.extend(item, {
|
||||
item: {
|
||||
id: id,
|
||||
title: title
|
||||
}
|
||||
}));
|
||||
callback();
|
||||
});
|
||||
}, callback);
|
||||
}
|
||||
|
||||
return that;
|
||||
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue