summaryrefslogtreecommitdiff
path: root/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php')
-rw-r--r--framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php77
1 files changed, 76 insertions, 1 deletions
diff --git a/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php b/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php
index 2ac3fe99..62bf351b 100644
--- a/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php
+++ b/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php
@@ -16,7 +16,15 @@
Prado::using('System.Data.ActiveRecord.Scaffold.TScaffoldBase');
/**
- * TScaffoldListView displays instance of Active Record class.
+ * TScaffoldListView displays a list of Active Records.
+ *
+ * The {@link getHeader Header} property is a TRepeater displaying the
+ * Active Record property/field names. The {@link getSort Sort} property
+ * is a drop down list displaying the combination of properties and its possible
+ * ordering. The {@link getPager Pager} property is a TPager control that
+ * determines the number of records display in one page (e.g. Page..
+ *
+ *
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
* @version $Id$
@@ -25,6 +33,9 @@ Prado::using('System.Data.ActiveRecord.Scaffold.TScaffoldBase');
*/
class TScaffoldListView extends TScaffoldBase
{
+ /**
+ * Initialize the sort drop down list in non post back mode (i.e. GET requests).
+ */
public function onLoad($param)
{
parent::onLoad($param);
@@ -32,6 +43,9 @@ class TScaffoldListView extends TScaffoldBase
$this->initializeSort();
}
+ /**
+ * Initialize the sort drop down list and the column names repeater.
+ */
protected function initializeSort()
{
$table = $this->getTableMetaData();
@@ -50,12 +64,18 @@ class TScaffoldListView extends TScaffoldBase
$this->_header->dataBind();
}
+ /**
+ * Loads and display the data.
+ */
public function onPreRender($param)
{
parent::onPreRender($param);
$this->loadRecordData();
}
+ /**
+ * Fetch the records and data bind it to the list.
+ */
protected function loadRecordData()
{
$this->_list->setVirtualItemCount($this->getRecordFinder()->count());
@@ -65,6 +85,9 @@ class TScaffoldListView extends TScaffoldBase
$this->_list->dataBind();
}
+ /**
+ * @return TActiveRecordCriteria sort/search/paging criteria
+ */
protected function getRecordCriteria()
{
$total = $this->_list->getVirtualItemCount();
@@ -81,26 +104,41 @@ class TScaffoldListView extends TScaffoldBase
return $criteria;
}
+ /**
+ * @param string search condition, the SQL string after the WHERE clause.
+ */
public function setSearchCondition($value)
{
$this->setViewState('SearchCondition', $value);
}
+ /**
+ * @param string SQL search condition for list display.
+ */
public function getSearchCondition()
{
return $this->getViewState('SearchCondition');
}
+ /**
+ * @param array search parameters
+ */
public function setSearchParameters($value)
{
$this->setViewState('SearchParameters', TPropertyValue::ensureArray($value),array());
}
+ /**
+ * @return array search parameters
+ */
public function getSearchParameters()
{
return $this->getViewState('SearchParameters', array());
}
+ /**
+ * Continue bubbling the "edit" command, "delete" command is handled in this class.
+ */
public function bubbleEvent($sender, $param)
{
switch(strtolower($param->getCommandName()))
@@ -114,6 +152,9 @@ class TScaffoldListView extends TScaffoldBase
return true;
}
+ /**
+ * Initialize the edit view control form when EditViewID is set.
+ */
protected function initializeEdit($sender, $param)
{
if(($ctrl=$this->getEditViewControl())!==null)
@@ -127,6 +168,9 @@ class TScaffoldListView extends TScaffoldBase
}
}
+ /**
+ * Deletes an Active Record.
+ */
protected function deleteRecord($sender, $param)
{
if($param instanceof TRepeaterCommandEventParameter)
@@ -136,6 +180,9 @@ class TScaffoldListView extends TScaffoldBase
}
}
+ /**
+ * Initialize the default display for each Active Record item.
+ */
protected function listItemCreated($sender, $param)
{
$item = $param->getItem();
@@ -147,6 +194,10 @@ class TScaffoldListView extends TScaffoldBase
}
}
+ /**
+ * Sets the Record primary key to the current repeater item's CustomData.
+ * Binds the inner repeater with properties of the current Active Record.
+ */
protected function populateField($sender, $param)
{
$item = $param->getItem();
@@ -161,45 +212,69 @@ class TScaffoldListView extends TScaffoldBase
}
}
+ /**
+ * Updates repeater page index with the pager new index value.
+ */
protected function pageChanged($sender, $param)
{
$this->_list->setCurrentPageIndex($param->getNewPageIndex());
}
+ /**
+ * @return TRepeater Repeater control for Active Record instances.
+ */
public function getList()
{
$this->ensureChildControls();
return $this->getRegisteredObject('_list');
}
+ /**
+ * @return TPager List pager control.
+ */
public function getPager()
{
$this->ensureChildControls();
return $this->getRegisteredObject('_pager');
}
+ /**
+ * @return TDropDownList Control that displays and controls the record ordering.
+ */
public function getSort()
{
$this->ensureChildControls();
return $this->getRegisteredObject('_sort');
}
+ /**
+ * @return TRepeater Repeater control for record property names.
+ */
public function getHeader()
{
$this->ensureChildControls();
return $this->getRegisteredObject('_header');
}
+ /**
+ * @return string TScaffoldEditView control ID for editing selected Active Record.
+ */
public function getEditViewID()
{
return $this->getViewState('EditViewID');
}
+ /**
+ * @param string TScaffoldEditView control ID for editing selected Active Record.
+ */
public function setEditViewID($value)
{
$this->setViewState('EditViewID', $value);
}
+ /**
+ * @return TScaffoldEditView control for editing selected Active Record, null if EditViewID is not set.
+ */
protected function getEditViewControl()
{
if(($id=$this->getEditViewID())!==null)