1*abbe4c62SGerry Weißbach<?php 2*abbe4c62SGerry Weißbach/** 3*abbe4c62SGerry Weißbach * Siteexport Plugin 4*abbe4c62SGerry Weißbach * 5*abbe4c62SGerry Weißbach * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6*abbe4c62SGerry Weißbach * @author i-net software <tools@inetsoftware.de> 7*abbe4c62SGerry Weißbach * @author Gerry Weissbach <gweissbach@inetsoftware.de> 8*abbe4c62SGerry Weißbach */ 9*abbe4c62SGerry Weißbach 10*abbe4c62SGerry Weißbachif (!defined('DOKU_INC')) die(); 11*abbe4c62SGerry Weißbachif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/'); 12*abbe4c62SGerry Weißbachrequire_once(DOKU_PLUGIN . 'syntax.php'); 13*abbe4c62SGerry Weißbach 14*abbe4c62SGerry Weißbach/** 15*abbe4c62SGerry Weißbach * All DokuWiki plugins to extend the parser/rendering mechanism 16*abbe4c62SGerry Weißbach * need to inherit from this class 17*abbe4c62SGerry Weißbach */ 18*abbe4c62SGerry Weißbachclass syntax_plugin_siteexport_siteexport extends DokuWiki_Syntax_Plugin { 19*abbe4c62SGerry Weißbach 20*abbe4c62SGerry Weißbach private $headers = array(); 21*abbe4c62SGerry Weißbach 22*abbe4c62SGerry Weißbach function getType() { return 'substition'; } 23*abbe4c62SGerry Weißbach function getPType() { return 'block'; } 24*abbe4c62SGerry Weißbach function getSort() { return 300; } 25*abbe4c62SGerry Weißbach 26*abbe4c62SGerry Weißbach function connectTo($mode) { 27*abbe4c62SGerry Weißbach $this->Lexer->addSpecialPattern('\{\{siteexport .*?\}\}', $mode, 'plugin_siteexport_siteexport'); 28*abbe4c62SGerry Weißbach } 29*abbe4c62SGerry Weißbach 30*abbe4c62SGerry Weißbach function handle($match, $state, $pos, Doku_Handler $handler) { 31*abbe4c62SGerry Weißbach 32*abbe4c62SGerry Weißbach $options = explode(' ', trim(substr($match, 2, -2))); 33*abbe4c62SGerry Weißbach return $options; 34*abbe4c62SGerry Weißbach } 35*abbe4c62SGerry Weißbach 36*abbe4c62SGerry Weißbach function render($mode, Doku_Renderer $renderer, $data) { 37*abbe4c62SGerry Weißbach global $ID, $conf, $INFO; 38*abbe4c62SGerry Weißbach 39*abbe4c62SGerry Weißbach $namespace = $INFO['id'] != $ID ? $INFO['id'] : $ID; 40*abbe4c62SGerry Weißbach $id = $INFO['id'] != $ID ? $INFO['id'] : $ID; 41*abbe4c62SGerry Weißbach 42*abbe4c62SGerry Weißbach if ($mode == 'xhtml'){ 43*abbe4c62SGerry Weißbach 44*abbe4c62SGerry Weißbach $renderer->info['toc'] = false; 45*abbe4c62SGerry Weißbach $renderer->nocache(); 46*abbe4c62SGerry Weißbach 47*abbe4c62SGerry Weißbach $formParams = array( 'id' => sectionID('siteexport_siteexporter', $this->headers), 'action' => wl($id), 'class' => 'siteexport siteexporter' ); 48*abbe4c62SGerry Weißbach $form = new Doku_Form($formParams); 49*abbe4c62SGerry Weißbach $functions=& plugin_load('helper', 'siteexport'); 50*abbe4c62SGerry Weißbach 51*abbe4c62SGerry Weißbach $form->addHidden('ns', $id); 52*abbe4c62SGerry Weißbach $form->addHidden('site', $id); 53*abbe4c62SGerry Weißbach $form->addHidden('baseID', $id); 54*abbe4c62SGerry Weißbach 55*abbe4c62SGerry Weißbach $submitLabel = $this->getLang('SiteSubmitLabel'); 56*abbe4c62SGerry Weißbach foreach( $data as $option ) { 57*abbe4c62SGerry Weißbach 58*abbe4c62SGerry Weißbach list($key, $value) = explode('=', $option); 59*abbe4c62SGerry Weißbach switch ($key) { 60*abbe4c62SGerry Weißbach case "buttonTitle": 61*abbe4c62SGerry Weißbach $submitLabel = urldecode($value); 62*abbe4c62SGerry Weißbach break; 63*abbe4c62SGerry Weißbach default: 64*abbe4c62SGerry Weißbach $form->addHidden($key, $value); 65*abbe4c62SGerry Weißbach break; 66*abbe4c62SGerry Weißbach } 67*abbe4c62SGerry Weißbach } 68*abbe4c62SGerry Weißbach 69*abbe4c62SGerry Weißbach $renderer->doc .= '<div class="siteexporter">'; 70*abbe4c62SGerry Weißbach $form->addElement(form_makeButton('submit', 'siteexport', $submitLabel, array('class' => 'button download'))); 71*abbe4c62SGerry Weißbach 72*abbe4c62SGerry Weißbach ob_start(); 73*abbe4c62SGerry Weißbach $form->printForm(); 74*abbe4c62SGerry Weißbach $renderer->doc .= ob_get_contents(); 75*abbe4c62SGerry Weißbach ob_end_clean(); 76*abbe4c62SGerry Weißbach 77*abbe4c62SGerry Weißbach $renderer->doc .= '</div>'; 78*abbe4c62SGerry Weißbach return false; 79*abbe4c62SGerry Weißbach } else if ($mode == 'metadata') { 80*abbe4c62SGerry Weißbach $renderer->meta['siteexport']['siteexporter'] = true; 81*abbe4c62SGerry Weißbach $renderer->meta['siteexport']['baseID'] = $namespace; 82*abbe4c62SGerry Weißbach } 83*abbe4c62SGerry Weißbach 84*abbe4c62SGerry Weißbach return false; 85*abbe4c62SGerry Weißbach } 86*abbe4c62SGerry Weißbach} 87*abbe4c62SGerry Weißbach 88*abbe4c62SGerry Weißbach//Setup VIM: ex: et ts=4 enc=utf-8 : 89