1 package net
.dataminer
.view
3 import _root_
.net
.liftweb
.http
._
5 import _root_
.net
.liftweb
.util
._
7 import _root_
.net
.liftweb
.mapper
._
8 import _root_
.scala
.xml
._
9 import _root_
.net
.dataminer
.model
._
11 trait CrudView
[T
<: Mapper
[T
]] extends LiftView
{
12 override def dispatch
= {
13 case "index" => list _
15 protected val metaMapper
: T
with MetaMapper
[T
]
16 protected val columns
: List
[Pair
[NodeSeq
,(T
) => NodeSeq
]]
17 private def listTemplate
:NodeSeq
= TemplateFinder
.findAnyTemplate("templates-hidden" :: "crud" :: "list" :: Nil
) openOr
Text("")
18 private def headers() =
22 "header", chooseTemplate("entities", "headers", listTemplate
),
23 "content" -> header
)})
24 private def values() =
25 metaMapper
.findAll
.flatMap({
27 val values
= columns
.flatMap({
28 case (_
, extractor
) =>
30 "value", chooseTemplate("entity", "value", listTemplate
),
31 "content" -> extractor(entity
))})
33 "entity", chooseTemplate("entities", "values", listTemplate
),
36 private def list(): NodeSeq
=
37 bind("entities", listTemplate
,
38 "headers" -> headers(),