xref: /plugin/dw2pdf/syntax/pagesetting.php (revision 254467c4df7b98a07196afe423d78250051ab76f)
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}