Index: salesforce/salesforce_api/salesforce_api.admin.css =================================================================== RCS file: salesforce/salesforce_api/salesforce_api.admin.css diff -N salesforce/salesforce_api/salesforce_api.admin.css --- salesforce/salesforce_api/salesforce_api.admin.css 25 Apr 2009 05:59:20 -0000 1.2.2.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,5 +0,0 @@ -/* $Id: salesforce_api.admin.css,v 1.2.2.2 2009/04/25 05:59:20 bevan Exp $ */ - -.source-cell label { - display: none; -} Index: salesforce/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.21 diff -u -p -r1.2.2.21 salesforce_api.admin.inc --- salesforce/salesforce_api/salesforce_api.admin.inc 23 Feb 2010 20:54:11 -0000 1.2.2.21 +++ salesforce/salesforce_api/salesforce_api.admin.inc 25 Feb 2010 18:32:46 -0000 @@ -293,6 +293,12 @@ function salesforce_api_fieldmap_delete_ * Displays the edit form for adding field associations to a fieldmap. */ function salesforce_api_fieldmap_edit_form(&$form_state, $fieldmap) { + + // Include the CSS and JS for the form. + $path = drupal_get_path("module", "salesforce_api"); + drupal_add_css($path .'/misc/salesforce_api.admin.css'); + drupal_add_js($path ."/misc/salesforce_api.admin.js"); + // Load the fieldmap from the database. $map = salesforce_api_fieldmap_load($fieldmap); @@ -302,8 +308,6 @@ function salesforce_api_fieldmap_edit_fo drupal_goto(SALESFORCE_PATH_FIELDMAPS); } - // Include the CSS file for the form. - drupal_add_css(drupal_get_path('module', 'salesforce_api') .'/salesforce_api.admin.css'); $form = array(); @@ -376,16 +380,42 @@ function salesforce_api_fieldmap_edit_fo $row = array( 'target' => array('#value' => $value['label'] . $required), ); + + // Adding fixed value option + $options = salesforce_api_fieldmap_field_options($source); + $options['Other']['fixed'] = t('Fixed value'); + if( user_access('use php for salesforce fixed values') ) { + $options['Other']['php'] = t('Evaluate PHP'); + } + if (is_array($map['fields'][$key])) { + $default_key = $map['fields'][$key]['type']; + $default_value = $map['fields'][$key]['value']; + } else { + $default_key = $map['fields'][$key]; + $default_value = null; + } // Add the select list for the associated target field. $row['source'][$key] = array( '#type' => 'select', '#title' => $value['label'], - '#options' => salesforce_api_fieldmap_field_options($source), - '#default_value' => $map['fields'][$key], + '#options' => $options, + '#default_value' => $default_key, '#required' => $type == 'required', + '#attributes' => array('class' => 'sf_fieldmap_options', 'id' => 'sf-fieldmap-option-' . $key), ); - + $row['source'][$key ."_extra"] = array( + '#type' => 'textfield', + '#title' => t('Value'), + '#default_value' => $default_value, + '#size' => 20, + '#maxlength' => 128, + '#required' => FALSE, + '#prefix' => '
', + '#description' => 'Omit <?php ?> tags. Return the value to set. Standard caveats apply.', + ); + // Add the row to the correct rows array. $rows[$type][] = $row; } @@ -402,6 +432,13 @@ function salesforce_api_fieldmap_edit_fo return $form; } +function salesforce_api_fieldmap_edit_form_validate($form, &$form_state) { + // Include the CSS and JS for the form if it gets reloaded. + $path = drupal_get_path("module", "salesforce_api"); + drupal_add_css($path .'/misc/salesforce_api.admin.css'); + drupal_add_js($path ."/misc/salesforce_api.admin.js"); +} + /** * FAPI submit handler for fieldmap editor */ @@ -422,8 +459,14 @@ function salesforce_api_fieldmap_edit_fo // Loop through all the fields on the object. foreach (array_keys($object['fields']) as $field) { + if (!empty($form_state['values'][$field .'_extra'])) { + $map['fields'][$field] = array( + 'type' => $form_state['values'][$field], + 'value' => $form_state['values'][$field .'_extra'] + ); + } // If a field has been mapped to this field on the form... - if (!empty($form_state['values'][$field])) { + elseif (!empty($form_state['values'][$field])) { // Add the association to the fieldmap's fields array. $map['fields'][$field] = $form_state['values'][$field]; } @@ -457,7 +500,7 @@ function theme_salesforce_api_fieldmap_e foreach (element_children($form['rows']) as $element) { $rows[] = array( - drupal_render($form['rows'][$element]['target']), + array('data' => drupal_render($form['rows'][$element]['target']), 'class' => 'target-cell'), array('data' => drupal_render($form['rows'][$element]['source']), 'class' => 'source-cell'), ); } Index: salesforce/salesforce_api/salesforce_api.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.module,v retrieving revision 1.2.2.31 diff -u -p -r1.2.2.31 salesforce_api.module --- salesforce/salesforce_api/salesforce_api.module 24 Feb 2010 20:35:25 -0000 1.2.2.31 +++ salesforce/salesforce_api/salesforce_api.module 25 Feb 2010 18:32:46 -0000 @@ -137,7 +137,7 @@ function salesforce_api_menu() { * Implementation of hook_perm(). */ function salesforce_api_perm() { - return array('administer salesforce'); + return array('administer salesforce', 'use php for salesforce fixed values'); } /** @@ -629,8 +629,23 @@ function salesforce_api_fieldmap_export_ // Loop through the fields on the fieldmap. foreach ($map['fields'] as $sf_fieldname => $drupal_fieldname) { + // See if it's a special field + if (is_array($map['fields'][$sf_fieldname])) { + switch ($map['fields'][$sf_fieldname]['type']) { + case 'fixed': + if (isset($map['fields'][$sf_fieldname]['value'])) { + $object->$sf_fieldname = htmlentities($map['fields'][$sf_fieldname]['value']); + } + break; + case 'php': + if(isset($map['fields'][$sf_fieldname]['value'])) { + $object->$sf_fieldname = htmlentities(eval($map['fields'][$sf_fieldname]['value'])); + } + break; + } + } // If a handler is specified for retrieving a value for the Drupal field... - if (isset($drupal_object_definition['fields'][$drupal_fieldname]['export'])) { + elseif (isset($drupal_object_definition['fields'][$drupal_fieldname]['export'])) { $drupal_field_export_handler = $drupal_object_definition['fields'][$drupal_fieldname]['export']; $drupal_field_definition = $drupal_object_definition['fields'][$drupal_fieldname]; $sf_field_definition = $sf_object_definition['fields'][$sf_fieldname]; Index: salesforce/salesforce_api/misc/salesforce_api.admin.css =================================================================== RCS file: salesforce/salesforce_api/misc/salesforce_api.admin.css diff -N salesforce/salesforce_api/misc/salesforce_api.admin.css --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ salesforce/salesforce_api/misc/salesforce_api.admin.css 25 Feb 2010 18:32:46 -0000 @@ -0,0 +1,9 @@ +/* $Id: salesforce_api.admin.css,v 1.2.2.2 2009/04/25 05:59:20 bevan Exp $ */ + +.source-cell label { + display: none; +} + +.fieldmap-extra-text label { + display: inline; +} Index: salesforce/salesforce_api/misc/salesforce_api.admin.js =================================================================== RCS file: salesforce/salesforce_api/misc/salesforce_api.admin.js diff -N salesforce/salesforce_api/misc/salesforce_api.admin.js --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ salesforce/salesforce_api/misc/salesforce_api.admin.js 25 Feb 2010 18:32:46 -0000 @@ -0,0 +1,32 @@ +Drupal.behaviors.sf_fieldmap_options = function() { + $.fn.sf_fieldmap_option_change = function() { + var key = $(this).attr('id'); + key = key.replace(/sf-fieldmap-option-/, ''); + $(this).sf_fieldmap_option_toggle(key); + } + + $.fn.sf_fieldmap_option_toggle = function(fieldname) { + var fielddiv = '#' + fieldname + '-extra-hidden'; + if ($(this).val() == 'fixed' + || $(this).val() == 'php') { + $(fielddiv).show(); + } else { + $(fielddiv).hide(); + $(fielddiv + ' input').val(''); + } + } + + // Bind the change action + $('.sf_fieldmap_options').bind('change', function() { + $(this).sf_fieldmap_option_change(); + }); + + // Hide hidden fields + $(".fieldmap-extra-text").hide(); + + // Show any text fields that should be shown + $('.sf_fieldmap_options').each(function() { + $(this).trigger('change'); + }); + +} \ No newline at end of file Index: salesforce/sf_node/sf_node.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/sf_node/sf_node.module,v retrieving revision 1.2.2.26 diff -u -p -r1.2.2.26 sf_node.module --- salesforce/sf_node/sf_node.module 24 Feb 2010 20:37:08 -0000 1.2.2.26 +++ salesforce/sf_node/sf_node.module 25 Feb 2010 18:32:47 -0000 @@ -375,31 +375,17 @@ function sf_node_salesforce_form(&$form_ // Load the fieldmap data. $map = salesforce_api_fieldmap_load($node->salesforce['fieldmap']); - - // Load the object definitions. - $drupal_object = salesforce_api_fieldmap_objects_load('drupal', $map['drupal']); - $object = salesforce_api_fieldmap_objects_load('salesforce', $map['salesforce']); + $sf_object_definition = salesforce_api_fieldmap_objects_load('salesforce', $map['salesforce']); + $export_data = salesforce_api_fieldmap_export_create($node->salesforce['fieldmap'], $node); $header = array(t('Field name'), t('Drupal @type value', array('@type' => salesforce_api_fieldmap_object_label('drupal', $map['drupal']))), t('Salesforce @type value', array('@type' => salesforce_api_fieldmap_object_label('salesforce', $map['salesforce'])))); $rows = array(); - foreach ($map['fields'] as $key => $value) { - if (isset($drupal_object['fields'][$value]['export'])) { - $drupal_field_definition = $drupal_object['fields'][$value]; - $sf_field_definition = $object['fields'][$key]; - $drupal_value = $drupal_object['fields'][$value]['export']($node, $value, $drupal_field_definition, $sf_field_definition); - } - elseif (isset($node->$value)) { - $drupal_value = $node->$value; - } - else { - $drupal_value = ''; - } - + foreach ($map['fields'] as $sf_fieldname => $drupal_fieldname) { $rows[] = array( - $object['fields'][$key]['label'], - $drupal_value, - $sf_data->$key, + $sf_object_definition['fields'][$sf_fieldname]['label'], + $export_data->$sf_fieldname, + $sf_data->$sf_fieldname, ); } Index: salesforce/sf_prematch/sf_prematch.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/sf_prematch/Attic/sf_prematch.admin.inc,v retrieving revision 1.1.2.1 diff -u -p -r1.1.2.1 sf_prematch.admin.inc --- salesforce/sf_prematch/sf_prematch.admin.inc 23 Feb 2010 20:23:30 -0000 1.1.2.1 +++ salesforce/sf_prematch/sf_prematch.admin.inc 25 Feb 2010 18:32:47 -0000 @@ -225,10 +225,16 @@ function sf_prematch_get_options($map, $ // Build terms into ordered options to use in select. $options = array(); // Start with empty option if select is not required. - if (!$required) {$options[] = '';} + if (!$required) { $options[] = ''; } // Add terms to options, making key = value so form value is key not integer. foreach ($terms as $term) { + if (is_array($term)) { + $term = implode(' : ', $term); + if (strlen($term) > 50) { + $term = substr($term, 0, 50) . ' ...'; + } + } $options[$term] = $term; } Index: salesforce/sf_user/sf_user.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/sf_user/sf_user.module,v retrieving revision 1.2.2.16 diff -u -p -r1.2.2.16 sf_user.module --- salesforce/sf_user/sf_user.module 23 Feb 2010 21:40:56 -0000 1.2.2.16 +++ salesforce/sf_user/sf_user.module 25 Feb 2010 18:32:47 -0000 @@ -199,31 +199,16 @@ function sf_user_salesforce_form(&$form_ // Load the fieldmap data. $map = salesforce_api_fieldmap_load($account->salesforce['fieldmap']); - - // Load the object definitions. - $drupal_object_definition = salesforce_api_fieldmap_objects_load('drupal', $map['drupal']); - $sf_field_definition = salesforce_api_fieldmap_objects_load('salesforce', $map['salesforce']); + $sf_object_definition = salesforce_api_fieldmap_objects_load('salesforce', $map['salesforce']); + $export_data = salesforce_api_fieldmap_export_create($account->salesforce['fieldmap'], $account); $header = array(t('Field name'), t('Drupal user value'), t('Salesforce @type value', array('@type' => salesforce_api_fieldmap_object_label('salesforce', $map['salesforce'])))); $rows = array(); foreach ($map['fields'] as $sf_fieldname => $drupal_fieldname) { - if (isset($drupal_object_definition['fields'][$drupal_fieldname]['export'])) { - $drupal_field_export_handler = $drupal_object_definition['fields'][$drupal_fieldname]['export']; - $drupal_field_definition = $drupal_object_definition['fields'][$drupal_fieldname]; - $sf_field_definition = $sf_object_definition['fields'][$sf_fieldname]; - $drupal_value = $drupal_field_export_handler($account, $drupal_fieldname, $drupal_field_definition, $sf_field_definition); - } - elseif (isset($account->$drupal_fieldname)) { - $drupal_value = $account->$drupal_fieldname; - } - else { - $drupal_value = ''; - } - $rows[] = array( - $sf_field_definition['fields'][$sf_fieldname]['label'], - $drupal_value, + $sf_object_definition['fields'][$sf_fieldname]['label'], + $export_data->$sf_fieldname, $sf_data->$sf_fieldname, ); }