--- a/src/main/scala/fis/aaa/model/UserField.scala Fri Apr 27 12:04:35 2012 +0200
+++ b/src/main/scala/fis/aaa/model/UserField.scala Fri Apr 27 14:15:51 2012 +0200
@@ -15,10 +15,11 @@
*/
package fis.aaa.model
+import fis.base.ui.EntityLink
import net.liftweb.common._
import net.liftweb.common.Box._
import net.liftweb.http.SHtml
-import net.liftweb.record.{LifecycleCallbacks, Record}
+import net.liftweb.record.{BaseField, LifecycleCallbacks, Record}
import net.liftweb.record.field.{OptionalLongField, LongField}
import net.liftweb.util.Vendor
import net.tz.lift.model._
@@ -29,9 +30,8 @@
* User field.
*/
class UserField[T <: Record[T]](own: T, l: Vendor[Iterable[User]],
- u: Vendor[Long => Box[User]]) extends LongField(own) {
+ u: Vendor[Long => Box[User]]) extends LongField(own) with UserDisplay {
- override def asHtml = user.dmap(NodeSeq.Empty)(_.name.asHtml)
override def toForm = Full(SHtml.selectObj[Long](
l() map { u => (u.id, u.name.get) } toSeq, valueBox, set(_)))
def user: Box[User] = u()(get)
@@ -41,9 +41,9 @@
* Optional user field.
*/
class OptionalUserField[T <: Record[T]](own: T, l: Vendor[Iterable[User]],
- u: Vendor[Long => Box[User]]) extends OptionalLongField(own) {
+ u: Vendor[Long => Box[User]]) extends OptionalLongField(own) with
+ UserDisplay {
- override def asHtml = user.dmap(NodeSeq.Empty)(_.name.asHtml)
override def toForm = Full(SHtml.selectObj[Box[Long]](
(Empty, emptyLabel) +: (l() map { u => (Full(u.id), u.name.get) } toSeq),
Full(valueBox), setBox(_)))
@@ -56,9 +56,8 @@
*/
class CreatedByField[T <: Record[T]](own: T, cur: Vendor[Box[User]],
u: Vendor[Long => Box[User]]) extends OptionalLongField(own) with
- LifecycleCallbacks {
+ UserDisplay with LifecycleCallbacks {
- override def asHtml = user.dmap(NodeSeq.Empty)(_.name.asHtml)
override def defaultValue = cur().dmap(super.defaultValue)(_.id)
override def displayName = l10n(name)
override def beforeCreate {
@@ -72,9 +71,8 @@
*/
class UpdatedByField[T <: Record[T]](own: T, cur: Vendor[Box[User]],
u: Vendor[Long => Box[User]]) extends OptionalLongField(own) with
- LifecycleCallbacks {
+ UserDisplay with LifecycleCallbacks {
- override def asHtml = user.dmap(NodeSeq.Empty)(_.name.asHtml)
override def defaultValue = cur().dmap(super.defaultValue)(_.id)
override def beforeSave {
set(cur().map { _.id })
@@ -103,4 +101,13 @@
override def defaultValue: Long = User.get.map(_.id).getOrElse(0L)
}
+trait UserDisplay extends BaseField {
+ def user: Box[User]
+
+ override def asHtml = (for {
+ u <- user
+ l <- EntityLink(u) or Full(u.name)
+ } yield l.asHtml) openOr NodeSeq.Empty
+}
+
// vim: set ts=2 sw=2 et: