Add feed URL to base template Refactor list item building into separate function Improve date extraction logic Add feed XML generation handler Update template variables handling
58 lines
2.3 KiB
PHP
58 lines
2.3 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="<?= htmlspecialchars($currentLang ?? 'en') ?>">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title><?= htmlspecialchars($pageTitle ?? 'FolderWeb') ?></title>
|
|
<?php if (!empty($metaDescription)): ?>
|
|
<meta name="description" content="<?= htmlspecialchars($metaDescription) ?>">
|
|
<?php endif; ?>
|
|
<?php if (!empty($socialImageUrl)): ?>
|
|
<meta property="og:image" content="<?= htmlspecialchars($socialImageUrl) ?>">
|
|
<?php endif; ?>
|
|
<link rel="stylesheet" href="/app/default/styles/styles.css">
|
|
<?php if (!empty($pageCssUrl)): ?>
|
|
<link rel="stylesheet" href="<?= htmlspecialchars($pageCssUrl) ?>?v=<?= htmlspecialchars($pageCssHash ?? '') ?>">
|
|
<?php endif; ?>
|
|
<?php if (!empty($feedUrl)): ?>
|
|
<link rel="alternate" type="application/atom+xml" title="<?= htmlspecialchars($pageTitle ?? 'Feed') ?>" href="<?= htmlspecialchars($feedUrl) ?>">
|
|
<?php endif; ?>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<nav>
|
|
<a href="<?= htmlspecialchars($langPrefix ?? '') ?>/"><?= htmlspecialchars($homeLabel ?? ($translations['home'] ?? 'Home')) ?></a>
|
|
<?php if (!empty($navigation)): ?>
|
|
<?php foreach ($navigation as $item): ?>
|
|
<a href="<?= htmlspecialchars($item['url']) ?>"><?= htmlspecialchars($item['title']) ?></a>
|
|
<?php endforeach; ?>
|
|
<?php endif; ?>
|
|
</nav>
|
|
<?php if (!empty($languageUrls) && count($languageUrls) > 1): ?>
|
|
<nav class="language-switcher" aria-label="Language">
|
|
<?php foreach ($languageUrls as $lang => $url): ?>
|
|
<a href="<?= htmlspecialchars($url) ?>" <?= ($lang === $currentLang) ? 'aria-current="true"' : '' ?>><?= htmlspecialchars(strtoupper($lang)) ?></a>
|
|
<?php endforeach; ?>
|
|
</nav>
|
|
<?php endif; ?>
|
|
</header>
|
|
|
|
<main>
|
|
<?= $content ?>
|
|
</main>
|
|
|
|
<footer>
|
|
<nav>
|
|
<a href="https://mastodon.social/@example" rel="me">Mastodon</a>
|
|
<a href="https://bsky.app/profile/example.bsky.social">Bluesky</a>
|
|
</nav>
|
|
<p>
|
|
<?php if (!empty($translations['footer_handcoded'])): ?>
|
|
<?= htmlspecialchars($translations['footer_handcoded']) ?> <?= number_format((microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']) * 1000, 2) ?><?= htmlspecialchars($translations['footer_page_time'] ?? 'ms') ?>
|
|
<?php else: ?>
|
|
Generated in <?= number_format((microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']) * 1000, 2) ?>ms
|
|
<?php endif; ?>
|
|
</p>
|
|
</footer>
|
|
</body>
|
|
</html>
|