? audio_cck.patch
? fix_metatdata_submit_2.patch
Index: audio.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/audio/audio.admin.inc,v
retrieving revision 1.1
diff -u -p -r1.1 audio.admin.inc
--- audio.admin.inc	25 May 2008 23:10:50 -0000	1.1
+++ audio.admin.inc	10 May 2009 19:01:57 -0000
@@ -58,7 +58,7 @@ function audio_admin_settings_metadata()
   $settings = audio_get_tag_settings();
   $form['audio_tag_settings'] = array(
     '#tree' => TRUE,
-    '#theme' => 'audio_admin_settings_metadata',
+    '#theme' => 'audio_admin_settings_metadata_table',
   );
   foreach ($settings as $tag => $setting) {
     $form['audio_tag_settings'][$tag]['name'] = array(
@@ -123,10 +123,17 @@ function audio_admin_settings_metadata()
   );
   $form['audio_tag_settings']['new']['weight'] = array(
     '#type' => 'weight',
-    '#default_value' => 0,
+    '#default_value' => 10,
+  );
+  $form['audio_tag_settings']['new']['delete'] = array(
+    '#type' => 'value',
+    '#value' => FALSE,
   );
 
-  return system_settings_form($form);
+  $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration') );
+  $form['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset to defaults') );
+
+  return $form;
 }
 
 /**
@@ -134,8 +141,7 @@ function audio_admin_settings_metadata()
  * form callback because it wouldn't call theme_audio_settings().
  */
 function audio_admin_settings_metadata_submit($form, $form_state) {
-  // TODO: check $form_state rather than $_POST.
-  $op = isset($_POST['op']) ? $_POST['op'] : '';
+  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
 
   if ($op == t('Reset to defaults')) {
     variable_del('audio_tag_settings');
@@ -143,9 +149,9 @@ function audio_admin_settings_metadata_s
   }
   else {
     // Remove any deleted tags.
-    foreach ($form_state['values']['delete'] as $field) {
-      if ($field) {
-        unset($form_state['values']['audio_tag_settings'][$field]);
+    foreach ($form_state['values']['audio_tag_settings'] as $name => $field) {
+      if ($form_state['values']['audio_tag_settings'][$name]['delete']) {
+        unset($form_state['values']['audio_tag_settings'][$name]);
       }
     }
     // If there's a new tag, add it in.
@@ -177,26 +183,33 @@ function audio_admin_settings_metadata_s
 /**
  * Format the id3tags settings form as a table.
  */
-function theme_audio_admin_settings_metadata($form_element) {
+function theme_audio_admin_settings_metadata_table($form_element) {
   $rows = array();
   foreach (element_children($form_element) as $key) {
-    $row = array();
-    if (is_array($form_element[$key]['name'])) {
-      $row[] = drupal_render($form_element[$key]['name']);
-      $row[] = drupal_render($form_element[$key]['autocomplete']);
-      $row[] = drupal_render($form_element[$key]['required']);
-      $row[] = drupal_render($form_element[$key]['hidden']);
-      $row[] = drupal_render($form_element[$key]['browsable']);
-      $row[] = drupal_render($form_element[$key]['writetofile']);
-      $row[] = drupal_render($form_element[$key]['weight']);
-      $row[] = drupal_render($form_element[$key]['delete']);
-    }
-    $rows[] = $row;
+    $form_element[$key]['weight']['#attributes']['class'] = 'metadata-tag-weight';
+
+    $rows[] = array(
+      'data' => array(
+        drupal_render($form_element[$key]['name']),
+        drupal_render($form_element[$key]['autocomplete']),
+        drupal_render($form_element[$key]['required']),
+        drupal_render($form_element[$key]['hidden']),
+        drupal_render($form_element[$key]['browsable']),
+        drupal_render($form_element[$key]['writetofile']),
+        drupal_render($form_element[$key]['weight']),
+        drupal_render($form_element[$key]['delete']),
+      ),
+      'class' => 'draggable',
+    );
   }
   $header = array(t('Tag'), t('Autocompleted'), t('Required'), t('Hidden'), t('Browsable'),
     t('Written to file'), t('Weight'), t('Delete'));
 
-  $output = theme('table', $header, $rows);
+  $output = '';
+  if (count($rows)) {
+    drupal_add_tabledrag('audio-settings-metadata', 'order', 'sibling', 'metadata-tag-weight');
+    $output .= theme('table', $header, $rows, array('id' => 'audio-settings-metadata'));
+  }
   $output .= drupal_render($form_element);
   return $output;
 }
Index: audio.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/audio/audio.module,v
retrieving revision 1.153
diff -u -p -r1.153 audio.module
--- audio.module	10 May 2009 18:26:07 -0000	1.153
+++ audio.module	10 May 2009 19:01:58 -0000
@@ -138,7 +138,7 @@ function audio_theme() {
     'audio_file_form' => array(
       'arguments' => array('form'),
     ),
-    'audio_admin_settings_metadata' => array(
+    'audio_admin_settings_metadata_table' => array(
       'arguments' => array('form_element'),
       'file' => 'audio.admin.inc',
     ),
