fix drag and drop from edit to edit and from clips to edit fixes #2247

This commit is contained in:
j 2015-03-03 10:36:21 +00:00
parent 5ce83cbe63
commit 1022e3debf
3 changed files with 30 additions and 24 deletions

View file

@ -136,22 +136,10 @@ pandora.ui.clipList = function(videoRatio) {
.addClass('OxMedia') .addClass('OxMedia')
.bindEvent({ .bindEvent({
copy: function(data) { copy: function(data) {
var items = data.ids.map(function(id) { pandora.clipboard.copy(serializeClips(data.ids), 'clip');
var item = !ui.item ? id.split('/')[0] : ui.item,
annotations = that.value(id, 'annotations') || [],
annotation = annotations.length ? annotations[0].id : null;
return annotation || item + '/' + that.value(id, 'in') + '-' + that.value(id, 'out');
})
pandora.clipboard.copy(items, 'clip');
}, },
copyadd: function(data) { copyadd: function(data) {
var items = data.ids.map(function(id) { pandora.clipboard.add(serializeClips(data.ids), 'clip');
var item = !ui.item ? id.split('/')[0] : ui.item,
annotations = that.value(id, 'annotations') || [],
annotation = annotations.length ? annotations[0].id : null;
return annotation || item + '/' + that.value(id, 'in') + '-' + that.value(id, 'out');
})
pandora.clipboard.add(items, 'clip');
}, },
gainfocus: function() { gainfocus: function() {
pandora.$ui.mainMenu.replaceItemMenu(); pandora.$ui.mainMenu.replaceItemMenu();
@ -290,7 +278,18 @@ pandora.ui.clipList = function(videoRatio) {
} }
}); });
pandora.enableDragAndDrop(that, true, 'edits'); function serializeClips(ids) {
return ids.map(function(id) {
var item = !ui.item ? id.split('/')[0] : ui.item,
annotations = that.value(id, 'annotations') || [],
annotation = annotations.length ? annotations[0].id : null;
return annotation || item + '/' + that.value(id, 'in') + '-' + that.value(id, 'out');
});
}
pandora.enableDragAndDrop(that, true, 'edits', function($list) {
return serializeClips($list.options('selected'));
});
return that; return that;
} }

View file

@ -23,7 +23,13 @@ pandora.ui.editPanel = function(isEmbed) {
function enableDragAndDrop() { function enableDragAndDrop() {
pandora.enableDragAndDrop( pandora.enableDragAndDrop(
Ox.$elements[that.find('.OxIconList').data('oxid')], Ox.$elements[that.find('.OxIconList').data('oxid')],
edit.editable edit.editable,
'edits',
function($list) {
return serializeClips($list.options('selected')).map(function(id) {
return id.split('/').slice(0, 2).join('/');
});
}
); );
} }

View file

@ -520,7 +520,7 @@ pandora.createLinks = function($element) {
}()); }());
pandora.enableDragAndDrop = function($list, canMove, section) { pandora.enableDragAndDrop = function($list, canMove, section, getItems) {
section = section || pandora.user.ui.section; section = section || pandora.user.ui.section;
@ -532,17 +532,18 @@ pandora.enableDragAndDrop = function($list, canMove, section) {
$list.bindEvent({ $list.bindEvent({
draganddropstart: function(data) { draganddropstart: function(data) {
if (section != pandora.user.ui.section) { var ui = pandora.user.ui;
if (section != ui.section) {
pandora.$ui.mainPanel.replaceElement(0, pandora.$ui.mainPanel.replaceElement(0,
pandora.$ui.leftPanel = pandora.ui.leftPanel(section) pandora.$ui.leftPanel = pandora.ui.leftPanel(section)
); );
} }
drag.action = 'copy'; drag.action = 'copy';
drag.ids = $list.options('selected'), drag.ids = getItems ? getItems($list) : $list.options('selected');
drag.item = drag.ids.length == 1 drag.item = drag.ids.length == 1
? $list.value(drag.ids[0], 'title') || 1 ? $list.value(drag.ids[0], 'title') || 1
: drag.ids.length; : drag.ids.length;
drag.source = pandora.getListData(), drag.source = pandora.getListData();
drag.targets = {}; drag.targets = {};
//fixme instead of a fixed timeout, //fixme instead of a fixed timeout,
//bind to lists and update if they get new items //bind to lists and update if they get new items
@ -564,7 +565,7 @@ pandora.enableDragAndDrop = function($list, canMove, section) {
} }
}); });
}); });
}, section != pandora.user.ui.section ? 2000 : 0); }, section != ui.section ? 2000 : 0);
$tooltip.options({title: getTitle()}).show(data.event); $tooltip.options({title: getTitle()}).show(data.event);
canMove && Ox.$window.on({ canMove && Ox.$window.on({
keydown: keydown, keydown: keydown,
@ -647,7 +648,7 @@ pandora.enableDragAndDrop = function($list, canMove, section) {
if (section == 'items') { if (section == 'items') {
var targets = drag.action == 'copy' ? drag.target.id var targets = drag.action == 'copy' ? drag.target.id
: [pandora.user.ui._list, drag.target.id]; : [pandora.user.ui._list, drag.target.id];
pandora.doHistory(drag.action, data.ids, targets, function() { pandora.doHistory(drag.action, drag.ids, targets, function() {
Ox.Request.clearCache('find'); Ox.Request.clearCache('find');
pandora.api.find({ pandora.api.find({
query: { query: {
@ -666,8 +667,8 @@ pandora.enableDragAndDrop = function($list, canMove, section) {
} else if (section == 'edits') { } else if (section == 'edits') {
var targets = drag.action == 'copy' ? drag.target.id var targets = drag.action == 'copy' ? drag.target.id
: [pandora.user.ui.edit, drag.target.id]; : [pandora.user.ui.edit, drag.target.id];
pandora.doHistory(drag.action, data.ids, targets, function() { pandora.doHistory(drag.action, drag.ids, targets, function() {
Ox.print('FIXME, reload clipslist on move'); Ox.print('FIXME, reload clipslist on drag', drag.ids);
pandora.$ui.editPanel && pandora.$ui.editPanel.updatePanel(); pandora.$ui.editPanel && pandora.$ui.editPanel.updatePanel();
cleanup(250); cleanup(250);
}); });