xref: /plugin/acknowledge/syntax/assign.php (revision 5773dd375a3cbf135e65b74d1b5793a79b587f9e)
1*5773dd37SAnna Dabrowska<?php
2*5773dd37SAnna Dabrowska/**
3*5773dd37SAnna Dabrowska * DokuWiki Plugin acknowledge (Syntax Component)
4*5773dd37SAnna Dabrowska *
5*5773dd37SAnna Dabrowska * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6*5773dd37SAnna Dabrowska * @author  Andreas Gohr, Anna Dabrowska <dokuwiki@cosmocode.de>
7*5773dd37SAnna Dabrowska */
8*5773dd37SAnna Dabrowska
9*5773dd37SAnna Dabrowskaclass syntax_plugin_acknowledge_assign extends DokuWiki_Syntax_Plugin
10*5773dd37SAnna Dabrowska{
11*5773dd37SAnna Dabrowska    /** @inheritDoc */
12*5773dd37SAnna Dabrowska    public function getType()
13*5773dd37SAnna Dabrowska    {
14*5773dd37SAnna Dabrowska        return 'substition';
15*5773dd37SAnna Dabrowska    }
16*5773dd37SAnna Dabrowska
17*5773dd37SAnna Dabrowska    /** @inheritDoc */
18*5773dd37SAnna Dabrowska    public function getPType()
19*5773dd37SAnna Dabrowska    {
20*5773dd37SAnna Dabrowska        return 'block';
21*5773dd37SAnna Dabrowska    }
22*5773dd37SAnna Dabrowska
23*5773dd37SAnna Dabrowska    /** @inheritDoc */
24*5773dd37SAnna Dabrowska    public function getSort()
25*5773dd37SAnna Dabrowska    {
26*5773dd37SAnna Dabrowska        return 155;
27*5773dd37SAnna Dabrowska    }
28*5773dd37SAnna Dabrowska
29*5773dd37SAnna Dabrowska    /** @inheritDoc */
30*5773dd37SAnna Dabrowska    public function connectTo($mode)
31*5773dd37SAnna Dabrowska    {
32*5773dd37SAnna Dabrowska        $this->Lexer->addSpecialPattern('~~ACK:.*?~~', $mode, 'plugin_acknowledge_assign');
33*5773dd37SAnna Dabrowska    }
34*5773dd37SAnna Dabrowska
35*5773dd37SAnna Dabrowska
36*5773dd37SAnna Dabrowska    /** @inheritDoc */
37*5773dd37SAnna Dabrowska    public function handle($match, $state, $pos, Doku_Handler $handler)
38*5773dd37SAnna Dabrowska    {
39*5773dd37SAnna Dabrowska        $match = substr($match, 6, -2);
40*5773dd37SAnna Dabrowska        return ['assignees' => $match];
41*5773dd37SAnna Dabrowska    }
42*5773dd37SAnna Dabrowska
43*5773dd37SAnna Dabrowska    /** @inheritDoc */
44*5773dd37SAnna Dabrowska    public function render($mode, Doku_Renderer $renderer, $data)
45*5773dd37SAnna Dabrowska    {
46*5773dd37SAnna Dabrowska        global $ID;
47*5773dd37SAnna Dabrowska
48*5773dd37SAnna Dabrowska        if ($mode === 'metadata') {
49*5773dd37SAnna Dabrowska            /** @var helper_plugin_acknowledge $helper */
50*5773dd37SAnna Dabrowska            $helper = plugin_load('helper', 'acknowledge');
51*5773dd37SAnna Dabrowska            $helper->setAssignees($ID, $data['assignees']);
52*5773dd37SAnna Dabrowska            return true;
53*5773dd37SAnna Dabrowska        }
54*5773dd37SAnna Dabrowska
55*5773dd37SAnna Dabrowska        if ($mode !== 'xhtml') {
56*5773dd37SAnna Dabrowska            return false;
57*5773dd37SAnna Dabrowska        }
58*5773dd37SAnna Dabrowska
59*5773dd37SAnna Dabrowska        // a canvas to render the output to
60*5773dd37SAnna Dabrowska        $renderer->doc .= '<div class="plugin-acknowledge-assign">…</div>';
61*5773dd37SAnna Dabrowska        return true;
62*5773dd37SAnna Dabrowska    }
63*5773dd37SAnna Dabrowska}
64*5773dd37SAnna Dabrowska
65