xref: /plugin/combo/action/slotmanagermenuitem.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeauuse ComboStrap\BacklinkMenuItem;
4*04fd306cSNickeauuse ComboStrap\Event;
5*04fd306cSNickeauuse ComboStrap\FileSystems;
6*04fd306cSNickeauuse ComboStrap\Identity;
7*04fd306cSNickeauuse ComboStrap\LinkMarkup;
8*04fd306cSNickeauuse ComboStrap\Meta\Store\MetadataDokuWikiStore;
9*04fd306cSNickeauuse ComboStrap\Mime;
10*04fd306cSNickeauuse ComboStrap\MarkupPath;
11*04fd306cSNickeauuse ComboStrap\PagePath;
12*04fd306cSNickeauuse ComboStrap\PluginUtility;
13*04fd306cSNickeauuse ComboStrap\Reference;
14*04fd306cSNickeauuse ComboStrap\References;
15*04fd306cSNickeau
16*04fd306cSNickeau
17*04fd306cSNickeaurequire_once(__DIR__ . '/../ComboStrap/PluginUtility.php');
18*04fd306cSNickeau
19*04fd306cSNickeau/**
20*04fd306cSNickeau * Handle the slot manager menu item
21*04fd306cSNickeau */
22*04fd306cSNickeauclass action_plugin_combo_slotmanagermenuitem extends DokuWiki_Action_Plugin
23*04fd306cSNickeau{
24*04fd306cSNickeau
25*04fd306cSNickeau
26*04fd306cSNickeau    const CANONICAL = "edit-page-menu";
27*04fd306cSNickeau
28*04fd306cSNickeau
29*04fd306cSNickeau    public function register(Doku_Event_Handler $controller)
30*04fd306cSNickeau    {
31*04fd306cSNickeau
32*04fd306cSNickeau
33*04fd306cSNickeau        /**
34*04fd306cSNickeau         * Add a icon in the page tools menu
35*04fd306cSNickeau         * https://www.dokuwiki.org/devel:event:menu_items_assembly
36*04fd306cSNickeau         */
37*04fd306cSNickeau        $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'addMenuItem');
38*04fd306cSNickeau
39*04fd306cSNickeau
40*04fd306cSNickeau    }
41*04fd306cSNickeau
42*04fd306cSNickeau    function addMenuItem(Doku_Event $event, $param)
43*04fd306cSNickeau    {
44*04fd306cSNickeau
45*04fd306cSNickeau
46*04fd306cSNickeau        if (!Identity::isWriter()) {
47*04fd306cSNickeau            return;
48*04fd306cSNickeau        }
49*04fd306cSNickeau
50*04fd306cSNickeau        /**
51*04fd306cSNickeau         * The `view` property defines the menu that is currently built
52*04fd306cSNickeau         * https://www.dokuwiki.org/devel:menus
53*04fd306cSNickeau         * If this is not the page menu, return
54*04fd306cSNickeau         */
55*04fd306cSNickeau        if ($event->data['view'] != 'page') return;
56*04fd306cSNickeau
57*04fd306cSNickeau        $menuItems = &$event->data["items"];
58*04fd306cSNickeau        foreach ($menuItems as $key => $menuItem) {
59*04fd306cSNickeau            if ($menuItem instanceof \dokuwiki\Menu\Item\Edit) {
60*04fd306cSNickeau                array_splice($menuItems, $key + 1, 0, [new \ComboStrap\SlotManagerMenuItem()]);
61*04fd306cSNickeau                break;
62*04fd306cSNickeau            }
63*04fd306cSNickeau        }
64*04fd306cSNickeau
65*04fd306cSNickeau
66*04fd306cSNickeau    }
67*04fd306cSNickeau
68*04fd306cSNickeau
69*04fd306cSNickeau}
70*04fd306cSNickeau
71*04fd306cSNickeau
72*04fd306cSNickeau
73