mirror of
https://github.com/BobbyWibowo/lolisafe.git
synced 2024-12-13 16:06:21 +00:00
677d8717e7
* It will now properly create "editedAt" and "zipGeneratedAt" columns into "albums" table, which will then be used for the "Download Album" feature. Previously, due to the lack of those columns, people could not download albums. Existing installation will have to do some manual patches, which I will describe further in the commit's comments. * Thumbnail-less files will properly show the extensions in albums. Previously it would have two dots.
56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
const config = require('../config.js')
|
|
const routes = require('express').Router()
|
|
const db = require('knex')(config.database)
|
|
const path = require('path')
|
|
const utils = require('../controllers/utilsController.js')
|
|
|
|
routes.get('/a/:identifier', async (req, res, next) => {
|
|
let identifier = req.params.identifier
|
|
if (identifier === undefined) return res.status(401).json({ success: false, description: 'No identifier provided' })
|
|
|
|
const album = await db.table('albums').where({ identifier, enabled: 1 }).first()
|
|
if (!album) return res.status(404).sendFile('404.html', { root: './pages/error/' })
|
|
|
|
const files = await db.table('files').select('name').where('albumid', album.id).orderBy('id', 'DESC')
|
|
let thumb = ''
|
|
const basedomain = config.domain
|
|
|
|
for (let file of files) {
|
|
file.file = `${basedomain}/${file.name}`
|
|
|
|
let ext = path.extname(file.name).toLowerCase()
|
|
if ((config.uploads.generateImageThumbnails && utils.imageExtensions.includes(ext)) || (config.uploads.generateVideoThumbnails && utils.videoExtensions.includes(ext))) {
|
|
file.thumb = `${basedomain}/thumbs/${file.name.slice(0, -ext.length)}.png`
|
|
|
|
/*
|
|
If thumbnail for album is still not set, do it.
|
|
A potential improvement would be to let the user upload a specific image as an album cover
|
|
since embedding the first image could potentially result in nsfw content when pasting links.
|
|
*/
|
|
|
|
if (thumb === '') {
|
|
thumb = file.thumb
|
|
}
|
|
|
|
file.thumb = `<img src="${file.thumb}"/>`
|
|
} else {
|
|
file.thumb = `<h1 class="title">${ext}</h1>`
|
|
}
|
|
}
|
|
|
|
let enableDownload = false
|
|
if (config.uploads.generateZips) enableDownload = true
|
|
|
|
return res.render('album', {
|
|
layout: false,
|
|
title: album.name,
|
|
count: files.length,
|
|
thumb,
|
|
files,
|
|
identifier,
|
|
enableDownload
|
|
})
|
|
})
|
|
|
|
module.exports = routes
|