? 442678-ux-improvements.diff 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.5 diff -u -p -r1.2.2.5 salesforce_api.admin.inc --- salesforce_api/salesforce_api.admin.inc 25 Apr 2009 05:59:20 -0000 1.2.2.5 +++ salesforce_api/salesforce_api.admin.inc 1 May 2009 19:20:28 -0000 @@ -30,14 +30,17 @@ function salesforce_api_settings_form() '#required' => TRUE, ); $form['api']['salesforce_api_password'] = array( - '#type' => 'password', + '#type' => 'textfield', '#title' => t('Password'), + '#description' => t('Enter the password used when logging into Salesforce.'), '#default_value' => variable_get('salesforce_api_password', ''), + '#required' => TRUE, ); $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 +73,34 @@ 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); } +function salesforce_api_settings_form_validate($form, &$form_state) { + $values = $form_state['values']; + if(empty($values['salesforce_api_username']) + || empty($values['salesforce_api_password']) + || empty($values['salesforce_api_token'])) { + // Don't bother checking if any of these required fields is empty. + return; + } + + // See if we can connect with the specified values. + $options = array( + 'username' => $values['salesforce_api_username'], + 'password' => $values['salesforce_api_password'], + 'token' => $values['salesforce_api_token'] + ); + if(!salesforce_api_connect(TRUE, $options)) { + // If not, prevent the user from overwriting the current configuration. + form_set_error('api', 'Unable to connect to SalesForce. Please check your credentials and try again.
If you receive this error message repeatedly, please refer to the README for the SalesForce module.'); + } 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.4 diff -u -p -r1.2.2.4 salesforce_api.install --- salesforce_api/salesforce_api.install 25 Apr 2009 06:44:28 -0000 1.2.2.4 +++ salesforce_api/salesforce_api.install 1 May 2009 19:20:28 -0000 @@ -14,6 +14,10 @@ function salesforce_api_install() { drupal_install_schema('salesforce_api'); } +function salesforce_api_enable() { + drupal_set_message(t('Salesforce module enabled: Before making any Salesforce connections, !link', array('!link' => l(t('please enter your Salesforce API credentials'), SALESFORCE_PATH_ADMIN))), 'warning'); +} + /** * Implementation of hook_schema(). */ @@ -52,3 +56,41 @@ function salesforce_api_schema() { return $schema; } + +/** + * 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': + $title = 'Salesforce Configuration'; + $value = l('Salesforce Admin', SALESFORCE_PATH_ADMIN); + $username = variable_get('salesforce_api_username', FALSE); + $description = null; + if(empty($username)) { + $description = 'Salesforce configuration incomplete.'; + $severity = REQUIREMENT_ERROR; + } elseif(!salesforce_api_connect()) { + $description = 'Unable to connect to Salesforce using current configuration.'; + $severity = REQUIREMENT_ERROR; + } else { + $severity = REQUIREMENT_OK; + } + $req[] = array( + 'title' => $title, + 'value' => $value, + 'description' => $description, + 'severity' => $severity + ); + break; + } + + if(!empty($req)) { + return $req; + } +} + + Index: salesforce_api/salesforce_api.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.module,v retrieving revision 1.2.2.11 diff -u -p -r1.2.2.11 salesforce_api.module --- salesforce_api/salesforce_api.module 30 Apr 2009 11:25:19 -0000 1.2.2.11 +++ salesforce_api/salesforce_api.module 1 May 2009 19:20:28 -0000 @@ -130,11 +130,20 @@ function salesforce_api_perm() { * By default, subsequent calls to this function will return the same, already * connected Salesforce object as preceding calls. Setting this variable to * TRUE will cause a new connection to be established instead. + * @param $options + * An associative array of additional options. These options are all ignored + * when $reconnect is FALSE. The following keys are valid options: + * - 'username' + * If provided, use this value instead of salesforce_api_username variable. + * - 'password' + * If provided, use this value instead of salesforce_api_password variable. + * - 'token' + * If provided, use this value instead of salesforce_api_token variable. * @return * The DrupalSalesforce object used to communicate with the Salesforce server * if successful or FALSE if a connection could not be established. */ -function salesforce_api_connect($reconnect = FALSE) { +function salesforce_api_connect($reconnect = FALSE, $options = array()) { static $sf = FALSE; // Return the previously connected object. @@ -143,9 +152,9 @@ function salesforce_api_connect($reconne } // Load up the API credentials. - $username = variable_get('salesforce_api_username', ''); - $password = variable_get('salesforce_api_password', ''); - $token = variable_get('salesforce_api_token', ''); + $username = isset($options['username']) ? $options['username'] : variable_get('salesforce_api_username', ''); + $password = isset($options['password']) ? $options['password'] : variable_get('salesforce_api_password', ''); + $token = isset($options['token']) ? $options['token'] : variable_get('salesforce_api_token', ''); // Fail early if we didn't receive an API username, password, or token. if (empty($username) || empty($password) || empty($token)) {