98 lines
3.2 KiB
PHP
98 lines
3.2 KiB
PHP
<?php
|
|
/*****************************************************************************
|
|
* MainNavBar.php
|
|
* Contains the primary navigational menu template.
|
|
*
|
|
* Kabuki CMS (C) 2013-2023, Aaron van Geffen
|
|
*****************************************************************************/
|
|
|
|
class MainNavBar extends NavBar
|
|
{
|
|
protected $outerMenuId = 'mainNav';
|
|
protected $innerMenuId = 'mainNavigation';
|
|
protected $ariaLabel = 'Main navigation';
|
|
protected $navBarClasses = 'navbar-dark bg-dark sticky-top';
|
|
protected $primaryBadgeClasses = 'bg-light text-dark';
|
|
protected $secondaryBadgeClasses = 'bg-dark text-light';
|
|
|
|
public function html_main()
|
|
{
|
|
// Select a random space invader, with a bias towards the mascot
|
|
$rnd = rand(0, 100);
|
|
$alt = $rnd > 50 ? ' alt-' . ($rnd % 6 + 1) : '';
|
|
$className = $rnd > 5 ? 'space-invader' . $alt : 'nyan-cat';
|
|
|
|
echo '
|
|
<nav id="', $this->outerMenuId, '" class="navbar navbar-expand-lg ', $this->navBarClasses, '" aria-label="', $this->ariaLabel, '">
|
|
<div class="container">
|
|
<a class="navbar-brand flex-grow-1" href="', BASEURL, '/">
|
|
<i class="', $className, '"></i>
|
|
HashRU Pics
|
|
</a>
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#', $this->innerMenuId, '" aria-controls="', $this->innerMenuId, '" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>';
|
|
|
|
if (Registry::has('user') && Registry::get('user')->isLoggedIn())
|
|
{
|
|
echo '
|
|
<div class="collapse navbar-collapse justify-content-end" id="', $this->innerMenuId, '">
|
|
<ul class="navbar-nav mb-2 mb-lg-0">';
|
|
|
|
$mainMenu = new MainMenu();
|
|
$this->renderMenuItems($mainMenu->getItems());
|
|
|
|
echo '
|
|
<li class="nav-divider d-none d-lg-inline"></li>';
|
|
|
|
$adminMenu = new AdminMenu();
|
|
$this->renderMenuItems($adminMenu->getItems());
|
|
|
|
$userMenu = new UserMenu();
|
|
$this->renderMenuItems($userMenu->getItems());
|
|
|
|
$this->darkModeToggle();
|
|
|
|
echo '
|
|
</ul>
|
|
</div>';
|
|
}
|
|
|
|
echo '
|
|
</div>
|
|
</nav>';
|
|
}
|
|
|
|
private function darkModeToggle()
|
|
{
|
|
echo '
|
|
<li class="nav-item dropdown">
|
|
<button class="btn btn-link nav-link py-2 px-0 px-lg-2 dropdown-toggle d-flex align-items-center"
|
|
id="bd-theme" type="button" data-bs-toggle="dropdown" data-bs-display="static">
|
|
<i id="theme-icon-active" class="bi bi-light"></i>
|
|
<span class="d-lg-none ms-2" id="bd-theme-text">Toggle theme</span>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-end">
|
|
<li>
|
|
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="light">
|
|
<i class="bi bi-sun-fill"></i>
|
|
Light
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="dark">
|
|
<i class="bi bi-moon-stars-fill"></i>
|
|
Dark
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button type="button" class="dropdown-item d-flex align-items-center active" data-bs-theme-value="auto">
|
|
<i class="bi bi-circle-half"></i>
|
|
Auto
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
</li>';
|
|
}
|
|
}
|