<?php

class HTMLBlock
{
    private array $config;
    private ?PluginAPIInterface $api = null;
    
    public function __construct()
    {
        $this->config = [
            'title' => 'HTML Block Plugin',
            'type' => 'content',
        ];
    }
    
    public function setAPI(PluginAPIInterface $api): void
    {
        $this->api = $api;
    }
    
    public function getSidebarContent(): string
    {
        $currentPage = $this->api ? $this->api->getCurrentPageTitle() : 'Onbekend';
        $isHomepage = $this->api ? $this->api->isHomepage() : false;
        $currentLang = $this->api ? $this->api->getCurrentLanguage() : 'nl';
        $currentPath = $_GET['page'] ?? '';
        $currentPath = preg_replace('/\.(md|php|html)$/', '', $currentPath);
        
        $content = '
                    <p class="mb-2"><strong>Huidige pagina:</strong> ' . htmlspecialchars($currentPage) . '</p>
                    <p class="mb-2"><strong>Taal:</strong> ' . strtoupper($currentLang) . '</p>
                    <p class="mb-3"><strong>Homepage:</strong> ' . ($isHomepage ? 'Ja' : 'Nee') . '</p>';
        
        // Add page-specific content
        if ($this->api) {
            $fileInfo = $this->api->getCurrentPageFileInfo();
            if ($fileInfo) {
                $content .= '
                    <div class="alert alert-info mb-3">
                        <small>
                            <strong>Bestandsinfo:</strong><br>
                            Aangemaakt: ' . htmlspecialchars($fileInfo['created']) . '<br>
                            Gewijzigd: ' . htmlspecialchars($fileInfo['modified']) . '
                        </small>
                    </div>';
            }
            
            // Add dynamic quick navigation
            $menu = $this->api->getMenu();
            if (!empty($menu)) {
                $content .= '
                    <h6>Quick Navigation</h6>
                    <ul class="list-unstyled mb-3">';
                
                foreach ($menu as $item) {
                    if ($item['type'] === 'file') {
                        $url = '/' . $currentLang . '/' . $item['path'];
                        $isActive = ($item['path'] === $currentPath) ? ' fw-bold' : '';
                        $content .= '<li><a href="' . htmlspecialchars($url, ENT_QUOTES, 'UTF-8') . '" class="text-decoration-none' . $isActive . '"><i class="bi bi-file-earmark"></i> ' . htmlspecialchars($item['title'], ENT_QUOTES, 'UTF-8') . '</a></li>';
                    } elseif ($item['type'] === 'folder' && !empty($item['children'])) {
                        $url = '/' . $currentLang . '/' . $item['path'];
                        $isActive = strpos($currentPath, $item['path']) === 0 ? ' fw-bold' : '';
                        $content .= '<li><a href="' . htmlspecialchars($url, ENT_QUOTES, 'UTF-8') . '" class="text-decoration-none' . $isActive . '"><i class="bi bi-folder"></i> ' . htmlspecialchars($item['title'], ENT_QUOTES, 'UTF-8') . '</a></li>';
                        // Show children if current page is in this folder
                        if (strpos($currentPath, $item['path']) === 0) {
                            $content .= '<ul class="list-unstyled ms-3 mb-1">';
                            foreach ($item['children'] as $child) {
                                if ($child['type'] === 'file') {
                                    $childUrl = '/' . $currentLang . '/' . $child['path'];
                                    $childActive = ($child['path'] === $currentPath) ? ' fw-bold' : '';
                                    $content .= '<li><a href="' . htmlspecialchars($childUrl, ENT_QUOTES, 'UTF-8') . '" class="text-decoration-none' . $childActive . '"><i class="bi bi-file-earmark"></i> ' . htmlspecialchars($child['title'], ENT_QUOTES, 'UTF-8') . '</a></li>';
                                }
                            }
                            $content .= '</ul>';
                        }
                    }
                }
                
                $content .= '</ul>';
            }
        }
        
        return $content;
    }
    
    public function getConfig(): array
    {
        return $this->config;
    }
    
    public function setConfig(array $config): void
    {
        $this->config = array_merge($this->config, $config);
    }
}