From 55c4ac1bfe565f1ca7f537fdd8b7a201be28e581 Mon Sep 17 00:00:00 2001 From: xue <> Date: Thu, 10 Nov 2005 12:47:19 +0000 Subject: Initial import of prado framework --- framework/Web/UI/TClientScriptManager.php | 236 ++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 framework/Web/UI/TClientScriptManager.php (limited to 'framework/Web/UI/TClientScriptManager.php') diff --git a/framework/Web/UI/TClientScriptManager.php b/framework/Web/UI/TClientScriptManager.php new file mode 100644 index 00000000..0f760251 --- /dev/null +++ b/framework/Web/UI/TClientScriptManager.php @@ -0,0 +1,236 @@ +_owner=$owner; + } + + final public function getPostBackEventReference($options) + { + if($options->RequiresJavaScriptProtocol) + $str='javascript:'; + else + $str=''; + if($options->AutoPostBack) + $str.="setTimeout('"; + if(!$options->PerformValidation && !$options->TrackFocus && $options->ClientSubmit && $options->ActionUrl==='') + { + $this->_owner->registerPostBackScript(); + $postback="__doPostBack('".$options->TargetControl->getUniqueID()."','".THttpUtility::quoteJavaScriptString($options->Argument)."')"; + if($options->AutoPostBack) + { + $str.=THttpUtility::quoteJavaScriptString($postback); + $str.="',0)"; + } + else + $str.=$postback; + return $str; + } + $str.='WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("'; + $str.=$options->TargetControl->getUniqueID().'", '; + if(($arg=$options->Argument)==='') + $str.='"", '; + else + $str.='"'.THttpUtility::quoteJavaScriptString($arg).'", '; + $flag=false; + if($options->PerformValidation) + { + $flag=true; + $str.='true, '; + } + else + $str.='false, '; + if($options->ValidationGroup!=='') + { + $flag=true; + $str.='"'.$options->ValidationGroup.'", '; + } + else + $str.='"", '; + if($options->ActionUrl!=='') + { + $flag=true; + $this->_owner->setContainsCrossPagePost(true); + $str.='"'.THttpUtility::quoteJavaScriptString($options->ActionUrl).'", '; + } + else + $str.='"", '; + if($options->TrackFocus) + { + $this->_owner->registerFocusScript(); + $flag=true; + $str.='true, '; + } + else + $str.='false, '; + if($options->ClientSubmit) + { + $flag=true; + $this->_owner->registerPostBackScript(); + $str.='true))'; + } + else + $str.='false))'; + if($options->AutoPostBack) + $str.="', 0)"; + if($flag) + { + $this->_owner->registerWebFormsScript(); + return $str; + } + else + return ''; + } + + final public function isHiddenFieldRegistered($key) + { + return isset($this->_hiddenFields[$key]); + } + + final public function isClientScriptBlockRegistered($key) + { + return isset($this->_scriptBlocks[$key]); + } + + final public function isClientScriptIncludeRegistered($key) + { + return isset($this->_scriptIncludes[$key]); + } + + final public function isStartupScriptRegistered($key) + { + return isset($this->_startupScripts[$key]); + } + + final public function isOnSubmitStatementRegistered($key) + { + return isset($this->_onSubmitStatements[$key]); + } + + final public function registerArrayDeclaration($name,$value) + { + $this->_arrayDeclares[$name][]=$value; + } + + final public function registerClientScriptBlock($key,$script) + { + $this->_criptBlocks[$key]=$script; + } + + final public function registerClientScriptInclude($key,$url) + { + $this->_scriptIncludes[$key]=$url; + } + + // todo: register an asset + + final public function registerHiddenField($name,$value) + { + $this->_hiddenFields[$name]=$value; + } + + final public function registerOnSubmitStatement($key,$script) + { + $this->_onSubmitStatements[$key]=$script; + } + + final public function registerStartupScript($key,$script) + { + $this->_startupScripts[$key]=$script; + } + + final public function renderArrayDeclarations($writer) + { + if(count($this->_arrayDeclares)) + { + $str="\n\n"; + $writer->write($str); + } + } + + final public function renderClientScriptBlocks($writer) + { + $str=''; + foreach($this->_scriptBlocks as $script) + $str.=$script; + if($this->_owner->getClientOnSubmitEvent()!=='' && $this->_owner->getClientSupportsJavaScript()) + { + $str.="function WebForm_OnSubmit() {\n"; + foreach($this->_onSubmitStatements as $script) + $str.=$script; + $str.="\nreturn true;\n}"; + } + if($str!=='') + $writer->write("\n\n"); + } + + final public function renderClientStartupScripts($writer) + { + if(count($this->_startupScripts)) + { + $str="\n\n"; + $writer->write($str); + } + } + + final public function renderHiddenFields($writer) + { + $str=''; + foreach($this->_hiddenFields as $name=>$value) + { + $value=THttpUtility::htmlEncode($value); + $str.="\n"; + } + if($str!=='') + $writer->write($str); + $this->_hiddenFields=array(); + } + + /** + * @internal + */ + final public function getHasHiddenFields() + { + return count($this->_hiddenFields)>0; + } + + /** + * @internal + */ + final public function getHasSubmitStatements() + { + return count($this->_onSubmitStatements)>0; + } +} + +?> \ No newline at end of file -- cgit v1.2.3