Skip to content

Commit c080045

Browse files
author
Martii
committed
Add "All" filter to script issues
* Create `.../all` and `.../open` issue route handling via existing `params` ... existing structure and currently needed for searching and script homepage count * If `isOwner` show only open issues otherwise default to all issues for default route... allow forcing for any script issues with absolute route. * Change corresponding UI markers to accomodate * Some STYLEGUIDE.md conformance Closes #615
1 parent 828c3fe commit c080045

3 files changed

Lines changed: 32 additions & 13 deletions

File tree

controllers/issue.js

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ exports.list = function (aReq, aRes, aNext) {
3131
var username = aReq.params.username;
3232
var scriptname = aReq.params.scriptname;
3333
var open = aReq.params.open !== 'closed';
34+
var listAll = aReq.params.open === 'all';
3435

3536
var installNameSlug = username + '/' + scriptname;
3637

@@ -85,8 +86,11 @@ exports.list = function (aReq, aRes, aNext) {
8586
// discussionListQuery: category
8687
discussionListQuery.find({ category: category.slug });
8788

88-
// discussionListQuery: open
89-
modelQuery.findOrDefaultIfNull(discussionListQuery, 'open', options.openIssuesOnly, true);
89+
// discussionListQuery: Optionally filter discussion list
90+
options.allIssues = !aReq.params.open && !options.isOwner || listAll;
91+
if (!options.allIssues) {
92+
modelQuery.findOrDefaultIfNull(discussionListQuery, 'open', options.openIssuesOnly, true);
93+
}
9094

9195
// discussionListQuery: Defaults
9296
modelQuery.applyDiscussionListQueryDefaults(discussionListQuery, options, aReq);
@@ -100,7 +104,10 @@ exports.list = function (aReq, aRes, aNext) {
100104
//--- Tasks
101105

102106
// Show the number of open issues
103-
var scriptOpenIssueCountQuery = Discussion.find({ category: script.issuesCategorySlug, open: { $ne: false } });
107+
var scriptOpenIssueCountQuery = Discussion.find({
108+
category: script.issuesCategorySlug,
109+
open: { $ne: false }
110+
});
104111
tasks.push(countTask(scriptOpenIssueCountQuery, options, 'issueCount'));
105112

106113
// Pagination
@@ -121,16 +128,24 @@ exports.list = function (aReq, aRes, aNext) {
121128

122129
// Empty list
123130
if (options.searchBarValue) {
124-
if (open) {
125-
options.discussionListIsEmptyMessage = 'We couldn\'t find any open discussions with this search value.';
131+
if (options.allIssues) {
132+
options.discussionListIsEmptyMessage = 'We couldn\'t find any discussions with this search value.';
126133
} else {
127-
options.discussionListIsEmptyMessage = 'We couldn\'t find any closed discussions with this search value.';
134+
if (open) {
135+
options.discussionListIsEmptyMessage = 'We couldn\'t find any open discussions with this search value.';
136+
} else {
137+
options.discussionListIsEmptyMessage = 'We couldn\'t find any closed discussions with this search value.';
138+
}
128139
}
129140
} else {
130-
if (open) {
131-
options.discussionListIsEmptyMessage = 'No open discussions.';
141+
if (options.allIssues) {
142+
options.discussionListIsEmptyMessage = 'No discussions.';
132143
} else {
133-
options.discussionListIsEmptyMessage = 'No closed discussions.';
144+
if (open) {
145+
options.discussionListIsEmptyMessage = 'No open discussions.';
146+
} else {
147+
options.discussionListIsEmptyMessage = 'No closed discussions.';
148+
}
134149
}
135150
}
136151
}
@@ -204,7 +219,10 @@ exports.view = function (aReq, aRes, aNext) {
204219
//--- Tasks
205220

206221
// Show the number of open issues
207-
var scriptOpenIssueCountQuery = Discussion.find({ category: script.issuesCategorySlug, open: { $ne: false } }); // TODO: STYLEGUIDE.md conformance needed here
222+
var scriptOpenIssueCountQuery = Discussion.find({
223+
category: script.issuesCategorySlug,
224+
open: { $ne: false }
225+
});
208226
tasks.push(countTask(scriptOpenIssueCountQuery, options, 'issueCount'));
209227

210228
// Pagination

routes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ module.exports = function (aApp) {
8383
aApp.route('/libs/src/:username/:scriptname').get(scriptStorage.sendScript); // Legacy
8484

8585
// Issues routes
86-
aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:open(closed)?').get(issue.list);
86+
aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:open(open|closed|all)?').get(issue.list);
8787
aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issue/new').get(authentication.validateUser, issue.open).post(authentication.validateUser, issue.open);
8888
aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:topic').get(issue.view).post(authentication.validateUser, issue.comment);
8989
aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:topic/:action(close|reopen)').get(authentication.validateUser, issue.changeStatus);

views/pages/scriptIssueListPage.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@
4848
<div class="panel">
4949
<div class="panel-body">
5050
<ul class="nav nav-pills nav-justified">
51-
<li class="{{#openIssuesOnly}}active{{/openIssuesOnly}}"><a href="{{{category.categoryPageUrl}}}">Open</a></li>
52-
<li class="{{^openIssuesOnly}}active{{/openIssuesOnly}}"><a href="{{{category.categoryPageUrl}}}/closed">Closed</a></li>
51+
<li class="{{^allIssues}}{{#openIssuesOnly}}active{{/openIssuesOnly}}{{/allIssues}}"><a href="{{{category.categoryPageUrl}}}/open">Open</a></li>
52+
<li class="{{^allIssues}}{{^openIssuesOnly}}active{{/openIssuesOnly}}{{/allIssues}}"><a href="{{{category.categoryPageUrl}}}/closed">Closed</a></li>
53+
<li class="{{#allIssues}}active{{/allIssues}}"><a href="{{{category.categoryPageUrl}}}/all">All</a></li>
5354
</ul>
5455
</div>
5556
</div>

0 commit comments

Comments
 (0)