1*f09b1d21SJuergen-aus-Zuendorf<?php 2*f09b1d21SJuergen-aus-Zuendorf/** 3*f09b1d21SJuergen-aus-Zuendorf * DokuWiki Plugin footer (Action Component) 4*f09b1d21SJuergen-aus-Zuendorf * 5*f09b1d21SJuergen-aus-Zuendorf * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 6*f09b1d21SJuergen-aus-Zuendorf * 7*f09b1d21SJuergen-aus-Zuendorf * Original: from Plugin headerfooter, author Li Zheng <lzpublic@qq.com> 8*f09b1d21SJuergen-aus-Zuendorf * Modified by Juergen H-J-Schuemmer@Web.de 9*f09b1d21SJuergen-aus-Zuendorf * Only the footer component is supported in this plugin because the header functionality breaks the section edit mode 10*f09b1d21SJuergen-aus-Zuendorf */ 11*f09b1d21SJuergen-aus-Zuendorf 12*f09b1d21SJuergen-aus-Zuendorf// must be run within Dokuwiki 13*f09b1d21SJuergen-aus-Zuendorfif(!defined('DOKU_INC')) die(); 14*f09b1d21SJuergen-aus-Zuendorf 15*f09b1d21SJuergen-aus-Zuendorfclass action_plugin_footer extends DokuWiki_Action_Plugin { 16*f09b1d21SJuergen-aus-Zuendorf public function register(Doku_Event_Handler $controller) { 17*f09b1d21SJuergen-aus-Zuendorf 18*f09b1d21SJuergen-aus-Zuendorf $controller->register_hook('PARSER_WIKITEXT_PREPROCESS', 'AFTER', $this, 'handle_parser_wikitext_preprocess'); 19*f09b1d21SJuergen-aus-Zuendorf 20*f09b1d21SJuergen-aus-Zuendorf } 21*f09b1d21SJuergen-aus-Zuendorf public function handle_parser_wikitext_preprocess(Doku_Event &$event, $param) { 22*f09b1d21SJuergen-aus-Zuendorf global $INFO; 23*f09b1d21SJuergen-aus-Zuendorf global $ID; 24*f09b1d21SJuergen-aus-Zuendorf global $conf; 25*f09b1d21SJuergen-aus-Zuendorf 26*f09b1d21SJuergen-aus-Zuendorf //what does this mean??? 27*f09b1d21SJuergen-aus-Zuendorf if ($INFO['id'] != '') return; // Jede Seite wird zweimal ausgeführt. Wenn die ID leer ist, ist es der echte Text, andernfalls ist es das Menü. 28*f09b1d21SJuergen-aus-Zuendorf 29*f09b1d21SJuergen-aus-Zuendorf //helper array needed for parsePageTemplate 30*f09b1d21SJuergen-aus-Zuendorf //so that replacement like shown here is possible: https://www.dokuwiki.org/namespace_templates#replacement_patterns 31*f09b1d21SJuergen-aus-Zuendorf $data = array( 32*f09b1d21SJuergen-aus-Zuendorf 'id' => $ID, // the id of the page to be created 33*f09b1d21SJuergen-aus-Zuendorf 'tpl' => '', // the text used as template 34*f09b1d21SJuergen-aus-Zuendorf ); 35*f09b1d21SJuergen-aus-Zuendorf 36*f09b1d21SJuergen-aus-Zuendorf // Auslesen der Konfiguration für das Präfix der Vorlage-Dateien: 37*f09b1d21SJuergen-aus-Zuendorf $pre_nsp = $this->getConf('prefix_namespace'); 38*f09b1d21SJuergen-aus-Zuendorf if ($pre_nsp != '') { 39*f09b1d21SJuergen-aus-Zuendorf $pre_nsp = '/'.$pre_nsp.'_'; 40*f09b1d21SJuergen-aus-Zuendorf } else { 41*f09b1d21SJuergen-aus-Zuendorf $pre_nsp = '/_'; // Defaultwert 1 Unterstrich für Namespace 42*f09b1d21SJuergen-aus-Zuendorf }; 43*f09b1d21SJuergen-aus-Zuendorf $pre_sub = $this->getConf('prefix_subnamespace'); 44*f09b1d21SJuergen-aus-Zuendorf if ($pre_sub != '') { 45*f09b1d21SJuergen-aus-Zuendorf $pre_sub = '/'.$pre_sub.'_'; 46*f09b1d21SJuergen-aus-Zuendorf } else { 47*f09b1d21SJuergen-aus-Zuendorf $pre_sub = '/__'; // Defaultwert 2 Unterstriche für Sub-Namespace 48*f09b1d21SJuergen-aus-Zuendorf }; 49*f09b1d21SJuergen-aus-Zuendorf 50*f09b1d21SJuergen-aus-Zuendorf $footerpath = ''; 51*f09b1d21SJuergen-aus-Zuendorf $templatename = 'footer.txt'; // Name der Vorlage 52*f09b1d21SJuergen-aus-Zuendorf $path = dirname(wikiFN($ID)); 53*f09b1d21SJuergen-aus-Zuendorf if (@file_exists($path.$pre_nsp.$templatename)) { 54*f09b1d21SJuergen-aus-Zuendorf $footerpath = $path.$pre_nsp.$templatename; 55*f09b1d21SJuergen-aus-Zuendorf } else { 56*f09b1d21SJuergen-aus-Zuendorf // search upper namespaces for templates 57*f09b1d21SJuergen-aus-Zuendorf $len = strlen(rtrim($conf['datadir'], '/')); 58*f09b1d21SJuergen-aus-Zuendorf while (strlen($path) >= $len) { 59*f09b1d21SJuergen-aus-Zuendorf if (@file_exists($path.$pre_sub.$templatename)) { 60*f09b1d21SJuergen-aus-Zuendorf $footerpath = $path.$pre_sub.$templatename; 61*f09b1d21SJuergen-aus-Zuendorf break; 62*f09b1d21SJuergen-aus-Zuendorf } 63*f09b1d21SJuergen-aus-Zuendorf $path = substr($path, 0, strrpos($path, '/')); 64*f09b1d21SJuergen-aus-Zuendorf } 65*f09b1d21SJuergen-aus-Zuendorf } 66*f09b1d21SJuergen-aus-Zuendorf 67*f09b1d21SJuergen-aus-Zuendorf if (!empty($footerpath)) { 68*f09b1d21SJuergen-aus-Zuendorf $footer = file_get_contents($footerpath); 69*f09b1d21SJuergen-aus-Zuendorf if ($footer !== false) { 70*f09b1d21SJuergen-aus-Zuendorf $data['tpl'] = cleanText($footer); 71*f09b1d21SJuergen-aus-Zuendorf $footer = parsePageTemplate($data); 72*f09b1d21SJuergen-aus-Zuendorf 73*f09b1d21SJuergen-aus-Zuendorf if ($this->getConf('separation') == 'paragraph') { 74*f09b1d21SJuergen-aus-Zuendorf // Wenn Absätze zum Teilen verwendet werden 75*f09b1d21SJuergen-aus-Zuendorf $footer = rtrim($footer, " \r\n\\") . "\n\n"; 76*f09b1d21SJuergen-aus-Zuendorf } 77*f09b1d21SJuergen-aus-Zuendorf $event->data .= $footer; 78*f09b1d21SJuergen-aus-Zuendorf } 79*f09b1d21SJuergen-aus-Zuendorf } 80*f09b1d21SJuergen-aus-Zuendorf } 81*f09b1d21SJuergen-aus-Zuendorf}