1*71ec1101SGina Haeussge<?php 2*71ec1101SGina Haeussge/** 3*71ec1101SGina Haeussge * Include plugin (permalink header component) 4*71ec1101SGina Haeussge * 5*71ec1101SGina Haeussge * Provides a header instruction which renders a permalink to the included page 6*71ec1101SGina Haeussge * 7*71ec1101SGina Haeussge * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 8*71ec1101SGina Haeussge * @author Gina Haeussge <osd@foosel.net> 9*71ec1101SGina Haeussge * @author Michael Klier <chi@chimeric.de> 10*71ec1101SGina Haeussge */ 11*71ec1101SGina Haeussge 12*71ec1101SGina Haeussgeif (!defined('DOKU_INC')) 13*71ec1101SGina Haeussge define('DOKU_INC', realpath(dirname(__FILE__) . '/../../') . '/'); 14*71ec1101SGina Haeussgeif (!defined('DOKU_PLUGIN')) 15*71ec1101SGina Haeussge define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/'); 16*71ec1101SGina Haeussgerequire_once (DOKU_PLUGIN . 'syntax.php'); 17*71ec1101SGina Haeussge 18*71ec1101SGina Haeussgeclass syntax_plugin_include_header extends DokuWiki_Syntax_Plugin { 19*71ec1101SGina Haeussge 20*71ec1101SGina Haeussge function getInfo() { 21*71ec1101SGina Haeussge return array ( 22*71ec1101SGina Haeussge 'author' => 'Gina Häußge, Michael Klier', 23*71ec1101SGina Haeussge 'email' => 'dokuwiki@chimeric.de', 24*71ec1101SGina Haeussge 'date' => '2008-06-28', 25*71ec1101SGina Haeussge 'name' => 'Include Plugin (permalink header component)', 26*71ec1101SGina Haeussge 'desc' => 'Provides a header instruction which renders a permalink to the included page', 27*71ec1101SGina Haeussge 'url' => 'http://wiki.splitbrain.org/plugin:include', 28*71ec1101SGina Haeussge ); 29*71ec1101SGina Haeussge } 30*71ec1101SGina Haeussge 31*71ec1101SGina Haeussge function getType() { 32*71ec1101SGina Haeussge return 'formatting'; 33*71ec1101SGina Haeussge } 34*71ec1101SGina Haeussge 35*71ec1101SGina Haeussge function getSort() { 36*71ec1101SGina Haeussge return 50; 37*71ec1101SGina Haeussge } 38*71ec1101SGina Haeussge 39*71ec1101SGina Haeussge function handle($match, $state, $pos, &$handler) { 40*71ec1101SGina Haeussge // this is a syntax plugin that doesn't offer any syntax, so there's nothing to handle by the parser 41*71ec1101SGina Haeussge } 42*71ec1101SGina Haeussge 43*71ec1101SGina Haeussge /** 44*71ec1101SGina Haeussge * Renders a permalink header. 45*71ec1101SGina Haeussge * 46*71ec1101SGina Haeussge * Code heavily copied from the header renderer from inc/parser/xhtml.php, just 47*71ec1101SGina Haeussge * added an href parameter to the anchor tag linking to the wikilink. 48*71ec1101SGina Haeussge */ 49*71ec1101SGina Haeussge function render($mode, &$renderer, $indata) { 50*71ec1101SGina Haeussge global $ID; 51*71ec1101SGina Haeussge list($text, $level, $pos) = $indata; 52*71ec1101SGina Haeussge 53*71ec1101SGina Haeussge if ($mode == 'xhtml') { 54*71ec1101SGina Haeussge $hid = $renderer->_headerToLink($text,true); 55*71ec1101SGina Haeussge 56*71ec1101SGina Haeussge //only add items within configured levels 57*71ec1101SGina Haeussge $renderer->toc_additem($hid, $text, $level); 58*71ec1101SGina Haeussge 59*71ec1101SGina Haeussge // write the header 60*71ec1101SGina Haeussge $renderer->doc .= DOKU_LF.'<h'.$level.'><a name="'.$hid.'" id="'.$hid.'" href="'.wl($ID).'">'; 61*71ec1101SGina Haeussge $renderer->doc .= $renderer->_xmlEntities($text); 62*71ec1101SGina Haeussge $renderer->doc .= "</a></h$level>".DOKU_LF; 63*71ec1101SGina Haeussge 64*71ec1101SGina Haeussge return true; 65*71ec1101SGina Haeussge } 66*71ec1101SGina Haeussge 67*71ec1101SGina Haeussge // unsupported $mode 68*71ec1101SGina Haeussge return false; 69*71ec1101SGina Haeussge } 70*71ec1101SGina Haeussge} 71*71ec1101SGina Haeussge 72*71ec1101SGina Haeussge//Setup VIM: ex: et ts=4 enc=utf-8 : 73