﻿Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.815
diff -u -r1.815 common.inc
--- includes/common.inc	1 Nov 2008 21:21:34 -0000	1.815
+++ includes/common.inc	2 Nov 2008 22:45:04 -0000
@@ -1519,6 +1519,13 @@
   if (is_array($attributes)) {
     $t = '';
     foreach ($attributes as $key => $value) {
+      // Handle special attribute processing.
+      switch ($key) {
+        case 'class':
+          $value = implode(' ', (array)$value);
+          break;
+        default:
+      }
       $t .= " $key=" . '"' . check_plain($value) . '"';
     }
     return $t;
@@ -1578,10 +1585,10 @@
   // Append active class.
   if ($path == $_GET['q'] || ($path == '<front>' && drupal_is_front_page())) {
     if (isset($options['attributes']['class'])) {
-      $options['attributes']['class'] .= ' active';
+      $options['attributes']['class'] = array_merge($options['attributes']['class'], array('active'));
     }
     else {
-      $options['attributes']['class'] = 'active';
+      $options['attributes']['class'] = array('active');
     }
   }
 
@@ -2325,7 +2332,7 @@
  * In a situation where a single weight column is being sorted in the table, the
  * classes could be added like this (in the theme function):
  * @code
- * $form['my_elements'][$delta]['weight']['#attributes']['class'] = "my-elements-weight";
+ * $form['my_elements'][$delta]['weight']['#attributes']['class'] = array("my-elements-weight");
  * @endcode
  *
  * Each row of the table must also have a class of "draggable" in order to enable the
@@ -2334,7 +2341,7 @@
  * $row = array(...);
  * $rows[] = array(
  *   'data' => $row,
- *   'class' => 'draggable',
+ *   'class' => array('draggable'),
  * );
  * @endcode
  *
@@ -2352,7 +2359,7 @@
  * the block regions on the admin/build/block page), a separate subgroup class
  * must also be added to differentiate the groups.
  * @code
- * $form['my_elements'][$region][$delta]['weight']['#attributes']['class'] = "my-elements-weight my-elements-weight-" . $region;
+ * $form['my_elements'][$region][$delta]['weight']['#attributes']['class'] = array("my-elements-weight my-elements-weight-" . $region);
  * @endcode
  *
  * $group is still 'my-element-weight', and the additional $subgroup variable
@@ -3067,7 +3074,7 @@
       'arguments' => array('display' => NULL),
     ),
     'links' => array(
-      'arguments' => array('links' => NULL, 'attributes' => array('class' => 'links')),
+      'arguments' => array('links' => NULL, 'attributes' => array('class' => array('links'))),
     ),
     'image' => array(
       'arguments' => array('path' => NULL, 'alt' => '', 'title' => '', 'attributes' => NULL, 'getsize' => TRUE),
Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.300
diff -u -r1.300 form.inc
--- includes/form.inc	2 Nov 2008 06:26:33 -0000	1.300
+++ includes/form.inc	2 Nov 2008 09:15:52 -0000
@@ -1507,12 +1507,11 @@
     drupal_add_js('misc/collapse.js');
 
     if (!isset($element['#attributes']['class'])) {
-      $element['#attributes']['class'] = '';
+      $element['#attributes']['class'] = array();
     }
-
-    $element['#attributes']['class'] .= ' collapsible';
-    if (!empty($element['#collapsed'])) {
-      $element['#attributes']['class'] .= ' collapsed';
+    $element['#attributes']['class'][] = 'collapsible';
+    if ($element['#collapsed']) {
+      $element['#attributes']['class'][] = 'collapsed';
     }
   }
 
@@ -1596,14 +1595,14 @@
     '#title' => t('Password'),
     '#value' => empty($element['#value']) ? NULL : $element['#value']['pass1'],
     '#required' => $element['#required'],
-    '#attributes' => array('class' => 'password-field'),
+    '#attributes' => array('class' => array('password-field')),
   );
   $element['pass2'] =  array(
     '#type' => 'password',
     '#title' => t('Confirm password'),
     '#value' => empty($element['#value']) ? NULL : $element['#value']['pass2'],
     '#required' => $element['#required'],
-    '#attributes' => array('class' => 'password-confirm'),
+    '#attributes' => array('class' => array('password-confirm')),
   );
   $element['#element_validate'] = array('password_confirm_validate');
   $element['#tree'] = TRUE;
@@ -2026,10 +2025,10 @@
 function theme_button($element) {
   // Make sure not to overwrite classes.
   if (isset($element['#attributes']['class'])) {
-    $element['#attributes']['class'] = 'form-' . $element['#button_type'] . ' ' . $element['#attributes']['class'];
+    $element['#attributes']['class'] = array_merge($element['#attributes']['class'], array('form-' . $element['#button_type']));
   }
   else {
-    $element['#attributes']['class'] = 'form-' . $element['#button_type'];
+    $element['#attributes']['class'] = array('form-' . $element['#button_type']);
   }
 
   return '<input type="submit" ' . (empty($element['#name']) ? '' : 'name="' . $element['#name'] . '" ') . 'id="' . $element['#id'] . '" value="' . check_plain($element['#value']) . '" ' . drupal_attributes($element['#attributes']) . " />\n";
@@ -2043,10 +2042,10 @@
 function theme_image_button($element) {
   // Make sure not to overwrite classes.
   if (isset($element['#attributes']['class'])) {
-    $element['#attributes']['class'] = 'form-' . $element['#button_type'] . ' ' . $element['#attributes']['class'];
+    $element['#attributes']['class'] = array_merge($element['#attributes']['class'], array('form-' . $element['#button_type']));
   }
   else {
-    $element['#attributes']['class'] = 'form-' . $element['#button_type'];
+    $element['#attributes']['class'] = array('form-' . $element['#button_type']);
   }
 
   return '<input type="image" name="' . $element['#name'] . '" ' .
@@ -2310,9 +2309,9 @@
     $class[] = 'error';
   }
   if (isset($element['#attributes']['class'])) {
-    $class[] = $element['#attributes']['class'];
+    $class = array_merge($class, $element['#attributes']['class']);
   }
-  $element['#attributes']['class'] = implode(' ', $class);
+  $element['#attributes']['class'] = $class;
 }
 
 /**
Index: includes/locale.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/locale.inc,v
retrieving revision 1.190
diff -u -r1.190 locale.inc
--- includes/locale.inc	26 Oct 2008 18:06:38 -0000	1.190
+++ includes/locale.inc	2 Nov 2008 09:12:56 -0000
@@ -45,7 +45,7 @@
     $form['weight'][$langcode] = array(
       '#type' => 'weight',
       '#default_value' => $language->weight,
-      '#attributes' => array('class' => 'language-order-weight'),
+      '#attributes' => array('class' => array('language-order-weight')),
     );
     $form['name'][$langcode] = array('#markup' => check_plain($language->name));
     $form['native'][$langcode] = array('#markup' => check_plain($language->native));
@@ -90,7 +90,7 @@
           drupal_render($form['weight'][$key]),
           l(t('edit'), 'admin/settings/language/edit/' . $key) . (($key != 'en' && $key != $default->language) ? ' ' . l(t('delete'), 'admin/settings/language/delete/' . $key) : '')
         ),
-        'class' => 'draggable'
+        'class' => array('draggable')
       );
     }
   }
@@ -2011,8 +2011,8 @@
         $value['group'],
         array('data' => check_plain(truncate_utf8($value['source'], 150, FALSE, TRUE)) . '<br /><small>' . $value['location'] . '</small>'),
         array('data' => _locale_translate_language_list($value['languages'], $limit_language), 'align' => 'center'),
-        array('data' => l(t('edit'), "admin/build/translate/edit/$lid"), 'class' => 'nowrap'),
-        array('data' => l(t('delete'), "admin/build/translate/delete/$lid"), 'class' => 'nowrap'),
+        array('data' => l(t('edit'), "admin/build/translate/edit/$lid"), 'class' => array('nowrap')),
+        array('data' => l(t('delete'), "admin/build/translate/delete/$lid"), 'class' => array('nowrap')),
       );
     }
 
Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.299
diff -u -r1.299 menu.inc
--- includes/menu.inc	31 Oct 2008 02:18:22 -0000	1.299
+++ includes/menu.inc	2 Nov 2008 09:12:56 -0000
@@ -533,6 +533,7 @@
  */
 function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
   $callback = $item['title_callback'];
+  
   $item['localized_options'] = $item['options'];
   // If we are not doing link translation or if the title matches the
   // link title of its router item, localize it.
@@ -711,7 +712,7 @@
       _menu_item_localize($item, $map, TRUE);
     }
   }
-
+  
   // Allow other customizations - e.g. adding a page-specific query string to the
   // options array. For performance reasons we only invoke this hook if the link
   // has the 'alter' flag set in the options array.
@@ -793,12 +794,12 @@
 
   $num_items = count($items);
   foreach ($items as $i => $data) {
-    $extra_class = NULL;
+    $extra_class = array();
     if ($i == 0) {
-      $extra_class = 'first';
+      $extra_class[] = 'first';
     }
     if ($i == $num_items - 1) {
-      $extra_class = 'last';
+      $extra_class[] = 'last';
     }
     $link = theme('menu_item_link', $data['link']);
     if ($data['below']) {
@@ -1161,7 +1162,7 @@
   if (empty($link['localized_options'])) {
     $link['localized_options'] = array();
   }
-
+  
   return l($link['title'], $link['href'], $link['localized_options']);
 }
 
@@ -1180,14 +1181,11 @@
  * @ingroup themeable
  */
 function theme_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
-  $class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
-  if (!empty($extra_class)) {
-    $class .= ' ' . $extra_class;
-  }
+  $extra_class[] = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
   if ($in_active_trail) {
-    $class .= ' active-trail';
+    $extra_class[] = 'active-trail';
   }
-  return '<li class="' . $class . '">' . $link . $menu . "</li>\n";
+  return '<li class="' . drupal_attributes(array('class' => $extra_class)) . '">' . $link . $menu . "</li>\n";
 }
 
 /**
Index: includes/pager.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/pager.inc,v
retrieving revision 1.64
diff -u -r1.64 pager.inc
--- includes/pager.inc	12 Oct 2008 04:30:05 -0000	1.64
+++ includes/pager.inc	2 Nov 2008 09:12:56 -0000
@@ -150,13 +150,13 @@
   if ($pager_total[$element] > 1) {
     if ($li_first) {
       $items[] = array(
-        'class' => 'pager-first',
+        'class' => array('pager-first'),
         'data' => $li_first,
       );
     }
     if ($li_previous) {
       $items[] = array(
-        'class' => 'pager-previous',
+        'class' => array('pager-previous'),
         'data' => $li_previous,
       );
     }
@@ -165,7 +165,7 @@
     if ($i != $pager_max) {
       if ($i > 1) {
         $items[] = array(
-          'class' => 'pager-ellipsis',
+          'class' => array('pager-ellipsis'),
           'data' => '…',
         );
       }
@@ -173,26 +173,26 @@
       for (; $i <= $pager_last && $i <= $pager_max; $i++) {
         if ($i < $pager_current) {
           $items[] = array(
-            'class' => 'pager-item',
+            'class' => array('pager-item'),
             'data' => theme('pager_previous', $i, $limit, $element, ($pager_current - $i), $parameters),
           );
         }
         if ($i == $pager_current) {
           $items[] = array(
-            'class' => 'pager-current',
+            'class' => array('pager-current'),
             'data' => $i,
           );
         }
         if ($i > $pager_current) {
           $items[] = array(
-            'class' => 'pager-item',
+            'class' => array('pager-item'),
             'data' => theme('pager_next', $i, $limit, $element, ($i - $pager_current), $parameters),
           );
         }
       }
       if ($i < $pager_max) {
         $items[] = array(
-          'class' => 'pager-ellipsis',
+          'class' => array('pager-ellipsis'),
           'data' => '…',
         );
       }
@@ -200,17 +200,17 @@
     // End generation.
     if ($li_next) {
       $items[] = array(
-        'class' => 'pager-next',
+        'class' => array('pager-next'),
         'data' => $li_next,
       );
     }
     if ($li_last) {
       $items[] = array(
-        'class' => 'pager-last',
+        'class' => array('pager-last'),
         'data' => $li_last,
       );
     }
-    return theme('item_list', $items, NULL, 'ul', array('class' => 'pager'));
+    return theme('item_list', $items, NULL, 'ul', array('class' => array('pager')));
   }
 }
 
Index: includes/tablesort.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/tablesort.inc,v
retrieving revision 1.48
diff -u -r1.48 tablesort.inc
--- includes/tablesort.inc	14 Apr 2008 17:48:33 -0000	1.48
+++ includes/tablesort.inc	2 Nov 2008 09:12:58 -0000
@@ -72,10 +72,10 @@
     if ($cell['data'] == $ts['name']) {
       $ts['sort'] = (($ts['sort'] == 'asc') ? 'desc' : 'asc');
       if (isset($cell['class'])) {
-        $cell['class'] .= ' active';
+        array_merge($cell['class'], array('active'));
       }
       else {
-        $cell['class'] = 'active';
+        $cell['class'] = array('active');
       }
       $image = theme('tablesort_indicator', $ts['sort']);
     }
@@ -122,7 +122,7 @@
       }
     }
     else {
-      $cell = array('data' => $cell, 'class' => 'active');
+      $cell = array('data' => $cell, 'class' => array('active'));
     }
   }
   return $cell;
Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.446
diff -u -r1.446 theme.inc
--- includes/theme.inc	26 Oct 2008 18:06:38 -0000	1.446
+++ includes/theme.inc	2 Nov 2008 09:12:58 -0000
@@ -1128,7 +1128,7 @@
  * @return
  *   A string containing an unordered list of links.
  */
-function theme_links($links, $attributes = array('class' => 'links')) {
+function theme_links($links, $attributes = array('class' => array('links'))) {
   $output = '';
 
   if (count($links) > 0) {
@@ -1138,17 +1138,17 @@
     $i = 1;
 
     foreach ($links as $key => $link) {
-      $class = $key;
+      $class[] = $key;
 
       // Add first, last and active classes to the list of links to help out themers.
       if ($i == 1) {
-        $class .= ' first';
+        $class[] = 'first';
       }
       if ($i == $num_links) {
-        $class .= ' last';
+        $class[] = 'last';
       }
       if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))) {
-        $class .= ' active';
+        $class[] = 'active';
       }
       $output .= '<li' . drupal_attributes(array('class' => $class)) . '>';
 
@@ -1267,7 +1267,7 @@
  *     ),
  *     // Row with attributes on the row and some of its cells.
  *     array(
- *       'data' => array('Cell 1', array('data' => 'Cell 2', 'colspan' => 2)), 'class' => 'funky'
+ *       'data' => array('Cell 1', array('data' => 'Cell 2', 'colspan' => 2)), 'class' => array('funky')
  *     )
  *   );
  *   @endverbatim
@@ -1289,17 +1289,17 @@
  *     // COLGROUP with one COL element.
  *     array(
  *       array(
- *         'class' => 'funky', // Attribute for the COL element.
+ *         'class' => array('funky'), // Attribute for the COL element.
  *       ),
  *     ),
  *     // Colgroup with attributes and inner COL elements.
  *     array(
  *       'data' => array(
  *         array(
- *           'class' => 'funky', // Attribute for the COL element.
+ *           'class' => array('funky'), // Attribute for the COL element.
  *         ),
  *       ),
- *       'class' => 'jazzy', // Attribute for the COLGROUP element.
+ *       'class' => array('jazzy'), // Attribute for the COLGROUP element.
  *     ),
  *   );
  *   @endverbatim
@@ -1316,7 +1316,7 @@
     drupal_add_js('misc/tableheader.js');
     // Add 'sticky-enabled' class to the table to identify it for JS.
     // This is needed to target tables constructed by this function.
-    $attributes['class'] = empty($attributes['class']) ? 'sticky-enabled' : ($attributes['class'] . ' sticky-enabled');
+    $attributes['class'][] = 'sticky-enabled';
   }
 
   $output = '<table' . drupal_attributes($attributes) . ">\n";
@@ -1401,13 +1401,7 @@
       }
       if (count($cells)) {
         // Add odd/even class
-        $class = $flip[$class];
-        if (isset($attributes['class'])) {
-          $attributes['class'] .= ' ' . $class;
-        }
-        else {
-          $attributes['class'] = $class;
-        }
+        $attributes['class'][] = $class = $flip[$class];
 
         // Build row
         $output .= ' <tr' . drupal_attributes($attributes) . '>';
@@ -1432,7 +1426,7 @@
 function theme_table_select_header_cell() {
   drupal_add_js('misc/tableselect.js');
 
-  return array('class' => 'select-all');
+  return array('class' => array('select-all'));
 }
 
 /**
@@ -1541,10 +1535,10 @@
         $data .= theme_item_list($children, NULL, $type, $attributes); // Render nested list
       }
       if ($i == 0) {
-        $attributes['class'] = empty($attributes['class']) ? 'first' : ($attributes['class'] . ' first');
+        $attributes['class'][] = array('first');
       }
       if ($i == $num_items - 1) {
-        $attributes['class'] = empty($attributes['class']) ? 'last' : ($attributes['class'] . ' last');
+        $attributes['class'][] = array('last');
       }
       $output .= '<li' . drupal_attributes($attributes) . '>' . $data . "</li>\n";
     }
@@ -1975,10 +1969,10 @@
   }
 
   $variables['date']      = format_date($node->created);
-  $variables['links']     = !empty($node->links) ? theme('links', $node->links, array('class' => 'links inline')) : '';
+  $variables['links']     = !empty($node->links) ? theme('links', $node->links, array('class' => array('links', 'inline'))) : '';
   $variables['name']      = theme('username', $node);
   $variables['node_url']  = url('node/' . $node->nid);
-  $variables['terms']     = theme('links', $variables['taxonomy'], array('class' => 'links inline'));
+  $variables['terms']     = theme('links', $variables['taxonomy'], array('class' => array('links', 'inline')));
   $variables['title']     = check_plain($node->title);
 
   // Flatten the node object's member fields.
Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.138
diff -u -r1.138 install.php
--- install.php	29 Oct 2008 10:08:51 -0000	1.138
+++ install.php	2 Nov 2008 09:12:58 -0000
@@ -1052,7 +1052,7 @@
     '#description' => st('Spaces are allowed; punctuation is not allowed except for periods, hyphens, and underscores.'),
     '#required' => TRUE,
     '#weight' => -10,
-    '#attributes' => array('class' => 'username'),
+    '#attributes' => array('class' => array('username')),
   );
 
   $form['admin_account']['account']['mail'] = array('#type' => 'textfield',
Index: modules/aggregator/aggregator.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.pages.inc,v
retrieving revision 1.22
diff -u -r1.22 aggregator.pages.inc
--- modules/aggregator/aggregator.pages.inc	20 Oct 2008 12:57:35 -0000	1.22
+++ modules/aggregator/aggregator.pages.inc	2 Nov 2008 09:12:58 -0000
@@ -244,7 +244,7 @@
       if (is_array($form['items'][$key])) {
         $rows[] = array(
           drupal_render($form['items'][$key]),
-          array('data' => drupal_render($form['categories'][$key]), 'class' => 'categorize-item'),
+          array('data' => drupal_render($form['categories'][$key]), 'class' => array('categorize-item')),
         );
       }
     }
Index: modules/block/block.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.admin.inc,v
retrieving revision 1.26
diff -u -r1.26 block.admin.inc
--- modules/block/block.admin.inc	29 Oct 2008 10:08:51 -0000	1.26
+++ modules/block/block.admin.inc	2 Nov 2008 09:12:58 -0000
@@ -381,8 +381,8 @@
       $region = $block['region']['#default_value'];
 
       // Set special classes needed for table drag and drop.
-      $variables['form'][$i]['region']['#attributes']['class'] = 'block-region-select block-region-' . $region;
-      $variables['form'][$i]['weight']['#attributes']['class'] = 'block-weight block-weight-' . $region;
+      $variables['form'][$i]['region']['#attributes']['class'] = array('block-region-select block-region-' . $region);
+      $variables['form'][$i]['weight']['#attributes']['class'] = array('block-weight block-weight-' . $region);
 
       $variables['block_listing'][$region][$i]->row_class = isset($block['#attributes']['class']) ? $block['#attributes']['class'] : '';
       $variables['block_listing'][$region][$i]->block_modified = isset($block['#attributes']['class']) && strpos($block['#attributes']['class'], 'block-modified') !== FALSE;
Index: modules/blog/blog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/blog/blog.module,v
retrieving revision 1.312
diff -u -r1.312 blog.module
--- modules/blog/blog.module	1 Nov 2008 18:23:12 -0000	1.312
+++ modules/blog/blog.module	2 Nov 2008 09:12:58 -0000
@@ -50,7 +50,7 @@
       '#type' => 'user_profile_item',
       '#title' => t('Blog'),
       '#markup' => l(t('View recent blog entries'), "blog/$user->uid", array('attributes' => array('title' => t("Read !username's latest blog entries.", array('!username' => $user->name))))),
-      '#attributes' => array('class' => 'blog'),
+      '#attributes' => array('class' => array('blog')),
     );
   }
 }
Index: modules/book/book.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.admin.inc,v
retrieving revision 1.15
diff -u -r1.15 book.admin.inc
--- modules/book/book.admin.inc	13 Oct 2008 00:33:01 -0000	1.15
+++ modules/book/book.admin.inc	2 Nov 2008 09:12:58 -0000
@@ -228,9 +228,9 @@
     $href = $form[$key]['href']['#value'];
 
     // Add special classes to be used with tabledrag.js.
-    $form[$key]['plid']['#attributes']['class'] = 'book-plid';
-    $form[$key]['mlid']['#attributes']['class'] = 'book-mlid';
-    $form[$key]['weight']['#attributes']['class'] = 'book-weight';
+    $form[$key]['plid']['#attributes']['class'] = array('book-plid');
+    $form[$key]['mlid']['#attributes']['class'] = array('book-mlid');
+    $form[$key]['weight']['#attributes']['class'] = array('book-weight');
 
     $data = array(
       theme('indentation', $form[$key]['depth']['#value'] - 2) . drupal_render($form[$key]['title']),
@@ -244,7 +244,7 @@
     if (isset($form[$key]['#attributes'])) {
       $row = array_merge($row, $form[$key]['#attributes']);
     }
-    $row['class'] = empty($row['class']) ? 'draggable' : $row['class'] . ' draggable';
+    $row['class'][] = array('draggable');
     $rows[] = $row;
   }
 
Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.473
diff -u -r1.473 book.module
--- modules/book/book.module	29 Oct 2008 10:08:51 -0000	1.473
+++ modules/book/book.module	2 Nov 2008 09:12:58 -0000
@@ -262,7 +262,7 @@
  * @ingroup themeable
  */
 function theme_book_title_link($link) {
-  $link['options']['attributes']['class'] =  'book-title';
+  $link['options']['attributes']['class'] =  array('book-title');
 
   return l($link['title'], $link['href'], $link['options']);
 }
@@ -374,7 +374,7 @@
       '#default_value' => $book_link['plid'],
       '#description' => t('The parent page in the book. The maximum depth for a book and all child pages is !maxdepth. Some pages in the selected book may not be available as parents if selecting them would exceed this limit.', array('!maxdepth' => MENU_MAX_DEPTH)),
       '#options' => book_toc($book_link['bid'], array($book_link['mlid']), $book_link['parent_depth_limit']),
-      '#attributes' => array('class' => 'book-title-select'),
+      '#attributes' => array('class' => array('book-title-select')),
     );
   }
 
@@ -396,7 +396,7 @@
     '#collapsible' => TRUE,
     '#collapsed' => TRUE,
     '#tree' => TRUE,
-    '#attributes' => array('class' => 'book-outline-form'),
+    '#attributes' => array('class' => array('book-outline-form')),
   );
   foreach (array('menu_name', 'mlid', 'nid', 'router_path', 'has_children', 'options', 'module', 'original_bid', 'parent_depth_limit') as $key) {
     $form['book'][$key] = array(
@@ -446,7 +446,7 @@
     '#access' => (bool)$options,
     '#description' => t('Your page will be a part of the selected book.'),
     '#weight' => -5,
-    '#attributes' => array('class' => 'book-title-select'),
+    '#attributes' => array('class' => array('book-title-select')),
     '#ahah' => array(
       'path' => 'book/js/form',
       'wrapper' => 'edit-book-plid-wrapper',
Index: modules/book/book.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.test,v
retrieving revision 1.3
diff -u -r1.3 book.test
--- modules/book/book.test	15 May 2008 21:19:24 -0000	1.3
+++ modules/book/book.test	2 Nov 2008 09:12:58 -0000
@@ -93,15 +93,15 @@
 
     // Check previous, up, and next links.
     if ($previous) {
-      $this->assertRaw(l('‹ ' . $previous->title, 'node/' . $previous->nid, array('attributes' => array('class' => 'page-previous', 'title' => t('Go to previous page')))), t('Prevoius page link found.'));
+      $this->assertRaw(l('‹ ' . $previous->title, 'node/' . $previous->nid, array('attributes' => array('class' => array('page-previous'), 'title' => t('Go to previous page')))), t('Prevoius page link found.'));
     }
 
     if ($up) {
-      $this->assertRaw(l('up', 'node/' . $up->nid, array('attributes' => array('class' => 'page-up', 'title' => t('Go to parent page')))), t('Up page link found.'));
+      $this->assertRaw(l('up', 'node/' . $up->nid, array('attributes' => array('class' => array('page-up'), 'title' => t('Go to parent page')))), t('Up page link found.'));
     }
 
     if ($next) {
-      $this->assertRaw(l($next->title . ' ›', 'node/' . $next->nid, array('attributes' => array('class' => 'page-next', 'title' => t('Go to next page')))), t('Next page link found.'));
+      $this->assertRaw(l($next->title . ' ›', 'node/' . $next->nid, array('attributes' => array('class' => array('page-next'), 'title' => t('Go to next page')))), t('Next page link found.'));
     }
 
     // Check printer friendly version.
Index: modules/color/color.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.module,v
retrieving revision 1.49
diff -u -r1.49 color.module
--- modules/color/color.module	26 Oct 2008 18:06:38 -0000	1.49
+++ modules/color/color.module	2 Nov 2008 09:12:58 -0000
@@ -57,7 +57,7 @@
     foreach (element_children($form) as $theme) {
       if ($screenshot = variable_get('color_' . $theme . '_screenshot', NULL)) {
         if (isset($form[$theme]['screenshot'])) {
-          $form[$theme]['screenshot']['#markup'] = theme('image', $screenshot, '', '', array('class' => 'screenshot'), FALSE);
+          $form[$theme]['screenshot']['#markup'] = theme('image', $screenshot, '', '', array('class' => array('screenshot')), FALSE);
         }
       }
     }
Index: modules/dblog/dblog.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.admin.inc,v
retrieving revision 1.8
diff -u -r1.8 dblog.admin.inc
--- modules/dblog/dblog.admin.inc	19 Jul 2008 07:44:45 -0000	1.8
+++ modules/dblog/dblog.admin.inc	2 Nov 2008 09:12:58 -0000
@@ -83,7 +83,7 @@
         $dblog->link,
       ),
       // Attributes for tr
-      'class' => "dblog-" . preg_replace('/[^a-z]/i', '-', $dblog->type) . ' ' . $classes[$dblog->severity]
+      'class' => array("dblog-" . preg_replace('/[^a-z]/i', '-', $dblog->type), $classes[$dblog->severity]),
     );
   }
 
@@ -171,7 +171,7 @@
         $dblog->link,
       ),
     );
-    $attributes = array('class' => 'dblog-event');
+    $attributes = array('class' => array('dblog-event'));
     $output = theme('table', array(), $rows, $attributes);
   }
   return $output;
Index: modules/filter/filter.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.admin.inc,v
retrieving revision 1.16
diff -u -r1.16 filter.admin.inc
--- modules/filter/filter.admin.inc	13 Oct 2008 00:33:02 -0000	1.16
+++ modules/filter/filter.admin.inc	2 Nov 2008 09:12:58 -0000
@@ -65,7 +65,7 @@
   $rows = array();
   foreach ($form as $id => $element) {
     if (isset($element['roles']) && is_array($element['roles'])) {
-      $element['weight']['#attributes']['class'] = 'input-format-order-weight';
+      $element['weight']['#attributes']['class'] = array('input-format-order-weight');
       $rows[] = array(
         'data' => array(
           check_plain($element['name']['#markup']),
@@ -75,7 +75,7 @@
           drupal_render($element['configure']),
           drupal_render($element['delete']),
         ),
-        'class' => 'draggable',
+        'class' => array('draggable'),
       );
       unset($form[$id]);
     }
@@ -380,10 +380,10 @@
   foreach (element_children($form['names']) as $id) {
     // Don't take form control structures.
     if (is_array($form['names'][$id])) {
-      $form['weights'][$id]['#attributes']['class'] = 'filter-order-weight';
+      $form['weights'][$id]['#attributes']['class'] = array('filter-order-weight');
       $rows[] = array(
         'data' => array(drupal_render($form['names'][$id]), drupal_render($form['weights'][$id])),
-        'class' => 'draggable',
+        'class' => array('draggable'),
       );
     }
   }
Index: modules/filter/filter.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v
retrieving revision 1.231
diff -u -r1.231 filter.module
--- modules/filter/filter.module	1 Nov 2008 19:51:06 -0000	1.231
+++ modules/filter/filter.module	2 Nov 2008 09:13:00 -0000
@@ -224,15 +224,15 @@
               if (array_key_exists($tag, $tips)) {
                 if ($tips[$tag]) {
                   $rows[] = array(
-                    array('data' => $tips[$tag][0], 'class' => 'description'),
-                    array('data' => '<code>' . check_plain($tips[$tag][1]) . '</code>', 'class' => 'type'),
-                    array('data' => $tips[$tag][1], 'class' => 'get')
+                    array('data' => $tips[$tag][0], 'class' => array('description')),
+                    array('data' => '<code>' . check_plain($tips[$tag][1]) . '</code>', 'class' => array('type')),
+                    array('data' => $tips[$tag][1], 'class' => array('get'))
                   );
                 }
               }
               else {
                 $rows[] = array(
-                  array('data' => t('No help provided for tag %tag.', array('%tag' => $tag)), 'class' => 'description', 'colspan' => 3),
+                  array('data' => t('No help provided for tag %tag.', array('%tag' => $tag)), 'class' => array('description'), 'colspan' => 3),
                 );
               }
             }
@@ -251,9 +251,9 @@
             unset($rows);
             foreach ($entities as $entity) {
               $rows[] = array(
-                array('data' => $entity[0], 'class' => 'description'),
-                array('data' => '<code>' . check_plain($entity[1]) . '</code>', 'class' => 'type'),
-                array('data' => $entity[1], 'class' => 'get')
+                array('data' => $entity[0], 'class' => array('description')),
+                array('data' => '<code>' . check_plain($entity[1]) . '</code>', 'class' => array('type')),
+                array('data' => $entity[1], 'class' => array('get'))
               );
             }
             $output .= theme('table', $header, $rows);
Index: modules/locale/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v
retrieving revision 1.230
diff -u -r1.230 locale.module
--- modules/locale/locale.module	22 Oct 2008 19:39:36 -0000	1.230
+++ modules/locale/locale.module	2 Nov 2008 09:13:00 -0000
@@ -596,7 +596,7 @@
         'href'       => $path,
         'title'      => $language->native,
         'language'   => $language,
-        'attributes' => array('class' => 'language-link'),
+        'attributes' => array('class' => array('language-link')),
       );
     }
 
Index: modules/menu/menu.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.admin.inc,v
retrieving revision 1.33
diff -u -r1.33 menu.admin.inc
--- modules/menu/menu.admin.inc	18 Sep 2008 10:44:19 -0000	1.33
+++ modules/menu/menu.admin.inc	2 Nov 2008 09:13:00 -0000
@@ -68,7 +68,7 @@
     if ($item && $item['hidden'] >= 0) {
       $mlid = 'mlid:' . $item['mlid'];
       $form[$mlid]['#item'] = $item;
-      $form[$mlid]['#attributes'] = $item['hidden'] ? array('class' => 'menu-disabled') : array('class' => 'menu-enabled');
+      $form[$mlid]['#attributes'] = array('class' => array(($item['hidden'] ? 'menu-disabled' : 'menu-enabled')));
       $form[$mlid]['title']['#markup'] = l($item['title'], $item['href'], $item['localized_options']) . ($item['hidden'] ? ' (' . t('disabled') . ')' : '');
       $form[$mlid]['hidden'] = array(
         '#type' => 'checkbox',
@@ -173,8 +173,8 @@
 
   $header = array(
     t('Menu item'),
-    array('data' => t('Enabled'), 'class' => 'checkbox'),
-    array('data' => t('Expanded'), 'class' => 'checkbox'),
+    array('data' => t('Enabled'), 'class' => array('checkbox')),
+    array('data' => t('Expanded'), 'class' => array('checkbox')),
     t('Weight'),
     array('data' => t('Operations'), 'colspan' => '3'),
   );
@@ -193,22 +193,22 @@
       }
 
       // Add special classes to be used for tabledrag.js.
-      $element['plid']['#attributes']['class'] = 'menu-plid';
-      $element['mlid']['#attributes']['class'] = 'menu-mlid';
-      $element['weight']['#attributes']['class'] = 'menu-weight';
+      $element['plid']['#attributes']['class'] = array('menu-plid');
+      $element['mlid']['#attributes']['class'] = array('menu-mlid');
+      $element['weight']['#attributes']['class'] = array('menu-weight');
 
       // Change the parent field to a hidden. This allows any value but hides the field.
       $element['plid']['#type'] = 'hidden';
 
       $row = array();
       $row[] = theme('indentation', $element['#item']['depth'] - 1) . drupal_render($element['title']);
-      $row[] = array('data' => drupal_render($element['hidden']), 'class' => 'checkbox');
-      $row[] = array('data' => drupal_render($element['expanded']), 'class' => 'checkbox');
+      $row[] = array('data' => drupal_render($element['hidden']), 'class' => array('checkbox'));
+      $row[] = array('data' => drupal_render($element['expanded']), 'class' => array('checkbox'));
       $row[] = drupal_render($element['weight']) . drupal_render($element['plid']) . drupal_render($element['mlid']);
       $row = array_merge($row, $operations);
 
       $row = array_merge(array('data' => $row), $element['#attributes']);
-      $row['class'] = !empty($row['class']) ? $row['class'] . ' draggable' : 'draggable';
+      $rpw['class'][] = array('draggable');
       $rows[] = $row;
     }
   }
@@ -231,7 +231,7 @@
     '#collapsible' => FALSE,
     '#tree' => TRUE,
     '#weight' => -2,
-    '#attributes' => array('class' => 'menu-item-form'),
+    '#attributes' => array('class' => array('menu-item-form')),
     '#item' => $item,
   );
   if ($type == 'add' || empty($item)) {
@@ -313,7 +313,7 @@
     '#default_value' => $default,
     '#options' => $options,
     '#description' => t('The maximum depth for an item and all its children is fixed at !maxdepth. Some menu items may not be available as parents if selecting them would exceed this limit.', array('!maxdepth' => MENU_MAX_DEPTH)),
-    '#attributes' => array('class' => 'menu-title-select'),
+    '#attributes' => array('class' => array('menu-title-select')),
   );
   $form['menu']['weight'] = array(
     '#type' => 'weight',
Index: modules/menu/menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v
retrieving revision 1.172
diff -u -r1.172 menu.module
--- modules/menu/menu.module	12 Oct 2008 04:30:06 -0000	1.172
+++ modules/menu/menu.module	2 Nov 2008 22:32:12 -0000
@@ -390,7 +394,7 @@
       '#collapsed' => FALSE,
       '#tree' => TRUE,
       '#weight' => -2,
-      '#attributes' => array('class' => 'menu-item-form'),
+      '#attributes' => array('class' => array('menu-item-form')),
     );
     $item = $form['#node']->menu;
 
@@ -428,7 +432,7 @@
       '#default_value' => $default,
       '#options' => $options,
       '#description' => t('The maximum depth for an item and all its children is fixed at !maxdepth. Some menu items may not be available as parents if selecting them would exceed this limit.', array('!maxdepth' => MENU_MAX_DEPTH)),
-      '#attributes' => array('class' => 'menu-title-select'),
+      '#attributes' => array('class' => array('menu-title-select')),
     );
     $form['#submit'][] = 'menu_node_form_submit';
 
Index: modules/node/content_types.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v
retrieving revision 1.58
diff -u -r1.58 content_types.inc
--- modules/node/content_types.inc	8 Oct 2008 03:27:56 -0000	1.58
+++ modules/node/content_types.inc	2 Nov 2008 09:13:00 -0000
@@ -39,7 +39,7 @@
   }
 
   if (empty($rows)) {
-    $rows[] = array(array('data' => t('No content types available.'), 'colspan' => '5', 'class' => 'message'));
+    $rows[] = array(array('data' => t('No content types available.'), 'colspan' => '5', 'class' => array('message')));
   }
 
   return theme('table', $header, $rows);
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.991
diff -u -r1.991 node.module
--- modules/node/node.module	1 Nov 2008 19:51:06 -0000	1.991
+++ modules/node/node.module	2 Nov 2008 09:13:00 -0000
@@ -1919,7 +1919,7 @@
       '#title' => t('Advanced search'),
       '#collapsible' => TRUE,
       '#collapsed' => TRUE,
-      '#attributes' => array('class' => 'search-advanced'),
+      '#attributes' => array('class' => array('search-advanced')),
     );
     $form['advanced']['keywords'] = array(
       '#prefix' => '<div class="criterion">',
Index: modules/node/node.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v
retrieving revision 1.45
diff -u -r1.45 node.pages.inc
--- modules/node/node.pages.inc	13 Oct 2008 00:33:03 -0000	1.45
+++ modules/node/node.pages.inc	2 Nov 2008 09:13:00 -0000
@@ -526,8 +526,8 @@
     if ($revision->current_vid > 0) {
       $row[] = array('data' => t('!date by !username', array('!date' => l(format_date($revision->timestamp, 'small'), "node/$node->nid"), '!username' => theme('username', $revision)))
                                . (($revision->log != '') ? '<p class="revision-log">' . filter_xss($revision->log) . '</p>' : ''),
-                     'class' => 'revision-current');
-      $operations[] = array('data' => theme('placeholder', t('current revision')), 'class' => 'revision-current', 'colspan' => 2);
+                     'class' => array('revision-current'));
+      $operations[] = array('data' => theme('placeholder', t('current revision')), 'class' => array('revision-current'), 'colspan' => 2);
     }
     else {
       $row[] = t('!date by !username', array('!date' => l(format_date($revision->timestamp, 'small'), "node/$node->nid/revisions/$revision->vid/view"), '!username' => theme('username', $revision)))
Index: modules/openid/openid.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.module,v
retrieving revision 1.32
diff -u -r1.32 openid.module
--- modules/openid/openid.module	26 Oct 2008 18:06:38 -0000	1.32
+++ modules/openid/openid.module	2 Nov 2008 09:13:00 -0000
@@ -87,11 +87,11 @@
     $items = array();
     $items[] = array(
       'data' => l(t('Log in using OpenID'), '#'),
-      'class' => 'openid-link',
+      'class' => array('openid-link'),
     );
     $items[] = array(
       'data' => l(t('Cancel OpenID login'), '#'),
-      'class' => 'user-link',
+      'class' => array('user-link'),
     );
 
     $form['openid_links'] = array(
Index: modules/path/path.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/path/path.admin.inc,v
retrieving revision 1.14
diff -u -r1.14 path.admin.inc
--- modules/path/path.admin.inc	13 Oct 2008 00:33:03 -0000	1.14
+++ modules/path/path.admin.inc	2 Nov 2008 09:13:00 -0000
@@ -188,7 +188,7 @@
  * @see path_admin_filter_form_submit()
  */
 function path_admin_filter_form(&$form_state, $keys = '') {
-  $form['#attributes'] = array('class' => 'search-form');
+  $form['#attributes'] = array('class' => array('search-form'));
   $form['basic'] = array('#type' => 'fieldset',
     '#title' => t('Filter aliases')
   );
Index: modules/poll/poll.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/poll/poll.module,v
retrieving revision 1.277
diff -u -r1.277 poll.module
--- modules/poll/poll.module	12 Oct 2008 04:30:07 -0000	1.277
+++ modules/poll/poll.module	2 Nov 2008 09:13:00 -0000
@@ -408,7 +408,7 @@
   // Render the new output.
   $choice_form = $form['choice_wrapper']['choice'];
   unset($choice_form['#prefix'], $choice_form['#suffix']); // Prevent duplicate wrappers.
-  $choice_form[$key]['#attributes']['class'] = empty($choice_form[$key]['#attributes']['class']) ? 'ahah-new-content' : $choice_form[$key]['#attributes']['class'] .' ahah-new-content';
+  $choice_form[$key]['#attributes']['class'][] = array('ahah-new-content');
   $choice_form[$key]['chvotes']['#value'] = 0;
   $output = theme('status_messages') . drupal_render($choice_form);
 
@@ -727,17 +727,17 @@
   foreach (element_children($form) as $key) {
     $delta++;
     // Set special classes for drag and drop updating.
-    $form[$key]['weight']['#attributes']['class'] = 'poll-weight';
+    $form[$key]['weight']['#attributes']['class'] = array('poll-weight');
 
     // Build the table row.
     $row = array(
       'data' => array(
-        array('class' => 'choice-flag'),
+        array('class' => array('choice-flag')),
         drupal_render($form[$key]['chtext']),
         drupal_render($form[$key]['chvotes']),
         drupal_render($form[$key]['weight']),
       ),
-      'class' => 'draggable',
+      'class' => array('draggable'),
     );
 
     // Add any additional classes set on the row.
Index: modules/profile/profile.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.admin.inc,v
retrieving revision 1.17
diff -u -r1.17 profile.admin.inc
--- modules/profile/profile.admin.inc	13 Oct 2008 00:33:04 -0000	1.17
+++ modules/profile/profile.admin.inc	2 Nov 2008 09:13:00 -0000
@@ -110,9 +110,9 @@
         // Category classes are given numeric IDs because there's no guarantee
         // class names won't contain invalid characters.
         $categories[$category] = $category_number;
-        $category_field['#attributes']['class'] = 'profile-category profile-category-' . $category_number;
-        $rows[] = array(array('data' => $category, 'colspan' => 7, 'class' => 'category'));
-        $rows[] = array('data' => array(array('data' => '<em>' . t('No fields in this category. If this category remains empty when saved, it will be removed.') . '</em>', 'colspan' => 7)), 'class' => 'category-' . $category_number . '-message category-message category-populated');
+        $category_field['#attributes']['class'] = array('profile-category profile-category-' . $category_number);
+        $rows[] = array(array('data' => $category, 'colspan' => 7, 'class' => array('category')));
+        $rows[] = array('data' => array(array('data' => '<em>' . t('No fields in this category. If this category remains empty when saved, it will be removed.') . '</em>', 'colspan' => 7)), 'class' => array('category-' . $category_number . '-message', 'category-message', 'category-populated'));
 
         // Make it dragable only if there is more than one field
         if (isset($form['submit'])) {
@@ -123,8 +123,8 @@
       }
 
       // Add special drag and drop classes that group fields together.
-      $field['weight']['#attributes']['class'] = 'profile-weight profile-weight-' . $categories[$category];
-      $field['category']['#attributes']['class'] = 'profile-category profile-category-' . $categories[$category];
+      $field['weight']['#attributes']['class'] = array('profile-weight profile-weight-' . $categories[$category]);
+      $field['category']['#attributes']['class'] = array('profile-category profile-category-' . $categories[$category]);
 
       // Add the row
       $row = array();
@@ -137,7 +137,7 @@
       }
       $row[] = drupal_render($field['edit']);
       $row[] = drupal_render($field['delete']);
-      $rows[] = array('data' => $row, 'class' => 'draggable');
+      $rows[] = array('data' => $row, 'class' => array('draggable'));
     }
   }
   if (empty($rows)) {
Index: modules/profile/profile.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.module,v
retrieving revision 1.246
diff -u -r1.246 profile.module
--- modules/profile/profile.module	12 Oct 2008 04:30:08 -0000	1.246
+++ modules/profile/profile.module	2 Nov 2008 09:13:00 -0000
@@ -355,7 +355,7 @@
         '#title' => $title,
         '#markup' => $value,
         '#weight' => $field->weight,
-        '#attributes' => array('class' => 'profile-' . $field->name),
+        '#attributes' => array('class' => array('profile-' . $field->name)),
       );
     }
   }
Index: modules/search/search.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.module,v
retrieving revision 1.271
diff -u -r1.271 search.module
--- modules/search/search.module	26 Oct 2008 18:06:38 -0000	1.271
+++ modules/search/search.module	2 Nov 2008 09:13:02 -0000
@@ -1042,7 +1042,7 @@
 
   $form = array(
     '#action' => $action,
-    '#attributes' => array('class' => 'search-form'),
+    '#attributes' => array('class' => array('search-form')),
   );
   $form['module'] = array('#type' => 'value', '#value' => $type);
   $form['basic'] = array('#type' => 'item', '#title' => $prompt);
Index: modules/simpletest/simpletest.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.module,v
retrieving revision 1.26
diff -u -r1.26 simpletest.module
--- modules/simpletest/simpletest.module	1 Nov 2008 21:21:35 -0000	1.26
+++ modules/simpletest/simpletest.module	2 Nov 2008 09:13:02 -0000
@@ -118,7 +118,7 @@
             $result->function,
             $map[$status],
           ),
-          'class' => "simpletest-$status",
+          'class' => array("simpletest-$status"),
         );
       }
       unset($element);
@@ -215,8 +215,8 @@
   // Create header for test selection table.
   $header = array(
     theme('table_select_header_cell'),
-    array('data' => t('Test'), 'class' => 'simpletest_test'),
-    array('data' => t('Description'), 'class' => 'simpletest_description'),
+    array('data' => t('Test'), 'class' => array('simpletest_test')),
+    array('data' => t('Description'), 'class' => array('simpletest_description')),
   );
 
   // Define the images used to expand/collapse the test groups.
@@ -243,7 +243,7 @@
     $image_index = $collapsed ? 0 : 1;
 
     // Place-holder for checkboxes to select group of tests.
-    $row[] = array('id' => $test_class, 'class' => 'simpletest-select-all');
+    $row[] = array('id' => $test_class, 'class' => array('simpletest-select-all'));
 
     // Expand/collapse image and group title.
     $row[] = array(
@@ -253,7 +253,7 @@
       );
 
       $row[] = isset($element['#description']) ? $element['#description'] : '&nbsp;';
-      $rows[] = array('data' => $row, 'class' => 'simpletest-group');
+      $rows[] = array('data' => $row, 'class' => array('simpletest-group'));
 
       // Add individual tests to group.
       $current_js = array(
@@ -281,7 +281,14 @@
         $row[] = drupal_render($test);
         $row[] = theme('indentation', 1) . '<label for="edit-' . $test_name . '">' . $title . '</label>';
         $row[] = '<div class="description">' . $description . '</div>';
-        $rows[] = array('data' => $row, 'class' => $test_class . '-test' . ($collapsed ? ' js-hide' : ''));
+        
+        // Add the row's classes, hiding if neessary.
+        $classes[] = $test_class . '-test';
+        if ($collapsed ) {
+          $classes[] = 'js-hide';
+        }
+        
+        $rows[] = array('data' => $row, 'class' => $classes);
       }
       $js['simpletest-test-group-'. $test_class] = $current_js;
       unset($table[$key]);
Index: modules/statistics/statistics.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/statistics/statistics.admin.inc,v
retrieving revision 1.14
diff -u -r1.14 statistics.admin.inc
--- modules/statistics/statistics.admin.inc	13 Oct 2008 00:33:04 -0000	1.14
+++ modules/statistics/statistics.admin.inc	2 Nov 2008 09:13:02 -0000
@@ -23,7 +23,7 @@
   $rows = array();
   while ($log = db_fetch_object($result)) {
     $rows[] = array(
-      array('data' => format_date($log->timestamp, 'small'), 'class' => 'nowrap'),
+      array('data' => format_date($log->timestamp, 'small'), 'class' => array('nowrap')),
       _statistics_format_item($log->title, $log->path),
       theme('username', $log),
       l(t('details'), "admin/reports/access/$log->aid"));
Index: modules/statistics/statistics.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/statistics/statistics.pages.inc,v
retrieving revision 1.6
diff -u -r1.6 statistics.pages.inc
--- modules/statistics/statistics.pages.inc	13 Oct 2008 00:33:04 -0000	1.6
+++ modules/statistics/statistics.pages.inc	2 Nov 2008 09:13:02 -0000
@@ -19,7 +19,7 @@
     $rows = array();
     while ($log = db_fetch_object($result)) {
       $rows[] = array(
-        array('data' => format_date($log->timestamp, 'small'), 'class' => 'nowrap'),
+        array('data' => format_date($log->timestamp, 'small'), 'class' => array('nowrap')),
         _statistics_link($log->url),
         theme('username', $log),
         l(t('details'), "admin/reports/access/$log->aid"));
@@ -51,7 +51,7 @@
     $rows = array();
     while ($log = db_fetch_object($result)) {
       $rows[] = array(
-        array('data' => format_date($log->timestamp, 'small'), 'class' => 'nowrap'),
+        array('data' => format_date($log->timestamp, 'small'), 'class' => array('nowrap')),
         _statistics_format_item($log->title, $log->path),
         l(t('details'), "admin/reports/access/$log->aid"));
     }
Index: modules/system/page.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/page.tpl.php,v
retrieving revision 1.13
diff -u -r1.13 page.tpl.php
--- modules/system/page.tpl.php	13 Oct 2008 12:31:43 -0000	1.13
+++ modules/system/page.tpl.php	2 Nov 2008 09:13:02 -0000
@@ -126,13 +126,13 @@
       <div id="navigation" class="menu <?php if (!empty($main_menu)) { print "withmain"; } if (!empty($secondary_menu)) { print " withsecondary"; } ?> ">
         <?php if (!empty($main_menu)): ?>
           <div id="main-menu" class="clear-block">
-            <?php print theme('links', $main_menu, array('class' => 'links main-menu')); ?>
+            <?php print theme('links', $main_menu, array('class' => array('links', 'main-menu'))); ?>
           </div>
         <?php endif; ?>
 
         <?php if (!empty($secondary_menu)): ?>
           <div id="secondary-menu" class="clear-block">
-            <?php print theme('links', $secondary_menu, array('class' => 'links secondary-menu')); ?>
+            <?php print theme('links', $secondary_menu, array('class' => array('links', 'secondary-menu'))); ?>
           </div>
         <?php endif; ?>
       </div> <!-- /navigation -->
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.102
diff -u -r1.102 system.admin.inc
--- modules/system/system.admin.inc	16 Oct 2008 20:23:08 -0000	1.102
+++ modules/system/system.admin.inc	2 Nov 2008 09:13:02 -0000
@@ -194,7 +194,7 @@
       }
       $theme_key = isset($themes[$theme_key]->info['base theme']) ? $themes[$theme_key]->info['base theme'] : NULL;
     }
-    $screenshot = $screenshot ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $theme->info['name'])), '', array('class' => 'screenshot'), FALSE) : t('no screenshot');
+    $screenshot = $screenshot ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $theme->info['name'])), '', array('class' => array('screenshot')), FALSE) : t('no screenshot');
 
     $form[$theme->name]['screenshot'] = array('#markup' => $screenshot);
     $form[$theme->name]['info'] = array(
@@ -434,7 +434,7 @@
       '#type' => 'fieldset',
       '#title' => t('Logo image settings'),
       '#description' => t('If toggled on, the following logo will be displayed.'),
-      '#attributes' => array('class' => 'theme-settings-bottom'),
+      '#attributes' => array('class' => array('theme-settings-bottom')),
     );
     $form['logo']["default_logo"] = array(
       '#type' => 'checkbox',
@@ -684,7 +684,7 @@
       '#collapsible' => TRUE,
       '#theme' => 'system_modules_fieldset',
       '#header' => array(
-        array('data' => t('Enabled'), 'class' => 'checkbox'),
+        array('data' => t('Enabled'), 'class' => array('checkbox')),
         t('Name'),
         t('Version'),
         t('Description'),
@@ -1599,7 +1599,7 @@
     '#suffix' => '</div>',
     '#type' => 'select',
     '#title' => t('Short date format'),
-    '#attributes' => array('class' => 'date-format'),
+    '#attributes' => array('class' => array('date-format')),
     '#default_value' => (isset($date_short_choices[$date_format_short]) ? $date_format_short : 'custom'),
     '#options' => $date_short_choices,
     '#description' => t('The short format of date display.'),
@@ -1611,7 +1611,7 @@
     '#suffix' => '</div></div>',
     '#type' => 'textfield',
     '#title' => t('Custom short date format'),
-    '#attributes' => array('class' => 'custom-format'),
+    '#attributes' => array('class' => array('custom-format')),
     '#default_value' => $default_short_custom,
     '#description' => t('A user-defined short date format. See the <a href="@url">PHP manual</a> for available options. This format is currently set to display as <span>%date</span>.', array('@url' => 'http://php.net/manual/function.date.php', '%date' => format_date(REQUEST_TIME, 'custom', $default_short_custom))),
   );
@@ -1622,7 +1622,7 @@
     '#suffix' => '</div>',
     '#type' => 'select',
     '#title' => t('Medium date format'),
-    '#attributes' => array('class' => 'date-format'),
+    '#attributes' => array('class' => array('date-format')),
     '#default_value' => (isset($date_medium_choices[$date_format_medium]) ? $date_format_medium : 'custom'),
     '#options' => $date_medium_choices,
     '#description' => t('The medium sized date display.'),
@@ -1634,7 +1634,7 @@
     '#suffix' => '</div></div>',
     '#type' => 'textfield',
     '#title' => t('Custom medium date format'),
-    '#attributes' => array('class' => 'custom-format'),
+    '#attributes' => array('class' => array('custom-format')),
     '#default_value' => $default_medium_custom,
     '#description' => t('A user-defined medium date format. See the <a href="@url">PHP manual</a> for available options. This format is currently set to display as <span>%date</span>.', array('@url' => 'http://php.net/manual/function.date.php', '%date' => format_date(REQUEST_TIME, 'custom', $default_medium_custom))),
   );
@@ -1645,7 +1645,7 @@
     '#suffix' => '</div>',
     '#type' => 'select',
     '#title' => t('Long date format'),
-    '#attributes' => array('class' => 'date-format'),
+    '#attributes' => array('class' => array('date-format')),
     '#default_value' => (isset($date_long_choices[$date_format_long]) ? $date_format_long : 'custom'),
     '#options' => $date_long_choices,
     '#description' => t('Longer date format used for detailed display.')
@@ -1657,7 +1657,7 @@
     '#suffix' => '</div></div>',
     '#type' => 'textfield',
     '#title' => t('Custom long date format'),
-    '#attributes' => array('class' => 'custom-format'),
+    '#attributes' => array('class' => array('custom-format')),
     '#default_value' => $default_long_custom,
     '#description' => t('A user-defined long date format. See the <a href="@url">PHP manual</a> for available options. This format is currently set to display as <span>%date</span>.', array('@url' => 'http://php.net/manual/function.date.php', '%date' => format_date(REQUEST_TIME, 'custom', $default_long_custom))),
   );
@@ -2081,7 +2081,7 @@
     $module = $form[$key];
     $row = array();
     unset($module['enable']['#title']);
-    $row[] = array('class' => 'checkbox', 'data' => drupal_render($module['enable']));
+    $row[] = array('class' => array('checkbox'), 'data' => drupal_render($module['enable']));
     $label = '<label';
     if (isset($module['enable']['#id'])) {
       $label .= ' for="' . $module['enable']['#id'] . '"';
@@ -2102,7 +2102,7 @@
     if ($module['#dependents']) {
      $description .= '<div class="admin-dependencies">' . t('Required by: ') . implode(', ', $module['#dependents']) . '</div>';
     }
-    $row[] = array('data' => $description, 'class' => 'description');
+    $row[] = array('data' => $description, 'class' => array('description'));
     $rows[] = $row;
   }
 
@@ -2149,13 +2149,13 @@
     $rows[] = array(
       array('data' => drupal_render($form['uninstall'][$module]), 'align' => 'center'),
       '<strong><label for="' . $form['uninstall'][$module]['#id'] . '">' . drupal_render($form['modules'][$module]['name']) . '</label></strong>',
-      array('data' => drupal_render($form['modules'][$module]['description']), 'class' => 'description'),
+      array('data' => drupal_render($form['modules'][$module]['description']), 'class' => array('description')),
     );
   }
 
   // Only display table if there are modules that can be uninstalled.
   if (empty($rows)) {
-    $rows[] = array(array('data' => t('No modules are available to uninstall.'), 'colspan' => '3', 'align' => 'center', 'class' => 'message'));
+    $rows[] = array(array('data' => t('No modules are available to uninstall.'), 'colspan' => '3', 'align' => 'center', 'class' => array('message')));
   }
 
   $output  = theme('table', $header, $rows);
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.635
diff -u -r1.635 system.module
--- modules/system/system.module	31 Oct 2008 02:18:22 -0000	1.635
+++ modules/system/system.module	2 Nov 2008 09:13:02 -0000
@@ -896,7 +896,7 @@
           $theme_key = isset($themes[$theme_key]->info['base theme']) ? $themes[$theme_key]->info['base theme'] : NULL;
         }
 
-        $screenshot = $screenshot ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => 'screenshot'), FALSE) : t('no screenshot');
+        $screenshot = $screenshot ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => array('screenshot')), FALSE) : t('no screenshot');
 
         $form['themes'][$info->key]['screenshot'] = array('#markup' => $screenshot);
         $form['themes'][$info->key]['description'] = array('#type' => 'item', '#title' => $info->name, '#markup' => dirname($info->filename) . ($info->name == variable_get('theme_default', 'garland') ? '<br /> <em>' . t('(site default theme)') . '</em>' : ''));
@@ -1339,7 +1339,7 @@
   // Confirm form fails duplication check, as the form values rarely change -- so skip it.
   $form['#skip_duplicate_check'] = TRUE;
 
-  $form['#attributes'] = array('class' => 'confirmation');
+  $form['#attributes'] = array('class' => array('confirmation'));
   $form['description'] = array('#markup' => $description);
   $form[$name] = array('#type' => 'hidden', '#value' => 1);
 
Index: modules/taxonomy/taxonomy.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.admin.inc,v
retrieving revision 1.32
diff -u -r1.32 taxonomy.admin.inc
--- modules/taxonomy/taxonomy.admin.inc	29 Oct 2008 10:08:52 -0000	1.32
+++ modules/taxonomy/taxonomy.admin.inc	2 Nov 2008 09:13:02 -0000
@@ -72,13 +72,13 @@
       $row[] = drupal_render($vocabulary['name']);
       $row[] = drupal_render($vocabulary['types']);
       if (isset($vocabulary['weight'])) {
-        $vocabulary['weight']['#attributes']['class'] = 'vocabulary-weight';
+        $vocabulary['weight']['#attributes']['class'] = array('vocabulary-weight');
         $row[] = drupal_render($vocabulary['weight']);
       }
       $row[] = drupal_render($vocabulary['edit']);
       $row[] = drupal_render($vocabulary['list']);
       $row[] = drupal_render($vocabulary['add']);
-      $rows[] = array('data' => $row, 'class' => 'draggable');
+      $rows[] = array('data' => $row, 'class' => array('draggable'));
     }
   }
   if (empty($rows)) {
@@ -553,9 +553,9 @@
       $row = array();
       $row[] = (isset($term['#term']['depth']) && $term['#term']['depth'] > 0 ? theme('indentation', $term['#term']['depth']) : '') . drupal_render($term['view']);
       if ($form['#parent_fields']) {
-        $term['tid']['#attributes']['class'] = 'term-id';
-        $term['parent']['#attributes']['class'] = 'term-parent';
-        $term['depth']['#attributes']['class'] = 'term-depth';
+        $term['tid']['#attributes']['class'] = array('term-id');
+        $term['parent']['#attributes']['class'] = array('term-parent');
+        $term['depth']['#attributes']['class'] = array('term-depth');
         $row[0] .= drupal_render($term['parent']) . drupal_render($term['tid']) . drupal_render($term['depth']);
       }
       $row[] = drupal_render($term['edit']);
@@ -593,7 +593,7 @@
         $classes[] = 'error';
       }
     }
-    $rows[$key]['class'] = implode(' ', $classes);
+    $rows[$key]['class'] = $classes;
     $row_position++;
   }
 
Index: modules/tracker/tracker.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/tracker/tracker.pages.inc,v
retrieving revision 1.12
diff -u -r1.12 tracker.pages.inc
--- modules/tracker/tracker.pages.inc	26 Oct 2008 18:06:39 -0000	1.12
+++ modules/tracker/tracker.pages.inc	2 Nov 2008 09:13:02 -0000
@@ -53,7 +53,7 @@
       check_plain(node_get_types('name', $node->type)),
       l($node->title, "node/$node->nid") . ' ' . theme('mark', node_mark($node->nid, $node->changed)),
       theme('username', $node),
-      array('class' => 'replies', 'data' => $comments),
+      array('class' => array('replies'), 'data' => $comments),
       t('!time ago', array('!time' => format_interval(REQUEST_TIME - $node->last_updated)))
     );
   }
Index: modules/translation/translation.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.module,v
retrieving revision 1.33
diff -u -r1.33 translation.module
--- modules/translation/translation.module	9 Oct 2008 18:32:47 -0000	1.33
+++ modules/translation/translation.module	2 Nov 2008 09:13:02 -0000
@@ -175,7 +175,7 @@
           'title' => $language->native,
           'href' => 'node/' . $translations[$langcode]->nid,
           'language' => $language,
-          'attributes' => array('title' => $translations[$langcode]->title, 'class' => 'translation-link')
+          'attributes' => array('title' => $translations[$langcode]->title, 'class' => array('translation-link'))
         );
       }
     }
Index: modules/update/update.compare.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.compare.inc,v
retrieving revision 1.13
diff -u -r1.13 update.compare.inc
--- modules/update/update.compare.inc	17 Sep 2008 07:11:59 -0000	1.13
+++ modules/update/update.compare.inc	2 Nov 2008 09:13:02 -0000
@@ -253,7 +253,7 @@
               $projects[$project]['extra'] = array();
             }
             $projects[$project]['extra'][] = array(
-              'class' => 'project-not-secure',
+              'class' => array('project-not-secure'),
               'label' => t('Project not secure'),
               'data' => t('This project has been labeled insecure by the Drupal security team, and is no longer available for download. Immediately disabling everything included by this project is strongly recommended!'),
             );
@@ -265,7 +265,7 @@
               $projects[$project]['extra'] = array();
             }
             $projects[$project]['extra'][] = array(
-              'class' => 'project-revoked',
+              'class' => array('project-revoked'),
               'label' => t('Project revoked'),
               'data' => t('This project has been revoked, and is no longer available for download. Disabling everything included by this project is strongly recommended!'),
             );
@@ -276,7 +276,7 @@
               $projects[$project]['extra'] = array();
             }
             $projects[$project]['extra'][] = array(
-              'class' => 'project-not-supported',
+              'class' => array('project-not-supported'),
               'label' => t('Project not supported'),
               'data' => t('This project is no longer supported, and is no longer available for download. Disabling everything included by this project is strongly recommended!'),
             );
@@ -360,7 +360,7 @@
               $projects[$project]['extra'] = array();
             }
             $projects[$project]['extra'][] = array(
-              'class' => 'release-revoked',
+              'class' => array('release-revoked'),
               'label' => t('Release revoked'),
               'data' => t('Your currently installed release has been revoked, and is no longer available for download. Disabling everything included in this release or upgrading is strongly recommended!'),
             );
@@ -372,7 +372,7 @@
               $projects[$project]['extra'] = array();
             }
             $projects[$project]['extra'][] = array(
-              'class' => 'release-not-supported',
+              'class' => array('release-not-supported'),
               'label' => t('Release not supported'),
               'data' => t('Your currently installed release is now unsupported, and is no longer available for download. Disabling everything included in this release or upgrading is strongly recommended!'),
             );
Index: modules/update/update.report.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.report.inc,v
retrieving revision 1.15
diff -u -r1.15 update.report.inc
--- modules/update/update.report.inc	17 Sep 2008 07:11:59 -0000	1.15
+++ modules/update/update.report.inc	2 Nov 2008 09:13:02 -0000
@@ -187,7 +187,7 @@
       $rows[$project['project_type']] = array();
     }
     $rows[$project['project_type']][] = array(
-      'class' => $class,
+      'class' => array($class),
       'data' => array($row),
     );
   }
@@ -202,7 +202,7 @@
   foreach ($project_types as $type_name => $type_label) {
     if (!empty($rows[$type_name])) {
       $output .= "\n<h3>" . $type_label . "</h3>\n";
-      $output .= theme('table', $header, $rows[$type_name], array('class' => 'update'));
+      $output .= theme('table', $header, $rows[$type_name], array('class' => array('update')));
     }
   }
   drupal_add_css(drupal_get_path('module', 'update') . '/update.css');
Index: modules/upload/upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload/upload.module,v
retrieving revision 1.213
diff -u -r1.213 upload.module
--- modules/upload/upload.module	12 Oct 2008 02:42:56 -0000	1.213
+++ modules/upload/upload.module	2 Nov 2008 09:13:02 -0000
@@ -566,7 +566,7 @@
 
   foreach (element_children($form) as $key) {
     // Add class to group weight fields for drag and drop.
-    $form[$key]['weight']['#attributes']['class'] = 'upload-weight';
+    $form[$key]['weight']['#attributes']['class'] = array('upload-weight');
 
     $row = array('');
     $row[] = drupal_render($form[$key]['remove']);
@@ -574,7 +574,7 @@
     $row[] = drupal_render($form[$key]['description']);
     $row[] = drupal_render($form[$key]['weight']);
     $row[] = drupal_render($form[$key]['size']);
-    $rows[] = array('data' => $row, 'class' => 'draggable');
+    $rows[] = array('data' => $row, 'class' => array('draggable'));
   }
   $output = theme('table', $header, $rows, array('id' => 'upload-attachments'));
   $output .= drupal_render($form);
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.30
diff -u -r1.30 user.admin.inc
--- modules/user/user.admin.inc	19 Oct 2008 21:19:02 -0000	1.30
+++ modules/user/user.admin.inc	2 Nov 2008 09:13:04 -0000
@@ -576,17 +576,17 @@
       $row = array();
       // Module name
       if (is_numeric($key)) {
-        $row[] = array('data' => t('@module module', array('@module' => drupal_render($form['permission'][$key]))), 'class' => 'module', 'id' => 'module-' . $form['permission'][$key]['#markup'], 'colspan' => count($form['role_names']) + 1);
+        $row[] = array('data' => t('@module module', array('@module' => drupal_render($form['permission'][$key]))), 'class' => array('module'), 'id' => 'module-' . $form['permission'][$key]['#markup'], 'colspan' => count($form['role_names']) + 1);
       }
       else {
         // Permission row.
         $row[] = array(
           'data' => drupal_render($form['permission'][$key]),
-          'class' => 'permission',
+          'class' => array('permission'),
         );
         foreach (element_children($form['checkboxes']) as $rid) {
           if (is_array($form['checkboxes'][$rid])) {
-            $row[] = array('data' => drupal_render($form['checkboxes'][$rid][$key]), 'class' => 'checkbox', 'title' => $roles[$rid] . ' : ' . t($key));
+            $row[] = array('data' => drupal_render($form['checkboxes'][$rid][$key]), 'class' => array('checkbox'), 'title' => $roles[$rid] . ' : ' . t($key));
           }
         }
       }
@@ -596,7 +596,7 @@
   $header[] = (t('Permission'));
   foreach (element_children($form['role_names']) as $rid) {
     if (is_array($form['role_names'][$rid])) {
-      $header[] = array('data' => drupal_render($form['role_names'][$rid]), 'class' => 'checkbox');
+      $header[] = array('data' => drupal_render($form['role_names'][$rid]), 'class' => array('checkbox'));
     }
   }
   $output = theme('system_compact_link');
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.930
diff -u -r1.930 user.module
--- modules/user/user.module	26 Oct 2008 18:06:39 -0000	1.930
+++ modules/user/user.module	2 Nov 2008 09:13:04 -0000
@@ -657,7 +657,7 @@
   }
   $account->content['summary'] += array(
     '#type' => 'user_profile_category',
-    '#attributes' => array('class' => 'user-member'),
+    '#attributes' => array('class' => array('user-member')),
     '#weight' => 5,
     '#title' => t('History'),
   );
@@ -1451,7 +1451,7 @@
       '#maxlength' => USERNAME_MAX_LENGTH,
       '#description' => t('Spaces are allowed; punctuation is not allowed except for periods, hyphens, apostrophes, and underscores.'),
       '#required' => TRUE,
-      '#attributes' => array('class' => 'username'),
+      '#attributes' => array('class' => array('username')),
     );
   }
   $form['account']['mail'] = array('#type' => 'textfield',
Index: themes/bluemarine/page.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/bluemarine/page.tpl.php,v
retrieving revision 1.30
diff -u -r1.30 page.tpl.php
--- themes/bluemarine/page.tpl.php	25 Jun 2008 09:12:25 -0000	1.30
+++ themes/bluemarine/page.tpl.php	2 Nov 2008 09:13:04 -0000
@@ -19,8 +19,8 @@
     <?php if ($site_slogan) { ?><div class='site-slogan'><?php print $site_slogan ?></div><?php } ?>
 
     <div id="menu">
-      <?php if (isset($secondary_menu)) { ?><?php print theme('links', $secondary_menu, array('class' => 'links', 'id' => 'subnavlist')); ?><?php } ?>
-      <?php if (isset($main_menu)) { ?><?php print theme('links', $main_menu, array('class' => 'links', 'id' => 'navlist')) ?><?php } ?>
+      <?php if (isset($secondary_menu)) { ?><?php print theme('links', $secondary_menu, array('class' => array('links'), 'id' => 'subnavlist')); ?><?php } ?>
+      <?php if (isset($main_menu)) { ?><?php print theme('links', $main_menu, array('class' => array('links'), 'id' => 'navlist')) ?><?php } ?>
     </div>
 
     <div id="header-region"><?php print $header ?></div>
Index: themes/garland/template.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/template.php,v
retrieving revision 1.19
diff -u -r1.19 template.php
--- themes/garland/template.php	25 Jun 2008 09:12:25 -0000	1.19
+++ themes/garland/template.php	2 Nov 2008 09:13:04 -0000
@@ -31,8 +31,8 @@
  */
 function garland_preprocess_page(&$vars) {
   $vars['tabs2'] = menu_secondary_local_tasks();
-  $vars['primary_nav'] = isset($vars['main_menu']) ? theme('links', $vars['main_menu'], array('class' => 'links main-menu')) : FALSE;
-  $vars['secondary_nav'] = isset($vars['secondary_menu']) ? theme('links', $vars['secondary_menu'], array('class' => 'links secondary-menu')) : FALSE;
+  $vars['primary_nav'] = isset($vars['main_menu']) ? theme('links', $vars['main_menu'], array('class' => array('links', 'main-menu'))) : FALSE;
+  $vars['secondary_nav'] = isset($vars['secondary_menu']) ? theme('links', $vars['secondary_menu'], array('class' => array('links', 'secondary-menu'))) : FALSE;
   $vars['ie_styles'] = garland_get_ie_styles();
 
   // Prepare header
Index: themes/pushbutton/page.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/pushbutton/page.tpl.php,v
retrieving revision 1.27
diff -u -r1.27 page.tpl.php
--- themes/pushbutton/page.tpl.php	28 Sep 2008 23:26:27 -0000	1.27
+++ themes/pushbutton/page.tpl.php	2 Nov 2008 09:13:04 -0000
@@ -31,7 +31,7 @@
       <?php endif;?>
     </td>
     <td class="main-menu" width="70%" align="center" valign="middle">
-      <?php print theme('links', $main_menu, array('class' => 'links', 'id' => 'navlist')) ?>
+      <?php print theme('links', $main_menu, array('class' => array('links'), 'id' => 'navlist')) ?>
     </td>
   </tr>
 </table>
@@ -39,7 +39,7 @@
 <table id="secondary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%">
   <tr>
     <td class="secondary-menu" width="75%"  align="center" valign="middle">
-      <?php print theme('links', $secondary_menu, array('class' => 'links', 'id' => 'subnavlist')) ?>
+      <?php print theme('links', $secondary_menu, array('class' => array('links'), 'id' => 'subnavlist')) ?>
     </td>
     <td width="25%" align="center" valign="middle">
       <?php print $search_box ?>
@@ -101,10 +101,10 @@
   <tr>
     <td align="center" valign="middle">
     <?php if (isset($main_menu)) : ?>
-      <?php print theme('links', $main_menu, array('class' => 'links main-menu')) ?>
+      <?php print theme('links', $main_menu, array('class' => array('links', 'main-menu'))) ?>
     <?php endif; ?>
     <?php if (isset($secondary_menu)) : ?>
-      <?php print theme('links', $secondary_menu, array('class' => 'links secondary-menu')) ?>
+      <?php print theme('links', $secondary_menu, array('class' => array('links', 'secondary-menu'))) ?>
     <?php endif; ?>
     </td>
   </tr>

