innhold/custom/templates/base.php

120 lines
6.3 KiB
PHP
Raw Normal View History

2025-10-02 17:01:55 +02:00
<?php
$startTime = microtime(true);
$publicDir = realpath($_SERVER['DOCUMENT_ROOT']);
$customCssPath = __DIR__ . '/../styles/base.css';
$defaultCssPath = __DIR__ . '/../../default/styles/base.css';
$cssPath = file_exists($customCssPath) ? $customCssPath : $defaultCssPath;
$cssUrl = file_exists($customCssPath) ? '/app/styles/base.css' : '/app/default-styles/base.css';
$cssHash = file_exists($cssPath) ? hash_file('md5', $cssPath) : 'file_not_found';
if (isset($GLOBALS['_SERVER']['SCRIPT_FILENAME'])) { $includingFile = $_SERVER['SCRIPT_FILENAME']; }
if (!empty($includingFile)) { $pageName = pathinfo($includingFile, PATHINFO_FILENAME); }
if (!in_array(basename(dirname($includingFile)), ['latest', 'live', 'frozen']) && basename(dirname($includingFile)) !== '') { $dirName = basename(dirname($includingFile)); }
function getActiveClass($href) { return rtrim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/') === rtrim($href, '/') ? 'active' : ''; }
?>
<!DOCTYPE html>
<html lang="no">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<?php
// Prepare social media metadata
$siteTitle = 'Stopp lidelsen';
$fullTitle = !empty($pageTitle) ? htmlspecialchars($pageTitle) . ' - ' . $siteTitle : $siteTitle;
$description = !empty($metaDescription) ? htmlspecialchars($metaDescription) : 'Vi arbeider for at pasienter som kan ha nytte av medisinsk cannabis skal motta likeverdig og trygg behandling med oppfølging fra lege.';
$currentUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// Determine social media image
$socialImage = null;
if (!empty($socialImageUrl)) {
// Use provided social image URL
$socialImage = $socialImageUrl;
} elseif ($_SERVER['REQUEST_URI'] === '/' || rtrim($_SERVER['REQUEST_URI'], '/') === '') {
// Use hero-bg.webp for frontpage
$socialImage = '/hero-bg.webp';
}
// Convert relative URLs to absolute for social media
if ($socialImage && !str_starts_with($socialImage, 'http')) {
$socialImage = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $socialImage;
}
?>
<title><?= $fullTitle ?></title>
<!-- Standard metadata -->
<meta name="description" content="<?= $description ?>">
2025-10-02 17:01:55 +02:00
<meta name="fediverse:creator" content="@stopplidelsen@oslo.town">
<!-- Open Graph metadata (Facebook, Mastodon, etc.) -->
<meta property="og:type" content="website">
<meta property="og:site_name" content="<?= $siteTitle ?>">
<meta property="og:title" content="<?= $fullTitle ?>">
<meta property="og:description" content="<?= $description ?>">
<meta property="og:url" content="<?= htmlspecialchars($currentUrl) ?>">
<?php if ($socialImage): ?>
<meta property="og:image" content="<?= htmlspecialchars($socialImage) ?>">
<meta property="og:image:alt" content="<?= $fullTitle ?>">
<?php endif; ?>
<!-- Twitter Card metadata -->
<meta name="twitter:card" content="<?= $socialImage ? 'summary_large_image' : 'summary' ?>">
<meta name="twitter:title" content="<?= $fullTitle ?>">
<meta name="twitter:description" content="<?= $description ?>">
<?php if ($socialImage): ?>
<meta name="twitter:image" content="<?= htmlspecialchars($socialImage) ?>">
<meta name="twitter:image:alt" content="<?= $fullTitle ?>">
<?php endif; ?>
2025-10-02 17:01:55 +02:00
<link rel="stylesheet" href="<?= $cssUrl ?>?v=<?= $cssHash ?>">
<?php if (!empty($pageCssUrl)): ?>
<link rel="stylesheet" href="<?= $pageCssUrl ?>?v=<?= $pageCssHash ?? '' ?>">
<?php endif; ?>
2025-10-02 17:01:55 +02:00
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="icon" href="/favicon.png" type="image/png">
<link href="/app/fonts/pt-serif/pt-serif.css" rel="stylesheet">
</head>
<body class="<?php if (isset($dirName)) echo 'section-' . $dirName . ' '; ?><?php if (isset($pageName)) echo 'page-' . $pageName; ?>">
<div class="grid-container">
<header class="contain">
<div>
<div class="logo">
<a href="/"><?php include $publicDir . '/logo.svg'; ?></a>
2025-10-02 17:01:55 +02:00
</div>
<nav>
<ul>
<li><a href="/" class="button <?php echo getActiveClass('/'); ?>"><?= htmlspecialchars($homeLabel ?? 'Forsiden') ?></a></li>
2025-10-02 17:01:55 +02:00
<?php if (!empty($navigation)): ?>
<?php foreach ($navigation as $item): ?>
<li><a href="<?= htmlspecialchars($item['url']) ?>" class="button <?php echo getActiveClass($item['url']); ?>"><?= htmlspecialchars($item['title']) ?></a></li>
2025-10-02 17:01:55 +02:00
<?php endforeach; ?>
<?php endif; ?>
</ul>
</nav>
</div>
</header>
<main>
<?php echo $content ?? ''; ?>
</main>
<footer>
<div class="contain">
<?php if ($currentLang === 'no'): ?>
<p>Følg oss <a href="https://www.facebook.com/StoppLidelsen/">Facebook</a>, <a href="https://www.instagram.com/stopplidelsen/">Instagram</a> og <a rel="me" href="https://oslo.town/@stopplidelsen">Mastodon</a></p>
<?php $endTime = microtime(true); $pageLoadTime = round(($endTime - $startTime) * 1000, 2); ?>
<p class="generated">Nettsiden er håndkodet av Ruben Solvang ved hjelp av HTML, CSS og minimale doser PHP. Det tok <?php echo $pageLoadTime; ?>ms å generere siden.</p>
<?php elseif ($currentLang === 'en'): ?>
<p><a rel="me" href="https://oslo.town/@stopplidelsen">Follow us on Mastodon</a></p>
<?php $endTime = microtime(true); $pageLoadTime = round(($endTime - $startTime) * 1000, 2); ?>
<p class="generated">This website was hand-coded by Ruben Solvang using HTML, CSS and minimal doses of PHP. It took <?php echo $pageLoadTime; ?>ms to generate this page.</p>
<?php endif; ?>
2025-10-02 17:01:55 +02:00
</div>
</footer>
</div>
<img style="display:none" src="https://stopplidelsen.goatcounter.com/count?p=<?= htmlspecialchars($_SERVER['REQUEST_URI']) ?>">
2025-10-02 17:01:55 +02:00
</body>
</html>