Index: filefield.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/filefield/filefield.module,v retrieving revision 1.164 diff -u -r1.164 filefield.module --- filefield.module 6 Feb 2009 10:56:30 -0000 1.164 +++ filefield.module 28 Feb 2009 22:07:20 -0000 @@ -504,16 +504,34 @@ $field_form[$delta]['#prefix'] = '
'; $field_form[$delta]['#suffix'] = '
'; - $output = theme('status_messages') . drupal_render($field_form[$delta]); + $output = drupal_render($field_form[$delta]); // AHAH is not being nice to us and doesn't know the "other" button (that is, // either "Upload" or "Delete") yet. Which in turn causes it not to attach // AHAH behaviours after replacing the element. So we need to tell it first. + + // Loop through the JS settings and find the settings needed for our buttons. $javascript = drupal_add_js(NULL, NULL); + $filefield_ahah_settings = array(); if (isset($javascript['setting'])) { - $output .= ''; + foreach ($javascript['setting'] as $settings) { + if (isset($settings['ahah'])) { + foreach ($settings['ahah'] as $id => $ahah_settings) { + if (strpos($id, 'filefield-upload') || strpos($id, 'filefield-remove')) { + $filefield_ahah_settings[$id] = $ahah_settings; + } + } + } + } } + // Add the AHAH settings needed for our new buttons. + if (!empty($filefield_ahah_settings)) { + $output .= ''; + } + + $output = theme('status_messages') . $output; + // For some reason, file uploads don't like drupal_json() with its manual // setting of the text/javascript HTTP header. So use this one instead. $GLOBALS['devel_shutdown'] = false; Index: filefield_widget.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/filefield/filefield_widget.inc,v retrieving revision 1.53 diff -u -r1.53 filefield_widget.inc --- filefield_widget.inc 27 Feb 2009 18:20:56 -0000 1.53 +++ filefield_widget.inc 28 Feb 2009 22:07:20 -0000 @@ -187,7 +187,7 @@ $field = content_fields($element['#field_name'], $element['#type_name']); // check remove buttons... - $remove_name = $element['#field_name'] .'_'. $element['#delta'] .'_remove_btn'; + $remove_name = $element['#field_name'] .'_'. $element['#delta'] .'_filefield_remove'; if (isset($form_state['clicked_button']) && $form_state['clicked_button']['#name'] == $remove_name) { $item = array('fid' => 0, 'list' => $field['list_default'], 'data' => array('description' => '')); } @@ -253,7 +253,7 @@ $element['#attributes']['class'] = (isset($element['#attributes']['class']) ? $element['#attributes']['class'] : '') .' filefield-ahah-wrapper'; $element['#prefix'] = '
'; $element['#suffix'] = '
'; - $element['upload_btn'] = array( + $element['filefield_upload'] = array( '#type' => 'submit', '#value' => t('Upload'), '#process' => array('form_expand_ahah'), @@ -270,11 +270,11 @@ '#upload_validators' => $element['#upload_validators'], ); if ($item['fid'] != 0) { - $element['remove_btn'] = array( - '#name' => $element['#field_name'] .'_'. $element['#delta'] .'_remove_btn', + $element['filefield_remove'] = array( + '#name' => $element['#field_name'] .'_'. $element['#delta'] .'filefield_remove', '#type' => 'submit', '#value' => t('Remove'), - '#process' => array('filefield_widget_process_remove_btn', 'form_expand_ahah'), + '#process' => array('filefield_widget_process_remove', 'form_expand_ahah'), '#submit' => array('node_form_submit_build_node'), '#ahah' => array( // with JavaScript 'path' => 'filefield/ahah/'. $element['#type_name'] .'/'. $element['#field_name'] .'/'. $element['#delta'],