You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by dp...@apache.org on 2009/05/29 00:57:39 UTC

svn commit: r779789 - in /incubator/esme/trunk/server/src/main: scala/bootstrap/liftweb/ scala/org/apache/esme/api/ scala/org/apache/esme/comet/ scala/org/apache/esme/model/ scala/org/apache/esme/snippet/ scala/org/apache/esme/view/ webapp/images/ weba...

Author: dpp
Date: Thu May 28 22:57:38 2009
New Revision: 779789

URL: http://svn.apache.org/viewvc?rev=779789&view=rev
Log:
Cleaned up style and moved a couple of more visuals to html view files

Added:
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/TagDisplay.scala
    incubator/esme/trunk/server/src/main/webapp/images/ajax-loader.gif   (with props)
    incubator/esme/trunk/server/src/main/webapp/info_view/
    incubator/esme/trunk/server/src/main/webapp/info_view/tag.html
    incubator/esme/trunk/server/src/main/webapp/info_view/user.html
Modified:
    incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PublicTimeline.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/TagCloud.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/Timeline.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Tracking.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/Style.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/view/UserView.scala
    incubator/esme/trunk/server/src/main/webapp/style/b-content.css
    incubator/esme/trunk/server/src/main/webapp/style/b-list.css
    incubator/esme/trunk/server/src/main/webapp/style/b-popup-c.css
    incubator/esme/trunk/server/src/main/webapp/style/b-popup.css
    incubator/esme/trunk/server/src/main/webapp/style/b-view-menu.css
    incubator/esme/trunk/server/src/main/webapp/style/l-page-content.css
    incubator/esme/trunk/server/src/main/webapp/style/l-page-message.css
    incubator/esme/trunk/server/src/main/webapp/style/l-top.css
    incubator/esme/trunk/server/src/main/webapp/style/layout.css
    incubator/esme/trunk/server/src/main/webapp/style/print.css
    incubator/esme/trunk/server/src/main/webapp/templates-hidden/default.html
    incubator/esme/trunk/server/src/main/webapp/templates-hidden/login.html
    incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html

Modified: incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala Thu May 28 22:57:38 2009
@@ -31,9 +31,10 @@
 import java.sql.{Connection, DriverManager}
 import org.apache.esme._
 import model._
-import actor._
+import org.apache.esme.actor._
 import lib._
 import view._
+import snippet._
 import api._
 import net.liftweb._
 import mapper._
@@ -81,9 +82,9 @@
 
     LiftRules.rewrite.prepend {
       case RewriteRequest(ParsePath("user" :: user :: Nil,"", _,_), _, _) =>
-        RewriteResponse( List("user_view", "index"), Map("uid" -> user))
+        RewriteResponse( List("info_view", "user"), Map("uid" -> user))
       case RewriteRequest(ParsePath("tag" :: tag :: Nil,"", _,_), _, _) =>
-        RewriteResponse( List("user_view", "tag"), Map("tag" -> tag))
+        RewriteResponse( List("info_view", "tag"), Map("tag" -> tag))
 
       case RewriteRequest(ParsePath("conversation" :: cid :: Nil, "", _, _),
                           _, _) =>
@@ -101,10 +102,11 @@
     // Build SiteMap
     val entries = Menu(Loc("Home", List("index"), "Home")) ::
     Menu(Loc("list_users", List("user_view", "all"), "List Users")) ::
-    Menu(Loc("user", List("user_view", "index"), "User Info", Hidden)) ::
+    Menu(Loc("user", List("info_view", "user"), "User Info", Hidden,
+      Loc.Snippet("user_info", TagDisplay.userInfo))) ::
     Menu(Loc("conv", List("user_view", "conversation"), "Conversation", Hidden)) ::
     Menu(Loc("about", List("static", "about"), "About", Hidden)) ::
-    Menu(Loc("tag", List("user_view", "tag"), "Tag", Hidden)) ::
+    Menu(Loc("tag", List("info_view", "tag"), "Tag", Hidden, Loc.Snippet("tag_display", TagDisplay.display))) ::
     Menu(Loc("search", List("user_view", "search"), "Search", Hidden)) ::
     User.sitemap :::
     Track.menuItems :::
@@ -142,6 +144,18 @@
 
     DB.addLogFunc(S.logQuery _)
     S.addAnalyzer(RequestAnalyzer.analyze _)
+
+    /*
+     * Show the spinny image when an Ajax call starts
+     */
+    LiftRules.ajaxStart =
+    Full(() => LiftRules.jsArtifacts.show("ajax-loader").cmd)
+
+    /*
+     * Make the spinny image go away when it ends
+     */
+    LiftRules.ajaxEnd =
+    Full(() => LiftRules.jsArtifacts.hide("ajax-loader").cmd)
   }
   private def makeUtf8(req: HttpServletRequest): Unit = {req.setCharacterEncoding("UTF-8")}
 }
@@ -149,13 +163,13 @@
 object Compass {
   // Set up Compass for search
   val conf = tryo(new CompassConfiguration()
-  .configure(Props.get("compass_config_file") openOr "/props/compass.cfg.xml")
-  .addClass((new Message).clazz))
+                  .configure(Props.get("compass_config_file") openOr "/props/compass.cfg.xml")
+                  .addClass((new Message).clazz))
 
   val compass = conf.map(_.buildCompass())
 
   for (c <- compass if !c.getSearchEngineIndexManager.indexExists)
-    tryo(c.getSearchEngineIndexManager().createIndex())
+  tryo(c.getSearchEngineIndexManager().createIndex())
 }
 
 

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala Thu May 28 22:57:38 2009
@@ -37,7 +37,7 @@
 
 import org.apache.esme._
 import model._
-import actor._
+import org.apache.esme.actor._
 
 import scala.xml.{NodeSeq, Text, Elem, XML}
 import scala.actors.Actor

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala Thu May 28 22:57:38 2009
@@ -40,7 +40,7 @@
 
 import org.apache.esme._
 import model._
-import actor._
+import org.apache.esme.actor._
 
 import scala.xml._
 import scala.actors.Actor

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PublicTimeline.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PublicTimeline.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PublicTimeline.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PublicTimeline.scala Thu May 28 22:57:38 2009
@@ -31,7 +31,7 @@
 import JE._
 
 import org.apache.esme._
-import actor._
+import org.apache.esme.actor._
 import model._
 import lib._
 

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/TagCloud.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/TagCloud.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/TagCloud.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/TagCloud.scala Thu May 28 22:57:38 2009
@@ -30,7 +30,7 @@
 import JE._
 
 import org.apache.esme._
-import actor._
+import org.apache.esme.actor._
 import model._
 import lib._
 
@@ -77,6 +77,7 @@
         }
       </p>
       <p/>
+      {/*
       <p id="word-para">Words</p>
       <p>
         {
@@ -86,6 +87,8 @@
                 name}</a> </xml:group>
         }
       </p>
+      */
+      }
     </div>
   }
 

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/Timeline.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/Timeline.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/Timeline.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/Timeline.scala Thu May 28 22:57:38 2009
@@ -30,7 +30,7 @@
 import JE._
 
 import org.apache.esme._
-import actor._
+import org.apache.esme.actor._
 import model._
 import lib._
 

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala Thu May 28 22:57:38 2009
@@ -28,7 +28,7 @@
 
 import org.apache.esme._
 import lib._
-import actor._
+import org.apache.esme.actor._
 import external._
 
 import java.util.Calendar

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala Thu May 28 22:57:38 2009
@@ -106,11 +106,11 @@
     val ret: List[Message] = this.findAll(params :_*)
 
 
-    val userIds = (ret.flatMap(_.author.can) :::
-                   ret.flatMap(_.sentToIds)).removeDuplicates
+    val userIds: List[Long] = (ret.flatMap(_.author.can) :::
+                               ret.flatMap(_.sentToIds)).removeDuplicates
 
-    val users = Map(User.findAll(InRaw(User.id, userIds.mkString(","),
-                                       IHaveValidatedThisSQL("dpp", "Aug 23, 2008"))).map(u => (u.id.is, u)) :_*)
+    val users:Map[Long, User] = Map(User.findAll(InRaw(User.id, userIds.mkString(","),
+                                                       IHaveValidatedThisSQL("dpp", "Aug 23, 2008"))).map(u => (u.id.is, u)) :_*)
 
     ret.foreach(_.preload(users))
     ret
@@ -122,42 +122,42 @@
     logger.info("Inside Message.search() with user list "+(users.mkString(", ")))
 
     (for(session <- compass.map(_.openSession()); user <- User.currentUser) yield {
-    var tx:CompassTransaction = null
-    var returnValue:List[Message] = Nil
+        var tx:CompassTransaction = null
+        var returnValue:List[Message] = Nil
 
-    try {
-      tx = session.beginTransaction()
-      val queryBuilder: CompassQueryBuilder = session.queryBuilder()
-
-      val followingQuery = queryBuilder.bool().addShould(queryBuilder.term("author", user.id))
-      for (user <- following) followingQuery.addShould(queryBuilder.term("author", user.id))
+        try {
+          tx = session.beginTransaction()
+          val queryBuilder: CompassQueryBuilder = session.queryBuilder()
+
+          val followingQuery = queryBuilder.bool().addShould(queryBuilder.term("author", user.id))
+          for (user <- following) followingQuery.addShould(queryBuilder.term("author", user.id))
+
+          val query: CompassQuery = queryBuilder.bool()
+          .addMust( queryBuilder.term("text", stemWord(searchTerm)) )
+          .addMust( followingQuery.toQuery )
+          .toQuery()
+
+          logger.info("query is "+query.toString)
+
+          val hitlist = query
+          .addSort("when", CompassQuery.SortPropertyType.STRING, CompassQuery.SortDirection.REVERSE)
+          .hits().detach(0, numHits)
+
+          logger.info("Detached hits: "+hitlist.totalLength)
+
+          val resourceList = hitlist.getResources.toList.asInstanceOf[List[Resource]]
+
+          returnValue = resourceList.flatMap(x => Message.find(x.getId))
+          tx.commit();
+        } catch  {
+          case ce: CompassException =>
+            if (tx != null) tx.rollback();
+        } finally {
+          session.close();
+        }
 
-      val query: CompassQuery = queryBuilder.bool()
-      .addMust( queryBuilder.term("text", stemWord(searchTerm)) )
-      .addMust( followingQuery.toQuery )
-      .toQuery()
-
-      logger.info("query is "+query.toString)
-
-      val hitlist = query
-      .addSort("when", CompassQuery.SortPropertyType.STRING, CompassQuery.SortDirection.REVERSE)
-      .hits().detach(0, numHits)
-
-      logger.info("Detached hits: "+hitlist.totalLength)
-
-      val resourceList = hitlist.getResources.toList.asInstanceOf[List[Resource]]
-
-      returnValue = resourceList.flatMap(x => Message.find(x.getId))
-      tx.commit();
-    } catch  {
-      case ce: CompassException =>
-        if (tx != null) tx.rollback();
-    } finally {
-      session.close();
-    }
-
-    returnValue
-  }) openOr Nil
+        returnValue
+      }) openOr Nil
   }
 }
 
@@ -169,13 +169,8 @@
   object id extends MappedLongIndex(this)
 
   object author extends MappedLongForeignKey(this, User) {
-    override def asJs = {
-      val user = User.find(this.is) match {
-        case Full(u) => u.asJs
-        case Empty => JE.JsNull
-      }
-      List(("author", user))
-    }
+    override def asJs = 
+      List("author" -> (obj.map(_.asJs) openOr JE.JsNull))
   }
 
   object viaGroup extends MappedLongForeignKey(this, Group)
@@ -198,7 +193,11 @@
   object conversation extends MappedLongForeignKey(this, Message)
 
   private[model] def preload(users: Map[Long, User]) {
-    author.can.foreach(id => this.author.primeObj(users.get(id)))
+    author.can.foreach{
+      id =>
+      this.author.primeObj(users.get(id))
+    }
+
     primeNameMap(users)
   }
 
@@ -277,13 +276,13 @@
 
   lazy val sentToIds: List[Long] =
   (for (body <- originalXml \ "body";
-       at <- body \ "at_name";
-       id <- at.attribute("id")) yield id.text.toLong).toList
+        at <- body \ "at_name";
+        id <- at.attribute("id")) yield id.text.toLong).toList
 
   lazy val urlIds: List[Long] =
   (for (body <- originalXml \ "body";
-       at <- body \ "url";
-       id <- at.attribute("id")) yield id.text.toLong).toList
+        at <- body \ "url";
+        id <- at.attribute("id")) yield id.text.toLong).toList
 
   private var _atNameMap: Map[Long, User] = Map.empty
   private var _setNameMap = false
@@ -368,41 +367,41 @@
   // Get the term (i.e. word) frequencies for the word cloud from the message text
   lazy val wordFrequencies: List[(String, Int)] = {
     try {
-    (for {session <- compass.map(_.openSession())} yield {
-    var tx:CompassTransaction = null
-    var returnValue:List[(String, Int)] = Nil
-
-    try {
-      tx = session.beginTransaction()
+      (for {session <- compass.map(_.openSession())} yield {
+          var tx:CompassTransaction = null
+          var returnValue:List[(String, Int)] = Nil
+
+          try {
+            tx = session.beginTransaction()
+
+            val msgResource = session.getResource(clazz, id) match {
+              case null =>  Message.logger.info("Saving entity to lucene in wordFrequencies")
+                session.save(this)
+                session.loadResource(clazz, id)  // throws exception if not found
 
-      val msgResource = session.getResource(clazz, id) match {
-        case null =>  Message.logger.info("Saving entity to lucene in wordFrequencies")
-          session.save(this)
-          session.loadResource(clazz, id)  // throws exception if not found
-
-        case x => x
-      }
+              case x => x
+            }
 
-      val textTermFreqs:TermFreqVector = LuceneHelper.getTermFreqVector(session, msgResource, "textWords")
-      Message.logger.info("textTermFreqs: "+textTermFreqs)
+            val textTermFreqs:TermFreqVector = LuceneHelper.getTermFreqVector(session, msgResource, "textWords")
+            Message.logger.info("textTermFreqs: "+textTermFreqs)
 
-      def termsAndFreq(in: TermFreqVector) = in match {
-        case null => Nil
-        case tf => (tf.getTerms zip tf.getTermFrequencies).toList
-      }
+            def termsAndFreq(in: TermFreqVector) = in match {
+              case null => Nil
+              case tf => (tf.getTerms zip tf.getTermFrequencies).toList
+            }
 
-      returnValue = termsAndFreq(textTermFreqs)
+            returnValue = termsAndFreq(textTermFreqs)
 
-      tx.commit();
-    } catch  {
-      case ce: CompassException =>
-        if (tx != null) tx.rollback();
-    } finally {
-      session.close();
-    }
+            tx.commit();
+          } catch  {
+            case ce: CompassException =>
+              if (tx != null) tx.rollback();
+          } finally {
+            session.close();
+          }
 
-    compoundStem(returnValue)
-    }) openOr Nil
+          compoundStem(returnValue)
+        }) openOr Nil
     } catch {
       case e => e.printStackTrace; Nil
     }

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Tracking.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Tracking.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Tracking.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Tracking.scala Thu May 28 22:57:38 2009
@@ -28,7 +28,7 @@
 import http._
 
 import org.apache.esme._
-import actor.Distributor
+import org.apache.esme.actor.Distributor
 
 import scala.xml.{Node, Text, Elem}
 

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/User.scala Thu May 28 22:57:38 2009
@@ -39,7 +39,7 @@
 import scala.xml.{NodeSeq, Text}
 
 import org.apache.esme._
-import actor._
+import org.apache.esme.actor._
 import view._
 import java.net.URL
 import java.util.logging._

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/Style.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/Style.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/Style.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/Style.scala Thu May 28 22:57:38 2009
@@ -31,7 +31,7 @@
 
 import org.apache.esme._
 import model._
-import actor._
+import org.apache.esme.actor._
 
 import scala.xml.{NodeSeq, Unparsed}
 

Added: incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/TagDisplay.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/TagDisplay.scala?rev=779789&view=auto
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/TagDisplay.scala (added)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/TagDisplay.scala Thu May 28 22:57:38 2009
@@ -0,0 +1,95 @@
+/**
+ * Copyright 2008-2009 WorldWide Conferencing, LLC
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.esme.snippet
+
+import org.apache.esme._
+import model._
+import org.apache.esme.actor._
+
+import net.liftweb._
+import http._
+import SHtml._
+import js._
+import JsCmds._
+import JE._
+import util._
+import Helpers._
+
+import mapper._
+
+import scala.xml.{NodeSeq, Text}
+import java.util.Date
+
+object TagDisplay {
+  def userInfo(in: NodeSeq): NodeSeq = {
+    val user: User = S.param("uid").flatMap(User.findFromWeb) openOr {
+      S.error("User not found")
+      S.redirectTo(S.referer openOr "/")
+    }
+   
+    def updateFollow: JsCmd = SetHtml("following", followOrNot)
+
+
+    def followOrNot: NodeSeq = {
+      User.currentUser match {
+        case Full(u) if u != user =>
+          if (u.following_?(user))
+          ajaxButton("Unfollow", () => {u.unfollow(user); updateFollow})
+          else ajaxButton("Follow", () => {u.follow(user); updateFollow})
+
+        case _ => NodeSeq.Empty
+      }
+    }
+
+    bind("user", in,
+         "nicename" -> user.niceName,
+         "followButton" -> followOrNot,
+         "timeline" -> bindTag(Mailbox.mostRecentMessagesFor(user.id, 50).map(_._1)) _,
+         "messages" -> bindTag(Message.findAll(By(Message.author, user), MaxRows(50), OrderBy(Message.id, Descending))) _,
+         AttrBindParam("userId", Text(user.id.toString),"userId")
+    )
+  
+  }
+
+  private def bindTag(tagList: List[Message])(in: NodeSeq): NodeSeq =
+    tagList.flatMap{m =>
+      val nickname = m.author.obj.map(_.nickname.is) openOr ""
+      bind("item", in,
+           "author" -> <a href={"/user/"+urlEncode(nickname)}>{nickname}</a>,
+           "body" -> m.digestedXHTML,
+           "date" -> Text(new Date(m.when.is).toString))
+    }
+
+  def display(in: NodeSeq): NodeSeq = {
+    val name = (S.param("tag") openOr "N/A").trim
+
+    val tagList: List[Message] =
+    for {
+      tag <- Tag.findAll(By(Tag.name, name))
+      item <- tag.findMessages()
+    } yield item
+
+    bind("tag", in, "name" -> name,
+         "each" -> bindTag(tagList) _)
+
+  }
+}

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala Thu May 28 22:57:38 2009
@@ -23,7 +23,7 @@
 
 import org.apache.esme._
 import model._
-import actor._
+import org.apache.esme.actor._
 
 import net.liftweb._
 import http._
@@ -37,16 +37,14 @@
 
 object JsonPoster extends SessionVar(S.buildJsonFunc{
     case JsonCmd("post", _, map: Map[String, Any], _) =>
+      println("Posting "+map)
       for (msgObj <- map.get("msg");
-           msg <- Box.isA(msgObj, classOf[String]).map(_.trim) if msg.length > 0;
+           msg <- Box.asA[String](msgObj).map(_.trim) if msg.length > 0;
            tagObj <- map.get("tags");
-           tags <- Box.isA(tagObj, classOf[String]);
+           tags <- Box.asA[String](tagObj);
            user <- User.currentUser) {
-        
-        val replyTo = map.get("reply-to").map(toLong) match {
-          case Some(x) if x > 0L => Full(x)
-          case _ => Empty
-        }
+
+        val replyTo: Box[Long] = map.get("reply-to").map(toLong)
 
         Distributor ! 
         Distributor.UserCreatedMessage(user.id, msg, 
@@ -100,8 +98,8 @@
   </ul>
 
   def loginForm(in: NodeSeq): NodeSeq =
-    if (User.loggedIn_?) NodeSeq.Empty
-    else User.loginForm
+  if (User.loggedIn_?) NodeSeq.Empty
+  else User.loginForm
   
 
   def userName(in: NodeSeq) = {

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/view/UserView.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/view/UserView.scala?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/view/UserView.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/view/UserView.scala Thu May 28 22:57:38 2009
@@ -57,7 +57,7 @@
 
   val dispatch = 
   Map("index" -> index _,
-      "tag" -> displayTag _,
+      // "tag" -> displayTag _,
       "search" -> search _,
       "all" -> allUsers _,
       "conversation" -> conversation _)
@@ -210,7 +210,8 @@
       </fieldset>
     </div>
   </lift:surround>
-  
+
+  /*
   def displayTag(): Box[NodeSeq] =
   (<lift:surround with="default" at="content">
       {
@@ -239,7 +240,7 @@
         ui openOr (<span>Tag Not Found</span>)
       }
    </lift:surround>)
-  
+  */
   def allUsers(): Box[NodeSeq] = 
   <lift:surround with="default" at="content">
     <fieldset>

Added: incubator/esme/trunk/server/src/main/webapp/images/ajax-loader.gif
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/images/ajax-loader.gif?rev=779789&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/esme/trunk/server/src/main/webapp/images/ajax-loader.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/esme/trunk/server/src/main/webapp/info_view/tag.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/info_view/tag.html?rev=779789&view=auto
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/info_view/tag.html (added)
+++ incubator/esme/trunk/server/src/main/webapp/info_view/tag.html Thu May 28 22:57:38 2009
@@ -0,0 +1,18 @@
+<lift:surround with="default" at="content">
+  <lift:tag_display>
+    <div>
+      <fieldset>
+        <legend><tag:name/></legend>
+        <table>
+          <tag:each>
+            <tr>
+              <td><item:author/></td>
+              <td><item:body/></td>
+              <td><item:date/></td>
+            </tr>
+          </tag:each>
+        </table>
+      </fieldset>
+    </div>
+  </lift:tag_display>
+</lift:surround>
\ No newline at end of file

Added: incubator/esme/trunk/server/src/main/webapp/info_view/user.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/info_view/user.html?rev=779789&view=auto
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/info_view/user.html (added)
+++ incubator/esme/trunk/server/src/main/webapp/info_view/user.html Thu May 28 22:57:38 2009
@@ -0,0 +1,54 @@
+<lift:surround with="default" at="content">
+  <lift:user_info>
+    <div>
+      <div id="tabs" class="b-view tab1">
+        <dl class="messages">
+          <dt class="caption"><user:nicename/>'s Timeline
+          <span id="following"><user:followButton/></span></dt>
+          <dd>
+            <table>
+              <user:timeline>
+                <tr>
+                  <td><item:author/></td>
+                  <td><item:body/></td>
+                  <td><item:date/></td>
+                </tr>
+              </user:timeline>
+            </table>
+
+          </dd>
+        </dl>
+
+        <dl class="">
+          <dt class="caption"><user:nicename/>'s Messages</dt>
+
+          <dd class="b-clouds">
+            <table>
+              <user:messages>
+                <tr>
+                  <td><item:author/></td>
+                  <td><item:body/></td>
+                  <td><item:date/></td>
+                </tr>
+              </user:messages>
+            </table>
+          </dd>
+        </dl>
+        <dl class="">
+          <dt class="caption">
+            Contacts
+          </dt>
+
+          <dd class="b-contacts" style="height: 240px; overflow: auto">
+            Following:
+            <lift:UserSnip.following user:userId=""/>
+          </dd>
+          <dd class="b-contacts" style="height: 240px; overflow: auto">
+            Followers:
+            <lift:UserSnip.followers user:userId=""/>
+          </dd>
+        </dl>
+      </div>
+    </div>
+  </lift:user_info>
+</lift:surround>
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/webapp/style/b-content.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/b-content.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/b-content.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/b-content.css Thu May 28 22:57:38 2009
@@ -1,38 +1,41 @@
 /* Content page (begin) */ /**/
-   .b-cloud {
-      margin-top: 30px;
-            background: #233e5e; /* url(../images/sh-r.png) repeat-y 100% 0; */
-	    text-align: center;
-   }
-
-   #tag-para, #word-para {
-   font-size: 1.7em;
-text-decoration: underline;
-   font-style: italic;
-   }
-
-    .b-content
-    {
-        margin-top: 30px;
-    }
-
-    .b-content .title
-    {
-        margin-left: 5px;
-
-        color: #fff;
-    }
-
-    .b-content .text
-    {
-        margin: 5px 5px 8px 5px;
-        padding: 10px;
-
-        background: #fff;
-    }
-
-    .b-content p
-    {
-        margin-top: 8px;
-    }
+.b-cloud {
+  margin-top: 30px;
+  /* background: #233e5e; /* url(../images/sh-r.png) repeat-y 100% 0; */
+  text-align: center;
+  background: #EEE;
+  padding: 3px;
+  border: 1px solid black;
+}
+
+#tag-para, #word-para {
+  font-size: 1.7em;
+  text-decoration: underline;
+  font-style: italic;
+}
+
+.b-content
+{
+  margin-top: 30px;
+}
+
+.b-content .title
+{
+  margin-left: 5px;
+
+  color: #fff;
+}
+
+.b-content .text
+{
+  margin: 5px 5px 8px 5px;
+  padding: 10px;
+
+  background: #fff;
+}
+
+.b-content p
+{
+  margin-top: 8px;
+}
 /* Content page (end) */ /**/
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/webapp/style/b-list.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/b-list.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/b-list.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/b-list.css Thu May 28 22:57:38 2009
@@ -1,105 +1,108 @@
 /* List messages (begin) */ /**/
-    .b-list
-    {
-        font-size: 90%;
-
-        border-bottom: 6px solid #fff;
-        border-left: 1px solid #fff;
-        border-right: 1px solid #fff;
-    }
-
-    .b-list tr
-    {
-        vertical-align: top;
-
-        background: #c9d8ea url(../images/bg-left.png) repeat-x;
-        border-bottom: 1px solid #fff;
-    }
-
-    /* Images (begin) */ /**/
-        .b-list .image
-        {
-            width: 60px;
-            padding: 5px 0 5px 6px;
-
-        }
-
-        .b-list .image .shadow
-        {
-            position: absolute;
-
-            width: 58px;
-            height: 58px;
-        }
-
-        .b-list .image .shadow i
-        {
-            position: absolute;
-            left: -3px;
-            top: -3px;
-
-            width: 58px;
-            height: 58px;
-
-            background: url(../images/bg-i.png) no-repeat;
-        }
-
-        .b-list .image img
-        {
-            position: relative;
-
-            width: 48px;
-            height: 48px;
-        }
-    /* Images (end) */ /**/
-
-    /* Messages (begin) */ /**/
-        .b-list .message
-        {
-            width: 307px;
-            padding: 5px;
-        }
-
-        .b-list .message .outer
-        {
-            min-height: 50px;
-        }
-
-        .b-list .message .inner
-        {
-            min-height: 33px;
-            padding-bottom: 0.4em;
-        }
-
-        .b-list .mail
-        {
-            display: block;
-
-            float: right;
-
-            margin-left: 5px;
-        }
-
-        .b-list .text
-        {
-            padding-bottom: 0.2em;
-            color: #233e5e;
-        }
-                .b-list .date
-        {
-            padding-bottom: 0.2em;
-            color: #233e5e;
-        }
-    /* Messages (end) */ /**/
-
-    .b-list .tag
-    {
-        font-weight: bold;
-
-        width: 143px;
-        padding: 5px;
-
-        color: #fff;
-        background: #233e5e url(../images/bg-right1.png) repeat-x;
-    }
+.b-list
+{
+  font-size: 90%;
+
+  border-bottom: 6px solid #999;
+  border-left: 1px solid #888;
+  border-right: 1px solid #888;
+  border-top: 1px solid #888;
+  padding: 2px;
+  background-color: #EEE;
+}
+
+.b-list tr
+{
+  vertical-align: top;
+
+  /*background: #c9d8ea url(../images/bg-left.png) repeat-x;*/
+  border-bottom: 1px solid #BBB;
+}
+
+/* Images (begin) */ /**/
+.b-list .image
+{
+  width: 60px;
+  padding: 5px 0 5px 6px;
+
+}
+
+.b-list .image .shadow
+{
+  position: absolute;
+
+  width: 58px;
+  height: 58px;
+}
+
+.b-list .image .shadow i
+{
+  position: absolute;
+  left: -3px;
+  top: -3px;
+
+  width: 58px;
+  height: 58px;
+
+  /* background: url(../images/bg-i.png) no-repeat; */
+}
+
+.b-list .image img
+{
+  position: relative;
+
+  width: 48px;
+  height: 48px;
+}
+/* Images (end) */ /**/
+
+/* Messages (begin) */ /**/
+.b-list .message
+{
+  width: 307px;
+  padding: 5px;
+}
+
+.b-list .message .outer
+{
+  min-height: 50px;
+}
+
+.b-list .message .inner
+{
+  min-height: 33px;
+  padding-bottom: 0.4em;
+}
+
+.b-list .mail
+{
+  display: block;
+
+  float: right;
+
+  margin-left: 5px;
+}
+
+.b-list .text
+{
+  padding-bottom: 0.2em;
+  /* color: #233e5e; */
+}
+.b-list .date
+{
+  padding-bottom: 0.2em;
+  /* color: #233e5e; */
+}
+/* Messages (end) */ /**/
+
+.b-list .tag
+{
+  font-weight: bold;
+
+  width: 143px;
+  padding: 5px;
+
+  color: #fff;
+  /* background: #233e5e url(../images/bg-right1.png) repeat-x; */
+}
 /* List messages (end) */ /**/
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/webapp/style/b-popup-c.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/b-popup-c.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/b-popup-c.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/b-popup-c.css Thu May 28 22:57:38 2009
@@ -1,70 +1,72 @@
 /* Popup message (begin) */ /**/
-    .b-popup-c .row
-    {
-        padding: 7px 8px 0 7px;
-    }
-
-    .b-popup-c label
-    {
-        font-size: 118%;
-        font-weight: bold;
-
-        margin-right: 0.5em;
-
-        vertical-align: middle;
-    }
-
-    .b-popup-c input,
-    .b-popup-c textarea
-    {
-        float: left;
-
-        width: 76%;
-        margin: 0.45em 0.45em 0 0;
-        background-color: #c9d8ea;
-    }
-
-    .b-popup-c select
-    {
-        vertical-align: middle;
-    }
-
-    .b-popup-c .note
-    {
-        font-size: 80%;
-
-        float: left;
-
-        width: 80%;
-
-        color: #959595;
-    }
-
-    .b-popup-c .note-r
-    {
-        width: 4.5em;
-        margin-top: 0.4em;
-    }
-
-    .b-popup-c .note .l
-    {
-        float: left;
-
-        margin-top: 0.18em;
-    }
-
-    .b-popup-c .note .r
-    {
-        float: right;
-
-        margin: 0.18em 0.7em 0 0;
-    }
-
-    .b-popup-c .btn
-    {
-        float: left;
-
-        margin: 0 0 0 20px;
-        padding-bottom: 23px;
-    }
+.b-popup-c .row
+{
+  padding: 7px 8px 0 7px;
+}
+
+.b-popup-c label
+{
+  font-size: 118%;
+  font-weight: bold;
+
+  margin-right: 0.5em;
+
+  vertical-align: middle;
+}
+
+.b-popup-c input,
+.b-popup-c textarea
+{
+  float: left;
+
+  width: 76%;
+  margin: 0.45em 0.45em 0 0;
+  background-color: #c9d8ea;
+}
+
+.b-popup-c select
+{
+  vertical-align: middle;
+}
+
+.b-popup-c .note
+{
+  font-size: 80%;
+
+  float: left;
+
+  width: 80%;
+
+  color: #959595;
+}
+
+.b-popup-c .note-r
+{
+  width: 4.5em;
+  margin-top: 0.4em;
+}
+
+.b-popup-c .note .l
+{
+  float: left;
+
+  margin-top: 0.18em;
+}
+
+.b-popup-c .note .r
+{
+  float: right;
+
+  margin: 0.18em 0.7em 0 0;
+}
+
+.b-popup-c .btn
+{
+  /*
+  float: left;
+
+  margin: 0 0 0 20px;
+  padding-bottom: 2px;
+  */
+}
 /* Popup message (end) */ /**/
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/webapp/style/b-popup.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/b-popup.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/b-popup.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/b-popup.css Thu May 28 22:57:38 2009
@@ -10,7 +10,8 @@
     /* Shadows (begin) */ /**/
         .b-popup-c
         {
-            background: #233e5e;
+            background: #EEE;
+            border: 1px solid black;
         }
 
         .b-popup i

Modified: incubator/esme/trunk/server/src/main/webapp/style/b-view-menu.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/b-view-menu.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/b-view-menu.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/b-view-menu.css Thu May 28 22:57:38 2009
@@ -17,7 +17,7 @@
         margin-right: 3px;
         padding: 3px 0.5em;
 
-        background: #c9d8ea;
+        /* background: #c9d8ea; */
     }
 
     .b-view-menu li:hover

Modified: incubator/esme/trunk/server/src/main/webapp/style/l-page-content.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/l-page-content.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/l-page-content.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/l-page-content.css Thu May 28 22:57:38 2009
@@ -6,16 +6,16 @@
 
     .l-page-content .l-page-c
     {
-        background: #c9d8ea;
+      /*  background: #c9d8ea; */
     }
 
     .l-page-content .l-page-r
     {
-        background: #233e5e;
+        /* background: #233e5e; */
     }
 
     .l-page-content .l-top
     {
-        background: #233e5e;
+        /* background: #233e5e; */
     }
 /* Content page (end) */ /**/
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/webapp/style/l-page-message.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/l-page-message.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/l-page-message.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/l-page-message.css Thu May 28 22:57:38 2009
@@ -6,11 +6,11 @@
 
     .l-page-massage .l-page-r
     {
-        background: #233e5e;
+       /*  background: #233e5e; */
     }
 
     .l-page-massage .l-top
     {
-        background: #233e5e;
+        /* background: #233e5e; */
     }
 /* Message page (end) */ /**/
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/webapp/style/l-top.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/l-top.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/l-top.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/l-top.css Thu May 28 22:57:38 2009
@@ -8,7 +8,7 @@
         
         padding: 0 3px;
         
-        background: #233e5e;
+        /* background: #233e5e; */
         border-top: 4px solid #fff;
         border-left: 4px solid #fff;
     }

Modified: incubator/esme/trunk/server/src/main/webapp/style/layout.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/layout.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/layout.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/layout.css Thu May 28 22:57:38 2009
@@ -14,8 +14,8 @@
 
         height: 50px;
 
-        background: #7fa3ce;
-        border-bottom: 4px solid #fff;
+        /* background: #7fa3ce; */
+        border-bottom: 4px solid #000;
     }
 
     .foot
@@ -23,8 +23,8 @@
         height: 20px;
         padding: 0 12px;
 
-        color: #fff;
-        background: #7fa3ce;
-        border-top: 4px solid #fff;
+        color: #000;
+        background: #FFF;
+        border-top: 4px solid #111;
     }
 /* Layout (end) */ /**/
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/webapp/style/print.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/print.css?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/print.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/print.css Thu May 28 22:57:38 2009
@@ -1,110 +1,110 @@
 /* Basic style (begin) */ /**/
-    body
-    {
-        font: 0.8em "Trebuchet MS", Verdana, Arial, sans-serif;
-
-        position: relative;
-        z-index: 0;
-
-        margin: 0;
-        padding: 0;
-
-        color:#ffffff;
-        background: #dddee3;
-    }
-        body-action
-    {
-        font: 0.8em "Trebuchet MS", Verdana, Arial, sans-serif;
-
-        position: relative;
-        z-index: 0;
-
-        margin: 0;
-        padding: 0;
-
-        color:#233e5e;
-    }
-
-    *
-    {
-        font-size: 100%;
-
-        margin: 0;
-    }
-
-    h1, h2, h3, h4, h5, h6
-    {
-        font-weight: normal;
-
-        padding: 0;
-    }
-
-    table
-    {
-        border-collapse: collapse;
-    }
-
-    th, td
-    {
-        padding: 0;
-
-        text-align: left;
-        vertical-align: top;
-
-        border-collapse: collapse;
-    }
-
-    ol, ul
-    {
-        list-style: none;
-    }
-
-    ol, ul, li
-    {
-        padding: 0;
-    }
-
-    a
-    {
-        text-decoration: underline;
-
-        color: #fa801f;
-    }
-
-    a img
-    {
-        border: 0;
-    }
+body
+{
+  font: 0.8em "Trebuchet MS", Verdana, Arial, sans-serif;
+
+  position: relative;
+  z-index: 0;
+
+  margin: 0;
+  padding: 0;
+
+  color:#000;
+  background: #fff;
+}
+body-action
+{
+  font: 0.8em "Trebuchet MS", Verdana, Arial, sans-serif;
+
+  position: relative;
+  z-index: 0;
+
+  margin: 0;
+  padding: 0;
+
+  color:#233e5e;
+}
+
+*
+{
+  font-size: 100%;
+
+  margin: 0;
+}
+
+h1, h2, h3, h4, h5, h6
+{
+  font-weight: normal;
+
+  padding: 0;
+}
+
+table
+{
+  border-collapse: collapse;
+}
+
+th, td
+{
+  padding: 1px;
+
+  text-align: left;
+  vertical-align: top;
+
+  border-collapse: collapse;
+}
+
+ol, ul
+{
+  list-style: none;
+}
+
+ol, ul, li
+{
+  padding: 0;
+}
+
+a
+{
+  text-decoration: underline;
+
+  color: #fa801f;
+}
+
+a img
+{
+  border: 0;
+}
 /* Basic style (end) */ /**/
 
 
 /* Clearfix (begin) */ /**/
-    .clear:after
-    {
-        font: 0/0 a;
-
-        display: block;
-        visibility: hidden;
-        clear: both;
+.clear:after
+{
+  font: 0/0 a;
+
+  display: block;
+  visibility: hidden;
+  clear: both;
 
-        height: 0;
+  height: 0;
 
-        content: ".";
-    }
+  content: ".";
+}
 /* Clearfix (end) */ /**/
 
-    legend {
-        color: #ffffff;
-        border:medium none;
-        float:none !important;
-        height:auto !important;
-        max-height:none !important;
-        max-width:none !important;
-        min-height:0 !important;
-        min-width:0 !important;
-        padding-left:2px;
-        padding-right:2px;
-        position:static !important;
-        white-space:nowrap;
-        width:-moz-fit-content !important;
-    }
\ No newline at end of file
+legend {
+  /* color: #ffffff; */
+  border:medium none;
+  float:none !important;
+  height:auto !important;
+  max-height:none !important;
+  max-width:none !important;
+  min-height:0 !important;
+  min-width:0 !important;
+  padding-left:2px;
+  padding-right:2px;
+  position:static !important;
+  white-space:nowrap;
+  width:-moz-fit-content !important;
+}
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/webapp/templates-hidden/default.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/templates-hidden/default.html?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/templates-hidden/default.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/templates-hidden/default.html Thu May 28 22:57:38 2009
@@ -15,7 +15,7 @@
     <div class="container">
 
       <div class="head">
-        <a class="logo" href="/"><img src="/images/esme-blue.png" alt="ESME" /></a>
+        <a class="logo" href="/"><img src="/images/esme.png" alt="ESME" /></a>
 
         <ul class="b-primary">
           <li><lift:Menu.item name="EditUser"/></li>
@@ -32,7 +32,7 @@
         <tr>
           <td width="75%">
             <div>
-              <lift-tag:bind name="content" />
+              <lift:bind name="content" />
             </div>
           </td>
           <td>

Modified: incubator/esme/trunk/server/src/main/webapp/templates-hidden/login.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/templates-hidden/login.html?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/templates-hidden/login.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/templates-hidden/login.html Thu May 28 22:57:38 2009
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="eng">
   <head>
     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
@@ -11,47 +11,47 @@
     <script id="json" src="/classpath/json.js" type="text/javascript"/>
 
   </head>
-<body>
+  <body>
     <div class="container">
 
-        <div class="head">
-          <a class="logo" href="/"><img src="/images/esme-blue.png" alt="ESME" /></a>
+      <div class="head">
+        <a class="logo" href="/"><img src="/images/esme.png" alt="ESME" /></a>
 
-          <ul class="b-primary">
-            <li><lift:Menu.item name="about"/></li>
-            <li><lift:Menu.item name="Logout"/></li>
-          </ul>
-        </div>
+        <ul class="b-primary">
+          <li><lift:Menu.item name="about"/></li>
+          <li><lift:Menu.item name="Logout"/></li>
+        </ul>
+      </div>
 
-        <table class="l-page l-page-login">
+      <table class="l-page l-page-login">
         <tr>
-            <td class="l-page-l">
-                <div class="b-sign-on">
-                    <h1 class="title">Welcome and Sign On</h1>
-
-                    <p><b>Brought to you by the Enterprise Social Messaging Experiment group.</b></p>
-                    <p><b>The best, brightest shinning stars in the microblogging space.</b></p>
-                    <p class="last">Send micromessages to your friends and colleagues, tag messages and create groups of contacts.</p>
-                    <p><lift:msgs/></p>
+          <td class="l-page-l">
+            <div class="b-sign-on">
+              <h1 class="title">Welcome and Sign On</h1>
+
+              <p><b>Brought to you by the Enterprise Social Messaging Experiment group.</b></p>
+              <p><b>The best, brightest shinning stars in the microblogging space.</b></p>
+              <p class="last">Send micromessages to your friends and colleagues, tag messages and create groups of contacts.</p>
+              <p><lift:msgs/></p>
+            </div>
+          </td>
+          <td class="l-page-c"></td>
+          <td class="l-page-r">
+            <div class="l-top">
+              <div class="b-open">
+                <lift:bind name="content"/>
+
+                <div class="open-id">
+                  <h3>Need an OpenID?</h3>
+                  <p>try: <a href="http://openid.yahoo.com">http://openid.yahoo.com</a> or <a href="http://www.myopenid.com">www.myopenid.com</a></p>
                 </div>
-            </td>
-            <td class="l-page-c"></td>
-            <td class="l-page-r">
-                <div class="l-top">
-                    <div class="b-open">
-                        <lift-tag:bind name="content"/>
-
-                        <div class="open-id">
-                            <h3>Need an OpenID?</h3>
-                            <p>try: <a href="http://openid.yahoo.com">http://openid.yahoo.com</a> or <a href="http://www.myopenid.com">www.myopenid.com</a></p>
-                        </div>
-                    </div>
-                </div>
-            </td>
+              </div>
+            </div>
+          </td>
         </tr>
-        </table>
+      </table>
 
-        <div class="foot"></div>
+      <div class="foot"></div>
     </div>
-</body>
+  </body>
 </html>

Modified: incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html?rev=779789&r1=779788&r2=779789&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html Thu May 28 22:57:38 2009
@@ -9,28 +9,28 @@
     <script id="jquery" src="/classpath/jquery.js" type="text/javascript"/>
     <script id="json" src="/classpath/json.js" type="text/javascript"/>
     <script>
-// <![CDATA[
-    /*
-     * displayMessages called by lift:comet, type="Timeline" and type="PublicTimeline"
-     */
+      // <![CDATA[
+      /*
+       * displayMessages called by lift:comet, type="Timeline" and type="PublicTimeline"
+       */
 
-    function msgDateCompare(msg1, msg2)
-    {
+      function msgDateCompare(msg1, msg2)
+      {
         return parseInt(msg1.when) - parseInt(msg2.when);
-    }
+      }
 
-    function displayMessages(msgArray, elementId)
-    {
+      function displayMessages(msgArray, elementId)
+      {
         // Select the first element in table id="timeline_messages"
         //  with id="message" as the message template
         if (msgTemplate == null) {
-//                                    var msgTemplate = jQuery('span.'+spanId+' message:first');
-            var msgTemplate = jQuery('#'+elementId+' #message:first');
-            var tagTemplate = msgTemplate.find('#tag:first');
-            var msgInsertPt = jQuery('#'+elementId);
+          //                                    var msgTemplate = jQuery('span.'+spanId+' message:first');
+          var msgTemplate = jQuery('#'+elementId+' #message:first');
+          var tagTemplate = msgTemplate.find('#tag:first');
+          var msgInsertPt = jQuery('#'+elementId);
 
-            // Now we have the template, make the existing instances invisible
-            jQuery('#'+elementId+' *[id=message]').hide();
+          // Now we have the template, make the existing instances invisible
+          jQuery('#'+elementId+' *[id=message]').hide();
         }
 
         // Sort the messages into date order
@@ -38,61 +38,62 @@
 
         for (var msgIndex in msgArray)
         {
-            // Marshall the data from the Comet-supplied message
-            var cometMsg = msgArray[msgIndex];
-            var msgId = "message_"+cometMsg.id;
-
-            // Only do this if the message is not already in the table
-            if (jQuery('#'+elementId+' #'+msgId).size() == 0)
-            {
-                var msgAuthor = cometMsg.author;
-                var msgBody = jQuery(cometMsg.text).find('body').html();
-                var msgDateObj = new Date(parseInt(cometMsg.when));
-                var msgDateStr = msgDateObj.toLocaleDateString() +
-                    ' ' + msgDateObj.toLocaleTimeString();
-                var msgSource = cometMsg.source;
-                var msgTags = jQuery(cometMsg.text).find('tags > tag').get();
-                for (var tagIndex=0; tagIndex < msgTags.length; tagIndex++) {
-                    // Replace each tag element with the plain tag text
-                    msgTags[tagIndex] = jQuery(msgTags[tagIndex]).attr('name');
-                }
-
-                // Put the marshalled data into a copy of the template
-                var newMsg = msgTemplate.clone(true).attr('id',msgId);
-
-                newMsg.find('#author').text(msgAuthor.nickname);
-
-                var avatar = newMsg.find('#avatar')
-                        .attr('src', msgAuthor.imageurl)
-                        .attr('alt',msgAuthor.firstname + ' ' + msgAuthor.lastname);
-
-                newMsg.find('#body').html(msgBody);
-                newMsg.find('#source').text(msgSource);
-                newMsg.find('#when').text(msgDateStr);
-                for (var tagIndex=0; tagIndex < msgTags.length; tagIndex++) {
-                    var newTag = tagTemplate.clone(true).attr('id',msgTags[tagIndex]);
-                    newTag.find('a')
-                        .attr('href','tag/'+msgTags[tagIndex])
-                        .text(msgTags[tagIndex]);
-                    newTag.insertBefore(newMsg.find('#tag:first'));
-                }
+          // Marshall the data from the Comet-supplied message
+          var cometMsg = msgArray[msgIndex];
+          var msgId = "message_"+cometMsg.id;
+
+          // Only do this if the message is not already in the table
+          if (jQuery('#'+elementId+' #'+msgId).size() == 0)
+          {
+            var msgAuthor = cometMsg.author;
+            var msgBody = jQuery(cometMsg.text).find('body').html();
+            var msgDateObj = new Date(parseInt(cometMsg.when));
+            var msgDateStr = msgDateObj.toLocaleDateString() +
+              ' ' + msgDateObj.toLocaleTimeString();
+            var msgSource = cometMsg.source;
+            var msgTags = jQuery(cometMsg.text).find('tags > tag').get();
+            for (var tagIndex=0; tagIndex < msgTags.length; tagIndex++) {
+              // Replace each tag element with the plain tag text
+              msgTags[tagIndex] = jQuery(msgTags[tagIndex]).attr('name');
+            }
+
+            // Put the marshalled data into a copy of the template
+            var newMsg = msgTemplate.clone(true).attr('id',msgId);
 
-                // Remove any old tags from the template
-                newMsg.find('*[id=tag]').remove();
+            newMsg.find('#author').text(msgAuthor.nickname);
 
-                // Insert the updated copy of the message into the page
-                newMsg.prependTo(msgInsertPt).show();
+            var avatar = newMsg.find('#avatar')
+            .attr('src', msgAuthor.imageurl)
+            .attr('alt',msgAuthor.firstname + ' ' + msgAuthor.lastname);
+
+            newMsg.find('#body').html(msgBody);
+            newMsg.find('#source').text(msgSource);
+            newMsg.find('#when').text(msgDateStr);
+            for (var tagIndex=0; tagIndex < msgTags.length; tagIndex++) {
+              var newTag = tagTemplate.clone(true).attr('id',msgTags[tagIndex]);
+              newTag.find('a')
+              .attr('href','tag/'+msgTags[tagIndex])
+              .text(msgTags[tagIndex]);
+              newTag.insertBefore(newMsg.find('#tag:first'));
             }
+
+            // Remove any old tags from the template
+            newMsg.find('*[id=tag]').remove();
+
+            // Insert the updated copy of the message into the page
+            newMsg.prependTo(msgInsertPt).show();
+          }
         }
-    }
-// ]]>
+      }
+      // ]]>
     </script>
 
   </head>
   <body>
     <div class="container">
       <div class="head">
-        <img src="/images/esme-blue.png" alt="ESME" />
+        <img src="/images/esme.png" alt="ESME" />
+        <img src="/images/ajax-loader.gif" style="display: none" id="ajax-loader"/>
         <ul class="b-primary">
           <li><lift:Menu.item name="EditUser"/></li>
           <li><lift:Menu.item name="about"/></li>
@@ -115,19 +116,19 @@
 
                     <dd>
                       <div class="b-list">
-                      <table>
-                        <thead>
-                          <tr>
+                        <table>
+                          <thead>
+                            <tr>
                               <th>Author</th>
                               <th>Message</th>
                               <th>Tags</th>
                               <th>Source</th>
                               <th>Date</th>
-                          </tr>
-                        </thead>
-                        <lift:comet type="Timeline"/>
-                        <tbody id="timeline_messages">
-                          <tr id="message">
+                            </tr>
+                          </thead>
+                          <lift:comet type="Timeline"/>
+                          <tbody id="timeline_messages">
+                            <tr id="message">
                               <td><img id="avatar" src="http://static.twitter.com/images/default_profile_bigger.png" alt="Anonymous" width="50px"/><div id="author">anon</div></td>
                               <td class="message">
                                 <div class="outer"><div class="inner clear">
@@ -135,13 +136,13 @@
                                 </div></div>
                               </td>
                               <td id="tags" class="tag">
-                                  <p id="tag"><a href="tag/tag1">tag1</a></p>
-                                  <p id="tag"><a href="tag/tag2">tag2</a></p>
+                                <p id="tag"><a href="tag/tag1">tag1</a></p>
+                                <p id="tag"><a href="tag/tag2">tag2</a></p>
                               </td>
                               <td id="source">web</td>
                               <td id="when" class="date">Jan 1, 2009 12:00</td>
-                          </tr>
-                          <tr id="message">
+                            </tr>
+                            <tr id="message">
                               <td><img id="avatar" src="http://static.twitter.com/images/default_profile_bigger.png" alt="Anonymous" width="50px"/><div id="author">anon</div></td>
                               <td class="message">
                                 <div class="outer"><div class="inner clear">
@@ -149,14 +150,14 @@
                                 </div></div>
                               </td>
                               <td id="tags" class="tag">
-                                  <p id="tag"><a href="tag/tag1">tag1</a></p>
-                                  <p id="tag"><a href="tag/tag3">tag3</a></p>
+                                <p id="tag"><a href="tag/tag1">tag1</a></p>
+                                <p id="tag"><a href="tag/tag3">tag3</a></p>
                               </td>
                               <td id="source">web</td>
                               <td id="when" class="date">Jan 1, 2009 11:58</td>
-                          </tr>
-                        </tbody>
-                      </table>
+                            </tr>
+                          </tbody>
+                        </table>
                       </div>
                     </dd>
                   </dl>
@@ -166,19 +167,19 @@
 
                     <dd>
                       <div class="b-list">
-                      <table>
-                        <thead>
-                          <tr>
+                        <table>
+                          <thead>
+                            <tr>
                               <th>Author</th>
                               <th>Message</th>
                               <th>Tags</th>
                               <th>Source</th>
                               <th>Date</th>
-                          </tr>
-                        </thead>
-                        <lift:comet type="PublicTimeline"/>
-                        <tbody id="public_timeline_messages">
-                          <tr id="message">
+                            </tr>
+                          </thead>
+                          <lift:comet type="PublicTimeline"/>
+                          <tbody id="public_timeline_messages">
+                            <tr id="message">
                               <td id="author">dhague</td>
                               <td class="message">
                                 <div class="outer"><div class="inner clear">
@@ -186,14 +187,14 @@
                                 </div></div>
                               </td>
                               <td id="tags" class="tag">
-                                  <p id="tag"><a href="tag/tagA">tagA</a></p>
-                                  <p id="tag"><a href="tag/tagB">tagB</a></p>
+                                <p id="tag"><a href="tag/tagA">tagA</a></p>
+                                <p id="tag"><a href="tag/tagB">tagB</a></p>
                               </td>
                               <td id="source">web</td>
                               <td id="when" class="date">Jan 1, 2009 12:00</td>
-                          </tr>
-                        </tbody>
-                      </table>
+                            </tr>
+                          </tbody>
+                        </table>
                       </div>
                     </dd>
                   </dl>
@@ -232,7 +233,7 @@
                     <button onclick="clearReplyTo()">remove reply</button>
                   </div>
 
-                  <div class="row clear">
+                  <div class="row clear" style="display: none">
                     <label>Tag your message</label>
                     <input id="tagdude" style="width: 90%"/>
                     <div class="note clear">
@@ -242,7 +243,7 @@
                     </div>
                   </div>
 
-                  <div class="row clear"><a class="btn" href="javascript:post_msg();"><img src="/images/send-message.png" alt="Send Message" /></a></div>
+                  <div class="row clear"><button class="btn" onclick="javascript:post_msg();">Update<!--<img src="/images/send-message.png" alt="Send Message" />--></button></div>
 
                   <script>
                     // <![CDATA[
@@ -268,13 +269,16 @@
                   <lift:comet type="TagCloud"/>
                 </div>
 
-                <div class="bugs">
-                  <form action="/user_view/search"
-                        class="b-primay"><input style="height: 20px; background: #c9d8ea;"
-                                            name="term"/>
-                    <input style="height: 22px; background: #233e5e; color: #c9d8ea;" type="submit" value="Search"/>
-                  </form>
-                </div>
+                <lift:ignore>
+                  <div class="bugs">
+                    <form action="/user_view/search"
+                          class="b-primay"><input style="height: 20px; background: #c9d8ea;"
+                                              name="term"/>
+                      <input style="height: 22px; background: #233e5e; color: #c9d8ea;" type="submit" value="Search"/>
+                    </form>
+                  </div>
+                </lift:ignore>
+
               </div>
             </td>