|
|
- <?php
- /**
- * This is a SAMPLE of a custom QControl that you could write. Think of this as a "starting point".
- * Remember: EVERYTHING here is meant to be customized! To use, simply make a copy of this file,
- * rename the file, and edit the renamed file. Remember to specify a control Class name which matches the
- * name of your file. And then implement your own logic for GetControlHtml().
- *
- * Additionally, you can add customizable logic for any or all of the following, as well:
- * - __construct()
- * - ParsePostData()
- * - Validate()
- * - GetEndScript()
- * - GetEndHtml()
- */
- class QSampleControl extends QControl {
- protected $intExample;
- protected $strFoo;
-
- /**
- * If this control needs to update itself from the $_POST data, the logic to do so
- * will be performed in this method.
- */
- public function ParsePostData() {}
-
- /**
- * If this control has validation rules, the logic to do so
- * will be performed in this method.
- * @return boolean
- */
- public function Validate() {return true;}
-
- /**
- * Get the HTML for this Control.
- * @return string
- */
- public function GetControlHtml() {
- // Pull any Attributes
- $strAttributes = $this->GetAttributes();
-
- // Pull any styles
- if ($strStyle = $this->GetStyleAttributes())
- $strStyle = 'style="' . $strStyle . '"';
-
- // Return the HTML.
- return sprintf('<span id="%s" %s%s>Sample Control: %s - %s</span>',
- $this->strControlId, $strAttributes, $strStyle, $this->intExample, $this->strFoo);
- }
-
- /**
- * Constructor for this control
- * @param mixed $objParentObject Parent QForm or QControl that is responsible for rendering this control
- * @param string $strControlId optional control ID
- */
- public function __construct($objParentObject, $strControlId = null) {
- try {
- parent::__construct($objParentObject, $strControlId);
- } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; }
-
- // Setup Control-specific CSS and JS files to be loaded
- // Paths are relative to the __CSS_ASSETS__ and __JS_ASSETS__ directories
- // Multiple files can be specified, as well, by separating with a comma
- // $this->strJavaScripts = 'custom.js, ../path/to/prototype.js, etc.js';
- // $this->strStyleSheets = 'custom.css';
-
- // Additional Setup Performed here
- $this->intExample = 28;
- $this->strFoo = 'Hello!';
- }
-
- // For any JavaScript calls that need to be made whenever this control is rendered or re-rendered
- // public function GetEndScript() {
- // $strToReturn = parent::GetEndScript();
- // return $strToReturn;
- // }
-
- // For any HTML code that needs to be rendered at the END of the QForm when this control is INITIALLY rendered.
- // public function GetEndHtml() {
- // $strToReturn = parent::GetEndHtml();
- // return $strToReturn;
- // }
-
- /////////////////////////
- // Public Properties: GET
- /////////////////////////
- public function __get($strName) {
- switch ($strName) {
- case 'Example': return $this->intExample;
- case 'Foo': return $this->strFoo;
-
- default:
- try {
- return parent::__get($strName);
- } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; }
- }
- }
-
- /////////////////////////
- // Public Properties: SET
- /////////////////////////
- public function __set($strName, $mixValue) {
- $this->blnModified = true;
-
- switch ($strName) {
-
- case 'Example':
- try {
- return ($this->intExample = QType::Cast($mixValue, QType::Integer));
- } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; }
- case 'Foo':
- try {
- return ($this->strFoo = QType::Cast($mixValue, QType::String));
- } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; }
-
- default:
- try {
- return (parent::__set($strName, $mixValue));
- } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; }
- }
- }
- }
- ?>
|