Allow updating the filters separately
[misc/kostenrechnung] / lib / menu.php
index a6fd04b..d9ddca9 100644 (file)
@@ -4,16 +4,39 @@ function menu()
 {
   if (empty($_SESSION['sys']['login'])) return '';
 
-  $ret = '<div id="menu">';
-  $ret .= '<ul id="nav">';
-  $ret .= '<li><a href="./">Start</a></li>';
+  $ret = '<div class="menu">';
 
-  $sql = "SELECT id,name FROM sys_menu ORDER BY priority";
+  $ret .= '<ul id="menu" class="dropdown">';
+
+  $ret .= '<li><span>Home</span>';
+  $ret .= '<ul>';
+  $ret .= '<li><a href="./" title="Zurück zur Hauptseite">Start</a></li>';
+  $ret .= '<li><a href="./?logout=true" title="Abmelden">Logout</a></li>';
+
+  $sql = "SELECT fname,menutitle,sys_menu.name,title FROM sys_mask "
+    . "JOIN sys_menu ON sys_mask.menu = sys_menu.id "
+    . "JOIN sys_group_mask ON sys_mask.id = sys_group_mask.mask "
+    . "WHERE sys_group_mask.gid = ".$_SESSION['sys']['group']." "
+    . "ORDER BY sys_menu.priority,sys_menu.name,sys_mask.priority,sys_mask.menutitle";
   $sth = pg_query($sql);
 
-  if ($sth)
-    while ($row = pg_fetch_assoc($sth))
-      $ret .= sprintf('<li><a href="./?menu=%d">%s</a></li>', $row['id'], $row['name']);
+  if ($sth) {
+    $menu = 'Start';
+
+    while ($row = pg_fetch_assoc($sth)) {
+      if ($menu != $row['name']) {
+       $ret .= '</ul></li>';
+       $ret .= sprintf('<li><span>%s</span>', $row['name']);
+       $ret .= '<ul>';
+       $menu = $row['name'];
+      }
+      $ret .= sprintf('<li><a href="./?mask=%s"%s>%s</a></li>', $row['fname'],
+                     empty($row['title']) ? '' : ' title="'.$row['title'].'"',
+                     $row['menutitle']);
+    }
+    $ret .= '</ul>';
+    $ret .= '</li>';
+  }
 
   $ret .= '</ul>';
   $ret .= '</div>';