From 233ad780df391ed4af569929c30a1370d2b440ef Mon Sep 17 00:00:00 2001 From: xue <> Date: Sat, 10 Jun 2006 14:58:25 +0000 Subject: Merge from 3.0 branch till 1150. Fixed the bug that postback js causes controls not inheritable. --- HISTORY | 2 ++ framework/Exceptions/messages.txt | 2 +- framework/Web/UI/TClientScriptManager.php | 18 ++++++++-------- framework/Web/UI/WebControls/TBaseValidator.php | 17 +++++++++------ framework/Web/UI/WebControls/TBulletedList.php | 22 ++++++++++--------- framework/Web/UI/WebControls/TButton.php | 6 +++--- framework/Web/UI/WebControls/TCheckBox.php | 4 ++-- framework/Web/UI/WebControls/TCheckBoxList.php | 10 +++++++++ framework/Web/UI/WebControls/TCompareValidator.php | 14 ++++++++++-- framework/Web/UI/WebControls/TCustomValidator.php | 10 +++++++++ .../Web/UI/WebControls/TDataTypeValidator.php | 10 +++++++++ framework/Web/UI/WebControls/TDropDownList.php | 10 +++++++++ .../Web/UI/WebControls/TEmailAddressValidator.php | 10 +++++++++ framework/Web/UI/WebControls/TImageButton.php | 4 ++-- framework/Web/UI/WebControls/TImageMap.php | 6 +++--- framework/Web/UI/WebControls/TLinkButton.php | 2 +- framework/Web/UI/WebControls/TListBox.php | 10 +++++++++ framework/Web/UI/WebControls/TListControl.php | 25 ++++++++++++---------- .../Web/UI/WebControls/TListControlValidator.php | 12 ++++++++++- framework/Web/UI/WebControls/TRadioButton.php | 8 +++---- framework/Web/UI/WebControls/TRadioButtonList.php | 10 +++++++++ framework/Web/UI/WebControls/TRangeValidator.php | 10 +++++++++ .../UI/WebControls/TRegularExpressionValidator.php | 10 +++++++++ .../Web/UI/WebControls/TRequiredFieldValidator.php | 16 +++++++++++--- framework/Web/UI/WebControls/TTextBox.php | 4 ++-- 25 files changed, 192 insertions(+), 60 deletions(-) diff --git a/HISTORY b/HISTORY index 0431b8bb..c434edb5 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,6 @@ Version 3.1.0 To be released ============================ +BUG: Ticket#188 - Postback js caused controls not inheritable (Qiang) ENH: Ticket#99 - TXmlTransform control (Knut) ENH: Ticket#117 - added support to configure subproperties in a group. (Qiang) NEW: TOutputCache (Qiang) @@ -9,6 +10,7 @@ NEW: SQLMap (Wei) Version 3.0.2 July 2, 2006 ========================== +BUG: Ticket#182 - List and validator controls cause problem in child classes (Qiang) BUG: Ticket#213 - PRADO Requirements Checker charset error (Qiang) CHG: ensureChildControls() is now invoked in TControl::initRecursive (Qiang) diff --git a/framework/Exceptions/messages.txt b/framework/Exceptions/messages.txt index c57534b1..8c79d6ee 100644 --- a/framework/Exceptions/messages.txt +++ b/framework/Exceptions/messages.txt @@ -235,7 +235,7 @@ basevalidator_forcontrol_unsupported = {0}.ForControl is not supported. comparevalidator_controltocompare_invalid = TCompareValidator.ControlToCompare contains an invalid control ID path. -tlistcontrolvalidator_invalid_control = {0}.ControlToValidate contains an invalid TListControl ID path, "{1}" is a {2}. +listcontrolvalidator_invalid_control = {0}.ControlToValidate contains an invalid TListControl ID path, "{1}" is a {2}. repeater_template_required = TRepeater.{0} requires a template instance implementing ITemplate interface. datalist_template_required = TDataList.{0} requires a template instance implementing ITemplate interface. diff --git a/framework/Web/UI/TClientScriptManager.php b/framework/Web/UI/TClientScriptManager.php index 3926d166..cab4d288 100644 --- a/framework/Web/UI/TClientScriptManager.php +++ b/framework/Web/UI/TClientScriptManager.php @@ -166,7 +166,7 @@ class TClientScriptManager extends TApplicationComponent public function getCallbackReference(ICallbackEventHandler $callbackHandler, $options=null) { - $options = !is_array($options) ? array() : $options; + $options = !is_array($options) ? array() : $options; $class = new TReflectionClass($callbackHandler); $clientSide = $callbackHandler->getActiveControl()->getClientSide(); $options = array_merge($options, $clientSide->getOptions()->toArray()); @@ -203,7 +203,7 @@ class TClientScriptManager extends TApplicationComponent if(!isset($options['FormID']) && ($form=$this->_page->getForm())!==null) $options['FormID']=$form->getClientID(); $optionString=TJavaScript::encode($options); - $code="new Prado.WebUI.{$class}({$optionString});"; + $code="new {$class}({$optionString});"; $this->_endScripts[sprintf('%08X', crc32($code))]=$code; $this->_hiddenFields[TPage::FIELD_POSTBACK_TARGET]=''; @@ -564,7 +564,7 @@ abstract class TClientSideOptions extends TComponent * @var TMap list of client-side options. */ private $_options; - + /** * Constructor, initialize the options list. */ @@ -572,7 +572,7 @@ abstract class TClientSideOptions extends TComponent { $this->_options = Prado::createComponent('System.Collections.TMap'); } - + /** * Adds on client-side event handler by wrapping the code within a * javascript function block. If the code begins with "javascript:", the @@ -584,10 +584,10 @@ abstract class TClientSideOptions extends TComponent protected function setFunction($name, $code) { if(!TJavascript::isFunction($code)) - $code = TJavascript::quoteFunction($this->ensureFunction($code)); + $code = TJavascript::quoteFunction($this->ensureFunction($code)); $this->setOption($name, $code); } - + /** * @return string gets a particular option, null if not set. */ @@ -595,7 +595,7 @@ abstract class TClientSideOptions extends TComponent { return $this->_options->itemAt($name); } - + /** * @param string option name * @param mixed option value. @@ -604,7 +604,7 @@ abstract class TClientSideOptions extends TComponent { $this->_options->add($name, $value); } - + /** * @return TMap gets the list of options as TMap */ @@ -612,7 +612,7 @@ abstract class TClientSideOptions extends TComponent { return $this->_options; } - + /** * Ensure that the javascript statements are wrapped in a javascript * function block. Default has no wrapping. Override this method to diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php index 3c76db30..3fe9ee03 100644 --- a/framework/Web/UI/WebControls/TBaseValidator.php +++ b/framework/Web/UI/WebControls/TBaseValidator.php @@ -264,15 +264,20 @@ abstract class TBaseValidator extends TLabel implements IValidator { if($this->getEnabled(true)) { - $class = get_class($this); - $scriptKey = "prado:".$this->getClientID(); - $scripts = $this->getPage()->getClientScript(); - $options = TJavaScript::encode($this->getClientScriptOptions()); - $js = "new Prado.WebUI.{$class}({$options});"; - $scripts->registerEndScript($scriptKey, $js); + $key = 'prado:'.$this->getClientID(); + $options = TJavaScript::encode($this->getClientScriptOptions()); + $script = 'new '.$this->getClientClassName().'('.$options.');'; + $this->getPage()->getClientScript()->registerEndScript($key, $script); } } + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + abstract protected function getClientClassName(); + /** * This method overrides the parent implementation to forbid setting ForControl. * @param string the associated control ID diff --git a/framework/Web/UI/WebControls/TBulletedList.php b/framework/Web/UI/WebControls/TBulletedList.php index fad77232..dfed0b6e 100644 --- a/framework/Web/UI/WebControls/TBulletedList.php +++ b/framework/Web/UI/WebControls/TBulletedList.php @@ -83,6 +83,16 @@ class TBulletedList extends TListControl implements IPostBackEventHandler return 'ul'; } + /** + * 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.TBulletedList'; + } + /** * Adds attribute name-value pairs to renderer. * This overrides the parent implementation with additional bulleted list specific attributes. @@ -323,7 +333,8 @@ class TBulletedList extends TListControl implements IPostBackEventHandler $this->_currentRenderItemIndex = $index; $writer->addAttribute('id', $this->getClientID().$index); $writer->addAttribute('href', "javascript:;//".$this->getClientID().$index); - $this->renderClientControlScript($writer); + $cs = $this->getPage()->getClientScript(); + $cs->registerPostBackControl('Prado.WebUI.TBulletedList',$this->getPostBackOptions()); } if(($accesskey=$this->getAccessKey())!=='') $writer->addAttribute('accesskey',$accesskey); @@ -331,15 +342,6 @@ class TBulletedList extends TListControl implements IPostBackEventHandler $writer->write(THttpUtility::htmlEncode($item->getText())); $writer->renderEndTag(); } - - /** - * Renders the client-script code. - */ - protected function renderClientControlScript($writer) - { - $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$this->getPostBackOptions()); - } /** * @return array postback options used for linkbuttons. diff --git a/framework/Web/UI/WebControls/TButton.php b/framework/Web/UI/WebControls/TButton.php index 75d60695..f1302853 100644 --- a/framework/Web/UI/WebControls/TButton.php +++ b/framework/Web/UI/WebControls/TButton.php @@ -87,9 +87,9 @@ class TButton extends TWebControl implements IPostBackEventHandler, IButtonContr { if($this->canCauseValidation()) { - $writer->addAttribute('id',$this->getClientID()); - $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$this->getPostBackOptions()); + $writer->addAttribute('id',$this->getClientID()); + $cs = $this->getPage()->getClientScript(); + $cs->registerPostBackControl('Prado.WebUI.TButton',$this->getPostBackOptions()); } } diff --git a/framework/Web/UI/WebControls/TCheckBox.php b/framework/Web/UI/WebControls/TCheckBox.php index fda0480d..37ea0369 100644 --- a/framework/Web/UI/WebControls/TCheckBox.php +++ b/framework/Web/UI/WebControls/TCheckBox.php @@ -375,8 +375,8 @@ class TCheckBox extends TWebControl implements IPostBackDataHandler, IValidatabl */ protected function renderClientControlScript($writer) { - $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$this->getPostBackOptions()); + $cs = $this->getPage()->getClientScript(); + $cs->registerPostBackControl('Prado.WebUI.TCheckBox',$this->getPostBackOptions()); } /** diff --git a/framework/Web/UI/WebControls/TCheckBoxList.php b/framework/Web/UI/WebControls/TCheckBoxList.php index 2a16673c..e6ca3642 100644 --- a/framework/Web/UI/WebControls/TCheckBoxList.php +++ b/framework/Web/UI/WebControls/TCheckBoxList.php @@ -105,6 +105,16 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont return new TTableStyle; } + /** + * 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'; + } + /** * @return string the alignment of the text caption, defaults to 'Right'. */ diff --git a/framework/Web/UI/WebControls/TCompareValidator.php b/framework/Web/UI/WebControls/TCompareValidator.php index b5ebd3ab..93664b2e 100644 --- a/framework/Web/UI/WebControls/TCompareValidator.php +++ b/framework/Web/UI/WebControls/TCompareValidator.php @@ -31,8 +31,8 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); * type before the comparison operation is performed. The following value types are supported: * - Integer A 32-bit signed integer data type. * - Float A double-precision floating point number data type. - * - Date A date data type. The format can be specified by the - * {@link setDateFormat DateFormat} property + * - Date A date data type. The format can be specified by the + * {@link setDateFormat DateFormat} property * - String A string data type. * * Use the {@link setOperator Operator} property to specify the type of comparison @@ -46,6 +46,16 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); */ class TCompareValidator extends TBaseValidator { + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TCompareValidator'; + } + /** * @return string the data type that the values being compared are converted to before the comparison is made. Defaults to String. */ diff --git a/framework/Web/UI/WebControls/TCustomValidator.php b/framework/Web/UI/WebControls/TCustomValidator.php index 27cfa67a..32510f89 100644 --- a/framework/Web/UI/WebControls/TCustomValidator.php +++ b/framework/Web/UI/WebControls/TCustomValidator.php @@ -54,6 +54,16 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); */ class TCustomValidator extends TBaseValidator { + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TCustomValidator'; + } + /** * @return string the name of the custom client-side script function used for validation. */ diff --git a/framework/Web/UI/WebControls/TDataTypeValidator.php b/framework/Web/UI/WebControls/TDataTypeValidator.php index ebcaace7..bd7569fc 100644 --- a/framework/Web/UI/WebControls/TDataTypeValidator.php +++ b/framework/Web/UI/WebControls/TDataTypeValidator.php @@ -36,6 +36,16 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); */ class TDataTypeValidator extends TBaseValidator { + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TDataTypeValidator'; + } + /** * @return string the data type that the values being compared are converted to before the comparison is made. Defaults to String. */ diff --git a/framework/Web/UI/WebControls/TDropDownList.php b/framework/Web/UI/WebControls/TDropDownList.php index 14a4dac4..860fe69c 100644 --- a/framework/Web/UI/WebControls/TDropDownList.php +++ b/framework/Web/UI/WebControls/TDropDownList.php @@ -38,6 +38,16 @@ class TDropDownList extends TListControl implements IPostBackDataHandler, IValid parent::addAttributesToRender($writer); } + /** + * 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.TDropDownList'; + } + /** * Loads user input data. * This method is primarly used by framework developers. diff --git a/framework/Web/UI/WebControls/TEmailAddressValidator.php b/framework/Web/UI/WebControls/TEmailAddressValidator.php index 3534d1d0..e1150233 100644 --- a/framework/Web/UI/WebControls/TEmailAddressValidator.php +++ b/framework/Web/UI/WebControls/TEmailAddressValidator.php @@ -35,6 +35,16 @@ class TEmailAddressValidator extends TRegularExpressionValidator */ const EMAIL_REGEXP="\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TEmailAddressValidator'; + } + /** * @return string the regular expression that determines the pattern used to validate a field. */ diff --git a/framework/Web/UI/WebControls/TImageButton.php b/framework/Web/UI/WebControls/TImageButton.php index 4b482721..df8ace43 100644 --- a/framework/Web/UI/WebControls/TImageButton.php +++ b/framework/Web/UI/WebControls/TImageButton.php @@ -102,8 +102,8 @@ class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEven if($this->canCauseValidation()) { $writer->addAttribute('id',$this->getClientID()); - $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$this->getPostBackOptions()); + $cs = $this->getPage()->getClientScript(); + $cs->registerPostBackControl('Prado.WebUI.TImageButton',$this->getPostBackOptions()); } } /** diff --git a/framework/Web/UI/WebControls/TImageMap.php b/framework/Web/UI/WebControls/TImageMap.php index ae2d6be3..be7bfea9 100644 --- a/framework/Web/UI/WebControls/TImageMap.php +++ b/framework/Web/UI/WebControls/TImageMap.php @@ -118,14 +118,14 @@ class TImageMap extends TImage implements IPostBackEventHandler $writer->renderEndTag(); } } - + /** * Renders the client-script code. */ protected function renderClientControlScript($writer,$options) { - $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$options); + $cs = $this->getPage()->getClientScript(); + $cs->registerPostBackControl('Prado.WebUI.TImageMap',$options); } /** diff --git a/framework/Web/UI/WebControls/TLinkButton.php b/framework/Web/UI/WebControls/TLinkButton.php index 7487b37a..e7fea0b5 100644 --- a/framework/Web/UI/WebControls/TLinkButton.php +++ b/framework/Web/UI/WebControls/TLinkButton.php @@ -95,7 +95,7 @@ class TLinkButton extends TWebControl implements IPostBackEventHandler, IButtonC $nop = "javascript:;//".$this->getClientID(); $writer->addAttribute('href', $nop); $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$this->getPostBackOptions()); + $cs->registerPostBackControl('Prado.WebUI.TLinkButton',$this->getPostBackOptions()); } /** diff --git a/framework/Web/UI/WebControls/TListBox.php b/framework/Web/UI/WebControls/TListBox.php index 5ee3f58e..972ebbcb 100644 --- a/framework/Web/UI/WebControls/TListBox.php +++ b/framework/Web/UI/WebControls/TListBox.php @@ -47,6 +47,16 @@ class TListBox extends TListControl implements IPostBackDataHandler, IValidatabl parent::addAttributesToRender($writer); } + /** + * 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.TListBox'; + } + /** * Registers the list control to load post data on postback. * This method overrides the parent implementation. diff --git a/framework/Web/UI/WebControls/TListControl.php b/framework/Web/UI/WebControls/TListControl.php index f20ff4cc..2c42c462 100644 --- a/framework/Web/UI/WebControls/TListControl.php +++ b/framework/Web/UI/WebControls/TListControl.php @@ -113,22 +113,25 @@ abstract class TListControl extends TDataBoundControl $page->ensureRenderInForm($this); if($this->getIsMultiSelect()) $writer->addAttribute('multiple','multiple'); - if($this->getEnabled(true) && $this->getAutoPostBack() && $page->getClientSupportsJavaScript()) - $this->renderClientControlScript($writer); - if(!$this->getEnabled(true) && $this->getEnabled()) + if($this->getEnabled(true)) + { + if($this->getAutoPostBack() && $page->getClientSupportsJavaScript()) + { + $writer->addAttribute('id',$this->getClientID()); + $this->getPage()->getClientScript()->registerPostBackControl($this->getClientClassName(),$this->getPostBackOptions()); + } + } + else if($this->getEnabled()) $writer->addAttribute('disabled','disabled'); parent::addAttributesToRender($writer); } /** - * Renders the client-script code. + * 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 renderClientControlScript($writer) - { - $writer->addAttribute('id',$this->getClientID()); - $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$this->getPostBackOptions()); - } + abstract protected function getClientClassName(); /** * @return array postback options for JS postback code @@ -812,4 +815,4 @@ class TListItemCollection extends TList } } -?> \ No newline at end of file +?> diff --git a/framework/Web/UI/WebControls/TListControlValidator.php b/framework/Web/UI/WebControls/TListControlValidator.php index be69085d..010a7e77 100644 --- a/framework/Web/UI/WebControls/TListControlValidator.php +++ b/framework/Web/UI/WebControls/TListControlValidator.php @@ -63,6 +63,16 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); */ class TListControlValidator extends TBaseValidator { + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TListControlValidator'; + } + /** * @return integer min number of selections. Defaults to -1, meaning not set. */ @@ -195,7 +205,7 @@ class TListControlValidator extends TBaseValidator if(!$control instanceof TListControl) { throw new TConfigurationException( - 'tlistcontrolvalidator_invalid_control', + 'listcontrolvalidator_invalid_control', $this->getID(),$this->getControlToValidate(), get_class($control)); } diff --git a/framework/Web/UI/WebControls/TRadioButton.php b/framework/Web/UI/WebControls/TRadioButton.php index dc7ba057..688b99bf 100644 --- a/framework/Web/UI/WebControls/TRadioButton.php +++ b/framework/Web/UI/WebControls/TRadioButton.php @@ -168,15 +168,15 @@ class TRadioButton extends TCheckBox $writer->renderBeginTag('input'); $writer->renderEndTag(); } - + /** * Renders the client-script code. */ protected function renderClientControlScript($writer) { - $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$this->getPostBackOptions()); - } + $cs = $this->getPage()->getClientScript(); + $cs->registerPostBackControl('Prado.WebUI.TRadioButton',$this->getPostBackOptions()); + } } ?> \ No newline at end of file diff --git a/framework/Web/UI/WebControls/TRadioButtonList.php b/framework/Web/UI/WebControls/TRadioButtonList.php index b0a36c9d..95725836 100644 --- a/framework/Web/UI/WebControls/TRadioButtonList.php +++ b/framework/Web/UI/WebControls/TRadioButtonList.php @@ -52,6 +52,16 @@ class TRadioButtonList extends TCheckBoxList return new TRadioButton; } + /** + * 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.TRadioButtonList'; + } + /** * Loads user input data. * This method is primarly used by framework developers. diff --git a/framework/Web/UI/WebControls/TRangeValidator.php b/framework/Web/UI/WebControls/TRangeValidator.php index b7387522..9d23eb5e 100644 --- a/framework/Web/UI/WebControls/TRangeValidator.php +++ b/framework/Web/UI/WebControls/TRangeValidator.php @@ -42,6 +42,16 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); */ class TRangeValidator extends TBaseValidator { + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TRangeValidator'; + } + /** * @return string the minimum value of the validation range. */ diff --git a/framework/Web/UI/WebControls/TRegularExpressionValidator.php b/framework/Web/UI/WebControls/TRegularExpressionValidator.php index e73fd5be..3099514b 100644 --- a/framework/Web/UI/WebControls/TRegularExpressionValidator.php +++ b/framework/Web/UI/WebControls/TRegularExpressionValidator.php @@ -49,6 +49,16 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); */ class TRegularExpressionValidator extends TBaseValidator { + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TRegularExpressionValidator'; + } + /** * @return string the regular expression that determines the pattern used to validate a field. */ diff --git a/framework/Web/UI/WebControls/TRequiredFieldValidator.php b/framework/Web/UI/WebControls/TRequiredFieldValidator.php index 04e333eb..b8a939ad 100644 --- a/framework/Web/UI/WebControls/TRequiredFieldValidator.php +++ b/framework/Web/UI/WebControls/TRequiredFieldValidator.php @@ -21,7 +21,7 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); * TRequiredFieldValidator makes the associated input control a required field. * The input control fails validation if its value does not change from * the {@link setInitialValue InitialValue} property upon losing focus. - * + * * Validation will also succeed if input is of TListControl type and the number * of selected values different from the initial value is greater than zero. * @@ -32,6 +32,16 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); */ class TRequiredFieldValidator extends TBaseValidator { + /** + * Gets the name of the javascript class responsible for performing validation for this control. + * This method overrides the parent implementation. + * @return string the javascript class name + */ + protected function getClientClassName() + { + return 'Prado.WebUI.TRequiredFieldValidator'; + } + /** * @return string the initial value of the associated input control. Defaults to empty string. * If the associated input control does not change from this initial value @@ -56,11 +66,11 @@ class TRequiredFieldValidator extends TBaseValidator * This method overrides the parent's implementation. * The validation succeeds if the input component changes its data * from the {@link getInitialValue InitialValue} or the input control is not given. - * + * * Validation will also succeed if input is of TListControl type and the * number of selected values different from the initial value is greater * than zero. - * + * * @return boolean whether the validation succeeds */ protected function evaluateIsValid() diff --git a/framework/Web/UI/WebControls/TTextBox.php b/framework/Web/UI/WebControls/TTextBox.php index b443fa59..73b1e9cc 100644 --- a/framework/Web/UI/WebControls/TTextBox.php +++ b/framework/Web/UI/WebControls/TTextBox.php @@ -152,9 +152,9 @@ class TTextBox extends TWebControl implements IPostBackDataHandler, IValidatable */ protected function renderClientControlScript($writer) { - $writer->addAttribute('id',$this->getClientID()); + $writer->addAttribute('id',$this->getClientID()); $cs = $this->getPage()->getClientScript(); - $cs->registerPostBackControl(get_class($this),$this->getPostBackOptions()); + $cs->registerPostBackControl('Prado.WebUI.TTextBox',$this->getPostBackOptions()); } /** -- cgit v1.2.3