|
|
- <?php
- /**
- * This is the abstract Panel class for the List All functionality
- * of the Address class. This code-generated class
- * contains a datagrid to display an HTML page that can
- * list a collection of Address objects. It includes
- * functionality to perform pagination and sorting on columns.
- *
- * To take advantage of some (or all) of these control objects, you
- * must create a new QPanel which extends this AddressListPanelBase
- * class.
- *
- * Any and all changes to this file will be overwritten with any subsequent re-
- * code generation.
- *
- * @package Quasi
- * @subpackage Drafts
- *
- */
- class AddressListPanel extends QPanel
- {
-
- protected $strNameToFind;
- protected $objAccount = null;
-
- // Callback Method Names
- protected $strSetEditPanelMethod;
- protected $strCloseEditPanelMethod;
-
- // Local instance of the Meta DataGrid to list Addresses
- public $dtgAddresses;
-
- public $lblMessage;
- public $txtNameSearch;
- public $txtNumberSearch;
-
- // Other public QControls in this panel
- public $btnCreateNew;
- public $pxyEdit;
-
-
- public function __construct($objParentObject, $strSetEditPanelMethod, $strCloseEditPanelMethod, $strControlId = null) {
- // Call the Parent
- try {
- parent::__construct($objParentObject, $strControlId);
- } catch (QCallerException $objExc) {
- $objExc->IncrementOffset();
- throw $objExc;
- }
-
- // Record Method Callbacks
- $this->strSetEditPanelMethod = $strSetEditPanelMethod;
- $this->strCloseEditPanelMethod = $strCloseEditPanelMethod;
-
- // Setup the Template
- $this->Template = 'AddressListPanel.tpl.php';
-
- //messages (eg. Name not found ..)
- $this->lblMessage = new QLabel($this);
-
- // a search field for Address by name ..
- $this->txtNameSearch = new QTextBox($this);
- $this->txtNameSearch->AddAction(new QEnterKeyEvent(), new QServerControlAction($this, 'txtNameSearch_Click'));
- $this->txtNameSearch->Name = 'Search by Name:';
-
- // a search field for Address by account number ..
- $this->txtNumberSearch = new QIntegerTextBox($this);
- $this->txtNumberSearch->AddAction(new QEnterKeyEvent(), new QServerControlAction($this, 'txtNumberSearch_Click'));
- $this->txtNumberSearch->Name = 'Search by Number:';
- $this->txtNumberSearch->CausesValidation = $this->txtNumberSearch;
-
- // Instantiate the Meta DataGrid
- $this->dtgAddresses = new AddressDataGrid($this);
-
- // Style the DataGrid (if desired)
- $this->dtgAddresses->CssClass = 'datagrid';
- $this->dtgAddresses->AlternateRowStyle->CssClass = 'alternate';
- $this->dtgAddresses->SetDataBinder('AddressDataBinder', $this);
-
- // Add Pagination (if desired)
- $this->dtgAddresses->Paginator = new QPaginator($this->dtgAddresses);
- $this->dtgAddresses->ItemsPerPage = 8;
-
- // Use the MetaDataGrid functionality to add Columns for this datagrid
-
- // Create an Edit Column
- $this->pxyEdit = new QControlProxy($this);
- $this->pxyEdit->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'pxyEdit_Click'));
- $this->dtgAddresses->MetaAddEditProxyColumn($this->pxyEdit, 'Edit', 'Edit');
-
- // Create the Other Columns (note that you can use strings for address's properties, or you
- // can traverse down QQN::address() to display fields that are down the hierarchy)
- $this->dtgAddresses->MetaAddColumn('Id');
- $this->dtgAddresses->MetaAddColumn('Title');
- $this->dtgAddresses->MetaAddColumn(QQN::Address()->Person);
- $this->dtgAddresses->MetaAddColumn('Street1');
- $this->dtgAddresses->MetaAddColumn('Street2');
- $this->dtgAddresses->MetaAddColumn('Suburb');
- $this->dtgAddresses->MetaAddColumn('City');
- $this->dtgAddresses->MetaAddColumn('County');
- $this->dtgAddresses->MetaAddTypeColumn('ZoneId', 'ZoneType');
- $this->dtgAddresses->MetaAddTypeColumn('CountryId', 'CountryType');
- $this->dtgAddresses->MetaAddColumn('PostalCode');
- $this->dtgAddresses->MetaAddColumn('IsCurrent');
- $this->dtgAddresses->MetaAddTypeColumn('TypeId', 'AddressType');
- $this->dtgAddresses->MetaAddColumn('CreationDate');
- $this->dtgAddresses->MetaAddColumn('LastModificationDate');
-
- // Setup the Create New button
- $this->btnCreateNew = new QButton($this);
- $this->btnCreateNew->Text = QApplication::Translate('Create a New') . ' ' . QApplication::Translate('Address');
- $this->btnCreateNew->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnCreateNew_Click'));
- }
- public function txtNumberSearch_Click($strFormId, $strControlId, $strParameter)
- {
- $intAccountId = $this->txtNumberSearch->Text;
- if( $this->objAccount = Account::Load($intAccountId) )
- {
- $this->lblMessage->Text = '';
- $this->dtgAddresses->Refresh();
- }
- else
- $this->lblMessage->Text = 'Account ' . $intAccountId . ' not found.';
- }
-
- public function txtNameSearch_Click($strFormId, $strControlId, $strParameter)
- {
- $this->lblMessage->Text = '';
- $this->strNameToFind =$this->txtNameSearch->Text;
- $this->dtgAddresses->Refresh();
- }
- public function AddressDataBinder()
- {
- $aryClauses = array();
- $aryConditions = array();
- $aryPersonIds = array();
- $objCondition = null;
-
- if ($objClause = $this->dtgAddresses->OrderByClause)
- array_push($aryClauses, $objClause);
-
- if ($objClause = $this->dtgAddresses->LimitClause)
- array_push($aryClauses, $objClause);
-
- if($this->strNameToFind)
- {
- $aryNamesToFind = explode(' ', $this->txtNameSearch->Text);
- $aryPersons = array();
- if(sizeof($aryNamesToFind) > 1 )
- {
- $aryPersons = Person::QueryArray(
- QQ::AndCondition(
- QQ::Like(QQN::Person()->FirstName, $aryNamesToFind[0]),
- QQ::Like(QQN::Person()->LastName, $aryNamesToFind[1])
- )
- );
- }
- elseif(sizeof($aryNamesToFind) == 1 )
- {
- $aryPersons = Person::QueryArray(
- QQ::OrCondition(
- QQ::Like(QQN::Person()->FirstName, $this->txtNameSearch->Text),
- QQ::Like(QQN::Person()->LastName, $this->txtNameSearch->Text)
- )
- );
- }
-
- foreach( $aryPersons as $objPerson )
- $aryPersonIds[] = $objPerson->Id;
- }
-
- /* if($this->intAddressStatusId )
- {
- $this->dtgAddresses->TotalItemCount = Address::QueryCount(QQ::Equal(QQN::Address()->StatusId, $this->intAddressStatusId));
- $aryAddresses = Address::QueryArray(QQ::Equal( QQN::Address()->StatusId, $this->intAddressStatusId), $aryClauses );
- }*/
-
- if($this->objAccount )
- {
- $aryPersons = array();
- $aryPersons = Person::QueryArray(
- QQ::OrCondition(
- QQ::Equal(QQN::Person()->Id, $this->objAccount->Person->Id),
- QQ::Equal(QQN::Person()->OwnerPersonId, $this->objAccount->Person->Id)
- )
- );
-
-
- foreach( $aryPersons as $objPerson )
- $aryPersonIds[] = $objPerson->Id;
-
- }
- if( count( $aryPersonIds) )
- $aryConditions[] = QQ::In( QQN::Address()->PersonId, $aryPersonIds);
-
- if(count($aryConditions) > 1)
- $objCondition = QQ::AndCondition($aryConditions);
- elseif(count($aryConditions) == 1)
- $objCondition = $aryConditions[0];
- else
- $objCondition = QQ::All();
-
- $this->dtgAddresses->TotalItemCount = Address::QueryCount($objCondition);
- $aryAddresses = Address::QueryArray($objCondition, $aryClauses );
- $this->dtgAddresses->DataSource = $aryAddresses;
- }
-
- public function pxyEdit_Click($strFormId, $strControlId, $strParameter) {
- $strParameterArray = explode(',', $strParameter);
- $objEditPanel = new AddressEditPanel($this, $this->strCloseEditPanelMethod, $strParameterArray[0]);
-
- $strMethodName = $this->strSetEditPanelMethod;
- $this->objForm->$strMethodName($objEditPanel);
- }
-
- public function btnCreateNew_Click($strFormId, $strControlId, $strParameter) {
- $objEditPanel = new AddressEditPanel($this, $this->strCloseEditPanelMethod, null);
- $strMethodName = $this->strSetEditPanelMethod;
- $this->objForm->$strMethodName($objEditPanel);
- }
- }
- ?>
|