errorMessages = array(); $this->notifications = array(); } private function getNotifications() : array { $req = new \Api\Notifications\Fetch($this->getDocument()->getUser()); if(!$req->execute()) { $this->errorMessages[] = $req->getLastError(); return array(); } else { return $req->getResult()['notifications']; } } private function getHeader() { // Locale $home = L("Home"); $search = L("Search"); // Icons $iconMenu = $this->createIcon("bars"); $iconNotification = $this->createIcon("bell", "far"); $iconSearch = $this->createIcon("search"); $iconMail = $this->createIcon("envelope", "fas"); // Notifications $numNotifications = count($this->notifications); if ($numNotifications === 0) { $notificationText = L("No new notifications"); } else if($numNotifications === 1) { $notificationText = L("1 new notification"); } else { $notificationText = sprintf(L("%d new notification"), $numNotifications); } $html = ""; return $html; } private function getSidebar() { $logout = L("Logout"); $iconLogout = $this->createIcon("arrow-left", "fas", "nav-icon"); $menuEntries = array( "dashboard" => array( "name" => "Dashboard", "icon" => "tachometer-alt" ), "users" => array( "name" => "Users", "icon" => "users" ), "settings" => array( "name" => "Settings", "icon" => "tools" ), "help" => array( "name" => "Help", "icon" => "question-circle" ), ); $notificationCount = count($this->notifications); if ($notificationCount > 0) { $menuEntries["dashboard"]["badge"] = array("type" => "warning", "value" => $notificationCount); } $currentView = $_GET["view"] ?? "dashboard"; $html = ""; return $html; } private function getView() { $views = array( "dashboard" => Dashboard::class, "users" => UserOverview::class, "404" => View404::class, ); $currentView = $_GET["view"] ?? "dashboard"; if (!isset($views[$currentView])) { $currentView = "404"; } $view = new $views[$currentView]($this->getDocument()); assert($view instanceof View); $code = $view->getCode(); if ($view instanceof AdminView) { $this->errorMessages = array_merge($this->errorMessages, $view->getErrorMessages()); } return $code; } public function loadView() { parent::loadView(); $head = $this->getDocument()->getHead(); // $head->addJS("/js/admin.min.js"); // $head->loadAdminlte(); // $this->notifications = $this->getNotifications(); } private function getContent() { $view = $this->getView(); $html = "
"; foreach($this->errorMessages as $errorMessage) { $html .= $this->createErrorText($errorMessage); } $html .= $view; $html .= "
"; return $html; } public function getCode() { $html = parent::getCode(); // $this->getDocument()->getHead()->addJS("/js/admin.min.js"); /* $header = $this->getHeader(); $sidebar = $this->getSidebar(); $content = $this->getContent(); $html .= "
$header $sidebar $content
"; */ $script = new Script(Script::MIME_TEXT_JAVASCRIPT, "/js/admin.min.js"); $html .= "
$script
"; return $html; } }