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 add a fieldmap 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 add a fieldmap 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.