190 lines
9.3 KiB
PHP
Executable File
190 lines
9.3 KiB
PHP
Executable File
<?php
|
|
// views/layouts/header.php
|
|
|
|
// Получаем текущую тему из cookies
|
|
$current_theme = $_COOKIE['bs_theme'] ?? 'default';
|
|
$available_themes = [
|
|
'default' => 'Bootstrap Default',
|
|
'cerulean' => 'Cerulean',
|
|
'cosmo' => 'Cosmo',
|
|
'cyborg' => 'Cyborg',
|
|
'darkly' => 'Darkly',
|
|
'flatly' => 'Flatly',
|
|
'journal' => 'Journal',
|
|
'litera' => 'Litera',
|
|
'lumen' => 'Lumen',
|
|
'lux' => 'Lux',
|
|
'materia' => 'Materia',
|
|
'minty' => 'Minty',
|
|
'morph' => 'Morph',
|
|
'pulse' => 'Pulse',
|
|
'quartz' => 'Quartz',
|
|
'sandstone' => 'Sandstone',
|
|
'simplex' => 'Simplex',
|
|
'sketchy' => 'Sketchy',
|
|
'slate' => 'Slate',
|
|
'solar' => 'Solar',
|
|
'spacelab' => 'Spacelab',
|
|
'superhero' => 'Superhero',
|
|
'united' => 'United',
|
|
'vapor' => 'Vapor',
|
|
'yeti' => 'Yeti',
|
|
'zephyr' => 'Zephyr'
|
|
];
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title><?= e($page_title ?? 'Web Writer') ?></title>
|
|
|
|
<!-- Подключаем выбранную тему Bootstrap -->
|
|
<?php if ($current_theme === 'default'): ?>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<?php else: ?>
|
|
<link href="<?= SITE_URL ?>/assets/bs/<?= e($current_theme) ?>/bootstrap.min.css" rel="stylesheet">
|
|
<?php endif; ?>
|
|
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css">
|
|
<link rel="stylesheet" href="<?= SITE_URL ?>/assets/css/style.css">
|
|
<link href="<?= SITE_URL ?>/assets/css/quill.snow.css" rel="stylesheet">
|
|
<style>
|
|
.navbar-brand { font-weight: 600; }
|
|
.dropdown-menu { min-width: 200px; }
|
|
.alert { border: none; border-radius: 8px; }
|
|
.main-container { min-height: calc(100vh - 120px); }
|
|
.theme-option { padding: 8px 12px; cursor: pointer; }
|
|
.theme-option:hover { background-color: var(--bs-light); }
|
|
.theme-option.active { background-color: var(--bs-primary); color: white; }
|
|
.theme-preview { width: 20px; height: 20px; border-radius: 3px; display: inline-block; margin-right: 8px; border: 1px solid #dee2e6; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="<?= SITE_URL ?>/"><?= e(APP_NAME) ?></a>
|
|
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
|
|
<div class="collapse navbar-collapse" id="navbarNav">
|
|
<ul class="navbar-nav me-auto">
|
|
<?php if (is_logged_in()): ?>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="<?= SITE_URL ?>/dashboard">
|
|
<i class="bi bi-speedometer2"></i> Панель управления
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="<?= SITE_URL ?>/books">
|
|
<i class="bi bi-journal-bookmark"></i> Мои книги
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="<?= SITE_URL ?>/series">
|
|
<i class="bi bi-collection"></i> Серии
|
|
</a>
|
|
</li>
|
|
<?php endif; ?>
|
|
</ul>
|
|
|
|
<ul class="navbar-nav">
|
|
<!-- Выбор темы -->
|
|
<li class="nav-item dropdown">
|
|
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
|
|
<i class="bi bi-palette"></i> Тема
|
|
</a>
|
|
<ul class="dropdown-menu dropdown-menu-end">
|
|
<li><h6 class="dropdown-header">Выбор темы</h6></li>
|
|
<?php foreach ($available_themes as $theme_key => $theme_name): ?>
|
|
<li>
|
|
<a class="dropdown-item theme-option <?= $current_theme === $theme_key ? 'active' : '' ?>"
|
|
href="#"
|
|
onclick="setTheme('<?= $theme_key ?>')">
|
|
<span class="theme-preview" style="background-color: getThemeColor('<?= $theme_key ?>')"></span>
|
|
<?= e($theme_name) ?>
|
|
<?php if ($current_theme === $theme_key): ?>
|
|
<i class="bi bi-check float-end"></i>
|
|
<?php endif; ?>
|
|
</a>
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
</li>
|
|
|
|
<?php if (is_logged_in()): ?>
|
|
<li class="nav-item dropdown">
|
|
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
|
|
<i class="bi bi-person-circle"></i> <?= e($_SESSION['display_name']) ?>
|
|
</a>
|
|
<ul class="dropdown-menu dropdown-menu-end">
|
|
<li><a class="dropdown-item" href="<?= SITE_URL ?>/profile">
|
|
<i class="bi bi-gear"></i> Профиль
|
|
</a></li>
|
|
<li><a class="dropdown-item" href="<?= SITE_URL ?>/author/<?= $_SESSION['user_id'] ?>" target="_blank">
|
|
<i class="bi bi-eye"></i> Публичная страница
|
|
</a></li>
|
|
<?php if ($_SESSION['user_id'] == 1): ?>
|
|
<li><hr class="dropdown-divider"></li>
|
|
<li><a class="dropdown-item" href="<?= SITE_URL ?>/admin/users">
|
|
<i class="bi bi-people"></i> Управление пользователями
|
|
</a></li>
|
|
<?php endif; ?>
|
|
<li><hr class="dropdown-divider"></li>
|
|
<li><a class="dropdown-item text-danger" href="<?= SITE_URL ?>/logout">
|
|
<i class="bi bi-box-arrow-right"></i> Выход
|
|
</a></li>
|
|
</ul>
|
|
</li>
|
|
<?php else: ?>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="<?= SITE_URL ?>/login">
|
|
<i class="bi bi-box-arrow-in-right"></i> Вход
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="<?= SITE_URL ?>/register">
|
|
<i class="bi bi-person-plus"></i> Регистрация
|
|
</a>
|
|
</li>
|
|
<?php endif; ?>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="main-container">
|
|
<div class="container mt-4">
|
|
<?php if (isset($_SESSION['success'])): ?>
|
|
<div class="alert alert-success alert-dismissible fade show">
|
|
<?= e($_SESSION['success']) ?>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
<?php unset($_SESSION['success']); ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php if (isset($_SESSION['error'])): ?>
|
|
<div class="alert alert-danger alert-dismissible fade show">
|
|
<?= e($_SESSION['error']) ?>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
<?php unset($_SESSION['error']); ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php if (isset($_SESSION['warning'])): ?>
|
|
<div class="alert alert-warning alert-dismissible fade show">
|
|
<?= e($_SESSION['warning']) ?>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
<?php unset($_SESSION['warning']); ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php if (isset($_SESSION['info'])): ?>
|
|
<div class="alert alert-info alert-dismissible fade show">
|
|
<?= e($_SESSION['info']) ?>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
<?php unset($_SESSION['info']); ?>
|
|
</div>
|
|
<?php endif; ?>
|