<?php

class HTMLBlock
{
    private array $config;
    private ?CMSAPI $api = null;
    
    public function __construct()
    {
        $this->config = [
            'title' => 'HTML Block Plugin'
        ];
    }
    
    public function setAPI(CMSAPI $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';
        
        $content = '
            <div class="card mb-3">
                <div class="card-header">
                    <h5 class="mb-0">' . $this->config['title'] . '</h5>
                </div>
                <div class="card-body">
                    <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 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 = $this->api->createUrl($item['path']);
                        $content .= '<li><a href="' . htmlspecialchars($url) . '" class="text-decoration-none">📄 ' . htmlspecialchars($item['title']) . '</a></li>';
                    }
                }
                
                $content .= '</ul>';
            }
        }
        
        $content .= '
                    <hr>
                    <h6>Actions</h6>
                    <div class="d-grid gap-2">
                        <button class="btn btn-sm btn-outline-primary" onclick="refreshContent()">
                            <i class="bi bi-arrow-clockwise"></i> Ververs Content
                        </button>
                        <button class="btn btn-sm btn-outline-secondary" onclick="toggleSidebar()">
                            <i class="bi bi-layout-sidebar"></i> Toggle Sidebar
                        </button>
                    </div>
                </div>
            </div>
            
            <script>
            function refreshContent() {
                window.location.reload();
            }
            
            function toggleSidebar() {
                const sidebar = document.getElementById("site-sidebar");
                const content = document.getElementById("site-content");
                if (sidebar.style.display === "none") {
                    sidebar.style.display = "";
                    content.classList.remove("col-12");
                    content.classList.add("col-lg-9", "col-md-8");
                } else {
                    sidebar.style.display = "none";
                    content.classList.remove("col-lg-9", "col-md-8");
                    content.classList.add("col-12");
                }
            }
            </script>';
        
        return $content;
    }
    
    public function getConfig(): array
    {
        return $this->config;
    }
    
    public function setConfig(array $config): void
    {
        $this->config = array_merge($this->config, $config);
    }
}