Author: rhirsch
Date: Mon Oct 5 07:44:08 2009
New Revision: 821708
URL: http://svn.apache.org/viewvc?rev=821708&view=rev
Log:
[ESME-86] The current user list page is very primitive
Patches from Dave Briccetti applied
Modified:
incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/UserMgr.scala
Modified:
incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/UserMgr.scala
URL:
http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/UserMgr.scala?rev=821708&r1=821707&r2=821708&view=diff
==============================================================================
---
incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/UserMgr.scala
(original)
+++
incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/UserMgr.scala
Mon Oct 5 07:44:08 2009
@@ -21,24 +21,22 @@
package org.apache.esme.lib
+import java.text.SimpleDateFormat
+import scala.xml.{NodeSeq}
+
import net.liftweb._
import http._
import SHtml._
import js._
import JsCmds._
import JE._
-
import sitemap._
import Loc._
-
import mapper._
-
import util._
import Helpers._
-
import model._
-
-import scala.xml._
+import org.apache.esme.model.{Message, User}
/**
* Manage the sitemap and related snippets for the display of users
@@ -58,26 +56,29 @@
bind("disp", in,
"item" ->
(lst => users.flatMap(u => {
- val msg = lastMessage(u.id)
+ val (msg, when) = lastMessage(u)
bind("item", lst,
- "nickname" -> u.nickname,
+ "nickname" -> nicknameWithProfileLink(u),
"firstName" -> u.firstName,
"lastName" -> u.lastName,
"imageUrl" -> profileImage(u.imageUrl),
- "lastMsg" -> msg._1,
- "lastMsgWhen" -> msg._2
+ "lastMsg" -> msg,
+ "lastMsgWhen" -> when
)
}
)))
}
- private def lastMessage(id: Long): Tuple2[String,String] = {
- Mailbox.mostRecentMessagesFor(id, 1) match {
+ private def nicknameWithProfileLink(u: User): NodeSeq = {
+ <a href={"/user/" + urlEncode(u.nickname.is)}>{u.niceName}</a>
+ }
+
+ private val dateFormatter = new SimpleDateFormat("hh:mm a MMM d, yyyy")
+
+ private def lastMessage(user: User): Tuple2[String,String] = {
+ Message.findAll(By(Message.author, user), OrderBy(Message.id, Descending),
MaxRows(1)) match {
case Nil => ("", "")
- case msgs => {
- val msg = msgs(0)._1
- (msg.getText, msg.getWhen.toString)
- }
+ case msg :: _ => (msg.getText, dateFormatter.format(msg.getWhen))
}
}