Index: navigation.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/navigation/navigation.module,v
retrieving revision 1.24
diff -u -r1.24 navigation.module
--- navigation.module 30 May 2004 22:00:21 -0000 1.24
+++ navigation.module 1 Jun 2004 03:19:18 -0000
@@ -9,10 +9,17 @@
function navigation_display_tabs($mid) {
$output = "";
if(navigation_menu_allowed($mid) && ($menu = navigation_load_menu($mid))) {
- $output = "
\n";
$selected = navigation_load_selected_items($mid);
$output .= navigation_build_tabs($menu, 0, 0, $selected);
- $output .= "
\n";
+ }
+ return $output;
+}
+
+function navigation_display_fulltabs($mid) {
+ $output = "";
+ if(navigation_menu_allowed($mid) && ($menu = navigation_load_menu($mid))) {
+ $selected = navigation_load_selected_items($mid);
+ $output .= navigation_build_fulltabs($menu, 0, 0, $selected);
}
return $output;
}
@@ -76,6 +83,50 @@
}
}
+/**
+ * navigation_build_tabs: Builds collapsed menu structure - ideal for use with
+ * DHTML/CSS for dropdown menus.
+ */
+function navigation_build_fulltabs($menu, $row, $active_parent, $selected) {
+
+ // Pretty-print mini-macro
+ for ($i = 0; $i < $row; $i++)
+ {
+ $spaces .= " ";
+ }
+
+ if($menu[$row]) {
+ unset($tabrow);
+ unset($children);
+ foreach ($menu[$row] as $item) {
+ unset($rowOutput);
+ if (navigation_item_allowed($menu[mid], $item->iid) && (in_array($active_parent, $item->parents) || !$active_parent)) {
+ $children = $item->iid;
+
+ // Output the item.
+ if ($selected[$item->iid]) {
+ $menuOutput .= "\n$spaces iid\">". navigation_l($item->name, $item->url, array("title" => $item->description, "class" => "active-tab"));
+ }
+ else {
+ $menuOutput .= "\n$spaces iid\">". navigation_l($item->name, $item->url, array("title" => $item->description));
+ }
+
+ // Check: item has children
+ $rowOutput = navigation_build_fulltabs($menu, $row + 1, $children, $selected);
+ if ($rowOutput) {
+ // Output submenu
+ $menuOutput .= "\n$rowOutput\n$spaces ";
+ }
+ }
+ }
+ if ($menuOutput) {
+ $output = "$spaces\n";
+ }
+ }
+
+ return $output;
+}
+
function navigation_build_tabs($menu, $row, $active_parent, $selected) {
// only try and build the next row if it exists
if($menu[$row]) {