From abc5bbd9c771dcecfa41ba3590cce1c1ef190cdd Mon Sep 17 00:00:00 2001 From: wei <> Date: Sun, 15 Jan 2006 11:04:00 +0000 Subject: --- tests/FunctionalTests/protected/pages/Layout.tpl | 2 +- .../protected/pages/ViewSource.page | 7 +- .../FunctionalTests/protected/pages/ViewSource.php | 79 +++++++++++++++++++++- 3 files changed, 83 insertions(+), 5 deletions(-) (limited to 'tests') diff --git a/tests/FunctionalTests/protected/pages/Layout.tpl b/tests/FunctionalTests/protected/pages/Layout.tpl index 36fabe71..9a798b3c 100644 --- a/tests/FunctionalTests/protected/pages/Layout.tpl +++ b/tests/FunctionalTests/protected/pages/Layout.tpl @@ -27,7 +27,7 @@ Validate XHTML 1.0 -View Source diff --git a/tests/FunctionalTests/protected/pages/ViewSource.page b/tests/FunctionalTests/protected/pages/ViewSource.page index 900c45f6..218cc901 100644 --- a/tests/FunctionalTests/protected/pages/ViewSource.page +++ b/tests/FunctionalTests/protected/pages/ViewSource.page @@ -6,13 +6,18 @@ +
+ +Show Line Numbers
- + +
\ No newline at end of file diff --git a/tests/FunctionalTests/protected/pages/ViewSource.php b/tests/FunctionalTests/protected/pages/ViewSource.php index eeaf0f80..84f39161 100644 --- a/tests/FunctionalTests/protected/pages/ViewSource.php +++ b/tests/FunctionalTests/protected/pages/ViewSource.php @@ -2,10 +2,83 @@ class ViewSource extends TPage { - protected function onLoad($param) + private $_path=null; + private $_fullPath=null; + private $_fileType=null; + + protected function isFileTypeAllowed($extension) + { + return in_array($extension,array('tpl','page','php')); + } + + protected function getFileExtension($fileName) + { + if(($pos=strrpos($fileName,'.'))===false) + return ''; + else + return substr($fileName,$pos+1); + } + + public function onLoad($param) { - $pageName = $this->Request->getParameter("source"); - var_dump($pageName); + parent::onLoad($param); + $path=$this->Request->Items['path']; + $fullPath=realpath($this->Service->BasePath.'/'.$path); + $fileExt=$this->getFileExtension($fullPath); + if($fullPath!==false && is_file($fullPath) && strpos($fullPath,$this->Service->BasePath)!==false) + { + if($this->isFileTypeAllowed($fileExt)) + { + $this->_fullPath=strtr($fullPath,'\\','/'); + $this->_path=strtr(substr($fullPath,strlen($this->Service->BasePath)),'\\','/'); + } + } + if($this->_fullPath===null) + throw new THttpException(500,'File Not Found: %s',$path); + $basePath=dirname($this->_fullPath); + if($dh=opendir($basePath)) + { + $str="

{$this->_path}

\n"; + while(($file=readdir($dh))!==false) + { + if(is_file($basePath.'/'.$file)) + { + $fileType=$this->getFileExtension($basePath.'/'.$file); + if($this->isFileTypeAllowed($fileType)) + { + if($fileType==='tpl' || $fileType==='page') + $type='Template file'; + else + $type='Class file'; + $path='/'.ltrim(strtr(dirname($this->_path),'\\','/').'/'.$file,'/'); + $str.="$type: $file
"; + } + } + + } + closedir($dh); + $this->SourceList->Text=$str; + } + + switch($fileExt) + { + case 'page' : + case 'tpl' : + $this->Highlighter->Language='prado'; + break; + case 'php' : + $this->Highlighter->Language='php'; + break; + case 'xml' : + $this->Highlighter->Language='xml'; + break; + default : + $this->Highlighter->Language='html'; + break; + } + + $this->SourceView->Text=file_get_contents($this->_fullPath); + $this->dataBind(); } } -- cgit v1.2.3