? salesforce_api/toolkit
Index: salesforce_api/salesforce_api.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.admin.inc,v
retrieving revision 1.2.2.6
diff -u -p -r1.2.2.6 salesforce_api.admin.inc
--- salesforce_api/salesforce_api.admin.inc	27 May 2009 00:04:38 -0000	1.2.2.6
+++ salesforce_api/salesforce_api.admin.inc	31 Jul 2009 07:26:13 -0000
@@ -32,12 +32,14 @@ function salesforce_api_settings_form() 
   $form['api']['salesforce_api_password'] = array(
     '#type' => 'password',
     '#title' => t('Password'),
+    '#description' => t('Enter the password used when logging into Salesforce.'),
     '#default_value' => variable_get('salesforce_api_password', ''),
   );
   $form['api']['salesforce_api_token'] = array(
     '#type' => 'textfield',
     '#title' => t('Security token'),
     '#description' => t('Set your security token by logging into Salesforce and navigating to Setup > My Personal Information > Reset My Security Token.'),
+    '#required' => TRUE,
     '#default_value' => variable_get('salesforce_api_token', ''),
   );
 
@@ -70,10 +72,23 @@ function salesforce_api_settings_form() 
   );
 
   // Validate handler makes sure that the salesforce_api_password doesn't get set to null on accident
+  $form['#validate'][] = 'salesforce_api_settings_form_validate';
   $form['#submit'][] = 'salesforce_api_settings_form_submit';
   return system_settings_form($form);
 }
 
+// Settings form validate handler to verify new salesforce credentials before saving them.
+function salesforce_api_settings_form_validate(&$form, &$form_state) {
+  $values = $form_state['values'];
+  if (!salesforce_api_connect($values['salesforce_api_username'], $values['salesforce_api_password'], $values['salesforce_api_token'], TRUE)) {
+    // If not, prevent the user from overwriting the current configuration.
+    form_set_error('salesforce_api_username', t('Unable to connect to Salesforce. Please check your credentials.'));
+  }
+  else {
+    drupal_set_message('Salesforce connection established.');
+  }
+}
+
 // Settings form submit handler so that password doesn't get deleted.
 function salesforce_api_settings_form_submit($form, &$form_state) {
   // If the user hit "Save Configuration" and the required field
Index: salesforce_api/salesforce_api.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.install,v
retrieving revision 1.2.2.6
diff -u -p -r1.2.2.6 salesforce_api.install
--- salesforce_api/salesforce_api.install	31 Jul 2009 03:45:53 -0000	1.2.2.6
+++ salesforce_api/salesforce_api.install	31 Jul 2009 07:26:13 -0000
@@ -22,6 +22,13 @@ function salesforce_api_uninstall() {
 }
 
 /**
+ * Implementation of hook_enable().
+ */
+function salesforce_api_enable() {
+  drupal_set_message(t('Salesforce API: Before making any Salesforce connections, please <a href="!url">enter your Salesforce API credentials</a>', array('!url' => url(SALESFORCE_PATH_ADMIN))), 'warning');
+}
+
+/**
  * Implementation of hook_schema().
  */
 function salesforce_api_schema() {
@@ -111,3 +118,42 @@ function salesforce_api_schema() {
 
   return $schema;
 }
+
+/**
+ * Implementation of hook_requirements().
+ *
+ * Check the Salesforce API configuration to see if we have valid credentials.
+ */
+function salesforce_api_requirements($phase) {
+  $req = array();
+  switch($phase) {
+    case 'install':
+      break;
+
+    case 'runtime':
+      $username = variable_get('salesforce_api_username', FALSE);
+      if (!$username) {
+        $description = l(t('Enter your Salesforce credentials.'), SALESFORCE_PATH_ADMIN);
+        $severity = REQUIREMENT_ERROR;
+      }
+      elseif (!salesforce_api_connect()) {
+        $description = t('Unable to connect to Salesforce using <a href="!url">current configuration</a>.', array('!url' => url(SALESFORCE_PATH_ADMIN)));
+        $severity = REQUIREMENT_ERROR;
+      }
+      else {
+        $description = '';
+        $severity = REQUIREMENT_OK;
+      }
+      $req[] = array(
+        'title' => t('Salesforce Configuration'),
+        'value' => l('Salesforce Admin', SALESFORCE_PATH_ADMIN), 
+        'description' => $description,
+        'severity' => $severity
+      );
+      break;
+  }
+
+  if(!empty($req)) {
+    return $req;
+  }
+}
