diff --git a/includes/admin.inc b/includes/admin.inc
old mode 100644
new mode 100755
index 1f247bd..f2edfc2
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -2781,6 +2781,9 @@ function views_ui_ajax_forms($key = NULL) {
     ),
   );
 
+  // Allow other modules to add their own forms or modify existing ones.
+  drupal_alter('views_ui_ajax_forms', $forms);
+
   if ($key) {
     return !empty($forms[$key]) ? $forms[$key] : NULL;
   }
diff --git a/views.api.php b/views.api.php
index ba9b326..9aad94b 100644
--- a/views.api.php
+++ b/views.api.php
@@ -1067,6 +1067,45 @@ function hook_views_ui_display_top_links_alter(&$links, $view, $display_id) {
 }
 
 /**
+ * This hooks allows you to alter the ajax form definitions for the sub-forms
+ * that handle the editing of the different pieces of a view, for example
+ * adding or editing fields or filters.
+ *
+ * Other modules may want to change existing form callbacks or add their own
+ * new forms.
+ *
+ * @param array $forms
+ *   An array of forms where the keys are keys, that are passed in via the url
+ *   and are used to identify the forms, and the values are arrays of
+ *   information defining the form, including the form id and the arguments.
+ *
+ * @see views_ui_ajax_forms()
+ */
+function hook_views_ui_ajax_forms_alter(&$forms) {
+  // Add a new custom form for categorizing fields, filters, etc. attached to
+  // the view. You would then implement the form function
+  // mymodule_views_categorize_fields_form($form, &$form_state) and $form_state
+  // would contain $form_state['type'] and $form_state['id'].
+  // The urls that would call this form would be (both nojs and ajax versions):
+  // admin/structure/views/nojs/categorise-item/<view_name>/<display_name>/<type>/<id>
+  // admin/structure/views/ajax/categorise-item/<view_name>/<display_name>/<type>/<id>
+  $forms['categorise-item'] = array(
+    'add-item' => array(
+      'form_id' => 'mymodule_views_categorize_fields_form',
+      'args' => array('type', 'id'),
+    ),
+  );
+
+  // Modify the add-item form callback.
+  // You would then implement the form function
+  // mymodule_add_item_form_custom(), which would override the existing
+  // views_ui_add_item_form().
+  // Note that you would likely use hook_form_alter() in this case instead of
+  // doing this, this is just an example.
+  $forms['add-item']['form_id'] = 'mymodule_add_item_form_custom';
+}
+
+/**
  * This hook allows to alter the commands which are used on a views ajax
  * request.
  *
