update
This commit is contained in:
@@ -13,9 +13,10 @@
|
||||
</head>
|
||||
<body class="bg-light-subtle">
|
||||
<?php if (\App\Core\Auth::check()): ?>
|
||||
<div class="d-flex min-vh-100">
|
||||
<div class="app-shell" id="js-app-shell">
|
||||
<?php require __DIR__ . '/sidebar.php'; ?>
|
||||
<div class="flex-grow-1 d-flex flex-column content-area">
|
||||
<div class="sidebar-backdrop" id="js-sidebar-backdrop"></div>
|
||||
<div class="app-main">
|
||||
<?php require __DIR__ . '/header.php'; ?>
|
||||
<main class="p-4 flex-grow-1">
|
||||
<div class="container-fluid p-0">
|
||||
|
||||
@@ -1,81 +1,110 @@
|
||||
<nav class="sidebar d-flex flex-column flex-shrink-0 min-vh-100" style="width: 260px;">
|
||||
<div class="sidebar-header">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="bg-primary rounded-3 p-2 me-3 shadow-sm">
|
||||
<i class="bi bi-rocket-takeoff-fill text-white fs-4"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="mb-0 text-white fw-bold tracking-tight">BackPRO</h5>
|
||||
<p class="text-secondary small mb-0" style="font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em;">SEO Engine</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$uri = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH);
|
||||
$uri = rtrim($uri, '/') ?: '/';
|
||||
|
||||
$isActive = function (string ...$paths) use ($uri): bool {
|
||||
foreach ($paths as $path) {
|
||||
if ($uri === $path || str_starts_with($uri, $path . '/')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
$menuMain = $isActive('/', '/sites', '/seo');
|
||||
$menuContent = $isActive('/global-topics', '/articles', '/statlink');
|
||||
$menuAdmin = $isActive('/installer', '/settings', '/logs');
|
||||
?>
|
||||
<aside class="sidebar" id="js-sidebar">
|
||||
<div class="sidebar__brand">
|
||||
<span class="sidebar__brand-text">Back<strong>PRO</strong></span>
|
||||
<button class="sidebar__collapse-btn" id="js-sidebar-collapse" title="Zwin menu" aria-label="Zwin menu">
|
||||
<svg class="sidebar__collapse-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M15 18l-6-6 6-6"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="flex-grow-1 py-4 overflow-y-auto">
|
||||
<div class="px-4 mb-3 text-uppercase text-secondary small fw-bold" style="font-size: 0.65rem; letter-spacing: 0.1em;">Menu główne</div>
|
||||
<ul class="nav flex-column mb-4">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= \App\Core\Router::isCurrent('/') ? 'active' : '' ?>" href="/">
|
||||
<i class="bi bi-grid-1x2-fill"></i>Dashboard
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= \App\Core\Router::isCurrent('/sites') ? 'active' : '' ?>" href="/sites">
|
||||
<i class="bi bi-browser-safari"></i>Strony WP
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= \App\Core\Router::isCurrent('/seo/stats') ? 'active' : '' ?>" href="/seo/stats">
|
||||
<i class="bi bi-bar-chart-line-fill"></i>Statystyki SEO
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<nav class="sidebar__nav" aria-label="Menu glowne">
|
||||
<!-- Glowne -->
|
||||
<details class="sidebar__group<?= $menuMain ? ' is-active' : '' ?>"<?= $menuMain ? ' open' : '' ?>>
|
||||
<summary class="sidebar__group-toggle">
|
||||
<span class="sidebar__icon">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span class="sidebar__label">Glowne</span>
|
||||
<svg class="sidebar__toggle-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M6 9l6 6 6-6"/>
|
||||
</svg>
|
||||
</summary>
|
||||
<div class="sidebar__group-links">
|
||||
<a class="sidebar__sublink<?= $uri === '/' ? ' is-active' : '' ?>" href="/">Dashboard</a>
|
||||
<a class="sidebar__sublink<?= $isActive('/sites') ? ' is-active' : '' ?>" href="/sites">Strony WP</a>
|
||||
<a class="sidebar__sublink<?= $isActive('/seo') ? ' is-active' : '' ?>" href="/seo/stats">Statystyki SEO</a>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<div class="px-4 mb-3 text-uppercase text-secondary small fw-bold" style="font-size: 0.65rem; letter-spacing: 0.1em;">Zasoby i Treści</div>
|
||||
<ul class="nav flex-column mb-4">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= \App\Core\Router::isCurrent('/global-topics') ? 'active' : '' ?>" href="/global-topics">
|
||||
<i class="bi bi-tags-fill"></i>Biblioteka Tematów
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= \App\Core\Router::isCurrent('/articles') ? 'active' : '' ?>" href="/articles">
|
||||
<i class="bi bi-journal-richtext"></i>Artykuły
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- Tresci -->
|
||||
<details class="sidebar__group<?= $menuContent ? ' is-active' : '' ?>"<?= $menuContent ? ' open' : '' ?>>
|
||||
<summary class="sidebar__group-toggle">
|
||||
<span class="sidebar__icon">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
|
||||
<polyline points="14 2 14 8 20 8"/>
|
||||
<line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span class="sidebar__label">Tresci</span>
|
||||
<svg class="sidebar__toggle-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M6 9l6 6 6-6"/>
|
||||
</svg>
|
||||
</summary>
|
||||
<div class="sidebar__group-links">
|
||||
<a class="sidebar__sublink<?= $isActive('/global-topics') ? ' is-active' : '' ?>" href="/global-topics">Biblioteka Tematow</a>
|
||||
<a class="sidebar__sublink<?= $isActive('/articles') ? ' is-active' : '' ?>" href="/articles">Artykuly</a>
|
||||
<a class="sidebar__sublink<?= $isActive('/statlink') ? ' is-active' : '' ?>" href="/statlink">StatLink</a>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<div class="px-4 mb-3 text-uppercase text-secondary small fw-bold" style="font-size: 0.65rem; letter-spacing: 0.1em;">Administracja</div>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= \App\Core\Router::isCurrent('/installer') ? 'active' : '' ?>" href="/installer">
|
||||
<i class="bi bi-magic"></i>Instalator WP
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= \App\Core\Router::isCurrent('/settings') ? 'active' : '' ?>" href="/settings">
|
||||
<i class="bi bi-sliders"></i>Ustawienia API
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= \App\Core\Router::isCurrent('/logs') ? 'active' : '' ?>" href="/logs">
|
||||
<i class="bi bi-shield-lock-fill"></i>Dziennik Zdarzeń
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Administracja -->
|
||||
<details class="sidebar__group<?= $menuAdmin ? ' is-active' : '' ?>"<?= $menuAdmin ? ' open' : '' ?>>
|
||||
<summary class="sidebar__group-toggle">
|
||||
<span class="sidebar__icon">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="3"/>
|
||||
<path d="M12 2v2M12 20v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M2 12h2M20 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span class="sidebar__label">Administracja</span>
|
||||
<svg class="sidebar__toggle-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M6 9l6 6 6-6"/>
|
||||
</svg>
|
||||
</summary>
|
||||
<div class="sidebar__group-links">
|
||||
<a class="sidebar__sublink<?= $isActive('/installer') ? ' is-active' : '' ?>" href="/installer">Instalator WP</a>
|
||||
<a class="sidebar__sublink<?= $isActive('/settings') && !$isActive('/settings/database') ? ' is-active' : '' ?>" href="/settings">Ustawienia API</a>
|
||||
<a class="sidebar__sublink<?= $isActive('/settings/database') ? ' is-active' : '' ?>" href="/settings/database">Baza danych</a>
|
||||
<a class="sidebar__sublink<?= $isActive('/logs') ? ' is-active' : '' ?>" href="/logs">Dziennik zdarzen</a>
|
||||
</div>
|
||||
</details>
|
||||
</nav>
|
||||
|
||||
<div class="p-4 bg-black bg-opacity-10 border-top border-white border-opacity-5">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<div class="rounded-circle bg-secondary d-flex align-items-center justify-content-center text-white" style="width: 32px; height: 32px; font-size: 0.8rem; font-weight: 600;">
|
||||
<div class="sidebar__footer">
|
||||
<div class="sidebar__user">
|
||||
<div class="sidebar__avatar">
|
||||
<?= strtoupper(substr(\App\Core\Auth::user()['username'] ?? 'U', 0, 1)) ?>
|
||||
</div>
|
||||
<div class="overflow-hidden">
|
||||
<div class="text-white small text-truncate fw-medium"><?= htmlspecialchars(\App\Core\Auth::user()['username'] ?? 'Użytkownik') ?></div>
|
||||
<a href="/logout" class="text-secondary small text-decoration-none hover-white d-flex align-items-center">
|
||||
<i class="bi bi-box-arrow-right me-1"></i> Wyloguj
|
||||
<div class="sidebar__user-info">
|
||||
<div class="sidebar__user-name"><?= htmlspecialchars(\App\Core\Auth::user()['username'] ?? 'Uzytkownik') ?></div>
|
||||
<a href="/logout" class="sidebar__user-logout">
|
||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/>
|
||||
</svg>
|
||||
Wyloguj
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</aside>
|
||||
|
||||
Reference in New Issue
Block a user