text(file_get_contents($file)); } else { include $file; } } $pageContent = ob_get_clean(); } // Load metadata for this directory $metadata = loadMetadata($dir, $currentLang, $defaultLang); // Select list template based on metadata page_template if (isset($metadata['page_template']) && !empty($metadata['page_template'])) { $templateName = $metadata['page_template']; // Add .php extension if not present if (!str_ends_with($templateName, '.php')) { $templateName .= '.php'; } $customTemplate = dirname(__DIR__) . '/custom/templates/' . $templateName; $defaultTemplate = __DIR__ . '/default/templates/' . $templateName; if (file_exists($customTemplate)) { $listTemplate = $customTemplate; } elseif (file_exists($defaultTemplate)) { $listTemplate = $defaultTemplate; } // If template doesn't exist, fall back to default $listTemplate } // Default directory listing $subdirs = array_filter( scandir($dir) ?: [], fn($item) => !in_array($item, ['.', '..']) && is_dir("$dir/$item") ); $items = array_filter(array_map(function($item) use ($dir, $requestPath, $currentLang, $defaultLang) { $itemPath = "$dir/$item"; // Check if content exists for current language if ($currentLang !== $defaultLang) { $contentFiles = findAllContentFiles($itemPath, $currentLang, $defaultLang); if (empty($contentFiles)) return null; } $metadata = loadMetadata($itemPath, $currentLang, $defaultLang); $coverImage = findCoverImage($itemPath); $pdfFile = findPdfFile($itemPath); $title = $metadata['title'] ?? extractTitle($itemPath, $currentLang, $defaultLang) ?? $item; $date = null; if (isset($metadata['date'])) { $date = formatNorwegianDate($metadata['date']); } else { $date = extractDateFromFolder($item) ?: date("F d, Y", filemtime($itemPath)); } $langPrefix = $currentLang !== $defaultLang ? "/$currentLang" : ''; // Use translated slug if available, otherwise use folder name $urlSlug = ($currentLang !== $defaultLang && $metadata && isset($metadata['slug'])) ? $metadata['slug'] : $item; return [ 'title' => $title, 'date' => $date, 'url' => $langPrefix . '/' . trim($requestPath, '/') . '/' . urlencode($urlSlug), 'cover' => $coverImage ? $langPrefix . '/' . trim($requestPath, '/') . '/' . urlencode($urlSlug) . '/' . $coverImage : null, 'summary' => $metadata['summary'] ?? null, 'pdf' => $pdfFile ? $langPrefix . '/' . trim($requestPath, '/') . '/' . urlencode($urlSlug) . '/' . $pdfFile : null, 'redirect' => $metadata['redirect'] ?? null ]; }, $subdirs)); ob_start(); include $listTemplate; $content = ob_get_clean(); // Build navigation for base template $navigation = buildNavigation($contentDir, $currentLang, $defaultLang); include $baseTemplate; exit; case 'not_found': renderTemplate("

404 Not Found

The requested resource was not found.

", 404); }