public function use_as_entry_link_settings($position, $form_id) { #$form = get_form($form_id); $form = RGFormsModel::get_form_meta($form_id); //create settings on position 50 (right after Admin Label) if ($position === -1) { ?> <li class="use_as_entry_link salesforce_setting field_setting"> <label for="salesforce_map_enabled"> <input type="checkbox" id="salesforce_map_enabled" name="salesforce_map_enabled" value="1" /> <?php _e("Enable Salesforce Field Mapping?", "gravity-forms-salesforce"); ?> <img alt="<?php esc_attr_e("Enable Salesforce.com Mapping", "gravity-forms-salesforce"); ?> " src="<?php echo GFSalesforce::get_base_url(); ?> /assets/images/salesforce-50x50.png" style="margin:0 7px 0 0;" width="20" height="20" /> </label> <div id="salesforce_map_ui"> <label for="salesforce_map_type_live"> <input type="radio" id="salesforce_map_type_live" name="salesforce_map_type" value="live" /> <?php _e("Live Remote Field Mapping?", "gravity-forms-salesforce"); gform_tooltip("salesforce_map_values_live"); ?> <span class="howto" style="padding-left:1.25em;"><?php _e("Field Choices will be synced with Salesforce picklist values.", "gravity-forms-salesforce"); ?> </span> </label> <label for="salesforce_map_type_once"> <input type="radio" id="salesforce_map_type_once" name="salesforce_map_type" value="once" /> <?php _e("Only Populate Choices", "gravity-forms-salesforce"); gform_tooltip("salesforce_map_values_once"); ?> <span class="howto" style="padding-left:1.25em;"><?php _e("Field Choices will not be updated live and are editable.", "gravity-forms-salesforce"); ?> </span> </label> <label for="salesforce_object_list" class=" inline"><?php _e("Choose Object: ", "gravity-forms-salesforce"); ?> <?php $lists = GFSalesforce::getObjectTypes(); if (!$lists) { echo wpautop(__("Could not load Salesforce objects.\nError: ", "gravity-forms-salesforce")); echo isset($api->errorMessage) ? $api->errorMessage : ''; } else { ?> <select id="salesforce_object_list" name="salesforce_object_type" onchange="SelectList(jQuery(this).val()); SelectForm(jQuery(this).val(), <?php echo $form_id; ?> );"> <option value=""><?php _e("Select a Salesforce Object", "gravity-forms-madmimi"); ?> </option> <?php foreach ($lists as $list) { ?> <option value="<?php echo esc_html($list); ?> "><?php echo esc_html($list); ?> </option> <?php } ?> </select></label><span class="spinner salesforce_wait" style="display: none; position: absolute;"></span> <div id="salesforce_field_list"></div> </div> <?php } ?> </li> <?php } // End if $position === 500 }
private static function edit_page() { ?> <style type="text/css"> label span.howto { cursor: default; } .salesforce_col_heading{padding-bottom:2px; border-bottom: 1px solid #ccc; font-weight:bold; width:50%;} #salesforce_field_list table { width: 400px; border-collapse: collapse; margin-top: 1em; } .salesforce_field_cell {padding: 6px 17px 0 0; margin-right:15px;} .gfield_required{color:red;} .feeds_validation_error{ background-color:#FFDFDF;} .feeds_validation_error td{ margin-top:4px; margin-bottom:6px; padding-top:6px; padding-bottom:6px; border-top:1px dotted #C89797; border-bottom:1px dotted #C89797} .left_header{float:left; width:200px; padding-right: 20px;} #salesforce_field_list .left_header { margin-top: 1em; } .margin_vertical_10{margin: 20px 0;} #gf_salesforce_list { margin-left:220px; padding-top: 1px } #salesforce_doubleoptin_warning{padding-left: 5px; padding-bottom:4px; font-size: 10px;} </style> <script type="text/javascript"> var form = Array(); </script> <div class="wrap"> <img alt="<?php _e("Salesforce Feeds", "gravity-forms-salesforce"); ?> " src="<?php echo self::get_base_url(); ?> /images/salesforce-50x50.png" style="float:left; margin:15px 7px 0 0;"/> <h2><?php _e("Salesforce Feeds", "gravity-forms-salesforce"); ?> </h2> <ul class="subsubsub"> <li><a href="<?php echo admin_url('admin.php?page=gf_settings&addon=Salesforce'); ?> ">Salesforce Settings</a> |</li> <li><a href="<?php echo admin_url('admin.php?page=gf_salesforce'); ?> ">Salesforce Feeds</a></li> </ul> <div class="clear"></div> <?php //getting Salesforce API $api = self::get_api(); //ensures valid credentials were entered in the settings page if (!self::api_is_valid($api)) { ?> <div class="error" id="message" style="margin-top:20px;"><?php echo wpautop(sprintf(__("We are unable to login to Salesforce with the provided username and API key. Please make sure they are valid in the %sSettings Page%s", "gravity-forms-salesforce"), "<a href='?page=gf_settings&addon=Salesforce'>", "</a>")); ?> </div> <?php return; } //getting setting id (0 when creating a new one) $id = !empty($_POST["salesforce_setting_id"]) ? $_POST["salesforce_setting_id"] : absint($_GET["id"]); $config = empty($id) ? array("meta" => array(), "is_active" => true) : GFSalesforceData::get_feed($id); //getting merge vars $merge_vars = array(); //updating meta information if (isset($_POST["gf_salesforce_submit"])) { $objectType = $list_names = array(); $list = stripslashes($_POST["gf_salesforce_list"]); $config["meta"]["contact_object_name"] = $list; $config["form_id"] = absint($_POST["gf_salesforce_form"]); $is_valid = true; $merge_vars = (array) self::getFields($_POST['gf_salesforce_list']); $field_map = array(); foreach ($merge_vars as $var) { $field_name = "salesforce_map_field_" . $var['tag']; $mapped_field = isset($_POST[$field_name]) ? stripslashes($_POST[$field_name]) : ''; if (!empty($mapped_field)) { $field_map[$var['tag']] = $mapped_field; } else { unset($field_map[$var['tag']]); if (!empty($var["req"])) { $is_valid = false; } } unset($_POST["{$field_name}"]); } $config["meta"]["field_map"] = $field_map; $config["meta"]["optin_enabled"] = !empty($_POST["salesforce_optin_enable"]) ? true : false; $config["meta"]["optin_field_id"] = $config["meta"]["optin_enabled"] ? isset($_POST["salesforce_optin_field_id"]) ? $_POST["salesforce_optin_field_id"] : '' : ""; $config["meta"]["optin_operator"] = $config["meta"]["optin_enabled"] ? isset($_POST["salesforce_optin_operator"]) ? $_POST["salesforce_optin_operator"] : '' : ""; $config["meta"]["optin_value"] = $config["meta"]["optin_enabled"] ? $_POST["salesforce_optin_value"] : ""; if ($is_valid) { $id = GFSalesforceData::update_feed($id, $config["form_id"], $config["is_active"], $config["meta"]); ?> <div id="message" class="updated fade" style="margin-top:10px;"><p><?php echo sprintf(__("Feed Updated. %sback to list%s", "gravity-forms-salesforce"), "<a href='?page=gf_salesforce'>", "</a>"); ?> </p> <input type="hidden" name="salesforce_setting_id" value="<?php echo $id; ?> "/> </div> <?php } else { ?> <div class="error" style="padding:6px"><?php echo __("Feed could not be updated. Please enter all required information below.", "gravity-forms-salesforce"); ?> </div> <?php } } if (!function_exists('gform_tooltip')) { require_once GFCommon::get_base_path() . "/tooltips.php"; } ?> <form method="post" action="<?php echo remove_query_arg('refresh'); ?> "> <input type="hidden" name="salesforce_setting_id" value="<?php echo $id; ?> "/> <div class="margin_vertical_10"> <h2><?php _e('1. Select the Object to create when a form is submitted.', "gravity-forms-salesforce"); ?> </h2> <label for="gf_salesforce_list" class="left_header"><?php _e("Salesforce Object", "gravity-forms-salesforce"); ?> <?php gform_tooltip("salesforce_contact_list"); ?> <span class="howto"><?php _e(sprintf("%sRefresh objects & fields%s", '<a href="' . add_query_arg('refresh', 'lists') . '">', '</a>'), "gravity-forms-salesforce"); ?> </span></label> <?php //getting all contact lists $lists = self::getObjectTypes(); if (!$lists) { echo __("Could not load Salesforce contact lists. <br/>Error: ", "gravity-forms-salesforce"); echo isset($api->errorMessage) ? $api->errorMessage : ''; } else { ?> <select id="gf_salesforce_list" name="gf_salesforce_list" onchange="SelectList(jQuery(this).val()); SelectForm(jQuery(this).val(), jQuery('#gf_salesforce_form').val());"> <option value=""><?php _e("Select a Salesforce Object", "gravity-forms-madmimi"); ?> </option> <?php foreach ($lists as $list) { ?> <option value="<?php echo esc_html($list); ?> " <?php selected($list === $config["meta"]["contact_object_name"]); ?> ><?php echo esc_html($list); ?> </option> <?php } ?> </select> <script type="text/javascript"> if(jQuery('#lists_loading').length && jQuery('#gf_salesforce_list').length) { jQuery('#lists_loading').fadeOut(function() { jQuery('#gf_salesforce_list').fadeIn(); }); } else if(jQuery('#gf_salesforce_list').length) { jQuery('#gf_salesforce_list').show(); } </script> <?php } ?> <div class="clear"></div> </div> <?php flush(); ?> <div id="salesforce_form_container" valign="top" class="margin_vertical_10" <?php echo empty($config["meta"]["contact_object_name"]) ? "style='display:none;'" : ""; ?> > <h2><?php _e('2. Select the form to tap into.', "gravity-forms-salesforce"); ?> </h2> <?php $forms = RGFormsModel::get_forms(); if (isset($config["form_id"])) { foreach ($forms as $form) { if ($form->id == $config["form_id"]) { echo '<h3 style="margin:0; padding:0 0 1em 1.75em; font-weight:normal;">' . sprintf(__('(Currently linked with %s)', "gravity-forms-salesforce"), $form->title) . '</h3>'; } } } ?> <label for="gf_salesforce_form" class="left_header"><?php _e("Gravity Form", "gravity-forms-salesforce"); ?> <?php gform_tooltip("salesforce_gravity_form"); ?> </label> <select id="gf_salesforce_form" name="gf_salesforce_form" onchange="SelectForm(jQuery('#gf_salesforce_list').val(), jQuery(this).val());"> <option value=""><?php _e("Select a form", "gravity-forms-salesforce"); ?> </option> <?php foreach ($forms as $form) { $selected = absint($form->id) == $config["form_id"] ? "selected='selected'" : ""; ?> <option value="<?php echo absint($form->id); ?> " <?php echo $selected; ?> ><?php echo esc_html($form->title); ?> </option> <?php } ?> </select> <img src="<?php echo GFSalesforce::get_base_url(); ?> /images/loading.gif" id="salesforce_wait" style="display: none;"/> </div> <div class="clear"></div> <div id="salesforce_field_group" valign="top" <?php echo empty($config["meta"]["contact_object_name"]) || empty($config["form_id"]) ? "style='display:none;'" : ""; ?> > <div id="salesforce_field_container" valign="top" class="margin_vertical_10" > <h2><?php _e('3. Map form fields to Salesforce fields.', "gravity-forms-salesforce"); ?> </h2> <h3 class="description"><?php _e('About field mapping:', "gravity-forms-salesforce"); ?> </h2> <label for="salesforce_fields" class="left_header"><?php _e("Standard Fields", "gravity-forms-salesforce"); ?> <?php gform_tooltip("salesforce_map_fields"); ?> </label> <div id="salesforce_field_list"> <?php if (!empty($config["form_id"])) { //getting list of all Salesforce merge variables for the selected contact list if (empty($merge_vars)) { $merge_vars = self::getFields($config['meta']['contact_object_name']); } //getting field map UI echo self::get_field_mapping($config, $config["form_id"], $merge_vars); //getting list of selection fields to be used by the optin $form_meta = RGFormsModel::get_form_meta($config["form_id"]); $selection_fields = GFCommon::get_selection_fields($form_meta, $config["meta"]["optin_field_id"]); } ?> </div> <div class="clear"></div> </div> <div id="salesforce_optin_container" valign="top" class="margin_vertical_10"> <label for="salesforce_optin" class="left_header"><?php _e("Opt-In Condition", "gravity-forms-salesforce"); ?> <?php gform_tooltip("salesforce_optin_condition"); ?> </label> <div id="salesforce_optin"> <table> <tr> <td> <input type="checkbox" id="salesforce_optin_enable" name="salesforce_optin_enable" value="1" onclick="if(this.checked){jQuery('#salesforce_optin_condition_field_container').show('slow');} else{jQuery('#salesforce_optin_condition_field_container').hide('slow');}" <?php echo !empty($config["meta"]["optin_enabled"]) ? "checked='checked'" : ""; ?> /> <label for="salesforce_optin_enable"><?php _e("Enable", "gravity-forms-salesforce"); ?> </label> </td> </tr> <tr> <td> <div id="salesforce_optin_condition_field_container" <?php echo empty($config["meta"]["optin_enabled"]) ? "style='display:none'" : ""; ?> > <div id="salesforce_optin_condition_fields" <?php echo empty($selection_fields) ? "style='display:none'" : ""; ?> > <?php _e("Export to Salesforce if ", "gravity-forms-salesforce"); ?> <select id="salesforce_optin_field_id" name="salesforce_optin_field_id" class='optin_select' onchange='jQuery("#salesforce_optin_value").html(GetFieldValues(jQuery(this).val(), "", 20));'><?php echo $selection_fields; ?> </select> <select id="salesforce_optin_operator" name="salesforce_optin_operator" /> <option value="is" <?php echo isset($config["meta"]["optin_operator"]) && $config["meta"]["optin_operator"] == "is" ? "selected='selected'" : ""; ?> ><?php _e("is", "gravity-forms-salesforce"); ?> </option> <option value="isnot" <?php echo isset($config["meta"]["optin_operator"]) && $config["meta"]["optin_operator"] == "isnot" ? "selected='selected'" : ""; ?> ><?php _e("is not", "gravity-forms-salesforce"); ?> </option> </select> <select id="salesforce_optin_value" name="salesforce_optin_value" class='optin_select'> </select> </div> <div id="salesforce_optin_condition_message" <?php echo !empty($selection_fields) ? "style='display:none'" : ""; ?> > <?php _e("To create an Opt-In condition, your form must have a drop down, checkbox or multiple choice field.", "gravityform"); ?> </div> </div> </td> </tr> </table> </div> <script type="text/javascript"> <?php if (!empty($config["form_id"])) { ?> //creating Javascript form object form = <?php echo GFCommon::json_encode($form_meta); ?> ; //initializing drop downs jQuery(document).ready(function(){ var selectedField = "<?php echo str_replace('"', '\\"', $config["meta"]["optin_field_id"]); ?> "; var selectedValue = "<?php echo str_replace('"', '\\"', $config["meta"]["optin_value"]); ?> "; SetOptin(selectedField, selectedValue); }); <?php } ?> </script> </div> <div id="salesforce_submit_container" class="margin_vertical_10"> <input type="submit" name="gf_salesforce_submit" value="<?php echo empty($id) ? __("Save Feed", "gravity-forms-salesforce") : __("Update Feed", "gravity-forms-salesforce"); ?> " class="button-primary"/> </div> </div> </form> </div> <script type="text/javascript"> jQuery(document).ready(function($) { $('#gf_salesforce_list').live('load change', function() { $('#lists_loading').hide(); }); $("#gf_salesforce_list input").bind('click change', function() { if($("#gf_salesforce_list input:checked").length > 0) { SelectList(1); } else { SelectList(false); jQuery("#gf_salesforce_form").val(""); } }); <?php if (isset($_REQUEST['id'])) { ?> $('#salesforce_field_list').live('load', function() { $('.salesforce_field_cell select').each(function() { var $select = $(this); var label = $.trim($('label[for='+$(this).prop('name')+']').text()); label = label.replace(' *', ''); if($select.val() === '') { $('option', $select).each(function() { if($(this).text() === label) { $(this).prop('selected', true); } }); } }); }); <?php } ?> }); </script> <script type="text/javascript"> /* jQuery(document).ready(function() { SelectList(jQuery('#gf_salesforce_list').val()); SelectForm(jQuery('#gf_salesforce_list').val(), jQuery('#gf_salesforce_form').val()); }); */ function SelectList(listId){ if(listId){ jQuery("#salesforce_form_container").slideDown(); // jQuery("#gf_salesforce_form").val(""); } else{ jQuery("#salesforce_form_container").slideUp(); EndSelectForm(""); } } function SelectForm(listId, formId){ if(!formId){ jQuery("#salesforce_field_group").slideUp(); return; } jQuery("#salesforce_wait").show(); jQuery("#salesforce_field_group").slideUp(); var mysack = new sack("<?php bloginfo('wpurl'); ?> /wp-admin/admin-ajax.php" ); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "gf_select_salesforce_form" ); mysack.setVar( "gf_select_salesforce_form", "<?php echo wp_create_nonce("gf_select_salesforce_form"); ?> " ); mysack.setVar( "objectType", listId); mysack.setVar( "form_id", formId); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() {jQuery("#salesforce_wait").hide(); alert('<?php _e("Ajax error while selecting a form", "gravity-forms-salesforce"); ?> ' )}; mysack.runAJAX(); return true; } function SetOptin(selectedField, selectedValue){ //load form fields jQuery("#salesforce_optin_field_id").html(GetSelectableFields(selectedField, 20)); var optinConditionField = jQuery("#salesforce_optin_field_id").val(); if(optinConditionField){ jQuery("#salesforce_optin_condition_message").hide(); jQuery("#salesforce_optin_condition_fields").show(); jQuery("#salesforce_optin_value").html(GetFieldValues(optinConditionField, selectedValue, 20)); } else{ jQuery("#salesforce_optin_condition_message").show(); jQuery("#salesforce_optin_condition_fields").hide(); } } function EndSelectForm(fieldList, form_meta){ //setting global form object form = form_meta; if(fieldList){ SetOptin("",""); jQuery("#salesforce_field_list").html(fieldList); jQuery("#salesforce_field_group").slideDown(); jQuery('#salesforce_field_list').trigger('load'); } else{ jQuery("#salesforce_field_group").slideUp(); jQuery("#salesforce_field_list").html(""); } jQuery("#salesforce_wait").hide(); } function GetFieldValues(fieldId, selectedValue, labelMaxCharacters){ if(!fieldId) return ""; var str = ""; var field = GetFieldById(fieldId); if(!field || !field.choices) return ""; var isAnySelected = false; for(var i=0; i<field.choices.length; i++){ var fieldValue = field.choices[i].value ? field.choices[i].value : field.choices[i].text; var isSelected = fieldValue == selectedValue; var selected = isSelected ? "selected='selected'" : ""; if(isSelected) isAnySelected = true; str += "<option value='" + fieldValue.replace("'", "'") + "' " + selected + ">" + TruncateMiddle(field.choices[i].text, labelMaxCharacters) + "</option>"; } if(!isAnySelected && selectedValue){ str += "<option value='" + selectedValue.replace("'", "'") + "' selected='selected'>" + TruncateMiddle(selectedValue, labelMaxCharacters) + "</option>"; } return str; } function GetFieldById(fieldId){ for(var i=0; i<form.fields.length; i++){ if(form.fields[i].id == fieldId) return form.fields[i]; } return null; } function TruncateMiddle(text, maxCharacters){ if(text.length <= maxCharacters) return text; var middle = parseInt(maxCharacters / 2); return text.substr(0, middle) + "..." + text.substr(text.length - middle, middle); } function GetSelectableFields(selectedFieldId, labelMaxCharacters){ var str = ""; var inputType; for(var i=0; i<form.fields.length; i++){ fieldLabel = form.fields[i].adminLabel ? form.fields[i].adminLabel : form.fields[i].label; inputType = form.fields[i].inputType ? form.fields[i].inputType : form.fields[i].type; if(inputType == "checkbox" || inputType == "radio" || inputType == "select"){ var selected = form.fields[i].id == selectedFieldId ? "selected='selected'" : ""; str += "<option value='" + form.fields[i].id + "' " + selected + ">" + TruncateMiddle(fieldLabel, labelMaxCharacters) + "</option>"; } } return str; } </script> <?php }