From a4ef89a9ef8382db38c6c466c12933124b32399a Mon Sep 17 00:00:00 2001
From: James Gilliland <neclimdul@gmail.com>
Date: Fri, 25 Feb 2011 10:19:09 -0600
Subject: [PATCH 2/2] Cleanup odd validation save logic

---
 block_titlelink.module |   55 +++++++++++++++++++++++++++++------------------
 1 files changed, 34 insertions(+), 21 deletions(-)

diff --git block_titlelink.module block_titlelink.module
index 61d8477..4874ec0 100644
--- block_titlelink.module
+++ block_titlelink.module
@@ -32,34 +32,47 @@ function block_titlelink_form_alter(&$form, &$form_state, $form_id) {
       '#description' => t('URL for Block Title to link to.'),
     );
 
-   $form['#validate'][] = 'block_titlelink_validate';
+    $form['#validate'][] = 'block_titlelink_configure_validate';
+    if (!array_search('block_admin_configure_validate', $form['#validate'])) {
+      $form['#validate'][] = 'block_admin_configure_validate';
+    }
+
+    $form['#submit'][] = 'block_titlelink_configure_submit';
+    if (!array_search('block_admin_configure_submit', $form['#submit'])) {
+      $form['#submit'][] = 'block_admin_configure_submit';
+    }
   }
 }
 
 /**
- * Implementation of hook_validation().
+ * Validation callback for the block_admin_configure form.
+ */
+function block_titlelink_configure_validate($form, &$form_state) {
+  $module = $form_state['values']['module'];
+  $delta = $form_state['values']['delta'];
+  $link = $form_state['values']['title_path'];
+  //TODO: Validate Link based on URL and PATH
+}
+
+/**
+ * Submit callback for the block_admin_configure form.
  */
-function block_titlelink_validate($form, &$form_state) {
-  if ($form_state['values']['form_id'] == 'block_admin_configure') {
-    if (isset($form_state['values']['title_path']) && user_access('administer blocks')) {
-      $module = arg(4);
-      $delta = arg(5);
-      //TODO: Validate Link based on URL and PATH
-      $link = $form_state['values']['title_path'];
-      //Save Form Link
-      if ($module && ($delta || $delta === 0)) {
-        $name = $module .'_'. $delta;
-        //Delete link if empty
-        if (strlen($link) == 0) {
-          _block_titlelink_delete_link($name);
-        }
-        else {
-          _block_titlelink_save_link($name, $link);
-        }
-      }
+function block_titlelink_configure_submit($form, &$form_state) {
+  $module = $form_state['values']['module'];
+  $delta = $form_state['values']['delta'];
+
+  if ($module && ($delta || $delta === 0)) {
+    $name = $module . '_' . $delta;
+    $link = $form_state['values']['title_path'];
+
+    // Delete link if empty.
+    if (strlen($link) == 0) {
+      _block_titlelink_delete_link($name);
+    }
+    else {
+      _block_titlelink_save_link($name, $link);
     }
   }
-  block_admin_configure_validate($form, $form_state);
 }
 
 /**
-- 
1.7.1

