From 3ea63072225a473239227facfabde294bb58ed1d Mon Sep 17 00:00:00 2001 From: xue <> Date: Sat, 3 Dec 2005 16:19:08 +0000 Subject: --- framework/Exceptions/TErrorHandler.php | 48 ++++++++-------------- framework/Exceptions/templates/error-fr.html | 3 +- framework/Exceptions/templates/error-zh.html | 11 +++-- framework/Exceptions/templates/error.html | 3 +- framework/Exceptions/templates/error404-en.html | 3 +- framework/Exceptions/templates/error404-fr.html | 3 +- framework/Exceptions/templates/error404-zh.html | 3 +- framework/Exceptions/templates/error404.html | 3 +- framework/Exceptions/templates/error500-en.html | 3 +- framework/Exceptions/templates/error500-fr.html | 3 +- framework/Exceptions/templates/error500-zh.html | 3 +- framework/Exceptions/templates/error500.html | 3 +- framework/Exceptions/templates/error503-en.html | 3 +- framework/Exceptions/templates/error503-fr.html | 3 +- framework/Exceptions/templates/error503-zh.html | 3 +- framework/Exceptions/templates/error503.html | 3 +- framework/Exceptions/templates/exception-en.html | 3 +- framework/Exceptions/templates/exception-fr.html | 7 ++-- framework/Exceptions/templates/exception-zh.html | 3 +- framework/Exceptions/templates/exception.html | 3 +- .../Web/UI/THiddenFieldPageStatePersister.php | 9 ++-- framework/Web/UI/TPage.php | 40 ++++++------------ 22 files changed, 58 insertions(+), 108 deletions(-) (limited to 'framework') diff --git a/framework/Exceptions/TErrorHandler.php b/framework/Exceptions/TErrorHandler.php index e9f48a2b..7d914fca 100644 --- a/framework/Exceptions/TErrorHandler.php +++ b/framework/Exceptions/TErrorHandler.php @@ -190,21 +190,14 @@ class TErrorHandler extends TComponent implements IModule die("Unable to open error template file '$errorFile'."); $serverAdmin=isset($_SERVER['SERVER_ADMIN'])?$_SERVER['SERVER_ADMIN']:''; - $fields=array( - '%%StatusCode%%', - '%%ErrorMessage%%', - '%%ServerAdmin%%', - '%%Version%%', - '%%Time%%' + $tokens=array( + '%%StatusCode%%' => "$statusCode", + '%%ErrorMessage%%' => htmlspecialchars($exception->getMessage()), + '%%ServerAdmin%%' => $serverAdmin, + '%%Version%%' => $_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(), + '%%Time%%' => strftime('%Y-%m-%d %H:%m',time()) ); - $values=array( - "$statusCode", - htmlspecialchars($exception->getMessage()), - $serverAdmin, - $_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(), - strftime('%Y-%m-%d %H:%m',time()) - ); - echo str_replace($fields,$values,$content); + echo strtr($content,$tokens); } /** @@ -257,23 +250,14 @@ class TErrorHandler extends TComponent implements IModule $source.=htmlspecialchars(sprintf("%04d: %s",$i+1,str_replace("\t",' ',$lines[$i]))); } - $fields=array( - '%%ErrorType%%', - '%%ErrorMessage%%', - '%%SourceFile%%', - '%%SourceCode%%', - '%%StackTrace%%', - '%%Version%%', - '%%Time%%' - ); - $values=array( - get_class($exception), - htmlspecialchars($exception->getMessage()), - htmlspecialchars($exception->getFile()).' ('.$exception->getLine().')', - $source, - htmlspecialchars($exception->getTraceAsString()), - $_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(), - strftime('%Y-%m-%d %H:%m',time()) + $tokens=array( + '%%ErrorType%%' => get_class($exception), + '%%ErrorMessage%%' => htmlspecialchars($exception->getMessage()), + '%%SourceFile%%' => htmlspecialchars($exception->getFile()).' ('.$exception->getLine().')', + '%%SourceCode%%' => $source, + '%%StackTrace%%' => htmlspecialchars($exception->getTraceAsString()), + '%%Version%%' => $_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(), + '%%Time%%' => strftime('%Y-%m-%d %H:%m',time()) ); $lang=Prado::getPreferredLanguage(); $exceptionFile=Prado::getFrameworkPath().'/Exceptions/templates/'.self::EXCEPTION_FILE_NAME.'-'.$lang.'.html'; @@ -281,7 +265,7 @@ class TErrorHandler extends TComponent implements IModule $exceptionFile=Prado::getFrameworkPath().'/Exceptions/templates/'.self::EXCEPTION_FILE_NAME.'.html'; if(($content=@file_get_contents($exceptionFile))===false) die("Unable to open exception template file '$exceptionFile'."); - echo str_replace($fields,$values,$content); + echo strtr($content,$tokens); } } diff --git a/framework/Exceptions/templates/error-fr.html b/framework/Exceptions/templates/error-fr.html index edea47bc..5546dcdb 100644 --- a/framework/Exceptions/templates/error-fr.html +++ b/framework/Exceptions/templates/error-fr.html @@ -23,8 +23,7 @@ Cette erreur est survenue en essayant de répondre à votre requête. Si vous pensez qu'il s'agit d'une erreur inattendue du serveur, merci de contacter l'administrateur

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error-zh.html b/framework/Exceptions/templates/error-zh.html index af921417..545f057c 100644 --- a/framework/Exceptions/templates/error-zh.html +++ b/framework/Exceptions/templates/error-zh.html @@ -1,4 +1,4 @@ - + @@ -14,17 +14,16 @@ p {font-family:"Verdana";font-weight:normal;color:black;font-size:9pt;margin-top -

Error %%StatusCode%%

+

错误%%StatusCode%%

%%ErrorMessage%%

-The above error happened when the server was processing your request. +服务器在处理您的页面请求时出现了以上错误。

-If you think this is a server error, please contact the webmaster. +如果您认为这是服务器的原因,请联系通知系统管理员

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error.html b/framework/Exceptions/templates/error.html index 0dd625b6..931f96a3 100644 --- a/framework/Exceptions/templates/error.html +++ b/framework/Exceptions/templates/error.html @@ -23,8 +23,7 @@ The above error happened when the server was processing your request. If you think this is a server error, please contact the webmaster.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error404-en.html b/framework/Exceptions/templates/error404-en.html index 1f6610fe..92ac65b1 100644 --- a/framework/Exceptions/templates/error404-en.html +++ b/framework/Exceptions/templates/error404-en.html @@ -24,8 +24,7 @@ If you entered the URL manually please check your spelling and try again. If you think this is a server error, please contact the webmaster.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error404-fr.html b/framework/Exceptions/templates/error404-fr.html index 76c219bb..181bd8a7 100644 --- a/framework/Exceptions/templates/error404-fr.html +++ b/framework/Exceptions/templates/error404-fr.html @@ -24,8 +24,7 @@ Si vous avez tapé cette URL manuellement dans la barre d'adresse, merci de vér Si vous pensez qu'il s'agit d'une erreur inattendue du serveur, merci de contacter l'administrateur

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error404-zh.html b/framework/Exceptions/templates/error404-zh.html index 7766acd4..ae5d8275 100644 --- a/framework/Exceptions/templates/error404-zh.html +++ b/framework/Exceptions/templates/error404-zh.html @@ -24,8 +24,7 @@ p {font-family:"Verdana";font-weight:normal;color:black;font-size:9pt;margin-top 如果您确认这是服务器错误,请联系系统管理员

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error404.html b/framework/Exceptions/templates/error404.html index 1f6610fe..92ac65b1 100644 --- a/framework/Exceptions/templates/error404.html +++ b/framework/Exceptions/templates/error404.html @@ -24,8 +24,7 @@ If you entered the URL manually please check your spelling and try again. If you think this is a server error, please contact the webmaster.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error500-en.html b/framework/Exceptions/templates/error500-en.html index 1c7c531e..25d4ad92 100644 --- a/framework/Exceptions/templates/error500-en.html +++ b/framework/Exceptions/templates/error500-en.html @@ -24,8 +24,7 @@ Please contact the webmaster to report this Thank you.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error500-fr.html b/framework/Exceptions/templates/error500-fr.html index c7685e1c..804425ef 100644 --- a/framework/Exceptions/templates/error500-fr.html +++ b/framework/Exceptions/templates/error500-fr.html @@ -24,8 +24,7 @@ Veuillez contacter l'administrateur pour lu Merci de votre compréhension.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error500-zh.html b/framework/Exceptions/templates/error500-zh.html index 647f8dec..a10dbba4 100644 --- a/framework/Exceptions/templates/error500-zh.html +++ b/framework/Exceptions/templates/error500-zh.html @@ -23,8 +23,7 @@ p {font-family:"Verdana";font-weight:normal;color:black;font-size:9pt;margin-top 谢谢。

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error500.html b/framework/Exceptions/templates/error500.html index 1c7c531e..25d4ad92 100644 --- a/framework/Exceptions/templates/error500.html +++ b/framework/Exceptions/templates/error500.html @@ -24,8 +24,7 @@ Please contact the webmaster to report this Thank you.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error503-en.html b/framework/Exceptions/templates/error503-en.html index 007a498c..718dd4ea 100644 --- a/framework/Exceptions/templates/error503-en.html +++ b/framework/Exceptions/templates/error503-en.html @@ -22,8 +22,7 @@ Our system is currently under maintenance. Please come back later. Thank you.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error503-fr.html b/framework/Exceptions/templates/error503-fr.html index 34198a0f..699114de 100644 --- a/framework/Exceptions/templates/error503-fr.html +++ b/framework/Exceptions/templates/error503-fr.html @@ -22,8 +22,7 @@ Le service est actuellement en maintenance et indisponible. Merci de réessayer Merci de votre compréhension.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error503-zh.html b/framework/Exceptions/templates/error503-zh.html index 7ce0c29d..5babac19 100644 --- a/framework/Exceptions/templates/error503-zh.html +++ b/framework/Exceptions/templates/error503-zh.html @@ -22,8 +22,7 @@ p {font-family:"Verdana";font-weight:normal;color:black;font-size:9pt;margin-top 谢谢。

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/error503.html b/framework/Exceptions/templates/error503.html index 007a498c..718dd4ea 100644 --- a/framework/Exceptions/templates/error503.html +++ b/framework/Exceptions/templates/error503.html @@ -22,8 +22,7 @@ Our system is currently under maintenance. Please come back later. Thank you.

-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/exception-en.html b/framework/Exceptions/templates/exception-en.html index 7dd133f5..45fc264c 100644 --- a/framework/Exceptions/templates/exception-en.html +++ b/framework/Exceptions/templates/exception-en.html @@ -35,8 +35,7 @@ td,.version {color: gray;font-size:8pt;border-top:1px solid #aaaaaa;}
-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/exception-fr.html b/framework/Exceptions/templates/exception-fr.html index 7da91bfd..b6f1369b 100644 --- a/framework/Exceptions/templates/exception-fr.html +++ b/framework/Exceptions/templates/exception-fr.html @@ -1,4 +1,4 @@ - + @@ -28,15 +28,14 @@ td,.version {color: gray;font-size:8pt;border-top:1px solid #aaaaaa;} %%SourceCode%% -

Trace de la pile d'excution:

+

Trace de la pile d'ex閏ution:

 %%StackTrace%%
 
-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/exception-zh.html b/framework/Exceptions/templates/exception-zh.html index ed8db236..8568dde1 100644 --- a/framework/Exceptions/templates/exception-zh.html +++ b/framework/Exceptions/templates/exception-zh.html @@ -35,8 +35,7 @@ td,.version {color: gray;font-size:8pt;border-top:1px solid #aaaaaa;}
-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Exceptions/templates/exception.html b/framework/Exceptions/templates/exception.html index 7dd133f5..45fc264c 100644 --- a/framework/Exceptions/templates/exception.html +++ b/framework/Exceptions/templates/exception.html @@ -35,8 +35,7 @@ td,.version {color: gray;font-size:8pt;border-top:1px solid #aaaaaa;}
-%%Version%%
-%%Time%% +%%Time%% %%Version%%
\ No newline at end of file diff --git a/framework/Web/UI/THiddenFieldPageStatePersister.php b/framework/Web/UI/THiddenFieldPageStatePersister.php index bd32f686..5525b50a 100644 --- a/framework/Web/UI/THiddenFieldPageStatePersister.php +++ b/framework/Web/UI/THiddenFieldPageStatePersister.php @@ -14,6 +14,7 @@ class THiddenFieldPageStatePersister extends TComponent implements IPageStatePer public function init($application, $config) { $this->_application=$application; + $application->getService()->setPageStatePersister($this); } /** @@ -36,19 +37,19 @@ class THiddenFieldPageStatePersister extends TComponent implements IPageStatePer { $data=Prado::serialize($state); $hmac=$this->computeHMAC($data,$this->getKey()); - if(function_exists('gzuncompress') && function_exists('gzcompress')) + if(extension_loaded('zlib')) $data=gzcompress($hmac.$data); else $data=$hmac.$data; - $this->_application->getService()->getRequestedPage()->saveStateField($data); + $this->_application->getService()->getRequestedPage()->getClientScript()->registerHiddenField(TClientScriptManager::FIELD_PAGE_STATE,base64_encode($data)); } public function load() { - $str=$this->_application->getService()->getRequestedPage()->loadStateField(); + $str=base64_decode($this->_application->getRequest()->getItems()->itemAt(TClientScriptManager::FIELD_PAGE_STATE)); if($str==='') return null; - if(function_exists('gzuncompress') && function_exists('gzcompress')) + if(extension_loaded('zlib')) $data=gzuncompress($str); else $data=$str; diff --git a/framework/Web/UI/TPage.php b/framework/Web/UI/TPage.php index 9eb50cde..4c04f597 100644 --- a/framework/Web/UI/TPage.php +++ b/framework/Web/UI/TPage.php @@ -13,6 +13,10 @@ class TPage extends TTemplateControl * @var TPageService page service instance */ private $_pageService; + /** + * @var TForm form instance + */ + private $_form=null; /** * @var string template file name */ @@ -37,25 +41,28 @@ class TPage extends TTemplateControl * @var TClientScriptManager client script manager */ private $_clientScript=null; + /** + * @var TMap data post back by user + */ + private $_postData; + /** + * @var TMap postback data that is not handled during first invocation of LoadPostData. + */ + private $_restPostData; private $_maxPageStateFieldLength=10; private $_enableViewStateMac=true; private $_performPreRendering=true; private $_performRendering=true; - private $_form=null; private $_formRendered=false; private $_inFormRender=false; - private $_pageState=''; private $_requirePostBackScript=false; private $_postBackScriptRendered=false; private $_isCrossPagePostBack=false; private $_previousPagePath=''; private $_preInitWorkComplete=false; private $_changedPostDataConsumers=array(); - private $_postData; - private $_restPostData; - private $_pageStateChanged=false; private $_controlsRequiringPostBack=array(); private $_registeredControlThatRequireRaiseEvent=null; private $_registeredControlsThatRequirePostBack=null; @@ -409,24 +416,6 @@ class TPage extends TTemplateControl $this->getPageStatePersister()->save($state); } - /** - * Loads page state data from a hidden field. - * @return string page state data stored in hidden field - */ - public function loadStateField() - { - return base64_decode($this->_postData->itemAt(TClientScriptManager::FIELD_PAGE_STATE)); - } - - /** - * Saves page state data in a hidden field. - * @param string string representation of the page state data. - */ - public function saveStateField($state) - { - $this->getClientScript()->registerHiddenField(TClientScriptManager::FIELD_PAGE_STATE,base64_encode($state)); - } - public function RegisterEnabledControl($control) { $this->getEna.EnabledControls.Add(control); @@ -603,11 +592,6 @@ EOD; $this->_registeredControlThatRequireRaiseEvent=$control; } - public function getApplication() - { - return $this->_application; - } - protected function processPostData($postData,$beforeLoad) { $eventTarget=$postData->itemAt('__EVENTTARGET'); -- cgit v1.2.3