xref: /plugin/combo/action/historicalbreadcrumb.php (revision e8b2ff590c848541e718216df3a67061e98c1761)
1*e8b2ff59SNickeau<?php
2*e8b2ff59SNickeau
3*e8b2ff59SNickeau/**
4*e8b2ff59SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved.
5*e8b2ff59SNickeau *
6*e8b2ff59SNickeau * This source code is licensed under the GPL license found in the
7*e8b2ff59SNickeau * COPYING  file in the root directory of this source tree.
8*e8b2ff59SNickeau *
9*e8b2ff59SNickeau * @license  GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html)
10*e8b2ff59SNickeau * @author   ComboStrap <support@combostrap.com>
11*e8b2ff59SNickeau *
12*e8b2ff59SNickeau */
13*e8b2ff59SNickeau
14*e8b2ff59SNickeauuse ComboStrap\Bootstrap;
15*e8b2ff59SNickeauuse ComboStrap\PluginUtility;
16*e8b2ff59SNickeauuse ComboStrap\HistoricalBreadcrumbMenuItem;
17*e8b2ff59SNickeau
18*e8b2ff59SNickeaurequire_once(__DIR__ . '/../class/PluginUtility.php');
19*e8b2ff59SNickeau
20*e8b2ff59SNickeau/**
21*e8b2ff59SNickeau *
22*e8b2ff59SNickeau * https://en.wikipedia.org/wiki/Breadcrumb_navigation#Websites
23*e8b2ff59SNickeau */
24*e8b2ff59SNickeauclass action_plugin_combo_historicalbreadcrumb extends DokuWiki_Action_Plugin
25*e8b2ff59SNickeau{
26*e8b2ff59SNickeau
27*e8b2ff59SNickeau
28*e8b2ff59SNickeau    const HISTORICAL_BREADCRUMB_NAME = "historical-breadcrumb";
29*e8b2ff59SNickeau
30*e8b2ff59SNickeau    public function register(Doku_Event_Handler $controller)
31*e8b2ff59SNickeau    {
32*e8b2ff59SNickeau
33*e8b2ff59SNickeau        /**
34*e8b2ff59SNickeau         * Add a icon in the page tools menu
35*e8b2ff59SNickeau         * https://www.dokuwiki.org/devel:event:menu_items_assembly
36*e8b2ff59SNickeau         */
37*e8b2ff59SNickeau        $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'handle_breadcrumb_history');
38*e8b2ff59SNickeau
39*e8b2ff59SNickeau
40*e8b2ff59SNickeau    }
41*e8b2ff59SNickeau
42*e8b2ff59SNickeau
43*e8b2ff59SNickeau    public function handle_breadcrumb_history(Doku_Event $event, $param)
44*e8b2ff59SNickeau    {
45*e8b2ff59SNickeau
46*e8b2ff59SNickeau        global $conf;
47*e8b2ff59SNickeau
48*e8b2ff59SNickeau        //check if enabled
49*e8b2ff59SNickeau        if (!$conf['breadcrumbs']) return;
50*e8b2ff59SNickeau
51*e8b2ff59SNickeau        if(Bootstrap::getBootStrapMajorVersion()== Bootstrap::BootStrapFiveMajorVersion) {
52*e8b2ff59SNickeau
53*e8b2ff59SNickeau
54*e8b2ff59SNickeau            /**
55*e8b2ff59SNickeau             * The `view` property defines the menu that is currently built
56*e8b2ff59SNickeau             * https://www.dokuwiki.org/devel:menus
57*e8b2ff59SNickeau             * If this is not the site menu, return
58*e8b2ff59SNickeau             */
59*e8b2ff59SNickeau            if ($event->data['view'] != 'site') return;
60*e8b2ff59SNickeau
61*e8b2ff59SNickeau            /**
62*e8b2ff59SNickeau             * Making popover active
63*e8b2ff59SNickeau             */
64*e8b2ff59SNickeau            PluginUtility::getSnippetManager()->attachJavascriptSnippetForRequest("popover");
65*e8b2ff59SNickeau
66*e8b2ff59SNickeau            /**
67*e8b2ff59SNickeau             * Css
68*e8b2ff59SNickeau             */
69*e8b2ff59SNickeau            PluginUtility::getSnippetManager()->attachCssSnippetForRequest(self::HISTORICAL_BREADCRUMB_NAME);
70*e8b2ff59SNickeau
71*e8b2ff59SNickeau            array_splice($event->data['items'], -1, 0, array(new HistoricalBreadcrumbMenuItem()));
72*e8b2ff59SNickeau
73*e8b2ff59SNickeau        }
74*e8b2ff59SNickeau
75*e8b2ff59SNickeau    }
76*e8b2ff59SNickeau
77*e8b2ff59SNickeau
78*e8b2ff59SNickeau
79*e8b2ff59SNickeau
80*e8b2ff59SNickeau}
81*e8b2ff59SNickeau
82*e8b2ff59SNickeau
83*e8b2ff59SNickeau
84