diff options
| author | Jules Laplace <jules@okfoc.us> | 2015-02-02 18:16:09 -0500 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2015-02-02 18:16:09 -0500 |
| commit | 1169b347c1f339b64f30466004a3f9a06ef7e117 (patch) | |
| tree | 054aa08f61848abcd9bd2a699d2dc0ac31f25b56 | |
| parent | 22447d0ef21f8d4488ea1baab073801d8407acab (diff) | |
find users by initial
| -rw-r--r-- | public/assets/stylesheets/staff.css | 8 | ||||
| -rw-r--r-- | server/lib/views/staff.js | 12 | ||||
| -rw-r--r-- | views/staff/_users.ejs | 10 |
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> |
