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