Introduce new menu classes and navigation templates
This commit is contained in:
58
models/AdminMenu.php
Normal file
58
models/AdminMenu.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/*****************************************************************************
|
||||
* AdminMenu.php
|
||||
* Contains the admin navigation logic.
|
||||
*
|
||||
* Global Data Lab code (C) Radboud University Nijmegen
|
||||
* Programming (C) Aaron van Geffen, 2015-2022
|
||||
*****************************************************************************/
|
||||
|
||||
class AdminMenu extends Menu
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$user = Registry::has('user') ? Registry::get('user') : new Guest();
|
||||
if (!$user->isAdmin())
|
||||
return;
|
||||
|
||||
$this->items[] = [
|
||||
'label' => 'Admin',
|
||||
'icon' => 'gear',
|
||||
'subs' => [
|
||||
[
|
||||
'uri' => '/managealbums/',
|
||||
'label' => 'Albums',
|
||||
],
|
||||
[
|
||||
'uri' => '/manageassets/',
|
||||
'label' => 'Assets',
|
||||
],
|
||||
[
|
||||
'uri' => '/managetags/',
|
||||
'label' => 'Tags',
|
||||
],
|
||||
[
|
||||
'uri' => '/manageusers/',
|
||||
'label' => 'Users',
|
||||
],
|
||||
[
|
||||
'uri' => '/manageerrors/',
|
||||
'label' => 'Errors',
|
||||
'badge' => ErrorLog::getCount(),
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($this->items as $i => $item)
|
||||
{
|
||||
if (isset($item['uri']))
|
||||
$this->items[$i]['url'] = BASEURL . $item['uri'];
|
||||
|
||||
if (!isset($item['subs']))
|
||||
continue;
|
||||
|
||||
foreach ($item['subs'] as $j => $subitem)
|
||||
$this->items[$i]['subs'][$j]['url'] = BASEURL . $subitem['uri'];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -86,7 +86,6 @@ class Dispatcher
|
||||
if (Registry::has('user') && Registry::get('user')->isAdmin())
|
||||
{
|
||||
$page->appendStylesheet(BASEURL . '/css/admin.css');
|
||||
$page->adopt(new AdminBar());
|
||||
}
|
||||
|
||||
$page->adopt(new DummyBox('Well, this is a bit embarrassing!', '<p>The page you requested could not be found. Don\'t worry, it\'s probably not your fault. You\'re welcome to browse the website, though!</p>', 'errormsg'));
|
||||
|
||||
@@ -168,7 +168,6 @@ class ErrorHandler
|
||||
if ($is_admin)
|
||||
{
|
||||
$page->appendStylesheet(BASEURL . '/css/admin.css');
|
||||
$page->adopt(new AdminBar());
|
||||
}
|
||||
}
|
||||
elseif (!$is_sensitive)
|
||||
|
||||
41
models/MainMenu.php
Normal file
41
models/MainMenu.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
/*****************************************************************************
|
||||
* MainMenu.php
|
||||
* Contains the main navigation logic.
|
||||
*
|
||||
* Global Data Lab code (C) Radboud University Nijmegen
|
||||
* Programming (C) Aaron van Geffen, 2015-2022
|
||||
*****************************************************************************/
|
||||
|
||||
class MainMenu extends Menu
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->items = [
|
||||
[
|
||||
'uri' => '/',
|
||||
'label' => 'Albums',
|
||||
],
|
||||
[
|
||||
'uri' => '/people/',
|
||||
'label' => 'People',
|
||||
],
|
||||
[
|
||||
'uri' => '/timeline/',
|
||||
'label' => 'Timeline',
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($this->items as $i => $item)
|
||||
{
|
||||
if (isset($item['uri']))
|
||||
$this->items[$i]['url'] = BASEURL . $item['uri'];
|
||||
|
||||
if (!isset($item['subs']))
|
||||
continue;
|
||||
|
||||
foreach ($item['subs'] as $j => $subitem)
|
||||
$this->items[$i]['subs'][$j]['url'] = BASEURL . $subitem['uri'];
|
||||
}
|
||||
}
|
||||
}
|
||||
18
models/Menu.php
Normal file
18
models/Menu.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/*****************************************************************************
|
||||
* Menu.php
|
||||
* Contains all navigational menus.
|
||||
*
|
||||
* Global Data Lab code (C) Radboud University Nijmegen
|
||||
* Programming (C) Aaron van Geffen, 2015-2022
|
||||
*****************************************************************************/
|
||||
|
||||
abstract class Menu
|
||||
{
|
||||
protected $items = [];
|
||||
|
||||
public function getItems()
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
}
|
||||
60
models/UserMenu.php
Normal file
60
models/UserMenu.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/*****************************************************************************
|
||||
* UserMenu.php
|
||||
* Contains the user navigation logic.
|
||||
*
|
||||
* Global Data Lab code (C) Radboud University Nijmegen
|
||||
* Programming (C) Aaron van Geffen, 2015-2022
|
||||
*****************************************************************************/
|
||||
|
||||
class UserMenu extends Menu
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$user = Registry::has('user') ? Registry::get('user') : new Guest();
|
||||
if ($user->isLoggedIn())
|
||||
{
|
||||
$this->items[] = [
|
||||
'label' => $user->getFirstName(),
|
||||
'icon' => 'person-circle',
|
||||
'subs' => [
|
||||
|
||||
[
|
||||
'label' => 'Settings',
|
||||
'uri' => '/accountsettings/',
|
||||
],
|
||||
[
|
||||
'label' => 'Log out',
|
||||
'uri' => '/logout/',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->items[] = [
|
||||
'label' => 'Log in',
|
||||
'icon' => 'person-circle',
|
||||
'uri' => '/login/',
|
||||
];
|
||||
}
|
||||
|
||||
$this->items[] = [
|
||||
'label' => 'Home',
|
||||
'icon' => 'house-door',
|
||||
'uri' => '/',
|
||||
];
|
||||
|
||||
foreach ($this->items as $i => $item)
|
||||
{
|
||||
if (isset($item['uri']))
|
||||
$this->items[$i]['url'] = BASEURL . $item['uri'];
|
||||
|
||||
if (!isset($item['subs']))
|
||||
continue;
|
||||
|
||||
foreach ($item['subs'] as $j => $subitem)
|
||||
$this->items[$i]['subs'][$j]['url'] = BASEURL . $subitem['uri'];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user