summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2007-01-20 01:27:31 +0100
committerAndreas Gohr <andi@splitbrain.org>2007-01-20 01:27:31 +0100
commitc327d6c4ca39da52e40a5bf854f4223f32f12196 (patch)
tree67da65f2df34616635ce7f384f33839c9c2210af
parent863befa13c43cdca8f33d5c6bd0b05f7a7618214 (diff)
downloadrpg-c327d6c4ca39da52e40a5bf854f4223f32f12196.tar.gz
rpg-c327d6c4ca39da52e40a5bf854f4223f32f12196.tar.bz2
Some renderer plugin updates
The namingscheme for renderer plugins now matches the other types, the plugin manager now returns info on renderer plugins, too darcs-hash:20070120002731-7ad00-fcea93a6a6da807103b6aa82d6472196125cb3ec.gz
-rw-r--r--inc/parserutils.php34
-rw-r--r--inc/pluginutils.php18
2 files changed, 27 insertions, 25 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();
diff --git a/inc/pluginutils.php b/inc/pluginutils.php
index 183e22229..8e0d686b6 100644
--- a/inc/pluginutils.php
+++ b/inc/pluginutils.php
@@ -5,18 +5,18 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Andreas Gohr <andi@splitbrain.org>
*/
-
+
// plugin related constants
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
-$plugin_types = array('admin','syntax','action');
-
+$plugin_types = array('admin','syntax','action','renderer');
+
/**
* Returns a list of available plugins of given type
*
- * @param $type string, plugin_type name;
- * the type of plugin to return,
+ * @param $type string, plugin_type name;
+ * the type of plugin to return,
* use empty string for all types
- * @param $all bool;
+ * @param $all bool;
* false to only return enabled plugins,
* true to return both enabled and disabled plugins
*
@@ -30,9 +30,9 @@ function plugin_list($type='',$all=false){
while (false !== ($plugin = readdir($dh))) {
if ($plugin == '.' || $plugin == '..' || $plugin == 'tmp') continue;
if (is_file(DOKU_PLUGIN.$plugin)) continue;
-
- // if required, skip disabled plugins
- if (!$all && plugin_isdisabled($plugin)) continue;
+
+ // if required, skip disabled plugins
+ if (!$all && plugin_isdisabled($plugin)) continue;
if ($type=='' || @file_exists(DOKU_PLUGIN."$plugin/$type.php")){
$plugins[] = $plugin;