Quelltext des aktuellen Standes
<?php
if (!defined('ABSPATH')) {
exit;
}
$base_url = remove_query_arg(['opennit_topic', 'opennit_page'], get_permalink());
$topic_id = $topic_id ?? 0;
?>
<div class="opennit-wiki">
<?php if ($mode === 'index'): ?>
<?php if (empty($topics)): ?>
<p class="opennit-wiki-empty"><?= esc_html($text_wiki_empty) ?></p>
<?php else: ?>
<div class="opennit-wiki-topics-grid">
<?php
$root_ids = array_column($topics, 'id');
foreach ($topics as $topic):
$parent_in_list = in_array((int)($topic['parent_id'] ?? -1), $root_ids, true)
&& $topic['parent_id'] !== null;
if ($parent_in_list) continue;
?>
<a href="<?= esc_url(add_query_arg('opennit_topic', (int)$topic['id'], $base_url)) ?>"
class="opennit-wiki-topic-card">
<?php if (!empty($topic['image_url'])): ?>
<span class="opennit-wiki-topic-img">
<img src="<?= esc_url($topic['image_url']) ?>" alt="" loading="lazy">
</span>
<?php else: ?>
<span class="opennit-wiki-topic-icon">📄</span>
<?php endif; ?>
<span class="opennit-wiki-topic-name"><?= esc_html($topic['name']) ?></span>
<?php if (!empty($topic['breadcrumb']) && strpos($topic['breadcrumb'], ' > ') !== false): ?>
<span class="opennit-wiki-topic-breadcrumb"><?= esc_html($topic['breadcrumb']) ?></span>
<?php endif; ?>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php elseif ($mode === 'topic'): ?>
<?php
$t_id = (int)($topic_data['topic_id'] ?? 0);
$topic_name = $topic_data['topic_name'] ?? '';
$breadcrumb = $topic_data['breadcrumb'] ?? $topic_name;
$cover_img = $topic_data['image_url'] ?? '';
// Only direct pages of this topic (not pages from sub-topics)
$pages = array_values(array_filter(
$topic_data['pages'] ?? [],
fn($p) => (int)($p['topic_id'] ?? 0) === $t_id
));
?>
<?php $at_root = ($root_topic_id > 0 && $t_id === $root_topic_id); ?>
<?php if (!$at_root): ?>
<nav class="opennit-wiki-nav">
<a href="<?= esc_url($base_url) ?>" class="opennit-wiki-back">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="15 18 9 12 15 6"/></svg>
<?= esc_html($text_wiki_back_label) ?>
</a>
<?php foreach (explode(' > ', $breadcrumb) as $bc_part): ?>
<span class="opennit-wiki-bc-sep">›</span>
<span class="opennit-wiki-bc-part"><?= esc_html($bc_part) ?></span>
<?php endforeach; ?>
</nav>
<?php endif; ?>
<h2 class="opennit-wiki-topic-title"><?= esc_html($topic_name) ?></h2>
<?php if (!empty($sub_topics)): ?>
<div class="opennit-wiki-subtopics">
<h3 class="opennit-wiki-section-label"><?= esc_html($text_wiki_subtopics_label) ?></h3>
<div class="opennit-wiki-topics-grid">
<?php foreach ($sub_topics as $sub): ?>
<a href="<?= esc_url(add_query_arg('opennit_topic', (int)$sub['id'], $base_url)) ?>"
class="opennit-wiki-topic-card">
<?php if (!empty($sub['image_url'])): ?>
<span class="opennit-wiki-topic-img">
<img src="<?= esc_url($sub['image_url']) ?>" alt="" loading="lazy">
</span>
<?php else: ?>
<span class="opennit-wiki-topic-icon">📁</span>
<?php endif; ?>
<span class="opennit-wiki-topic-name"><?= esc_html($sub['name']) ?></span>
</a>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
<?php if (!empty($pages)): ?>
<?php if (!empty($sub_topics)): ?>
<h3 class="opennit-wiki-section-label" style="margin-top:1.5rem;"><?= esc_html($text_wiki_pages_label) ?></h3>
<?php endif; ?>
<div class="opennit-wiki-page-list">
<?php foreach ($pages as $page): ?>
<a href="<?= esc_url(add_query_arg(['opennit_topic' => $t_id, 'opennit_page' => (int)$page['id']], $base_url)) ?>"
class="opennit-wiki-page-card">
<span class="opennit-wiki-page-card-title"><?= esc_html($page['title']) ?></span>
<?php if (!empty($page['updated_at'])): ?>
<span class="opennit-wiki-page-card-date"><?= esc_html(date_i18n(get_option('date_format'), strtotime($page['updated_at']))) ?></span>
<?php endif; ?>
<svg class="opennit-wiki-page-card-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 18 15 12 9 6"/></svg>
</a>
<?php endforeach; ?>
</div>
<?php elseif (empty($sub_topics)): ?>
<p class="opennit-wiki-empty"><?= esc_html($text_wiki_no_pages) ?></p>
<?php endif; ?>
<?php elseif ($mode === 'page' && $current_page !== null): ?>
<?php
$t_id = (int)($topic_data['topic_id'] ?? 0);
$topic_name = $topic_data['topic_name'] ?? '';
$breadcrumb = $topic_data['breadcrumb'] ?? $topic_name;
$topic_url = add_query_arg('opennit_topic', $t_id, $base_url);
?>
<nav class="opennit-wiki-nav">
<a href="<?= esc_url($base_url) ?>" class="opennit-wiki-back">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="15 18 9 12 15 6"/></svg>
<?= esc_html($text_wiki_back_label) ?>
</a>
<?php foreach (explode(' > ', $breadcrumb) as $bc_part): ?>
<span class="opennit-wiki-bc-sep">›</span>
<a href="<?= esc_url($topic_url) ?>" class="opennit-wiki-bc-part opennit-wiki-bc-link"><?= esc_html($bc_part) ?></a>
<?php endforeach; ?>
<span class="opennit-wiki-bc-sep">›</span>
<span class="opennit-wiki-bc-part opennit-wiki-bc-current"><?= esc_html($current_page['title']) ?></span>
</nav>
<article class="opennit-wiki-page--full">
<h2 class="opennit-wiki-page-title"><?= esc_html($current_page['title']) ?></h2>
<div class="opennit-wiki-page-content">
<?= wp_kses_post($current_page['content_html'] ?? '') ?>
</div>
<?php if (!empty($current_page['updated_at'])): ?>
<div class="opennit-wiki-page-meta">
Zuletzt aktualisiert: <?= esc_html(date_i18n(get_option('date_format'), strtotime($current_page['updated_at']))) ?>
</div>
<?php endif; ?>
</article>
<?php endif; ?>
</div>