You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by dh...@apache.org on 2009/01/04 22:15:11 UTC
svn commit: r731359 - in /incubator/esme/trunk/server: ./
src/main/scala/us/esme/comet/PublicTimeline.scala
src/main/scala/us/esme/comet/Timeline.scala
src/main/webapp/templates-hidden/message.html
Author: dhague
Date: Sun Jan 4 13:15:10 2009
New Revision: 731359
URL: http://svn.apache.org/viewvc?rev=731359&view=rev
Log:
JavaScript comet message update now more generic, and deals with both user and public timelines.
Modified:
incubator/esme/trunk/server/ (props changed)
incubator/esme/trunk/server/src/main/scala/us/esme/comet/PublicTimeline.scala
incubator/esme/trunk/server/src/main/scala/us/esme/comet/Timeline.scala
incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html
Propchange: incubator/esme/trunk/server/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Jan 4 13:15:10 2009
@@ -1 +1,5 @@
target
+esme_db
+esme_test_db
+derby.log
+compass-index
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=731359&r1=731358&r2=731359&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 Sun Jan 4 13:15:10 2009
@@ -54,10 +54,11 @@
scheduled = false
val msgMap = Message.findMessages(messages)
val toDisplay = messages.flatMap(msgMap.get)
-
- OnLoad(JsCrVar("public_timeline_messages", JsArray(
+ val jsId = "public_timeline_messages";
+
+ OnLoad(JsCrVar(jsId, JsArray(
toDisplay.map(_.asJs) :_*)) &
- JsFunc("displayMessages", JsVar("public_timeline_messages"), uniqueId).cmd)
+ JsFunc("displayMessages", JsVar(jsId), jsId).cmd)
}
override def lowPriority = {
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=731359&r1=731358&r2=731359&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 Sun Jan 4 13:15:10 2009
@@ -55,10 +55,11 @@
def render = {
val msgMap = Message.findMessages(messages)
val toDisplay = messages.flatMap(msgMap.get)
+ val jsId = "timeline_messages";
- OnLoad(JsCrVar("timeline_messages", JsArray(
+ OnLoad(JsCrVar(jsId, JsArray(
toDisplay.map(_.asJs) :_*)) &
- JsFunc("displayMessages", JsVar("timeline_messages"), uniqueId).cmd)
+ JsFunc("displayMessages", JsVar(jsId), jsId).cmd)
}
override def lowPriority = {
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=731359&r1=731358&r2=731359&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 Sun Jan 4 13:15:10 2009
@@ -8,6 +8,80 @@
<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"
+ */
+
+ function msgDateCompare(msg1, msg2)
+ {
+ return parseInt(msg1.when) - parseInt(msg2.when);
+ }
+
+ 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);
+
+ // Now we have the template, make the existing instances invisible
+ jQuery('#'+elementId+' *[id=message]').hide();
+ }
+
+ // Sort the messages into date order
+ msgArray.sort(msgDateCompare);
+
+ 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('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);
+ 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'));
+ }
+
+ // 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>
@@ -35,9 +109,8 @@
<dt class="caption">Your timeline</dt>
<dd>
- <lift:comet type="Timeline"/>
<div class="b-list">
- <table id="timeline_messages">
+ <table>
<thead>
<tr>
<th>Author</th>
@@ -47,84 +120,8 @@
<th>Date</th>
</tr>
</thead>
-<!-- msgArray is an array of objects of the form:
- 'conversation': 0, 'author': 1, 'replyto': 0, 'viagroup': 0, 'id': 1,
- 'text': '<message><body>Checking out the latest ESME</body>\u000a
- <tags><tag name="Esme" id="1"></tag></tags></message>',
- 'source': 'web', 'when': 1230587914019}
--->
- <script>
- // <![CDATA[
- function msgDateCompare(msg1, msg2)
- {
- return parseInt(msg1.when) - parseInt(msg2.when);
- }
-
- function displayMessages(msgArray, spanId)
- {
- // 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('table#timeline_messages #message:first');
- var tagTemplate = msgTemplate.find('#tag:first');
- var msgInsertPt = jQuery('table#timeline_messages #messages');
-
- // Now we have the template, make the existing instances invisible
- jQuery('table#timeline_messages *[id=message]').hide();
- }
-
- // Sort the messages into date order
- msgArray.sort(msgDateCompare);
-
- 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('table#timeline_messages #'+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('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);
- newMsg.find('#body').html(msgBody);
- newMsg.find('#source').text(msgSource);
- newMsg.find('#when').text(msgDateStr);
- for (var tagIndex=0; tagIndex < msgTags.length; tagIndex++) {
-// alert('msgId: '+msgId+' msgTags['+tagIndex+'] = '+ msgTag);
-
- 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'));
- }
- // 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>
- <tbody id="messages">
+ <lift:comet type="Timeline"/>
+ <tbody id="timeline_messages">
<tr id="message">
<td id="author">dhague</td>
<td class="message">
@@ -160,12 +157,39 @@
</dl>
<dl class="tagclouds">
- <dt class="caption">
- Public Timeline
- </dt>
+ <dt class="caption">Public timeline</dt>
- <dd class="b-clouds">
- <lift:comet type="PublicTimeline" />
+ <dd>
+ <div class="b-list">
+ <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">
+ <td id="author">dhague</td>
+ <td class="message">
+ <div class="outer"><div class="inner clear">
+ <p class="text" id="body">This is a public timeline message in the HTML for designers.</p>
+ </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>
+ </td>
+ <td id="source">web</td>
+ <td id="when" class="date">Jan 1, 2009 12:00</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</dd>
</dl>
<dl class="contacts">