trait Crudify extends AnyRef
This trait automatically adds CRUD (Create, read, update and delete) operations to an existing persistence mechanism. Various methods can be overridden to customize which operations are available to a user and how things are displayed. For example, you can disable deletion of entities by overriding deleteMenuLoc to Empty.
- Alphabetic
- By Inheritance
- Crudify
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
trait
CrudBridge
extends AnyRef
This trait represents a Bridge between TheCrudType and the Crudify trait.
This trait represents a Bridge between TheCrudType and the Crudify trait. It's not necessary to mix this trait into TheCrudType, but instead provide a mechanism for promoting a TheCrudType to CrudBridge
- Attributes
- protected
-
trait
FieldPointerBridge
extends AnyRef
- Attributes
- protected
-
abstract
type
FieldPointerType
A generic representation of a field.
A generic representation of a field. For example, this represents the abstract "name" field and is used along with an instance of TheCrudType to compute the BaseField that is the "name" field on the specific instance of TheCrudType
-
abstract
type
TheCrudType
The type of records we're manipulating
Abstract Value Members
-
implicit abstract
def
buildBridge(from: TheCrudType): CrudBridge
This method will instantiate a bridge from TheCrudType so that the appropriate logical operations can be performed on TheCrudType
This method will instantiate a bridge from TheCrudType so that the appropriate logical operations can be performed on TheCrudType
- Attributes
- protected
-
implicit abstract
def
buildFieldBridge(from: FieldPointerType): FieldPointerBridge
Based on a FieldPointer, build a FieldPointerBridge
Based on a FieldPointer, build a FieldPointerBridge
- Attributes
- protected
-
abstract
def
calcPrefix: List[String]
What's the prefix for this CRUD.
What's the prefix for this CRUD. Typically the table name.
-
abstract
def
computeFieldFromPointer(instance: TheCrudType, pointer: FieldPointerType): Box[BaseField]
Given an instance of TheCrudType and FieldPointerType, convert that to an actual instance of a BaseField on the instance of TheCrudType
Given an instance of TheCrudType and FieldPointerType, convert that to an actual instance of a BaseField on the instance of TheCrudType
- Attributes
- protected
-
abstract
def
create: TheCrudType
Vend a new instance of TheCrudType
-
abstract
def
fieldsForDisplay: List[FieldPointerType]
When displaying a record, what fields do we display
-
abstract
def
findForList(start: Long, count: Int): List[TheCrudType]
Given a range, find the records.
Given a range, find the records. Your implementation of this method should enforce ordering (e.g., on primary key).
-
abstract
def
findForParam(in: String): Box[TheCrudType]
Given a String that represents the primary key, find an instance of TheCrudType
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- lazy val CreateItem: String
- lazy val DeleteItem: String
- lazy val EditItem: String
- lazy val ListItems: String
- lazy val Prefix: List[String]
- lazy val ViewItem: String
-
def
_createTemplate: Elem
The core template for creating.
The core template for creating. Does not include any page wrapping.
-
def
_deleteTemplate: Elem
The core template for deleting.
The core template for deleting. Does not include any page wrapping.
-
def
_editTemplate: Elem
The core template for editing.
The core template for editing. Does not include any page wrapping.
- Attributes
- protected
-
def
_showAllTemplate: Elem
The core template for showing record.
The core template for showing record. Does not include any page wrapping
-
def
_viewTemplate: Elem
The core template for viewing.
The core template for viewing. Does not include any page wrapping.
-
def
addlMenuLocParams: List[AnyLocParam]
If there are any Loc.LocParams that need to be added to every menu (e.g., a guard for access control of the Crudify screens)
If there are any Loc.LocParams that need to be added to every menu (e.g., a guard for access control of the Crudify screens)
- Attributes
- protected
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
- def calcCreateItem: String
- def calcDeleteItem: String
- def calcEditItem: String
- def calcListItems: String
- def calcViewItem: String
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
- def createButton: String
- def createClass: String
- def createId: String
-
def
createMenuLoc: Box[Menu]
The menu item for creating items (make this "Empty" to disable)
-
def
createMenuLocParams: List[AnyLocParam]
Override to include new Params for the create menu
- def createMenuName: String
- lazy val createPath: List[String]
- lazy val createPathString: String
-
def
createTemplate(): NodeSeq
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper.
-
def
crudAllNext(first: Long, list: List[TheCrudType]): (NodeSeq) ⇒ NodeSeq
Override this method to change how the next link is generated
Override this method to change how the next link is generated
- Attributes
- protected
-
def
crudAllPrev(first: Long): (NodeSeq) ⇒ NodeSeq
Override this method to change how the previous link is generated
Override this method to change how the previous link is generated
- Attributes
- protected
- def crudDoForm(item: TheCrudType, noticeMsg: String)(in: NodeSeq): NodeSeq
-
def
crudyDelete(item: TheCrudType): (NodeSeq) ⇒ NodeSeq
Override this method to change how the delete screen is built
Override this method to change how the delete screen is built
- Attributes
- protected
- def deleteButton: String
- def deleteClass: String
- def deleteId: String
-
def
deleteMenuLoc: Box[Menu]
The menu item for deleting an item (make this "Empty" to disable)
-
def
deleteMenuLocParams: List[LocParam[TheCrudType]]
Override to include new Params for the delete menu
- def deleteMenuName: String
- lazy val deletePath: List[String]
- lazy val deletePathString: String
-
def
deleteTemplate(): NodeSeq
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
- def displayHtml: NodeSeq
- def displayName: String
-
def
displayRecord(entry: TheCrudType): (NodeSeq) ⇒ NodeSeq
Customize the display of records for view menu loc
Customize the display of records for view menu loc
- Attributes
- protected
-
def
doCrudAll: (NodeSeq) ⇒ NodeSeq
Override this method if you want to change the behavior of displaying records via the crud.all snippet
Override this method if you want to change the behavior of displaying records via the crud.all snippet
- Attributes
- protected
-
def
doCrudAllHeaderItems: (NodeSeq) ⇒ NodeSeq
Override this method to customize how header items are treated
Override this method to customize how header items are treated
- Attributes
- protected
-
def
doCrudAllRowItem(c: TheCrudType): (NodeSeq) ⇒ NodeSeq
Override this method to customize how a crudAll line is generated
Override this method to customize how a crudAll line is generated
- Attributes
- protected
-
def
doCrudAllRows(list: List[TheCrudType]): (NodeSeq) ⇒ NodeSeq
Override this method to determine how all the rows on a crud page are displayed
Override this method to determine how all the rows on a crud page are displayed
- Attributes
- protected
-
def
doDeleteFields(item: TheCrudType): (NodeSeq) ⇒ NodeSeq
Override this method to change how fields are displayed for delete
Override this method to change how fields are displayed for delete
- Attributes
- protected
-
def
doDeleteSubmit(item: TheCrudType, from: String)(): Nothing
Override this method to change the behavior of deleting an item
Override this method to change the behavior of deleting an item
- Attributes
- protected
-
def
doDisplayRecordRow(entry: TheCrudType): (NodeSeq) ⇒ NodeSeq
Customize the display of a row for displayRecord
Customize the display of a row for displayRecord
- Attributes
- protected
- def editButton: String
- def editClass: String
- def editErrorClass: String
- def editId: String
-
def
editMenuLoc: Box[Menu]
The menu item for editing an item (make this "Empty" to disable)
-
def
editMenuLocParams: List[LocParam[TheCrudType]]
Override to include new Params for the edit menu
-
def
editMenuName: String
The String displayed for menu editing
- lazy val editPath: List[String]
- lazy val editPathString: String
-
def
editTemplate(): NodeSeq
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
fieldsForEditing: List[FieldPointerType]
The list of fields to present on a form form editing
-
def
fieldsForList: List[FieldPointerType]
The fields displayed on the list page.
The fields displayed on the list page. By default all the displayed fields, but this list can be shortened.
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- lazy val listPath: List[String]
- lazy val listPathString: String
- lazy val locSnippets: DispatchLocSnippets { val dispatch: PartialFunction[String,scala.xml.NodeSeq => scala.xml.NodeSeq] }
- def menus: List[Menu]
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def nextWord: String
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
obscurePrimaryKey(in: String): String
This method can be used to obscure the primary key.
This method can be used to obscure the primary key. This is more secure because end users will not have access to the primary key. This method actually does the obfuscation. You can use Mapper's KeyObfuscator class to implement a nice implementation of this method for session-by-session obfuscation.
By default, there's no obfuscation. Note that if you obfuscate the primary key, you need to update the findForParam method to accept the obfuscated keys (and translate them back.)
-
def
obscurePrimaryKey(in: TheCrudType): String
This method can be used to obscure the primary key.
This method can be used to obscure the primary key. This is more secure because end users will not have access to the primary key.
- def pageWrapper(body: NodeSeq): NodeSeq
- def previousWord: String
- def referer: String
-
def
rowsPerPage: Int
This method defines how many rows are displayed per page.
This method defines how many rows are displayed per page. By default, it's hard coded at 20, but you can make it session specific or change the default by overriding this method.
- Attributes
- protected
- def showAllClass: String
- def showAllId: String
-
def
showAllMenuLoc: Box[Menu]
The menu item for listing items (make this "Empty" to disable)
-
def
showAllMenuLocParams: List[AnyLocParam]
Override to include new Params for the show all menu
- def showAllMenuName: String
-
def
showAllTemplate(): NodeSeq
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
- def viewClass: String
- def viewId: String
-
def
viewMenuLoc: Box[Menu]
The menu item for viewing an item (make this "Empty" to disable)
-
def
viewMenuLocParams: List[LocParam[TheCrudType]]
Override to include new Params for the view menu
- def viewMenuName: String
- lazy val viewPath: List[String]
- lazy val viewPathString: String
-
def
viewTemplate(): NodeSeq
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
wrapNameInRequired(fieldName: NodeSeq, required: Boolean): NodeSeq
As the field names are being displayed for editing, this method is called with the XHTML that will be displayed as the field name and a flag indicating whether the field is required.
As the field names are being displayed for editing, this method is called with the XHTML that will be displayed as the field name and a flag indicating whether the field is required. You can wrap the fieldName in a span with a css class indicating that the field is required or otherwise do something to update the field name indicating to the user that the field is required. By default the method wraps the fieldName in a span with the class attribute set to "required_field".