diff --git a/public/admin.php b/public/admin.php index 4435b18..2b7ea24 100644 --- a/public/admin.php +++ b/public/admin.php @@ -12,6 +12,12 @@ header('X-XSS-Protection: 1; mode=block'); header('Referrer-Policy: strict-origin-when-cross-origin'); header_remove('X-Powered-By'); +// Load Composer autoloader for CommonMark +$autoloader = __DIR__ . '/../vendor/autoload.php'; +if (file_exists($autoloader)) { + require_once $autoloader; +} + // Load admin components $appConfig = require __DIR__ . '/../admin/config/app.php'; require_once __DIR__ . '/../admin/src/AdminAuth.php'; @@ -1387,11 +1393,18 @@ function handleGuide(AdminAuth $auth, array $config): void // Parse markdown using CommonMark if available $content = ''; - if (class_exists('League\CommonMark\CommonMarkConverter')) { - $converter = new League\CommonMark\CommonMarkConverter([ + if (class_exists('League\CommonMark\MarkdownConverter')) { + $config = [ 'html_input' => 'allow', 'allow_unsafe_links' => false, - ]); + 'max_nesting_level' => 100, + ]; + $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()); + $converter = new \League\CommonMark\MarkdownConverter($environment); $content = $converter->convert($rawContent)->getContent(); } else { $content = '
' . htmlspecialchars($rawContent) . '';