✨ Use new template renderer
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / ViewPostPage.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.main.*
4 import net.pterodactylus.sone.template.*
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.*
9 import java.net.*
10 import javax.inject.*
11
12 /**
13  * This page lets the user view a post and all its replies.
14  */
15 class ViewPostPage @Inject constructor(template: Template, webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer):
16                 SoneTemplatePage("viewPost.html", webInterface, loaders, template, templateRenderer, pageTitleKey = "Page.ViewPost.Title") {
17
18         override fun handleRequest(soneRequest: SoneRequest, templateContext: TemplateContext) {
19                 templateContext["post"] = soneRequest.parameters["post"]?.let(soneRequest.core::getPost)
20                 templateContext["raw"] = soneRequest.parameters["raw"] == "true"
21         }
22
23         override fun isLinkExcepted(link: URI) = true
24
25         override fun getPageTitle(soneRequest: SoneRequest) =
26                         (soneRequest.parameters["post"]?.let(soneRequest.core::getPost)?.let {
27                                 if (it.text.length > 20) {
28                                         it.text.substring(0..19) + "…"
29                                 } else {
30                                         it.text
31                                 } + " - ${SoneAccessor.getNiceName(it.sone)} - "
32                         } ?: "") + super.getPageTitle(soneRequest)
33
34 }