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
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
|