Hmvc: Safer Code

This commit is contained in:
cgfhtw
2023-07-14 09:02:25 +02:00
parent c5db083a84
commit b0c9231d14
2 changed files with 59 additions and 27 deletions
+25 -13
View File
@@ -1,3 +1,11 @@
<?php
if (!isset($menu)) {
$menu = [];
if (property_exists($this->router, 'menu') && $this->router->menu && property_exists($this->router->menu, 'children')) {
$menu = $this->router->menu->children;
}
}
?>
<header id="cis-header" class="navbar-dark">
<button id="nav-main-btn" class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#nav-main" aria-controls="nav-main" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
@@ -6,11 +14,13 @@
<img src="<?= base_url('/public/images/logo-300x160.png'); ?>" alt="Logo">
</a>
<nav id="nav-main" class="offcanvas offcanvas-start bg-dark" tabindex="-1" aria-labelledby="nav-main-btn" data-bs-backdrop="false">
<div id="nav-main-toggle" class="position-static d-none d-lg-block bg-dark">
<button type="button" class="btn bg-dark text-light rounded-0 p-1 d-flex align-items-center" data-bs-toggle="collapse" data-bs-target="#nav-main-menu" aria-expanded="true" aria-controls="nav-main-menu">
<i class="fa fa-arrow-circle-left"></i>
</button>
</div>
<?php if ($menu) { ?>
<div id="nav-main-toggle" class="position-static d-none d-lg-block bg-dark">
<button type="button" class="btn bg-dark text-light rounded-0 p-1 d-flex align-items-center" data-bs-toggle="collapse" data-bs-target="#nav-main-menu" aria-expanded="true" aria-controls="nav-main-menu">
<i class="fa fa-arrow-circle-left"></i>
</button>
</div>
<?php } ?>
<div class="offcanvas-body p-0">
<fhc-searchbar id="nav-search" class="fhc-searchbar w-100" :searchoptions="searchbaroptions" :searchfunction="searchfunction"></fhc-searchbar>
<button id="nav-user-btn" class="btn btn-link rounded-0" type="button" data-bs-toggle="collapse" data-bs-target="#nav-user-menu" aria-expanded="false" aria-controls="nav-user-menu">
@@ -22,15 +32,17 @@
<li><hr class="dropdown-divider"></li>
<li><a class="btn btn-level-2 rounded-0 d-block" href="<?= site_url('Cis/Auth/logout'); ?>">Logout</a></li>
</ul>
<div id="nav-main-menu" class="collapse collapse-horizontal show">
<div>
<?php
foreach($menu as $entry) {
$this->load->view('templates/CISHMVC-Menu/Entry', ['entry' => $entry, 'menu_id' => 'menu']);
}
?>
<?php if ($menu) { ?>
<div id="nav-main-menu" class="collapse collapse-horizontal show">
<div>
<?php
foreach ($menu as $entry) {
$this->load->view('templates/CISHMVC-Menu/Entry', ['entry' => $entry, 'menu_id' => 'menu']);
}
?>
</div>
</div>
</div>
<?php } ?>
</div>
</nav>
</header>
@@ -1,37 +1,57 @@
<?php
if (is_array($entry) && isset($entry['content_id']))
$entry = (object)$entry;
$menu_id .= '-' . $entry->content_id;
if (!isset($content_id))
$content_id = $entry->content_id;
if (!isset($path))
$path = '';
$menu_id .= '-' . $content_id;
// TODO(chris): remove! DEBUG
#$entry->menu_open = false;
$link = $entry->url;
$target = $entry->target;
if (property_exists($entry, 'path')) {
$lang = getUserLanguage();
$link = $path . '/' . $entry->path[$lang];
$active = in_array($content_id, $this->router->breadcrumb);
$menu_open = $active ? true : (property_exists($entry, 'menu_open') ? $entry->menu_open : false);
$target = '';
$title = htmlspecialchars($entry->sprache[$lang]->titel);
} else {
$link = $entry->url;
$active = false;
$menu_open = $entry->menu_open;
$target = $entry->target;
$title = htmlspecialchars($entry->titel);
$entry->children = $entry->childs;
}
?>
<?php if ($entry->childs) { ?>
<?php if ($entry->children) { ?>
<?php if (substr($link, 0, 1) == '#') { ?>
<a href="#<?= $menu_id; ?>" data-bs-toggle="collapse" aria-expanded="<?= $entry->menu_open ? 'true' : 'false'; ?>" class="btn btn-default rounded-0 w-100 text-start dropdown-toggle btn-level-<?= substr_count($menu_id, '-'); ?><?= $entry->menu_open ? '' : ' collapsed'; ?>">
<span><?= htmlspecialchars($entry->titel); ?></span>
<a href="#<?= $menu_id; ?>" data-bs-toggle="collapse" aria-expanded="<?= $menu_open ? 'true' : 'false'; ?>" class="btn btn-default rounded-0 w-100 text-start dropdown-toggle btn-level-<?= substr_count($menu_id, '-'); ?><?= $menu_open ? '' : ' collapsed'; ?><?= $active ? ' active' : ''; ?>">
<span><?= $title; ?></span>
</a>
<?php } else { ?>
<div class="btn-group w-100">
<a<?= $link ? ' href="' . $link . '"' : ''; ?><?= $target ? ' target="' . $target . '"' : ''; ?> class="btn btn-default rounded-0 text-start btn-level-<?= substr_count($menu_id, '-'); ?>">
<?= htmlspecialchars($entry->titel); ?>
<a<?= $link ? ' href="' . $link . '"' : ''; ?><?= $target ? ' target="' . $target . '"' : ''; ?> class="btn btn-default rounded-0 text-start btn-level-<?= substr_count($menu_id, '-'); ?><?= $active ? ' active' : ''; ?>">
<?= $title; ?>
</a>
<a href="#<?= $menu_id; ?>" data-bs-toggle="collapse" aria-expanded="<?= $entry->menu_open ? 'true' : 'false'; ?>"class="btn btn-default rounded-0 dropdown-toggle dropdown-toggle-split flex-grow-0<?= $entry->menu_open ? '' : ' collapsed'; ?>" >
<a href="#<?= $menu_id; ?>" data-bs-toggle="collapse" aria-expanded="<?= $menu_open ? 'true' : 'false'; ?>"class="btn btn-default rounded-0 dropdown-toggle dropdown-toggle-split flex-grow-0<?= $menu_open ? '' : ' collapsed'; ?><?= $active ? ' active' : ''; ?>" >
<span class="visually-hidden">Toggle Dropdown</span>
</a>
</div>
<?php } ?>
<ul id="<?= $menu_id; ?>" class="nav w-100 collapse<?= $entry->menu_open ? ' show' : ''; ?>">
<?php foreach ($entry->childs as $child)
$this->load->view('templates/CISHMVC-Menu/Entry', ['entry' => $child, 'menu_id' => $menu_id]);
<ul id="<?= $menu_id; ?>" class="nav w-100 collapse<?= $menu_open ? ' show' : ''; ?>">
<?php foreach ($entry->children as $id => $child)
$this->load->view('templates/CISHMVC-Menu/Entry', ['content_id' => $id, 'entry' => $child, 'menu_id' => $menu_id, 'path' => $path]);
?>
</ul>
<?php } else { ?>
<a<?= $link ? ' href="' . $link . '"' : ''; ?><?= $target ? ' target="' . $target . '"' : ''; ?> class="btn btn-default rounded-0 w-100 text-start btn-level-<?= substr_count($menu_id, '-'); ?>">
<?= htmlspecialchars($entry->titel); ?>
<a<?= $link ? ' href="' . $link . '"' : ''; ?><?= $target ? ' target="' . $target . '"' : ''; ?> class="btn btn-default rounded-0 w-100 text-start btn-level-<?= substr_count($menu_id, '-'); ?><?= $active ? ' active' : ''; ?>">
<?= $title; ?>
</a>
<?php } ?>