in public/src/js/utils/drag-dispatcher.js [101:145]
function replaceArticleWith (id, sourceItem, oldItem, targetGroup) {
var newItems = newItemsConstructor({id}, targetGroup);
if (!newItems[0]) {
alert('Sorry, but you can\'t use that item.');
} else {
var newItem = newItems[0];
var targetContext = targetGroup.front;
var returnValue;
_.chain(oldItem.meta)
.keys()
.each(key => {
if (_.isFunction(oldItem.meta[key])) {
newItem.meta[key](oldItem.meta[key]());
} else {
newItem.meta[key] = oldItem.meta[key];
}
});
var sourceGroup = oldItem.group;
var update = {
collection: sourceGroup.parent,
item: newItem.id(),
position: oldItem.id(),
after: false,
mode: targetContext.mode(),
itemMeta: serializeArticleMeta(newItem)
};
var remove = remover(targetContext, sourceGroup, oldItem.id());
returnValue = authedAjax.updateCollections({ update })
.then(() => {
return authedAjax.updateCollections({ remove });
})
.catch(() => {});
if (sourceGroup && !sourceGroup.keepCopy) {
var insertAt = sourceGroup.items().indexOf(oldItem);
sourceGroup.items.splice(insertAt, 1, newItem); // for immediate UI effect
}
return returnValue;
}
}