diff options
Diffstat (limited to 'inc/parserutils.php')
-rw-r--r-- | inc/parserutils.php | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/inc/parserutils.php b/inc/parserutils.php index 2c38e88a0..b5dbce4dd 100644 --- a/inc/parserutils.php +++ b/inc/parserutils.php @@ -513,25 +513,27 @@ function p_sort_modes($a, $b){ function p_render($mode,$instructions,& $info){ if(is_null($instructions)) return ''; - // Create the renderer - $file = DOKU_INC.'lib/plugins/'.$mode.'/renderer.php'; - if(!@file_exists($file)){ - $file = DOKU_INC."inc/parser/$mode.php"; - } - if(!@file_exists($file)){ - msg("No renderer for $mode found",-1); - return null; - } - require_once $file; + // try default renderer first: + $file = DOKU_INC."inc/parser/$mode.php"; + if(@file_exists($file)){ + require_once $file; + $rclass = "Doku_Renderer_$mode"; - $rclass = "Doku_Renderer_$mode"; - if ( !class_exists($rclass) ) { - trigger_error("Unable to resolve render class $rclass",E_USER_WARNING); - msg("Renderer for $mode not valid",-1); - return null; + if ( !class_exists($rclass) ) { + trigger_error("Unable to resolve render class $rclass",E_USER_WARNING); + msg("Renderer for $mode not valid",-1); + return null; + } + $Renderer = & new $rclass(); + }else{ + // Maybe a plugin is available? + $Renderer =& plugin_load('renderer',$mode); + if(is_null($Renderer)){ + msg("No renderer for $mode found",-1); + return null; + } } - $Renderer = & new $rclass(); #FIXME any way to check for class existance? $Renderer->smileys = getSmileys(); $Renderer->entities = getEntities(); |