scala-news-reader

rss/atom news reader in scala

git clone https://9o.is/git/scala-news-reader.git

LiftExtras.scala

(2939B)


      1 package com.joereader.snippet
      2 
      3 import net.liftweb._
      4 import util._, Helpers._
      5 import http._, js._
      6 
      7 import com.joereader.model._
      8 import com.joereader.config._, S3Config._
      9 import com.joereader.lib._, ImageUpload.ImageType._
     10 
     11 import net.liftmodules.extras._, snippet._
     12 import scala.xml._
     13 
     14 object Menus extends BsMenu
     15 
     16 object Notices extends BsAlerts
     17 
     18 /*
     19  * Base all LiftScreens off this. Currently configured to use bootstrap.
     20  */
     21 abstract class BaseScreen extends BootstrapScreen {
     22   override def defaultToAjax_? = true
     23 }
     24 
     25 object ProductionOnly {
     26   def render(in: NodeSeq): NodeSeq =
     27     if (Props.productionMode) in
     28     else NodeSeq.Empty
     29 }
     30 
     31 object SnipHelpers {
     32 
     33   def head = {
     34     val desc = "RSS reader that allows you to discover and follow blog writers."
     35     val keywords = List("rss", "reader", "blogs", "news")
     36     val copyright = "Copyright Read Means 2013. All Rights Reserved."
     37 
     38     "@description [content]" #> desc &
     39       "@keywords [content]" #> keywords.mkString(",") &
     40       "@Copyright [content]" #> copyright
     41   }
     42 
     43   def comingSoon: NodeSeq =
     44     if (TestUser.isLoggedIn) NodeSeq.Empty
     45     else {
     46       <div style="margin: 100px 0" class="text-center">
     47         <h3>Have another blog?</h3>
     48         <a data-lift="UserBlogsSnip.addBlog" class="btn btn-primary" style="margin-bottom: 50px">Add Blog</a>
     49         { Templates("templates-hidden" :: "parts" :: "social" :: Nil).openOr(NodeSeq.Empty) }
     50       </div>
     51     }
     52 
     53   val imgProfileId = "img-profile"
     54   val imgBgId = "img-bg"
     55 
     56   def imageUrl(b: Blog) =
     57     if (b.img.get.nonEmpty) s3.fileUrl(b.img.is)
     58     else s3.fileUrl("mr_noblog_color")
     59 
     60   def insertFileUpload(id: ImageType, path: String): NodeSeq = {
     61     <input id={ id.toString + "-fileupload" } type="file" name="files2[]" data-url={
     62       path
     63     } accept={ ImageUpload.acceptedImages.mkString(",") }/>
     64     <div id={ id.toString + "-progress" } style="width:20em; border: 1pt solid silver; display: none; margin: 10px 0">
     65       <div id={ id.toString + "-progress-bar" } style="background: green; height: 1em; width:0%"></div>
     66     </div>
     67   }
     68 
     69   def setNoticeContainer() =
     70     "#notices-container [id]" #>
     71       (if (SignUp.hideSignup) "notices-container-top" else "notices-container")
     72 
     73   class JQuery(id: String, func: String, params: String*) extends JsCmd {
     74     val script = "$('#%s').%s('%s')".format(id, func, params.mkString("','"))
     75 
     76     override def toJsCmd = JE.JsRaw(script).cmd.toJsCmd
     77   }
     78 
     79   case class Hide(id: String)
     80     extends JQuery(id, "addClass", "hide")
     81 
     82   case class Show(id: String)
     83     extends JQuery(id, "removeClass", "hide")
     84 
     85   case class Prepend(id: String, node: Elem)
     86     extends JQuery(id, "prepend", node.toString())
     87 
     88   case class Remove(id: String)
     89     extends JQuery(id, "remove", "")
     90 
     91   case class UpdateImage(id: String, img: String)
     92     extends JQuery(id, "attr", "src", img)
     93 
     94   case class UpdateCSS(id: String, key: String, value: String)
     95     extends JQuery(id, "css", key, value)
     96 
     97 }