All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.liftmodules.extras.snippet.BsMenu.scala Maven / Gradle / Ivy

The newest version!
package net.liftmodules.extras
package snippet

import scala.xml._

import net.liftweb._
import common._
import http.{LiftRules, Req, S}
import sitemap.{Loc, SiteMap}
import util._
import util.Helpers._

object BsMenu extends BsMenu

trait BsMenu extends SnippetHelper {

  /**
    * Produces a menu UL from a group, for use with Bootstrap.
    */
  def group = {
    val menus: NodeSeq =
      for {
        group <- S.attr("group") ?~ "Group not specified"
        sitemap <- LiftRules.siteMap ?~ "Sitemap is empty"
        request <- S.request ?~ "Request is empty"
        curLoc <- request.location ?~ "Current location is empty"
      } yield ({
        val currentClass = S.attr("current_class").openOr("active")
        sitemap.locForGroup(group) flatMap { loc =>
          val nonHiddenKids = loc.menu.kids.filterNot(_.loc.hidden)
          val styles =
            if (curLoc.name == loc.name || loc.menu.kids.exists(_.loc.name == curLoc.name)) currentClass
            else ""

          if (nonHiddenKids.length == 0) {
            
  • {SiteMap.buildLink(loc.name)}
  • } else { val dropdown: NodeSeq = nonHiddenKids.map { kid =>
  • {SiteMap.buildLink(kid.loc.name)}
  • }
  • {loc.linkText.openOr(Text("Empty Name"))}
  • } } }): NodeSeq "* *" #> menus } }




    © 2015 - 2025 Weber Informatics LLC | Privacy Policy