Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
282 righe
13 KiB
282 righe
13 KiB
<?php |
|
|
|
/** |
|
* |
|
* Classe di gestione del Menu dell'applicazione |
|
*/ |
|
class Menu { |
|
|
|
public $id = null; |
|
public $MenuItems = array(); |
|
public $itemClickHandler; |
|
|
|
public function __construct($menuNav = true) { |
|
if ($menuNav) { |
|
$this->_loadMenuStaticArray(); |
|
} else { |
|
$this->_loadNavBarStaticArray(); |
|
} |
|
} |
|
|
|
private function _loadNavBarStaticArray() { |
|
global $NAVITEMS; |
|
foreach ($NAVITEMS as $submodule) { |
|
$menu = new MenuItem(Utils::getArrayValueOrNull($submodule, 'text'), Utils::getArrayValueOrNull($submodule, 'url'), Utils::getArrayValueOrNull($submodule, 'id'), Utils::getArrayValueOrNull($submodule, 'handler'), Utils::getArrayValueOrNull($submodule, 'icon'), Utils::getArrayValueOrNull($submodule, 'description'), Utils::getArrayValueOrNull($submodule, 'MenuItems')); |
|
$this->_addToMenu(Utils::getArrayValueOrNull($submodule, 'text'), $menu); |
|
} |
|
} |
|
|
|
private function _loadMenuStaticArray() { |
|
global $MENUITEMS; |
|
foreach ($MENUITEMS as $submodule) { |
|
$menu = new MenuItem(Utils::getArrayValueOrNull($submodule, 'text'), Utils::getArrayValueOrNull($submodule, 'url'), Utils::getArrayValueOrNull($submodule, 'id'), Utils::getArrayValueOrNull($submodule, 'handler'), Utils::getArrayValueOrNull($submodule, 'icon'), Utils::getArrayValueOrNull($submodule, 'description'), Utils::getArrayValueOrNull($submodule, 'MenuItems')); |
|
|
|
$this->_addToMenu(Utils::getArrayValueOrNull($submodule, 'text'), $menu); |
|
} |
|
} |
|
|
|
private function _loadModules() { |
|
global $App; |
|
foreach ($App->Modules as $module) { |
|
$this->_loadModule($module); |
|
} |
|
} |
|
|
|
private function _loadModule($module) { |
|
foreach ($module->Modules as $submodule) { |
|
$menu = new MenuItem($submodule->Text, $submodule->URL, $submodule->ID); |
|
if (count($submodule->Modules) == 0) { |
|
$menu->handler = $this->itemClickHandler; |
|
} else { |
|
$menu->MenuItems = $this->_loadSubModules($submodule); |
|
} |
|
$this->_addToMenu($module->Text, $menu); |
|
} |
|
} |
|
|
|
private function _loadSubModules($module) { |
|
$submenus = array(); |
|
foreach ($module->Modules as $submodule) { |
|
$menu = new MenuItem($submodule->Text, $submodule->URL, $submodule->ID); |
|
if (count($submodule->Modules) == 0) { |
|
$menu->handler = $this->itemClickHandler; |
|
} else { |
|
$menu->MenuItems = $this->_loadSubModules($submodule); |
|
} |
|
$submenus[] = $menu; |
|
} |
|
return $submenus; |
|
} |
|
|
|
private function _addToMenu($menu, $item) { |
|
if (!array_key_exists($menu, $this->MenuItems)) { |
|
$this->MenuItems[$menu] = array(); |
|
} |
|
$this->MenuItems[$menu][] = $item; |
|
} |
|
|
|
private function _RenderItem($items) { |
|
|
|
$render = ""; |
|
foreach ($items as $v) { |
|
|
|
for ($i = 0; $i < count($v); $i++) { |
|
$icona = ''; |
|
$pos = strpos($v[$i]->icon, 'fas '); |
|
if ($pos === false) { |
|
$icona = '<span data-feather="' . $v[$i]->icon . '"></span>'; |
|
} else { |
|
$icona = '<i class="' . $v[$i]->icon . '"></i> '; |
|
} |
|
/* SHOW-HIDE FAQ */ |
|
if ($v[$i]->id == 'FAQ' && !Utils::PeriodoFaq()) { |
|
continue; |
|
} |
|
/**/ |
|
if (isset($v[$i]->MenuItems) && count($v[$i]->MenuItems) <= 0) { |
|
if ($v[$i]->handler != "") { |
|
if ($v[$i]->id == 'MYAZIENDE' && !$_SESSION['ControllaPeriodoPreparazione']) { |
|
$render .= ""; |
|
} elseif ($v[$i]->id == 'SPORTELLO' && !$_SESSION['ControllaPeriodoClickDay']) { |
|
$render .= ""; |
|
} else { |
|
$render .= '<li class="nav-item" id="li-' . $v[$i]->id . '"><a onClick="' . $v[$i]->handler . '" class="nav-link" href="#" id="a-' . ($v[$i]->id) . '" data-toggle="tooltip" data-placement="bottom" title="' . $v[$i]->description . '" data-i18n = "">' . $icona . $v[$i]->text . '</a></li>'; |
|
} |
|
} else { |
|
$render .= '<li class="nav-item" id="li-' . $v[$i]->id . '"><a class="nav-link" href="' . $v[$i]->url . '#' . ($v[$i]->id) . '" id="a-' . ($v[$i]->id) . '" data-toggle="tooltip" data-placement="bottom" title="' . $v[$i]->description . '" data-i18n = "">' . $icona . $v[$i]->text . '</a></li>'; |
|
} |
|
} else { |
|
if ($v[$i]->handler != "") { |
|
if ($v[$i]->id == 'MYAZIENDE' && !$_SESSION['ControllaPeriodoPreparazione']) { |
|
$render .= ""; |
|
} elseif ($v[$i]->id == 'SPORTELLO' && !$_SESSION['ControllaPeriodoClickDay']) { |
|
$render .= ""; |
|
} else { |
|
$render .= '<li class="nav-item" id="li-' . $v[$i]->id . '"><a onClick="' . $v[$i]->handler . '" class="nav-link" href="#" id="a-' . ($v[$i]->id) . '" data-toggle="tooltip" data-placement="bottom" title="' . $v[$i]->description . '" data-i18n = "">' . $icona . $v[$i]->text . '</a></li>'; |
|
} |
|
} else { |
|
$render .= '<li class="nav-item" id="li-' . $v[$i]->id . '"><a class="nav-link" href="' . $v[$i]->url . '#' . ($v[$i]->id) . '" id="a-' . ($v[$i]->id) . '" data-toggle="tooltip" data-placement="bottom" title="' . $v[$i]->description . '" data-i18n = "">' . $icona . $v[$i]->text . '</a></li>'; |
|
} |
|
} |
|
} |
|
} |
|
|
|
return $render; |
|
} |
|
|
|
public function RenderNavBar($asideId, $menuId) { |
|
global $LoggedAccount; |
|
|
|
$render = '<nav id="' . $asideId . '" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse">' |
|
. '<img src="' . BASE_HTTP . 'assets/img/sicilia.png" alt="" class="logo"/>' |
|
. '<div class="sidebar-sticky pt-3">' |
|
. '<ul class="nav flex-column">'; |
|
|
|
$render .= $this->_RenderItem($this->MenuItems); |
|
|
|
$render .= '</ul></div> |
|
</nav>'; |
|
|
|
return $render; |
|
} |
|
|
|
public function RenderMenuBar($asideId, $menuId) { |
|
global $LoggedAccount; |
|
|
|
$render = '<nav class="navbar navbar-expand-lg navbar-dark fixed-top bg-header"> |
|
<a class="navbar-brand" href="' . HTTP_PRIVATE_SECTION . 'dashboard.php">' . APP_NAME . '</a> |
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#' . $asideId . '" aria-controls="' . $asideId . '" aria-expanded="false" aria-label="Toggle navigation"> |
|
<span class="navbar-toggler-icon"></span> |
|
</button> |
|
<div class="collapse navbar-collapse" id="' . $asideId . '"> |
|
<ul class="navbar-nav lg-auto mb-2 mb-lg-0">'; |
|
$render .= $this->_RenderItem($this->MenuItems); |
|
$render .= '</ul></div> |
|
</nav>'; |
|
return $render; |
|
} |
|
|
|
public function RenderMaterialize($asideId, $menuId) { |
|
global $LoggedAccount; |
|
$linkDash = ""; |
|
$classNavBar = "sidenav-dark grey darken-4 sidenav-active-rounded"; |
|
if ($LoggedAccount->id_gruppo == GRUPPO_UTENTE) { |
|
$linkDash = BASE_HTTP . "index.php#DASHBOARD"; |
|
$classNavBar = "sidenav-dark green darken-3 sidenav-active-rounded"; |
|
} else if ($LoggedAccount->id_gruppo == GRUPPO_CORSISTA) { |
|
$linkDash = BASE_HTTP . "corsista.php#DASHBOARD"; |
|
$classNavBar = "sidenav-light sidenav-active-square"; |
|
} else { |
|
$linkDash = BASE_HTTP . "admin/index.php#DASHBOARD"; |
|
} |
|
|
|
|
|
$render = '<aside id=' . $asideId . ' class="sidenav-main nav-expanded nav-lock nav-collapsible ' . $classNavBar . ' "> |
|
<div class="brand-sidebar"> |
|
<h1 class="logo-wrapper"> |
|
<a class="brand-logo " href="index.php"><img src="' . BASE_HTTP . '/app-assets/images/logo/fitosan2.png" alt="fitosan"/><span class="logo-text hide-on-med-and-down" style=" font-size: 25px;">Fitosan</span></a> |
|
<a class="navbar-toggler" href="#"><i class="material-icons">radio_button_checked</i></a> |
|
</h1> |
|
</div> |
|
<ul class="sidenav sidenav-collapsible leftside-navigation collapsible sidenav-fixed menu-shadow" id="' . $menuId . '" data-menu="menu-navigation" data-collapsible="accordion"> |
|
<li class="navigation-header"><a class="navigation-header-text">GENERALE</a><i class="navigation-header-icon material-icons">more_horiz</i></li> |
|
<li class="bold"><a class="waves-effect waves-cyan " href="' . $linkDash . '" id="a-DASHBOARD"><i class="fas fa-tachometer-alt"></i><span class="menu-title" data-i18n="">Dashboard</span></a></li> |
|
'; |
|
|
|
$render .= $this->_RenderItem($this->MenuItems); |
|
|
|
$render .= '</ul> |
|
<div class="navigation-background"></div><a class="sidenav-trigger btn-sidenav-toggle btn-floating btn-medium waves-effect waves-light hide-on-large-only" href="#" data-target="slide-out"><i class="material-icons">menu</i></a> |
|
</aside>'; |
|
|
|
return $render; |
|
} |
|
|
|
public static function renderHomeStaticMenu() { |
|
$render = ""; |
|
|
|
if (!Utils::isStatoSportelloManutezione() && Utils::PeriodoFaq() && !Utils::isStatoSportelloPresentazione()) { |
|
$render .= '<li class="nav-item" id="li-DASHBOARD"> |
|
<a class="nav-link" href="faq.php"> |
|
<i class="fas fa-tasks"></i><span data-feather="faq"></span> F.A.Q. |
|
</a> |
|
</li>'; |
|
} |
|
$render .= '<li class="nav-item" id="li-DASHBOARD"> |
|
<a class="nav-link" href="statistiche.php"> |
|
<i class="fas fa-solid fa-chart-line"></i><span data-feather="statistiche"></span> Statistiche |
|
</a> |
|
</li>'; |
|
if (!Utils::isStatoSportelloManutezione() && (Utils::isStatoSportelloPreparazione(true)) || Utils::isStatoSportelloPresentazione()) { |
|
$render .= '<li class="nav-item" id="li-DASHBOARD"> |
|
<a class="nav-link" href="loginspid.php"> |
|
<i class="fas fa-sign-in-alt"></i><span data-feather="login"></span> Login |
|
</a> |
|
</li>'; |
|
} |
|
return $render; |
|
} |
|
|
|
/** |
|
* Renderizza il pulsante di accesso al portale nella pagina index del portale |
|
* @return string |
|
*/ |
|
public static function renderLoginStaticHome() { |
|
$render = ""; |
|
if (!Utils::isStatoSportelloManutezione() && (Utils::isStatoSportelloPreparazione()) || Utils::isStatoSportelloPresentazione()) { |
|
$render .= '<a class="btn btn-primary" href="loginspid.php" role="button"><i class="fas fa-sign-in-alt"></i> Accedi</a>'; |
|
} |
|
return $render; |
|
} |
|
|
|
/** |
|
* Renderizza il pulsante di accesso al portale nella pagina index del portale |
|
* @return string |
|
*/ |
|
public static function renderGuidaHome() { |
|
$render = ""; |
|
if (!Utils::isStatoSportelloManutezione() && (Utils::isStatoSportelloPreparazione()) || Utils::isStatoSportelloPresentazione()) { |
|
$render .= '<li class="list-group-item"><a class="text-primary" href="assets/docs/SiciliaPEI+Guida_BandoCaroVoli.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> Guida per la preparazione dell\'istanza</a></li>'; |
|
} |
|
return $render; |
|
} |
|
|
|
public static function renderInfoStaticMenu() { |
|
$render = ""; |
|
$render .= '<li class="nav-item" id="li-LOGOUT"> |
|
<a class="nav-link" href="' . BASE_HTTP . 'logout.php"> |
|
<i class="fas fa-sign-out-alt"></i><span data-feather="login"></span> Esci |
|
</a> |
|
</li>'; |
|
return $render; |
|
} |
|
} |
|
|
|
class MenuItem { |
|
|
|
public $text = null; |
|
public $description = null; |
|
public $url = null; |
|
public $icon = null; |
|
public $id = null; |
|
public $handler = null; |
|
public $MenuItems = array(); |
|
|
|
public function __construct($_text, $_url = null, $_id = null, $_handler = null, $_icon = null, $_desc = null, $_child = array()) { |
|
$this->text = $_text; |
|
$this->url = $_url; |
|
$this->icon = $_icon; |
|
$this->id = $_id; |
|
$this->handler = $_handler; |
|
$this->description = $_desc; |
|
$this->MenuItems = $_child; |
|
} |
|
|
|
public function RenderMaterialize() { |
|
|
|
} |
|
|
|
public function HasChild() { |
|
return count($this->MenuItems) > 0; |
|
} |
|
}
|
|
|