Skip to content
Snippets Groups Projects
Commit ff1d0fcc authored by David Rothstein's avatar David Rothstein
Browse files

Issue #1809836 by danillonunes: Fixed theme_item_list() is broken when 'items'...

Issue #1809836 by danillonunes: Fixed theme_item_list() is broken when 'items' variable is an associative array.
parent 01f18eb5
No related branches found
No related tags found
No related merge requests found
Drupal 7.17, xxxx-xx-xx (development version)
-----------------------
- Made it possible to use associative arrays for the 'items' variable in
theme_item_list().
- Fixed a bug which prevented required form elements without a title from being
given an "error" class when the form fails validation.
- Prevented duplicate HTML IDs from appearing when two forms are displayed on
......
......@@ -2069,10 +2069,12 @@ function theme_item_list($variables) {
if (!empty($items)) {
$output .= "<$type" . drupal_attributes($attributes) . '>';
$num_items = count($items);
foreach ($items as $i => $item) {
$i = 0;
foreach ($items as $item) {
$attributes = array();
$children = array();
$data = '';
$i++;
if (is_array($item)) {
foreach ($item as $key => $value) {
if ($key == 'data') {
......@@ -2093,10 +2095,10 @@ function theme_item_list($variables) {
// Render nested list.
$data .= theme_item_list(array('items' => $children, 'title' => NULL, 'type' => $type, 'attributes' => $attributes));
}
if ($i == 0) {
if ($i == 1) {
$attributes['class'][] = 'first';
}
if ($i == $num_items - 1) {
if ($i == $num_items) {
$attributes['class'][] = 'last';
}
$output .= '<li' . drupal_attributes($attributes) . '>' . $data . "</li>\n";
......
......@@ -230,18 +230,19 @@ class ThemeItemListUnitTest extends DrupalWebTestCase {
}
/**
* Test nested list rendering.
* Test item list rendering.
*/
function testNestedList() {
$items = array('a', array('data' => 'b', 'children' => array('c', 'd')), 'e');
function testItemList() {
$items = array('a', array('data' => 'b', 'children' => array('c' => 'c', 'd' => 'd', 'e' => 'e')), 'f');
$expected = '<div class="item-list"><ul><li class="first">a</li>
<li>b<div class="item-list"><ul><li class="first">c</li>
<li class="last">d</li>
</ul></div></li>
<li>d</li>
<li class="last">e</li>
</ul></div></li>
<li class="last">f</li>
</ul></div>';
$output = theme('item_list', array('items' => $items));
$this->assertIdentical($expected, $output, 'Nested list is rendered correctly.');
$this->assertIdentical($expected, $output, 'Item list is rendered correctly.');
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment