Fix cross-library collection dragging from read-only library
This has apparently always been broken.
This commit is contained in:
parent
b2c03a9a3e
commit
30cefca18e
2 changed files with 47 additions and 1 deletions
|
@ -2093,7 +2093,7 @@ Zotero.CollectionTreeView.prototype.drop = Zotero.Promise.coroutine(function* (r
|
||||||
var collectionID = yield newCollection.save();
|
var collectionID = yield newCollection.save();
|
||||||
|
|
||||||
// Record link
|
// Record link
|
||||||
yield c.addLinkedCollection(newCollection);
|
yield newCollection.addLinkedCollection(c);
|
||||||
|
|
||||||
// Recursively copy subcollections
|
// Recursively copy subcollections
|
||||||
if (desc.children.length) {
|
if (desc.children.length) {
|
||||||
|
|
|
@ -868,6 +868,26 @@ describe("Zotero.CollectionTreeView", function() {
|
||||||
assert.isFalse(yield canDrop('item', 'L' + group.libraryID, [item.id]));
|
assert.isFalse(yield canDrop('item', 'L' + group.libraryID, [item.id]));
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should copy an item from a read-only group to an editable group", async function () {
|
||||||
|
var group1 = await createGroup();
|
||||||
|
var item = await createDataObject('item', { libraryID: group1.libraryID });
|
||||||
|
group1.editable = false;
|
||||||
|
await group1.saveTx();
|
||||||
|
var group2 = await createGroup();
|
||||||
|
|
||||||
|
await cv.selectLibrary(group1.libraryID);
|
||||||
|
await waitForItemsLoad(win);
|
||||||
|
|
||||||
|
await drop('item', 'L' + group2.libraryID, [item.id]);
|
||||||
|
|
||||||
|
assert.isFalse(await item.getLinkedItem(group2.libraryID));
|
||||||
|
// New collection should link back to original
|
||||||
|
assert.ok(await item.getLinkedItem(group2.libraryID, true));
|
||||||
|
|
||||||
|
await group1.eraseTx();
|
||||||
|
await group2.eraseTx();
|
||||||
|
});
|
||||||
|
|
||||||
it("should remove a linked, trashed item in a group from the trash and collections", function* () {
|
it("should remove a linked, trashed item in a group from the trash and collections", function* () {
|
||||||
var group = yield getGroup();
|
var group = yield getGroup();
|
||||||
var collection = yield createDataObject('collection', { libraryID: group.libraryID });
|
var collection = yield createDataObject('collection', { libraryID: group.libraryID });
|
||||||
|
@ -1122,6 +1142,32 @@ describe("Zotero.CollectionTreeView", function() {
|
||||||
assert.isFalse(newCollectionA.hasItem(newItemB));
|
assert.isFalse(newCollectionA.hasItem(newItemB));
|
||||||
assert.isFalse(newCollectionB.hasItem(newItemA));
|
assert.isFalse(newCollectionB.hasItem(newItemA));
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should copy a collection from a read-only group to another group", async function () {
|
||||||
|
var group1 = await createGroup();
|
||||||
|
var collection = await createDataObject('collection', { libraryID: group1.libraryID });
|
||||||
|
var item = await createDataObject('item', { libraryID: group1.libraryID, collections: [collection.id] });
|
||||||
|
group1.editable = false;
|
||||||
|
await group1.saveTx();
|
||||||
|
|
||||||
|
var group2 = await getGroup();
|
||||||
|
|
||||||
|
await cv.selectCollection(collection.id);
|
||||||
|
await waitForItemsLoad(win);
|
||||||
|
|
||||||
|
await drop('collection', 'L' + group2.libraryID, [collection.id]);
|
||||||
|
|
||||||
|
assert.isFalse(await collection.getLinkedCollection(group2.libraryID));
|
||||||
|
// New collection should link back to original
|
||||||
|
assert.ok(await collection.getLinkedCollection(group2.libraryID, true));
|
||||||
|
|
||||||
|
assert.isFalse(await item.getLinkedItem(group2.libraryID));
|
||||||
|
// New item should link back to original
|
||||||
|
assert.ok(await item.getLinkedItem(group2.libraryID, true));
|
||||||
|
|
||||||
|
await group1.eraseTx();
|
||||||
|
await group2.eraseTx();
|
||||||
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue