xref: /plugin/include/syntax/wrap.php (revision fa08f439ac00830e608a5a934a279f8bd88f0b35)
1*fa08f439SMichael Hamann<?php
2*fa08f439SMichael Hamann/**
3*fa08f439SMichael Hamann * Include plugin (wrapper component)
4*fa08f439SMichael Hamann *
5*fa08f439SMichael Hamann * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
6*fa08f439SMichael Hamann * @author  Michael Klier <chi@chimeric.de>
7*fa08f439SMichael Hamann * @author  Michael Hamann <michael@content-space.de>
8*fa08f439SMichael Hamann */
9*fa08f439SMichael Hamann
10*fa08f439SMichael Hamannif (!defined('DOKU_INC'))
11*fa08f439SMichael Hamann    define('DOKU_INC', realpath(dirname(__FILE__) . '/../../') . '/');
12*fa08f439SMichael Hamannif (!defined('DOKU_PLUGIN'))
13*fa08f439SMichael Hamann    define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
14*fa08f439SMichael Hamannrequire_once (DOKU_PLUGIN . 'syntax.php');
15*fa08f439SMichael Hamann
16*fa08f439SMichael Hamannclass syntax_plugin_include_wrap extends DokuWiki_Syntax_Plugin {
17*fa08f439SMichael Hamann
18*fa08f439SMichael Hamann    function getType() {
19*fa08f439SMichael Hamann        return 'formatting';
20*fa08f439SMichael Hamann    }
21*fa08f439SMichael Hamann
22*fa08f439SMichael Hamann    function getSort() {
23*fa08f439SMichael Hamann        return 50;
24*fa08f439SMichael Hamann    }
25*fa08f439SMichael Hamann
26*fa08f439SMichael Hamann    function handle($match, $state, $pos, &$handler) {
27*fa08f439SMichael Hamann        // this is a syntax plugin that doesn't offer any syntax, so there's nothing to handle by the parser
28*fa08f439SMichael Hamann    }
29*fa08f439SMichael Hamann
30*fa08f439SMichael Hamann    /**
31*fa08f439SMichael Hamann     * Wraps the included page in a div and writes section edits for the action component
32*fa08f439SMichael Hamann     * so it can detect where an included page starts/ends.
33*fa08f439SMichael Hamann     *
34*fa08f439SMichael Hamann     * @author Michael Klier <chi@chimeric.de>
35*fa08f439SMichael Hamann     * @author Michael Hamann <michael@content-space.de>
36*fa08f439SMichael Hamann     */
37*fa08f439SMichael Hamann    function render($mode, &$renderer, $data) {
38*fa08f439SMichael Hamann        if ($mode == 'xhtml') {
39*fa08f439SMichael Hamann            switch($data[0]) {
40*fa08f439SMichael Hamann                case 'open':
41*fa08f439SMichael Hamann                    $renderer->startSectionEdit(0, 'plugin_include_start', $data[1]);
42*fa08f439SMichael Hamann                    $renderer->finishSectionEdit();
43*fa08f439SMichael Hamann                    // Start a new section with type != section so headers in the included page
44*fa08f439SMichael Hamann                    // won't print section edit buttons of the parent page
45*fa08f439SMichael Hamann                    $renderer->startSectionEdit(0, 'plugin_include_end', $data[1]);
46*fa08f439SMichael Hamann                    $renderer->doc .= '<div class="plugin_include_content plugin_include__' . $data[1] . '">' . DOKU_LF;
47*fa08f439SMichael Hamann                    break;
48*fa08f439SMichael Hamann                case 'close':
49*fa08f439SMichael Hamann                    $renderer->finishSectionEdit();
50*fa08f439SMichael Hamann                    $renderer->doc .= '</div>' . DOKU_LF;
51*fa08f439SMichael Hamann                    break;
52*fa08f439SMichael Hamann            }
53*fa08f439SMichael Hamann            return true;
54*fa08f439SMichael Hamann        }
55*fa08f439SMichael Hamann        return false;
56*fa08f439SMichael Hamann    }
57*fa08f439SMichael Hamann}
58*fa08f439SMichael Hamann// vim:ts=4:sw=4:et:
59