1<?php
2
3use dokuwiki\Extension\ActionPlugin;
4use dokuwiki\Extension\Event;
5use dokuwiki\Extension\EventHandler;
6use dokuwiki\plugin\fulldisplay\MenuItem;
7
8/**
9 * DokuWiki Plugin fulldisplay (Action Component)
10 *
11 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
12 * @author Andreas Gohr <dokuwiki@cosmocode.de>
13 */
14class action_plugin_fulldisplay extends ActionPlugin
15{
16    /** @inheritDoc */
17    public function register(EventHandler $controller)
18    {
19        $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'handleMenuItemsAssemblyEvent', null, 300);
20        $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, 'handleDokuwikiStartedEvent');
21    }
22
23    /**
24     * Event handler for MENU_ITEMS_ASSEMBLY
25     *
26     * @see https://www.dokuwiki.org/devel:events:MENU_ITEMS_ASSEMBLY
27     * @param Event $event Event object
28     * @param mixed $param optional parameter passed when event was registered
29     * @return void
30     */
31    public function handleMenuItemsAssemblyEvent(Event $event, $param)
32    {
33        if ($event->data['view'] !== 'page') {
34            return;
35        }
36        array_splice($event->data['items'], -1, 0, [new MenuItem()]);
37    }
38
39    /**
40     * Event handler for DOKUWIKI_STARTED
41     *
42     * @see https://www.dokuwiki.org/devel:events:DOKUWIKI_STARTED
43     * @param Event $event Event object
44     * @param mixed $param optional parameter passed when event was registered
45     * @return void
46     */
47    public function handleDokuwikiStartedEvent(Event $event, $param) {
48        global $JSINFO;
49        $JSINFO['fulldisplay'] = [
50            'pageSelector' => $this->getConf('pageSelector'),
51            'zoom' => $this->getConf('zoom'),
52            'refresh' => $this->getConf('refresh'),
53        ];
54    }
55}
56