diff --git a/chrome/content/zotero/xpcom/data/search.js b/chrome/content/zotero/xpcom/data/search.js index 8e413aa4c..5d917a42f 100644 --- a/chrome/content/zotero/xpcom/data/search.js +++ b/chrome/content/zotero/xpcom/data/search.js @@ -1046,7 +1046,9 @@ Zotero.Search.prototype._buildQuery = Zotero.Promise.coroutine(function* () { + "AND itemID NOT IN " + "(SELECT itemID FROM itemAttachments WHERE parentItemID IS NOT NULL " + "UNION SELECT itemID FROM itemNotes WHERE parentItemID IS NOT NULL)" - + ")"; + + ") " + // Exclude My Publications + + "AND itemID NOT IN (SELECT itemID FROM publicationsItems)"; } if (publications) { diff --git a/test/content/support.js b/test/content/support.js index 674bcbec6..547edb99a 100644 --- a/test/content/support.js +++ b/test/content/support.js @@ -395,7 +395,9 @@ function createUnsavedDataObject(objectType, params = {}) { itemType = params.itemType || 'book'; allowedParams.push('dateAdded', 'dateModified'); } - + if (objectType == 'item') { + allowedParams.push('inPublications'); + } if (objectType == 'feedItem') { params.guid = params.guid || Zotero.randomString(); allowedParams.push('guid'); diff --git a/test/tests/searchTest.js b/test/tests/searchTest.js index a2e53298b..ce2b36734 100644 --- a/test/tests/searchTest.js +++ b/test/tests/searchTest.js @@ -296,6 +296,20 @@ describe("Zotero.Search", function() { assert.notInclude(matches, item.id); }); }); + + describe("unfiled", function () { + it("shouldn't include items in My Publications", function* () { + var item1 = yield createDataObject('item'); + var item2 = yield createDataObject('item', { inPublications: true }); + + var s = new Zotero.Search; + s.libraryID = Zotero.Libraries.userLibraryID; + s.addCondition('unfiled', 'true'); + var matches = yield s.search(); + assert.include(matches, item1.id); + assert.notInclude(matches, item2.id); + }); + }); }); });