summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2019-03-26 12:04:35 +0100
committerSimon Rettberg2019-03-26 12:04:35 +0100
commit82e546cfa47dbc7d5d7a780c92129a871087ee12 (patch)
treeb55719f148afde911c0056799441639f049aef6d
parent[serversetup-bwlp-ipxe] Fix: Autoboot not working for chained menus (diff)
downloadslx-admin-82e546cfa47dbc7d5d7a780c92129a871087ee12.tar.gz
slx-admin-82e546cfa47dbc7d5d7a780c92129a871087ee12.tar.xz
slx-admin-82e546cfa47dbc7d5d7a780c92129a871087ee12.zip
[inc/Dashboard] Add feature to collapse sections in sidebar mode
Modules can now declare that they should be collapsed by default. If a menu category only contains such modules, it will be collapsed in the sidebar mode of the menu.
-rw-r--r--inc/dashboard.inc.php8
-rw-r--r--inc/module.inc.php7
2 files changed, 14 insertions, 1 deletions
diff --git a/inc/dashboard.inc.php b/inc/dashboard.inc.php
index d576a8f1..0b0f69e3 100644
--- a/inc/dashboard.inc.php
+++ b/inc/dashboard.inc.php
@@ -42,6 +42,7 @@ class Dashboard
$currentPage = Page::getModule()->getIdentifier();
$categories = array();
foreach ($modByCategory as $catId => $modList) {
+ $collapse = true;
/* @var Module[] $modList */
$modules = array();
foreach ($modList as $modId => $module) {
@@ -54,13 +55,18 @@ class Dashboard
if ($module->getIdentifier() === $currentPage) {
$newEntry['className'] = 'active';
$newEntry['subMenu'] = self::$subMenu;
+ $collapse = false; // Don't collapse category if it contains the active module
+ }
+ if (!$module->doCollapse()) {
+ $collapse = false;
}
$modules[] = $newEntry;
}
$categories[] = array(
'icon' => self::getCategoryIcon($catId),
'displayName' => Dictionary::getCategoryName($catId),
- 'modules' => $modules
+ 'modules' => $modules,
+ 'collapse' => $collapse,
);
}
Render::setDashboard(array(
diff --git a/inc/module.inc.php b/inc/module.inc.php
index 6d160787..5525c0a4 100644
--- a/inc/module.inc.php
+++ b/inc/module.inc.php
@@ -146,6 +146,7 @@ class Module
private $directActivation = false;
private $dependencies = array();
private $name;
+ private $collapse;
/**
* @var array assoc list of 'filename.css' => true|false (true = always load, false = only if module is main module)
*/
@@ -167,6 +168,7 @@ class Module
if (isset($json['category']) && is_string($json['category'])) {
$this->category = $json['category'];
}
+ $this->collapse = isset($json['collapse']) && (bool)$json['collapse'];
if (isset($json['client-plugin'])) {
$this->clientPlugin = (bool)$json['client-plugin'];
}
@@ -275,6 +277,11 @@ class Module
return Dictionary::getCategoryName($this->category);
}
+ public function doCollapse()
+ {
+ return $this->collapse;
+ }
+
public function getDir()
{
return 'modules/' . $this->name;