pyc-website
main website for pyc inc.
git clone https://9o.is/git/pyc-website.git
commit 77f1009a3b6f2d95589126ab9f29128b0c840abb parent a6e0e6ee1a382fe6653a8dc23b803940d60d41c4 Author: Jul <jul@9o.is> Date: Sat, 5 Apr 2014 04:39:40 -0400 changed NgUIRouter design a bit. Now Blog link works Diffstat:
| M | src/main/scala/bootstrap/liftweb/Boot.scala | | | 4 | +++- |
| M | src/main/scala/com/pyd/config/Site.scala | | | 21 | +++++---------------- |
| M | src/main/scala/com/pyd/lib/NgUIRouter.scala | | | 30 | ++++++++++++++++++++++++++---- |
3 files changed, 34 insertions(+), 21 deletions(-)
diff --git a/src/main/scala/bootstrap/liftweb/Boot.scala b/src/main/scala/bootstrap/liftweb/Boot.scala @@ -11,6 +11,7 @@ import util.Helpers._ import com.pyd.config._ import com.pyd.model.{SystemUser, User} +import com.pyd.lib.NgUIRouterFactory import net.liftmodules.extras.{Gravatar, LiftExtras} import net.liftmodules.mongoauth.MongoAuth @@ -54,7 +55,8 @@ class Boot extends Loggable { // Build SiteMap LiftRules.setSiteMap(Site.siteMap) - Site.init() + // sets the default page for index + NgUIRouterFactory.defaultRoute.default.set(Full(Site.applyATM.menu)) // Error handler ErrorHandler.init diff --git a/src/main/scala/com/pyd/config/Site.scala b/src/main/scala/com/pyd/config/Site.scala @@ -1,7 +1,7 @@ package com.pyd package config -import lib.NgUIRouterFactory +import lib.NgUIRouterFactory._ import model.User import net.liftweb._ @@ -30,11 +30,11 @@ object Site extends Locs { // locations (for top group) val home = MenuLoc(Menu.i("Home") / "index") - val applyATM = MenuLoc(Menu.i("Apply for Bitcoin ATM") / "apply-atm" >> TopBarGroup) - val locations = MenuLoc(Menu.i("Locations") / "locations" >> TopBarGroup >> SiteMapGroup) - val about = MenuLoc(Menu.i("About Us") / "about" >> TopBarGroup >> SiteMapGroup) + val applyATM = MenuLoc(Menu.i("Apply for Bitcoin ATM") / "apply-atm" >> TopBarGroup >> UiRouterGroup) + val locations = MenuLoc(Menu.i("Locations") / "locations" >> TopBarGroup >> SiteMapGroup >> UiRouterGroup) + val about = MenuLoc(Menu.i("About Us") / "about" >> TopBarGroup >> SiteMapGroup >> UiRouterGroup) val blog = MenuLoc(Menu.i("Blog") / "blog" >> TopBarGroup >> RedirectBlog >> SiteMapGroup) - val faqs = MenuLoc(Menu.i("FAQs") / "faqs" >> TopBarGroup >> SiteMapGroup) + val faqs = MenuLoc(Menu.i("FAQs") / "faqs" >> TopBarGroup >> SiteMapGroup >> UiRouterGroup) val loginToken = MenuLoc(buildLoginTokenMenu) val logout = MenuLoc(buildLogoutMenu) @@ -75,16 +75,5 @@ object Site extends Locs { */ def siteMap: SiteMap = SiteMap(menus:_*) - def init(): Unit = { - val routes = - applyATM.menu :: - locations.menu :: - about.menu :: - faqs.menu :: Nil - - NgUIRouterFactory.routes.default.set(routes) - NgUIRouterFactory.defaultRoute.default.set(Full(applyATM.menu)) - } - private def RedirectBlog = EarlyResponse(() => Full(RedirectResponse("http://blog."+S.hostName))) } diff --git a/src/main/scala/com/pyd/lib/NgUIRouter.scala b/src/main/scala/com/pyd/lib/NgUIRouter.scala @@ -6,6 +6,7 @@ import net.liftweb._ import sitemap._ import common._ import http._ +import sitemap.Loc.LocGroup import util._ import Helpers._ import net.liftmodules.extras.SnippetHelper @@ -23,7 +24,18 @@ object NgUIRouterFactory extends Factory { /** * List of all the routes. */ - val routes = new FactoryMaker[List[Menu]](Nil) {} + lazy val routes = new FactoryMaker[Seq[Menu]](findRoutes) {} + + /** + * Place this LocGroup on any Menu Items in Lift's SiteMap + * that will have a state in AngularJs UI-Router. + */ + val UiRouterGroup = LocGroup("uirouter") + + /* Finds menu items that are in UiRouterGroup group. */ + private def findRoutes = LiftRules.siteMap map { + _.locForGroup(UiRouterGroup.group.head).map(_.menu) + } openOr Nil } trait NgUIRouterSnip extends SnippetHelper { @@ -103,10 +115,20 @@ trait NgUIRouterMenu extends SnippetHelper { loc <- SiteMap.findAndTestLoc(name).toList link <- loc.createDefaultLink } yield { - val linkText = loc.linkText openOr Text(loc.name) - <a href={link} ui-sref={link.toString.replace('/', '.').tail}>{linkText}</a> + + def uiSref(el: Elem) = { + import NgUIRouterFactory._ + if(loc.inGroup_?(UiRouterGroup.group.head)) + el % ("ui-sref" -> link.toString.replace('/', '.').tail) + else + el + } + + val linkText = loc.linkText openOr Text(loc.name) + uiSref(<a href={link}>{linkText}</a>) + } - options.headOption getOrElse NodeSeq.Empty + options.headOption getOrElse NodeSeq.Empty } /**