Index: sf_node/sf_node.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/sf_node/sf_node.module,v
retrieving revision 1.2.2.12
diff -u -p -r1.2.2.12 sf_node.module
--- sf_node/sf_node.module	31 Aug 2009 15:00:22 -0000	1.2.2.12
+++ sf_node/sf_node.module	1 Oct 2009 19:46:37 -0000
@@ -12,11 +12,12 @@
  * Implementation of hook_menu().
  */
 function sf_node_menu() {
-  $items['node/%/salesforce'] = array(
+  $items['node/%node/salesforce'] = array(
     'title' => 'Salesforce',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('sf_node_salesforce_form', 1),
-    'access arguments' => array('sync nodes with salesforce'),
+    'access callback' => 'sf_node_salesforce_form_access',
+    'access arguments' => array(1),
     'type' => MENU_LOCAL_TASK,
   );
 
@@ -210,10 +211,13 @@ function _sf_node_import_cck_todate(&$no
   $node->$key = $data;
 }
 
-// Displays the Salesforce synchronization form.
-function sf_node_salesforce_form(&$form_state, $nid) {
-  $node = node_load($nid);
+// Access callback for the node/%node/salesforce menu item.
+function sf_node_salesforce_form_access($node) {
+  return user_access('sync nodes with salesforce') and salesforce_api_fieldmap_options('node_'. $node->type);
+}
 
+// Displays the Salesforce synchronization form.
+function sf_node_salesforce_form(&$form_state, $node) {
   // Fail out if the node didn't exist!
   if (!$node->nid) {
     drupal_not_found();
@@ -237,32 +241,17 @@ function sf_node_salesforce_form(&$form_
       '#description' => t('This node may be exported to Salesforce using any fieldmap listed below.'),
     );
 
-    // Get an array of fieldmaps that export nodes of this type to Salesforce.
-    $options = salesforce_api_fieldmap_options('node_'. $node->type);
-
-    // If no corresponding fieldmaps were found...
-    if (count($options) == 0) {
-      // Display a message appropriate to the user's permissions.
-      if (user_access('administer salesforce')) {
-        $form['export']['#description'] = t('To export this node you must first <a href="!url">add a fieldmap</a> that exports @type nodes.', array('!url' => url(SALESFORCE_PATH_FIELDMAPS .'/add'), '@type' => $node->type));
-      }
-      else {
-        $form['export']['#description'] = t('Please contact a site administrator to add a fieldmap that exports @type nodes.', array('@type' => $node->type));
-      }
-    }
-    else {
-      // Otherwise add the export form!
-      $form['export']['fieldmap'] = array(
-        '#type' => 'select',
-        '#title' => t('Export fieldmap'),
-        '#options' => $options,
-      );
+    // Add the export form.
+    $form['export']['fieldmap'] = array(
+      '#type' => 'select',
+      '#title' => t('Export fieldmap'),
+      '#options' => salesforce_api_fieldmap_options('node_'. $node->type),
+    );
 
-      $form['export']['export_node'] = array(
-        '#type' => 'submit',
-        '#value' => t('Export node'),
-      );
-    }
+    $form['export']['export_node'] = array(
+      '#type' => 'submit',
+      '#value' => t('Export node'),
+    );
   }
   else {
     // Otherwise add synchronization information.
Index: sf_user/sf_user.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/sf_user/sf_user.module,v
retrieving revision 1.2.2.6
diff -u -p -r1.2.2.6 sf_user.module
--- sf_user/sf_user.module	31 Aug 2009 15:00:22 -0000	1.2.2.6
+++ sf_user/sf_user.module	1 Oct 2009 19:46:38 -0000
@@ -11,10 +11,11 @@
  * Implementation of hook_menu().
  */
 function sf_user_menu() {
-  $items['user/%/salesforce'] = array(
+  $items['user/%user/salesforce'] = array(
     'title' => 'Salesforce',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('sf_user_salesforce_form', 1),
+    'access callback' => 'sf_user_salesforce_form_access',
     'access arguments' => array('sync users with salesforce'),
     'type' => MENU_LOCAL_TASK,
   );
@@ -22,6 +23,11 @@ function sf_user_menu() {
   return $items;
 }
 
+// Access callback for the user/%user/salesforce menu item.
+function sf_user_salesforce_form_access() {
+  return user_access('sync users with salesforce') and salesforce_api_fieldmap_options('user');
+}
+
 /**
  * Implementation of hook_perm().
  */
@@ -96,9 +102,7 @@ function sf_user_fieldmap_objects($type)
 }
 
 // Displays the Salesforce synchronization form.
-function sf_user_salesforce_form(&$form_state, $uid) {
-  $account = user_load(array('uid' => $uid));
-
+function sf_user_salesforce_form(&$form_state, $account) {
   // Fail out if the user didn't exist!
   if (!$account->uid) {
     drupal_not_found();
@@ -125,29 +129,17 @@ function sf_user_salesforce_form(&$form_
     // Get an array of fieldmaps that export nodes of this type to Salesforce.
     $options = salesforce_api_fieldmap_options('user');
 
-    // If no corresponding fieldmaps were found...
-    if (count($options) == 0) {
-      // Display a message appropriate to the user's permissions.
-      if (user_access('administer salesforce')) {
-        $form['export']['#description'] = t('To export this user you must first <a href="!url">add a fieldmap</a> that exports users.');
-      }
-      else {
-        $form['export']['#description'] = t('Please contact a site administrator to add a fieldmap that exports users.');
-      }
-    }
-    else {
-      // Otherwise add the export form!
-      $form['export']['fieldmap'] = array(
-        '#type' => 'select',
-        '#title' => t('Export fieldmap'),
-        '#options' => $options,
-      );
+    // Add the export form
+    $form['export']['fieldmap'] = array(
+      '#type' => 'select',
+      '#title' => t('Export fieldmap'),
+      '#options' => $options,
+    );
 
-      $form['export']['export_user'] = array(
-        '#type' => 'submit',
-        '#value' => t('Export user'),
-      );
-    }
+    $form['export']['export_user'] = array(
+      '#type' => 'submit',
+      '#value' => t('Export user'),
+    );
   }
   else {
     // Otherwise add synchronization information.
