diff options
author | Steven Wittens <steven@10.no-reply.drupal.org> | 2004-09-14 20:01:00 +0000 |
---|---|---|
committer | Steven Wittens <steven@10.no-reply.drupal.org> | 2004-09-14 20:01:00 +0000 |
commit | 9c9905d9a077830e371d91b57527984c3cee96e3 (patch) | |
tree | f1c3324ff1815a92e1f75abb21ac263ababaf701 /includes | |
parent | 5dfcdf0e28efc8bec416407c1c566058726cbb27 (diff) | |
download | brdo-9c9905d9a077830e371d91b57527984c3cee96e3.tar.gz brdo-9c9905d9a077830e371d91b57527984c3cee96e3.tar.bz2 |
#10648: Fix watchdog-related tablesort coloring bug in IE, add support for <tr> attributes to theme_table() and reduce specificy of watchdog coloring CSS rules.
Diffstat (limited to 'includes')
-rw-r--r-- | includes/theme.inc | 55 |
1 files changed, 47 insertions, 8 deletions
diff --git a/includes/theme.inc b/includes/theme.inc index 57c2b1724..c59a7f11f 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -581,10 +581,29 @@ function theme_submenu($links) { * - "sort": A default sort order for this column ("asc" or "desc"). * - Any HTML attributes, such as "colspan", to apply to the column header cell. * @param $rows - * An array of arrays containing the table cells. Each cell can be either a - * string or and associative array with the following keys: + * An array of table rows. Every row is an array of cells, or an associative + * array with the following keys: + * - "data": an array of cells + * - Any HTML attributes, such as "class", to apply to the table row. + * + * Each cell can be either a string or an associative array with the following keys: * - "data": The string to display in the table cell. * - Any HTML attributes, such as "colspan", to apply to the table cell. + * + * Here's an example for $rows: + * @verbatim + * $rows = array( + * // Simple row + * array( + * 'Cell 1', 'Cell 2', 'Cell 3' + * ), + * // Row with attributes on the row and some of its cells. + * array( + * 'data' => array('Cell 1', array('data' => 'Cell 2', 'colspan' => 2)), 'class' => 'funky' + * ) + * ); + * @endverbatim + * * @param $attributes * An array of HTML attributes to apply to the table tag. * @return @@ -608,18 +627,38 @@ function theme_table($header, $rows, $attributes = NULL) { // Format the table rows: if (is_array($rows)) { foreach ($rows as $number => $row) { - if ($number % 2 == 1) { - $output .= ' <tr class="light">'; + $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; + } + } + } + else { + $cells = $row; + } + + // Add light/dark class + $class = ($number % 2 == 1) ? 'light': 'dark'; + if (isset($attributes['class'])) { + $attributes['class'] .= ' '. $class; } else { - $output .= ' <tr class="dark">'; + $attributes['class'] = $class; } + // Build row + $output .= ' <tr'. drupal_attributes($attributes) .'>'; $i = 0; - foreach ($row as $cell) { - $cell = tablesort_cell($cell, $header, $ts, $i); + foreach ($cells as $cell) { + $cell = tablesort_cell($cell, $header, $ts, $i++); $output .= _theme_table_cell($cell, 0); - $i++; } $output .= " </tr>\n"; } |