Index: media.admin.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/media/media.admin.inc,v
retrieving revision 1.20
diff -u -p -r1.20 media.admin.inc
--- media.admin.inc	7 Sep 2010 16:37:35 -0000	1.20
+++ media.admin.inc	13 Sep 2010 21:39:44 -0000
@@ -18,6 +18,10 @@ require_once dirname(__FILE__) . '/media
 function media_admin($form, $form_state) {
   global $user;
 
+  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']), 'admin/content/media', 'admin/content/media');
+  }
+
   require_once dirname(__FILE__) . '/media.browser.inc';
   media_include_browser_js();
   
@@ -56,10 +60,6 @@ function media_admin($form, $form_state)
   // 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',
Index: media.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/media/media.module,v
retrieving revision 1.47
diff -u -p -r1.47 media.module
--- media.module	19 Aug 2010 21:45:13 -0000	1.47
+++ media.module	13 Sep 2010 21:39:44 -0000
@@ -527,6 +527,7 @@ function media_load($fid) {
   if ($files = entity_load('media', array($fid))) {
     return array_shift($files);
   }
+  return FALSE;
 }
 
 /**
Index: media.pages.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/media/media.pages.inc,v
retrieving revision 1.25
diff -u -p -r1.25 media.pages.inc
--- media.pages.inc	5 Sep 2010 21:44:55 -0000	1.25
+++ media.pages.inc	13 Sep 2010 21:39:44 -0000
@@ -77,27 +77,42 @@ function media_page_multiedit($media_ite
  * 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 @@ function media_multiple_delete_confirm($
                                   '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 @@ function media_multiple_delete_confirm_s
         drupal_set_message($message);
       }
     }
+    if (isset($form_state['values']['redirect_on_success'])) {
+      $form_state['redirect'] = $form_state['values']['redirect_on_success'];
+    }
   }
 }
 
