1*254467c4SGerrit Uitslag<?php 2*254467c4SGerrit Uitslag/** 3*254467c4SGerrit Uitslag * DokuWiki Plugin dw2pdf (Syntax Component) 4*254467c4SGerrit Uitslag * 5*254467c4SGerrit Uitslag * For marking changes in page orientation. 6*254467c4SGerrit Uitslag * 7*254467c4SGerrit Uitslag * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 8*254467c4SGerrit Uitslag * @author Sam Wilson <sam@samwilson.id.au> 9*254467c4SGerrit Uitslag */ 10*254467c4SGerrit Uitslag/* Must be run within Dokuwiki */ 11*254467c4SGerrit Uitslagif(!defined('DOKU_INC')) die(); 12*254467c4SGerrit Uitslag 13*254467c4SGerrit Uitslag/** 14*254467c4SGerrit Uitslag * Syntax for page specific directions for mpdf library 15*254467c4SGerrit Uitslag */ 16*254467c4SGerrit Uitslagclass syntax_plugin_dw2pdf_pagesetting extends DokuWiki_Syntax_Plugin { 17*254467c4SGerrit Uitslag 18*254467c4SGerrit Uitslag /** 19*254467c4SGerrit Uitslag * Syntax Type 20*254467c4SGerrit Uitslag * 21*254467c4SGerrit Uitslag * Needs to return one of the mode types defined in $PARSER_MODES in parser.php 22*254467c4SGerrit Uitslag * 23*254467c4SGerrit Uitslag * @return string 24*254467c4SGerrit Uitslag */ 25*254467c4SGerrit Uitslag public function getType() { 26*254467c4SGerrit Uitslag return 'substition'; 27*254467c4SGerrit Uitslag } 28*254467c4SGerrit Uitslag 29*254467c4SGerrit Uitslag /** 30*254467c4SGerrit Uitslag * Sort for applying this mode 31*254467c4SGerrit Uitslag * 32*254467c4SGerrit Uitslag * @return int 33*254467c4SGerrit Uitslag */ 34*254467c4SGerrit Uitslag public function getSort() { 35*254467c4SGerrit Uitslag return 40; 36*254467c4SGerrit Uitslag } 37*254467c4SGerrit Uitslag 38*254467c4SGerrit Uitslag /** 39*254467c4SGerrit Uitslag * Paragraph Type 40*254467c4SGerrit Uitslag * 41*254467c4SGerrit Uitslag * @see Doku_Handler_Block 42*254467c4SGerrit Uitslag * 43*254467c4SGerrit Uitslag * @return string 44*254467c4SGerrit Uitslag */ 45*254467c4SGerrit Uitslag public function getPType() { 46*254467c4SGerrit Uitslag return 'block'; 47*254467c4SGerrit Uitslag } 48*254467c4SGerrit Uitslag 49*254467c4SGerrit Uitslag /** 50*254467c4SGerrit Uitslag * @param string $mode 51*254467c4SGerrit Uitslag */ 52*254467c4SGerrit Uitslag public function connectTo($mode) { 53*254467c4SGerrit Uitslag $this->Lexer->addSpecialPattern('~~PDF:(?:LANDSCAPE|PORTRAIT)~~', $mode, 'plugin_dw2pdf_pagesetting'); 54*254467c4SGerrit Uitslag } 55*254467c4SGerrit Uitslag 56*254467c4SGerrit Uitslag /** 57*254467c4SGerrit Uitslag * Handler to prepare matched data for the rendering process 58*254467c4SGerrit Uitslag * 59*254467c4SGerrit Uitslag * @param string $match The text matched by the patterns 60*254467c4SGerrit Uitslag * @param int $state The lexer state for the match 61*254467c4SGerrit Uitslag * @param int $pos The character position of the matched text 62*254467c4SGerrit Uitslag * @param Doku_Handler $handler The Doku_Handler object 63*254467c4SGerrit Uitslag * @return bool|array Return an array with all data you want to use in render, false don't add an instruction 64*254467c4SGerrit Uitslag */ 65*254467c4SGerrit Uitslag public function handle($match, $state, $pos, Doku_Handler $handler) { 66*254467c4SGerrit Uitslag return array($match, $state, $pos); 67*254467c4SGerrit Uitslag } 68*254467c4SGerrit Uitslag 69*254467c4SGerrit Uitslag /** 70*254467c4SGerrit Uitslag * Handles the actual output creation. 71*254467c4SGerrit Uitslag * 72*254467c4SGerrit Uitslag * @param string $mode output format being rendered 73*254467c4SGerrit Uitslag * @param Doku_Renderer $renderer the current renderer object 74*254467c4SGerrit Uitslag * @param array $data data created by handler() 75*254467c4SGerrit Uitslag * @return boolean rendered correctly? (however, returned value is not used at the moment) 76*254467c4SGerrit Uitslag */ 77*254467c4SGerrit Uitslag public function render($mode, Doku_Renderer $renderer, $data) { 78*254467c4SGerrit Uitslag if($mode == 'xhtml') { 79*254467c4SGerrit Uitslag $orientation = strtolower(substr($data[0], 6, -2)); 80*254467c4SGerrit Uitslag $renderer->doc .= "<div class='dw2pdf-$orientation'></div>" . DOKU_LF; 81*254467c4SGerrit Uitslag return true; 82*254467c4SGerrit Uitslag } 83*254467c4SGerrit Uitslag return false; 84*254467c4SGerrit Uitslag } 85*254467c4SGerrit Uitslag 86*254467c4SGerrit Uitslag}