예제 #1
0
    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
    }
예제 #2
0
    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>
                &nbsp;&nbsp;
                <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("'", "&#039;") + "' " + selected + ">" + TruncateMiddle(field.choices[i].text, labelMaxCharacters) + "</option>";
                }

                if(!isAnySelected && selectedValue){
                    str += "<option value='" + selectedValue.replace("'", "&#039;") + "' 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 
    }