diff --git a/app/cache.php b/app/cache.php index e0f2624..69eee48 100644 --- a/app/cache.php +++ b/app/cache.php @@ -1,9 +1,9 @@ '📁', 'title' => 'Filbasert', 'description' => 'Mapper blir URL-er automatisk', 'url' => $prefix . '/examples/file-based-routing/'], - ['icon' => '⚡', 'title' => 'Uten byggesteg', 'description' => 'Rediger og oppdater—det er alt', 'url' => $prefix . '/examples/no-build-step/'], - ['icon' => '🎨', 'title' => 'Bland formater', 'description' => 'Kombiner .md, .html og .php', 'url' => $prefix . '/examples/mix-formats/'], - ['icon' => '🌍', 'title' => 'Flerspråklig', 'description' => 'Innebygd i18n-støtte', 'url' => $prefix . '/multilingual/'], - ['icon' => '📝', 'title' => 'Markdown', 'description' => 'Skriv innhold i markdown', 'url' => $prefix . '/examples/2024-12-15-markdown-demo/'], - ['icon' => '🎭', 'title' => 'Maler', 'description' => 'Egendefinerte layout og stiler', 'url' => $prefix . '/examples/templates-demo/'], + ['icon' => '📁', 'title' => 'Filbasert', 'description' => 'Mapper blir URL-er automatisk', 'url' => '/examples/file-based-routing/'], + ['icon' => '⚡', 'title' => 'Uten byggesteg', 'description' => 'Rediger og oppdater—det er alt', 'url' => '/examples/no-build-step/'], + ['icon' => '🎨', 'title' => 'Bland formater', 'description' => 'Kombiner .md, .html og .php', 'url' => '/examples/mix-formats/'], + ['icon' => '🌍', 'title' => 'Flerspråklig', 'description' => 'Innebygd i18n-støtte', 'url' => '/multilingual/'], + ['icon' => '📝', 'title' => 'Markdown', 'description' => 'Skriv innhold i markdown', 'url' => '/examples/2024-12-15-markdown-demo/'], + ['icon' => '🎭', 'title' => 'Maler', 'description' => 'Egendefinerte layout og stiler', 'url' => '/examples/templates-demo/'], ]; $stats = [ diff --git a/app/default/content/00-hero.php b/app/default/content/00-hero.php index e2c2708..13d8567 100644 --- a/app/default/content/00-hero.php +++ b/app/default/content/00-hero.php @@ -1,13 +1,12 @@ '📁', 'title' => 'File-Based', 'description' => 'Folders become URLs automatically', 'url' => $prefix . '/examples/file-based-routing/'], - ['icon' => '⚡', 'title' => 'No Build Step', 'description' => 'Edit and refresh—that\'s it', 'url' => $prefix . '/examples/no-build-step/'], - ['icon' => '🎨', 'title' => 'Mix Formats', 'description' => 'Combine .md, .html, and .php', 'url' => $prefix . '/examples/mix-formats/'], - ['icon' => '🌍', 'title' => 'Multilingual', 'description' => 'Built-in i18n support', 'url' => $prefix . '/multilingual/'], - ['icon' => '📝', 'title' => 'Markdown', 'description' => 'Write content in markdown', 'url' => $prefix . '/examples/2024-12-15-markdown-demo/'], - ['icon' => '🎭', 'title' => 'Templates', 'description' => 'Custom layouts and styles', 'url' => $prefix . '/examples/templates-demo/'], + ['icon' => '📁', 'title' => 'File-Based', 'description' => 'Folders become URLs automatically', 'url' => '/examples/file-based-routing/'], + ['icon' => '⚡', 'title' => 'No Build Step', 'description' => 'Edit and refresh—that\'s it', 'url' => '/examples/no-build-step/'], + ['icon' => '🎨', 'title' => 'Mix Formats', 'description' => 'Combine .md, .html, and .php', 'url' => '/examples/mix-formats/'], + ['icon' => '🌍', 'title' => 'Multilingual', 'description' => 'Built-in i18n support', 'url' => '/multilingual/'], + ['icon' => '📝', 'title' => 'Markdown', 'description' => 'Write content in markdown', 'url' => '/examples/2024-12-15-markdown-demo/'], + ['icon' => '🎭', 'title' => 'Templates', 'description' => 'Custom layouts and styles', 'url' => '/examples/templates-demo/'], ]; $stats = [ diff --git a/app/rendering.php b/app/rendering.php index f197a37..4da9798 100644 --- a/app/rendering.php +++ b/app/rendering.php @@ -1,19 +1,16 @@ get('langPrefix', '') : ''; - $cached = getCachedMarkdown($filePath, $langPrefix); + $cached = getCachedMarkdown($filePath); if ($cached !== null) { echo $cached; } else { - // Update to newer versions before PHP 9.0 release - // Current versions have been patched for PHP 8.4+ compatibility if (!class_exists('Parsedown')) { require_once __DIR__ . '/vendor/Parsedown.php'; } @@ -21,25 +18,10 @@ function renderContentFile(string $filePath, ?Context $ctx = null): string { require_once __DIR__ . '/vendor/ParsedownExtra.php'; } $html = '
' . (new ParsedownExtra())->text(file_get_contents($filePath)) . '
'; - - // Add language prefix to internal links - if ($langPrefix) { - $html = preg_replace( - '/href="(\/[^"]*)"/', - 'href="' . $langPrefix . '$1"', - $html - ); - } - - setCachedMarkdown($filePath, $html, $langPrefix); + setCachedMarkdown($filePath, $html); echo $html; } } elseif (in_array($ext, ['html', 'php'])) { - // Make template variables available to PHP content files - if ($ctx !== null && $ext === 'php') { - $templateVars = Hooks::apply(Hook::TEMPLATE_VARS, [], $ctx); - extract($templateVars); - } include $filePath; } return ob_get_clean(); @@ -47,12 +29,12 @@ function renderContentFile(string $filePath, ?Context $ctx = null): string { function renderTemplate(Context $ctx, string $content, int $statusCode = 200): void { global $GLOBALS; - + // Get basic template vars $navigation = $ctx->navigation; $homeLabel = $ctx->homeLabel; $pageTitle = null; - + // Let plugins add template variables $templateVars = Hooks::apply(Hook::TEMPLATE_VARS, [ 'content' => $content, @@ -60,7 +42,7 @@ function renderTemplate(Context $ctx, string $content, int $statusCode = 200): v 'homeLabel' => $homeLabel, 'pageTitle' => $pageTitle ], $ctx); - + extract($templateVars); http_response_code($statusCode); @@ -77,7 +59,7 @@ function renderFile(Context $ctx, string $filePath): void { $ext = pathinfo($realPath, PATHINFO_EXTENSION); if (in_array($ext, CONTENT_EXTENSIONS)) { - $content = renderContentFile($realPath, $ctx); + $content = renderContentFile($realPath); $pageDir = dirname($realPath); $pageMetadata = loadMetadata($pageDir); @@ -115,7 +97,7 @@ function renderFile(Context $ctx, string $filePath): void { 'pageCssHash' => $pageCssHash, 'socialImageUrl' => $socialImageUrl ], $ctx); - + extract($templateVars); // Wrap content with page template @@ -134,11 +116,11 @@ function renderFile(Context $ctx, string $filePath): void { function renderMultipleFiles(Context $ctx, array $files, string $pageDir): void { $content = ''; foreach ($files as $file) { - $content .= renderContentFile($file, $ctx); + $content .= renderContentFile($file); } $pageMetadata = loadMetadata($pageDir); - + // Load page-level plugins getPluginManager()->loadPagePlugins($pageMetadata); @@ -172,7 +154,7 @@ function renderMultipleFiles(Context $ctx, array $files, string $pageDir): void 'pageCssHash' => $pageCssHash, 'socialImageUrl' => $socialImageUrl ], $ctx); - + extract($templateVars); // Wrap content with page template diff --git a/app/vendor/ParsedownExtra.php b/app/vendor/ParsedownExtra.php index 2adcbaa..d192e2b 100644 --- a/app/vendor/ParsedownExtra.php +++ b/app/vendor/ParsedownExtra.php @@ -508,7 +508,7 @@ class ParsedownExtra extends Parsedown ), ); - uasort($this->DefinitionData['Footnote'], [$this, 'sortFootnotes']); + uasort($this->DefinitionData['Footnote'], 'self::sortFootnotes'); foreach ($this->DefinitionData['Footnote'] as $definitionId => $DefinitionData) {