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/01/03 01:35:33 UTC

svn commit: r730878 - in /incubator/esme/trunk/server/src/main: scala/us/esme/comet/ scala/us/esme/lib/ scala/us/esme/model/ scala/us/esme/view/ webapp/ webapp/style/ webapp/templates-hidden/

Author: dpp
Date: Fri Jan  2 16:35:33 2009
New Revision: 730878

URL: http://svn.apache.org/viewvc?rev=730878&view=rev
Log:
Moved to JavaScript display of messages

Modified:
    incubator/esme/trunk/server/src/main/scala/us/esme/comet/PublicTimeline.scala
    incubator/esme/trunk/server/src/main/scala/us/esme/comet/TagCloud.scala
    incubator/esme/trunk/server/src/main/scala/us/esme/comet/Timeline.scala
    incubator/esme/trunk/server/src/main/scala/us/esme/lib/MsgFormat.scala
    incubator/esme/trunk/server/src/main/scala/us/esme/model/User.scala
    incubator/esme/trunk/server/src/main/scala/us/esme/view/UserView.scala
    incubator/esme/trunk/server/src/main/webapp/index.html
    incubator/esme/trunk/server/src/main/webapp/style/esme.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/templates-hidden/default.html
    incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html

Modified: incubator/esme/trunk/server/src/main/scala/us/esme/comet/PublicTimeline.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/us/esme/comet/PublicTimeline.scala?rev=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/us/esme/comet/PublicTimeline.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/us/esme/comet/PublicTimeline.scala Fri Jan  2 16:35:33 2009
@@ -32,10 +32,7 @@
 
 import java.text._
 
-class PublicTimeline extends CometActor with MsgFormat {
-
-  override def defaultPrefix = Full("timeline")
-
+class PublicTimeline extends CometActor {
   private var messages: List[Long] = Nil
   private var lastRender = millis
   private var scheduled = false
@@ -58,14 +55,10 @@
     val msgMap = Message.findMessages(messages)
     val toDisplay = messages.flatMap(msgMap.get)
   
-    <xml:group>
-      {
-        toDisplay.map(m => formatMsg(m, true, true))
-      }
-    </xml:group>
+    OnLoad(JsCrVar("public_timeline_messages", JsArray(
+        toDisplay.map(_.asJs) :_*)) &
+    JsFunc("displayMessages", JsVar("public_timeline_messages"), uniqueId).cmd)
   }
-  
-  override implicit def xmlToXmlOrJsCmd(in: NodeSeq): RenderOut = new RenderOut(Full(in), fixedRender, Empty, Empty, false)
 
   override def lowPriority = {
     case ForceRender =>

Modified: incubator/esme/trunk/server/src/main/scala/us/esme/comet/TagCloud.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/us/esme/comet/TagCloud.scala?rev=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/us/esme/comet/TagCloud.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/us/esme/comet/TagCloud.scala Fri Jan  2 16:35:33 2009
@@ -31,9 +31,7 @@
 
 import java.text._
 
-class TagCloud extends CometActor with MsgFormat {
-
-  override def defaultPrefix = Full("tagcloud")
+class TagCloud extends CometActor /* with MsgFormat*/ {
 
   private var messages: List[Long] = Nil
   

Modified: incubator/esme/trunk/server/src/main/scala/us/esme/comet/Timeline.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/us/esme/comet/Timeline.scala?rev=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/us/esme/comet/Timeline.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/us/esme/comet/Timeline.scala Fri Jan  2 16:35:33 2009
@@ -31,10 +31,7 @@
 
 import java.text._
 
-class Timeline extends CometActor with MsgFormat {
-
-  override def defaultPrefix = Full("timeline")
-
+class Timeline extends CometActor {
   private var messages: List[Long] = Nil
   
   override def localSetup() {
@@ -51,29 +48,25 @@
   override def localShutdown() {
     super.localShutdown()
     for (user <- User.currentUser) {
-    Distributor ! Distributor.Unlisten(user.id, this)
+      Distributor ! Distributor.Unlisten(user.id, this)
     }
   }
   
   def render = {
     val msgMap = Message.findMessages(messages)
     val toDisplay = messages.flatMap(msgMap.get)
-  
-  <xml:group>
-    {
-      toDisplay.map(m => <xml:group>{formatMsg(m, true, true)}</xml:group>)
-    }
-  </xml:group>
+
+    OnLoad(JsCrVar("timeline_messages", JsArray(
+        toDisplay.map(_.asJs) :_*)) &
+    JsFunc("displayMessages", JsVar("timeline_messages"), uniqueId).cmd)
   }
   
-  override implicit def xmlToXmlOrJsCmd(in: NodeSeq): RenderOut = new RenderOut(Full(in), fixedRender, Empty, Empty, false)
-
   override def lowPriority = {
     case UserActor.MessageReceived(msg, _) =>
       messages = (msg.id.is :: messages).take(40)
       reRender(false)
       
-      case Distributor.UserUpdated(_) =>
-        reRender(false)
+    case Distributor.UserUpdated(_) =>
+      reRender(false)
   }
 }

Modified: incubator/esme/trunk/server/src/main/scala/us/esme/lib/MsgFormat.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/us/esme/lib/MsgFormat.scala?rev=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/us/esme/lib/MsgFormat.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/us/esme/lib/MsgFormat.scala Fri Jan  2 16:35:33 2009
@@ -43,6 +43,7 @@
   r openOr false
 })
 
+/*
 trait MsgFormat {
   
   def formatMsg(in: Message, showReply: Boolean, showConv: Boolean): NodeSeq =
@@ -109,3 +110,4 @@
     }
   }
 }
+*/
\ No newline at end of file

Modified: incubator/esme/trunk/server/src/main/scala/us/esme/model/User.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/us/esme/model/User.scala?rev=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/us/esme/model/User.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/us/esme/model/User.scala Fri Jan  2 16:35:33 2009
@@ -88,7 +88,6 @@
       <p class="input"><label>Open ID</label><user:openid /></p>
       <p class="button">
         <img onclick="document.getElementById('openid_submit').submit()" src="/images/sign-on.png" alt="Sign On" />
-        <span class="note">...if you dare...</span>
       </p>
     </div>
     {

Modified: incubator/esme/trunk/server/src/main/scala/us/esme/view/UserView.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/us/esme/view/UserView.scala?rev=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/us/esme/view/UserView.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/us/esme/view/UserView.scala Fri Jan  2 16:35:33 2009
@@ -37,7 +37,7 @@
 
 import java.util.logging._
 
-object UserView extends LiftView with MsgFormat {
+object UserView extends LiftView /* with MsgFormat */ {
   val logger: Logger = Logger.getLogger("us.esme.view")
   logger.setLevel(Level.INFO)
   def loggedIn_? = User.loggedIn_?
@@ -79,12 +79,13 @@
         case _ =>
           <ul>
             {
-              what.map(m =>
-                <li>{formatMsg(m,
-                               false, false,
-                               Full(() =>
-                        show(replyMap.getOrElse(m.id, Nil).reverse)
-                      ))}</li>)
+              what.zipWithIndex.map{
+                case (m, idx) =>
+                  <span id={"m_"+idx}>
+                    {Script(OnLoad(JsFunc("displayMessages", JsArray(m.asJs), "m_"+idx).cmd))
+                    }
+                  </span>
+              }
             }
           </ul>
       }
@@ -125,20 +126,20 @@
             <div id="tabs" class="b-view tab1">
               <dl class="messages">
                 <dt class="caption">{user.niceName}'s Timeline 
-                <span id="following">{followOrNot}</span></dt>
-                <dd class="b-view-menu clear">
-                  <ul>
-                    <li class="current"><b>Timeline</b></li>
-                    <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab2';return false">Messages</a></li>
-                    <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab3';return false">Contacts</a></li>
-                  </ul>
-                </dd>
+                  <span id="following">{followOrNot}</span></dt>
                 <dd>
                   {
                     val lst: List[Message] =
                     Mailbox.mostRecentMessagesFor(user.id, 50).map(_._1)
                     //  user.latestMessages(50) openOr Nil
-                    lst.map(m => formatMsg(m, false, true))
+                    lst.zipWithIndex.map{
+                      case (m, idx) =>
+                        <span id={"m2_"+idx}>
+                          {
+                            Script(OnLoad(JsFunc("displayMessages", JsArray(m.asJs), "m2_"+idx).cmd))
+                          }
+                        </span>
+                    }
                   }
                 </dd>
               </dl>
@@ -146,18 +147,18 @@
               <dl class="tagclouds">
                 <dt class="caption">{user.niceName}'s Messages</dt>
                
-                <dd class="b-view-menu clear">
-                  <ul>
-                    <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab1';return false">Timeline</a></li>
-                    <li class="current"><b>Messages</b></li>
-                    <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab3';return false">Contacts</a></li>
-                  </ul>
-                </dd>
                 <dd class="b-clouds">
                   {
                     val lst: List[Message] =
                     Message.findAll(By(Message.author, user), MaxRows(50), OrderBy(Message.id, Descending))
-                    lst.map(m => formatMsg(m, false, true))
+                    lst.zipWithIndex.map{
+                      case (m, idx) =>
+                        <span id={"m3_"+idx}>
+                          {
+                            Script(OnLoad(JsFunc("displayMessages", JsArray(m.asJs), "m3_"+idx).cmd))
+                          }
+                        </span>
+                    }
                   }
                 </dd>
               </dl>
@@ -165,13 +166,7 @@
                 <dt class="caption">
                   Contacts
                 </dt>
-                <dd class="b-view-menu clear">
-                  <ul>
-                    <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab1';return false">Timeline</a></li>
-                    <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab2';return false">Messages</a></li>
-                    <li class="current"><b>Contacts</b></li>
-                  </ul>
-                </dd>
+
                 <dd class="b-contacts" style="height: 240px; overflow: auto">
                   Following:
                   <lift:UserSnip.following userId={user.id.toString}/>
@@ -183,22 +178,6 @@
               </dl>
             </div>
           </div>
-          /*
-           (<div>
-           <fieldset>
-           <legend>{user.niceName}</legend>
-           <span id="following">{followOrNot}</span>
-           <ul>
-           {
-           val lst: List[Message] =
-           Mailbox.mostRecentMessagesFor(user.id, 50).map(_._1)
-           //  user.latestMessages(50) openOr Nil
-           lst.map(m => <li>{formatMsg(m, false, true)}</li>)
-           }
-           </ul>
-           </fieldset>
-           </div>)
-           */
         }
         ui openOr (<span>User Not Found</span>)
       }
@@ -214,7 +193,14 @@
         <ul>
           {
             val lst: List[Message] = Message.search(term, user.following, 50)
-            lst.map(m => <li>{formatMsg(m, false, true)}</li>)
+            lst.zipWithIndex.map{
+              case (m, idx) =>
+                <span id={"m4_"+idx}>
+                  {
+                    Script(OnLoad(JsFunc("displayMessages", JsArray(m.asJs), "m4_"+idx).cmd))
+                  }
+                </span>
+            }
           }
         </ul>
       </fieldset>
@@ -233,7 +219,14 @@
                 <legend>{tag.name}</legend>
                 <ul>
                   {
-                    lst.map(m => <li>{formatMsg(m, false, true)}</li>)
+                    lst.zipWithIndex.map{
+                      case (m, idx) =>
+                        <span id={"m5_"+idx}>
+                          {
+                            Script(OnLoad(JsFunc("displayMessages", JsArray(m.asJs), "m5_"+idx).cmd))
+                          }
+                        </span>
+                    }
                   }
                 </ul>
               </fieldset>

Modified: incubator/esme/trunk/server/src/main/webapp/index.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/index.html?rev=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/index.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/index.html Fri Jan  2 16:35:33 2009
@@ -1,18 +1,16 @@
 <lift:UserSnip.loggedIn>
   <logged:in>
-    <lift:surround with="message" at="content">
-
-    </lift:surround>
+    <lift:surround with="message" at="content"/>
   </logged:in>
   <logged:out>
     <lift:surround with="default" at="content">
       <div>
-	<fieldset>
+        <fieldset>
           <legend>Conversation</legend>
-	  <div style="height: 500px; overflow: auto">
-	    <lift:comet type="PublicTimeline"/>
-	  </div>
-	</fieldset>
+          <div style="height: 500px; overflow: auto">
+            <lift:comet type="PublicTimeline"/>
+          </div>
+        </fieldset>
       </div>
     </lift:surround>
   </logged:out>

Modified: incubator/esme/trunk/server/src/main/webapp/style/esme.css
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/style/esme.css?rev=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/esme.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/esme.css Fri Jan  2 16:35:33 2009
@@ -25,7 +25,7 @@
 /* Head (begin) */ /**/
     .head .logo img
     {
-        margin: 5px 0 0 14px;
+        margin: 0px 0 0 14px;
 
     }
 /* Head (end) */ /**/

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=730878&r1=730877&r2=730878&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 Fri Jan  2 16:35:33 2009
@@ -5,7 +5,7 @@
         z-index: 10;
 
         min-height: 50px;
-        margin: -27px 0 0 -4px;
+        
         padding: 0 3px;
         
         background: #233e5e;

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=730878&r1=730877&r2=730878&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/style/layout.css (original)
+++ incubator/esme/trunk/server/src/main/webapp/style/layout.css Fri Jan  2 16:35:33 2009
@@ -5,7 +5,7 @@
         margin: 0 auto;
 
         border-top: 4px solid #fff;
-        border-bottom: 4px solid #fff;
+        /* border-bottom: 4px solid #fff; */
     }
 
     .head

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=730878&r1=730877&r2=730878&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 Fri Jan  2 16:35:33 2009
@@ -16,37 +16,36 @@
 
       <div class="head">
         <a class="logo" href="/"><img src="/images/esme-blue.png" alt="ESME" /></a>
-          
+
         <ul class="b-primary">
           <li><lift:Menu.item name="EditUser"/></li>
           <li><lift:Menu.item name="about"/></li>
+          <li><lift:Menu.item name="list_users"/></li>
+          <li><lift:Menu.item name="trackMgt"/></li>
+          <li><lift:Menu.item name="actionMgt"/></li>
+          <li><lift:Menu.item name="authToken"/></li>
           <li><lift:Menu.item name="Logout"/></li>
         </ul>
       </div>
 
-      <table class="l-page l-page-content">
+      <table>
         <tr>
-          <td class="l-page-l">
-	    <div class="b-open">
-              <lift:UserSnip.loginForm />
-	    </div>
-          </td>
-          <td class="l-page-c">
-            <div class="b-back">
-              <lift:Menu.item name="Home">&lt;- Messages</lift:Menu.item>
+          <td width="75%">
+            <div>
+              <lift:bind name="content" />
             </div>
-            <lift:msgs/>
           </td>
-          <td class="l-page-r">
-            <div class="l-top">
-                <lift:bind name="content" />
-            </div>
+          <td>
+            <lift:UserSnip.loginForm />
+            <lift:msgs/>
           </td>
         </tr>
       </table>
 
-      <lift:embed what="/templates-hidden/menu_footer"/>
     </div>
 
+    <div class="foot">
+      <center>ESME</center>
+    </div>
   </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=730878&r1=730877&r2=730878&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 Fri Jan  2 16:35:33 2009
@@ -13,145 +13,129 @@
   <body>
     <div class="container">
       <div class="head">
-	<img src="/images/esme-blue.png" alt="ESME" />
+        <img src="/images/esme-blue.png" alt="ESME" />
         <ul class="b-primary">
           <li><lift:Menu.item name="EditUser"/></li>
-	  <li><lift:Menu.item name="about"/></li>
-	  <li><lift:Menu.item name="authToken"/></li>
+          <li><lift:Menu.item name="about"/></li>
+          <li><lift:Menu.item name="list_users"/></li>
+          <li><lift:Menu.item name="trackMgt"/></li>
+          <li><lift:Menu.item name="actionMgt"/></li>
+          <li><lift:Menu.item name="authToken"/></li>
           <li><lift:Menu.item name="Logout"/></li>
         </ul>
       </div>
 
       <table class="l-page l-page-massage">
-	<tbody>
+        <tbody>
           <tr>
-            <td class="l-page-l">
-              <div class="b-edit">
-                <h2 class="title">Welcome<span class="name"><lift:UserSnip.name /></span></h2>
-                <div class="b-popup"><i class="rt"><i>&nbsp;</i></i>
-                  <i class="rb"><i>&nbsp;</i></i>
-                  <i class="lb"><i>&nbsp;</i></i>
-                  <i class="b">&nbsp;</i>
-		  <div class="b-popup-c">
-                    <div class="row clear">
-                      <label>What are you working on?</label>
-                      <textarea rows="4" cols="20" id="textdude"
-                      style="width: 90%"></textarea
-								    >
-                    </div>
-		    <div class="row clear"
-			 style="display: none;"
-                         id="reply-to-div">
-		      Replying to <span id="reply-to-span">&nbsp;</span>
-		      <button onclick="clearReplyTo()">remove reply</button>
-		    </div>
-		    
-                    <div class="row clear">
-                      <label>Tag your message</label>
-                      <input id="tagdude" style="width: 90%"/>
-                      <div class="note clear">
-                        <span class="l">use commas to 
-			  separate tags</span>
-			<span class="r">not required</span>
-                      </div>
-                    </div>
-		    
-                    <div class="row clear"><a class="btn" href="javascript:post_msg();"><img src="/images/send-message.png" alt="Send Message" /></a></div>
-
-<script>
-// <![CDATA[
-var currentConvNumber = 0;
-
-function setReplyTo(id, text) {
-  currentConvNumber = id;
-  document.getElementById('reply-to-div').style.display = "block";
-  jQuery('#reply-to-span').text(text);
-}
-
-function clearReplyTo() {
-  currentConvNumber = 0;
-  document.getElementById('reply-to-div').style.display = "none";
-}
-// ]]>
-</script>
-<lift:UserSnip.postScript />
-		  </div>
-		</div>
-
-		<div class="b-cloud">
-                  <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>
-              </div>
-            </td>
-            <td class="l-page-c"></td>
             <td class="l-page-r">
               <div class="l-top">
-                <div id="tabs" class="b-view tab1">
+                <div id="tabs" >
                   <dl class="messages">
-		    <dt class="caption">Your timeline</dt>
-                    <dd class="b-view-menu clear">
-                      <ul>
-                        <li class="current"><b>Messages</b></li>
-                        <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab2';return false">Timeline</a></li>
-                        <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab3';return false">Contacts</a></li>
-                      </ul>
+                    <dt class="caption">Your timeline</dt>
+
+                    <dd>
+                      <lift:comet type="Timeline"/>
                     </dd>
-		    <dd>
-		      <lift:comet type="Timeline"/>
-		    </dd>
                   </dl>
-		  
+
                   <dl class="tagclouds">
                     <dt class="caption">
                       Public Timeline
                     </dt>
-                    <dd class="b-view-menu clear">
-                      <ul>
-                        <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab1';return false">Messages</a></li>
-                        <li class="current"><b>Timeline</b></li>
-                        <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab3';return false">Contacts</a></li>
-                      </ul>
-                    </dd>
+
                     <dd class="b-clouds">
-		      <lift:comet type="PublicTimeline" />
+                      <lift:comet type="PublicTimeline" />
                     </dd>
                   </dl>
                   <dl class="contacts">
                     <dt class="caption">
                       Contacts
                     </dt>
-                    <dd class="b-view-menu clear">
-                      <ul>
-                        <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab1';return false">Messages</a></li>
-                        <li><a href="javascript:" onclick="document.getElementById('tabs').className='b-view tab2';return false">Timeline</a></li>
-                        <li class="current"><b>Contacts</b></li>
-                      </ul>
-                    </dd>
+
                     <dd class="b-contacts" style="height: 240px; overflow: auto">
-		      Following:
-		      <lift:UserSnip.following/>
+                      Following:
+                      <lift:UserSnip.following/>
                     </dd>
                     <dd class="b-contacts" style="height: 240px; overflow: auto">
-		      Followers:
-		      <lift:UserSnip.followers/>
+                      Followers:
+                      <lift:UserSnip.followers/>
                     </dd>
                   </dl>
                 </div>
               </div>
             </td>
+            <td class="l-page-l">
+              <div class="b-edit">
+                <h2 class="title">Welcome<span class="name"><lift:UserSnip.name /></span></h2>
+
+                <div class="b-popup-c">
+                  <div class="row clear">
+                    <label>What are you working on?</label>
+                    <textarea rows="4" cols="20" id="textdude"
+                              style="width: 90%"></textarea
+                    >
+                  </div>
+                  <div class="row clear"
+                       style="display: none;"
+                       id="reply-to-div">
+                    Replying to <span id="reply-to-span">&nbsp;</span>
+                    <button onclick="clearReplyTo()">remove reply</button>
+                  </div>
+
+                  <div class="row clear">
+                    <label>Tag your message</label>
+                    <input id="tagdude" style="width: 90%"/>
+                    <div class="note clear">
+                      <span class="l">use commas to
+                      separate tags</span>
+                      <span class="r">not required</span>
+                    </div>
+                  </div>
+
+                  <div class="row clear"><a class="btn" href="javascript:post_msg();"><img src="/images/send-message.png" alt="Send Message" /></a></div>
+
+                  <script>
+                    // <![CDATA[
+                    var currentConvNumber = 0;
+
+                    function setReplyTo(id, text) {
+                      currentConvNumber = id;
+                      document.getElementById('reply-to-div').style.display = "block";
+                      jQuery('#reply-to-span').text(text);
+                    }
+
+                    function clearReplyTo() {
+                      currentConvNumber = 0;
+                      document.getElementById('reply-to-div').style.display = "none";
+                    }
+                    // ]]>
+                  </script>
+                  <lift:UserSnip.postScript />
+                </div>
+
+
+                <div class="b-cloud">
+                  <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>
+              </div>
+            </td>
+
+
           </tr>
-	</tbody>
+        </tbody>
       </table>
-      
-      <lift:embed what="/templates-hidden/menu_footer"/>
+    </div>
+    <div class="foot">
+      <center>ESME</center>
     </div>
   </body>
 </html>