Index: CHANGELOG.txt
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/input_formats/CHANGELOG.txt,v
retrieving revision 1.7
diff -u -p -r1.7 CHANGELOG.txt
--- CHANGELOG.txt	15 Jun 2010 18:33:21 -0000	1.7
+++ CHANGELOG.txt	16 Jun 2010 14:53:51 -0000
@@ -3,6 +3,7 @@
 Input Formats 6.x-1.0-dev
 --------------------------
 
+- #824200: Display revert instead of delete in the UI when input formats are loaded from code.
 - #828034: Roles are not corrected assigned to input formats.
 - #828140: Wysiwyg features are marked as overridden when they are not.
 
Index: input_formats.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/input_formats/input_formats.admin.inc,v
retrieving revision 1.1
diff -u -p -r1.1 input_formats.admin.inc
--- input_formats.admin.inc	5 Jun 2010 01:42:10 -0000	1.1
+++ input_formats.admin.inc	16 Jun 2010 14:53:51 -0000
@@ -99,3 +99,43 @@ function input_formats_admin_import_subm
   }
   input_formats_api_save($input_format);
 }
+
+/**
+ * Menu callback; confirm revert of an input format.
+ */
+function input_formats_admin_revert() {
+  $format = arg(4);
+  $format = db_fetch_object(db_query('SELECT * FROM {filter_formats} WHERE format = %d', $format));
+
+  if ($format) {
+    if ($format->format != variable_get('filter_default_format', 1)) {
+      $form['format'] = array('#type' => 'hidden', '#value' => $format->format);
+      $form['name'] = array('#type' => 'hidden', '#value' => $format->name);
+
+      return confirm_form($form, t('Are you sure you want to revert the input format %format?', array('%format' => $format->name)), 'admin/settings/filters', t('All the settings for this Input Format will be deleted and restored from code.'), t('Revert'), t('Cancel'));
+    }
+    else {
+      drupal_set_message(t('The default format cannot be reverted.'));
+      drupal_goto('admin/settings/filters');
+    }
+  }
+  else {
+    drupal_not_found();
+  }
+}
+
+/**
+ * Process filter delete form submission.
+ */
+function input_formats_admin_revert_submit($form, &$form_state) {
+  $format = $form_state['values']['format'];
+  $machine_name = input_formats_api_get_machine_name($format);
+  $input_format = input_formats_api_load_from_code($machine_name);
+
+  input_formats_api_revert($input_format);
+
+  drupal_set_message(t('Reverted settings for Input format %format.', array('%format' => $form_state['values']['name'])));
+
+  $form_state['redirect'] = 'admin/settings/filters';
+  return;
+}
Index: input_formats.api.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/input_formats/input_formats.api.inc,v
retrieving revision 1.4
diff -u -p -r1.4 input_formats.api.inc
--- input_formats.api.inc	15 Jun 2010 18:33:21 -0000	1.4
+++ input_formats.api.inc	16 Jun 2010 14:53:52 -0000
@@ -229,14 +229,33 @@ function input_formats_api_check_human_n
 /**
  * Load a definition of an input format from hooks_input_formats_default().
  */
-function input_formats_api_load_from_code($input_format) {
+function input_formats_api_load_from_code($machine_name) {
   $default_input_formats = module_invoke_all('input_formats_default');
-  if (isset($default_input_formats[$input_format['machine_name']])) {
-    return $default_input_formats[$input_format['machine_name']];
+  if (isset($default_input_formats[$machine_name])) {
+    return $default_input_formats[$machine_name];
   }
 }
 
 /**
+ * List of input formats provided by code.
+ *
+ * @return
+ *   An array of input formats machine names that are provided by
+ *   default hooks.
+ */
+function input_formats_api_from_code() {
+  $default_input_formats = module_invoke_all('input_formats_default');
+  $from_code = array();
+  if (is_array($default_input_formats)) {
+    foreach ($default_input_formats as $machine_name => $input_format) {
+      $id = input_formats_api_get_id($machine_name);
+      $from_code[$id] = $machine_name;
+    }
+  }
+  return $from_code;
+}
+
+/**
  * Ever time a new filter is saved, a new input format is created with a
  * machine name.
  */
@@ -323,14 +342,17 @@ function input_formats_api_save($input_f
  * Remove settings for an input format and revert they from code.
  *
  * @param $input_format
- *   An array that represents an input format
+ *   An array that represents the default input format code.
  */
 function input_formats_api_revert($input_format) {
   if (!input_formats_api_check_integrity($input_format)) {
     drupal_set_message(t('The input format is corrupted and cannot be reverted'), 'error');
     return;
   }
-  $input_format['id'] = $format = input_formats_api_get_id($input_format['machine_name']);
+  if (!isset($input_format['id'])) {
+    $input_format['id'] = input_formats_api_get_id($input_format['machine_name']);
+  }
+  $format = $input_format['id'];
 
   db_query("DELETE FROM {filters} WHERE format = %d", $input_format['id']);
   foreach ($input_format['order'] as $module => $data) {
@@ -372,8 +394,6 @@ function input_formats_api_revert($input
 
   cache_clear_all($format .':', 'cache_filter', TRUE);
 
-  drupal_set_message(t('A new Input format was created. Its recomended to !link its configuration settings.', array('!link' => l(t('check'), 'admin/settings/filters/' . $format))));
-
   // Inform to other modules that a new input format was enabled
   module_invoke_all('input_format_enabled', $input_format);
 }
@@ -583,7 +603,7 @@ function input_formats_api_user_roles() 
  *   A keyed array containing the user roles
  *
  * @return
- *   NULL if the role is not in the list. The role id for this user 
+ *   NULL if the role is not in the list. The role id for this user
  *   name if the role was found.
  */
 function _input_formats_api_match_role($role_name, $user_roles) {
Index: input_formats.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/input_formats/input_formats.module,v
retrieving revision 1.5
diff -u -p -r1.5 input_formats.module
--- input_formats.module	15 Jun 2010 16:06:06 -0000	1.5
+++ input_formats.module	16 Jun 2010 14:53:53 -0000
@@ -27,6 +27,14 @@ function input_formats_menu() {
     'weight' => 10,
     'file' => 'input_formats.admin.inc',
   );
+  $items['admin/settings/filters/revert'] = array(
+    'title' => 'Revert Input Format',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('input_formats_admin_revert'),
+    'access arguments' => array('administer filters'),
+    'type' => MENU_CALLBACK,
+    'file' => 'input_formats.admin.inc',
+  );
   return $items;
 }
 
@@ -59,10 +67,16 @@ function input_formats_perm() {
 function input_formats_form_filter_admin_overview_alter(&$form, $form_state) {
   input_formats_api_syncronize();
   $formats = filter_formats();
+  $from_code = input_formats_api_from_code();
   foreach ($formats as $id => $format) {
     $form[$format->name]['export'] = array(
       '#value' => l(t('export'), 'admin/settings/filters/'. $id . '/export')
     );
+    if (isset($from_code[$id])) {
+      $form[$format->name]['delete'] = array(
+        '#value' => l(t('revert'), 'admin/settings/filters/revert/'. $id)
+      );
+    }
   }
   $form['#theme'] = 'input_formats_filter_admin_overview';
 }
