? .cvsignore
? browser
? media-popup.patch
? images/icons/tango
? images/icons/tango-icon-theme-0.8.90.tar.gz
Index: media.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/media/media.admin.inc,v
retrieving revision 1.20
diff -u -r1.20 media.admin.inc
--- media.admin.inc	7 Sep 2010 16:37:35 -0000	1.20
+++ media.admin.inc	14 Sep 2010 17:29:33 -0000
@@ -17,6 +17,18 @@
  */
 function media_admin($form, $form_state) {
   global $user;
+  
+  $path = drupal_get_path('module', 'media');
+
+  $form['#attached'] = array(
+    'js' => array($path . '/javascript/media-admin.js'),
+    'css' => array($path . '/css/media.css'),
+  );
+
+  if (isset($form_state['values']['operation']) && $form_state['values']['operation'] == 'delete') {
+    $form['#attributes']['class'][] = "media-list-operation";
+    return media_multiple_delete_confirm($form, $form_state, array_filter($form_state['values']['files']), 'admin/content/media', 'admin/content/media');
+  }
 
   require_once dirname(__FILE__) . '/media.browser.inc';
   media_include_browser_js();
@@ -46,20 +58,9 @@
     }
   }
 
-  $path = drupal_get_path('module', 'media');
-
-  $form['#attached'] = array(
-    'js' => array($path . '/javascript/media-admin.js'),
-    'css' => array($path . '/css/media.css'),
-  );
-
   // Build the display switch.
   $form['switch'] = media_admin_display_switch(array('active display' => $display));
 
-  if (isset($form_state['values']['operation']) && $form_state['values']['operation'] == 'delete') {
-    return media_multiple_delete_confirm($form, $form_state, array_filter($form_state['values']['files']));
-  }
-
   // Build the 'Media operations' form.
   $form['options'] = array(
     '#type' => 'fieldset',
@@ -256,7 +257,7 @@
     call_user_func_array($function, $args);
     cache_clear_all();
   }
-  elseif ($operation['redirect']) {
+  elseif (!empty($operation['redirect'])) {
     $fids = implode(' ', array_keys(array_filter($form_state['values']['files'])));
     $form_state['redirect'] = array(str_replace('%fids', $fids, $operation['redirect']), array('query' => array('destination' => 'admin/content/media')));
   }
Index: media.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/media/media.module,v
retrieving revision 1.47
diff -u -r1.47 media.module
--- media.module	19 Aug 2010 21:45:13 -0000	1.47
+++ media.module	14 Sep 2010 17:29:33 -0000
@@ -527,6 +527,7 @@
   if ($files = entity_load('media', array($fid))) {
     return array_shift($files);
   }
+  return FALSE;
 }
 
 /**
Index: media.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/media/media.pages.inc,v
retrieving revision 1.25
diff -u -r1.25 media.pages.inc
--- media.pages.inc	5 Sep 2010 21:44:55 -0000	1.25
+++ media.pages.inc	14 Sep 2010 17:29:34 -0000
@@ -77,27 +77,42 @@
  * Menu callback; shows delete confirmation form.
  */
 function media_page_delete($media) {
-  $files = array($media->fid => $media);
-  return drupal_get_form('media_multiple_delete_confirm', $files);
+  drupal_set_title(t('<em>Delete @type</em> @title', array('@type' => $media->type, '@title' => $media->filename)), PASS_THROUGH);
+  // Don't bother showing the form if the item is in use, since we won't allow
+  // them to delete it anyway. Note that file_usage_list() requires a stdClass,
+  // so we can't pass the $media object in directly.
+  $file = file_load($media->fid);
+  $references = file_usage_list($file);
+  if (!empty($references)) {
+    return t('The file %title is in use and cannot be deleted.', array('%title' => $media->filename));
+  }
+  else {
+    $files = array($media->fid => $media);
+    return drupal_get_form('media_multiple_delete_confirm', $files, '<front>', 'media/' . $media->fid);
+  }
 }
 
-
 /**
  * Confirm the request to delete files.
  */
-function media_multiple_delete_confirm($form, &$form_state, $files) {
-  $form['files'] = array('#prefix' => '<ul>', '#suffix' => '</ul>', '#tree' => TRUE);
-  // array_filter returns only elements with TRUE values
+function media_multiple_delete_confirm($form, &$form_state, $files, $redirect_on_success = NULL, $redirect_on_cancel = NULL) {
+  $form['files'] = array('#tree' => TRUE);
+  $form['file_titles'] = array('#theme' => 'item_list');
   foreach ($files as $fid => $value) {
     $title = db_query('SELECT filename FROM {file_managed} WHERE fid = :fid', array(':fid' => $fid))->fetchField();
     $form['files'][$fid] = array(
-      '#type' => 'hidden',
+      '#type' => 'value',
       '#value' => $fid,
-      '#prefix' => '<li>',
-      '#suffix' => check_plain($title) . "</li>\n",
     );
+    $form['file_titles']['#items'][] = check_plain($title);
   }
   $form['operation'] = array('#type' => 'hidden', '#value' => 'delete');
+  if (isset($redirect_on_success)) {
+    $form['redirect_on_success'] = array(
+      '#type' => 'value',
+      '#value' => $redirect_on_success,
+    );
+  }
   $form['#submit'][] = 'media_multiple_delete_confirm_submit';
 
   $confirm_question = format_plural(count($files),
@@ -105,9 +120,11 @@
                                   'Are you sure you want to delete these items?');
 
   return confirm_form($form,
-                    $confirm_question,
-                    $_GET['q'], t('This action cannot be undone.'),
-                    t('Delete'), t('Cancel'));
+    $confirm_question,
+    isset($redirect_on_cancel) ? $redirect_on_cancel : current_path(),
+    t('This action cannot be undone.'),
+    t('Delete'),
+    t('Cancel'));
 }
 
 /**
@@ -136,6 +153,9 @@
         drupal_set_message($message);
       }
     }
+    if (isset($form_state['values']['redirect_on_success'])) {
+      $form_state['redirect'] = $form_state['values']['redirect_on_success'];
+    }
   }
 }
 
Index: javascript/media-admin.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/media/javascript/media-admin.js,v
retrieving revision 1.15
diff -u -r1.15 media-admin.js
--- javascript/media-admin.js	14 Sep 2010 15:09:13 -0000	1.15
+++ javascript/media-admin.js	14 Sep 2010 17:29:34 -0000
@@ -18,7 +18,9 @@
 
     // Configure the "Add file" link to fire the media browser popup.
     $('ul.action-links li', context).remove();
-
+    if ($('form.media-list-operation', context).length != 0) {
+      return;  
+    }
     var $launcherLink = $('<a class="media-launcher" href="#"></a>').html('Add file');
     $launcherLink.bind('click', function () {
       // This option format needs *serious* work.
