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 }