# HG changeset patch # User Tomas Zeman # Date 1334220762 -7200 # Node ID c24112f0f08445844d03c69c614424180f8c7695 # Parent 366e1f8d93bb2f97dd48d45aef7057f6b866db31 Secondary navigation diff -r 366e1f8d93bb -r c24112f0f084 src/main/scala/bootstrap/liftweb/Boot.scala --- a/src/main/scala/bootstrap/liftweb/Boot.scala Thu Apr 12 10:52:42 2012 +0200 +++ b/src/main/scala/bootstrap/liftweb/Boot.scala Thu Apr 12 10:52:42 2012 +0200 @@ -16,6 +16,7 @@ package bootstrap.liftweb import fis.base.model._ +import fis.base.ui._ import fis.crm.ui.ContactSnippet import fis.db.SquerylTxMgr import net.liftweb.common._ @@ -36,6 +37,8 @@ import Loc._ + SecNav.init() + val menus = List(Menu("/", "FIS Main page") / "index" >> Hidden, Menu.i("Home") / "" , ContactSnippet.menu) diff -r 366e1f8d93bb -r c24112f0f084 src/main/scala/fis/base/ui/SecNav.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/scala/fis/base/ui/SecNav.scala Thu Apr 12 10:52:42 2012 +0200 @@ -0,0 +1,87 @@ +/* + * Copyright 2012 Tomas Zeman + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package fis.base.ui + +import net.liftweb.common._ +import net.liftweb.http._ +import net.liftweb.sitemap._ +import net.liftweb.sitemap.Loc._ +import net.liftweb.sitemap.Menu._ +import net.liftweb.util._ +import net.liftweb.util.Helpers._ +import net.tz.lift.snippet._ +import scala.xml.NodeSeq + +/** + * Secondary navigation snippet. + */ +object SecNav extends SecNav(Nil) { + + def init() { + LiftRules.snippets.append { + case List("secnav") => ClearNodes + } + } + + val TAG = "secnav" + + def apply[T](m: Menuable): SecNav = this + m + def apply[T](p: ParamMenuable[T]): SecNav = this + p +} + +class SecNav(val navs: Seq[SecNavItem]) { + + def + (i: SecNavItem): SecNav = new SecNav(navs :+ i) + + def + (m: Menuable): SecNav = this + (new SecNavMenu(m)) + + def +[T] (p: ParamMenuable[T]): SecNav = this + (new SecNavLoc(p)) + + def toCssTr: CssTr = ".items" #> (navs flatMap { _.toHtml }) + + def build = Snippet(SecNav.TAG, toCssTr) +} + +sealed abstract class SecNavItem { + + def toHtml: NodeSeq + + protected def item(href: String, cnt: NodeSeq) = +
  • {cnt}
  • +} + +class SecNavMenu(m: Menuable) extends SecNavItem { + + def toHtml = (for { + l <- SiteMap.findAndTestLoc(m.name) + } yield { + item(l.calcDefaultHref, m.linkText.text()) + }) toSeq +} + +class SecNavLoc[T](p: ParamMenuable[T]) extends SecNavItem { + + def toHtml = (for { + cur <- S.location + value <- cur.currentValue + l <- SiteMap.findAndTestLoc(p.name) + p <- tryo { (l.asInstanceOf[Loc[T]], value.asInstanceOf[T]) } + } yield { + item(p._1.calcHref(p._2), p._1.linkText(p._2)) + }) toSeq +} + +// vim: set ts=2 sw=2 et: diff -r 366e1f8d93bb -r c24112f0f084 src/main/webapp/css/base.css --- a/src/main/webapp/css/base.css Thu Apr 12 10:52:42 2012 +0200 +++ b/src/main/webapp/css/base.css Thu Apr 12 10:52:42 2012 +0200 @@ -56,6 +56,11 @@ font-weight: bold; } +#secnav li { + float: left; + padding: 0px 10px 10px 0; +} + /* fix for active sf-menu item in span tag */ .sf-menu span { padding: 0.75em 1em; diff -r 366e1f8d93bb -r c24112f0f084 src/main/webapp/templates-hidden/default.html --- a/src/main/webapp/templates-hidden/default.html Thu Apr 12 10:52:42 2012 +0200 +++ b/src/main/webapp/templates-hidden/default.html Thu Apr 12 10:52:42 2012 +0200 @@ -33,15 +33,13 @@ -
    -
      - -
    -
    -
    - alert-error - alert - alert-success + +
    + + alert-error + alert + alert-success +
    diff -r 366e1f8d93bb -r c24112f0f084 src/main/webapp/templates-hidden/secnav.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/templates-hidden/secnav.html Thu Apr 12 10:52:42 2012 +0200 @@ -0,0 +1,7 @@ + +
    + +
    +