base/src/sqwl/cms/layout/Navbar.scala
author Tomas Zeman <tzeman@volny.cz>
Thu, 06 Dec 2018 15:19:41 +0100
changeset 12 e7512f9dc903
parent 8 8e0809dad9f7
child 31 5c4364d6e726
permissions -rw-r--r--
Layout: categories, articles, primary view
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     1
package sqwl.cms.layout
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     2
6
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
     3
import scalatags.Text.TypedTag
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     4
import scalatags.Text.all._
12
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
     5
import sqwl.cms._
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     6
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     7
object Navbar extends config {
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     8
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     9
  def apply(cnt: iContent, st: ViewState): TypedTag[String] = {
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    10
6
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    11
    /*
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    12
    val navMenu = ul(cls:="nav navbar-nav navbar-right",
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    13
      li(a(href:="#about", "O aplikaci"))
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    14
    )
6
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    15
    */
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    16
12
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    17
    def activeCls(c: iCategory): String = {
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    18
      st match {
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    19
        case ViewCategory(v) if v == c => "active"
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    20
        case ViewArticle(v) if v.category contains(c) => "active"
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    21
        case _ => ""
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    22
      }
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    23
    }
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    24
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    25
    val navSections = ul(cls:="nav navbar-nav navbar-section", width:="100%",
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    26
      cnt.categories map(c =>
12
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    27
        li(cls:=s"text-center ${activeCls(c)}",
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    28
          a(href:=s"/${http.prefix}/${c.pathSegment}", c.name))
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
      )
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
    )
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    31
6
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    32
    header(cls:="navbar navbar-default navbar-fixed-top",
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
      div(cls:="navbar-inner",
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
        div(cls:="container",
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
          div(cls:="navbar-header",
6
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    36
            button(`type`:="button", cls:="navbar-toggle collapsed",
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    37
              attr("data-toggle"):="collapse",
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    38
              attr("data-target"):="#navbar1",
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    39
              span(cls:="sr-only", "Navigation"),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    40
              span(cls:="icon-bar"),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    41
              span(cls:="icon-bar"),
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    42
              span(cls:="icon-bar")
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    43
            ),
12
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    44
            a(href:=s"/${http.prefix}", cls:="navbar-brand",
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    45
              paddingTop:=4, paddingBottom:=4,
7
50a354e5bda4 Content parametrizing
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    46
              img(src:=s"/${http.prefix}/public/${cnt.icon._1}",
50a354e5bda4 Content parametrizing
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    47
                alt:=cnt.appTitleShort, width:=40, height:=40)),
12
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    48
            a(href:=s"/${http.prefix}", cls:="navbar-brand visible-xs",
7
50a354e5bda4 Content parametrizing
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    49
              span(cnt.appTitleShort)),
12
e7512f9dc903 Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents: 8
diff changeset
    50
            a(href:=s"/${http.prefix}", cls:="navbar-brand hidden-xs",
7
50a354e5bda4 Content parametrizing
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    51
              span(cnt.appTitle))
6
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    52
          )
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    53
          //tag("nav")(cls:="hidden-xs", navMenu)
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    54
        )
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    55
      ),
6
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    56
      div(cls:="collapse navbar-collapse", id:="navbar1",
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    57
        div(cls:="container", navSections))
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    58
    )
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    59
  }
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    60
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    61
}
6
ba89bccede7e Navbar: collapsible
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    62