From 95db8e184b378534db0ac08d14ae8500ee5090c3 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 28 Apr 2016 21:31:15 +0200 Subject: Implemented new menu, added logic for defining dependencies, move translation files around --- inc/dashboard.inc.php | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 inc/dashboard.inc.php (limited to 'inc/dashboard.inc.php') diff --git a/inc/dashboard.inc.php b/inc/dashboard.inc.php new file mode 100644 index 00000000..ef8be110 --- /dev/null +++ b/inc/dashboard.inc.php @@ -0,0 +1,71 @@ +getCategory(); + if ($cat === false) + continue; + $modulesAssoc[$cat][] = $module; + } + $modulesArray = array(); + foreach ($modulesAssoc as $id => $list) { + $momomo = array(); + foreach ($list as $module) { + $momomo[] = array( + 'displayName' => $module->getDisplayName(), + 'identifier' => $module->getIdentifier(), + 'className' => ($module->getIdentifier() === Page::getModule()->getIdentifier()) ? 'active' : '' + ); + } + $modulesArray[] = array( + 'icon' => self::getCategoryIcon($id), + 'displayName' => Dictionary::getCategoryName($id), + 'modules' => $momomo + ); + } + Render::setDashboard(array( + 'categories' => $modulesArray, + 'url' => urlencode($_SERVER['REQUEST_URI']), + 'langs' => Dictionary::getLanguages(true), + 'dbupdate' => Database::needSchemaUpdate(), + 'user' => User::getName(), + 'warning' => User::getName() !== false && User::getLastSeenEvent() < Property::getLastWarningId(), + 'needsSetup' => User::getName() !== false && Property::getNeedsSetup() + )); + } + + public static function getCategoryIcon($category) + { + if ($category === false) { + return ''; + } + if (!preg_match('/^(\w+)\.(\w+)$/', $category, $out)) { + error_log('Requested category icon for invalid category "' . $category . '"'); + return ''; + } + $module = $out[1]; + $icon = $out[2]; + if (!isset(self::$iconCache[$module])) { + $path = 'modules/' . $module . '/category-icons.json'; + $data = json_decode(file_get_contents($path), true); + if (!is_array($data)) { + return ''; + } + self::$iconCache[$module] =& $data; + } + if (!isset(self::$iconCache[$module][$icon])) { + error_log('Icon "' . $icon . '" not found in module "' . $module . '"'); + return ''; + } + return 'glyphicon glyphicon-' . self::$iconCache[$module][$icon]; + } + +} \ No newline at end of file -- cgit v1.2.3-55-g7522