openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 1ffc6ae3c31aaedbd27317cbede06b1b505ff301
parent d10da0a322b1357aea610f4e1387d84c65ed8ac2
Author: dankert <devnull@localhost>
Date:   Fri, 12 Feb 2010 00:52:51 +0100

Macro-Fehlermeldungen anzeigen, sofern so konfiguriert.

Diffstat:
Mconfig/editor.ini.php | 3+++
MtextClasses/renderer/HtmlRenderer.class.php | 81+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
2 files changed, 55 insertions(+), 29 deletions(-)

diff --git a/config/editor.ini.php b/config/editor.ini.php @@ -139,3 +139,6 @@ weekday_offset=1 [text] linelength=70 + +[macro] +show_errors=false diff --git a/textClasses/renderer/HtmlRenderer.class.php b/textClasses/renderer/HtmlRenderer.class.php @@ -190,50 +190,73 @@ class HtmlRenderer case 'macroelement': $tag = ''; - $className = ucfirst($child->name); - $fileName = './dynamicClasses/'.$className.'.class.php'; - if ( is_file( $fileName ) ) + + if ( strtolower($child->name) == 'help' ) { - // Fuer den Fall, dass eine Dynamic-Klasse mehrmals pro Vorlage auftritt - if ( !class_exists($className) ) - require( $fileName ); - - if ( class_exists($className) ) + $tag = 'tt'; + $macros = FileUtils::readDir('./dynamicClasses'); + $val = 'Available macros: '.implode(',',$macros); + } + else + { + $className = ucfirst($child->name); + $fileName = './dynamicClasses/'.$className.'.class.php'; + if ( is_file( $fileName ) ) { - $dynEl = new $className; - $dynEl->page = &$this->page; - - if ( method_exists( $dynEl,'execute' ) ) + // Fuer den Fall, dass eine Dynamic-Klasse mehrmals pro Vorlage auftritt + if ( !class_exists($className) ) + require( $fileName ); + + if ( class_exists($className) ) { - $dynEl->objectid = $this->page->objectid; - $dynEl->page = &$this->page; - - foreach( $child->attributes as $param_name=>$param_value ) + $dynEl = new $className; + $dynEl->page = &$this->page; + + if ( method_exists( $dynEl,'execute' ) ) { - if ( isset( $dynEl->$param_name ) ) - $dynEl->$param_name = $param_value; + $dynEl->objectid = $this->page->objectid; + $dynEl->page = &$this->page; + + foreach( $child->attributes as $param_name=>$param_value ) + { + if ( $param_name == 'help') + $val = 'Available macro attributes: '.implode(',',array_keys(get_object_vars($dynEl))); + if ( isset( $dynEl->$param_name ) ) + $dynEl->$param_name = $param_value; + } + + $dynEl->execute(); + $val .= $dynEl->getOutput(); + } + else + { + Logger::warn('element:'.$this->element->name.', '. + 'class:'.$className.', no method: execute()'); + if ( config('editor','macro','show_errors') ) + $val = 'Internal Macro error: method execute() not found'; } - - $dynEl->execute(); - $val = $dynEl->getOutput(); } else { Logger::warn('element:'.$this->element->name.', '. - 'class:'.$className.', no method: execute()'); - } + 'class not found:'.$className); + if ( config('editor','macro','show_errors') ) + $val = 'Internal Macro error: class not found'; + } } else { Logger::warn('element:'.$this->element->name.', '. - 'class not found:'.$className); + 'file not found:'.$fileName); + + if ( config('editor','macro','show_errors') ) + { + $tag = 'tt'; + $attr['style'] = 'color:red'; + $val = 'Unknown Macro: "'.$child->name.'", use macro "help" for a list of available macros'; + } } } - else - { - Logger::warn('element:'.$this->element->name.', '. - 'file not found:'.$fileName); - } break;