summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/theme.inc21
-rw-r--r--modules/simpletest/tests/theme.test14
2 files changed, 24 insertions, 11 deletions
diff --git a/includes/theme.inc b/includes/theme.inc
index 5ae0fea20..ee73965d9 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 d377ef063..519a7a90a 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.');
+ }
}
/**