Index: modules/capitalise/capitalise.module
===================================================================
RCS file: modules/capitalise/capitalise.module
diff -N modules/capitalise/capitalise.module
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/capitalise/capitalise.module	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,51 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Demo module that capitalises all selected term names.
+ */
+
+/**
+ * Implementation of hook_form_alter().
+ * Generate a form for selecting terms to associate with a node.
+ */
+function capitalise_form_alter(&$form, &$form_id) {
+  if ($form_id == 'taxonomy_overview_terms') {
+    switch ($form['step']['#value']) {
+      case 1:
+        // Inject operation.
+        $form['perform']['operation']['#options']['capitalise'] = t('Capitalise');
+        break;
+      case 2:
+        if ($form['operation']['#value'] == 'capitalise') {
+            $form = confirm_form(
+              $form,
+              t('Are you sure you want to capitalise the selected terms?'),
+              'admin/content/taxonomy/'. $form['vid']['#value'],
+              t('This will capitalise all selected terms. This action cannot be undone.'),
+              t('Capitalise terms')
+            );
+
+            // Hook into the submit function.
+            $form['#submit']['capitalise_taxonomy_overview_terms_submit'] = array();
+        }
+        break;
+    }
+  }
+}
+
+function capitalise_taxonomy_overview_terms_submit($form, $form_values) {
+  if ($form_values['step'] == 2 && $form_values['operation'] == 'capitalise' && $form_values['confirm'] == 1) {
+    foreach ($form_values['terms'] as $tid) {
+      $term = taxonomy_get_term($tid);
+      $term->name = ucfirst($term->name);
+      $term = (array)$term;
+      taxonomy_save_term($term);
+    }
+    drupal_set_message(t('Capitalised terms successfully.'));
+    // Rather than toggling the #redirect of the multi-step form, just use a
+    // goto.
+    drupal_goto('admin/content/taxonomy/'. $form_values['vid']);
+  }
+}
Index: modules/capitalise/capitalise.info
===================================================================
RCS file: modules/capitalise/capitalise.info
diff -N modules/capitalise/capitalise.info
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/capitalise/capitalise.info	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,4 @@
+; $Id$
+name = Capitalise
+description = Demo module that capitalises all selected term names.
+version = "$Name$"
