ActionUrl=$actionUrl; $this->Argument=$argument; $this->AutoPostBack=$autoPostBack; $this->ClientSubmit=$clientSubmit; $this->PerformValidation=$performValidation; $this->TargetControl=$targetControl; $this->TrackFocus=$trackFocus; $this->ValidationGroup=$validationGroup; } } class TClientScriptManager extends TComponent { const SCRIPT_DIR='Web/Javascripts/js'; const POSTBACK_FUNC='Prado.PostBack.perform'; const POSTBACK_OPTIONS='Prado.PostBack.Options'; private $_owner; private $_hiddenFields=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) { $this->_owner=$owner; } public function getPostBackEventReference($control,$parameter='',$options=null,$javascriptPrefix=true) { if($options) { $flag=false; $opt='new '.self::POSTBACK_OPTIONS.'('; if($options->PerformValidation) { $flag=true; $this->registerValidationScript(); $opt.='true,'; } else $opt.='false,'; if($options->ValidationGroup!=='') { $flag=true; $opt.='"'.$options->ValidationGroup.'",'; } else $opt.='"",'; if($options->ActionUrl!=='') { $flag=true; $this->_owner->setCrossPagePostBack(true); $opt.='"'.THttpUtility::quoteJavaScriptString($options->ActionUrl).'",'; } else $opt.='"",'; if($options->TrackFocus) { $flag=true; $this->registerFocusScript(); $opt.='true,'; } else $opt.='false,'; if($options->ClientSubmit) { $flag=true; $opt.='true)'; } else $opt.='false)'; //if(!$flag) // return ''; } else $opt='null'; $this->registerPostBackScript(); $formID=$this->_owner->getForm()->getUniqueID(); $postback=self::POSTBACK_FUNC.'(\''.$formID.'\',\''.$control->getUniqueID().'\',\''.THttpUtility::quoteJavaScriptString($parameter).'\','.$opt.')'; if($options && $options->AutoPostBack) $postback='setTimeout(\''.THttpUtility::quoteJavaScriptString($postback).'\',0)'; return $javascriptPrefix?'javascript:'.$postback:$postback; } protected function registerPostBackScript() { 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')); } } private function publishScriptFile($jsFile) { 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 registerFocusScript($target) { 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() { } public function isHiddenFieldRegistered($key) { return isset($this->_hiddenFields[$key]); } public function isScriptBlockRegistered($key) { return isset($this->_scriptBlocks[$key]); } public function isScriptIncludeRegistered($key) { return isset($this->_scriptIncludes[$key]); } public function isBeginScriptRegistered($key) { return isset($this->_beginScripts[$key]); } public function isEndScriptRegistered($key) { return isset($this->_endScripts[$key]); } public function isOnSubmitStatementRegistered($key) { return isset($this->_onSubmitStatements[$key]); } public function registerArrayDeclaration($name,$value) { $this->_arrayDeclares[$name][]=$value; } public function registerScriptInclude($key,$url) { $this->_scriptIncludes[$key]=$url; } public function registerHiddenField($name,$value) { $this->_hiddenFields[$name]=$value; } public function registerOnSubmitStatement($key,$script) { $this->_onSubmitStatements[$key]=$script; } public function registerBeginScript($key,$script) { $this->_beginScripts[$key]=$script; } public function registerEndScript($key,$script) { $this->_endScripts[$key]=$script; } public function registerExpandoAttribute($controlID,$name,$value) { $this->_expandoAttributes[$controlID][$name]=$value; } public function renderArrayDeclarations($writer) { if(count($this->_arrayDeclares)) { $str="\n"; $writer->write($str); } } public function renderScriptIncludes($writer) { foreach($this->_scriptIncludes as $include) $writer->write("\n"); } public function renderOnSubmitStatements($writer) { // ??? } 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) { $str=''; foreach($this->_hiddenFields as $name=>$value) { $value=THttpUtility::htmlEncode($value); $str.="\n"; } if($str!=='') $writer->write($str); } public function renderExpandoAttributes($writer) { if(count($this->_expandoAttributes)) { $str="\n"; $writer->write($str); } } public function getHasHiddenFields() { return count($this->_hiddenFields)>0; } public function getHasSubmitStatements() { return count($this->_onSubmitStatements)>0; } /* internal void RenderWebFormsScript(HtmlTextWriter writer) private void EnsureEventValidationFieldLoaded(); internal string GetEventValidationFieldValue(); public string GetWebResourceUrl(Type type, string resourceName); public void RegisterClientScriptResource(Type type, string resourceName); internal void RegisterDefaultButtonScript(Control button, $writer, bool useAddAttribute); public function SaveEventValidationField(); public void ValidateEvent(string uniqueId, string argument); public function getCallbackEventReference() */ } ?>