* * * $Id: CheckOutReviewModule.class.php 457 2008-12-23 20:11:54Z erikwinn $ *@version 0.1 * *@copyright (C) 2008 by Erik Winn *@license GPL v.2 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA * *@package Quasi * @subpackage Modules */ class CheckOutReviewModule extends QPanel { /** *@var CheckOutModule objControlBlock - the main control block for the check out module */ protected $objControlBlock; /** *@var Order objOrder - local reference to the order */ protected $objOrder; /** * @var array CheckOutItems - a list of products as cart items. */ public $aryCheckOutItemViews; /** * @var OrderTotalsView - module to display shipping, handling and total price for order */ public $objOrderTotalsView; /** * @var AddressView objShippingAddressView - display for the shipping address */ public $objShippingAddressView; /** * @var AddressView objBillingAddressView - display for the billing address */ public $objBillingAddressView; /** * @var QPanel pnlPaymentMethod - panel to display information about the selected method */ public $pnlPaymentMethod; /** * @var QPanel pnlShippinggMethod - panel to display information about the selected method */ public $pnlShippingMethod; ///Buttons attached to the address and payment views for callback .. public $btnEditShippingAddress; public $btnEditBillingAddress; public $btnEditShippingMethod; public $btnEditPaymentMethod; /** * Module constructor *@param QPanel pnlParentObject - the DOM parent *@param CheckOutModule objControlBlock - parent controller module. *@param Order objOrder - the Order being reviewed. */ public function __construct( QPanel $pnlParentObject, $objControlBlock, Order $objOrder) { try { parent::__construct($pnlParentObject, 'CheckOutReviewModule'); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } $this->objOrder =& $objOrder; $this->objControlBlock =& $objControlBlock; $this->AutoRenderChildren = true; $this->strTemplate = __QUASI_CORE_TEMPLATES__ . '/CheckOutReviewModule.tpl.php'; $this->init(); } /** * This function is called when the user clicks "Edit" by the Shipping address, it returns the user to the * Shipping information panel. *@param string strFormId - a string representation of the CSS Id for the main form *@param string strControlId - a string representation of the CSS Id for the control calling this function *@param string strParameter - a string containing optionally set parameters */ public function btnEditShippingAddress_Click($strFormId, $strControlId, $strParameter) { $this->objControlBlock->GoBack(CheckOutStage::Shipping); } /** * This function is called when the user clicks "Edit" by the Billing address, it returns the user to the * Billing information panel. *@param string strFormId - a string representation of the CSS Id for the main form *@param string strControlId - a string representation of the CSS Id for the control calling this function *@param string strParameter - a string containing optionally set parameters */ public function btnEditBillingAddress_Click($strFormId, $strControlId, $strParameter) { $this->objControlBlock->GoBack(CheckOutStage::Payment); } protected function init() { $this->aryCheckOutItemViews = array(); //construct the list of items $aryOrderItems = $this->objOrder->GetNewOrderItemsArray(); foreach( $aryOrderItems as $objOrderItem) { $objItemView = new CheckOutItemView( $this, $objOrderItem, false ); $this->aryCheckOutItemViews[] = $objItemView; } $this->objOrderTotalsView = new OrderTotalsView($this, $this->objOrder, false); $this->objShippingAddressView = new AddressView($this, $this->objOrder->ShippingAddressId, 'ShippingAddress: '); $this->objShippingAddressView->CssClass = 'ShippingAddressReview'; $this->objShippingAddressView->AutoRenderChildren = true; $this->objBillingAddressView = new AddressView($this, $this->objOrder->BillingAddressId, 'BillingAddress: '); $this->objBillingAddressView->CssClass = 'BillingAddressReview'; $this->objBillingAddressView->AutoRenderChildren = true; $this->pnlPaymentMethod_Create(); $this->pnlShippingMethod_Create(); $this->btnEditShippingAddress = new QButton($this->objShippingAddressView); $this->btnEditShippingAddress->Text = Quasi::Translate('Edit'); if(IndexPage::$blnAjaxOk) $this->btnEditShippingAddress->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnEditShippingAddress_Click')); else $this->btnEditShippingAddress->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnEditShippingAddress_Click')); $this->btnEditBillingAddress = new QButton($this->objBillingAddressView); $this->btnEditBillingAddress->Text = Quasi::Translate('Edit'); if(IndexPage::$blnAjaxOk) $this->btnEditBillingAddress->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnEditBillingAddress_Click')); else $this->btnEditBillingAddress->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnEditBillingAddress_Click')); } public function RefreshView($objOrder) { $this->RemoveChildControls(true); $this->objOrder = $objOrder; $this->init(); } protected function pnlPaymentMethod_Create() { if($this->objControlBlock->PaymentMethod instanceof PaymentMethod) { $objPaymentMethod = $this->objControlBlock->PaymentMethod; $this->pnlPaymentMethod = new QPanel($this); $this->pnlPaymentMethod->HtmlEntities = false; $this->pnlPaymentMethod->CssClass = 'PaymentMethodReview'; $this->pnlPaymentMethod->AutoRenderChildren = true; $strText = '
' . Quasi::Translate('Payment Method') . ':
' . sprintf( '
%s

%s ', $objPaymentMethod->Title, $objPaymentMethod->Description ); $this->pnlPaymentMethod->Text = $strText; $this->btnEditPaymentMethod = new QButton($this->pnlPaymentMethod); $this->btnEditPaymentMethod->Text = Quasi::Translate('Change'); if(IndexPage::$blnAjaxOk) $this->btnEditPaymentMethod->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnEditBillingAddress_Click')); else $this->btnEditPaymentMethod->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnEditBillingAddress_Click')); } } protected function pnlShippingMethod_Create() { if($this->objControlBlock->ShippingMethod instanceof ShippingMethod) { $objShippingMethod = $this->objControlBlock->ShippingMethod; $this->pnlShippingMethod = new QPanel($this); $this->pnlShippingMethod->HtmlEntities = false; $this->pnlShippingMethod->CssClass = 'ShippingMethodReview'; $this->pnlShippingMethod->AutoRenderChildren = true; $strText = '
' . Quasi::Translate('Shipping Method') . ':
' . sprintf( '
%s

%s ', $objShippingMethod->Title, $objShippingMethod->Description ); $this->pnlShippingMethod->Text = $strText; $this->btnEditShippingMethod = new QButton($this->pnlShippingMethod); $this->btnEditShippingMethod->Text = Quasi::Translate('Change'); if(IndexPage::$blnAjaxOk) $this->btnEditShippingMethod->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnEditShippingAddress_Click')); else $this->btnEditShippingMethod->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnEditShippingAddress_Click')); } } /** * This Function is called when any input is sent - on failure the * fields are redrawn with optional error messages. */ public function Validate() { $blnToReturn = true; // validate input here return $blnToReturn; } public function __get($strName) { switch ($strName) { case 'Order': return $this->objOrder ; default: try { return parent::__get($strName); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } } public function __set($strName, $mixValue) { switch ($strName) { case 'Order': try { return ($this->objOrder = QType::Cast($mixValue, 'Order' )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } default: try { return (parent::__set($strName, $mixValue)); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } } }//end class }//end define ?>