From bc6b91747d130b4947d9b90758bee14a5d3506bc Mon Sep 17 00:00:00 2001 From: lkuczera Date: Thu, 18 Aug 2011 22:51:42 +0200 Subject: [PATCH 1/4] post adding is done now by get instead of post --- .../scala/org/liftblog/snippet/Posting.scala | 163 +++++++++--------- src/main/webapp/posting.html | 2 +- 2 files changed, 80 insertions(+), 85 deletions(-) diff --git a/src/main/scala/org/liftblog/snippet/Posting.scala b/src/main/scala/org/liftblog/snippet/Posting.scala index ed99549..582c91f 100644 --- a/src/main/scala/org/liftblog/snippet/Posting.scala +++ b/src/main/scala/org/liftblog/snippet/Posting.scala @@ -6,111 +6,106 @@ import _root_.net.liftweb.util._ import _root_.net.liftweb.util.Helpers import net.liftweb.http._ import Helpers._ -import net.liftweb.mapper.{By, ByList} +import net.liftweb.mapper.{ By, ByList } import net.liftweb.textile.TextileParser import net.liftweb.common._ - class Posting extends Logger { - - /** - * Creates PostTag ManyToMany relationships for specified post and tags. - * @param post - post to associate - * @param tags - tags - */ - def assocTags(post: Post, tags: Seq[String]) = { - val tagsBuf = new ListBuffer[Tag]() - for(tagText <- tags) { - val tag: Tag = Tag.find(By(Tag.text, tagText)) match { - case Full(tag) => tag - case Empty => Tag.create.text(tagText) - case f: Any => info("error occured" + f); S.redirectTo("/error") - } - tag.save - PostTag.join(tag, post) - tagsBuf += tag - } - tagsBuf.toList - } - /** - * Add and/or remove tags. - * @param post - * @param tags - */ - def editTagsFor(post: Post, tags: List[String]) = { - val oldTags = PostTag.findAll(By(PostTag.post, post)).map(_.tag.obj).filter(_.isDefined).map(_.open_!) - val newTags = assocTags(post, tags -- oldTags.map(_.text.is)) - val toremove = oldTags filterNot (Tag.findAll(ByList(Tag.text, tags)) contains); - for(postTag <- PostTag.findAll(By(PostTag.post, post))) { - postTag.tag.obj match { - case Full(tag) if(toremove.contains(tag))=> postTag.delete_! - case _ => - } - } - } - - - /** - * Creates new post. - * @param in - * @return - */ - def add(in: NodeSeq): NodeSeq = { - var postValues = Map[String,String]() + + /** + * Creates PostTag ManyToMany relationships for specified post and tags. + * @param post - post to associate + * @param tags - tags + */ + def assocTags(post: Post, tags: Seq[String]) = { + val tagsBuf = new ListBuffer[Tag]() + for (tagText <- tags) { + val tag: Tag = Tag.find(By(Tag.text, tagText)) match { + case Full(tag) => tag + case Empty => Tag.create.text(tagText) + case f: Any => info("error occured"+f); S.redirectTo("/error") + } + tag.save + PostTag.join(tag, post) + tagsBuf += tag + } + tagsBuf.toList + } + /** + * Add and/or remove tags. + * @param post + * @param tags + */ + def editTagsFor(post: Post, tags: List[String]) = { + val oldTags = PostTag.findAll(By(PostTag.post, post)).map(_.tag.obj).filter(_.isDefined).map(_.open_!) + val newTags = assocTags(post, tags -- oldTags.map(_.text.is)) + val toremove = oldTags filterNot (Tag.findAll(ByList(Tag.text, tags)) contains); + for (postTag <- PostTag.findAll(By(PostTag.post, post))) { + postTag.tag.obj match { + case Full(tag) if (toremove.contains(tag)) => postTag.delete_! + case _ => + } + } + } + + /** + * Creates new post. + * @param in + * @return + */ + def add(in: NodeSeq): NodeSeq = { + var postValues = Map[String, String]() def submit() = { - List("en").foreach(lang => { - val title = postValues(lang+"title").trim - if(title=="") S.error("Title musn't be empty") - else { - val html = postValues(lang+"text") - val post = Post.create.date(new java.util.Date).text(html).title(title) - post.save - assocTags(post, postValues(lang+"tags").split(" ")) - }} - ) - if(S.errors.isEmpty) S.redirectTo("/index") - } + List("en").foreach(lang => { + val title = postValues(lang+"title").trim + if (title == "") S.error("Title musn't be empty") + else { + val html = postValues(lang+"text") + val post = Post.create.date(new java.util.Date).text(html).title(title) + post.save + assocTags(post, postValues(lang+"tags").split(" ")) + } + }) + if (S.errors.isEmpty) S.redirectTo("/index") + } + + ((".post" #> List("en").map(lang => + ".lang" #> lang & + ".title" #> SHtml.text("", parm => postValues += ((lang+"title", parm)), ("size", "55")) & + ".tags" #> SHtml.text("", parm => postValues += ((lang+"tags", parm))) & + ".text" #> SHtml.textarea("", parm => postValues += ((lang+"text", parm)), ("id", "markitup")))) & ":submit" #> SHtml.submit("Post", submit))(in) + } - ((".post" #> List("en").map( lang => - ".lang" #> lang & - ".title" #> SHtml.text("", parm => postValues += ((lang+"title",parm)), ("size","55")) & - ".tags" #> SHtml.text("", parm => postValues += ((lang+"tags",parm))) & - ".text" #> SHtml.textarea("", parm => postValues += ((lang+"text",parm)), ("id", "markitup")) - )) & ":submit" #> SHtml.submit("Post", submit))(in) - } - - def edit(in: NodeSeq): NodeSeq = { + def edit(in: NodeSeq): NodeSeq = { val post = Post.find(Index.postid) post match { case Full(p) => - case Empty => S.error("Post to edit not found"); S.redirectTo("/index") - case _ => S.error("Error occured"); S.redirectTo("/index") + case Empty => S.error("Post to edit not found"); S.redirectTo("/index") + case _ => S.error("Error occured"); S.redirectTo("/index") } val p = post.openTheBox var tags = PostTag.findAll(By( - PostTag.post, p) - ).map(_.tag.obj).filter( - _.isDefined - ).map(_.open_!.text.is).mkString(" ") + PostTag.post, p)).map(_.tag.obj).filter( + _.isDefined).map(_.open_!.text.is).mkString(" ") - def submit() = { + def submit() = { - if(p.title.isEmpty) S.error("Title musn't be empty") - else { + if (p.title.isEmpty) S.error("Title musn't be empty") + else { p.save editTagsFor(p, tags.split(" ").toList) - S.redirectTo("/index") - } - } + S.redirectTo("/index") + } + } - (".title" #> SHtml.text(p.title, p.title.set(_), ("size","55")) & - ".tags" #> SHtml.text(tags, parm => tags=parm) & - ".text" #> (SHtml.textarea(p.text, p.text.set(_), ("id", "markitup")) ++ SHtml.hidden(() => submit())))(in) + (".title" #> SHtml.text(p.title, p.title.set(_), ("size", "55")) & + ".tags" #> SHtml.text(tags, parm => tags = parm) & + ".text" #> (SHtml.textarea(p.text, p.text.set(_), ("id", "markitup")) ++ SHtml.hidden(() => submit())))(in) - } + } } diff --git a/src/main/webapp/posting.html b/src/main/webapp/posting.html index d514885..ea81867 100644 --- a/src/main/webapp/posting.html +++ b/src/main/webapp/posting.html @@ -9,7 +9,7 @@ replaced with embedded content -
+

Create Post

From 29b0bccf6ec05fe381253b13105151d6447b3f73 Mon Sep 17 00:00:00 2001 From: lkuczera Date: Fri, 19 Aug 2011 08:36:20 +0200 Subject: [PATCH 2/4] post editing uses POST instead of GET --- src/main/webapp/edit.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/edit.html b/src/main/webapp/edit.html index 9f26ab1..d09822c 100644 --- a/src/main/webapp/edit.html +++ b/src/main/webapp/edit.html @@ -9,7 +9,7 @@ replaced with embedded content - +

Edit Post

Title:


From 01bb23c41ac08c7ebb187b4342c79158cc607e46 Mon Sep 17 00:00:00 2001 From: lkuczera Date: Tue, 6 Sep 2011 11:42:49 +0200 Subject: [PATCH 3/4] eclipsify removed, indexes in LinkedList prevented some data creations --- .gitignore | 3 ++- project/build.properties | 6 +++--- project/build/LiftProject.scala | 6 ++---- project/plugins/LiftProjectPlugins.scala | 6 ++++++ project/plugins/project/build.properties | 3 +++ src/main/scala/org/liftblog/model/LinkList.scala | 2 +- src/main/scala/org/liftblog/model/LinkListItem.scala | 2 +- 7 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 project/plugins/LiftProjectPlugins.scala create mode 100644 project/plugins/project/build.properties diff --git a/.gitignore b/.gitignore index b432e54..ec3d683 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,9 @@ -/target +target lift_proto* lib_managed project/build/target project/boot/ +project/plugins/target .scala_dependencies diff --git a/project/build.properties b/project/build.properties index cc64faa..19e0098 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1,9 +1,9 @@ #Project properties #Fri Apr 23 11:24:20 PDT 2010 -project.organization=Lift -project.name=Lift SBT Template +project.organization=lift +project.name=lift-blog sbt.version=0.7.5 -project.version=0.1 +project.version=0.2 def.scala.version=2.7.7 build.scala.versions=2.9.0 project.initialize=false diff --git a/project/build/LiftProject.scala b/project/build/LiftProject.scala index 06e1f88..61669c7 100644 --- a/project/build/LiftProject.scala +++ b/project/build/LiftProject.scala @@ -1,9 +1,7 @@ import sbt._ -import de.element34.sbteclipsify._ - -class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) with Eclipsify { - val liftVersion = "2.4-M1" +class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) { + val liftVersion = "2.4-M2" // uncomment the following if you want to use the snapshot repo val scalatoolsSnapshot = ScalaToolsSnapshots diff --git a/project/plugins/LiftProjectPlugins.scala b/project/plugins/LiftProjectPlugins.scala new file mode 100644 index 0000000..fc61532 --- /dev/null +++ b/project/plugins/LiftProjectPlugins.scala @@ -0,0 +1,6 @@ +import sbt._ + + class MySbtProjectPlugins(info: ProjectInfo) extends PluginDefinition(info) { + lazy val eclipse = "de.element34" % "sbt-eclipsify" % "0.7.0" + } + diff --git a/project/plugins/project/build.properties b/project/plugins/project/build.properties new file mode 100644 index 0000000..5f17cd5 --- /dev/null +++ b/project/plugins/project/build.properties @@ -0,0 +1,3 @@ +#Project properties +#Sat Jun 04 22:50:36 CEST 2011 +plugin.uptodate=true diff --git a/src/main/scala/org/liftblog/model/LinkList.scala b/src/main/scala/org/liftblog/model/LinkList.scala index 7e138ab..8c9e0f3 100644 --- a/src/main/scala/org/liftblog/model/LinkList.scala +++ b/src/main/scala/org/liftblog/model/LinkList.scala @@ -12,7 +12,7 @@ class LinkList extends LongKeyedMapper[LinkList] with IdPK { object description extends MappedText(this) object position extends MappedInt(this){ - override def dbIndexed_? = true + //override def dbIndexed_? = true } object userId extends MappedLongForeignKey(this,User) diff --git a/src/main/scala/org/liftblog/model/LinkListItem.scala b/src/main/scala/org/liftblog/model/LinkListItem.scala index 4b532c5..58e6539 100644 --- a/src/main/scala/org/liftblog/model/LinkListItem.scala +++ b/src/main/scala/org/liftblog/model/LinkListItem.scala @@ -18,7 +18,7 @@ class LinkListItem extends LongKeyedMapper[LinkListItem] with IdPK { } object position extends MappedInt(this){ - override def dbIndexed_? = true + //override def dbIndexed_? = true } def moveUp() = move(-1) From 4a8ac9d8a6237cb2d93cce1b3376bcdce8210150 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kuczera?= Date: Tue, 20 Mar 2012 20:57:11 +0100 Subject: [PATCH 4/4] readme update --- README.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 040da0b..d8721aa 100644 --- a/README.txt +++ b/README.txt @@ -29,4 +29,5 @@ p: demo11 Have fun! -Lift-blog needs new design. If you would like to contribute one please contact team :) +Lift-blog needs new design. If you would like to contribute one please contact me. +