1<?php
2/**
3 * DokuWiki Plugin autogallery (Syntax Component)
4 *
5 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6 * @author  Tim Siebentaler <tsvamp333@googlemail.com>
7 */
8
9// must be run within Dokuwiki
10if (!defined('DOKU_INC')) die();
11
12class syntax_plugin_autogallery extends DokuWiki_Syntax_Plugin {
13    /**
14     * @return string Syntax mode type
15     */
16    public function getType() {
17        return 'substition';
18    }
19    /**
20     * @return string Paragraph type
21     */
22    public function getPType() {
23        return 'block';
24    }
25    /**
26     * @return int Sort order - Low numbers go before high numbers
27     */
28    public function getSort() {
29        return 200;
30    }
31
32    /**
33     * Connect lookup pattern to lexer.
34     *
35     * @param string $mode Parser mode
36     */
37    public function connectTo($mode) {
38        $this->Lexer->addSpecialPattern('\{\{NEWGALLERY[^\}]*\}\}',$mode,'plugin_autogallery');
39
40    }
41
42    /**
43     * Handle matches of the autogallery syntax
44     *
45     * @param string          $match   The match of the syntax
46     * @param int             $state   The state of the handler
47     * @param int             $pos     The position in the document
48     * @param Doku_Handler    $handler The handler
49     * @return array Data for the renderer
50     */
51    public function handle($match, $state, $pos, Doku_Handler $handler) {
52		/**
53		* Erkannten String parsen
54		* Erste 12 Zeichen für aktivierung plugin, danach Namespace
55		* Trennzeichen = '>'
56		* wurde ein Template angegeben? egal nutzen wir ohnehin nicht
57		*/
58        $options = substr($match, 12, -2); //
59        $options = explode('#', $options, 2);
60
61        $namespace = trim(ltrim($options[0], '>'));
62        $templates = explode(',', $options[1]);
63        $templates = array_map('trim', $templates);
64        $arr='';
65        $arr=array('namespace' => $namespace,'newpagetemplates' => $templates);
66        return $arr;
67    }
68
69    /**
70     * Render xhtml output or metadata
71     *
72     * @param string         $mode      Renderer mode (supported modes: xhtml)
73     * @param Doku_Renderer  $renderer  The renderer
74     * @param array          $data      The data from the handler() function
75     * @return bool If rendering was successful.
76     */
77    public function render($mode, Doku_Renderer $renderer, $data) {
78        global $lang, $INFO;
79        if ($mode == 'xhtml') {
80            $disablecache = null;
81            $namespaceinput ='<input type="text" id="np_cat" name="np_cat" value="'.$INFO['namespace'].':bilder:'.time().'" disabled>';
82            if ($disablecache) $renderer->info['cache'] = false;
83
84            $newpagetemplateinput = $this->_htmlTemplateInput($data['newpagetemplates']);
85            $tstamp=time();
86            if ($data['namespace']) {
87                $tstamp=$data['namespace'];
88            }
89
90            $arr=array('tstamp'=>$tstamp,'mydata'=>$data);
91			/**
92			* EVENT 'NON_SENSE' triggern, damit Action-Teil aktiv werden kann
93			* dort prüfung der Verzeichnisstruktur + initiale Erstellung wenn nicht vorhanden
94			* dort Erstellung von (Sub-)Namespaces, Index dieser Gallerie,, Aktualisierung Gallerie-Hauptindex(Übersicht der Gallerien)
95			*/
96
97            trigger_event('NON_SENSE',$arr);
98            /**
99			* Upload-Button und Hinweis erzeugen
100			*/
101            $form = '<div class="panel filelist">'. DOKU_LF
102                    .'<h2 class="a11y">Dateiauswahl</h2>'. DOKU_LF
103                    .'<ul class="tabs">'. DOKU_LF
104                    .'<li><a href="/dokuwiki/doku.php/wiki;bilder;'.$tstamp.';index?tab_files=upload&amp;do=media&amp;ns=wiki%3Abilder%3A'.$tstamp.'%3A'.$tstamp.'">Hochladen</a></li>'. DOKU_LF
105
106                    .'</ul>'. DOKU_LF
107                    .'<h3>Bitte Dateien in <strong>wiki:bilder:'.$tstamp.':'.$tstamp.' hochladen!<br>(muss vor erstem Anzeigen der Gallerie geschehen)</strong></h3>'. DOKU_LF
108                    .'</div>'. DOKU_LF
109                    .'</div>'. DOKU_LF;
110            $renderer->doc .= $form;
111            $nul=array();
112
113
114
115
116            return true;
117        }
118        return false;
119    }
120    public function _htmlTemplateInput($newpagetemplates) {
121		/**
122		* NUR EINE DUMMY-FUNKTION
123		* IN ZUKUNFT VIELLEICHT MEHR
124		*/
125        return '';
126    }
127
128}
129
130// vim:ts=4:sw=4:et:
131