summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-02-02 18:16:09 -0500
committerJules Laplace <jules@okfoc.us>2015-02-02 18:16:09 -0500
commit1169b347c1f339b64f30466004a3f9a06ef7e117 (patch)
tree054aa08f61848abcd9bd2a699d2dc0ac31f25b56
parent22447d0ef21f8d4488ea1baab073801d8407acab (diff)
find users by initial
-rw-r--r--public/assets/stylesheets/staff.css8
-rw-r--r--server/lib/views/staff.js12
-rw-r--r--views/staff/_users.ejs10
3 files changed, 28 insertions, 2 deletions
diff --git a/public/assets/stylesheets/staff.css b/public/assets/stylesheets/staff.css
index d93e46e..ebc240a 100644
--- a/public/assets/stylesheets/staff.css
+++ b/public/assets/stylesheets/staff.css
@@ -39,6 +39,14 @@ nav.subnav {
.alphabet a {
margin-left: 5px;
}
+.body .error {
+ color: #f00;
+ border: 1px solid #f00;
+ margin: 20px 5px 200px 5px;
+ padding: 10px;
+ width: 400px;
+ display: inline-block;
+}
hr {
border: 1px solid #bbb;
margin: 10px auto 10px;
diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js
index b772859..07050f1 100644
--- a/server/lib/views/staff.js
+++ b/server/lib/views/staff.js
@@ -38,6 +38,7 @@ var staff = module.exports = {
var criteria = req.criteria || {}
var limit = paginationInfo.limit = Math.min( Number(req.query.limit) || 50, 200 )
var offset = paginationInfo.offset = Number(req.query.offset) || 0
+ var initial = util.sanitize(req.query.initial)
var sort
paginationInfo.sort = req.query.sort
paginationInfo.sortOptions = ["date", "last_seen", "username"]
@@ -54,6 +55,9 @@ var staff = module.exports = {
paginationInfo.sort = "username"
break
}
+ if (initial) {
+ criteria.username = new RegExp('^' + initial, "i")
+ }
User.find(criteria)
.select(staff.fields.user)
.sort(sort)
@@ -61,6 +65,14 @@ var staff = module.exports = {
.limit(limit)
.exec(function (err, users) {
res.locals.users = users.map(staff.helpers.user)
+ if (! res.locals.users.length) {
+ if (initial) {
+ res.locals.opt.error = "No users found starting with <b>" + initial.toUpperCase() + "</b>"
+ }
+ else {
+ res.locals.opt.error = "No users found"
+ }
+ }
next()
})
},
diff --git a/views/staff/_users.ejs b/views/staff/_users.ejs
index 1af47aa..9caf893 100644
--- a/views/staff/_users.ejs
+++ b/views/staff/_users.ejs
@@ -1,12 +1,18 @@
<nav class="subnav">
sort by <a href="?sort=date">date</a> ... <a href="?sort=last_seen">recent</a> ... <a href="?sort=name">name</a> ... jump to a letter:
<span class="alphabet">
- [[ "abcdefghijklmnopqrstuvwxyz".split("").forEach(function(letter){ ]]
- <a href="?sort=name&letter=[[- letter ]]">[[- letter.toUpperCase() ]]</a>
+ [[ "abcdefghijklmnopqrstuvwxyz?".split("").forEach(function(letter){ ]]
+ <a href="?sort=name&initial=[[- letter ]]">[[- letter.toUpperCase() ]]</a>
[[ }) ]]
</span>
</nav>
+[[ if (! users.length || opt.error) { ]]
+<div class="error">
+ [[- opt.error ]]
+</div>
+[[ } ]]
+
<table id="users">
[[ users.forEach(function(user){ ]]
<tr>