<?php
/**
 * Combonav Plugin: Vytvoří combobox pro navigaci mezi stránkami
 *
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     [Vaše jméno]
 */

// Ujistíme se, že skript není spuštěn přímo
if(!defined('DOKU_INC')) die();

class syntax_plugin_combonav extends DokuWiki_Syntax_Plugin {

    public function getType() {
        return 'substition';
    }

    public function getSort() {
        return 155;
    }

    public function connectTo($mode) {
        $this->Lexer->addSpecialPattern('\{\{combonav>.*?\}\}', $mode, 'plugin_combonav');
    }

    public function handle($match, $state, $pos, Doku_Handler $handler) {
        // Extrahujeme seznam stránek z syntaxe
        $match = substr($match, 11, -2); // Odstraníme {{combonav> a }}
        $pages = explode(' ', trim($match));
        return array($pages);
    }

    public function render($mode, Doku_Renderer $renderer, $data) {
        if($mode != 'xhtml') return false;

        // Získáme seznam stránek
        list($pages) = $data;
        
        // Vygenerujeme jedinečné ID pro combobox
        $id = 'combonav_' . md5(join('', $pages));

        // Začátek HTML výstupu
        $renderer->doc .= '<select id="' . $id . '" class="combonav">';
        $renderer->doc .= '<option value="">-- Vyberte stránku --</option>';

        // Přidáme každou stránku jako možnost
        foreach($pages as $page) {
            $title = p_get_first_heading($page); // Získáme název stránky
            if(!$title) $title = $page; // Pokud není název, použijeme ID stránky
            $renderer->doc .= '<option value="' . wl($page) . '">' . $title . '</option>';
        }

        $renderer->doc .= '</select>';

        // Přidáme JavaScript pro obsluhu změny výběru
        $renderer->doc .= '<script>
            document.getElementById("' . $id . '").addEventListener("change", function() {
                var selected = this.value;
                if(selected) {
                    window.location.href = selected;
                }
            });
        </script>';

        return true;
    }
}