diff --git a/includes/theme.inc b/includes/theme.inc index 5ae0fea2042b3fe4aac86906feb65b8a087aa926..ee73965d963ef6baa8619afe7cacdaddf325af5f 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -1987,25 +1987,24 @@ function theme_table($variables) { $flip = array('even' => 'odd', 'odd' => 'even'); $class = 'even'; foreach ($rows as $number => $row) { - $attributes = array(); - // Check if we're dealing with a simple or complex row if (isset($row['data'])) { - foreach ($row as $key => $value) { - if ($key == 'data') { - $cells = $value; - } - else { - $attributes[$key] = $value; - } - } + $cells = $row['data']; + $no_striping = isset($row['no_striping']) ? $row['no_striping'] : FALSE; + + // Set the attributes array and exclude 'data' and 'no_striping'. + $attributes = $row; + unset($attributes['data']); + unset($attributes['no_striping']); } else { $cells = $row; + $attributes = array(); + $no_striping = FALSE; } if (count($cells)) { // Add odd/even class - if (empty($row['no_striping'])) { + if (!$no_striping) { $class = $flip[$class]; $attributes['class'][] = $class; } diff --git a/modules/simpletest/tests/theme.test b/modules/simpletest/tests/theme.test index d377ef0638133aefc1fbed2f133fd561f0fc825b..519a7a90abac2b20c9598bda3dbd69edcc54fb3c 100644 --- a/modules/simpletest/tests/theme.test +++ b/modules/simpletest/tests/theme.test @@ -215,6 +215,20 @@ class ThemeTableTestCase extends DrupalWebTestCase { $this->assertRaw('<thead><tr><th>Header 1</th>', 'Table header was printed.'); } + /** + * Tests that the 'no_striping' option works correctly. + */ + function testThemeTableWithNoStriping() { + $rows = array( + array( + 'data' => array(1), + 'no_striping' => TRUE, + ), + ); + $this->content = theme('table', array('rows' => $rows)); + $this->assertNoRaw('class="odd"', 'Odd/even classes were not added because $no_striping = TRUE.'); + $this->assertNoRaw('no_striping', 'No invalid no_striping HTML attribute was printed.'); + } } /**