<?php

use dokuwiki\Extension\ActionPlugin;
use dokuwiki\Extension\Event;
use dokuwiki\Extension\EventHandler;
use dokuwiki\plugin\fulldisplay\MenuItem;

/**
 * DokuWiki Plugin fulldisplay (Action Component)
 *
 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
 * @author Andreas Gohr <dokuwiki@cosmocode.de>
 */
class action_plugin_fulldisplay extends ActionPlugin
{
    /** @inheritDoc */
    public function register(EventHandler $controller)
    {
        $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'handleMenuItemsAssemblyEvent', null, 300);
        $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, 'handleDokuwikiStartedEvent');
    }

    /**
     * Event handler for MENU_ITEMS_ASSEMBLY
     *
     * @see https://www.dokuwiki.org/devel:events:MENU_ITEMS_ASSEMBLY
     * @param Event $event Event object
     * @param mixed $param optional parameter passed when event was registered
     * @return void
     */
    public function handleMenuItemsAssemblyEvent(Event $event, $param)
    {
        if ($event->data['view'] !== 'page') {
            return;
        }
        array_splice($event->data['items'], -1, 0, [new MenuItem()]);
    }

    /**
     * Event handler for DOKUWIKI_STARTED
     *
     * @see https://www.dokuwiki.org/devel:events:DOKUWIKI_STARTED
     * @param Event $event Event object
     * @param mixed $param optional parameter passed when event was registered
     * @return void
     */
    public function handleDokuwikiStartedEvent(Event $event, $param) {
        global $JSINFO;
        $JSINFO['fulldisplay'] = [
            'pageSelector' => $this->getConf('pageSelector'),
            'zoom' => $this->getConf('zoom'),
            'refresh' => $this->getConf('refresh'),
        ];
    }
}
