diff --git a/chrome/content/zotero/bindings/tagselector.xml b/chrome/content/zotero/bindings/tagselector.xml index c853f6ec1..54919e112 100644 --- a/chrome/content/zotero/bindings/tagselector.xml +++ b/chrome/content/zotero/bindings/tagselector.xml @@ -265,20 +265,14 @@ diff --git a/chrome/content/zotero/xpcom/data_access.js b/chrome/content/zotero/xpcom/data_access.js index 0b1cda510..e7c14b20e 100644 --- a/chrome/content/zotero/xpcom/data_access.js +++ b/chrome/content/zotero/xpcom/data_access.js @@ -1636,6 +1636,7 @@ Zotero.Item.prototype.addTagByID = function(tagID) { Zotero.DB.commitTransaction(); Zotero.Notifier.trigger('modify', 'item', this.getID()); + Zotero.Notifier.trigger('add', 'item-tag', this.getID() + '-' + tagID); return true; } @@ -1679,6 +1680,8 @@ Zotero.Item.prototype.replaceTag = function(oldTagID, newTag){ var id = this.addTag(newTag); Zotero.DB.commitTransaction(); Zotero.Notifier.trigger('modify', 'item', this.getID()); + Zotero.Notifier.trigger('remove', 'item-tag', this.getID() + '-' + oldTagID); + Zotero.Notifier.trigger('add', 'item-tag', this.getID() + '-' + id); return id; } @@ -1693,6 +1696,7 @@ Zotero.Item.prototype.removeTag = function(tagID){ Zotero.Tags.purge(); Zotero.DB.commitTransaction(); Zotero.Notifier.trigger('modify', 'item', this.getID()); + Zotero.Notifier.trigger('remove', 'item-tag', this.getID() + '-' + tagID); } Zotero.Item.prototype.removeAllTags = function(){ @@ -1701,10 +1705,18 @@ Zotero.Item.prototype.removeAllTags = function(){ } Zotero.DB.beginTransaction(); + var tagIDs = this.getTagIDs(); Zotero.DB.query("DELETE FROM itemTags WHERE itemID=?", this.getID()); Zotero.Tags.purge(); Zotero.DB.commitTransaction(); Zotero.Notifier.trigger('modify', 'item', this.getID()); + + if (tagIDs) { + for (var i in tagIDs) { + tagIDs[i] = this.getID() + '-' + tagIDs[i]; + } + Zotero.Notifier.trigger('remove', 'item-tag', tagIDs); + } } @@ -2643,7 +2655,7 @@ Zotero.Collection.prototype.addItem = function(itemID){ Zotero.Notifier.trigger('modify', 'collection', this.getID()); } - Zotero.Notifier.trigger('add', 'item', itemID); + Zotero.Notifier.trigger('add', 'collection-item', this.getID() + '-' + itemID); } @@ -2684,7 +2696,7 @@ Zotero.Collection.prototype.removeItem = function(itemID){ Zotero.Notifier.trigger('modify', 'collection', this.getID()); } - Zotero.Notifier.trigger('remove', 'item', itemID); + Zotero.Notifier.trigger('remove', 'collection-item', this.getID() + '-' + itemID); } @@ -3258,6 +3270,11 @@ Zotero.Tags = new function(){ Zotero.DB.commitTransaction(); Zotero.Notifier.trigger('modify', 'item', itemIDs); + var itemTags = []; + for (var i in itemIDs) { + itemTags.push(itemIDs[i] + '-' + tagID); + } + Zotero.Notifier.trigger('modify', 'item-tag', itemTags); Zotero.Notifier.trigger('modify', 'tag', tagID); } @@ -3266,15 +3283,21 @@ Zotero.Tags = new function(){ Zotero.DB.beginTransaction(); var sql = "SELECT itemID FROM itemTags WHERE tagID=?"; - var items = Zotero.DB.columnQuery(sql, tagID); + var itemIDs = Zotero.DB.columnQuery(sql, tagID); - if (!items) { + if (!itemIDs) { return; } var sql = "DELETE FROM itemTags WHERE tagID=?"; Zotero.DB.query(sql, tagID); - Zotero.Notifier.trigger('modify', 'item', items) + + Zotero.Notifier.trigger('modify', 'item', itemIDs) + var itemTags = []; + for (var i in itemIDs) { + itemTags.push(itemIDs[i] + '-' + tagID); + } + Zotero.Notifier.trigger('remove', 'item-tag', itemTags); this.purge(); Zotero.DB.commitTransaction(); diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js index 2db1d8a52..85846614f 100644 --- a/chrome/content/zotero/xpcom/itemTreeView.js +++ b/chrome/content/zotero/xpcom/itemTreeView.js @@ -110,7 +110,7 @@ Zotero.ItemTreeView.prototype.refresh = function() */ Zotero.ItemTreeView.prototype.notify = function(action, type, ids) { - if (type != 'item'){ + if (type != 'item' && type != 'collection-item'){ return; } @@ -136,12 +136,13 @@ Zotero.ItemTreeView.prototype.notify = function(action, type, ids) var rows = new Array(); for(var i=0, len=ids.length; i