xref: /plugin/bez/syntax/nav.php (revision bc2653b00a718c1ef68486f970cffe35acb167aa)
165cfcae3Sghi<?php
2de02284cSSzymon Olewniczak
3de02284cSSzymon Olewniczakuse \dokuwiki\plugin\bez;
465cfcae3Sghi
565cfcae3Sghi// must be run within DokuWiki
665cfcae3Sghiif(!defined('DOKU_INC')) die();
765cfcae3Sghi
865cfcae3Sghiclass syntax_plugin_bez_nav extends DokuWiki_Syntax_Plugin {
965cfcae3Sghi
10e8827d73SSzymon Olewniczak    public function getPType() { return 'block'; }
11e8827d73SSzymon Olewniczak    public function getType() { return 'substition'; }
12e8827d73SSzymon Olewniczak    public function getSort() { return 99; }
1365cfcae3Sghi
1465cfcae3Sghi
15e8827d73SSzymon Olewniczak    public function connectTo($mode) {
1665cfcae3Sghi		$this->Lexer->addSpecialPattern('~~BEZNAV~~',$mode,'plugin_bez_nav');
1765cfcae3Sghi    }
1865cfcae3Sghi
19e8827d73SSzymon Olewniczak    public function handle($match, $state, $pos, Doku_Handler $handler) {
2065cfcae3Sghi		return true;
2165cfcae3Sghi    }
2265cfcae3Sghi
23e8827d73SSzymon Olewniczak    public function render($mode, Doku_Renderer $r, $data) {
24e8827d73SSzymon Olewniczak        if ($mode != 'xhtml') return;
2517f97301SSzymon Olewniczak
26e8827d73SSzymon Olewniczak        $r->info['cache'] = false;
2765cfcae3Sghi
28e8827d73SSzymon Olewniczak        $r->doc .= '<nav id="plugin__bez">';
29e8827d73SSzymon Olewniczak        $r->doc .= '<div style="background-color: #eee; color: #333; padding: 0 .3em;">' .
30e8827d73SSzymon Olewniczak            inlineSVG(DOKU_PLUGIN . 'bez/images/logo.svg') .
31e8827d73SSzymon Olewniczak            $this->getLang('bez') .
32e8827d73SSzymon Olewniczak            '</div>';
33e8827d73SSzymon Olewniczak        $r->doc .= '<ul>';
34e8827d73SSzymon Olewniczak        $actions = array(
35eb2e6be9SSzymon Olewniczak            'start' => $this->getLang('nav my_activities'),
36e8827d73SSzymon Olewniczak            'threads' => $this->getLang('issues'),
3753df74e7SSzymon Olewniczak            'projects' => $this->getLang('nav projects'),
38e8827d73SSzymon Olewniczak            'tasks' => $this->getLang('tasks'),
39*bc2653b0SSzymon Olewniczak            'report' => $this->getLang('report'),
40ff14b107SSzymon Olewniczak            'activity_report' => $this->getLang('activity_report')
4108e8ea12Sghi        );
4214a1f0a4SSzymon Olewniczak        /** @var bez\meta\BEZ_DokuWiki_Action_Plugin $action */
4314a1f0a4SSzymon Olewniczak        $bez_action = new action_plugin_bez_base();
4414a1f0a4SSzymon Olewniczak        $bez_action->createObjects();
4514a1f0a4SSzymon Olewniczak
4614a1f0a4SSzymon Olewniczak        if ($bez_action->get_level() >= BEZ_AUTH_ADMIN) {
47e8827d73SSzymon Olewniczak            $actions['types'] = $this->getLang('types_manage');
48e8827d73SSzymon Olewniczak            $actions['task_programs'] = $this->getLang('task_types');
496c94eb49Sghi        }
5060c2063dSSzymon Olewniczak
51e8827d73SSzymon Olewniczak        foreach ($actions as $action => $label) {
5214a1f0a4SSzymon Olewniczak            $r->doc .= $this->_list($bez_action, $action, $label);
536c94eb49Sghi        }
54e8827d73SSzymon Olewniczak        $r->doc .= '</ul>';
55e8827d73SSzymon Olewniczak        $r->doc .= '</nav>';
5627712358Sghi    }
57919e4830Sghi
5814a1f0a4SSzymon Olewniczak    protected function _list(action_plugin_bez_base $bez_action, $action, $label) {
59e8827d73SSzymon Olewniczak        global $INFO;
60919e4830Sghi
61e8827d73SSzymon Olewniczak        $matches = array();
62e8827d73SSzymon Olewniczak        preg_match('/bez:([a-z_]*)/i', $INFO['id'], $matches);
63e8827d73SSzymon Olewniczak        $cur_action = '';
64e8827d73SSzymon Olewniczak        if (isset($matches[1])) {
65e8827d73SSzymon Olewniczak            $cur_action = $matches[1];
66168ecf58Sghi        }
67168ecf58Sghi
68e8827d73SSzymon Olewniczak        $ret = '<li>';
69e8827d73SSzymon Olewniczak        if ($cur_action == $action) $ret .= '<strong>';
7014a1f0a4SSzymon Olewniczak        $ret .= '<a href="' . $bez_action->url($action) . '">' . $label . '</a>';
71e8827d73SSzymon Olewniczak        if ($cur_action == $action) $ret .= '</strong>';
72e8827d73SSzymon Olewniczak        $ret .= '</li>';
73168ecf58Sghi
74e8827d73SSzymon Olewniczak        return $ret;
7565cfcae3Sghi    }
7665cfcae3Sghi}
77