1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeauuse ComboStrap\ExceptionNotFound; 4*04fd306cSNickeauuse ComboStrap\Toc; 5*04fd306cSNickeauuse ComboStrap\ExecutionContext; 6*04fd306cSNickeau 7*04fd306cSNickeau 8*04fd306cSNickeau/** 9*04fd306cSNickeau * 10*04fd306cSNickeau * It will overwrite the toc data with our TOC if any 11*04fd306cSNickeau * 12*04fd306cSNickeau * This is just cosmetic 13*04fd306cSNickeau * Because this is almost never used 14*04fd306cSNickeau * 15*04fd306cSNickeau * It's needed only if the strap template is not used or in between upgrade 16*04fd306cSNickeau * in default mode meaning, never, ever but yeah. 17*04fd306cSNickeau * 18*04fd306cSNickeau */ 19*04fd306cSNickeauclass action_plugin_combo_toc extends DokuWiki_Action_Plugin 20*04fd306cSNickeau{ 21*04fd306cSNickeau 22*04fd306cSNickeau 23*04fd306cSNickeau /** 24*04fd306cSNickeau * 25*04fd306cSNickeau * @param Doku_Event_Handler $controller 26*04fd306cSNickeau */ 27*04fd306cSNickeau public function register(Doku_Event_Handler $controller) 28*04fd306cSNickeau { 29*04fd306cSNickeau 30*04fd306cSNickeau // https://www.dokuwiki.org/devel:event:tpl_toc_render 31*04fd306cSNickeau $controller->register_hook('TPL_TOC_RENDER', 'BEFORE', $this, 'handle_toc'); 32*04fd306cSNickeau 33*04fd306cSNickeau 34*04fd306cSNickeau } 35*04fd306cSNickeau 36*04fd306cSNickeau /** 37*04fd306cSNickeau * Overwrite the TOC 38*04fd306cSNickeau * @param Doku_Event $event 39*04fd306cSNickeau * @param $param 40*04fd306cSNickeau */ 41*04fd306cSNickeau public function handle_toc(Doku_Event &$event, $param) 42*04fd306cSNickeau { 43*04fd306cSNickeau 44*04fd306cSNickeau $wikiReq = ExecutionContext::getActualOrCreateFromEnv(); 45*04fd306cSNickeau if ($wikiReq->getExecutingAction() !== "show") { 46*04fd306cSNickeau // admin may also have toc 47*04fd306cSNickeau return; 48*04fd306cSNickeau } 49*04fd306cSNickeau 50*04fd306cSNickeau try { 51*04fd306cSNickeau $toc = Toc::createForRequestedPage() 52*04fd306cSNickeau ->getValue(); 53*04fd306cSNickeau $event->data = $toc; 54*04fd306cSNickeau } catch (ExceptionNotFound $e) { 55*04fd306cSNickeau return; 56*04fd306cSNickeau } 57*04fd306cSNickeau 58*04fd306cSNickeau 59*04fd306cSNickeau } 60*04fd306cSNickeau 61*04fd306cSNickeau 62*04fd306cSNickeau} 63*04fd306cSNickeau 64