summaryrefslogtreecommitdiff
path: root/inc/parserutils.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/parserutils.php')
-rw-r--r--inc/parserutils.php34
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();