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