diff options
5 files changed, 42 insertions, 2 deletions
diff --git a/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php b/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php index d51c4d95..a42044fb 100644 --- a/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php +++ b/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php @@ -105,5 +105,17 @@ class TActiveCheckBoxList extends TCheckBoxList implements IActiveControl, ICall { $this->raiseEvent('OnCallback', $this, $param); } + + /** + * Ensure that the ID attribute is rendered and registers the javascript code + * for initializing the active control. + */ + protected function addAttributesToRender($writer) + { + parent::addAttributesToRender($writer); + $this->getActiveControl()->registerCallbackClientScript( + $this->getClientClassName(), $this->getPostBackOptions()); + } + } diff --git a/framework/Web/UI/ActiveControls/TActiveRadioButtonList.php b/framework/Web/UI/ActiveControls/TActiveRadioButtonList.php index c106f479..3244ce11 100644 --- a/framework/Web/UI/ActiveControls/TActiveRadioButtonList.php +++ b/framework/Web/UI/ActiveControls/TActiveRadioButtonList.php @@ -106,5 +106,16 @@ class TActiveRadioButtonList extends TRadioButtonList implements IActiveControl, { $this->raiseEvent('OnCallback', $this, $param); } + + /** + * Ensure that the ID attribute is rendered and registers the javascript code + * for initializing the active control. + */ + protected function addAttributesToRender($writer) + { + parent::addAttributesToRender($writer); + $this->getActiveControl()->registerCallbackClientScript( + $this->getClientClassName(), $this->getPostBackOptions()); + } } diff --git a/framework/Web/UI/ActiveControls/TActiveRatingList.php b/framework/Web/UI/ActiveControls/TActiveRatingList.php index 973dc1e5..022efe65 100644 --- a/framework/Web/UI/ActiveControls/TActiveRatingList.php +++ b/framework/Web/UI/ActiveControls/TActiveRatingList.php @@ -121,6 +121,17 @@ class TActiveRatingList extends TRatingList implements IActiveControl, ICallback } /** + * Ensure that the ID attribute is rendered and registers the javascript code + * for initializing the active control. + */ + protected function addAttributesToRender($writer) + { + parent::addAttributesToRender($writer); + $this->getActiveControl()->registerCallbackClientScript( + $this->getClientClassName(), $this->getPostBackOptions()); + } + + /** * 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 diff --git a/framework/Web/UI/ActiveControls/TBaseActiveControl.php b/framework/Web/UI/ActiveControls/TBaseActiveControl.php index 73503f3c..61230719 100644 --- a/framework/Web/UI/ActiveControls/TBaseActiveControl.php +++ b/framework/Web/UI/ActiveControls/TBaseActiveControl.php @@ -239,7 +239,9 @@ class TBaseActiveCallbackControl extends TBaseActiveControl } else { - $control=$this->getControl()->findControl($id); + // TCheckBoxList overrides findControl() with a fake implementation + // but accepts a second parameter to use the standard one + $control=$this->getControl()->findControl($id, true); } if($control instanceof TCallbackOptions) diff --git a/framework/Web/UI/WebControls/TCheckBoxList.php b/framework/Web/UI/WebControls/TCheckBoxList.php index ac278a16..5122432c 100644 --- a/framework/Web/UI/WebControls/TCheckBoxList.php +++ b/framework/Web/UI/WebControls/TCheckBoxList.php @@ -84,8 +84,10 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont * @param string control ID * @return TControl control being found */ - public function findControl($id) + public function findControl($id, $real=false) { + if ($real===true) + return parent::findControl($id); return $this; } @@ -418,12 +420,14 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont $this->_repeatedControl->setTabIndex($tabIndex); $this->setAccessKey(''); $this->setTabIndex(0); + $this->addAttributesToRender($writer); $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() |