import net.pterodactylus.sone.utils.jsonObject
import net.pterodactylus.sone.utils.let
import net.pterodactylus.sone.utils.parameters
+import net.pterodactylus.sone.utils.render
import net.pterodactylus.sone.web.WebInterface
import net.pterodactylus.sone.web.page.FreenetRequest
import net.pterodactylus.util.template.Template
-import net.pterodactylus.util.template.TemplateContext
-import java.io.StringWriter
/**
* This AJAX handler retrieves information and rendered representation of a [Post].
*/
class GetPostAjaxPage(webInterface: WebInterface, private val postTemplate: Template) : LoggedInJsonPage("getPost.ajax", webInterface) {
- override fun needsFormPassword() = false
+ override val needsFormPassword = false
override fun createJsonObject(currentSone: Sone, request: FreenetRequest) =
request.parameters["post"]
- .let(webInterface.core::getPost)
- .let { post ->
+ ?.let(core::getPost)
+ ?.let { post ->
createSuccessJsonObject().
put("post", jsonObject(
"id" to post.id,
private fun Post.render(currentSone: Sone, request: FreenetRequest) =
webInterface.templateContextFactory.createTemplateContext().apply {
- set("core", webInterface.core)
+ set("core", core)
set("request", request)
set("post", this@render)
set("currentSone", currentSone)
- set("localSones", webInterface.core.localSones)
+ set("localSones", core.localSones)
}.let { postTemplate.render(it) }
}
-
-private fun Template.render(templateContext: TemplateContext) = StringWriter().use { it.also { render(templateContext, it) } }.toString()