From 82b4c70ee34b6eaf552f290365e1691ff46e1e12 Mon Sep 17 00:00:00 2001
From: Richard Burford <rich@freestylesystems.co.uk>
Date: Thu, 5 Jul 2012 18:24:54 +0100
Subject: [PATCH] Issue #1672248 by psynaptic: Changed classes from strings to
 arrays.

---
 edit.module        |   47 +++++++++++++++++++++++++++++++++++------------
 includes/theme.inc |   11 ++++-------
 2 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/edit.module b/edit.module
index 76ff3db..8f96baa 100644
--- a/edit.module
+++ b/edit.module
@@ -34,12 +34,12 @@ function edit_menu() {
 function edit_theme() {
   return array(
     'edit_spanned_field' => array(
-      'file'      => 'includes/theme.inc',
+      'file' => 'includes/theme.inc',
       'variables' => array(
-        'value'   => NULL,
+        'value' => NULL,
         'edit_id' => NULL,
-        'label'   => NULL,
-        'classes' => NULL,
+        'label' => NULL,
+        'attributes' => array(),
       ),
     ),
   );
@@ -183,7 +183,12 @@ function edit_preprocess_page(&$variables) {
     if ($node_type->has_title) {
       $id = $variables['node']->nid;
       $attributes = array(
-        'class' => 'edit-pseudofield edit-field edit-allowed edit-type-direct',
+        'class' => array(
+          'edit-pseudofield',
+          'edit-field',
+          'edit-allowed',
+          'edit-type-direct',
+        ),
         'data-edit-field-label' => $node_type->title_label,
         'data-edit-id'          => "node:$id:title",
       );
@@ -213,12 +218,16 @@ function edit_preprocess_node(&$variables) {
     $variables['attributes_array'] += $data_attributes;
 
     // Mark this entity as editable.
-    $variables['classes_array'][] = 'edit-entity edit-allowed';
+    $variables['classes_array'][] = 'edit-entity';
+    $variables['classes_array'][] = 'edit-allowed';
 
     // Pseudofield: title.
     $node_type = node_type_get_type($bundle);
     if ($node_type->has_title) {
-      $variables['title_attributes_array']['class'] = 'edit-pseudofield edit-field edit-allowed edit-type-direct';
+      $variables['title_attributes_array']['class'][] = 'edit-pseudofield';
+      $variables['title_attributes_array']['class'][] = 'edit-field';
+      $variables['title_attributes_array']['class'][] = 'edit-allowed';
+      $variables['title_attributes_array']['class'][] = 'edit-type-direct';
       $variables['title_attributes_array']['data-edit-field-label'] = $node_type->title_label;
       $variables['title_attributes_array']['data-edit-id'] = "node:$id:title";
     }
@@ -233,22 +242,34 @@ function edit_preprocess_node(&$variables) {
 }
 
 function edit_node_wrap_name($name, $node_id) {
-  $classes = 'edit-pseudofield edit-field edit-allowed edit-type-form';
   return theme('edit_spanned_field', array(
     'value' => $name,
     'label' => t('Author'),
     'edit_id' => "node:$node_id:author",
-    'classes' => $classes,
+    'attributes' => array(
+      'class' => array(
+        'edit-pseudofield',
+        'edit-field',
+        'edit-allowed',
+        'edit-type-form',
+      ),
+    ),
   ));
 }
 
 function edit_node_wrap_date($date, $node_id) {
-  $classes = 'edit-pseudofield edit-field edit-allowed edit-type-form';
   return theme('edit_spanned_field', array(
     'value' => $date,
     'label' => t('Authoring date'),
     'edit_id' => "node:$node_id:created",
-    'classes' => $classes,
+    'attributes' => array(
+      'class' => array(
+        'edit-pseudofield',
+        'edit-field',
+        'edit-allowed',
+        'edit-type-form',
+      ),
+    ),
   ));
 }
 
@@ -307,6 +328,8 @@ function edit_preprocess_field(&$variables) {
     $variables['attributes_array'] += $data_attributes;
 
     // Mark this field as editable.
-    $variables['classes_array'][] = "edit-field edit-allowed edit-type-$edit_ability";
+    $variables['classes_array'][] = 'edit-field';
+    $variables['classes_array'][] = 'edit-allowed';
+    $variables['classes_array'][] = 'edit-type-' . $edit_ability;
   }
 }
diff --git a/includes/theme.inc b/includes/theme.inc
index 404d094..005edb7 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -14,15 +14,12 @@
  * Format a Field wrapped in a span with metadata for the Edit module.
  */
 function theme_edit_spanned_field($variables) {
-  $output = '';
+  $variables['attributes']['data-edit-id'] = $variables['edit_id'];
+  $variables['attributes']['data-edit-field-label'] = $variables['label'];
 
-  $output .= '<span class="' . $variables['classes'] . '"';
-  $output .= ' data-edit-id="' . $variables['edit_id'] . '"';
-  $output .= ' data-edit-field-label="' . $variables['label'] . '">';
-  $output .= $variables['value']; // The field value.
-  $output .= '</span>';
+  $attributes = drupal_attributes($variables['attributes']);
 
-  return $output;
+  return '<span' . $attributes . '>' .  $variables['value'] . '</span>';
 }
 
 /**
-- 
1.7.9.1
