xref: /plugin/combo/action/metatitle.php (revision c3437056399326d621a01da73b649707fbb0ae69)
1007225e5Sgerardnico<?php
2007225e5Sgerardnico
3*c3437056SNickeauuse ComboStrap\Page;
4*c3437056SNickeauuse ComboStrap\PluginUtility;
5*c3437056SNickeauuse ComboStrap\Site;
6007225e5Sgerardnico
7007225e5Sgerardnico
8007225e5Sgerardnico/**
9007225e5Sgerardnico * Class action_plugin_combo_metatitle
10007225e5Sgerardnico * Set and manage the meta title
11007225e5Sgerardnico * The event is triggered in the strap template
12007225e5Sgerardnico */
13007225e5Sgerardnicoclass action_plugin_combo_metatitle extends DokuWiki_Action_Plugin
14007225e5Sgerardnico{
15007225e5Sgerardnico
16007225e5Sgerardnico
17*c3437056SNickeau    const TITLE_SEPARATOR = ' | ';
18*c3437056SNickeau
19007225e5Sgerardnico    public function register(Doku_Event_Handler $controller)
20007225e5Sgerardnico    {
21007225e5Sgerardnico        $controller->register_hook('TPL_TITLE_OUTPUT', 'BEFORE', $this, 'handleTitle', array());
22007225e5Sgerardnico    }
23007225e5Sgerardnico
24007225e5Sgerardnico    function handleTitle(&$event, $param)
25007225e5Sgerardnico    {
26007225e5Sgerardnico        $event->data = self::getTitle();
27007225e5Sgerardnico    }
28007225e5Sgerardnico
29*c3437056SNickeau    static function getTitle(): string
30*c3437056SNickeau    {
31*c3437056SNickeau
32*c3437056SNickeau        // Page Title
33*c3437056SNickeau        // Root Home page
34*c3437056SNickeau        $currentPage = Page::createPageFromGlobalDokuwikiId();
35*c3437056SNickeau        $pageTitle = $currentPage->getTitleOrDefault();
36*c3437056SNickeau
37*c3437056SNickeau        // Namespace name
38*c3437056SNickeau        $parentPage = $currentPage->getParentPage();
39*c3437056SNickeau        if($parentPage!=null){
40*c3437056SNickeau            $pageTitle .= self::TITLE_SEPARATOR . $parentPage->getNameOrDefault();
41007225e5Sgerardnico        }
42*c3437056SNickeau        // Site name
43*c3437056SNickeau        if (!empty(Site::getName())) {
44*c3437056SNickeau            $pageTitle .= self::TITLE_SEPARATOR . Site::getName();
45007225e5Sgerardnico        }
46007225e5Sgerardnico
47*c3437056SNickeau        return PluginUtility::htmlEncode($pageTitle);
48007225e5Sgerardnico    }
49007225e5Sgerardnico}
50