Panel: added optional caption and path
authorTomas Zeman <tzeman@volny.cz>
Sat, 20 Aug 2011 10:43:23 +0200
changeset 21 9026ebb197e2
parent 20 22424e6508cd
child 22 b039b9c22942
Panel: added optional caption and path
src/main/scala/net/tz/lift/snippet/Panel.scala
--- a/src/main/scala/net/tz/lift/snippet/Panel.scala	Wed Aug 17 08:48:43 2011 +0200
+++ b/src/main/scala/net/tz/lift/snippet/Panel.scala	Sat Aug 20 10:43:23 2011 +0200
@@ -15,6 +15,7 @@
  */
 package net.tz.lift.snippet
 
+import net.liftweb.common._
 import net.liftweb.mapper.MappedField
 import scala.xml.{NodeSeq, Text}
 
@@ -60,10 +61,17 @@
  * A panel using template in <code>/templates-hidden/panel</code> for
  * values rendering.
  */
-class TplPanel(cells: List[(NodeSeq, NodeSeq)]) extends CssTr {
+class TplPanel(caption: Box[String], cells: List[(NodeSeq, NodeSeq)],
+  path: Box[List[String]]) extends CssTr {
+
+  def this(cells: List[(NodeSeq, NodeSeq)], p: List[String]) =
+    this(Empty, cells, Full(p))
+  def this(cells: List[(NodeSeq, NodeSeq)]) = this(Empty, cells, Empty)
+
   def apply(in: NodeSeq): NodeSeq = TemplateFinder.findAnyTemplate(
-    List("templates-hidden", "panel")) map { xml =>
-    (".row *" #> cells.map { r =>
+    path.openOr(List("templates-hidden", "panel"))) map { xml =>
+    (".caption *" #> caption &
+      ".row *" #> cells.map { r =>
       ".n *" #> r._1 &
       ".v *" #> r._2
     })(xml)