VvebOIDC/admin/admin-bar.php

229 lines
7.1 KiB
PHP

<?php
/**
* Vvveb.
*
* Copyright (C) 2022 Ziadin Givan
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
if (! defined('V_VERSION')) {
die('Invalid request!');
}
//if (function_exists('printAdminBarMenu')) return;
use function Vvveb\__;
$menu = \Vvveb\config('admin-menu', []);
list($menu) = Vvveb\System\Event::trigger('Vvveb\Controller\Base','init-menu', $menu);
list($menu) = Vvveb\System\Event::trigger('admin-bar', 'menu', $menu);
list($top) = Vvveb\System\Event::trigger('admin-bar', 'top', []);
$template = Vvveb\getCurrentTemplate();
$url = Vvveb\getCurrentUrl();
$admin_path = Vvveb\adminPath() . 'index.php';
$params = ['module' => 'editor/editor', 'template' => $template, 'url' => $url];
$request = Vvveb\System\Core\Request::getInstance();
$name = $request->get['name'] ?? $request->get['slug'] ?? '';
$urlData = Vvveb\System\Routes::getUrlData($url);
$edit_url = isset($urlData['edit']) ? $admin_path . $urlData['edit'] : '';
if ($name) {
$params['name'] = urlencode($name);
}
if (isset($request->get['post_id'])) {
$params['post_id'] = $request->get['post_id'];
if ($edit_url) {
$edit_url .= '&post_id=' . $params['post_id'];
}
}
if (isset($request->get['product_id'])) {
$params['product_id'] = $request->get['product_id'];
if ($edit_url) {
$edit_url .= '&product_id=' . $params['product_id'];
}
}
$design_url = $admin_path . Vvveb\url($params, false, false);
$admin = \Vvveb\System\User\Admin :: current();
$profile_url = $admin_path . Vvveb\url(['module' => 'admin/user', 'admin_id' => $admin['admin_id']], false, false);
if (! function_exists('printAdminBarMenu')) {
function printAdminBarMenu($menu) {
foreach ($menu as $menuEntry) {
echo '<li>';
if (isset($menuEntry['url'])) {
echo '<a href="' . $menuEntry['url'] . '" ' . (isset($menuEntry['items']) ? 'class="has-submenu"' : '') . '>';
if (isset($menuEntry['icon']) && $menuEntry['icon']) {
echo '<i class="' . $menuEntry['icon'] . '"></i>';
} elseif (isset($menuEntry['icon-img']) && $menuEntry['icon-img']) {
echo '<img src="' . $menuEntry['icon-img'] . '">';
} else {
echo '<i></i>';
}
echo $menuEntry['name'] . '</a>';
} else {
echo '<span>' . $menuEntry['name'] . '</span><hr/>';
}
if (isset($menuEntry['items'])) {
echo '<ul class="submenu">';
printAdminBarMenu($menuEntry['items']);
echo '</ul>';
}
echo '</li>';
}
}
}
?>
<div id="vvveb-admin">
<ul>
<li class="v-logo"><a href="https://www.vvveb.com" target="_blank"><div class="vvveb-logo"></div></a>
<ul>
<li><a href="https://www.vvveb.com" target="_blank">
<i class="la la-home"></i><?php echo __('Vvveb Homepage'); ?>
</a>
</li>
<li>
<a href="https://docs.vvveb.com" target="_blank">
<i class="la la-file-alt"></i><?php echo __('Documentation'); ?>
</a>
</li>
<li>
<a href="https://github.com/givanz/Vvveb/discussions" target="_blank">
<i class="la la-sms"></i><?php echo __('Forums'); ?>
</a>
</li>
</ul>
</li>
<li><a href="<?php echo $admin_path; ?>"><i class="icon-pulse-outline"></i><?php echo __('Admin'); ?></a>
<ul>
<?php printAdminBarMenu($menu); ?>
</ul>
</li>
<li>
<a href="<?php echo $design_url; ?>"> <i class="la la-paint-brush"></i><?php echo __('Design page'); ?></a>
</li>
<?php if ($edit_url) { ?>
<li>
<a href="<?php echo $edit_url; ?>"> <i class="la la-pencil-alt"></i><?php echo __('Edit page'); ?></a>
</li>
<?php } ?>
<li>
<a href="<?php echo $admin_path . '?module=content/comments&status=0&type=post'; ?>">
<i class="la la-comments"></i><?php echo __('Comments'); ?></a>
</li>
<li>
<a href="<?php echo $admin_path; ?>?module=tools/cache&action=delete">
<i class="icon-reload-circle-outline"></i>
<?php echo __('Clear cache'); ?></a>
<ul>
<li>
<a href="<?php echo $admin_path; ?>?module=tools/cache&action=asset" target="_blank">
<i class="la la-circle-notch"></i>
<?php echo __('Frontend assets cache'); ?>
</a>
</li>
<li>
<a href="<?php echo $admin_path; ?>?module=tools/cache&action=template" target="_blank">
<i class="la la-circle-notch"></i><?php echo __('Compiled templates'); ?>
</a>
</li>
<li><a href="<?php echo $admin_path; ?>?module=tools/cache&action=database" target="_blank">
<i class="la la-circle-notch"></i>
<?php echo __('Database'); ?></a>
</li>
<li>
<a href="<?php echo $admin_path; ?>?module=tools/cache&action=image" target="_blank">
<i class="la la-circle-notch"></i>
<?php echo __('Image resize cache'); ?>
</a>
</li>
<li>
<a href="<?php echo $admin_path; ?>?module=tools/cache&action=page" target="_blank">
<i class="la la-circle-notch"></i>
<?php echo __('Full page cache'); ?>
</a>
</li>
<li class="dropdown-divider">
<hr />
</li>
<li>
<a href="<?php echo $admin_path; ?>?module=tools/cache&action=delete" target="_blank">
<i class="la la-circle-notch"></i>
<?php echo __('All cache'); ?>
</a>
</li>
</ul>
<?php if ($top) { ?>
<li><div class="vr align-middle mx-1">&nbsp;</div></li>
<?php
printAdminBarMenu($top);
} ?>
</li>
</ul>
<ul class="float-end">
<li>
<a href="<?php echo $admin_path; ?>"><i class="la la-user"></i><?php echo $admin['display_name'] ?? ''; ?></a>
<ul style="right:0;">
<li><a href="<?php echo $profile_url; ?>"><i class="la la-edit"></i><?php echo __('Edit profile'); ?></a></li>
<li>
<form action="<?php echo $admin_path; ?>?module=user/login"
method="post" enctype="multipart/form-data" target="_blank">
<input type="hidden" name="csrf" data-v-csrf>
<input type="hidden" name="logout">
<button type="submit" value="logout" class="btn btn-light text-dark w-100">
<span class="loading d-none">
<span class="spinner-border spinner-border-sm align-middle" role="status" aria-hidden="true">
</span>
<span>Loading ...</span>...
</span>
<span class="button-text text-dark">
<i class="la la-sign-out-alt"></i><?php echo __('Log out'); ?>
</span>
</button>
</form>
</li>
</ul>
</li>
</ul>
<link href="<?php echo Vvveb\publicUrlPath(); ?>admin/default/css/admin-bar.css" rel="stylesheet">
<script>
window.addEventListener("load", (event) => {
if (VvvebTheme.ajax.siteContainer) {
VvvebTheme.ajax.siteContainer.push("#vvveb-admin");
}
});
</script>
</div>