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