From 6657f50e4d60b4e01a6b60449d5cdf4f1194e215 Mon Sep 17 00:00:00 2001 From: Thomas Lynch Date: Fri, 2 Oct 2020 23:23:15 +0000 Subject: [PATCH] add more options on the global manage boards list close #245 --- db/boards.js | 29 +++++++++++++++++++++++---- models/pages/globalmanage/boards.js | 3 +++ views/pages/globalmanageboardlist.pug | 12 +++++++++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/db/boards.js b/db/boards.js index cc7f7062..0505182f 100644 --- a/db/boards.js +++ b/db/boards.js @@ -148,7 +148,7 @@ module.exports = { return listedBoards; }, - boardSort: (skip=0, limit=50, sort={ ips:-1, pph:-1, sequence_value:-1 }, filter={}, showUnlisted=false) => { + boardSort: (skip=0, limit=50, sort={ ips:-1, pph:-1, sequence_value:-1 }, filter={}, showSensitive=false) => { const addedFilter = {}; const projection = { '_id': 1, @@ -162,9 +162,19 @@ module.exports = { 'settings.tags': 1, 'settings.unlistedLocal': 1, }; - if (!showUnlisted) { + if (!showSensitive) { addedFilter['settings.unlistedLocal'] = false; } else { + if (filter.filter_sfw) { + addedFilter['settings.sfw'] = true; + } + if (filter.filter_unlisted) { + addedFilter['settings.unlistedLocal'] = true; + } + if (filter.filter_abandoned) { + addedFilter['owner'] = null; + addedFilter['settings.moderators'] = []; + } projection['settings.moderators'] = 1; projection['owner'] = 1; } @@ -199,10 +209,21 @@ module.exports = { }).toArray(); }, - count: (filter, showUnlisted=false) => { + count: (filter, showSensitive=false) => { const addedFilter = {}; - if (!showUnlisted) { + if (!showSensitive) { addedFilter['settings.unlistedLocal'] = false; + } else { + if (filter.filter_sfw) { + addedFilter['settings.sfw'] = true; + } + if (filter.filter_unlisted) { + addedFilter['settings.unlistedLocal'] = true; + } + if (filter.filter_abandoned) { + addedFilter['owner'] = null; + addedFilter['settings.moderators'] = []; + } } if (filter.search) { addedFilter['$or'] = [ diff --git a/models/pages/globalmanage/boards.js b/models/pages/globalmanage/boards.js index 4b6d39fc..8f594bef 100644 --- a/models/pages/globalmanage/boards.js +++ b/models/pages/globalmanage/boards.js @@ -30,6 +30,9 @@ module.exports = async (req, res, next) => { 'search': search } } + filter.filter_sfw = req.query.filter_sfw != null; + filter.filter_abandoned = req.query.filter_abandoned != null; + filter.filter_unlisted = req.query.filter_unlisted != null; let localBoards, pages, maxPage; try { diff --git a/views/pages/globalmanageboardlist.pug b/views/pages/globalmanageboardlist.pug index 0e36b9aa..22326490 100644 --- a/views/pages/globalmanageboardlist.pug +++ b/views/pages/globalmanageboardlist.pug @@ -27,6 +27,18 @@ block content select(name='direction') option(value='desc') Descending option(value='asc' selected=query.direction === 'asc') Ascending + .row + .label Unlisted + label.postform-style.ph-5 + input(type='checkbox', name='filter_unlisted', value='1' checked=(query.filter_unlisted != null)) + .row + .label SFW + label.postform-style.ph-5 + input(type='checkbox', name='filter_sfw', value='1' checked=(query.filter_sfw != null)) + .row + .label Abandoned + label.postform-style.ph-5 + input(type='checkbox', name='filter_abandoned', value='1' checked=(query.filter_abandoned != null)) input(type='submit', value='Filter') if localBoards && localBoards.length > 0 h4.text-center.mv-10 Board List: