pyc-website

main website for pyc inc.

git clone https://9o.is/git/pyc-website.git

UtilSnips.scala

(3269B)


      1 package inc.pyc
      2 package snippet
      3 
      4 import model.field._
      5 import xml._
      6 import net.liftweb._
      7 import common.Box
      8 import http._
      9 import util._
     10 import js._
     11 import JE._
     12 import JsCmds._
     13 import Helpers._
     14 import json.JsonAST._
     15 import net.liftmodules._
     16 import extras._, snippet._
     17 import dispatch._, Defaults._
     18 import net.liftweb.builtin.snippet.Menu
     19 
     20 
     21 object Assets extends AssetLoader
     22 
     23 trait AngularSnippet {
     24   implicit def boxedJValueToJValue(in: Box[JValue]): JValue = in openOr JNull
     25   implicit def listJValueToJValue(in: List[JValue]): JValue = in.headOption.getOrElse(JNull)
     26   implicit def listFutureJValueToJValue(in: List[Future[JValue]]): JValue = in.headOption.getOrElse(Future(JNull))()
     27   
     28   def roundTrips: List[RoundTripInfo]
     29   
     30   def render(in: NodeSeq): NodeSeq = {
     31     for (sess <- S.session) yield {
     32       val roundtrips = sess.buildRoundtrip(roundTrips)
     33       val className: String = this.getClass.getName.split("""\.""").last
     34       val script = SetExp(JsVar("window", className), roundtrips)
     35       S.appendGlobalJs(script)
     36     }
     37     in
     38   }
     39 }
     40 
     41 object Menus extends BsMenu {
     42   import net.liftweb.sitemap.SiteMap
     43   
     44    override def group = {
     45     val menus: NodeSeq =
     46       for {
     47         group <- S.attr("group") ?~ "Group not specified"
     48         sitemap <- LiftRules.siteMap ?~ "Sitemap is empty"
     49         request <- S.request ?~ "Request is empty"
     50         curLoc <- request.location ?~ "Current location is empty"
     51       } yield ({
     52         val currentClass = S.attr("current_class").openOr("active")
     53         sitemap.locForGroup(group) flatMap { loc =>
     54           val nonHiddenKids = loc.menu.kids.filterNot(_.loc.hidden)
     55           val styles =
     56             if (curLoc.name == loc.name || loc.menu.kids.exists(_.loc.name == curLoc.name)) currentClass
     57             else ""
     58 
     59           if (nonHiddenKids.length == 0) {
     60             <li class={styles}>{SiteMap.buildLink(loc.name)}</li>
     61           }
     62           else {
     63             val dropdown: NodeSeq = nonHiddenKids.map { kid =>
     64               <li>{SiteMap.buildLink(kid.loc.name)}</li>
     65             }
     66 
     67             <li class={styles + " dropdown"}>
     68               <a href="#" class="dropdown-toggle" data-toggle="dropdown">{loc.linkText.openOr(Text("Empty Name"))}</a>
     69               <ul class="dropdown-menu">{ dropdown }</ul>
     70             </li>
     71           }
     72         }
     73       }): NodeSeq
     74 
     75     "* -*" #> menus
     76   }
     77 }
     78 
     79 object ProductionOnly {
     80   def render(in: NodeSeq): NodeSeq =
     81     if (Props.productionMode) in
     82     else NodeSeq.Empty
     83 }
     84 
     85 object Selector extends USStatesSelector
     86 
     87 object PYC {
     88   def logo: CssSel = "* [src]" #> "https://s3.amazonaws.com/assets-pyc/logo-noslogan.png"
     89 }
     90 
     91 object Social {
     92   def facebookLink: CssSel = "* [href]" #> "https://www.facebook.com/pycinc"
     93   def twitterLink: CssSel = "* [href]" #> "https://twitter.com/pyc_inc"
     94   def gplusLink: CssSel = "* [href]" #> "https://plus.google.com/113129814840501272637"
     95   def instagramLink: CssSel = "* [href]" #> "https://instagram.com/pyc_inc"
     96 }
     97 
     98 object Placeholder extends SnippetHelper {
     99   
    100   def render: CssSel = 
    101     for (name <- S.attr("name")) yield {
    102       "* [placeholder]" #> {S ? name}
    103     }
    104 }
    105 
    106 object LocaleTitle extends SnippetHelper {
    107   def render = "* *" #> ( for {
    108     loc <- S.request.map(_.location)
    109     name <- loc.map(S ? _.name)
    110   } yield name)
    111 }