From 82ef58c65b541b7b96df1354b891d301aa366e48 Mon Sep 17 00:00:00 2001 From: Jeroen van Warmerdam Date: Sun, 7 Dec 2014 18:48:04 +0100 Subject: [PATCH 1/3] Remember flagged state when searching on moderation pages; Fixes #181 --- libs/modelQuery.js | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/modelQuery.js b/libs/modelQuery.js index aea839552..6ae7df3a7 100644 --- a/libs/modelQuery.js +++ b/libs/modelQuery.js @@ -150,6 +150,7 @@ var applyModelListQueryFlaggedFilter = function (aModelListQuery, aOptions, aFla if (aFlaggedQuery) { if (aFlaggedQuery == 'true') { aOptions.isFlagged = true; + aOptions.searchBarFormHiddenVariables.push({ name: 'flagged', value: 'true' }); aModelListQuery.and({ flags: { $gt: 0 } }); } else if (aFlaggedQuery == false) { // aModelListQuery.and({$or: [ From 28fad7cabd9651df6e94f981c005457d62275091 Mon Sep 17 00:00:00 2001 From: Martii Date: Mon, 8 Dec 2014 13:25:17 -0700 Subject: [PATCH 2/3] Finish off #489 for searching on some moderation pages * Apparently flagged true form variable is carried over between tabs/refreshes so remove it when not on a flagged query * Resolve incremental form variable by moving `isFlagged` into conditional * Stray trailing comma in object fix * Remove some dead code * Some STYLEGUIDE.md conformance with missing braces and newlines, and some strict equality test *(still one left in this file but not testing there yet)* * Tested non-flagged routes and checks okay Closes #181 --- libs/modelQuery.js | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/libs/modelQuery.js b/libs/modelQuery.js index 6ae7df3a7..6ddf13179 100644 --- a/libs/modelQuery.js +++ b/libs/modelQuery.js @@ -27,8 +27,9 @@ exports.findOrDefaultIfNull = findOrDefaultIfNull; var orderDirs = ['asc', 'desc']; var parseModelListSort = function (aModelListQuery, aOrderBy, aOrderDir, aDefaultSortFn) { if (aOrderBy) { - if (_.isUndefined(aOrderDir) || !_.contains(orderDirs, aOrderDir)) + if (_.isUndefined(aOrderDir) || !_.contains(orderDirs, aOrderDir)) { aOrderDir = 'asc'; + } if (_.has(aModelListQuery.model.schema.paths, aOrderBy)) { var sortBy = {}; @@ -135,7 +136,9 @@ var parseRemovedItemSearchQuery = function (aRemovedItemListQuery, aQuery) { exports.parseCommentSearchQuery = parseCommentSearchQuery; exports.applyDiscussionCategoryFilter = function (aDiscussionListQuery, aOptions, aCatergorySlug) { - if (aCatergorySlug === 'all') { return; } + if (aCatergorySlug === 'all') { + return; + } if (aCatergorySlug === 'issues') { aDiscussionListQuery.find({ issue: true }); } else { @@ -148,16 +151,19 @@ var applyModelListQueryFlaggedFilter = function (aModelListQuery, aOptions, aFla if (aOptions.isYou || aOptions.isMod) { // Mod if (aFlaggedQuery) { - if (aFlaggedQuery == 'true') { - aOptions.isFlagged = true; - aOptions.searchBarFormHiddenVariables.push({ name: 'flagged', value: 'true' }); + if (aFlaggedQuery === 'true') { + if (!_.findWhere(aOptions.searchBarFormHiddenVariables, { name: 'flagged' })) { + aOptions.isFlagged = true; + aOptions.searchBarFormHiddenVariables.push({ name: 'flagged', value: 'true' }); + } aModelListQuery.and({ flags: { $gt: 0 } }); - } else if (aFlaggedQuery == false) { - // aModelListQuery.and({$or: [ - // {flags: {$exists: false}}, - // {flags: {$lte: 0} }, - // ]}); } + } else { + // Remove `flagged` form variable if present + aOptions.searchBarFormHiddenVariables = _.without( + aOptions.searchBarFormHiddenVariables, + _.findWhere(aOptions.searchBarFormHiddenVariables, { name: 'flagged', value: 'true' }) + ); } } else { // Hide @@ -173,16 +179,18 @@ var applyModelListQueryDefaults = function (aModelListQuery, aOptions, aReq, aDe if (aReq.query.q) { aOptions.searchBarValue = aReq.query.q; - if (aDefaultOptions.parseSearchQueryFn) + if (aDefaultOptions.parseSearchQueryFn) { aDefaultOptions.parseSearchQueryFn(aModelListQuery, aReq.query.q); + } } aOptions.searchBarFormAction = aDefaultOptions.searchBarFormAction || ''; aOptions.searchBarPlaceholder = aDefaultOptions.searchBarPlaceholder || 'Search'; aOptions.searchBarFormHiddenVariables = aDefaultOptions.searchBarFormHiddenVariables || []; // flagged - if (aDefaultOptions.filterFlaggedItems) + if (aDefaultOptions.filterFlaggedItems) { applyModelListQueryFlaggedFilter(aModelListQuery, aOptions, aReq.query.flagged); + } // Sort parseModelListSort(aModelListQuery, aReq.query.orderBy, aReq.query.orderDir, function () { @@ -247,7 +255,7 @@ var libraryListQueryDefaults = { searchBarPlaceholder: 'Search Libraries', searchBarFormAction: '/', searchBarFormHiddenVariables: [ - { name: 'library', value: 'true' }, + { name: 'library', value: 'true' } ], filterFlaggedItems: true }; From 4bcc198c7f96b0c5e037ee89d9a29895f8f4abbb Mon Sep 17 00:00:00 2001 From: Martii Date: Mon, 8 Dec 2014 14:43:49 -0700 Subject: [PATCH 3/3] Change `placeholder` attribute for flagged items Applies to #181, #489 and implemented in #491 See also request at https://github.com/OpenUserJs/OpenUserJS.org/issues/181#issuecomment-65947344 --- libs/modelQuery.js | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/modelQuery.js b/libs/modelQuery.js index 6ddf13179..8a428cc49 100644 --- a/libs/modelQuery.js +++ b/libs/modelQuery.js @@ -155,6 +155,7 @@ var applyModelListQueryFlaggedFilter = function (aModelListQuery, aOptions, aFla if (!_.findWhere(aOptions.searchBarFormHiddenVariables, { name: 'flagged' })) { aOptions.isFlagged = true; aOptions.searchBarFormHiddenVariables.push({ name: 'flagged', value: 'true' }); + aOptions.searchBarPlaceholder = aOptions.searchBarPlaceholder.replace(/^Search /, 'Search Flagged '); } aModelListQuery.and({ flags: { $gt: 0 } }); }