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('LastModification'); // 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); } } ?>