You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by es...@apache.org on 2010/12/11 15:33:07 UTC
svn commit: r1044664 - in /incubator/esme/trunk/server/src/main:
scala/org/apache/esme/comet/ scala/org/apache/esme/snippet/
webapp/info_view/ webapp/templates-hidden/
Author: esjewett
Date: Sat Dec 11 14:33:06 2010
New Revision: 1044664
URL: http://svn.apache.org/viewvc?rev=1044664&view=rev
Log:
[ESME-287] [ESME-289] First cut at changing the user timeline display over to comet. Needs work on formatting and not very well tested at the moment.
Added:
incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/UserMessagesTimeline.scala
incubator/esme/trunk/server/src/main/webapp/templates-hidden/timeline_user_messages.html
Modified:
incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PersonalTimeline.scala
incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserDisplay.scala
incubator/esme/trunk/server/src/main/webapp/info_view/user.html
Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PersonalTimeline.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PersonalTimeline.scala?rev=1044664&r1=1044663&r2=1044664&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PersonalTimeline.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/PersonalTimeline.scala Sat Dec 11 14:33:06 2010
@@ -32,7 +32,7 @@ class PersonalTimeline extends Timeline
override def localSetup() {
super.localSetup()
for (user <- User.currentUser) {
- Distributor ! Distributor.Listen(user.id, this)
+ Distributor ! Distributor.ListenObject(user, this)
Distributor !? (2000, Distributor.LatestMessages(user.id, 40)) match {
case Full(msg: List[(Long,MailboxReason,Boolean)]) => messages = msg
case x =>
Added: incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/UserMessagesTimeline.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/UserMessagesTimeline.scala?rev=1044664&view=auto
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/UserMessagesTimeline.scala (added)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/comet/UserMessagesTimeline.scala Sat Dec 11 14:33:06 2010
@@ -0,0 +1,69 @@
+/**
+ * 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.comet
+
+import net.liftweb.common._
+import net.liftweb.mapper._
+import net.liftweb.http._
+import net.liftweb.util.Helpers.TimeSpan
+
+import org.apache.esme._
+import actor.{Distributor,UserActor}
+import model._
+
+class UserMessagesTimeline extends Timeline {
+
+ val jsId = "user_messages_timeline_messages"
+
+ override def lifespan = Full(TimeSpan(300000))
+
+ val user: User = S.param("uid").flatMap(User.findFromWeb) openOr {
+ S.error(S.?("base_ui_no_user_found"))
+ S.redirectTo(S.referer openOr "/")
+ }
+
+ override def localSetup() {
+ super.localSetup()
+ Distributor ! Distributor.ListenObject(user, this)
+ messages = Message.findAll(
+ By(Message.author, user),
+ OrderBy(Message.id, Descending),
+ MaxRows(40)).map(m => (m.id.is,NoReason,true))
+ }
+
+ override def localShutdown() {
+ super.localShutdown()
+ for (user <- User.currentUser) {
+ Distributor ! Distributor.Unlisten(user.id, this)
+ }
+ }
+
+ override def lowPriority = {
+ case UserActor.MessageReceived(msg, r) =>
+ if(msg.author == user) {
+ messages = ( (msg.id.is,r,true) :: messages).take(40)
+ reRender(false)
+ }
+
+ case UserActor.Resend(msgId) =>
+ messages = ( (msgId,ResendReason(user.id.is),true) :: messages).take(40)
+ reRender(false)
+ }
+}
\ No newline at end of file
Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserDisplay.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserDisplay.scala?rev=1044664&r1=1044663&r2=1044664&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserDisplay.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserDisplay.scala Sat Dec 11 14:33:06 2010
@@ -57,14 +57,19 @@ object UserDisplay {
case _ => <xml:group> <div class="thatsyou">{S.?("base_user_thats_you")}</div></xml:group>
}
+ }
+
+ def cometTimeline:NodeSeq = {
+ println(<lift:comet type="UserMessagesTimeline" name={"user"+user.id.is} />)
+ <lift:comet type="UserMessagesTimeline" name={"user"+user.id.is} />
}
-
-
+
bind("user", in,
"nicename" -> user.niceName,
"lastName" -> user.lastName,
"firstName" -> user.firstName,
- "image" -> user.image_link,
+ "image" -> user.image_link,
+ "cometTimeline" -> cometTimeline,
"followButton" -> followOrNot,
"messages" -> MessageUtils.bindMessages(Message.findAll(
By(Message.author, user),
Modified: 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=1044664&r1=1044663&r2=1044664&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/info_view/user.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/info_view/user.html Sat Dec 11 14:33:06 2010
@@ -24,75 +24,48 @@
<script type="text/javascript" src="../scripts/jquery-ui-1.8.2.custom.min.js"> </script>
<script type="text/javascript" src="../scripts/esme_table_sorter.js"></script>
<script type="text/javascript" src="../scripts/esme.js"></script>
-<div id="back-header">
- <lift:user_info>
- <h1><lift:loc>ui_user_single_title</lift:loc> <i>'<user:nicename/>'</i></h1>
-
- <user:image/>
- <h4><lift:loc>ui_sign_up_firstname</lift:loc>: <user:firstName/></h4>
- <h4><lift:loc>ui_sign_up_lastname</lift:loc>: <user:lastName/></h4>
- <div class="container-aux">
- <span id="following"><user:followButton/></span>
- <div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs">
- <ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
- <li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active">
- <a href="#tabs-1"><user:nicename/><lift:loc>ui_user_messages</lift:loc></a>
- </li>
- <li class="ui-state-default ui-corner-top">
- <a href="#tabs-2"><lift:loc>ui_user_following</lift:loc></a>
- </li>
- <li class="ui-state-default ui-corner-top">
- <a href="#tabs-3"><lift:loc>ui_user_followers</lift:loc></a>
- </li>
- </ul>
- <div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tabs-1">
- <dl class="">
- <dd class="b-clouds">
- <table class="tablesorter">
- <thead>
- <tr>
- <th>
- <lift:loc>ui_user_message</lift:loc>
- </th>
- <th>
- <lift:loc>ui_user_date</lift:loc>
- </th>
- </tr>
- </thead>
- <tbody>
- <user:messages>
- <tr class="user_row">
- <td class ="user_message">
- <item:body/>
- </td>
- <td>
- <item:date/>
- </td>
- </tr>
- </user:messages>
- </tbody>
- </table>
- </dd>
- </dl>
- </div>
- <div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tabs-2">
- <dl class="">
- <dd class="b-contacts" style="height: 240px; overflow: auto">
- <lift:UserSnip.following user:userId=""/>
- </dd>
- </dl>
- </div>
- <div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tabs-3">
- <dl class="">
- <dd class="b-contacts" style="height: 240px; overflow: auto">
- <lift:UserSnip.followers user:userId=""/>
- </dd>
- </dl>
- </div>
- </div>
-
- </div>
- </lift:user_info>
- </div>
- <!-- End demo -->
+ <lift:user_info>
+ <div id="back-header">
+ <h1>
+ <user:image/> <i>'<user:nicename/>'</i> - <user:firstName/> <user:lastName/>
+ <span id="following"><user:followButton/></span>
+ </h1>
+ </div>
+ <div class="container-aux">
+ <div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs">
+ <ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
+ <li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active">
+ <a href="#tabs-1"><user:nicename/><lift:loc>ui_user_messages</lift:loc></a>
+ </li>
+ <li class="ui-state-default ui-corner-top">
+ <a href="#tabs-2"><lift:loc>ui_user_following</lift:loc></a>
+ </li>
+ <li class="ui-state-default ui-corner-top">
+ <a href="#tabs-3"><lift:loc>ui_user_followers</lift:loc></a>
+ </li>
+ </ul>
+ <div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tabs-1">
+ <dl class="">
+ <dd class="b-clouds">
+ <lift:embed what="templates-hidden/timeline_user_messages"/>
+ </dd>
+ </dl>
+ </div>
+ <div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tabs-2">
+ <dl class="">
+ <dd class="b-contacts" style="height: 240px; overflow: auto">
+ <lift:UserSnip.following user:userId=""/>
+ </dd>
+ </dl>
+ </div>
+ <div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tabs-3">
+ <dl class="">
+ <dd class="b-contacts" style="height: 240px; overflow: auto">
+ <lift:UserSnip.followers user:userId=""/>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+ </lift:user_info>
</lift:surround>
\ No newline at end of file
Added: incubator/esme/trunk/server/src/main/webapp/templates-hidden/timeline_user_messages.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/templates-hidden/timeline_user_messages.html?rev=1044664&view=auto
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/templates-hidden/timeline_user_messages.html (added)
+++ incubator/esme/trunk/server/src/main/webapp/templates-hidden/timeline_user_messages.html Sat Dec 11 14:33:06 2010
@@ -0,0 +1,29 @@
+<!--
+ 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. *
+-->
+
+<div id="user_messages_timeline_messages">
+ <head>
+ <script src="../scripts/display_messages_top.js" type="text/javascript"/>
+ <script src="../scripts/pretty.js" type="text/javascript"/>
+ <lift:user_info>
+ <user:cometTimeline />
+ </lift:user_info>
+ </head>
+ <lift:embed what="templates-hidden/message_core"/>
+</div>
\ No newline at end of file