You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
CoffeeScript
45 lines
1.2 KiB
CoffeeScript
10 years ago
|
router = require("express-promise-router")()
|
||
|
Promise = require "bluebird"
|
||
|
moment = require "moment"
|
||
|
errors = require "errors"
|
||
|
|
||
|
router.get "/:page?", (req, res) ->
|
||
|
Promise.try ->
|
||
|
if req.params.page? and /^[0-9]+$/.exec(req.params.page) == null
|
||
|
throw new errors.InvalidInput("The specified page number is not valid.")
|
||
|
|
||
|
documentsPerPage = req.appConfig.display.documentsPerPage.gallery
|
||
|
|
||
|
if req.params.page?
|
||
|
pageNumber = parseInt(req.params.page) - 1
|
||
|
|
||
|
if isNaN pageNumber
|
||
|
pageNumber = 0
|
||
|
else
|
||
|
pageNumber = 0
|
||
|
|
||
|
start = documentsPerPage * pageNumber
|
||
|
|
||
|
Promise.try ->
|
||
|
Promise.all [
|
||
|
req.modelQuery "Document", (qb) ->
|
||
|
qb.where "Public": 1, "Disabled": 0
|
||
|
.orderBy "Uploaded", "desc"
|
||
|
.offset start
|
||
|
.limit documentsPerPage
|
||
|
.retrieveAll([], require: false),
|
||
|
|
||
|
req.model("Document").countAllWhere "Public": 1
|
||
|
]
|
||
|
.spread (documents, documentCount) ->
|
||
|
documents.forEach (document) ->
|
||
|
# TODO: There must be a nicer way to do this.
|
||
|
document.set "Uploaded", moment(document.get("Uploaded")).format "MMMM Do, YYYY hh:mm:ss"
|
||
|
|
||
|
res.render "gallery",
|
||
|
documents: documents.toJSON()
|
||
|
pageNumber: pageNumber
|
||
|
pageCount: Math.ceil(documentCount / documentsPerPage)
|
||
|
|
||
|
module.exports = router
|