Skip to content

Commit b9f1765

Browse files
committed
Merge pull request #772 from Martii/Issue-641
Add inverse filter list Auto-merge
2 parents 89e2321 + b12f1c7 commit b9f1765

11 files changed

Lines changed: 84 additions & 29 deletions

File tree

controllers/group.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ exports.view = function (aReq, aRes, aNext) {
254254

255255
// Empty list
256256
options.scriptListIsEmptyMessage = 'No scripts.';
257-
if (options.isFlagged) {
257+
if (!!options.isFlagged) {
258258
if (options.librariesOnly) {
259259
options.scriptListIsEmptyMessage = 'No flagged libraries.';
260260
} else {

controllers/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ exports.home = function (aReq, aRes) {
116116

117117
// Empty list
118118
options.scriptListIsEmptyMessage = 'No scripts.';
119-
if (options.isFlagged) {
119+
if (!!options.isFlagged) {
120120
if (options.librariesOnly) {
121121
options.scriptListIsEmptyMessage = 'No flagged libraries.';
122122
} else {
@@ -134,13 +134,13 @@ exports.home = function (aReq, aRes) {
134134

135135
// Heading
136136
if (options.librariesOnly) {
137-
options.pageHeading = options.isFlagged ? 'Flagged Libraries' : 'Libraries';
137+
options.pageHeading = !!options.isFlagged ? 'Flagged Libraries' : 'Libraries';
138138
} else {
139-
options.pageHeading = options.isFlagged ? 'Flagged Scripts' : 'Scripts';
139+
options.pageHeading = !!options.isFlagged ? 'Flagged Scripts' : 'Scripts';
140140
}
141141

142142
// Page metadata
143-
if (options.isFlagged) {
143+
if (!!options.isFlagged) {
144144
if (options.librariesOnly) {
145145
pageMetadata(options, ['Flagged Libraries', 'Moderation']);
146146
} else {
@@ -155,7 +155,7 @@ exports.home = function (aReq, aRes) {
155155

156156
async.parallel([
157157
function (aCallback) {
158-
if (!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
158+
if (!!!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
159159
aCallback();
160160
return;
161161
}

controllers/user.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,17 +223,17 @@ exports.userListPage = function (aReq, aRes, aNext) {
223223

224224
// Empty list
225225
options.userListIsEmptyMessage = 'No users.';
226-
if (options.isFlagged) {
226+
if (!!options.isFlagged) {
227227
options.userListIsEmptyMessage = 'No flagged users.';
228228
} else if (options.searchBarValue) {
229229
options.userListIsEmptyMessage = 'We couldn\'t find any users by this name.';
230230
}
231231

232232
// Heading
233-
options.pageHeading = options.isFlagged ? 'Flagged Users' : 'Users';
233+
options.pageHeading = !!options.isFlagged ? 'Flagged Users' : 'Users';
234234

235235
// Page metadata
236-
if (options.isFlagged) {
236+
if (!!options.isFlagged) {
237237
pageMetadata(options, ['Flagged Users', 'Moderation']);
238238
}
239239
}
@@ -248,7 +248,7 @@ exports.userListPage = function (aReq, aRes, aNext) {
248248

249249
async.parallel([
250250
function (aCallback) {
251-
if (!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
251+
if (!!!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
252252
aCallback();
253253
return;
254254
}
@@ -524,7 +524,7 @@ exports.userScriptListPage = function (aReq, aRes, aNext) {
524524

525525
// Empty list
526526
options.scriptListIsEmptyMessage = 'No scripts.';
527-
if (options.isFlagged) {
527+
if (!!options.isFlagged) {
528528
if (options.librariesOnly) {
529529
options.scriptListIsEmptyMessage = 'No flagged libraries.';
530530
} else {
@@ -547,7 +547,7 @@ exports.userScriptListPage = function (aReq, aRes, aNext) {
547547

548548
async.parallel([
549549
function (aCallback) {
550-
if (!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
550+
if (!!!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
551551
aCallback();
552552
return;
553553
}

libs/modelQuery.js

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -182,25 +182,59 @@ var applyModelListQueryFlaggedFilter = function (aModelListQuery, aOptions, aFla
182182
if (aOptions.isYou || aOptions.isMod) {
183183
// Mod
184184
if (aFlaggedQuery) {
185-
if (aFlaggedQuery === 'true') {
186-
aOptions.isFlagged = true;
187-
aOptions.searchBarPlaceholder = aOptions.searchBarPlaceholder.replace(/^Search /, 'Search Flagged ');
188-
if (!_.findWhere(aOptions.searchBarFormHiddenVariables, { name: 'flagged' })) {
189-
aOptions.searchBarFormHiddenVariables.push({ name: 'flagged', value: 'true' });
190-
}
191-
aModelListQuery.and({ flags: { $gt: 0 } });
185+
186+
aOptions.isFlagged = aFlaggedQuery;
187+
aOptions.searchBarPlaceholder = aOptions.searchBarPlaceholder.replace(
188+
/^Search /, 'Search Flagged '
189+
);
190+
191+
switch (aOptions.isFlagged) {
192+
case 'none':
193+
if (aOptions.isAdmin) {
194+
// Filter nothing but still show Flagged column
195+
break;
196+
}
197+
// fallthrough
198+
case 'absolute':
199+
if (aOptions.isAdmin) {
200+
aOptions.filterAbsolute = true;
201+
aModelListQuery.and({ flagsAbsolute: { $gt: 0 } }); // TODO: This does not exist yet
202+
break;
203+
}
204+
// fallthrough
205+
default:
206+
// Ensure default depending on role
207+
if (aOptions.isAdmin) {
208+
aOptions.isFlagged = 'critical';
209+
aOptions.filterCritical = true;
210+
211+
} else {
212+
aOptions.isFlagged = 'true';
213+
}
214+
215+
aModelListQuery.and({ flags: { $gt: 0 } });
216+
break;
217+
}
218+
219+
if (!_.findWhere(aOptions.searchBarFormHiddenVariables, { name: 'flagged' })) {
220+
aOptions.searchBarFormHiddenVariables.push({ name: 'flagged', value: aOptions.isFlagged });
192221
}
222+
193223
} else {
224+
194225
// Remove `flagged` form variable if present
195226
aOptions.searchBarFormHiddenVariables = _.without(
196227
aOptions.searchBarFormHiddenVariables,
197-
_.findWhere(aOptions.searchBarFormHiddenVariables, { name: 'flagged', value: 'true' })
228+
_.findWhere(aOptions.searchBarFormHiddenVariables, { name: 'flagged' })
198229
);
230+
199231
}
200232
} else {
233+
201234
// Hide
202235
// Script.flagged is undefined by default.
203236
aModelListQuery.and({ flagged: { $ne: true } });
237+
204238
}
205239
};
206240
exports.applyModelListQueryFlaggedFilter = applyModelListQueryFlaggedFilter;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<h3>Filters</h3>
2+
<div class="list-group">
3+
<a class="list-group-item list-group-item-info" href="?flagged=none{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}"><i class="fa fa-fw fa-times"></i> Clear Filter</a>
4+
<a class="list-group-item{{#filterCritical}} active{{/filterCritical}}" href="?flagged=critical{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}"><i class="fa fa-fw fa-flag-o"></i> Critical Flags</a>
5+
<a class="list-group-item{{#filterAbsolute}} active{{/filterAbsolute}}" href="?flagged=absolute{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}"><i class="fa fa-fw fa-flag"></i> Absolute Flags</a>
6+
</div>

views/includes/scriptList.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<table class="table table-hover">
22
<thead>
33
<tr>
4-
<th class="text-center"><a href="?orderBy=name&orderDir={{orderDir.name}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#librariesOnly}}&library=true{{/librariesOnly}}{{#isFlagged}}&flagged=true{{/isFlagged}}">Name</a></th>
5-
{{^librariesOnly}}<th class="text-center td-fit"><a href="?orderBy=installs&orderDir={{orderDir.install}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#isFlagged}}&flagged=true{{/isFlagged}}">Installs</a></th>{{/librariesOnly}}
6-
<th class="text-center td-fit"><a href="?orderBy=rating&orderDir={{orderDir.rating}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#librariesOnly}}&library=true{{/librariesOnly}}{{#isFlagged}}&flagged=true{{/isFlagged}}">Rating</a></th>
7-
<th class="text-center td-fit"><a href="?orderBy=updated&orderDir={{orderDir.updated}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#librariesOnly}}&library=true{{/librariesOnly}}{{#isFlagged}}&flagged=true{{/isFlagged}}">Last Updated</a></th>
4+
<th class="text-center"><a href="?orderBy=name&orderDir={{orderDir.name}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#librariesOnly}}&library=true{{/librariesOnly}}{{#isFlagged}}&flagged={{isFlagged}}{{/isFlagged}}">Name</a></th>
5+
{{^librariesOnly}}<th class="text-center td-fit"><a href="?orderBy=installs&orderDir={{orderDir.install}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#isFlagged}}&flagged={{isFlagged}}{{/isFlagged}}">Installs</a></th>{{/librariesOnly}}
6+
<th class="text-center td-fit"><a href="?orderBy=rating&orderDir={{orderDir.rating}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#librariesOnly}}&library=true{{/librariesOnly}}{{#isFlagged}}&flagged={{isFlagged}}{{/isFlagged}}">Rating</a></th>
7+
<th class="text-center td-fit"><a href="?orderBy=updated&orderDir={{orderDir.updated}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#librariesOnly}}&library=true{{/librariesOnly}}{{#isFlagged}}&flagged={{isFlagged}}{{/isFlagged}}">Last Updated</a></th>
88
{{#hasFlagged}}
99
<th>Flagged</th>
1010
{{/hasFlagged}}

views/includes/userList.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<table class="table table-hover table-condensed">
22
<thead>
33
<tr>
4-
<th><a href="?orderBy=name&orderDir={{orderDir.name}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#isFlagged}}&flagged=true{{/isFlagged}}">Name</a></th>
5-
<th class="td-fit"><a href="?orderBy=role&orderDir={{orderDir.role}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#isFlagged}}&flagged=true{{/isFlagged}}">Rank</a></th>
4+
<th><a href="?orderBy=name&orderDir={{orderDir.name}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#isFlagged}}&flagged={{isFlagged}}{{/isFlagged}}">Name</a></th>
5+
<th class="td-fit"><a href="?orderBy=role&orderDir={{orderDir.role}}{{#searchBarValue}}&q={{searchBarValue}}{{/searchBarValue}}{{#isFlagged}}&flagged={{isFlagged}}{{/isFlagged}}">Rank</a></th>
66
{{#hasFlagged}}
77
<th>Flagged</th>
88
{{/hasFlagged}}

views/pages/modPage.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
<h3>Flagged Items</h3>
1313
<p>These are items over their threshold.</p>
1414
<div class="list-group">
15-
<a href="/?flagged=true" class="list-group-item">
15+
<a href="/?flagged={{#isAdmin}}critical{{/isAdmin}}{{^isAdmin}}true{{/isAdmin}}" class="list-group-item">
1616
<i class="fa fa-fw fa-file-code-o"></i> <i class="fa fa-fw fa-flag"></i> Flagged Scripts
1717
</a>
18-
<a href="/?library=true&flagged=true" class="list-group-item">
18+
<a href="/?library=true&flagged={{#isAdmin}}critical{{/isAdmin}}{{^isAdmin}}true{{/isAdmin}}" class="list-group-item">
1919
<i class="fa fa-fw fa-file-excel-o"></i> <i class="fa fa-fw fa-flag"></i> Flagged Libraries
2020
</a>
21-
<a href="/users?flagged=true" class="list-group-item">
21+
<a href="/users?flagged={{#isAdmin}}critical{{/isAdmin}}{{^isAdmin}}true{{/isAdmin}}" class="list-group-item">
2222
<i class="fa fa-fw fa-user"></i> <i class="fa fa-fw fa-flag"></i> Flagged Users
2323
</a>
2424
</div>

views/pages/scriptListPage.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ <h2 class="page-heading">
2828
</div>
2929
<div class="col-sm-4">
3030
{{> includes/searchBarPanel.html }}
31+
{{#isFlagged}}
32+
{{#isAdmin}}
33+
{{> includes/flagAdminToolFlaggedFilters.html }}
34+
{{/isAdmin}}
35+
{{/isFlagged}}
3136
{{> includes/popularGroupsPanel.html }}
3237
{{> includes/announcementsPanel.html }}
3338
</div>

views/pages/userListPage.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ <h2 class="page-heading">
2828
</div>
2929
<div class="col-sm-4">
3030
{{> includes/searchBarPanel.html }}
31+
{{#isFlagged}}
32+
{{#isAdmin}}
33+
{{> includes/flagAdminToolFlaggedFilters.html }}
34+
{{/isAdmin}}
35+
{{/isFlagged}}
3136
</div>
3237
</div>
3338
</div>

0 commit comments

Comments
 (0)