xref: /template/strap/renderer/xml.php (revision c3437056399326d621a01da73b649707fbb0ae69)
1*c3437056SNickeau<?php
2*c3437056SNickeau
3*c3437056SNickeauuse ComboStrap\AdsUtility;
4*c3437056SNickeauuse ComboStrap\BreadcrumbHierarchical;
5*c3437056SNickeauuse ComboStrap\FsWikiUtility;
6*c3437056SNickeauuse ComboStrap\XhtmlUtility;
7*c3437056SNickeauuse ComboStrap\PluginUtility;
8*c3437056SNickeauuse ComboStrap\TableUtility;
9*c3437056SNickeauuse ComboStrap\TocUtility;
10*c3437056SNickeau
11*c3437056SNickeau
12*c3437056SNickeaurequire_once(__DIR__ . '/../ComboStrap/FsWikiUtility.php');
13*c3437056SNickeaurequire_once(__DIR__ . '/../ComboStrap/TableUtility.php');
14*c3437056SNickeaurequire_once(__DIR__ . '/../ComboStrap/TocUtility.php');
15*c3437056SNickeaurequire_once(__DIR__ . '/../ComboStrap/AdsUtility.php');
16*c3437056SNickeaurequire_once(__DIR__ . '/../ComboStrap/XhtmlUtility.php');
17*c3437056SNickeaurequire_once(__DIR__ . '/../ComboStrap/BreadcrumbHierarchical.php');
18*c3437056SNickeau
19*c3437056SNickeau/**
20*c3437056SNickeau * A rendering in XML
21*c3437056SNickeau */
22*c3437056SNickeauclass  renderer_plugin_combo_xml extends Doku_Renderer_xhtml
23*c3437056SNickeau{
24*c3437056SNickeau
25*c3437056SNickeau    const FORMAT = "xml";
26*c3437056SNickeau
27*c3437056SNickeau    /**
28*c3437056SNickeau     * The last two words of the class
29*c3437056SNickeau     */
30*c3437056SNickeau    const MODE = 'combo_'.self::FORMAT;
31*c3437056SNickeau
32*c3437056SNickeau
33*c3437056SNickeau    function getFormat(): string
34*c3437056SNickeau    {
35*c3437056SNickeau        return self::FORMAT;
36*c3437056SNickeau    }
37*c3437056SNickeau
38*c3437056SNickeau    /*
39*c3437056SNickeau     * Function that enable to list the plugin in the options for config:renderer_xhtml
40*c3437056SNickeau     * http://www.dokuwiki.org/config:renderer_xhtml
41*c3437056SNickeau     * setting in its Configuration Manager.
42*c3437056SNickeau     */
43*c3437056SNickeau    public function canRender($format)
44*c3437056SNickeau    {
45*c3437056SNickeau        return ($format == 'xml');
46*c3437056SNickeau    }
47*c3437056SNickeau
48*c3437056SNickeau
49*c3437056SNickeau    /**
50*c3437056SNickeau     * Render a heading
51*c3437056SNickeau     *
52*c3437056SNickeau     *
53*c3437056SNickeau     * @param string $text the text to display
54*c3437056SNickeau     * @param int $level header level
55*c3437056SNickeau     * @param int $pos byte position in the original source
56*c3437056SNickeau     */
57*c3437056SNickeau    function header($text, $level, $pos)
58*c3437056SNickeau    {
59*c3437056SNickeau
60*c3437056SNickeau        $this->doc .= "<h$level>$text</h$level>";
61*c3437056SNickeau
62*c3437056SNickeau    }
63*c3437056SNickeau
64*c3437056SNickeau    /**
65*c3437056SNickeau     * This are edit zone section (not HTML/Outline Section)
66*c3437056SNickeau     * @param int $level
67*c3437056SNickeau     */
68*c3437056SNickeau    public function section_open($level)
69*c3437056SNickeau    {
70*c3437056SNickeau        $this->doc .= "";
71*c3437056SNickeau    }
72*c3437056SNickeau
73*c3437056SNickeau    public function section_close()
74*c3437056SNickeau    {
75*c3437056SNickeau        $this->doc .= "";
76*c3437056SNickeau    }
77*c3437056SNickeau
78*c3437056SNickeau
79*c3437056SNickeau    public function document_start()
80*c3437056SNickeau    {
81*c3437056SNickeau        $this->doc .= '<?xml version="1.0" encoding="UTF-8" standalone="no" ?>';
82*c3437056SNickeau        $this->doc .= "<document>";
83*c3437056SNickeau    }
84*c3437056SNickeau
85*c3437056SNickeau    public function multiplyentity($x, $y): string
86*c3437056SNickeau    {
87*c3437056SNickeau        return "$x x $y";
88*c3437056SNickeau    }
89*c3437056SNickeau
90*c3437056SNickeau
91*c3437056SNickeau    function document_end()
92*c3437056SNickeau    {
93*c3437056SNickeau
94*c3437056SNickeau        $this->doc .= "</document>";
95*c3437056SNickeau
96*c3437056SNickeau        /**
97*c3437056SNickeau         * The result can be seen with
98*c3437056SNickeau         * doku.php?id=somepage&do=export_combo_xml
99*c3437056SNickeau         *
100*c3437056SNickeau         * Set the header temporarily for the export.php file
101*c3437056SNickeau         *
102*c3437056SNickeau         * The mode in the export is
103*c3437056SNickeau         */
104*c3437056SNickeau        $mode = "combo_" . $this->getPluginComponent();
105*c3437056SNickeau        global $ID;
106*c3437056SNickeau        p_set_metadata(
107*c3437056SNickeau            $ID,
108*c3437056SNickeau            array("format" => array($mode => array("Content-Type" => 'application/xml'))),
109*c3437056SNickeau            false,
110*c3437056SNickeau            true // Persistence is needed because there is a cache
111*c3437056SNickeau        );
112*c3437056SNickeau
113*c3437056SNickeau    }
114*c3437056SNickeau
115*c3437056SNickeau
116*c3437056SNickeau    /**
117*c3437056SNickeau     * https://getbootstrap.com/docs/4.4/content/typography/#inline-text-elements
118*c3437056SNickeau     */
119*c3437056SNickeau    public
120*c3437056SNickeau    function monospace_open()
121*c3437056SNickeau    {
122*c3437056SNickeau        $this->doc .= '<mark>';
123*c3437056SNickeau    }
124*c3437056SNickeau
125*c3437056SNickeau    public
126*c3437056SNickeau    function monospace_close()
127*c3437056SNickeau    {
128*c3437056SNickeau        $this->doc .= '</mark>';
129*c3437056SNickeau    }
130*c3437056SNickeau
131*c3437056SNickeau
132*c3437056SNickeau}
133