base/src/sqwl/cms/Layout.scala
author Tomas Zeman <tzeman@volny.cz>
Thu, 06 Dec 2018 15:19:41 +0100
changeset 12 e7512f9dc903
parent 8 8e0809dad9f7
child 13 216da61215db
permissions -rw-r--r--
Layout: categories, articles, primary view

package sqwl.cms

import BuildInfo.versions
import scalatags.Text.all
import scalatags.Text.all._
import scalatags.Text.tags2
import scalatags.Text.TypedTag
import sqwl.cms.layout._

object Layout extends config {

  lazy val bootstrapCss = s"/${http.prefix}/assets/bootstrap/${versions.bootstrap}/css/bootstrap.min.css"
  lazy val bootstrapJs = s"/${http.prefix}/assets/bootstrap/${versions.bootstrap}/js/bootstrap.min.js"
  lazy val fontAwesomeCss = s"/${http.prefix}/assets/font-awesome/${versions.fontAwesome}/css/all.min.css"
  lazy val jquery = s"/${http.prefix}/assets/jquery/${versions.jquery}/jquery.min.js"

  def apply(content: iContent, st: ViewState): TypedTag[String] = {
    val siteCss = s"/${http.prefix}/public/${content.styleSheet._1}"
    html(
      head(
        tags2.style("""
          |.nav, .pagination, .carousel, .panel-title a, .panel a { cursor: pointer; }""".stripMargin),
        meta(charset:="utf-8"),
        meta(name:="viewport", all.content:="width=device-width, initial-scale=1"),
        link(rel:="stylesheet", href:=bootstrapCss),
        link(rel:="stylesheet", href:=fontAwesomeCss),
        link(rel:="stylesheet", href:=siteCss),
        tags2.title(st match {
          case ViewArticle(v) => s"${v.title} | ${content.appTitleShort}"
          case ViewCategory(v) => v.name
          case ViewTag(v) => v.name
          case Dashboard => content.appTitle
          case News => "Novinky"
        })
      ),
      body(paddingTop:=120,
        Navbar(content, st),
        div(role:="main", cls:="container",
          Categories(content, st),
          ArticlesInCategory(content, st),
          PrimaryView(content, st)
        ),
        footer(id:="footer", p(raw("&nbsp;"))),
        script(src:=jquery),
        script(src:=bootstrapJs)
      )
    )
  }

}