* *@version 0.3 * *@package Quinta * @subpackage View */ class PaymentMethodController extends QPanel{ /** * This is normally the ShippingModule * @var QPanel objControlBlock - the content block to which this module is assigned */ protected $objControlBlock; /** * @var PaymentMethod objPaymentMethod - local reference or instance of some relevant object .. */ protected $objPaymentMethod; /** * @var boolean blnShowDescription - if true, display method description */ protected $blnShowDescription; /** * @var boolean blnShowImage - if true, display method delivery time */ protected $blnShowImage; //Controls .. /** * @var QRadioButton ctlRadioButton - button for selecting this method */ public $ctlRadioButton; /** * @var QLabel lblDescription - label to display the description of the method */ public $lblDescription; /** * @var QLabel lblTitle - label to display the Title of the method */ public $lblTitle; /** * @var QPanel pnlImage - label to display an image for the payment provider */ public $pnlImage; /** * Class constructor * NOTE: The PaymentMethod passed to this view is expected to have already been * initilized with an order and have the rate set *@param QPanel objControlBlock - parent controller object. *@param PaymentMethod objPaymentMethod *@param boolean blnShowDescription - whether to display the description *@param boolean blnShowImage - whether to display the image */ public function __construct( QPanel $objControlBlock, PaymentMethod $objPaymentMethod, $blnShowDescription = true, $blnShowImage = true ) { //Normally assumed to be the PaymentModule $this->objControlBlock =& $objControlBlock; $this->objPaymentMethod =& $objPaymentMethod; $this->blnShowDescription =& $blnShowDescription; $this->blnShowImage =& $blnShowImage; try { parent::__construct($this->objControlBlock); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } $this->strTemplate = __QUINTA_CORE_VIEWS__ . '/PaymentMethodView.tpl.php'; $this->ctlRadioButton = new QRadioButton($this); $this->ctlRadioButton->AddCssClass('MethodRadioButton'); $this->ctlRadioButton->GroupName = "PaymentMethods"; if(IndexPage::$blnAjaxOk) $this->ctlRadioButton->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnSelectMethod_Click')); else $this->ctlRadioButton->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnSelectMethod_Click')); $this->ctlRadioButton->ActionParameter = $objPaymentMethod->Id; $this->lblTitle = new QLabel($this); $this->lblTitle->Text = $objPaymentMethod->Title; if($this->blnShowDescription){ $this->lblDescription = new QLabel($this); $this->lblDescription->CssClass = 'MethodDescription'; $this->lblDescription->HtmlEntities = false; $this->lblDescription->Text = $objPaymentMethod->Description; } if($this->blnShowImage){ $this->pnlImage = new QPanel($this); $this->pnlImage->CssClass = 'MethodImage'; $this->pnlImage->HtmlEntities = false; if( '' != $objPaymentMethod->ImageUri ){ if( false !== strpos( $objPaymentMethod->ImageUri, 'http' ) ) $this->pnlImage->Text = sprintf('', $objPaymentMethod->ImageUri); else{ foreach( array( __QUINTA_LOCAL__ . '/assets/images/', __QUINTA_CONTRIB__ . '/assets/images/', __QUINTA_CORE__ . '/assets/images/') as $strBase ) { $strUri = $strBase . $objPaymentMethod->ImageUri; if( file_exists($strUri) ){ if(false !== strpos( $strBase, 'local/' )) $strRelativeBase = __QUINTA_LOCAL_IMAGES__ . '/'; elseif(false !== strpos( $strBase, 'contrib/' )) $strRelativeBase = __QUINTA_CONTRIB_IMAGES__ . '/'; elseif(false !== strpos( $strBase, 'core/' )) $strRelativeBase = __QUINTA_CORE_IMAGES__ . '/'; else//fall back to QCodo images .. $strRelativeBase = __IMAGE_ASSETS__ . '/'; $strUri = $strRelativeBase . $objPaymentMethod->ImageUri; $this->pnlImage->Text = sprintf('', $strUri); break; } } } } } } public function Validate() { return true; } /** * Called when this method is selected, only takes action if parent is PaymentModule */ public function btnSelectMethod_Click($strFormId, $strControlId, $intMethodId){ if( $this->objControlBlock instanceof PaymentModule ) $this->objControlBlock->SelectMethod($intMethodId); } public function __get($strName){ switch ($strName){ case 'PaymentMethod': return $this->objPaymentMethod ; case 'Checked': case 'Selected': return $this->ctlRadioButton->Checked ; case 'ShowDescription': return $this->blnShowDescription; case 'ShowImage': return $this->blnShowImage; case 'ShowRate': return $this->blnShowRate; default: try { return parent::__get($strName); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } } public function __set($strName, $mixValue){ switch ($strName){ case 'PaymentMethod': try { return ($this->objPaymentMethod = QType::Cast($mixValue, 'PaymentMethod' )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } case 'Checked': case 'Selected': try { return ($this->ctlRadioButton->Checked = QType::Cast($mixValue, QType::Boolean )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } case 'ShowDescription': try { return ($this->blnShowDescription = QType::Cast($mixValue, QType::Boolean )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } case 'ShowImage': try { return ($this->blnShowImage = QType::Cast($mixValue, QType::Boolean )); } 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 ?>