diff --git a/core/includes/theme.inc b/core/includes/theme.inc index 4c0e580..465ae23 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -2203,25 +2203,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/core/modules/system/lib/Drupal/system/Tests/Theme/TableTest.php b/core/modules/system/lib/Drupal/system/Tests/Theme/TableTest.php index 392959d..0dbedd7 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Theme/TableTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Theme/TableTest.php @@ -66,4 +66,19 @@ function testThemeTableWithEmptyMessage() { $this->assertRaw('No strings available.', 'Correct colspan was set on empty message.'); $this->assertRaw('Header 1', '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.'); + } }