* @author Andreas Gohr */ // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); // we inherit from the XHTML renderer instead directly of the base renderer require_once DOKU_INC.'inc/parser/xhtml.php'; /** * The Renderer */ class renderer_plugin_s5 extends Doku_Renderer_xhtml { var $slideopen = false; var $base=''; var $tpl=''; /** * the format we produce */ function getFormat(){ // this should be 's5' usally, but we inherit from the xhtml renderer // and produce XHTML as well, so we can gain magically compatibility // by saying we're the 'xhtml' renderer here. return 'xhtml'; } /** * Initialize the rendering */ function document_start() { global $ID; // call the parent parent::document_start(); // store the content type headers in metadata $headers = array( 'Content-Type' => 'text/html; charset=utf-8' ); p_set_metadata($ID,array('format' => array('s5' => $headers) )); $this->base = DOKU_BASE.'lib/plugins/s5/ui/'; $this->tpl = isset($_GET['s5theme'])?$_GET['s5theme']:$this->getConf('template'); $this->tpl = preg_replace('/[^a-z0-9_-]+/', '', $this->tpl); // clean user provided path } /** * Print the header of the page * * Gets called when the very first H1 header is discovered. It includes * all the S5 CSS and JavaScript magic */ function s5_init($title){ global $conf; global $lang; global $INFO; global $ID; //throw away any previous content $this->doc = ' '.hsc($title).'
'; } /** * Closes the document */ function document_end(){ // we don't care for footnotes and toc // but cleanup is nice $this->doc = preg_replace('#

\s*

#','',$this->doc); if($this->slideopen){ $this->doc .= '
'.DOKU_LF; //close previous slide } $this->doc .= ' '; } /** * This is what creates new slides * * A new slide is started for each H2 header */ public function header($text, $level, $pos, $returnonly = false) { if($level == 1){ if(!$this->slideopen){ $this->s5_init($text); // this is the first slide $level = 2; }else{ return; } } if($level == 2){ if($this->slideopen){ $this->doc .= ''.DOKU_LF; //close previous slide } $this->doc .= '
'.DOKU_LF; $this->slideopen = true; } $this->doc .= ''; $this->doc .= $this->_xmlEntities($text); $this->doc .= ''.DOKU_LF; } /** * Top-Level Sections are slides */ function section_open($level) { if($level < 3){ $this->doc .= '
'.DOKU_LF; }else{ $this->doc .= '
'.DOKU_LF; } // we don't use it } /** * Throw away footnote */ function footnote_close() { // recover footnote into the stack and restore old content $footnote = $this->doc; $this->doc = $this->store; $this->store = ''; } /** * No acronyms in a presentation */ function acronym($acronym){ $this->doc .= $this->_xmlEntities($acronym); } /** * A line stops the slide and start the handout section */ function hr() { $this->doc .= '
'.DOKU_LF; $this->doc .= '
'.DOKU_LF; } } //Setup VIM: ex: et ts=4 enc=utf-8 :