From 0dda82c2a13ed09a2520dda9b420e8f90703c67b Mon Sep 17 00:00:00 2001 From: xue <> Date: Sun, 4 Dec 2005 04:25:45 +0000 Subject: --- framework/Web/UI/TClientScriptManager.php | 155 +++++++++++++++--------------- 1 file changed, 79 insertions(+), 76 deletions(-) (limited to 'framework/Web/UI/TClientScriptManager.php') diff --git a/framework/Web/UI/TClientScriptManager.php b/framework/Web/UI/TClientScriptManager.php index d4aea650..0e3ad773 100644 --- a/framework/Web/UI/TClientScriptManager.php +++ b/framework/Web/UI/TClientScriptManager.php @@ -36,18 +36,18 @@ class TClientScriptManager extends TComponent const SCRIPT_DIR='Web/Javascripts/js'; const POSTBACK_FUNC='Prado.PostBack.perform'; const POSTBACK_OPTIONS='Prado.PostBack.Options'; - const FIELD_POSTBACK_TARGET='PRADO_POSTBACK_TARGET'; - const FIELD_POSTBACK_PARAMETER='PRADO_POSTBACK_PARAMETER'; - const FIELD_LASTFOCUS='PRADO_LASTFOCUS'; - const FIELD_PAGE_STATE='PRADO_PAGE_STATE'; private $_owner; private $_hiddenFields=array(); - private $_scriptBlocks=array(); - private $_startupScripts=array(); + private $_beginScripts=array(); + private $_endScripts=array(); private $_scriptIncludes=array(); private $_onSubmitStatements=array(); private $_arrayDeclares=array(); private $_expandoAttributes=array(); + private $_postBackScriptRegistered=false; + private $_focusScriptRegistered=false; + private $_scrollScriptRegistered=false; + private $_publishedScriptFiles=array(); public function __construct(TPage $owner) { @@ -113,26 +113,47 @@ class TClientScriptManager extends TComponent protected function registerPostBackScript() { - $this->registerHiddenField(self::FIELD_POSTBACK_TARGET,''); - $this->registerHiddenField(self::FIELD_POSTBACK_PARAMETER,''); - $am=$this->_owner->getService()->getAssetManager(); - $url=$am->publishFilePath(Prado::getFrameworkPath().'/'.self::SCRIPT_DIR.'/base.js'); - $this->registerScriptInclude('prado:base',$url); + if(!$this->_postBackScriptRegistered) + { + $this->_postBackScriptRegistered=true; + $this->registerHiddenField(TPage::FIELD_POSTBACK_TARGET,''); + $this->registerHiddenField(TPage::FIELD_POSTBACK_PARAMETER,''); + $this->registerScriptInclude('prado:base',$this->publishScriptFile('base.js')); + } } - public function registerFocusScript() + private function publishScriptFile($jsFile) { - // need Focus.js + if(!isset($this->_publishedScriptFiles[$jsFile])) + { + $am=$this->_owner->getService()->getAssetManager(); + $this->_publishedScriptFiles[$jsFile]=$am->publishFilePath(Prado::getFrameworkPath().'/'.self::SCRIPT_DIR.'/'.$jsFile); + } + return $this->_publishedScriptFiles[$jsFile]; } - public function registerScrollScript() + public function registerFocusScript($target) { - $this->registerHiddenField(self::FIELD_SCROLL_X,$this->_owner->getScrollPositionX()); - $this->registerHiddenField(self::FIELD_SCROLL_Y,$this->_owner->getScrollPositionY()); - /* - this.ClientScript.RegisterStartupScript(typeof(Page), "PageScrollPositionScript", "\r\ntheForm.oldSubmit = theForm.submit;\r\ntheForm.submit = WebForm_SaveScrollPositionSubmit;\r\n\r\ntheForm.oldOnSubmit = theForm.onsubmit;\r\ntheForm.onsubmit = WebForm_SaveScrollPositionOnSubmit;\r\n" + (this.IsPostBack ? "\r\ntheForm.oldOnLoad = window.onload;\r\nwindow.onload = WebForm_RestoreScrollPosition;\r\n" : string.Empty), true); - need base.js - */ + if(!$this->_focusScriptRegistered) + { + $this->_focusScriptRegistered=true; + $this->registerScriptInclude('prado:base',$this->publishScriptFile('base.js')); + $this->registerEndScript('prado:focus','Prado.Focus.setFocus("'.THttpUtility::quoteJavaScriptString($target).'");'); + } + } + + public function registerScrollScript($x,$y) + { + if(!$this->_scrollScriptRegistered) + { + $this->_scrollScriptRegistered=true; + $this->registerHiddenField(TPage::FIELD_SCROLL_X,$this->_owner->getScrollPositionX()); + $this->registerHiddenField(TPage::FIELD_SCROLL_Y,$this->_owner->getScrollPositionY()); + /* + this.ClientScript.RegisterStartupScript(typeof(Page), "PageScrollPositionScript", "\r\ntheForm.oldSubmit = theForm.submit;\r\ntheForm.submit = WebForm_SaveScrollPositionSubmit;\r\n\r\ntheForm.oldOnSubmit = theForm.onsubmit;\r\ntheForm.onsubmit = WebForm_SaveScrollPositionOnSubmit;\r\n" + (this.IsPostBack ? "\r\ntheForm.oldOnLoad = window.onload;\r\nwindow.onload = WebForm_RestoreScrollPosition;\r\n" : string.Empty), true); + need base.js + */ + } } public function registerValidationScript() @@ -154,9 +175,14 @@ class TClientScriptManager extends TComponent return isset($this->_scriptIncludes[$key]); } - public function isStartupScriptRegistered($key) + public function isBeginScriptRegistered($key) { - return isset($this->_startupScripts[$key]); + return isset($this->_beginScripts[$key]); + } + + public function isEndScriptRegistered($key) + { + return isset($this->_endScripts[$key]); } public function isOnSubmitStatementRegistered($key) @@ -169,11 +195,6 @@ class TClientScriptManager extends TComponent $this->_arrayDeclares[$name][]=$value; } - public function registerScriptBlock($key,$script) - { - $this->_scriptBlocks[$key]=$script; - } - public function registerScriptInclude($key,$url) { $this->_scriptIncludes[$key]=$url; @@ -189,9 +210,14 @@ class TClientScriptManager extends TComponent $this->_onSubmitStatements[$key]=$script; } - public function registerStartupScript($key,$script) + public function registerBeginScript($key,$script) { - $this->_startupScripts[$key]=$script; + $this->_beginScripts[$key]=$script; + } + + public function registerEndScript($key,$script) + { + $this->_endScripts[$key]=$script; } public function registerExpandoAttribute($controlID,$name,$value) @@ -203,57 +229,35 @@ class TClientScriptManager extends TComponent { if(count($this->_arrayDeclares)) { - $str="\n\n"; + $str.="var $name=new Array(".implode(',',$array).");\n"; + $str.="\n// -->\n"; $writer->write($str); } } - public function renderScriptBlocks($writer) + public function renderScriptIncludes($writer) { - $str=''; - foreach($this->_scriptBlocks as $script) - $str.="\n".$script; - if($this->_owner->getClientOnSubmitEvent()!=='' && $this->_owner->getClientSupportsJavaScript()) - { - $str.="\nfunction WebForm_OnSubmit() {\n"; - foreach($this->_onSubmitStatements as $script) - $str.=$script; - $str.="\nreturn true;\n}"; - } - if($str!=='') - $writer->write("\n\n"); + foreach($this->_scriptIncludes as $include) + $writer->write("\n"); } - public function renderStartupScripts($writer) + public function renderOnSubmitStatements($writer) { - $str=''; - foreach($this->_scriptIncludes as $include) - $str.="\n"; - if(count($this->_startupScripts)) - { - $str.="\n\n"; - $writer->write($str); - } + // ??? + } + + public function renderBeginScripts($writer) + { + if(count($this->_beginScripts)) + $writer->write("\n"); + } + + public function renderEndScripts($writer) + { + if(count($this->_endScripts)) + $writer->write("\n"); } public function renderHiddenFields($writer) @@ -262,18 +266,17 @@ class TClientScriptManager extends TComponent foreach($this->_hiddenFields as $name=>$value) { $value=THttpUtility::htmlEncode($value); - $str.="\n"; + $str.="\n"; } if($str!=='') $writer->write($str); - $this->_hiddenFields=array(); } - public function renderExpandoAttribute($writer) + public function renderExpandoAttributes($writer) { if(count($this->_expandoAttributes)) { - $str="\n\n"; + $str.="\n// -->\n"; $writer->write($str); } } -- cgit v1.2.3