Remove related-item relations when deleting item
This commit is contained in:
parent
8edd8830da
commit
fc4eb5308f
|
@ -1167,6 +1167,8 @@ for (let name of ['deleted', 'inPublications']) {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Relate this item to another. A separate save is required.
|
||||||
|
*
|
||||||
* @param {Zotero.Item}
|
* @param {Zotero.Item}
|
||||||
* @return {Boolean}
|
* @return {Boolean}
|
||||||
*/
|
*/
|
||||||
|
@ -4038,8 +4040,14 @@ Zotero.Item.prototype._eraseData = Zotero.Promise.coroutine(function* (env) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flag related items for notification
|
// Remove related-item relations pointing to this item
|
||||||
// TEMP: Do something with relations
|
var relatedItems = Zotero.Relations.getByPredicateAndObject(
|
||||||
|
'item', Zotero.Relations.relatedItemPredicate, Zotero.URI.getItemURI(this)
|
||||||
|
);
|
||||||
|
for (let relatedItem of relatedItems) {
|
||||||
|
relatedItem.removeRelatedItem(this);
|
||||||
|
relatedItem.save();
|
||||||
|
}
|
||||||
|
|
||||||
// Clear fulltext cache
|
// Clear fulltext cache
|
||||||
if (this.isAttachment()) {
|
if (this.isAttachment()) {
|
||||||
|
|
|
@ -1069,6 +1069,26 @@ describe("Zotero.Item", function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
describe("#_eraseData()", function () {
|
||||||
|
it("should remove relations pointing to this item", function* () {
|
||||||
|
var item1 = yield createDataObject('item');
|
||||||
|
var item2 = yield createDataObject('item');
|
||||||
|
item1.addRelatedItem(item2);
|
||||||
|
yield item1.saveTx();
|
||||||
|
item2.addRelatedItem(item1);
|
||||||
|
yield item2.saveTx();
|
||||||
|
|
||||||
|
yield item1.eraseTx();
|
||||||
|
|
||||||
|
assert.lengthOf(item2.relatedItems, 0);
|
||||||
|
yield assert.eventually.equal(
|
||||||
|
Zotero.DB.valueQueryAsync("SELECT COUNT(*) FROM itemRelations WHERE itemID=?", item2.id),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
describe("#multiDiff", function () {
|
describe("#multiDiff", function () {
|
||||||
it("should return set of alternatives for differing fields in other items", function* () {
|
it("should return set of alternatives for differing fields in other items", function* () {
|
||||||
var type = 'item';
|
var type = 'item';
|
||||||
|
|
Loading…
Reference in New Issue
Block a user