Index: media.admin.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/media/media.admin.inc,v
retrieving revision 1.19
diff -u -p -r1.19 media.admin.inc
--- media.admin.inc	19 Aug 2010 21:45:13 -0000	1.19
+++ media.admin.inc	24 Aug 2010 19:25:40 -0000
@@ -54,7 +54,7 @@ function media_admin($form, $form_state)
   );
 
   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']));
+    return media_multiple_delete_confirm($form, $form_state, array_filter($form_state['values']['files']), 'admin/content/media', 'admin/content/media');
   }
 
   // Build the 'Media operations' form.
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	24 Aug 2010 19:25:40 -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.23
diff -u -p -r1.23 media.pages.inc
--- media.pages.inc	14 Aug 2010 01:50:30 -0000	1.23
+++ media.pages.inc	24 Aug 2010 19:25:40 -0000
@@ -77,27 +77,39 @@ 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);
+  // Don't bother showing the form if the item is in use, since we won't allow
+  // them to delete it anyway.
+  $references = file_usage_list($media);
+  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_success = NULL, $redirect_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_success)) {
+    $form['redirect_success'] = array(
+      '#type' => 'value',
+      '#value' => $redirect_success,
+    );
+  }
   $form['#submit'][] = 'media_multiple_delete_confirm_submit';
 
   $confirm_question = format_plural(count($files),
@@ -105,9 +117,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_cancel) ? $redirect_cancel : current_path(),
+    t('This action cannot be undone.'),
+    t('Delete'),
+    t('Cancel'));
 }
 
 /**
@@ -136,6 +150,9 @@ function media_multiple_delete_confirm_s
         drupal_set_message($message);
       }
     }
+    if (isset($form_state['values']['redirect_success'])) {
+      $form_state['redirect'] = $form_state['values']['redirect_success'];
+    }
   }
 }
 
