1007225e5Sgerardnico<?php 2007225e5Sgerardnico 3*04fd306cSNickeauuse ComboStrap\ExceptionCompile; 4*04fd306cSNickeauuse ComboStrap\ExceptionNotFound; 5*04fd306cSNickeauuse ComboStrap\Html; 6*04fd306cSNickeauuse ComboStrap\LogUtility; 7*04fd306cSNickeauuse ComboStrap\MarkupPath; 8c3437056SNickeauuse ComboStrap\PluginUtility; 9c3437056SNickeauuse ComboStrap\Site; 10007225e5Sgerardnico 11007225e5Sgerardnico 12007225e5Sgerardnico/** 13007225e5Sgerardnico * Class action_plugin_combo_metatitle 14*04fd306cSNickeau * Set and manage the title of an HTML page 15007225e5Sgerardnico * The event is triggered in the strap template 16007225e5Sgerardnico */ 17007225e5Sgerardnicoclass action_plugin_combo_metatitle extends DokuWiki_Action_Plugin 18007225e5Sgerardnico{ 19007225e5Sgerardnico 20007225e5Sgerardnico 21c3437056SNickeau const TITLE_SEPARATOR = ' | '; 22c3437056SNickeau 23007225e5Sgerardnico public function register(Doku_Event_Handler $controller) 24007225e5Sgerardnico { 25007225e5Sgerardnico $controller->register_hook('TPL_TITLE_OUTPUT', 'BEFORE', $this, 'handleTitle', array()); 26007225e5Sgerardnico } 27007225e5Sgerardnico 28007225e5Sgerardnico function handleTitle(&$event, $param) 29007225e5Sgerardnico { 30*04fd306cSNickeau $event->data = self::getHtmlTitle(); 31007225e5Sgerardnico } 32007225e5Sgerardnico 33*04fd306cSNickeau 34*04fd306cSNickeau static function getHtmlTitle(): string 35c3437056SNickeau { 36c3437056SNickeau 37c3437056SNickeau // Page Title 38c3437056SNickeau // Root Home page 39*04fd306cSNickeau $currentPage = MarkupPath::createFromRequestedPage(); 40*04fd306cSNickeau 41c3437056SNickeau $pageTitle = $currentPage->getTitleOrDefault(); 42c3437056SNickeau 43c3437056SNickeau // Namespace name 44*04fd306cSNickeau try { 45*04fd306cSNickeau $parentPage = $currentPage->getParent(); 46c3437056SNickeau $pageTitle .= self::TITLE_SEPARATOR . $parentPage->getNameOrDefault(); 47*04fd306cSNickeau } catch (ExceptionNotFound $e) { 48*04fd306cSNickeau // no parent 49007225e5Sgerardnico } 50*04fd306cSNickeau 51c3437056SNickeau // Site name 52c3437056SNickeau if (!empty(Site::getName())) { 53c3437056SNickeau $pageTitle .= self::TITLE_SEPARATOR . Site::getName(); 54007225e5Sgerardnico } 55007225e5Sgerardnico 56*04fd306cSNickeau return Html::encode($pageTitle); 57*04fd306cSNickeau 58007225e5Sgerardnico } 59007225e5Sgerardnico} 60