87 lines
2.6 KiB
Scala
87 lines
2.6 KiB
Scala
package views.html.ublog
|
|
|
|
import controllers.routes
|
|
import play.api.mvc.Call
|
|
|
|
import lila.api.Context
|
|
import lila.app.templating.Environment._
|
|
import lila.app.ui.ScalatagsTemplate._
|
|
import lila.ublog.UblogForm.UblogPostData
|
|
import lila.ublog.UblogPost
|
|
import lila.user.User
|
|
|
|
object post {
|
|
|
|
def apply(user: User, post: UblogPost, markup: Frag)(implicit ctx: Context) =
|
|
views.html.base.layout(
|
|
moreCss = frag(cssTag("ublog")),
|
|
title = s"${user.username} blog • ${post.title}"
|
|
) {
|
|
main(cls := "box box-pad page page-small ublog-post")(
|
|
header(cls := "ublog-post__header")(
|
|
a(href := routes.Ublog.index(user.username))(
|
|
s"${user.username}' Blog"
|
|
),
|
|
ctx.is(user) option a(
|
|
href := editUrlOf(post),
|
|
cls := "button button-empty text",
|
|
dataIcon := ""
|
|
)(
|
|
"Edit your blog post"
|
|
)
|
|
),
|
|
ctx.is(user) option standardFlash(),
|
|
h1(cls := "ublog-post__title")(post.title),
|
|
div(cls := "ublog-post__meta")(
|
|
span(cls := "ublog-post__meta__author")("by ", userLink(user)),
|
|
post.liveAt map { date =>
|
|
span(cls := "ublog-post__meta__date")(semanticDate(date))
|
|
}
|
|
),
|
|
imageOf(post)(cls := "ublog-post__image"),
|
|
strong(cls := "ublog-post__intro")(post.intro),
|
|
div(cls := "ublog-post__markup")(markup)
|
|
)
|
|
}
|
|
|
|
def card(post: UblogPost, makeUrl: UblogPost => Call = urlOf)(implicit ctx: Context) =
|
|
a(cls := "ublog-post-card", href := makeUrl(post))(
|
|
thumbnailOf(post)(cls := "ublog-post-card__image"),
|
|
span(cls := "ublog-post-card__content")(
|
|
h2(cls := "ublog-post-card__title")(post.title),
|
|
span(cls := "ublog-post-card__intro")(post.intro),
|
|
post.liveAt map semanticDate
|
|
)
|
|
)
|
|
|
|
def urlOf(post: UblogPost) = routes.Ublog.post(usernameOrId(post.user), post.slug, post.id.value)
|
|
|
|
def editUrlOf(post: UblogPost) = routes.Ublog.edit(usernameOrId(post.user), post.id.value)
|
|
|
|
def thumbnailOf(post: UblogPost) = {
|
|
val (w, h) = (600, 200)
|
|
post.image match {
|
|
case Some(image) =>
|
|
baseImg(src := picfitUrl(image).thumbnail(w, h))
|
|
case _ =>
|
|
div(cls := "ublog-post-image-default")
|
|
}
|
|
}
|
|
|
|
def imageOf(post: UblogPost, height: Int = 400) =
|
|
post.image match {
|
|
case Some(image) =>
|
|
baseImg(
|
|
heightA := height,
|
|
src := picfitUrl(image).resize(Right(height))
|
|
)
|
|
case _ =>
|
|
baseImg(
|
|
heightA := height,
|
|
src := assetUrl("images/placeholder.png")
|
|
)
|
|
}
|
|
|
|
private val baseImg = img(cls := "ublog-post-image")
|
|
}
|