# HG changeset patch # User Tomas Zeman # Date 1335528951 -7200 # Node ID ad2fe2f9bac75161fad20091078ccd374635afe2 # Parent c7d21399c726e0454f7face4f0529bb7892d5e80 UserField: link to user diff -r c7d21399c726 -r ad2fe2f9bac7 src/main/scala/fis/aaa/model/UserField.scala --- 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: