diff options
Diffstat (limited to 'framework/Web/UI/TClientScriptManager.php')
-rw-r--r-- | framework/Web/UI/TClientScriptManager.php | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/framework/Web/UI/TClientScriptManager.php b/framework/Web/UI/TClientScriptManager.php index a361d32e..01be9944 100644 --- a/framework/Web/UI/TClientScriptManager.php +++ b/framework/Web/UI/TClientScriptManager.php @@ -157,34 +157,21 @@ class TClientScriptManager extends TApplicationComponent /** * Registers postback javascript for a control. - * @param TControl control to be registered with postback js - * @param string js namespace for the control + * @param string javascript class responsible for the control being registered for postback + * @param array postback options */ - public function registerPostBackControl($control,$namespace='Prado.WebUI') + public function registerPostBackControl($jsClass,$options) { - $options = $this->getPostBackOptions($control); - $type = get_class($control); - $namespace = empty($namespace) ? "window" : $namespace; - $code = "new {$namespace}.{$type}($options);"; + if(!isset($options['FormID'])) + $options['FormID']=$this->_page->getForm()->getClientID(); + $optionString=TJavaScript::encode($options); + $code="new $jsClass($optionString);"; $this->registerEndScript(sprintf('%08X', crc32($code)), $code); $this->registerHiddenField(TPage::FIELD_POSTBACK_TARGET,''); $this->registerHiddenField(TPage::FIELD_POSTBACK_PARAMETER,''); - $this->registerPradoScript('prado'); - } - /** - * @param TControl postback control - * @return array postback options for the control - */ - protected function getPostBackOptions($control) - { - $postback = $control->getPostBackOptions(); - if(!isset($postback['ID'])) - $postback['ID'] = $control->getClientID(); - if(!isset($postback['FormID'])) - $postback['FormID'] = $this->_page->getForm()->getClientID(); - return TJavaScript::encode($postback); + $this->registerPradoScript('prado'); } /** |