1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.data.*
4 import net.pterodactylus.sone.main.*
5 import net.pterodactylus.sone.utils.*
6 import net.pterodactylus.sone.web.*
7 import net.pterodactylus.sone.web.page.*
8 import net.pterodactylus.util.template.*
13 * The image browser page is the entry page for the image management.
15 @MenuName("ImageBrowser")
16 @TemplatePath("/templates/imageBrowser.html")
17 @ToadletPath("imageBrowser.html")
18 class ImageBrowserPage @Inject constructor(webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer) :
19 LoggedInPage("Page.ImageBrowser.Title", webInterface, loaders, templateRenderer) {
21 override fun handleRequest(soneRequest: SoneRequest, currentSone: Sone, templateContext: TemplateContext) {
22 if ("album" in soneRequest.parameters) {
23 templateContext["albumRequested"] = true
24 templateContext["album"] = soneRequest.core.getAlbum(soneRequest.parameters["album"]!!)
25 templateContext["page"] = soneRequest.parameters["page"]
26 } else if ("image" in soneRequest.parameters) {
27 templateContext["imageRequested"] = true
28 templateContext["image"] = soneRequest.core.getImage(soneRequest.parameters["image"])
29 } else if (soneRequest.parameters["mode"] == "gallery") {
30 templateContext["galleryRequested"] = true
31 soneRequest.core.sones
32 .map(Sone::getRootAlbum)
33 .flatMap(Album::getAlbums)
34 .flatMap { Album.FLATTENER.apply(it)!! }
35 .filterNot(Album::isEmpty)
36 .sortedBy(Album::getTitle)
38 albums.paginate(soneRequest.core.preferences.imagesPerPage)
39 .turnTo(soneRequest.parameters["page"]?.toIntOrNull() ?: 0)
41 templateContext["albumPagination"] = pagination
42 templateContext["albums"] = pagination.items
46 templateContext["soneRequested"] = true
47 templateContext["sone"] = soneRequest.core.getSone(soneRequest.httpRequest.getParam("sone")) ?: currentSone
51 override fun isLinkExcepted(link: URI) = true