xref: /plugin/mikioplugin/carousel.php (revision 84838f32822bfb3259fb16871bdfa417bb3362cf)
1*84838f32Snomadjimbob<?php
2*84838f32Snomadjimbobif (!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__) . '/../../../');
3*84838f32Snomadjimbobrequire_once(DOKU_INC . 'inc/init.php');
4*84838f32Snomadjimbob
5*84838f32Snomadjimbob$core = new syntax_plugin_mikioplugin_core();
6*84838f32Snomadjimbob$renderer = new Doku_Renderer_xhtml();
7*84838f32Snomadjimbob
8*84838f32Snomadjimbobif (isset($_GET['id'])) {
9*84838f32Snomadjimbob    $content = rawWiki($_GET['id']);
10*84838f32Snomadjimbob    preg_match_all('/<carousel[^-item].*?>.*?<\/carousel>/s', $content, $matches);
11*84838f32Snomadjimbob
12*84838f32Snomadjimbob    $carousel_index = 0;
13*84838f32Snomadjimbob    if (isset($_GET['carousel'])) {
14*84838f32Snomadjimbob        $carousel_index = $_GET['carousel'];
15*84838f32Snomadjimbob        if ($carousel_index > count($matches[0])) {
16*84838f32Snomadjimbob            die('The page does not have ' . $carousel_index . ' carousels');
17*84838f32Snomadjimbob        }
18*84838f32Snomadjimbob
19*84838f32Snomadjimbob        $carousel_index--;
20*84838f32Snomadjimbob    } else {
21*84838f32Snomadjimbob        if (count($matches[0]) <= 0) {
22*84838f32Snomadjimbob            die('No carousels where found on the page');
23*84838f32Snomadjimbob        }
24*84838f32Snomadjimbob    }
25*84838f32Snomadjimbob
26*84838f32Snomadjimbob    preg_match_all('/<[^\/].*?>/s', $matches[0][$carousel_index], $tags);
27*84838f32Snomadjimbob    foreach ($tags[0] as $tag) {
28*84838f32Snomadjimbob        preg_match_all('/([^\r\n\t\f\v<>= \'"]+)(?:=(["\'])?((?:.(?!\2?\s+(?:\S+)=|\2))+[^>])\2?)?/', $tag, $attributes);
29*84838f32Snomadjimbob
30*84838f32Snomadjimbob        if (count($attributes) > 0) {
31*84838f32Snomadjimbob            $tagName = $attributes[1][0];
32*84838f32Snomadjimbob            $tagAttribs = array();
33*84838f32Snomadjimbob
34*84838f32Snomadjimbob            for ($i = 1; $i < count($attributes[1]); $i++) {
35*84838f32Snomadjimbob                $value = $attributes[3][$i];
36*84838f32Snomadjimbob                if (strlen($value) == 0) {
37*84838f32Snomadjimbob                    $value = true;
38*84838f32Snomadjimbob                }
39*84838f32Snomadjimbob
40*84838f32Snomadjimbob                $tagAttribs[$attributes[1][$i]] = $value;
41*84838f32Snomadjimbob            }
42*84838f32Snomadjimbob
43*84838f32Snomadjimbob            if (strcasecmp($tagName, 'carousel') == 0) {
44*84838f32Snomadjimbob                $core->syntaxRender($renderer, $tagName, '', $tagAttribs, MIKIO_LEXER_ENTER);
45*84838f32Snomadjimbob            } else if (strcasecmp($tagName, 'carousel-item') == 0) {
46*84838f32Snomadjimbob                $core->syntaxRender($renderer, $tagName, '', $tagAttribs, MIKIO_LEXER_SPECIAL);
47*84838f32Snomadjimbob            }
48*84838f32Snomadjimbob        }
49*84838f32Snomadjimbob    }
50*84838f32Snomadjimbob
51*84838f32Snomadjimbob    $core->syntaxRender($renderer, 'carousel', '', $tagAttribs, MIKIO_LEXER_EXIT);
52*84838f32Snomadjimbob
53*84838f32Snomadjimbob    echo '<html lang=en><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link type="text/css" rel="stylesheet" href="assets/external.css"/><link type="text/css" rel="stylesheet" href="css.php?css=/assets/variables.less,/assets/styles.less"/></head><body id="dokuwiki__content">';
54*84838f32Snomadjimbob    echo $renderer->doc;
55*84838f32Snomadjimbob    echo '<script src="../../scripts/jquery/jquery.min.js"></script><script src="script.js"></script>';
56*84838f32Snomadjimbob    echo '</body></html>';
57*84838f32Snomadjimbob} else {
58*84838f32Snomadjimbob    die('No page id was set in the url');
59*84838f32Snomadjimbob}
60