38394-vm/includes/header.php
2026-02-14 08:31:54 +00:00

260 lines
9.2 KiB
PHP

<?php
// Project meta
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? $t['subtitle'];
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
?>
<!DOCTYPE html>
<html lang="<?= $lang ?>" dir="<?= $dir ?>">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= ($lang === 'en' ? ($profile['name_en'] ?? 'Organization') : ($profile['name_ar'] ?? 'المؤسسة')) . ' - ' . $t['title'] ?></title>
<?php if (!empty($profile["favicon_url"])): ?>
<link rel="icon" href="<?= htmlspecialchars($profile["favicon_url"]) ?>">
<?php endif; ?>
<!-- Meta Tags -->
<meta name="description" content="<?= htmlspecialchars($projectDescription) ?>">
<?php if ($projectImageUrl): ?>
<meta property="og:image" content="<?= htmlspecialchars($projectImageUrl) ?>">
<?php endif; ?>
<!-- Fonts & CSS -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<?php if ($lang === 'en'): ?>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<?php else: ?>
<link href="https://fonts.googleapis.com/css2?family=Cairo:wght@400;500;600;700&display=swap" rel="stylesheet">
<?php endif; ?>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<?php if ($lang === 'ar'): ?>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.rtl.min.css">
<?php endif; ?>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">
<style>
:root {
--primary-color: #059669;
--primary-hover: #047857;
--bg-light: #f3f4f6;
--text-main: #111827;
--text-muted: #6b7280;
--font-family: <?= ($lang === 'ar') ? "'Cairo', sans-serif" : "'Inter', sans-serif" ?>;
}
body {
font-family: var(--font-family);
background-color: var(--bg-light);
color: var(--text-main);
margin: 0;
padding: 0;
}
/* Top Priority Bar Styles */
.top-priority-bar {
background: #1e293b;
color: #fff;
padding: 10px 0;
font-size: 0.875rem;
position: relative;
z-index: 1050;
overflow: hidden;
}
.priority-wrapper {
display: flex;
align-items: center;
}
.priority-label {
background: #ef4444;
color: #fff;
font-weight: 800;
padding: 2px 10px;
border-radius: 4px;
font-size: 0.75rem;
white-space: nowrap;
margin-inline-end: 20px;
position: relative;
z-index: 2;
box-shadow: 10px 0 15px #1e293b;
}
[dir="rtl"] .priority-label {
box-shadow: -10px 0 15px #1e293b;
}
.priority-scroller-container {
flex: 1;
overflow: hidden;
position: relative;
height: 24px;
display: flex;
align-items: center;
}
.priority-items {
display: flex;
align-items: center;
gap: 60px;
white-space: nowrap;
position: absolute;
will-change: transform;
animation: marquee 30s linear infinite;
}
.priority-items:hover {
animation-play-state: paused;
}
@keyframes marquee {
0% { left: 100%; transform: translateX(0); }
100% { left: 0; transform: translateX(-100%); }
}
[dir="rtl"] .priority-items {
left: auto;
right: 100%;
animation: marquee-rtl 30s linear infinite;
}
@keyframes marquee-rtl {
0% { right: 100%; transform: translateX(0); }
100% { right: 0; transform: translateX(100%); }
}
.priority-item {
color: #e2e8f0;
text-decoration: none;
white-space: nowrap;
transition: color 0.2s;
cursor: pointer;
display: flex;
align-items: center;
}
.priority-item:hover {
color: #fff;
}
.priority-dot {
width: 6px;
height: 6px;
background: #10b981;
border-radius: 50%;
margin-inline-end: 8px;
display: inline-block;
}
.navbar {
background: #fff;
border-bottom: 1px solid #e5e7eb;
padding: 1rem 0;
z-index: 1040;
}
.brand-text {
font-weight: 700;
font-size: 1.25rem;
color: var(--text-main);
text-decoration: none;
display: flex;
align-items: center;
}
.brand-logo {
height: 40px;
margin-inline-end: 12px;
}
.nav-link {
color: var(--text-muted);
font-weight: 500;
transition: color 0.2s;
}
.nav-link:hover, .nav-link.active {
color: var(--primary-color);
}
</style>
<!-- PWA Manifest & Service Worker -->
<link rel="manifest" href="manifest.json">
<meta name="theme-color" content="#059669">
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('service-worker.js')
.then(registration => {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
})
.catch(err => {
console.log('ServiceWorker registration failed: ', err);
});
});
}
</script>
</head>
<body>
<!-- Top Priority Bar (Ads) -->
<div class="top-priority-bar">
<div class="container">
<div class="priority-wrapper">
<span class="priority-label"><?= $t['priority_notice'] ?></span>
<div class="priority-scroller-container">
<div class="priority-items">
<?php if (empty($featured_cases)): ?>
<div class="priority-item">
<span class="priority-dot"></span>
<?= $t['subtitle'] ?>
</div>
<?php else: ?>
<?php foreach ($featured_cases as $fc): ?>
<a href="case.php?id=<?= $fc['id'] ?>&lang=<?= $lang ?>" class="priority-item">
<span class="priority-dot"></span>
<strong>[<?= $fc['importance'] == 'top_priority' ? $t['top_priority'] : $t['urgent'] ?>]</strong>
&nbsp;<?= htmlspecialchars($lang === 'en' ? $fc['title_en'] : $fc['title_ar']) ?>
</a>
<?php endforeach; ?>
<?php endif; ?>
<div class="priority-item">
<span class="priority-dot" style="background: #3b82f6;"></span>
<?= $t['monthly_giving'] ?>
</div>
</div>
</div>
</div>
</div>
</div>
<nav class="navbar navbar-expand-lg sticky-top">
<div class="container">
<a class="brand-text" href="index.php?lang=<?= $lang ?>">
<?php if (!empty($profile['logo_url'])): ?>
<img src="<?= htmlspecialchars($profile['logo_url']) ?>" class="brand-logo" alt="Logo">
<?php endif; ?>
<?= htmlspecialchars($lang === 'en' ? ($profile['name_en'] ?? 'Organization') : ($profile['name_ar'] ?? 'المؤسسة')) ?>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNav" aria-controls="mainNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="mainNav">
<ul class="navbar-nav mx-auto">
<li class="nav-item"><a class="nav-link" href="index.php?lang=<?= $lang ?>"><?= $t['home'] ?></a></li>
<li class="nav-item"><a class="nav-link" href="about.php?lang=<?= $lang ?>"><?= $t['about_us'] ?></a></li>
<li class="nav-item"><a class="nav-link" href="contact.php?lang=<?= $lang ?>"><?= $t['contact_us'] ?></a></li>
</ul>
<div class="d-flex align-items-center gap-3">
<a href="admin/" class="text-decoration-none text-muted small d-none d-sm-block"><i class="bi bi-person-lock me-1"></i><?= $t['admin_panel'] ?></a>
<a href="?lang=<?= $t['lang_code'] ?>" class="btn btn-outline-secondary btn-sm rounded-pill px-3">
<i class="bi bi-translate me-1"></i><?= $t['lang_name'] ?>
</a>
</div>
</div>
</div>
</nav>