- Fix template variable replacement in guide pages by removing {{}} brackets
- Escape code blocks in guide markdown to prevent template processing
- Completely rewrite guide documentation with comprehensive CMS features
- Add bilingual guide support (English/Dutch) with detailed examples
- Enhance CodePressCMS core with improved guide page handling
- Update template system with better layout and footer components
- Improve language files with additional translations
- Update configuration with enhanced theme and language settings
Resolves issue where guide pages were showing replaced template variables
instead of displaying them as documentation examples.
114 lines
4.1 KiB
PHP
114 lines
4.1 KiB
PHP
<?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);
|
|
}
|
|
} |