summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.txt1
-rw-r--r--includes/theme.inc12
2 files changed, 11 insertions, 2 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 81e8f374d..fe9bbbe02 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -45,6 +45,7 @@ Drupal x.x.x, xxxx-xx-xx (development version)
- upgrade system:
* created space for update branches.
- split up and removed drupal.css.
+- added nested lists generation.
Drupal 4.7.0, 2006-05-01
------------------------
diff --git a/includes/theme.inc b/includes/theme.inc
index 79392b765..265653a27 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -835,8 +835,9 @@ function theme_mark($type = MARK_NEW) {
* @param $items
* An array of items to be displayed in the list. If an item is a string,
* then it is used as is. If an item is an array, then the "data" element of
- * the array is used as the contents of the list item and all other elements
- * are treated as attributes of the list item element.
+ * the array is used as the contents of the list item. If an item is an array
+ * with a "children" element, those children are displayed in a nested list.
+ * All other elements are treated as attributes of the list item element.
* @param $title
* The title of the list.
* @param $attributes
@@ -856,11 +857,15 @@ function theme_item_list($items = array(), $title = NULL, $type = 'ul', $attribu
$output .= "<$type" . drupal_attributes($attributes) . '>';
foreach ($items as $item) {
$attributes = array();
+ $children = array();
if (is_array($item)) {
foreach ($item as $key => $value) {
if ($key == 'data') {
$data = $value;
}
+ elseif ($key == 'children') {
+ $children = $value;
+ }
else {
$attributes[$key] = $value;
}
@@ -869,6 +874,9 @@ function theme_item_list($items = array(), $title = NULL, $type = 'ul', $attribu
else {
$data = $item;
}
+ if (count($children) > 0) {
+ $data .= theme_item_list($children, NULL, $type, $attributes); // Render nested list
+ }
$output .= '<li' . drupal_attributes($attributes) . '>'. $data .'</li>';
}
$output .= "</$type>";