uw Mon Mar 12 15:26:16 2001 EDT
Modified files:
/php4/pear/Experimental/HTML Menu.php
Log:
- extended "prevnext" mode to show the previous, up and next item (up is new)
Index: php4/pear/Experimental/HTML/Menu.php
diff -u php4/pear/Experimental/HTML/Menu.php:1.4
php4/pear/Experimental/HTML/Menu.php:1.5
--- php4/pear/Experimental/HTML/Menu.php:1.4 Mon Mar 12 14:03:51 2001
+++ php4/pear/Experimental/HTML/Menu.php Mon Mar 12 15:26:15 2001
@@ -264,7 +264,7 @@
* @param integer prevnext flag
*/
function buildMenu($menu, $level = 0, $flag_stop_level = -1) {
- static $last_node = array();
+ static $last_node = array(), $up_node = array();
// the recursion goes slightly different for every menu type
switch ($this->menu_type) {
@@ -377,6 +377,7 @@
} else if ($this->current_url == $node["url"]) {
// menu item that fits to this url - "active" menu item
$type = 1;
+ $flag_stop_level = $level;
if (0 != count($last_node)) {
@@ -392,7 +393,18 @@
}
- $flag_stop_level = $level;
+ if (0 != count($up_node)) {
+
+ $this->html .= $this->getEntry($up_node, $level, 5);
+
+ } else {
+
+ // WARNING: if there's no up take the first menu entry -
+you might not like this rule!
+ reset($this->menu);
+ list($node_id, $first_node) = each($this->menu);
+ $this->html .= $this->getEntry($first_node, $level, 5);
+
+ }
} else if (isset($this->path[$level]) && $this->path[$level] ==
$node_id) {
// processed menu item is part of the path to the active menu
item
@@ -408,8 +420,10 @@
$last_node = $node;
// follow the subtree if the active menu item is in it
- if ($type && isset($node["sub"]))
+ if ($type && isset($node["sub"])) {
+ $up_node = $node;
$flag_stop_level = $this->buildMenu($node["sub"], $level + 1,
(-1 != $flag_stop_level) ? $flag_stop_level + 1 : -1);
+ }
}
break;
@@ -523,6 +537,15 @@
$node["title"]
);
break;
+
+ case 5:
+ // up url ^^
+ $html .= sprintf('<td>%s<a href="%s">^ %s ^</a></td>',
+ $indent,
+ $node["url"],
+ $node["title"]
+ );
+ break;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]