From 903ae8a581fac1e6917fc3e31d2ad8fb91df80c3 Mon Sep 17 00:00:00 2001 From: ctrlaltca <> Date: Thu, 12 Jul 2012 11:21:01 +0000 Subject: standardize the use of unix eol; use svn properties to enforce native eol --- framework/Web/UI/WebControls/TCheckBoxList.php | 998 ++++++++++++------------- 1 file changed, 499 insertions(+), 499 deletions(-) (limited to 'framework/Web/UI/WebControls/TCheckBoxList.php') diff --git a/framework/Web/UI/WebControls/TCheckBoxList.php b/framework/Web/UI/WebControls/TCheckBoxList.php index 2f938174..3c298a02 100644 --- a/framework/Web/UI/WebControls/TCheckBoxList.php +++ b/framework/Web/UI/WebControls/TCheckBoxList.php @@ -1,499 +1,499 @@ - - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2012 PradoSoft - * @license http://www.pradosoft.com/license/ - * @version $Id$ - * @package System.Web.UI.WebControls - */ - -/** - * Includes TListControl class - */ -Prado::using('System.Web.UI.WebControls.TListControl'); -/** - * Includes TRepeatInfo class - */ -Prado::using('System.Web.UI.WebControls.TRepeatInfo'); -/** - * Includes TCheckBox class - */ -Prado::using('System.Web.UI.WebControls.TCheckBox'); - -/** - * TCheckBoxList class - * - * TCheckBoxList displays a list of checkboxes on a Web page. - * - * The layout of the checkbox list is specified via {@link setRepeatLayout RepeatLayout}, - * which can be either 'Table' (default) or 'Flow'. - * A table layout uses HTML table cells to organize the checkboxes while - * a flow layout uses line breaks to organize the checkboxes. - * When the layout is using 'Table', {@link setCellPadding CellPadding} and - * {@link setCellSpacing CellSpacing} can be used to adjust the cellpadding and - * cellpadding of the table. - * - * The number of columns used to display the checkboxes is specified via - * {@link setRepeatColumns RepeatColumns} property, while the {@link setRepeatDirection RepeatDirection} - * governs the order of the items being rendered. - * - * The alignment of the text besides each checkbox can be specified via {@link setTextAlign TextAlign}. - * - * @author Qiang Xue - * @version $Id$ - * @package System.Web.UI.WebControls - * @since 3.0 - */ -class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingContainer, IPostBackDataHandler, IValidatable -{ - private $_repeatedControl; - private $_isEnabled; - private $_changedEventRaised=false; - private $_dataChanged=false; - private $_isValid=true; - - /** - * Constructor. - * Remember to call parent implementation if you override this method - */ - public function __construct() - { - parent::__construct(); - $this->_repeatedControl=$this->createRepeatedControl(); - $this->_repeatedControl->setEnableViewState(false); - $this->_repeatedControl->setID('c0'); - $this->getControls()->add($this->_repeatedControl); - } - - /** - * Creates a control used for repetition (used as a template). - * @return TControl the control to be repeated - */ - protected function createRepeatedControl() - { - return new TCheckBox; - } - - /** - * Finds a control by ID. - * This method overrides the parent implementation so that it always returns - * the checkbox list itself (because the checkbox list does not have child controls.) - * @param string control ID - * @return TControl control being found - */ - public function findControl($id) - { - return $this; - } - - /** - * @return boolean whether this control supports multiple selection. Always true for checkbox list. - */ - protected function getIsMultiSelect() - { - return true; - } - - /** - * Creates a style object for the control. - * This method creates a {@link TTableStyle} to be used by checkbox list. - * @return TStyle control style to be used - */ - protected function createStyle() - { - return new TTableStyle; - } - - /** - * @return TTextAlign the alignment of the text caption, defaults to TTextAlign::Right. - */ - public function getTextAlign() - { - return $this->getViewState('TextAlign',TTextAlign::Right); - } - - /** - * @param TTextAlign the text alignment of the checkboxes - */ - public function setTextAlign($value) - { - $this->setViewState('TextAlign',TPropertyValue::ensureEnum($value,'TTextAlign'),TTextAlign::Right); - } - - - /** - * @return TRepeatInfo repeat information (primarily used by control developers) - */ - protected function getRepeatInfo() - { - if(($repeatInfo=$this->getViewState('RepeatInfo',null))===null) - { - $repeatInfo=new TRepeatInfo; - $this->setViewState('RepeatInfo',$repeatInfo,null); - } - return $repeatInfo; - } - - /** - * @return integer the number of columns that the list should be displayed with. Defaults to 0 meaning not set. - */ - public function getRepeatColumns() - { - return $this->getRepeatInfo()->getRepeatColumns(); - } - - /** - * @param integer the number of columns that the list should be displayed with. - */ - public function setRepeatColumns($value) - { - $this->getRepeatInfo()->setRepeatColumns($value); - } - - /** - * @return string the direction of traversing the list, defaults to 'Vertical' - */ - public function getRepeatDirection() - { - return $this->getRepeatInfo()->getRepeatDirection(); - } - - /** - * @param string the direction (Vertical, Horizontal) of traversing the list - */ - public function setRepeatDirection($value) - { - $this->getRepeatInfo()->setRepeatDirection($value); - } - - /** - * @return string how the list should be displayed, using table or using line breaks. Defaults to 'Table'. - */ - public function getRepeatLayout() - { - return $this->getRepeatInfo()->getRepeatLayout(); - } - - /** - * @param string how the list should be displayed, using table or using line breaks (Table, Flow) - */ - public function setRepeatLayout($value) - { - $this->getRepeatInfo()->setRepeatLayout($value); - } - - /** - * @return integer the cellspacing for the table keeping the checkbox list. Defaults to -1, meaning not set. - */ - public function getCellSpacing() - { - if($this->getHasStyle()) - return $this->getStyle()->getCellSpacing(); - else - return -1; - } - - /** - * Sets the cellspacing for the table keeping the checkbox list. - * @param integer the cellspacing for the table keeping the checkbox list. - */ - public function setCellSpacing($value) - { - $this->getStyle()->setCellSpacing($value); - } - - /** - * @return integer the cellpadding for the table keeping the checkbox list. Defaults to -1, meaning not set. - */ - public function getCellPadding() - { - if($this->getHasStyle()) - return $this->getStyle()->getCellPadding(); - else - return -1; - } - - /** - * Sets the cellpadding for the table keeping the checkbox list. - * @param integer the cellpadding for the table keeping the checkbox list. - */ - public function setCellPadding($value) - { - $this->getStyle()->setCellPadding($value); - } - - /** - * Returns a value indicating whether this control contains header item. - * This method is required by {@link IRepeatInfoUser} interface. - * @return boolean always false. - */ - public function getHasHeader() - { - return false; - } - - /** - * Returns a value indicating whether this control contains footer item. - * This method is required by {@link IRepeatInfoUser} interface. - * @return boolean always false. - */ - public function getHasFooter() - { - return false; - } - - /** - * Returns a value indicating whether this control contains separator items. - * This method is required by {@link IRepeatInfoUser} interface. - * @return boolean always false. - */ - public function getHasSeparators() - { - return false; - } - - /** - * @param boolean whether the control is to be enabled. - */ - public function setEnabled($value) - { - parent::setEnabled($value); - $value = !TPropertyValue::ensureBoolean($value); - // if this is an active control, - // and it's a callback, - // and we can update clientside, - // then update the 'disabled' attribute of the items. - if(($this instanceof IActiveControl) && - $this->getPage()->getIsCallBack() && - $this->getActiveControl()->canUpdateClientSide()) - { - $items = $this->getItems(); - $cs = $this->getPage()->getCallbackClient(); - $baseClientID = $this->getClientID().'_c'; - foreach($items as $index=>$item) - { - $cs->setAttribute($baseClientID.$index, 'disabled', $value); - } - } - } - - /** - * Returns a style used for rendering items. - * This method is required by {@link IRepeatInfoUser} interface. - * @param string item type (Header,Footer,Item,AlternatingItem,SelectedItem,EditItem,Separator,Pager) - * @param integer index of the item being rendered - * @return null - */ - public function generateItemStyle($itemType,$index) - { - return null; - } - - /** - * Renders an item in the list. - * This method is required by {@link IRepeatInfoUser} interface. - * @param THtmlWriter writer for rendering purpose - * @param TRepeatInfo repeat information - * @param string item type (Header,Footer,Item,AlternatingItem,SelectedItem,EditItem,Separator,Pager) - * @param integer zero-based index of the item in the item list - */ - public function renderItem($writer,$repeatInfo,$itemType,$index) - { - $repeatedControl=$this->_repeatedControl; - $item=$this->getItems()->itemAt($index); - if($item->getHasAttributes()) - $repeatedControl->getAttributes()->copyFrom($item->getAttributes()); - else if($repeatedControl->getHasAttributes()) - $repeatedControl->getAttributes()->clear(); - $repeatedControl->setID("c$index"); - $repeatedControl->setText($item->getText()); - $repeatedControl->setChecked($item->getSelected()); - $repeatedControl->setAttribute('value',$item->getValue()); - $repeatedControl->setEnabled($this->_isEnabled && $item->getEnabled()); - $repeatedControl->setEnableClientScript(false); - $repeatedControl->renderControl($writer); - } - - /** - * Loads user input data. - * This method is primarly used by framework developers. - * @param string the key that can be used to retrieve data from the input data collection - * @param array the input data collection - * @return boolean whether the data of the control has been changed - */ - public function loadPostData($key,$values) - { - if($this->getEnabled(true)) - { - $index=(int)substr($key,strlen($this->getUniqueID())+2); - $this->ensureDataBound(); - if($index>=0 && $index<$this->getItemCount()) - { - $item=$this->getItems()->itemAt($index); - if($item->getEnabled()) - { - $checked=isset($values[$key]); - if($item->getSelected()!==$checked) - { - $item->setSelected($checked); - if(!$this->_changedEventRaised) - { - $this->_changedEventRaised=true; - return $this->_dataChanged=true; - } - } - } - } - } - return false; - } - - /** - * Raises postdata changed event. - * This method is required by {@link IPostBackDataHandler} interface. - * It is invoked by the framework when {@link getSelectedIndices SelectedIndices} property - * is changed on postback. - * This method is primarly used by framework developers. - */ - public function raisePostDataChangedEvent() - { - if($this->getAutoPostBack() && $this->getCausesValidation()) - $this->getPage()->validate($this->getValidationGroup()); - $this->onSelectedIndexChanged(null); - } - - /** - * Registers for post data on postback. - * This method overrides the parent implementation. - * @param mixed event parameter - */ - public function onPreRender($param) - { - parent::onPreRender($param); - $this->_repeatedControl->setAutoPostBack($this->getAutoPostBack()); - $this->_repeatedControl->setCausesValidation($this->getCausesValidation()); - $this->_repeatedControl->setValidationGroup($this->getValidationGroup()); - $page=$this->getPage(); - $n=$this->getItemCount(); - for($i=0;$i<$n;++$i) - { - $this->_repeatedControl->setID("c$i"); - $page->registerRequiresPostData($this->_repeatedControl); - } - } - - /** - * Wether the list should be rendered inside a span or not - * - *@return boolean true if we need a span - */ - protected function getSpanNeeded () - { - return $this->getRepeatLayout()===TRepeatLayout::Raw; - } - - /** - * Renders the checkbox list control. - * This method overrides the parent implementation. - * @param THtmlWriter writer for rendering purpose. - */ - public function render($writer) - { - if($this->getItemCount()>0) - { - if ($needSpan=$this->getSpanNeeded()) - { - $writer->addAttribute('id', $this->getClientId()); - $writer->renderBeginTag('span'); - } - $this->_isEnabled=$this->getEnabled(true); - $repeatInfo=$this->getRepeatInfo(); - $accessKey=$this->getAccessKey(); - $tabIndex=$this->getTabIndex(); - $this->_repeatedControl->setTextAlign($this->getTextAlign()); - $this->_repeatedControl->setAccessKey($accessKey); - $this->_repeatedControl->setTabIndex($tabIndex); - $this->setAccessKey(''); - $this->setTabIndex(0); - $repeatInfo->renderRepeater($writer,$this); - $this->setAccessKey($accessKey); - $this->setTabIndex($tabIndex); - if ($needSpan) - $writer->renderEndTag(); - } - //checkbox skipped the client control script in addAttributesToRender - if($this->getEnabled(true) - && $this->getEnableClientScript() - && $this->getAutoPostBack() - && $this->getPage()->getClientSupportsJavaScript()) - { - $this->renderClientControlScript($writer); - } - } - - /** - * Returns a value indicating whether postback has caused the control data change. - * This method is required by the IPostBackDataHandler interface. - * @return boolean whether postback has caused the control data change. False if the page is not in postback mode. - */ - public function getDataChanged() - { - return $this->_dataChanged; - } - - /** - * Returns the value to be validated. - * This methid is required by IValidatable interface. - * @return mixed the value of the property to be validated. - */ - public function getValidationPropertyValue() - { - return $this->getSelectedValue(); - } - - /** - * Returns true if this control validated successfully. - * Defaults to true. - * @return bool wether this control validated successfully. - */ - public function getIsValid() - { - return $this->_isValid; - } - /** - * @param bool wether this control is valid. - */ - public function setIsValid($value) - { - $this->_isValid=TPropertyValue::ensureBoolean($value); - } - - /** - * Gets the name of the javascript class responsible for performing postback for this control. - * This method overrides the parent implementation. - * @return string the javascript class name - */ - protected function getClientClassName() - { - return 'Prado.WebUI.TCheckBoxList'; - } - - /** - * Gets the post back options for this checkbox. - * @return array - */ - protected function getPostBackOptions() - { - $options['ListID'] = $this->getClientID(); - $options['ValidationGroup'] = $this->getValidationGroup(); - $options['CausesValidation'] = $this->getCausesValidation(); - $options['ListName'] = $this->getUniqueID(); - $options['ItemCount'] = $this->getItemCount(); - return $options; - } - -} - + + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2012 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Id$ + * @package System.Web.UI.WebControls + */ + +/** + * Includes TListControl class + */ +Prado::using('System.Web.UI.WebControls.TListControl'); +/** + * Includes TRepeatInfo class + */ +Prado::using('System.Web.UI.WebControls.TRepeatInfo'); +/** + * Includes TCheckBox class + */ +Prado::using('System.Web.UI.WebControls.TCheckBox'); + +/** + * TCheckBoxList class + * + * TCheckBoxList displays a list of checkboxes on a Web page. + * + * The layout of the checkbox list is specified via {@link setRepeatLayout RepeatLayout}, + * which can be either 'Table' (default) or 'Flow'. + * A table layout uses HTML table cells to organize the checkboxes while + * a flow layout uses line breaks to organize the checkboxes. + * When the layout is using 'Table', {@link setCellPadding CellPadding} and + * {@link setCellSpacing CellSpacing} can be used to adjust the cellpadding and + * cellpadding of the table. + * + * The number of columns used to display the checkboxes is specified via + * {@link setRepeatColumns RepeatColumns} property, while the {@link setRepeatDirection RepeatDirection} + * governs the order of the items being rendered. + * + * The alignment of the text besides each checkbox can be specified via {@link setTextAlign TextAlign}. + * + * @author Qiang Xue + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0 + */ +class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingContainer, IPostBackDataHandler, IValidatable +{ + private $_repeatedControl; + private $_isEnabled; + private $_changedEventRaised=false; + private $_dataChanged=false; + private $_isValid=true; + + /** + * Constructor. + * Remember to call parent implementation if you override this method + */ + public function __construct() + { + parent::__construct(); + $this->_repeatedControl=$this->createRepeatedControl(); + $this->_repeatedControl->setEnableViewState(false); + $this->_repeatedControl->setID('c0'); + $this->getControls()->add($this->_repeatedControl); + } + + /** + * Creates a control used for repetition (used as a template). + * @return TControl the control to be repeated + */ + protected function createRepeatedControl() + { + return new TCheckBox; + } + + /** + * Finds a control by ID. + * This method overrides the parent implementation so that it always returns + * the checkbox list itself (because the checkbox list does not have child controls.) + * @param string control ID + * @return TControl control being found + */ + public function findControl($id) + { + return $this; + } + + /** + * @return boolean whether this control supports multiple selection. Always true for checkbox list. + */ + protected function getIsMultiSelect() + { + return true; + } + + /** + * Creates a style object for the control. + * This method creates a {@link TTableStyle} to be used by checkbox list. + * @return TStyle control style to be used + */ + protected function createStyle() + { + return new TTableStyle; + } + + /** + * @return TTextAlign the alignment of the text caption, defaults to TTextAlign::Right. + */ + public function getTextAlign() + { + return $this->getViewState('TextAlign',TTextAlign::Right); + } + + /** + * @param TTextAlign the text alignment of the checkboxes + */ + public function setTextAlign($value) + { + $this->setViewState('TextAlign',TPropertyValue::ensureEnum($value,'TTextAlign'),TTextAlign::Right); + } + + + /** + * @return TRepeatInfo repeat information (primarily used by control developers) + */ + protected function getRepeatInfo() + { + if(($repeatInfo=$this->getViewState('RepeatInfo',null))===null) + { + $repeatInfo=new TRepeatInfo; + $this->setViewState('RepeatInfo',$repeatInfo,null); + } + return $repeatInfo; + } + + /** + * @return integer the number of columns that the list should be displayed with. Defaults to 0 meaning not set. + */ + public function getRepeatColumns() + { + return $this->getRepeatInfo()->getRepeatColumns(); + } + + /** + * @param integer the number of columns that the list should be displayed with. + */ + public function setRepeatColumns($value) + { + $this->getRepeatInfo()->setRepeatColumns($value); + } + + /** + * @return string the direction of traversing the list, defaults to 'Vertical' + */ + public function getRepeatDirection() + { + return $this->getRepeatInfo()->getRepeatDirection(); + } + + /** + * @param string the direction (Vertical, Horizontal) of traversing the list + */ + public function setRepeatDirection($value) + { + $this->getRepeatInfo()->setRepeatDirection($value); + } + + /** + * @return string how the list should be displayed, using table or using line breaks. Defaults to 'Table'. + */ + public function getRepeatLayout() + { + return $this->getRepeatInfo()->getRepeatLayout(); + } + + /** + * @param string how the list should be displayed, using table or using line breaks (Table, Flow) + */ + public function setRepeatLayout($value) + { + $this->getRepeatInfo()->setRepeatLayout($value); + } + + /** + * @return integer the cellspacing for the table keeping the checkbox list. Defaults to -1, meaning not set. + */ + public function getCellSpacing() + { + if($this->getHasStyle()) + return $this->getStyle()->getCellSpacing(); + else + return -1; + } + + /** + * Sets the cellspacing for the table keeping the checkbox list. + * @param integer the cellspacing for the table keeping the checkbox list. + */ + public function setCellSpacing($value) + { + $this->getStyle()->setCellSpacing($value); + } + + /** + * @return integer the cellpadding for the table keeping the checkbox list. Defaults to -1, meaning not set. + */ + public function getCellPadding() + { + if($this->getHasStyle()) + return $this->getStyle()->getCellPadding(); + else + return -1; + } + + /** + * Sets the cellpadding for the table keeping the checkbox list. + * @param integer the cellpadding for the table keeping the checkbox list. + */ + public function setCellPadding($value) + { + $this->getStyle()->setCellPadding($value); + } + + /** + * Returns a value indicating whether this control contains header item. + * This method is required by {@link IRepeatInfoUser} interface. + * @return boolean always false. + */ + public function getHasHeader() + { + return false; + } + + /** + * Returns a value indicating whether this control contains footer item. + * This method is required by {@link IRepeatInfoUser} interface. + * @return boolean always false. + */ + public function getHasFooter() + { + return false; + } + + /** + * Returns a value indicating whether this control contains separator items. + * This method is required by {@link IRepeatInfoUser} interface. + * @return boolean always false. + */ + public function getHasSeparators() + { + return false; + } + + /** + * @param boolean whether the control is to be enabled. + */ + public function setEnabled($value) + { + parent::setEnabled($value); + $value = !TPropertyValue::ensureBoolean($value); + // if this is an active control, + // and it's a callback, + // and we can update clientside, + // then update the 'disabled' attribute of the items. + if(($this instanceof IActiveControl) && + $this->getPage()->getIsCallBack() && + $this->getActiveControl()->canUpdateClientSide()) + { + $items = $this->getItems(); + $cs = $this->getPage()->getCallbackClient(); + $baseClientID = $this->getClientID().'_c'; + foreach($items as $index=>$item) + { + $cs->setAttribute($baseClientID.$index, 'disabled', $value); + } + } + } + + /** + * Returns a style used for rendering items. + * This method is required by {@link IRepeatInfoUser} interface. + * @param string item type (Header,Footer,Item,AlternatingItem,SelectedItem,EditItem,Separator,Pager) + * @param integer index of the item being rendered + * @return null + */ + public function generateItemStyle($itemType,$index) + { + return null; + } + + /** + * Renders an item in the list. + * This method is required by {@link IRepeatInfoUser} interface. + * @param THtmlWriter writer for rendering purpose + * @param TRepeatInfo repeat information + * @param string item type (Header,Footer,Item,AlternatingItem,SelectedItem,EditItem,Separator,Pager) + * @param integer zero-based index of the item in the item list + */ + public function renderItem($writer,$repeatInfo,$itemType,$index) + { + $repeatedControl=$this->_repeatedControl; + $item=$this->getItems()->itemAt($index); + if($item->getHasAttributes()) + $repeatedControl->getAttributes()->copyFrom($item->getAttributes()); + else if($repeatedControl->getHasAttributes()) + $repeatedControl->getAttributes()->clear(); + $repeatedControl->setID("c$index"); + $repeatedControl->setText($item->getText()); + $repeatedControl->setChecked($item->getSelected()); + $repeatedControl->setAttribute('value',$item->getValue()); + $repeatedControl->setEnabled($this->_isEnabled && $item->getEnabled()); + $repeatedControl->setEnableClientScript(false); + $repeatedControl->renderControl($writer); + } + + /** + * Loads user input data. + * This method is primarly used by framework developers. + * @param string the key that can be used to retrieve data from the input data collection + * @param array the input data collection + * @return boolean whether the data of the control has been changed + */ + public function loadPostData($key,$values) + { + if($this->getEnabled(true)) + { + $index=(int)substr($key,strlen($this->getUniqueID())+2); + $this->ensureDataBound(); + if($index>=0 && $index<$this->getItemCount()) + { + $item=$this->getItems()->itemAt($index); + if($item->getEnabled()) + { + $checked=isset($values[$key]); + if($item->getSelected()!==$checked) + { + $item->setSelected($checked); + if(!$this->_changedEventRaised) + { + $this->_changedEventRaised=true; + return $this->_dataChanged=true; + } + } + } + } + } + return false; + } + + /** + * Raises postdata changed event. + * This method is required by {@link IPostBackDataHandler} interface. + * It is invoked by the framework when {@link getSelectedIndices SelectedIndices} property + * is changed on postback. + * This method is primarly used by framework developers. + */ + public function raisePostDataChangedEvent() + { + if($this->getAutoPostBack() && $this->getCausesValidation()) + $this->getPage()->validate($this->getValidationGroup()); + $this->onSelectedIndexChanged(null); + } + + /** + * Registers for post data on postback. + * This method overrides the parent implementation. + * @param mixed event parameter + */ + public function onPreRender($param) + { + parent::onPreRender($param); + $this->_repeatedControl->setAutoPostBack($this->getAutoPostBack()); + $this->_repeatedControl->setCausesValidation($this->getCausesValidation()); + $this->_repeatedControl->setValidationGroup($this->getValidationGroup()); + $page=$this->getPage(); + $n=$this->getItemCount(); + for($i=0;$i<$n;++$i) + { + $this->_repeatedControl->setID("c$i"); + $page->registerRequiresPostData($this->_repeatedControl); + } + } + + /** + * Wether the list should be rendered inside a span or not + * + *@return boolean true if we need a span + */ + protected function getSpanNeeded () + { + return $this->getRepeatLayout()===TRepeatLayout::Raw; + } + + /** + * Renders the checkbox list control. + * This method overrides the parent implementation. + * @param THtmlWriter writer for rendering purpose. + */ + public function render($writer) + { + if($this->getItemCount()>0) + { + if ($needSpan=$this->getSpanNeeded()) + { + $writer->addAttribute('id', $this->getClientId()); + $writer->renderBeginTag('span'); + } + $this->_isEnabled=$this->getEnabled(true); + $repeatInfo=$this->getRepeatInfo(); + $accessKey=$this->getAccessKey(); + $tabIndex=$this->getTabIndex(); + $this->_repeatedControl->setTextAlign($this->getTextAlign()); + $this->_repeatedControl->setAccessKey($accessKey); + $this->_repeatedControl->setTabIndex($tabIndex); + $this->setAccessKey(''); + $this->setTabIndex(0); + $repeatInfo->renderRepeater($writer,$this); + $this->setAccessKey($accessKey); + $this->setTabIndex($tabIndex); + if ($needSpan) + $writer->renderEndTag(); + } + //checkbox skipped the client control script in addAttributesToRender + if($this->getEnabled(true) + && $this->getEnableClientScript() + && $this->getAutoPostBack() + && $this->getPage()->getClientSupportsJavaScript()) + { + $this->renderClientControlScript($writer); + } + } + + /** + * Returns a value indicating whether postback has caused the control data change. + * This method is required by the IPostBackDataHandler interface. + * @return boolean whether postback has caused the control data change. False if the page is not in postback mode. + */ + public function getDataChanged() + { + return $this->_dataChanged; + } + + /** + * Returns the value to be validated. + * This methid is required by IValidatable interface. + * @return mixed the value of the property to be validated. + */ + public function getValidationPropertyValue() + { + return $this->getSelectedValue(); + } + + /** + * Returns true if this control validated successfully. + * Defaults to true. + * @return bool wether this control validated successfully. + */ + public function getIsValid() + { + return $this->_isValid; + } + /** + * @param bool wether this control is valid. + */ + public function setIsValid($value) + { + $this->_isValid=TPropertyValue::ensureBoolean($value); + } + + /** + * Gets the name of the javascript class responsible for performing postback for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TCheckBoxList'; + } + + /** + * Gets the post back options for this checkbox. + * @return array + */ + protected function getPostBackOptions() + { + $options['ListID'] = $this->getClientID(); + $options['ValidationGroup'] = $this->getValidationGroup(); + $options['CausesValidation'] = $this->getCausesValidation(); + $options['ListName'] = $this->getUniqueID(); + $options['ItemCount'] = $this->getItemCount(); + return $options; + } + +} + -- cgit v1.2.3