base/src/sqwl/cms/Layout.scala
author Tomas Zeman <tomas@functionals.cz>
Tue, 24 Nov 2020 11:17:26 +0100
changeset 31 5c4364d6e726
parent 13 216da61215db
permissions -rw-r--r--
SQWL#2003 Studie -> Projekt
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
12
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
     8
import sqwl.cms.layout._
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 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
    16
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    17
  def apply(content: iContent, st: ViewState): TypedTag[String] = {
7
50a354e5bda4 Content parametrizing
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    18
    val siteCss = s"/${http.prefix}/public/${content.styleSheet._1}"
4
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),
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    28
        tags2.title(st match {
8
8e0809dad9f7 Fixed links to category, article
Tomas Zeman <tzeman@volny.cz>
parents: 7
diff changeset
    29
          case ViewArticle(v) => s"${v.title} | ${content.appTitleShort}"
13
216da61215db Implemented tags
Tomas Zeman <tzeman@volny.cz>
parents: 12
diff changeset
    30
          case ViewCategory(v) => s"${v.name} | ${content.appTitleShort}"
216da61215db Implemented tags
Tomas Zeman <tzeman@volny.cz>
parents: 12
diff changeset
    31
          case ViewTag(v) => s"${v.name} | ${content.appTitleShort}"
8
8e0809dad9f7 Fixed links to category, article
Tomas Zeman <tzeman@volny.cz>
parents: 7
diff changeset
    32
          case Dashboard => content.appTitle
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
          case News => "Novinky"
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
        })
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
      ),
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    36
      body(paddingTop:=120,
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    37
        Navbar(content, st),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    38
        div(role:="main", cls:="container",
12
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    39
          Categories(content, st),
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    40
          ArticlesInCategory(content, st),
13
216da61215db Implemented tags
Tomas Zeman <tzeman@volny.cz>
parents: 12
diff changeset
    41
          ArticlesByTag(content, st),
216da61215db Implemented tags
Tomas Zeman <tzeman@volny.cz>
parents: 12
diff changeset
    42
          PrimaryView(content, st),
216da61215db Implemented tags
Tomas Zeman <tzeman@volny.cz>
parents: 12
diff changeset
    43
          TagCloud(content, st)
5
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
        footer(id:="footer", p(raw("&nbsp;"))),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    46
        script(src:=jquery),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    47
        script(src:=bootstrapJs)
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    48
      )
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    49
    )
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    50
  }
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
}