base/src/sqwl/cms/Layout.scala
author Tomas Zeman <tzeman@volny.cz>
Tue, 04 Dec 2018 12:35:12 +0100
changeset 5 de7c56ce0654
parent 4 1a1347e8c5be
child 7 50a354e5bda4
permissions -rw-r--r--
Base layout, build info, UI libs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     1
package sqwl.cms
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     2
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
     3
import BuildInfo.versions
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
     4
import scalatags.Text.all
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     5
import scalatags.Text.all._
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     6
import scalatags.Text.tags2
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     7
import scalatags.Text.TypedTag
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
     8
import sqwl.cms.layout.Navbar
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     9
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    10
object Layout extends config {
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    11
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    12
  lazy val bootstrapCss = s"/${http.prefix}/assets/bootstrap/${versions.bootstrap}/css/bootstrap.min.css"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    13
  lazy val bootstrapJs = s"/${http.prefix}/assets/bootstrap/${versions.bootstrap}/js/bootstrap.min.js"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    14
  lazy val fontAwesomeCss = s"/${http.prefix}/assets/font-awesome/${versions.fontAwesome}/css/all.min.css"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    15
  lazy val siteCss = s"/${http.prefix}/public/css/site.css?${BuildInfo.hgId}"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    16
  lazy val jquery = s"/${http.prefix}/assets/jquery/${versions.jquery}/jquery.min.js"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    17
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    18
  def apply(content: iContent, st: ViewState): TypedTag[String] = {
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    19
    html(
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    20
      head(
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    21
        tags2.style("""
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    22
          |.nav, .pagination, .carousel, .panel-title a, .panel a { cursor: pointer; }""".stripMargin),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    23
        meta(charset:="utf-8"),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    24
        meta(name:="viewport", all.content:="width=device-width, initial-scale=1"),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    25
        link(rel:="stylesheet", href:=bootstrapCss),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    26
        link(rel:="stylesheet", href:=fontAwesomeCss),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    27
        link(rel:="stylesheet", href:=siteCss),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    28
        link(rel:="icon", href:="favicon.ico"),
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
        tags2.title(st match {
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
          case ViewArticle(v) => v.title
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    31
          case ViewCategory(v) => v.name
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    32
          case ViewTag(v) => v.name
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
          case Dashboard => "SQWL"
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
          case News => "Novinky"
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
        })
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    36
      ),
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    37
      body(paddingTop:=120,
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    38
        Navbar(content, st),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    39
        div(role:="main", cls:="container",
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    40
          st match {
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    41
            case ViewArticle(article) => div(
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    42
              a(href:=article.pathSegment, article.title),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    43
              raw(article.htmlContent)
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    44
            )
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    45
            case _ => ""
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    46
          }
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    47
        ),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    48
        footer(id:="footer", p(raw("&nbsp;"))),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    49
        script(src:=jquery),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    50
        script(src:=bootstrapJs)
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    51
      )
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    52
    )
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    53
  }
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    54
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    55
}