? cck2_update.diff
Index: emfield.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/emfield/emfield.module,v
retrieving revision 1.12.4.9
diff -u -r1.12.4.9 emfield.module
--- emfield.module	30 May 2008 14:20:06 -0000	1.12.4.9
+++ emfield.module	15 Jun 2008 09:08:53 -0000
@@ -93,13 +93,13 @@
 function emfield_field_columns($field) {
   $columns = array(
     // poorly named. but this contains the original URL or embed code pre-parsing, as entered by the user/editor.
-    'embed' => array('type' => 'text', 'size' => 'big', 'not null' => TRUE, 'unsigned' => TRUE, 'not null' => FALSE, 'sortable' => TRUE),
+    'embed' => array('type' => 'text', 'size' => 'big', 'not null' => TRUE, 'not null' => FALSE, 'sortable' => TRUE),
     // this contains the code used by the provider to identify the media
-    'value' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'unsigned' => TRUE, 'not null' => FALSE, 'sortable' => TRUE),
+    'value' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'not null' => FALSE, 'sortable' => TRUE),
     // this is the actual provider used; matches up with the specific provider.inc file
-    'provider' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'unsigned' => TRUE, 'not null' => FALSE, 'sortable' => TRUE),
+    'provider' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'not null' => FALSE, 'sortable' => TRUE),
     // an array for any extra data required by this media, such as unique thumbnail requirements or rss feed data
-    'data' => array('type' => 'text', 'size' => 'big', 'not null' => TRUE, 'unsigned' => TRUE, 'not null' => FALSE, 'sortable' => FALSE),
+    'data' => array('type' => 'text', 'size' => 'big', 'not null' => TRUE, 'not null' => FALSE, 'sortable' => FALSE),
   );
   // allow other modules to add new columns
   // TODO: couldn't we just use module_invoke_all here? also make sure those modules do their magic on enable/disable
@@ -363,144 +363,61 @@
   }
 }
 
-function emfield_emfield_widget($op, &$node, $field, &$node_field, $module) {
-//  $module = $field['widget']['helper_module'];
-  switch ($op) {
-    case 'prepare form values':
-      // Don't save empty fields except the first value
-      foreach ($node_field as $delta => $item) {
-        if ($item['value'] == '' && $delta > 0) {
-          unset($node_field[$delta]);
-        }
-      }//print 'nodefield:' ; print_r($node_field);
-      foreach (module_implements('emfield_widget_extra') as $module) {
-        $args = array($op, &$node, $field, &$node_field, $module);
-        call_user_func_array($module .'_emfield_widget_extra', $args);
+function emfield_emfield_widget(&$form, &$form_state, $field, $items, $delta = 0, $module) { //($op, &$node, $field, &$node_field, $module) {
+  $tree = array('#tree' => TRUE);
+  $textfield = 'embed';
+  $providers = emfield_allowed_providers($field, $module);
+  $urls = array();
+  $additional_form_elements = array();
+  foreach ($providers as $provider) {
+    // don't check providers not allowed
+    if (variable_get('emfield_allow_'. $module .'_'. $provider->name, TRUE)) {
+      $info = emfield_include_invoke($module, $provider->name, 'info');
+      $urls[] = l($info['name'], $info['url'], array('target' => '_blank'));
+      $additional_element = emfield_include_invoke($module, $provider->name, 'form');
+      if ($additional_element) {
+        $additional_form_elements[$provider->name] = $additional_element;
       }
-      break;
-    case 'form':
-      $form = array();
+    }
+  }
+  $textfield_title = t($field['widget']['label']);
+  if (!(empty($field['widget']['description']))) {
+    $textfield_description = $field['widget']['description'];
+  }
+  else {
+    $textfield_description = t('Enter the URL or Embed Code here. The embedded third party content will be parsed and displayed appropriately from this.');
+  }
+  $textfield_description .= '<br />'. t('The following services are provided: !urls', array('!urls' => implode(', ', $urls)));
+  $value = isset($items[$delta][$textfield]) ? $items[$delta][$textfield] : '';
+  $tree[$textfield] = array(
+    '#type' => 'textfield',
+    '#title' => $textfield_title, //t($field['widget']['label']),
+    '#description' => $textfield_description,
+    '#default_value' => $value,
+    '#required' => $field['required'],
+    '#maxlength' => 2048,
+  );
 
-      $form[$field['field_name']] = array('#tree' => TRUE);
-      $textfield = 'embed';
-      $providers = emfield_allowed_providers($field, $module);
-      $urls = array();
-      $additional_form_elements = array();
-      foreach ($providers as $provider) {
-        // don't check providers not allowed
-        if (variable_get('emfield_allow_'. $module .'_'. $provider->name, TRUE)) {
-          $info = emfield_include_invoke($module, $provider->name, 'info');
-          $urls[] = l($info['name'], $info['url'], array('target' => '_blank'));
-          $additional_element = emfield_include_invoke($module, $provider->name, 'form');
-          if ($additional_element) {
-            $additional_form_elements[$provider->name] = $additional_element;
-          }
-        }
-      }
-      $textfield_title = t($field['widget']['label']);
-      if (!(empty($field['widget']['description']))) {
-        $textfield_description = $field['widget']['description'];
-      }
-      else {
-        $textfield_description = t('Enter the URL or Embed Code here. The embedded third party content will be parsed and displayed appropriately from this.');
-      }
-      $textfield_description .= '<br />'. t('The following services are provided: !urls', array('!urls' => implode(', ', $urls)));
-
-      if ($field['multiple']) {
-        $form[$field['field_name']]['#type'] = 'fieldset';
-        $form[$field['field_name']]['#title'] = t($field['widget']['label']);
-        $delta = 0;
-        foreach ($node_field as $data) {
-          if (isset($data[$textfield])) {
-            $form[$field['field_name']][$delta][$textfield] = array(
-              '#type' => 'textfield',
-              '#title' => $textfield_title,
-              '#description' => $textfield_description,
-              '#default_value' => $data[$textfield],
-              '#required' => ($delta == 0) ? $field['required'] : FALSE,
-              '#maxlength' => 2048,
-            );
-            if (!empty($additional_form_elements)) {
-              foreach ($additional_form_elements as $key => $element) {
-                $form[$field['field_name']][$delta][$key] = $element;
-              }
-            }
-            $form[$field['field_name']][$delta]['value'] = array(
-              '#type' => 'value',
-              '#value' => $data['value'],
-            );
-            if ($data['value']) {
-              $info = emfield_include_invoke($module, $data['provider'], 'info');
-              $form[$field['field_name']][$delta]['value_markup'] = array(
-                '#type' => 'item',
-                '#value' => t('(@provider ID: !value)', array('@provider' => $info['name'], '!value' => l($data['value'], emfield_include_invoke($module, $info['provider'], 'embedded_link', $data['value'], $data['data']), array('target' => '_blank')))),
-              );
-            }
-            foreach (module_implements('emfield_widget_extra') as $module) {
-              $form[$field['field_name']][$delta][$module] = module_invoke($module, 'emfield_widget_extra', 'form', $node, $field, $data);
-            }
-            $delta++;
-          }
-        }
-        foreach (range($delta, $delta + 2) as $delta) {
-           $form[$field['field_name']][$delta][$textfield] = array(
-            '#type' => 'textfield',
-            '#title' => $textfield_title,
-            '#description' => $textfield_description,
-            '#default_value' => '',
-            '#required' => ($delta == 0) ? $field['required'] : FALSE,
-            '#maxlength' => 2048,
-          );
-          if (!empty($additional_form_elements)) {
-            foreach ($additional_form_elements as $key => $element) {
-              $form[$field['field_name']][$delta][$key] = $element;
-            }
-          }
-          $form[$field['field_name']][$delta]['value'] = array(
-            '#type' => 'value',
-            '#title' => '',
-          );
-          foreach (module_implements('emfield_widget_extra') as $module) {
-            $form[$field['field_name']][$delta][$module] = module_invoke($module, 'emfield_widget_extra', 'form', $node, $field, $data);
-          }
-        }
-      }
-      else {
-        $form[$field['field_name']][0][$textfield] = array(
-          '#type' => 'textfield',
-          '#title' => $textfield_title, //t($field['widget']['label']),
-          '#description' => $textfield_description,
-          '#default_value' => isset($node_field[0][$textfield]) ? $node_field[0][$textfield] : '',
-          '#required' => $field['required'],
-          '#maxlength' => 2048,
-        );
-        if ($textfield == 'embed') {
-          $value = isset($node_field[0]['value']) ? $node_field[0]['value'] : '';
-          $form[$field['field_name']][0]['value'] = array(
-            '#type' => 'value',
-            '#value' => $value,
-          );
-          if (!empty($additional_form_elements)) {
-            foreach ($additional_form_elements as $key => $element) {
-              $form[$field['field_name']][0][$key] = $element;
-            }
-          }
-          if ($value) {
-            $info = emfield_include_invoke($module, $node_field[0]['provider'], 'info');
-            $form[$field['field_name']][0]['value_markup'] = array(
-              '#type' => 'item',
-              '#value' => t('(@provider ID: !value)', array('@provider' => $info['provider'], '!value' => l($value, emfield_include_invoke($module, $info['provider'], 'embedded_link', $value, $node_field[0]['data']), array('target' => '_blank')))),
-            );
-          }
-          foreach (module_implements('emfield_widget_extra') as $module) {
-            $form[$field['field_name']][$delta][$module] = module_invoke($module, 'emfield_widget_extra', 'form', $node, $field, $node_field[0]);
-          }
-        }
-      }
-      return $form;
-    default:
-      break;
+  $tree['value'] = array(
+    '#type' => 'value',
+    '#value' => $value,
+  );
+  if (!empty($additional_form_elements)) {
+    foreach ($additional_form_elements as $key => $element) {
+      $tree[$key] = $element;
+    }
+  }
+  if ($value) {
+    $info = emfield_include_invoke($module, $items[$delta]['provider'], 'info');
+    $tree['value_markup'] = array(
+      '#type' => 'item',
+      '#value' => t('(@provider ID: !value)', array('@provider' => $info['provider'], '!value' => l($value, emfield_include_invoke($module, $info['provider'], 'embedded_link', $value, $items[$delta]['data']), array('target' => '_blank')))),
+    );
+  }
+  foreach (module_implements('emfield_widget_extra') as $module_extra) {
+    $tree[$module_extra] = module_invoke($module_extra, 'emfield_widget_extra', 'form', $form, $field, $items[$delta]);
   }
+  return $tree;
 }
 
 /**
Index: contrib/emaudio/emaudio.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/emfield/contrib/emaudio/emaudio.module,v
retrieving revision 1.1.4.10
diff -u -r1.1.4.10 emaudio.module
--- contrib/emaudio/emaudio.module	4 Jun 2008 12:08:03 -0000	1.1.4.10
+++ contrib/emaudio/emaudio.module	15 Jun 2008 09:08:53 -0000
@@ -279,7 +279,7 @@
       break;
 
     case 'save':
-      if ($widget['widget']['type'] == 'emaudio_textfields') {
+      if ($widget['widget_type'] == 'emaudio_textfields') {
         $columns = array('audio_width', 'audio_height', 'audio_autoplay', 'preview_width', 'preview_height', 'preview_autoplay', 'thumbnail_width', 'thumbnail_height', 'thumbnail_default_path', );
         $columns = array_merge($columns, module_invoke('emfield', 'emfield_widget_settings', 'save', $widget, 'emaudio'));
         return $columns;
@@ -290,9 +290,9 @@
 
 /** Implementation of hook_widget **/
 
-function emaudio_widget($op, &$node, $field, &$node_field) {
+function emaudio_widget(&$form, &$form_state, $field, $items, $delta = 0) {
   if (module_hook('emfield', 'emfield_widget')) {
-    return emfield_emfield_widget($op, $node, $field, $node_field, 'emaudio');
+    return emfield_emfield_widget($form, $form_state, $field, $items, $delta, 'emaudio');
   }
 }
 
Index: contrib/image_ncck/image_ncck.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/emfield/contrib/image_ncck/image_ncck.module,v
retrieving revision 1.4.4.9
diff -u -r1.4.4.9 image_ncck.module
--- contrib/image_ncck/image_ncck.module	30 May 2008 14:34:50 -0000	1.4.4.9
+++ contrib/image_ncck/image_ncck.module	15 Jun 2008 09:08:53 -0000
@@ -286,18 +286,19 @@
       break;
 
     case 'save':
-      if ($widget['widget']['type'] == 'image_ncck_textfields') {
+      if ($widget['widget_type'] == 'image_ncck_textfields') {
         $columns = array('full_width', 'full_height', 'full_link', 'preview_width', 'preview_height', 'preview_link', 'thumbnail_width', 'thumbnail_height', 'thumbnail_link', );
         $columns = array_merge($columns, module_invoke('emfield', 'emfield_widget_settings', 'save', $widget, 'image_ncck'));
+
         return $columns;
       }
       break;
   }
 }
 
-function image_ncck_widget($op, &$node, $field, &$node_field) {
+function image_ncck_widget(&$form, &$form_state, $field, $items, $delta = 0) {
   if (module_hook('emfield', 'emfield_widget')) {
-    return emfield_emfield_widget($op, $node, $field, $node_field, 'image_ncck');
+    return emfield_emfield_widget($form, $form_state, $field, $items, $delta, 'image_ncck');
   }
 }
 
Index: contrib/video_cck/video_cck.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/emfield/contrib/video_cck/video_cck.module,v
retrieving revision 1.5.4.11
diff -u -r1.5.4.11 video_cck.module
--- contrib/video_cck/video_cck.module	4 Jun 2008 12:08:04 -0000	1.5.4.11
+++ contrib/video_cck/video_cck.module	15 Jun 2008 09:08:53 -0000
@@ -281,7 +281,7 @@
       break;
 
     case 'save':
-      if ($widget['widget']['type'] == 'video_cck_textfields') {
+      if ($widget['widget_type'] == 'video_cck_textfields') {
         $columns = array('video_width', 'video_height', 'video_autoplay', 'preview_width', 'preview_height', 'preview_autoplay', 'thumbnail_width', 'thumbnail_height', 'thumbnail_default_path', );
         $columns = array_merge($columns, module_invoke('emfield', 'emfield_widget_settings', 'save', $widget, 'video_cck'));
         return $columns;
@@ -292,9 +292,9 @@
 
 /** Implementation of hook_widget **/
 
-function video_cck_widget($op, &$node, $field, &$node_field) {
+function video_cck_widget(&$form, &$form_state, $field, $items, $delta = 0) {
   if (module_hook('emfield', 'emfield_widget')) {
-    return emfield_emfield_widget($op, $node, $field, $node_field, 'video_cck');
+    return emfield_emfield_widget($form, $form_state, $field, $items, $delta, 'video_cck');
   }
 }
 
