SiteEditPage - silverorange/site GitHub Wiki
This page contains the specifications for a generic edit page that provides database transactions for queries, and convenience methods for manipulating SwatDBDataObject objects.
Helper Methods
abstract isNew()
- used to tell whether to set the widget values on page load from an existing object
getForms()
- gets descendant SwatForm widgets from the UI
Init Phase
init()
- loads UI from XML
- initializes the UI
initInternal()
- sets action of forms (
$this->getForms()
) action to$this->source
. - called after UI is loaded from XML
- called before
$ui->init();
- sets action of forms (
Process Phase
process()
- authenticates by calling
authenticate()
- adds the
getInvalidMessage()
to the message display ifisValid()
returns false - calls
save()
and thenrelocate()
- authenticates by calling
authenticate()
- authenticates form (
$form->isAuthenticated()
- adds a message to the message display if not authenticated
- authenticates form (
validate()
- empty by default
- allows adding messages to form widgets
isValid()
- default returns
!form->hasMessage()
- allows returning false to invalidate the form
- default returns
abstract save()
- saves to db in SiteDBEditPage or to something else in subclasses.
- in SiteDBEditPage, performs a database transaction around whole of saveData and rolls-back with a message on error
- updates dataobject properties
- optionally call convenience
assignUiValueToObject()
- sets a message about saving the item
- saves the dataobject
abstract saveData()
- only In SiteDBEditPage, wrapped in transaction version of
save()
- updates dataobject properties
- optionally call convenience
assignUiValueToObject()
- sets a message about saving the item
- saves the dataobject
- only In SiteDBEditPage, wrapped in transaction version of
abstract relocate()
- has no default implementation
- allows relocating after saving
assignUiValuesToObject()
- convenience method for working with data-objects
- takes an array of widget names and maps the widget values to dataobject properties
- automatically does date time-zone conversion based on the site default-time-zone
- automatically sets internal properties for sub-dataobjects
- custom widget values can be handled manually in the
save()
/saveData()
methods
Build Phase
build()
- builds title
- builds navbar
- captures UI display for 'content'
buildInternal()
- attaches
$this->app->messages
to a the message display - allows subclasses to do additional building before content is captured
- attaches
buildTitle()
- empty by default
- allows setting frame titles, page titles, etc.
abstract load()
- like
save()
- 'loads' form UI values for the page
- usually calls
assignObjectValuesToUi()
- like
assignObjectValuesToUi()
- like
assignUiValuesToObject()
- convenience method to set UI values
- also converts dates to the application time zone
- like
Finalize Phase
finalize()
- adds UI head entries to layout
Notes and Ideas
- there will be two pages, SiteEditPage and SiteDBEditPage. One works without a database (for saving to the session for example)
- pages support multiple forms. Only the submitted form is processed.
- AdminEdit supports generating/verifying shortnames, useful?