xref: /plugin/include/syntax/header.php (revision 71ec110157357319e914a434bc535b5b0c2fb3bd)
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