From 596b745bad871acbe0991df5b8c3f266f9a470f4 Mon Sep 17 00:00:00 2001 From: Edwin Noorlander Date: Tue, 28 Jul 2026 14:13:03 +0200 Subject: [PATCH] Inhoudsopgave toegevoegd aan handleidingen met HeadingPermalinkExtension - Nederlandse en Engelse handleiding hebben nu een inhoudsopgave met anchors naar alle hoofdstukken op dezelfde pagina - HeadingPermalinkExtension toegevoegd aan CommonMark configuratie voor zowel frontend als admin markdown parsers - Heading IDs gegenereerd voor elk kopje (## en lager) --- admin/templates/pages/guide.php | 5 +++++ cms/core/class/CodePressCMS.php | 11 +++++++++++ guide/en.codepress.md | 22 ++++++++++++++++++++++ guide/nl.codepress.md | 22 ++++++++++++++++++++++ public/admin.php | 11 +++++++++++ 5 files changed, 71 insertions(+) diff --git a/admin/templates/pages/guide.php b/admin/templates/pages/guide.php index ce4192b..7eb7166 100644 --- a/admin/templates/pages/guide.php +++ b/admin/templates/pages/guide.php @@ -21,4 +21,9 @@ .guide-content table { width: 100%; margin-bottom: 1rem; } .guide-content table th, .guide-content table td { padding: 0.5rem; border: 1px solid #dee2e6; } .guide-content blockquote { border-left: 3px solid #ccc; padding-left: 1rem; color: #666; margin-left: 0; } +.guide-content .heading-permalink { display: none; } +.guide-content ul:first-of-type { list-style: none; padding-left: 0; } +.guide-content ul:first-of-type li { padding: 0.15rem 0; } +.guide-content ul:first-of-type li a { text-decoration: none; color: #0d6efd; } +.guide-content ul:first-of-type li a:hover { text-decoration: underline; } \ No newline at end of file diff --git a/cms/core/class/CodePressCMS.php b/cms/core/class/CodePressCMS.php index 1b59429..8766b84 100644 --- a/cms/core/class/CodePressCMS.php +++ b/cms/core/class/CodePressCMS.php @@ -559,6 +559,16 @@ class CodePressCMS { 'html_input' => 'strip', 'allow_unsafe_links' => false, 'max_nesting_level' => 100, + 'heading_permalink' => [ + 'html_class' => 'heading-permalink', + 'id_prefix' => '', + 'insert' => 'after', + 'min_heading_level' => 1, + 'max_heading_level' => 6, + 'title' => 'Permalink', + 'symbol' => '', + 'aria_hidden' => true, + ], ]; // Create environment with extensions @@ -568,6 +578,7 @@ class CodePressCMS { $environment->addExtension(new \League\CommonMark\Extension\Strikethrough\StrikethroughExtension()); $environment->addExtension(new \League\CommonMark\Extension\Table\TableExtension()); $environment->addExtension(new \League\CommonMark\Extension\TaskList\TaskListExtension()); + $environment->addExtension(new \League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkExtension()); // Handle custom image size syntax: ![alt](url){:width="300" height="200"} $imagePlaceholders = []; diff --git a/guide/en.codepress.md b/guide/en.codepress.md index b9a7468..0f4f1bf 100644 --- a/guide/en.codepress.md +++ b/guide/en.codepress.md @@ -1,5 +1,27 @@ # CodePress CMS Guide +## Table of Contents + +- [Overview](#overview) +- [Features](#features) +- [Installation](#installation) +- [Project Structure](#project-structure) +- [Configuration](#configuration) +- [Content Structure](#content-structure) +- [Admin Console](#admin-console) +- [Templates](#templates) +- [URL Structure](#url-structure) +- [SEO Optimization](#seo-optimization) +- [Plugin System](#plugin-system) +- [Content API](#content-api-for-php-content-files) +- [Analytics & Tracking](#analytics--tracking) +- [Frequently Asked Questions](#frequently-asked-questions) +- [Troubleshooting](#troubleshooting) +- [Security](#security) +- [Version](#version) +- [Support](#support) +- [License](#license) + ## Overview CodePress CMS is a lightweight, file-based content management system built with PHP (>=8.0). Works without a database. diff --git a/guide/nl.codepress.md b/guide/nl.codepress.md index fed154f..d37dbbe 100644 --- a/guide/nl.codepress.md +++ b/guide/nl.codepress.md @@ -1,5 +1,27 @@ # CodePress CMS Handleiding +## Inhoudsopgave + +- [Overzicht](#overzicht) +- [Functies](#functies) +- [Installatie](#installatie) +- [Projectstructuur](#projectstructuur) +- [Configuratie](#configuratie) +- [Content Structuur](#content-structuur) +- [Admin Console](#admin-console) +- [Templates](#templates) +- [URL Structuur](#url-structuur) +- [SEO Optimalisatie](#seo-optimalisatie) +- [Plugin Systeem](#plugin-systeem) +- [Content API](#content-api-voor-php-content-bestanden) +- [Analytics & Tracking](#analytics--tracking) +- [Veelgestelde Vragen](#veelgestelde-vragen) +- [Troubleshooting](#troubleshooting) +- [Beveiliging](#beveiliging) +- [Versie](#versie) +- [Ondersteuning](#ondersteuning) +- [Licentie](#licentie) + ## Overzicht CodePress CMS is een lichtgewicht, file-based content management systeem gebouwd met PHP (>=8.0). Werkt zonder database. diff --git a/public/admin.php b/public/admin.php index 2b7ea24..23b6a6b 100644 --- a/public/admin.php +++ b/public/admin.php @@ -1398,12 +1398,23 @@ function handleGuide(AdminAuth $auth, array $config): void 'html_input' => 'allow', 'allow_unsafe_links' => false, 'max_nesting_level' => 100, + 'heading_permalink' => [ + 'html_class' => 'heading-permalink', + 'id_prefix' => '', + 'insert' => 'after', + 'min_heading_level' => 1, + 'max_heading_level' => 6, + 'title' => 'Permalink', + 'symbol' => '', + 'aria_hidden' => true, + ], ]; $environment = new \League\CommonMark\Environment\Environment($config); $environment->addExtension(new \League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension()); $environment->addExtension(new \League\CommonMark\Extension\Table\TableExtension()); $environment->addExtension(new \League\CommonMark\Extension\Strikethrough\StrikethroughExtension()); $environment->addExtension(new \League\CommonMark\Extension\TaskList\TaskListExtension()); + $environment->addExtension(new \League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkExtension()); $converter = new \League\CommonMark\MarkdownConverter($environment); $content = $converter->convert($rawContent)->getContent(); } else {