From 3126610fdab66c4e83de00d36a762af30199238d Mon Sep 17 00:00:00 2001 From: xue <> Date: Thu, 29 Dec 2005 12:20:57 +0000 Subject: Modified TTextHighlighter so that it can highlight its body content including output of its child controls. Modified ViewSource to make use of TTextHighlighter. --- .../protected/controls/TTextHighlighter.php | 25 +++++++++++----------- demos/quickstart/protected/pages/ViewSource.page | 2 +- demos/quickstart/protected/pages/ViewSource.php | 23 +++++++++++++++++--- 3 files changed, 34 insertions(+), 16 deletions(-) (limited to 'demos/quickstart') diff --git a/demos/quickstart/protected/controls/TTextHighlighter.php b/demos/quickstart/protected/controls/TTextHighlighter.php index 19b54ad2..b89e5274 100644 --- a/demos/quickstart/protected/controls/TTextHighlighter.php +++ b/demos/quickstart/protected/controls/TTextHighlighter.php @@ -2,6 +2,8 @@ require_once(dirname(__FILE__).'/Highlighter/geshi.php'); +Prado::using('System.IO.TTextWriter'); + /** * ${classname} * @@ -51,18 +53,17 @@ class TTextHighlighter extends TWebControl $this->setViewState('Entities', TPropertyValue::ensureBoolean($value), false); } - /** - * Parse the body string using GeSHi to highlight the contents. - */ - public function addParsedObject($object) + protected function onPreRender($writer) { - if(is_string($object)) - { - $this->registerTextHighlightStyleSheet(); - $this->getControls()->add($this->getTextHighlight($object)); - } - else - $this->getControls()->add($object); + parent::onPreRender($writer); + $this->registerTextHighlightStyleSheet(); + } + + protected function renderContents($writer) + { + $textWriter=new TTextWriter; + parent::renderContents(new THtmlWriter($textWriter)); + $writer->write($this->highlightText($textWriter->flush())); } /** @@ -83,7 +84,7 @@ class TTextHighlighter extends TWebControl * @param string text to highlight. * @return string highlighted text. */ - protected function getTextHighlight($text) + protected function highlightText($text) { if(!$this->getEnableEntities()) $text = html_entity_decode($text); diff --git a/demos/quickstart/protected/pages/ViewSource.page b/demos/quickstart/protected/pages/ViewSource.page index 3c175c80..21ddafa8 100644 --- a/demos/quickstart/protected/pages/ViewSource.page +++ b/demos/quickstart/protected/pages/ViewSource.page @@ -10,7 +10,7 @@
- +
diff --git a/demos/quickstart/protected/pages/ViewSource.php b/demos/quickstart/protected/pages/ViewSource.php index 65cefa70..2cb3df08 100644 --- a/demos/quickstart/protected/pages/ViewSource.php +++ b/demos/quickstart/protected/pages/ViewSource.php @@ -24,9 +24,10 @@ class ViewSource extends TPage 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($this->getFileExtension($fullPath))) + if($this->isFileTypeAllowed($fileExt)) { $this->_fullPath=strtr($fullPath,'\\','/'); $this->_path=strtr(substr($fullPath,strlen($this->Service->BasePath)),'\\','/'); @@ -59,8 +60,24 @@ class ViewSource extends TPage $this->SourceList->Text=$str; } - $this->SourceView->Text=highlight_string(file_get_contents($this->_fullPath),true); - //$this->SourceView->Text=file_get_contents($this->_fullPath); + 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); } } -- cgit v1.2.3