1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeauuse ComboStrap\TemplateForWebPage; 4*04fd306cSNickeauuse ComboStrap\PluginUtility; 5*04fd306cSNickeauuse ComboStrap\SlotSystem; 6*04fd306cSNickeauuse ComboStrap\WikiPath; 7*04fd306cSNickeauuse ComboStrap\ExceptionCompile; 8*04fd306cSNickeauuse ComboStrap\ExceptionNotFound; 9*04fd306cSNickeauuse ComboStrap\FileSystems; 10*04fd306cSNickeauuse ComboStrap\FetcherPage; 11*04fd306cSNickeauuse ComboStrap\TemplateSlot; 12*04fd306cSNickeauuse ComboStrap\LogUtility; 13*04fd306cSNickeauuse ComboStrap\MarkupPath; 14*04fd306cSNickeauuse ComboStrap\Site; 15*04fd306cSNickeau 16*04fd306cSNickeau/** 17*04fd306cSNickeau * When a slot/fragment 18*04fd306cSNickeau * is created, 19*04fd306cSNickeau * this action will write the default slot 20*04fd306cSNickeau * into the edit html section 21*04fd306cSNickeau */ 22*04fd306cSNickeauclass action_plugin_combo_slottemplate extends DokuWiki_Action_Plugin 23*04fd306cSNickeau{ 24*04fd306cSNickeau 25*04fd306cSNickeau 26*04fd306cSNickeau const CANONICAL = "slot-template"; 27*04fd306cSNickeau 28*04fd306cSNickeau public function register(Doku_Event_Handler $controller) 29*04fd306cSNickeau { 30*04fd306cSNickeau 31*04fd306cSNickeau $controller->register_hook('COMMON_PAGETPL_LOAD', 'BEFORE', $this, 'handle_new_slot', array()); 32*04fd306cSNickeau 33*04fd306cSNickeau } 34*04fd306cSNickeau 35*04fd306cSNickeau public function handle_new_slot(Doku_Event $event, $param) 36*04fd306cSNickeau { 37*04fd306cSNickeau 38*04fd306cSNickeau 39*04fd306cSNickeau $id = $event->data['id']; 40*04fd306cSNickeau $page = MarkupPath::createMarkupFromId($id); 41*04fd306cSNickeau if (!$page->isSlot()) { 42*04fd306cSNickeau return; 43*04fd306cSNickeau } 44*04fd306cSNickeau 45*04fd306cSNickeau 46*04fd306cSNickeau try { 47*04fd306cSNickeau $pathName = $page->getLastNameWithoutExtension(); 48*04fd306cSNickeau } catch (ExceptionNotFound $e) { 49*04fd306cSNickeau LogUtility::internalError("Should not happen as it's not the root", self::CANONICAL); 50*04fd306cSNickeau return; 51*04fd306cSNickeau } 52*04fd306cSNickeau 53*04fd306cSNickeau $pageHeaderPath = TemplateSlot::createFromPathName($pathName)->getDefaultSlotContentPath(); 54*04fd306cSNickeau if (!FileSystems::exists($pageHeaderPath)) { 55*04fd306cSNickeau return; 56*04fd306cSNickeau } 57*04fd306cSNickeau try { 58*04fd306cSNickeau $event->data["tpl"] = FileSystems::getContent($pageHeaderPath); 59*04fd306cSNickeau $event->data["doreplace"] = false; 60*04fd306cSNickeau } catch (ExceptionNotFound $e) { 61*04fd306cSNickeau // Should not happen 62*04fd306cSNickeau LogUtility::error("Internal Error", self::CANONICAL, $e); 63*04fd306cSNickeau } 64*04fd306cSNickeau 65*04fd306cSNickeau 66*04fd306cSNickeau } 67*04fd306cSNickeau} 68*04fd306cSNickeau 69*04fd306cSNickeau 70*04fd306cSNickeau 71