public static function edit_page() { ?> <style> .campaignmonitor_col_heading{padding-bottom:2px; border-bottom: 1px solid #ccc; font-weight: bold;} .campaignmonitor_field_cell {padding: 6px 17px 0 0; margin-right:15px;} .left_header{float:left; width:200px;} .margin_vertical_10{margin: 10px 0;} #campaignmonitor_resubscribe_warning{padding-left: 5px; padding-bottom:4px; font-size: 10px;} .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} </style> <script type="text/javascript"> var form = Array(); </script> <div class="wrap"> <img alt="<?php _e("Campaign Monitor", "gravityformsmailchimp"); ?> " style="margin: 15px 7px 0pt 0pt; float: left;" src="<?php echo self::get_base_url(); ?> /images/campaignmonitor_wordpress_icon_32.png"/> <h2><?php _e("Campaign Monitor Feed", "gravityformsmailchimp"); ?> </h2> <?php //ensures valid credentials were entered in the settings page if (!self::is_valid_key()) { ?> <tr><td colspan="2"><?php echo sprintf(__("We are unable to login to Campaign Monitor with the provided API key. Please make sure you have entered a valid API key in the %sSettings Page%s", "gravityformscampaignmonitor"), "<a href='?page=gf_settings&addon=Email+Marketing'>", "</a>"); ?> </td></tr> <?php return; } //getting setting id (0 when creating a new one) $id = !empty($_POST["campaignmonitor_setting_id"]) ? $_POST["campaignmonitor_setting_id"] : absint($_GET["id"]); $config = empty($id) ? array("is_active" => true) : GFCampaignMonitorData::get_feed($id); if (!isset($config["meta"])) { $config["meta"] = array(); } //updating meta information if (rgpost("gf_campaignmonitor_submit")) { list($client_id, $client_name) = explode("|:|", stripslashes($_POST["gf_campaignmonitor_client"])); $config["meta"]["client_id"] = $client_id; $config["meta"]["client_name"] = $client_name; list($list_id, $list_name) = explode("|:|", stripslashes($_POST["gf_campaignmonitor_list"])); $config["meta"]["contact_list_id"] = $list_id; $config["meta"]["contact_list_name"] = $list_name; $config["form_id"] = absint($_POST["gf_campaignmonitor_form"]); $merge_vars = self::get_custom_fields($list_id); $field_map = array(); foreach ($merge_vars as $var) { $field_name = "campaignmonitor_map_field_" . self::get_field_key($var); $mapped_field = stripslashes($_POST[$field_name]); if (!empty($mapped_field)) { $field_map[self::get_field_key($var)] = $mapped_field; } } $config["meta"]["field_map"] = $field_map; $config["meta"]["resubscribe"] = rgpost("campaignmonitor_resubscribe") ? true : false; $config["meta"]["optin_enabled"] = rgpost("campaignmonitor_optin_enable") ? true : false; if ($config["meta"]["optin_enabled"]) { $config["meta"]["optin_field_id"] = rgpost("campaignmonitor_optin_field_id"); $config["meta"]["optin_operator"] = rgpost("campaignmonitor_optin_operator"); $config["meta"]["optin_value"] = rgpost("campaignmonitor_optin_value"); } $is_valid = !empty($field_map["email"]); if ($is_valid) { $id = GFCampaignMonitorData::update_feed($id, $config["form_id"], $config["is_active"], $config["meta"]); ?> <div class="updated fade" style="padding:6px"><?php echo sprintf(__("Feed Updated. %sback to list%s", "gravityformscampaignmonitor"), "<a href='?page=gf_campaignmonitor'>", "</a>"); ?> </div> <input type="hidden" name="campaignmonitor_setting_id" value="<?php echo $id; ?> "/> <?php } else { ?> <div class="error" style="padding:6px"><?php echo __("Feed could not be updated. Please enter all required information below.", "gravityformscampaignmonitor"); ?> </div> <?php } } if (empty($merge_vars)) { //getting merge vars from selected list (if one was selected) $merge_vars = empty($config["meta"]["contact_list_id"]) ? array() : self::get_custom_fields($config["meta"]["contact_list_id"]); } ?> <form method="post" action=""> <input type="hidden" name="campaignmonitor_setting_id" value="<?php echo $id; ?> "/> <div class="margin_vertical_10"> <?php self::include_api(); $api = new CS_REST_General(self::get_api_key()); //getting all clients $response = $api->get_clients(); if (!$response->was_successful()) { _e("Could not get client list from Campaign Monitor.", "gravityformscampaignmonitor"); } else { $clients = $response->response; $client_id = self::get_client_id(); if (empty($client_id)) { $client_id = $config["meta"]["client_id"]; ?> <label for="gf_campaignmonitor_client" class="left_header"><?php _e("Client", "gravityformscampaignmonitor"); ?> <?php gform_tooltip("campaignmonitor_client"); ?> </label> <select id="gf_campaignmonitor_client" name="gf_campaignmonitor_client" onchange="SelectClient(jQuery(this).val());"> <option value=""><?php _e("Select a Client", "gravityformscampaignmonitor"); ?> </option> <?php foreach ($clients as $client) { $selected = $client->ClientID == $client_id ? "selected='selected'" : ""; ?> <option value="<?php echo esc_attr($client->ClientID) . "|:|" . esc_attr($client->Name); ?> " <?php echo $selected; ?> ><?php echo esc_html($client->Name); ?> </option> <?php } ?> </select> <img src="<?php echo self::get_base_url(); ?> /images/loading.gif" id="campaignmonitor_wait_client" style="display: none;"/> <?php } else { $client_name = ""; foreach ($clients as $client) { if ($client->ClientID == $client_id) { $client_name = $client->Name; } } if (empty($client_name)) { echo sprintf(__("Your API Client ID is invalid. You can change it in the %ssettings page%s", "gravityformscampaignmonitor"), "<a href='?page=gf_settings&addon=Campaign+Monitor'>", "</a>"); $client_id = 0; } else { ?> <input type="hidden" id="gf_campaignmonitor_client" name="gf_campaignmonitor_client" value="<?php echo $client_id . "|:|" . $client_name; ?> " /> <?php } } } ?> </div> <div id="gf_campaignmonitor_list_container" class="margin_vertical_10" <?php echo empty($client_id) ? "style='display:none;'" : ""; ?> > <label for="gf_campaignmonitor_list" class="left_header"><?php _e("Contact list", "gravityformscampaignmonitor"); ?> <?php gform_tooltip("campaignmonitor_contact_list"); ?> </label> <select id="gf_campaignmonitor_list" name="gf_campaignmonitor_list" onchange="SelectList(jQuery(this).val());"> <?php if (!empty($client_id)) { $lists = self::get_lists($client_id, $config["meta"]["contact_list_id"]); echo $lists; } ?> </select> </div> <div id="campaignmonitor_form_container" valign="top" class="margin_vertical_10" <?php echo empty($client_id) || empty($config["meta"]["contact_list_id"]) ? "style='display:none;'" : ""; ?> > <label for="gf_campaignmonitor_form" class="left_header"><?php _e("Gravity Form", "gravityformscampaignmonitor"); ?> <?php gform_tooltip("campaignmonitor_gravity_form"); ?> </label> <select id="gf_campaignmonitor_form" name="gf_campaignmonitor_form" onchange="SelectForm(jQuery('#gf_campaignmonitor_list').val(), jQuery(this).val());"> <option value=""><?php _e("Select a Form", "gravityformscampaignmonitor"); ?> </option> <?php $forms = RGFormsModel::get_forms(); 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 self::get_base_url(); ?> /images/loading.gif" id="campaignmonitor_wait_form" style="display: none;"/> </div> <div id="campaignmonitor_field_group" valign="top" <?php echo empty($client_id) || empty($config["meta"]["contact_list_id"]) || empty($config["form_id"]) ? "style='display:none;'" : ""; ?> > <div id="campaignmonitor_field_container" valign="top" class="margin_vertical_10" > <label for="campaignmonitor_fields" class="left_header"><?php _e("Map Fields", "gravityformscampaignmonitor"); ?> <?php gform_tooltip("campaignmonitor_map_fields"); ?> </label> <div id="campaignmonitor_field_list"> <?php if (!empty($config["form_id"])) { //getting list of all Campaign Monitor merge variables for the selected contact list if (empty($merge_vars)) { $merge_vars = $api->listMergeVars($list_id); } //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, rgar($config["meta"], "optin_field_id")); } ?> </div> </div> <div id="campaignmonitor_optin_container" valign="top" class="margin_vertical_10"> <label for="campaignmonitor_optin" class="left_header"><?php _e("Opt-In Condition", "gravityformscampaignmonitor"); ?> <?php gform_tooltip("campaignmonitor_optin_condition"); ?> </label> <div id="campaignmonitor_optin"> <table> <tr> <td> <input type="checkbox" id="campaignmonitor_optin_enable" name="campaignmonitor_optin_enable" value="1" onclick="if(this.checked){jQuery('#campaignmonitor_optin_condition_field_container').show('slow');} else{jQuery('#campaignmonitor_optin_condition_field_container').hide('slow');}" <?php echo rgar($config["meta"], "optin_enabled") ? "checked='checked'" : ""; ?> /> <label for="campaignmonitor_optin_enable"><?php _e("Enable", "gravityformscampaignmonitor"); ?> </label> </td> </tr> <tr> <td> <div id="campaignmonitor_optin_condition_field_container" <?php echo !rgar($config["meta"], "optin_enabled") ? "style='display:none'" : ""; ?> > <div id="campaignmonitor_optin_condition_fields" <?php echo empty($selection_fields) ? "style='display:none'" : ""; ?> > <?php _e("Export to Campaign Monitor if ", "gravityformscampaignmonitor"); ?> <select id="campaignmonitor_optin_field_id" name="campaignmonitor_optin_field_id" class='optin_select' onchange='jQuery("#campaignmonitor_optin_value").html(GetFieldValues(jQuery(this).val(), "", 20));'><?php echo $selection_fields; ?> </select> <select id="campaignmonitor_optin_operator" name="campaignmonitor_optin_operator" /> <option value="is" <?php echo rgar($config["meta"], "optin_operator") == "is" ? "selected='selected'" : ""; ?> ><?php _e("is", "gravityformscampaignmonitor"); ?> </option> <option value="isnot" <?php echo rgar($config["meta"], "optin_operator") == "isnot" ? "selected='selected'" : ""; ?> ><?php _e("is not", "gravityformscampaignmonitor"); ?> </option> </select> <select id="campaignmonitor_optin_value" name="campaignmonitor_optin_value" class='optin_select'> </select> </div> <div id="campaignmonitor_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('"', '\\"', rgar($config["meta"], "optin_field_id")); ?> "; var selectedValue = "<?php echo str_replace('"', '\\"', rgar($config["meta"], "optin_value")); ?> "; SetOptin(selectedField, selectedValue); }); <?php } ?> </script> </div> <div id="campaignmonitor_options_container" valign="top" class="margin_vertical_10"> <label for="campaignmonitor_options" class="left_header"><?php _e("Options", "gravityformscampaignmonitor"); ?> </label> <div id="campaignmonitor_options"> <table> <tr><td><input type="checkbox" name="campaignmonitor_resubscribe" id="campaignmonitor_resubscribe" value="1" <?php echo rgar($config["meta"], "resubscribe") ? "checked='checked'" : ""; ?> onclick="var element = jQuery('#campaignmonitor_resubscribe_warning'); if(this.checked){element.show('slow');} else{element.hide('slow');}"/> <?php _e("Resubscribe", "gravityformscampaignmonitor"); ?> <?php gform_tooltip("campaignmonitor_resubscribe"); ?> <br/><span id='campaignmonitor_resubscribe_warning' <?php echo !rgar($config["meta"], "resubscribe") ? "style='display:none'" : ""; ?> >(<?php _e("This option will re-subscribe users that have been unsubscribed. Use with caution and only when appropriate.", "gravityformscampaignmonitor"); ?> )</span></td></tr> </table> </div> </div> <div id="campaignmonitor_submit_container" class="margin_vertical_10"> <input type="submit" name="gf_campaignmonitor_submit" value="<?php echo empty($id) ? __("Save", "gravityformscampaignmonitor") : __("Update", "gravityformscampaignmonitor"); ?> " class="button-primary"/> <input type="button" value="<?php _e("Cancel", "gravityformscampaignmonitor"); ?> " class="button" onclick="javascript:document.location='admin.php?page=gf_campaignmonitor'" /> </div> </div> </form> </div> <script type="text/javascript"> function SelectClient(clientId){ jQuery("#gf_campaignmonitor_list_container").slideUp(); SelectList(); if(!clientId) return; jQuery("#campaignmonitor_wait_client").show(); var mysack = new sack("<?php bloginfo('wpurl'); ?> /wp-admin/admin-ajax.php" ); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "gf_select_campaignmonitor_client" ); mysack.setVar( "gf_select_campaignmonitor_client", "<?php echo wp_create_nonce("gf_select_campaignmonitor_client"); ?> " ); mysack.setVar( "client_id", clientId); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() {jQuery("#campaignmonitor_wait_client").hide(); alert('<?php _e("Ajax error while selecting a client", "gravityformscampaignmonitor"); ?> ' )}; mysack.runAJAX(); return true; } function EndSelectClient(lists){ if(lists){ jQuery("#gf_campaignmonitor_list").html(lists); jQuery("#gf_campaignmonitor_list_container").slideDown(); } else{ jQuery("#gf_campaignmonitor_list_container").slideUp(); jQuery("#campaignmonitor_list").html(""); } jQuery("#campaignmonitor_wait_client").hide(); } function SelectList(listId){ EndSelectForm(""); if(listId){ jQuery("#campaignmonitor_form_container").slideDown(); jQuery("#gf_campaignmonitor_form").val(""); } else{ jQuery("#campaignmonitor_form_container").slideUp(); } } function SelectForm(listId, formId){ if(!formId){ jQuery("#campaignmonitor_field_group").slideUp(); return; } jQuery("#campaignmonitor_wait_form").show(); jQuery("#campaignmonitor_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_campaignmonitor_form" ); mysack.setVar( "gf_select_campaignmonitor_form", "<?php echo wp_create_nonce("gf_select_campaignmonitor_form"); ?> " ); mysack.setVar( "list_id", listId); mysack.setVar( "form_id", formId); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() {jQuery("#campaignmonitor_wait_form").hide(); alert('<?php _e("Ajax error while selecting a form", "gravityformscampaignmonitor"); ?> ' )}; mysack.runAJAX(); return true; } function SetOptin(selectedField, selectedValue){ //load form fields jQuery("#campaignmonitor_optin_field_id").html(GetSelectableFields(selectedField, 20)); var optinConditionField = jQuery("#campaignmonitor_optin_field_id").val(); if(optinConditionField){ jQuery("#campaignmonitor_optin_condition_message").hide(); jQuery("#campaignmonitor_optin_condition_fields").show(); jQuery("#campaignmonitor_optin_value").html(GetFieldValues(optinConditionField, selectedValue, 20)); } else{ jQuery("#campaignmonitor_optin_condition_message").show(); jQuery("#campaignmonitor_optin_condition_fields").hide(); } } function EndSelectForm(fieldList, form_meta){ //setting global form object form = form_meta; if(fieldList){ SetOptin("",""); jQuery("#campaignmonitor_field_list").html(fieldList); jQuery("#campaignmonitor_field_group").slideDown(); } else{ jQuery("#campaignmonitor_field_group").slideUp(); jQuery("#campaignmonitor_field_list").html(""); } jQuery("#campaignmonitor_wait_form").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(/'/g, "'") + "' " + 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 }
private static function edit_page() { ?> <style type="text/css"> #user_registration_submit_container{clear:both;} .user_registration_col_heading{padding-bottom:2px; border-bottom: 1px solid #ccc; font-weight:bold; width:120px;} .user_registration_field_cell {padding: 6px 17px 0 0; margin-right:15px;} .user_registration_validation_error{ background-color:#ffebe8; margin: 4px 0 6px; padding: 6px; border: 1px dotted #cc0000; } .left_header { float:left; width: 260px;} .column_right { margin-left: 260px; } .margin_vertical_10{margin: 10px 0; padding-left:5px;} .margin_vertical_30{margin: 30px 0; padding-left:5px;} .width-1{width:300px;} .error { } .error li { list-style: disc; margin-left: 20px; } .error_message { margin-top: 30px; background-color: #ffebe8; border: 1px solid #cc0000; padding: 10px; width: 600px; border-radius: 3px; } .spinner { position: relative; top: 4px; left: 5px; } .hide-label { display: none; } .enabled-by-default { color: #999; } div.custom_metaname { position: relative; } span.reset { background:url("images/xit.gif") no-repeat scroll 0 -10px transparent; cursor:pointer; display:block; position:absolute; text-indent:-9999px; width:10px; height: 10px; right: 16px; top: 7px; } .hover span.reset { background-position: 0 0; } option.label { font-style: italic; color: #999; } .metaname, .metavalue { float: left; } .metavalue { margin-left: 30px; } .metaname .width-1 { margin-right: 10px; width: 220px; } .add_field_choice, .delete_field_choice { margin: 3px 0 4px 3px; } .custom_usermeta .margin_vertical_10 { overflow: hidden; margin-bottom: 0; } .custom_usermeta option.custom { font-weight: bold; } .custom_metaname { float: left; } .notice { font-size: 12px; font-style: italic; color: #aaa; } .system-option, .password-field option:last-child { font-style: italic; } .checkbox-label { font-size: 12px; } .disabled label { color: #999; } #field_group { overflow: hidden; } /* fixed issue with jumpy aniatmion in jQuery */ form.update { } form.update #option_username { display: none; } form.update #option_user_activation { display: none; } form.update label.email span { display: none; } #gfur_user_activation_type_container { display: inline; } </style> <div class="wrap"> <div style="background: url(<?php echo self::get_base_url(); ?> /images/user-registration-icon-32.png) no-repeat;" id="icon-edit" class="icon32 icon32-posts-post"><br></div> <h2> <?php _e("User Registration Settings", "gravityformsuserregistration"); ?> </h2> <?php //getting setting id (0 when creating a new one) $id = RGForms::post("user_registration_setting_id"); $id = !empty($id) ? $id : absint(RGForms::get("id")); $config = empty($id) ? array("meta" => array(), "is_active" => true) : GFUserData::get_feed($id); $is_validation_error = false; $error_messages = array(); $is_update_feed = rgars($config, 'meta/feed_type') == 'update'; // if this is an existing feed and no feed type is specified, default to "create" if ($id && !rgars($config, 'meta/feed_type')) { $config['meta']['feed_type'] = 'create'; } // handle submission $is_submit = RGForms::post("gf_user_registration_submit"); if (!empty($is_submit) && check_admin_referer('user_registration_edit_submit', 'user_registration_edit_submit')) { $form_id = RGForms::post("gf_user_registration_form"); $config["form_id"] = absint($form_id); // feed action; set to create if blank for old feeds $config["meta"]["feed_type"] = rgpost("feed_type") ? rgpost("feed_type") : 'create'; $is_update_feed = rgars($config, 'meta/feed_type') == 'update'; // standard meta $config["meta"]["username"] = $is_update_feed ? '' : rgpost("gf_user_registration_username"); $config["meta"]["firstname"] = rgpost("gf_user_registration_firstname"); $config["meta"]["lastname"] = rgpost("gf_user_registration_lastname"); $config["meta"]["displayname"] = rgpost("gf_user_registration_displayname"); $config["meta"]["email"] = rgpost("gf_user_registration_email"); $config["meta"]["password"] = rgpost("gf_user_registration_password"); $config["meta"]["role"] = rgpost("gf_user_registration_role"); // user meta $json = stripslashes(RGForms::post("gf_user_meta")); $config["meta"]["user_meta"] = GFCommon::json_decode($json); //clean user meta (workaround to avoid values being marked as array) if (is_array($config["meta"]["user_meta"])) { foreach ($config["meta"]["user_meta"] as &$meta) { if (is_array($meta["meta_value"])) { $meta["meta_value"] = $meta["meta_value"][0]; } } } // registration condition $config['meta']['reg_condition_enabled'] = RGForms::post('gf_user_registration_enabled'); $config['meta']['reg_condition_field_id'] = RGForms::post('gf_user_registration_field_id'); $config['meta']['reg_condition_operator'] = RGForms::post('gf_user_registration_operator'); $config['meta']['reg_condition_value'] = RGForms::post('gf_user_registration_value'); // additional meta options $config['meta']['notification'] = RGForms::post('gf_user_registration_notification'); $config['meta']['set_post_author'] = RGForms::post('gf_user_registration_set_post_author'); $config['meta']['user_activation'] = $is_update_feed ? false : RGForms::post('gf_user_registration_user_activation'); $config['meta']['user_activation_type'] = $is_update_feed || !$config['meta']['user_activation'] ? false : rgpost('gf_user_registration_user_activation_type'); // use to save custom config options (used by BuddyPress) $config = apply_filters("gform_user_registration_save_config", $config); // deprecated in favor of new method for generating error messages, preserved for users who may be using this $is_validation_error = apply_filters("gform_user_registration_config_validation", false, $config); if (!$config["meta"]["email"] && !$is_update_feed) { $error_messages[] = __('You must map the "Email Address" setting to a field.', 'gravityformsuserregistration'); } if (!$config["meta"]["username"] && !$is_update_feed) { $error_messages[] = __('You must map the "Username" setting to a field.', 'gravityformsuserregistration'); } $error_messages = apply_filters('gform_user_confirm_validation_error', $error_messages, $config); // validate and create/update feed if (empty($error_messages)) { $id = GFUserData::update_feed($id, $config["form_id"], $config["is_active"], $config["meta"]); ?> <div class="updated fade"> <p><?php echo sprintf(__("Feed Updated. %sback to list%s", "gravityformsuserregistration"), "<a href='?page=gf_user_registration'>", "</a>"); ?> </p> </div> <?php } else { $is_validation_error = true; } } $form = isset($config["form_id"]) && $config["form_id"] ? RGFormsModel::get_form_meta($config["form_id"]) : array(); $form_fields = $email_fields = $selection_fields = $password_fields = array(); $set_author_style = 'display:none'; if (!empty($form)) { $set_author_style = GFCommon::has_post_field($form['fields']) ? 'display:block' : 'display:none'; $form_fields = self::get_form_fields($form, $is_update_feed); $email_fields = self::get_fields_by_type($form, 'email'); $selection_fields = GFCommon::get_selection_fields($form, $config['meta']['reg_condition_field_id']); // add custom option to password fields $password_default = $is_update_feed ? array(array('', __('Preserve current password', 'gravityformsuserregistration'))) : array(array('', __('Auto Generate Password', 'gravityformsuserregistration'))); $password_fields = self::get_fields_by_type($form, 'password'); // ? self::get_fields_by_type($form, 'password') : array(); $password_fields = array_merge($password_fields, $password_default); } if (!empty($error_messages)) { ?> <div class="error"> <p><?php _e('Oops! There were some issues with your feed.', 'gravityformsuserregistration'); ?> </p> <ul><li><?php echo implode('</li><li>', $error_messages); ?> </li></ul> </div> <?php } ?> <form method="post" action="" id="gf_user_form" class="<?php echo rgars($config, 'meta/feed_type'); ?> "> <input type="hidden" name="user_registration_setting_id" value="<?php echo $id; ?> " /> <input type="hidden" name="gf_user_meta" id="gf_user_meta" value="" /> <?php wp_nonce_field('user_registration_edit_submit', 'user_registration_edit_submit'); ?> <div id="feed_settings"> <h3>Feed Settings</h3> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_action"><?php _e("Action", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_feed_type"); ?> </label> <select id="feed_type" name="feed_type" onchange="setFeedType(this);"> <option value=""><?php _e('Select an Action', 'gravityformsuserregistration'); ?> </option> <?php $action = rgars($config, 'meta/feed_type'); foreach (array('create' => 'Create User', 'update' => 'Update User') as $value => $label) { $selected = $action == $value ? 'selected="selected"' : ''; echo "<option value=\"{$value}\" {$selected}>{$label}</option>"; } ?> </select> </div> <!-- feed_type --> <div id="form_select" class="margin_vertical_10" <?php echo !rgar($config, 'form_id') ? "style='display:none;'" : ""; ?> > <label for="gf_user_registration_form" class="left_header"><?php _e("Gravity Form", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_gravity_form"); ?> </label> <select id="gf_user_registration_form" name="gf_user_registration_form" onchange="SelectForm(jQuery(this).val(), '<?php echo $id; ?> ');"> <?php $available_forms = GFUserData::get_available_forms(rgars($config, 'meta/feed_type'), $id); echo self::create_form_select_options($available_forms, $config); ?> </select> </div> <!-- / select form --> </div> <!-- / feed_settings --> <div id="field_group" valign="top" <?php echo empty($config["form_id"]) ? "style='display:none;'" : ""; ?> > <div id="standard_fields"> <h3>User Settings</h3> <div id="option_username" class="margin_vertical_10 <?php echo $is_validation_error && empty($config['meta']['username']) ? 'user_registration_validation_error' : ''; ?> "> <label class="left_header" for="gf_user_registration_username"><?php _e("Username", "gravityformsuserregistration"); ?> <span class="description">(<?php _e("required", "gravityformsuserregistration"); ?> )</span> <?php gform_tooltip("user_registration_username"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_username", $form_fields, rgar($config['meta'], 'username'), "width-1 standard-meta"); ?> </div> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_firstname"><?php _e("First Name", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_firstname"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_firstname", $form_fields, rgar($config['meta'], 'firstname'), "width-1 standard-meta"); ?> </div> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_lastname"><?php _e("Last Name", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_lastname"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_lastname", $form_fields, rgar($config['meta'], 'lastname'), "width-1 standard-meta"); ?> </div> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_displayname"> <?php _e("Display Name", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_displayname"); ?> </label> <?php $display_names = array('username' => '{username}', 'firstname' => '{first name}', 'lastname' => '{last name}', 'firstlast' => '{first name} {last name}', 'lastfirst' => '{last name} {first name}'); ?> <select id="gf_user_registration_displayname" name="gf_user_registration_displayname" class="width-1"> <?php foreach ($display_names as $key => $value) { $selected = rgar($config['meta'], 'displayname') == $key ? 'selected="selected"' : ''; ?> <option value="<?php echo $key; ?> " <?php echo $selected; ?> ><?php echo $value; ?> </option> <?php } ?> </select> </div> <div class="margin_vertical_10 <?php echo $is_validation_error && empty($config['meta']['email']) ? 'user_registration_validation_error' : ''; ?> "> <label class="left_header email" for="gf_user_registration_email"><?php _e("Email Address", "gravityformsuserregistration"); ?> <span class="description">(<?php _e("required", "gravityformsuserregistration"); ?> )</span> <?php gform_tooltip("user_registration_email"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_email", $email_fields, rgar($config['meta'], 'email'), "width-1 email-field"); ?> </div> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_password"><?php _e("Password", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_password"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_password", $password_fields, rgar($config['meta'], 'password'), "width-1 password-field", false); ?> </div> <?php $disabled = is_multisite() && rgars($config['meta'], 'multisite_options/create_site') ? 'disabled="disabled"' : ''; ?> <div class="margin_vertical_10 <?php echo $disabled ? 'disabled' : ''; ?> "> <label class="left_header" for="gf_user_registration_role"><?php _e("Role", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_role"); ?> </label> <select id="gf_user_registration_role" name="gf_user_registration_role" class="width-1" <?php echo $disabled; ?> > <?php if (is_multisite() && rgars($config, 'meta/multisite_options/create_site')) { ?> <option value="" selected="selected" class="empty-option"></option> <?php } ?> <?php self::display_role_dropdown_options(rgars($config, 'meta/role'), false, self::is_update_feed($config)); ?> </select> </div> </div> <!-- / standard fields --> <div id="user_meta_fields"> <h3>User Meta</h3> <div id="custom_usermeta" class="custom_usermeta"></div> </div> <!-- / user meta fields --> <?php do_action("gform_user_registration_add_option_section", $config, $form, $is_validation_error); // buddypress, networkmode ?> <div id="additional_options"> <h3>Additional Options</h3> <div id="gf_user_registration_send_email" class="margin_vertical_10" style="<?php echo $is_update_feed ? 'display:none;' : ''; ?> "> <label class="left_header"><?php _e("Send Email?", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_notification"); ?> </label> <input type="checkbox" id="gf_user_registration_notification" name="gf_user_registration_notification" value="1" <?php echo rgar($config['meta'], 'notification') == 1 || !isset($config["meta"]["notification"]) ? "checked='checked'" : ""; ?> /> <label for="gf_user_registration_notification" class="checkbox-label"><?php _e("Send this password to the new user by email.", "gravityformsuserregistration"); ?> </label> </div> <!-- / send email? --> <div id="gf_user_registration_set_post_author_container" class="margin_vertical_10" style="<?php echo $set_author_style; ?> "> <label class="left_header"><?php _e("Set As Post Author", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_set_post_author"); ?> </label> <input type="checkbox" id="gf_user_registration_set_post_author" name="gf_user_registration_set_post_author" value="1" <?php echo rgar($config['meta'], 'set_post_author') == 1 || !isset($config["meta"]["set_post_author"]) ? "checked='checked'" : ""; ?> /> <label for="gf_user_registration_set_post_author" class="checkbox-label"><?php _e("Enable", "gravityformsuserregistration"); ?> </label> </div> <!-- / set post author --> <div id="option_user_activation" class="margin_vertical_10"> <?php $user_activation_enabled = rgar($config['meta'], 'user_activation') == true; ?> <label class="left_header" for="gf_user_registration_user_activation"> <?php _e('User Activation', 'gravityformsuserregistration'); ?> <?php gform_tooltip('user_registration_user_activation'); ?> </label> <input type="checkbox" id="gf_user_registration_user_activation" name="gf_user_registration_user_activation" value="1" <?php echo rgar($config['meta'], 'user_activation') ? "checked='checked'" : ""; ?> onclick="ToggleUserActivation();" /> <label for="gf_user_registration_user_activation" class="checkbox-label"> <span class="unselected" style="<?php echo !$user_activation_enabled ? '' : 'display:none;'; ?> "><?php _e('Enable user activation.', 'gravityformsuserregistration'); ?> </span> <span class="selected" style="<?php echo $user_activation_enabled ? '' : 'display:none;'; ?> "><?php _e('Enable user activation', 'gravityformsuserregistration'); ?> </span> </label> <div id="gfur_user_activation_type_container" style="<?php echo rgar($config['meta'], 'user_activation') ? '' : 'display:none;'; ?> "> <select id="gf_user_registration_user_activation_type" name="gf_user_registration_user_activation_type"> <?php $user_activation_options = array('email' => 'by email', 'manual' => 'manually'); ?> <?php foreach ($user_activation_options as $value => $label) { ?> <option value="<?php echo $value; ?> " <?php selected(rgar($config['meta'], 'user_activation_type'), $value); ?> ><?php echo $label; ?> </option> <?php } ?> </select> <?php gform_tooltip('user_registration_user_activation_type'); ?> </div> </div> <!-- / user activation --> <div id="gf_user_registration_section" valign="top" class="margin_vertical_10"> <label for="gf_user_registration_optin" class="left_header"><?php _e("Registration Condition", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_condition"); ?> </label> <div id="gf_user_registration_option" class="column_right"> <input type="checkbox" id="gf_user_registration_enabled" name="gf_user_registration_enabled" value="1" onclick="if(this.checked){jQuery('#gf_user_registration_container').fadeIn('fast');} else{jQuery('#gf_user_registration_container').fadeOut('fast');}" <?php echo rgar($config['meta'], 'reg_condition_enabled') ? "checked='checked'" : ""; ?> /> <label for="gf_user_registration_enabled" class="checkbox-label"><?php _e("Enable", "gravityformsuserregistration"); ?> </label> <div id="gf_user_registration_container" style="padding-top:5px; <?php echo !$config["meta"]["reg_condition_enabled"] ? "display:none" : ""; ?> "> <div id="gf_user_registration_condition_fields" style="display:none"> <?php _e("Register the user if ", "gravityformsuserregistration"); ?> <select id="gf_user_registration_field_id" name="gf_user_registration_field_id" class='optin_select' onchange='jQuery("#gf_user_registration_value_container").html(GetFieldValues(jQuery(this).val(), "", 20));'></select> <select id="gf_user_registration_operator" name="gf_user_registration_operator"> <option value="is" <?php echo rgar($config['meta'], 'reg_condition_operator') == 'is' ? 'selected="selected"' : ''; ?> ><?php _e("is", "gravityformsuserregistration"); ?> </option> <option value="isnot" <?php echo rgar($config['meta'], 'reg_condition_operator') == "isnot" ? 'selected="selected"' : ''; ?> ><?php _e("is not", "gravityformsuserregistration"); ?> </option> <option value=">" <?php echo rgar($config['meta'], 'reg_condition_operator') == ">" ? "selected='selected'" : ""; ?> ><?php _e("greater than", "gravityformsuserregistration"); ?> </option> <option value="<" <?php echo rgar($config['meta'], 'reg_condition_operator') == "<" ? "selected='selected'" : ""; ?> ><?php _e("less than", "gravityformsuserregistration"); ?> </option> <option value="contains" <?php echo rgar($config['meta'], 'reg_condition_operator') == "contains" ? "selected='selected'" : ""; ?> ><?php _e("contains", "gravityformsuserregistration"); ?> </option> <option value="starts_with" <?php echo rgar($config['meta'], 'reg_condition_operator') == "starts_with" ? "selected='selected'" : ""; ?> ><?php _e("starts with", "gravityformsuserregistration"); ?> </option> <option value="ends_with" <?php echo rgar($config['meta'], 'reg_condition_operator') == "ends_with" ? "selected='selected'" : ""; ?> ><?php _e("ends with", "gravityformsuserregistration"); ?> </option> </select> <div id="gf_user_registration_value_container" name="gf_user_registration_value_container" style="display:inline;"></div> </div> <div id="gf_user_registration_condition_message" style="display:none"> <?php _e("To create a registration condition, your form must have a field supported by conditional logic.", "gravityformsuserregistration"); ?> </div> </div> </div> </div> <!-- / registration conditional --> <?php do_action("gform_user_registration_add_option_group", $config, $form, $is_validation_error); ?> <div id="user_registration_submit_container" class="margin_vertical_30"> <input type="submit" name="gf_user_registration_submit" value="<?php echo empty($id) ? __("Save", "gravityformsuserregistration") : __("Update", "gravityformsuserregistration"); ?> " class="button-primary"/> <input type="button" value="<?php _e("Cancel", "gravityformsuserregistration"); ?> " class="button" onclick="javascript:document.location='admin.php?page=gf_user_registration'" /> </div> <!-- / form actions --> </div> <!-- / additional options --> </div> <!-- / field group --> </form> </div> <!-- / wrap --> <script type="text/javascript"> <?php $user_meta = rgar($config['meta'], 'user_meta'); $meta_keys = self::get_user_meta_keys(array('user_url', 'aim', 'yim', 'jabber', 'description')); ?> var GFUser = { form: <?php echo !empty($form) ? GFCommon::json_encode($form) : 'new Array()'; ?> , form_fields: <?php echo !empty($form_fields) ? GFCommon::json_encode($form_fields) : "new Array()"; ?> , form_id: <?php echo rgar($config, 'form_id') ? rgar($config, 'form_id') : "''"; ?> , user_meta: <?php echo !empty($user_meta) ? GFCommon::json_encode($user_meta) : "[new MetaOption()]"; ?> , bp_gform_options: <?php echo !empty($form) ? GFCommon::json_encode(self::get_bp_gform_fields($form)) : "''"; ?> , meta_names: [ { 'name': 'Standard User Meta', 'value': '_optgroup' }, { 'name': 'Website', 'value': 'user_url' }, { 'name': 'AIM', 'value': 'aim' }, { 'name': 'Yahoo', 'value': 'yim' }, { 'name': 'Jabber / Google Talk', 'value': 'jabber' }, { 'name': 'Biographical Information', 'value': 'description' } <?php if (!empty($meta_keys)) { ?> , { 'name': 'Other User Meta', 'value': '_optgroup' } <?php foreach ($meta_keys as $meta_key) { ?> , { 'name': '<?php echo self::escape_single_quote($meta_key); ?> ', 'value': '<?php echo self::escape_single_quote($meta_key); ?> ' } <?php } ?> <?php } ?> ], } function setFeedType(elem) { var elem = jQuery(elem); var feedType = elem.val(); // hide all feed options (except feed type) hideAllOptions(); if(!feedType) return false; jQuery('form#gf_user_form').removeClass('create update').addClass(feedType); var spinner = new ajaxSpinner('select#feed_type'); jQuery.post(ajaxurl, { feed_type: feedType, feed_id: '<?php echo $id; ?> ', // only applies to existing feeds action: 'gf_user_get_available_forms' }, function(response) { spinner.destroy(); if(!response) { hideAllOptions(); displayMessage('<?php _e('There was an error getting the available forms', 'gravityformsuserregistration'); ?> ', '#feed_settings'); } else { jQuery('select#gf_user_registration_form').html(response); jQuery('#form_select').slideDown(); } } ); } function SelectForm(formId, configId){ hideAllOptions('#form_select'); if(!formId) return; var spinner = new ajaxSpinner('#form_select select'); jQuery.post(ajaxurl, { form_id: formId, feed_type: jQuery('select#feed_type').val(), action: 'gf_user_select_form', gf_user_select_form: '<?php echo wp_create_nonce("gf_user_select_form"); ?> ' }, function(response) { spinner.destroy(); if(!response) return; var formData = jQuery.parseJSON(response); EndSelectForm(formData['form'], formData['form_fields'], formData['field_options'], formData['password_options'], formData['email_options'], formData['options_meta'], formData['bp_gform_options']); } ); } function EndSelectForm(form_meta, form_fields, field_options, password_options, email_options, options_meta, bp_gform_options){ var isUpdateFeed = jQuery('select#feed_type').val() == 'update'; if(email_options == '<option value=""></option>' && jQuery('select#feed_type').val() == 'create') { displayMessage('<?php _e('This form does not have any <strong>Email</strong> fields. Please add an Email field and try again.', 'gravityformsuserregistration'); ?> ', '#feed_settings'); jQuery("#user_registration_wait").hide(); return; } else { jQuery("#invalid_form_message").hide(); } // set global form object & reset user meta GFUser.form = form_meta; GFUser.form_fields = form_fields; GFUser.bp_gform_options = bp_gform_options; GFUser.user_meta = [new MetaOption()]; // update dropdowns with selected form's fields jQuery.each(jQuery("select.standard-meta"), function(){ jQuery(this).html(field_options); }); // create feed gets auto pass option, do not add to update feed jQuery.each(jQuery("select.password-field"), function(){ var autoPass = isUpdateFeed ? '<option id="preservepass" class="system-option" value=""><?php _e('Preserve current password', 'gravityformsuserregistration'); ?> </option>' : '<option id="generatepass" class="system-option"><?php _e('Auto Generate Password', 'gravityformsuserregistration'); ?> </option>'; jQuery(this).html(password_options + autoPass); }); jQuery.each(jQuery("select.email-field"), function(){ jQuery(this).html(email_options); }); var preserveRoleElements = jQuery( '#gf_user_registration_role, #gf_user_registration_multisite_root_role' ); // update feed gets "Preserve current role" option for Role select, remove for create feed if( isUpdateFeed ) { // make sure an "preserve" option does not already exist if( jQuery( 'option.perserve_role' ).length <= 0 ) { var preserveRoleOption = jQuery( '<option class="preserve_role system-option" value="gfur_preserve_role"><?php _e('— Preserve current role —', 'gravityformsuserregistration'); ?> </option>' ); preserveRoleOption.appendTo( preserveRoleElements ).prop( 'selected', true ); } jQuery('#gf_user_registration_send_email').hide(); } else { jQuery( 'option.preserve_role' ).remove(); jQuery('#gf_user_registration_send_email').show(); } CreateCustomMetaOptions(); // handle set post author option if(options_meta['set_post_author']) { jQuery("#gf_user_registration_set_post_author_container").show(); } else { jQuery("#gf_user_registration_set_post_author_container").hide(); } // handle registration option jQuery("#gf_user_registration_enabled").attr('checked', false); SetRegistrationCondition("",""); // Form Selected Event jQuery(document).trigger('gform_user_registration_form_selected', [GFUser.form]); jQuery("#field_group").slideDown(); } function hideAllOptions(exclude) { var exclude = typeof exclude == 'undefined' ? '' : exclude; // hide all feed options (except feed type) jQuery('#error_message').not(exclude).fadeOut('fast'); jQuery('#form_select, #field_group').not(exclude).slideUp(); } function displayMessage(message, afterElem) { var messageElem = jQuery('#error_message'); if(messageElem.length <= 0) messageElem = jQuery('<div id="error_message" class="error_message" style="display:none;"></div>'); messageElem.html(message).insertAfter(afterElem).fadeIn('fast'); } function CreateCustomMetaOptions(){ var form = GFUser.form; var user_meta = GFUser.user_meta; var meta_names = GFUser.meta_names; var images_url = '<?php echo GFCommon::get_base_url() . "/images"; ?> '; var str = ''; for(var i=0; i<user_meta.length; i++){ var show_select = (user_meta[i].custom == true) ? "display:none;" : ""; var show_input = (user_meta[i].custom == false) ? "display:none;" : ""; str += '<div class="margin_vertical_10">'; str += '<div class="metaname"><select type="text" name="gf_user_meta_name_' + i + '" id="gf_user_meta_name_' + i + '" class="meta-name-select width-1" style="' + show_select + '">'; str += getMetaNameOptions(meta_names, user_meta[i].meta_name) + '</select>' str += '<div class="custom_metaname" style="' + show_input + '">' + getMetaNameInput(i, user_meta[i]) + '</div></div>'; str += '<div class="metavalue"><select type="text" name="gf_user_meta_value_' + i + '" id="gf_user_meta_value_' + i + '" class="meta-value-select width-1">'; str += getMetaValueOptions(form, user_meta[i].meta_value) + '</select></div>'; str += "<img src='" + images_url + "/add.png' class='add_field_choice' title='<?php _e("add another rule", "gravityformsuserregistration"); ?> ' alt='<?php _e("add another rule", "gravityformsuserregistration"); ?> ' style='cursor:pointer;' onclick=\"InsertRule(" + (i+1) + ", 'user_meta');\" />"; if(user_meta.length > 1 ) str += "<img src='" + images_url + "/remove.png' title='<?php _e("remove this rule", "gravityformsuserregistration"); ?> ' alt='<?php _e("remove this rule", "gravityformsuserregistration"); ?> ' class='delete_field_choice' style='cursor:pointer;' onclick=\"DeleteRule(" + (i) + ", 'user_meta');\" /></li>"; str += '</div>'; } jQuery("#custom_usermeta").html(str); } function getMetaNameOptions(meta_names, selected, custom_option) { var optGroupOpen = false; var str = '<option value="" class="label">Select Meta Option</option>'; for(i = 0; i < meta_names.length; i++) { if(meta_names[i].value == '_optgroup') { if(optGroupOpen) str += '</optgroup>'; str += '<optgroup label="' + meta_names[i].name + '">'; optGroupOpen = true; } else if(meta_names[i].value == selected) { str += '<option value="' + meta_names[i].value + '" selected="selected">' + meta_names[i].name + '</option>'; } else { str += '<option value="' + meta_names[i].value + '">' + meta_names[i].name + '</option>'; } } // close last option group if exists if(optGroupOpen) str += '</optgroup>'; if(custom_option != false) { str += '<option value="gf_custom" class="custom">Add Custom</option>'; } return str; } function getMetaValueOptions(form, meta_value) { var form_fields = GFUser.form_fields; var str = '<option value=""></option>'; for(i = 0; i < form_fields.length; i++) { if(form_fields[i][0] == meta_value) { str += '<option value="' + form_fields[i][0] + '" selected="selected">' + form_fields[i][1] + '</option>'; } else { str += '<option value="' + form_fields[i][0] + '">' + form_fields[i][1] + '</option>'; } } return str; } function getMetaNameInput(index, user_meta) { var meta_name = (user_meta.meta_name != "") ? user_meta.meta_name : "<?php _e("Enter Meta Name", "gravityformsuserregistration"); ?> "; str = '<input type="text" name="gf_user_custom_meta_name_' + index + '" id="gf_user_custom_meta_name_' + index + '" class="width-1" value="' + meta_name + '" />'; str += '<span class="reset">Reset</span>'; return str; } function InsertRule(ruleIndex, meta_group){ if(meta_group == 'user_meta') { GFUser[meta_group].splice(ruleIndex, 0, new MetaOption()); CreateCustomMetaOptions(); } else { // Insert Rule Action (used by BuddyPress) jQuery(document).trigger('gform_user_registration_insert_rule', [ruleIndex, meta_group]); } } function DeleteRule(ruleIndex, meta_group){ if(meta_group == 'user_meta') { GFUser[meta_group].splice(ruleIndex, 1); CreateCustomMetaOptions(); } else { // Delete Rule Action (used by BuddyPress) jQuery(document).trigger('gform_user_registration_delete_rule', [ruleIndex, meta_group]); } } function MetaOption() { this.meta_name = ""; this.meta_value = ""; this.custom = false; } function IndexOf(ary, item){ for(var i=0; i<ary.length; i++) if(ary[i] == item) return i; return -1; } function saveUserMeta() { var user_meta = GFUser.user_meta; for(var i=0; i<user_meta.length; i++){ user_meta[i].custom = (jQuery("#gf_user_meta_name_" + i).css('display') == 'none') ? true : false; user_meta[i].meta_name = (user_meta[i].custom == true) ? jQuery("#gf_user_custom_meta_name_" + i).val() : jQuery("#gf_user_meta_name_" + i).val(); user_meta[i].meta_value = jQuery("#gf_user_meta_value_" + i).val(); } GFUser.user_meta = user_meta; // save meta to hidden field for php var json = jQuery.toJSON(user_meta); jQuery("#gf_user_meta").val(json); } function ajaxSpinner(elem) { this.elem = elem; this.image = '<img src="<?php echo self::get_base_url(); ?> /images/loading.gif" class="spinner" />'; this.init = function() { this.spinner = jQuery(this.image); jQuery(this.elem).after(this.spinner); return this; } this.destroy = function() { jQuery(this.spinner).remove(); } return this.init(); } // initialize jQuery(document).ready(function(){ <?php if (!empty($form)) { ?> CreateCustomMetaOptions(); <?php } ?> // after GFUser is init, trigger actions jQuery(document).trigger('gform_gfuser_object_init'); // disable 'Select a form' option //jQuery(this).find('option:first').attr('disabled', 'disabled'); // custom meta input jQuery("select.meta-name-select").live('change', function(){ if(jQuery(this).val() == 'gf_custom') { jQuery(this).fadeOut(function(){ jQuery(this).val(""); jQuery(this).next('div.custom_metaname').fadeIn(); jQuery(this).next('div.custom_metaname').find('input').cleardefault().focus(); }); } }); // custom meta input reset button jQuery("span.reset").live('click', function(){ jQuery(this).parent('div.custom_metaname').fadeOut(function(){ jQuery(this).siblings('select').fadeIn(); }) }); // add hover class for custom meta input reset jQuery("div.custom_metaname").live('mouseover mouseout', function(event) { if (event.type == 'mouseover') { jQuery(this).addClass('hover'); } else { jQuery(this).removeClass('hover'); } }); // save entered information jQuery(".metaname input, .metaname select, .metavalue select").live('change', function(){ saveUserMeta(); }); jQuery("#gf_user_form").submit(function(){ saveUserMeta(); }) // clear default values jQuery.fn.cleardefault = function() { return this.focus(function() { if( this.value == this.defaultValue ) { this.value = ""; } }).blur(function() { if( !this.value.length ) { this.value = this.defaultValue; } }); } }); // Registration Conditional Functions <?php if (!empty($config["form_id"])) { ?> // initializing registration condition drop downs jQuery(document).ready(function(){ var selectedField = "<?php echo str_replace('"', '\\"', $config["meta"]["reg_condition_field_id"]); ?> "; var selectedValue = "<?php echo str_replace('"', '\\"', $config["meta"]["reg_condition_value"]); ?> "; SetRegistrationCondition(selectedField, selectedValue); }); <?php } ?> function SetRegistrationCondition(selectedField, selectedValue){ // load form fields jQuery("#gf_user_registration_field_id").html(GetSelectableFields(selectedField, 20)); var optinConditionField = jQuery("#gf_user_registration_field_id").val(); var checked = jQuery("#gf_user_registration_enabled").attr('checked'); if(optinConditionField){ jQuery("#gf_user_registration_condition_message").hide(); jQuery("#gf_user_registration_condition_fields").show(); jQuery("#gf_user_registration_value_container").html(GetFieldValues(optinConditionField, selectedValue, 20)); jQuery("#gf_user_registration_value").val(selectedValue); } else{ jQuery("#gf_user_registration_condition_message").show(); jQuery("#gf_user_registration_condition_fields").hide(); } if(!checked) jQuery("#gf_user_registration_container").hide(); } function GetFieldValues(fieldId, selectedValue, labelMaxCharacters){ if(!fieldId) return ""; var str = ""; var field = GetFieldById(fieldId); if(!field) return ""; var isAnySelected = false; if(field["type"] == "post_category" && field["displayAllCategories"]){ str += '<?php $dd = wp_dropdown_categories(array("class" => "optin_select", "orderby" => "name", "id" => "gf_user_registration_value", "name" => "gf_user_registration_value", "hierarchical" => true, "hide_empty" => 0, "echo" => false)); echo str_replace("\n", "", str_replace("'", "\\'", $dd)); ?> '; } else if(field.choices){ str += '<select id="gf_user_registration_value" name="gf_user_registration_value" class="optin_select">' for(var i=0; i<field.choices.length; i++){ var fieldValue = ( field.choices[i].value ? field.choices[i].value : field.choices[i].text ).toString(); 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>"; } str += "</select>"; } else { selectedValue = selectedValue ? selectedValue.replace(/'/g, "'") : ""; //create a text field for fields that don't have choices (i.e text, textarea, number, email, etc...) str += "<input type='text' placeholder='<?php _e("Enter value", "gravityforms"); ?> ' id='gf_user_registration_value' name='gf_user_registration_value' value='" + selectedValue.replace(/'/g, "'") + "'>"; } return str; } function GetFieldById(fieldId){ var form = GFUser.form; 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 form = GFUser.form; 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 (IsConditionalLogicField(form.fields[i])) { var selected = form.fields[i].id == selectedFieldId ? "selected='selected'" : ""; str += "<option value='" + form.fields[i].id + "' " + selected + ">" + TruncateMiddle(fieldLabel, labelMaxCharacters) + "</option>"; } } return str; } function IsConditionalLogicField(field){ inputType = field.inputType ? field.inputType : field.type; var supported_fields = ["checkbox", "radio", "select", "text", "website", "textarea", "email", "hidden", "number", "phone", "multiselect", "post_title", "post_tags", "post_custom_field", "post_content", "post_excerpt"]; var index = jQuery.inArray(inputType, supported_fields); return index >= 0; } function ToggleUserActivation() { var setting = jQuery('#option_user_activation'); var isUserActivationEnabled = setting.find('#gf_user_registration_user_activation').is(":checked"); var userActivationTypeContainer = setting.find('#gfur_user_activation_type_container'); var userActivationLabel = setting.find('label[for="gf_user_registration_user_activation"]'); if( isUserActivationEnabled ) { userActivationTypeContainer.show(); userActivationLabel.find('span.selected').show(); userActivationLabel.find('span.unselected').hide(); } else { userActivationTypeContainer.hide(); userActivationLabel.find('span.unselected').show(); userActivationLabel.find('span.selected').hide(); } } </script> <?php }
public static function select_mailchimp_form() { check_ajax_referer("gf_select_mailchimp_form", "gf_select_mailchimp_form"); $form_id = intval(rgpost("form_id")); list($list_id, $list_name) = explode("|:|", rgpost("list_id")); $setting_id = intval(rgpost("setting_id")); $api = self::get_api(); if (!$api) { die("EndSelectForm();"); } //getting list of all MailChimp merge variables for the selected contact list self::log("Retrieving Merge_Vars for list {$list_id}", "debug"); $merge_vars = $api->listMergeVars($list_id); self::log("Merge_Vars retrieved: " . print_r($merge_vars, true), "debug"); //getting configuration $config = GFMailChimpData::get_feed($setting_id); //getting field map UI $str = self::get_field_mapping($config, $form_id, $merge_vars); //getting list of selection fields to be used by the optin $form_meta = RGFormsModel::get_form_meta($form_id); $selection_fields = GFCommon::get_selection_fields($form_meta, rgars($config, "meta/optin_field_id")); $group_condition = array(); $group_names = array(); $grouping = self::get_groupings($config, $list_id, $selection_fields, $group_condition, $group_names); //fields meta $form = RGFormsModel::get_form_meta($form_id); die("EndSelectForm('" . str_replace("'", "\\'", $str) . "', " . GFCommon::json_encode($form) . ", '" . str_replace("'", "\\'", $grouping) . "', " . json_encode($group_names) . " );"); }
private static function edit_page() { ?> <style> .constantcontact_col_heading{padding-bottom:2px; border-bottom: 1px solid #ccc; font-weight:bold;} .constantcontact_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;} .margin_vertical_10{margin: 10px 0;} </style> <script type="text/javascript"> var form = Array(); </script> <div class="wrap"> <?php self::ctct_logo(); ?> <h2><?php _e("Constant Contact Feed", "gravity-forms-constant-contact"); ?> </h2> <div class="clear"></div> <?php //ensures valid credentials were entered in the settings page if (!get_option('gravity_forms_cc_valid_api')) { ?> <div class="error" id="message"><p><?php echo sprintf(__("We are unable to login to Constant Contact with the provided credentials. Please make sure they are valid in the %sSettings Page%s.", "gravity-forms-constant-contact"), "<a href='?page=gf_settings&addon=Constant+Contact'>", "</a>"); ?> </p></div> <?php return; } $api = self::get_api(); //getting setting id (0 when creating a new one) $id = !empty($_POST["constantcontact_setting_id"]) ? $_POST["constantcontact_setting_id"] : absint($_GET["id"]); $config = empty($id) ? array('is_active' => true) : GFConstantContactData::get_feed($id); //getting merge vars from selected list (if one was selected) $merge_vars = empty($config['meta']['contact_list_id']) ? array() : $api->listMergeVars($config['meta']['contact_list_id']); //updating meta information if (isset($_POST['gf_constantcontact_submit'])) { list($list_id, $list_name) = self::get_constantcontact_list_details($_POST["gf_constantcontact_list"]); $config["meta"]["contact_list_id"] = $list_id; $config["meta"]["contact_list_name"] = $list_name; $config["form_id"] = absint($_POST["gf_constantcontact_form"]); $is_valid = true; $merge_vars = $api->listMergeVars($config["meta"]["contact_list_id"]); $field_map = array(); foreach ($merge_vars as $var) { $field_name = "constantcontact_map_field_" . $var["tag"]; $mapped_field = stripslashes($_POST[$field_name]); if (!empty($mapped_field)) { $field_map[$var["tag"]] = $mapped_field; } else { unset($field_map[$var["tag"]]); if ($var["req"] == "Y") { $is_valid = false; } } } $config["meta"]["field_map"] = $field_map; $config["meta"]["optin_enabled"] = !empty($_POST["constantcontact_optin_enable"]) ? true : false; $config["meta"]["optin_field_id"] = !empty($config["meta"]["optin_enabled"]) ? $_POST["constantcontact_optin_field_id"] : ""; $config["meta"]["optin_operator"] = !empty($config["meta"]["optin_enabled"]) ? $_POST["constantcontact_optin_operator"] : ""; $config["meta"]["optin_value"] = $config["meta"]["optin_enabled"] ? $_POST["constantcontact_optin_value"] : ""; if ($is_valid) { $id = GFConstantContactData::update_feed($id, $config["form_id"], $config["is_active"], $config["meta"]); ?> <div class="updated fade" style="padding:6px"><?php echo sprintf(__("Feed Updated. %sback to list%s", "gravity-forms-constant-contact"), "<a href='?page=gf_constantcontact'>", "</a>"); ?> </div> <input type="hidden" name="constantcontact_setting_id" value="<?php echo $id; ?> "/> <?php } else { ?> <div class="error" style="padding:6px"><?php echo __("Feed could not be updated. Please enter all required information below.", "gravity-forms-constant-contact"); ?> </div> <?php } } ?> <form method="POST" action="<?php echo remove_query_arg('refresh'); ?> "> <input type="hidden" name="constantcontact_setting_id" value="<?php echo $id; ?> "/> <div class="margin_vertical_10"> <label for="gf_constantcontact_list" class="left_header"><?php _e("Constant Contact list", "gravity-forms-constant-contact"); ?> <?php gform_tooltip("constantcontact_contact_list"); ?> </label> <?php //getting all contact lists $lists = $api->CC_List()->getLists(); if (empty($lists)) { echo __("Could not load Constant Contact contact lists. <br/>Error: ", "gravity-forms-constant-contact") . $api->errorMessage; } else { ?> <select id="gf_constantcontact_list" name="gf_constantcontact_list" onchange="SelectList(jQuery(this).val());"> <option value="" ><?php _e("Select a Constant Contact List", "gravity-forms-constant-contact"); ?> </option> <?php $curr_contact_list_id = isset($config["meta"]["contact_list_id"]) ? $config["meta"]["contact_list_id"] : ''; foreach ($lists as $list) { echo '<option value="' . esc_attr(self::get_cc_list_short_id($list['id'])) . '" ' . selected($list['id'], $curr_contact_list_id, false) . '>' . esc_html($list['title']) . '</option>'; } ?> </select> <?php } ?> </div> <div id="constantcontact_form_container" valign="top" class="margin_vertical_10" <?php echo empty($config["meta"]["contact_list_id"]) ? "style='display:none;'" : ""; ?> > <label for="gf_constantcontact_form" class="left_header"><?php _e("Gravity Form", "gravity-forms-constant-contact"); ?> <?php gform_tooltip("constantcontact_gravity_form"); ?> </label> <select id="gf_constantcontact_form" name="gf_constantcontact_form" onchange="SelectForm(jQuery('#gf_constantcontact_list').val(), jQuery(this).val());"> <option value=""><?php _e("Select a form", "gravity-forms-constant-contact"); ?> </option> <?php $curr_form_id = isset($config['form_id']) ? $config['form_id'] : ''; $forms = RGFormsModel::get_forms(); foreach ($forms as $form) { echo '<option value="' . absint($form->id) . '" ' . selected(absint($form->id), $curr_form_id, false) . '>' . esc_html($form->title) . '</option>'; } ?> </select> <span class="spinner" id="constantcontact_wait" style="display:none; float:none; position:absolute; margin-top: .33em;"></span> </div> <div id="constantcontact_field_group" valign="top" <?php echo empty($config["meta"]["contact_list_id"]) || empty($config["form_id"]) ? "style='display:none;'" : ""; ?> > <div id="constantcontact_field_container" valign="top" class="margin_vertical_10" > <label for="constantcontact_fields" class="left_header"><?php _e("Map Fields", "gravity-forms-constant-contact"); ?> <?php gform_tooltip("constantcontact_map_fields"); ?> </label> <div id="constantcontact_field_list"> <?php $selection_fields = ''; if (!empty($config["form_id"])) { //getting list of all ConstantContact merge variables for the selected contact list if (empty($merge_vars)) { $merge_vars = $api->listMergeVars($list_id); } //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> <div id="constantcontact_optin_container" valign="top" class="margin_vertical_10"> <label for="constantcontact_optin" class="left_header"><?php _e("Opt-In Condition", "gravity-forms-constant-contact"); ?> <?php gform_tooltip("constantcontact_optin_condition"); ?> </label> <div id="constantcontact_optin"> <table> <tr> <td> <input type="checkbox" id="constantcontact_optin_enable" name="constantcontact_optin_enable" value="1" onclick="if(this.checked){jQuery('#constantcontact_optin_condition_field_container').show('slow');} else{jQuery('#constantcontact_optin_condition_field_container').hide('slow');}" <?php echo @$config["meta"]["optin_enabled"] ? "checked='checked'" : ""; ?> /> <label for="constantcontact_optin_enable"><?php _e("Enable", "gravity-forms-constant-contact"); ?> </label> </td> </tr> <tr> <td> <div id="constantcontact_optin_condition_field_container" <?php echo empty($config["meta"]["optin_enabled"]) ? "style='display:none'" : ""; ?> > <div id="constantcontact_optin_condition_fields" <?php echo empty($selection_fields) ? "style='display:none'" : ""; ?> > <?php _e("Export to Constant Contact if ", "gravity-forms-constant-contact"); ?> <select id="constantcontact_optin_field_id" name="constantcontact_optin_field_id" class='optin_select' onchange='jQuery("#constantcontact_optin_value").html(GetFieldValues(jQuery(this).val(), "", 20));'><?php echo $selection_fields; ?> </select> <select id="constantcontact_optin_operator" name="constantcontact_optin_operator" > <option value="is" <?php echo @$config["meta"]["optin_operator"] == "is" ? "selected='selected'" : ""; ?> ><?php _e("is", "gravity-forms-constant-contact"); ?> </option> <option value="isnot" <?php echo @$config["meta"]["optin_operator"] == "isnot" ? "selected='selected'" : ""; ?> ><?php _e("is not", "gravity-forms-constant-contact"); ?> </option> </select> <select id="constantcontact_optin_value" name="constantcontact_optin_value" class='optin_select'> </select> </div> <div id="constantcontact_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="constantcontact_submit_container" class="margin_vertical_10"> <input type="submit" name="gf_constantcontact_submit" value="<?php echo empty($id) ? __("Save Feed", "gravity-forms-constant-contact") : __("Update Feed", "gravity-forms-constant-contact"); ?> " class="button-primary"/> </div> </div> </form> </div> <script type="text/javascript"> function SelectList(listId){ if(listId){ jQuery("#constantcontact_form_container").slideDown(); jQuery("#gf_constantcontact_form").val(""); } else{ jQuery("#constantcontact_form_container").slideUp(); EndSelectForm(""); } } function SelectForm(listId, formId){ if(!formId){ jQuery("#constantcontact_field_group").slideUp(); return; } jQuery("#constantcontact_wait").css('display', 'inline-block'); jQuery("#constantcontact_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_constantcontact_form" ); mysack.setVar( "gf_select_constantcontact_form", "<?php echo wp_create_nonce("gf_select_constantcontact_form"); ?> " ); mysack.setVar( "list_id", listId); mysack.setVar( "form_id", formId); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() {jQuery("#constantcontact_wait").hide(); alert('<?php _e("Ajax error while selecting a form", "gravity-forms-constant-contact"); ?> ' )}; mysack.runAJAX(); return true; } function SetOptin(selectedField, selectedValue){ //load form fields jQuery("#constantcontact_optin_field_id").html(GetSelectableFields(selectedField, 20)); var optinConditionField = jQuery("#constantcontact_optin_field_id").val(); if(optinConditionField){ jQuery("#constantcontact_optin_condition_message").hide(); jQuery("#constantcontact_optin_condition_fields").show(); jQuery("#constantcontact_optin_value").html(GetFieldValues(optinConditionField, selectedValue, 20)); } else{ jQuery("#constantcontact_optin_condition_message").show(); jQuery("#constantcontact_optin_condition_fields").hide(); } } function EndSelectForm(fieldList, form_meta){ //setting global form object form = form_meta; if(fieldList){ SetOptin("",""); jQuery("#constantcontact_field_list").html(fieldList); jQuery("#constantcontact_field_group").slideDown(); } else{ jQuery("#constantcontact_field_group").slideUp(); jQuery("#constantcontact_field_list").html(""); } jQuery("#constantcontact_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 }
private static function edit_page() { if (!function_exists('gform_tooltip')) { require_once GFCommon::get_base_path() . "/tooltips.php"; } ?> <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: 60%; min-width: 500px; border-collapse: collapse; margin-top: 1em; } .salesforce_field_cell { padding: 6px 17px 0 0; margin-right:15px; min-width: 150px;} .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(); ?> /assets/images/salesforce-256x256.png" style="float:left; margin:15px 7px 10px 0;" width="84"/> <h2><?php _e("Salesforce Feeds", "gravity-forms-salesforce"); ?> </h2> <ul class="subsubsub"> <li><a href="<?php echo self::link_to_settings(); ?> ">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='" . self::link_to_settings() . "'>", "</a>")); ?> </div> <?php return; } //getting setting id (0 when creating a new one) $id = !empty($_POST["salesforce_setting_id"]) ? absint($_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::getFieldsForObject($_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"] : ""; $config['meta']['manual_export'] = !empty($_POST['salesforce_manual_export']) ? true : false; // since 2.6.0 $config["meta"]["primary_field"] = !empty($_POST['salesforce_primary_field']) ? $_POST['salesforce_primary_field'] : ''; // since 2.5.2 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 } } ?> <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.", "gravity-forms-salesforce"); echo isset($api->errorMessage) ? ' <br/>' . $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-salesforce"); ?> </option> <?php foreach ($lists as $name => $label) { ?> <option value="<?php echo esc_html($name); ?> " <?php selected(isset($config["meta"]["contact_object_name"]) && $name === $config["meta"]["contact_object_name"]); ?> ><?php echo esc_html($label); ?> </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" 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) { if (isset($config["form_id"]) && absint($form->id) == $config["form_id"]) { $selected = "selected='selected'"; } else { $selected = ""; } ?> <option value="<?php echo absint($form->id); ?> " <?php echo $selected; ?> ><?php echo esc_html($form->title); ?> </option> <?php } ?> </select><span class="spinner salesforce_wait" style="display: none; position: absolute;"></span> </div> <div class="clear"></div> <div id="salesforce_field_group" <?php echo empty($config["meta"]["contact_object_name"]) || empty($config["form_id"]) ? "style='display:none;'" : ""; ?> > <div id="salesforce_field_container" 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"); ?> </h3> <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::getFieldsForObject($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> <?php /** Manual Export - Bypass automatic export (since 2.6.0) */ ?> <div id="salesforce_manual_export_container" class="margin_vertical_10"> <table class="form-table"> <tr valign="top"> <th scope="row"><?php esc_html_e('Disable Automatic Export', "gravity-forms-salesforce"); ?> <?php gform_tooltip("salesforce_manual_export"); ?> </th> <td> <fieldset> <legend class="screen-reader-text"><span><?php _e('Disable Automatic Export', "gravity-forms-salesforce"); ?> </span></legend> <label for="salesforce_manual_export"> <input name="salesforce_manual_export" type="checkbox" id="salesforce_manual_export" value="1" <?php echo !empty($config['meta']['manual_export']) ? 'checked="checked"' : ''; ?> > <?php esc_html_e('Entries will be sent to Salesforce when updated in the admin', "gravity-forms-salesforce"); ?> </label> </fieldset> </td> </tr> </table> </div> <div id="salesforce_optin_container" 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> <?php /** define the field to be used as primary key when exporting entry to salesforce, thus avoiding duplicate entries (since 2.5.2) */ ?> <?php if (!empty($config['meta']['contact_object_name'])) { $current_primary_field = !empty($config['meta']['primary_field']) ? $config['meta']['primary_field'] : ''; ?> <div id="salesforce_optin_container" class="margin_vertical_10"> <h2><?php _e('4. Choose a "Primary Key" field.', "gravity-forms-salesforce"); ?> </h2> <h3 class="description"><?php _e('What field should be used to update existing objects?', "gravity-forms-salesforce"); ?> </h3> <label for="salesforce_primary_field" class="left_header"><?php esc_html_e('Update Field', 'gravity-forms-salesforce'); ?> </label> <table> <tr valign="top"> <td scope="row"></td> <td> <select id="salesforce_primary_field" name="salesforce_primary_field"> <?php echo self::render_options_as_fields($config['meta']['contact_object_name'], $current_primary_field); ?> </select> <span class="howto"><?php esc_html_e('If you want to update a pre-existing object, define what should be used as an unique identifier ("Primary Key"). For example, this may be an email address, Lead ID, or address.', 'gravity-forms-salesforce'); ?> </span> </td> </tr> </table> </div> <?php } ?> <div class="button-controls submit"> <input type="submit" name="gf_salesforce_submit" value="<?php echo empty($id) ? __("Save Feed", "gravity-forms-salesforce") : __("Update Feed", "gravity-forms-salesforce"); ?> " class="button button-primary button-hero"/> </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"> function SelectList(listId){ if(listId){ jQuery("#salesforce_form_container").slideDown(); } else{ jQuery("#salesforce_form_container").slideUp(); EndSelectForm(""); } } function SelectForm(listId, formId){ if(!formId){ jQuery("#salesforce_field_group").slideUp(); return; } jQuery(".salesforce_wait").css({ 'display': 'inline-block', }); 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 echo esc_js(__("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 }
private static function get_routing_fields($form, $selected_field_id) { return GFCommon::get_selection_fields($form, $selected_field_id); }
private static function edit_page() { ?> <style type="text/css"> #user_registration_submit_container{clear:both;} .user_registration_col_heading{padding-bottom:2px; border-bottom: 1px solid #ccc; font-weight:bold; width:120px;} .user_registration_field_cell {padding: 6px 17px 0 0; margin-right:15px;} .user_registration_validation_error{ background-color:#FFDFDF; margin-top:4px; margin-bottom:6px; padding-top:6px; padding-bottom:6px; border:1px dotted #C89797;} .user_registration_validation_error span {color: red;} .left_header { float:left; width: 260px;} .column_right { margin-left: 260px; } .margin_vertical_10{margin: 10px 0; padding-left:5px;} .margin_vertical_30{margin: 30px 0; padding-left:5px;} .width-1{width:300px;} .gf_user_registration_invalid_form{margin-top:30px; background-color:#FFEBE8;border:1px solid #CC0000; padding:10px; width:600px;} .hide-label { display: none; } .enabled-by-default { color: #999; } div.custom_metaname { position: relative; } span.reset { background:url("images/xit.gif") no-repeat scroll 0 -10px transparent; cursor:pointer; display:block; position:absolute; text-indent:-9999px; width:10px; height: 10px; right: 16px; top: 7px; } .hover span.reset { background-position: 0 0; } option.label { font-style: italic; color: #999; } .metaname, .metavalue { float: left; } .metavalue { margin-left: 30px; } .metaname .width-1 { margin-right: 10px; width: 220px; } .add_field_choice, .delete_field_choice { margin: 3px 0 4px 3px; } .custom_usermeta .margin_vertical_10 { overflow: hidden; margin-bottom: 0; } .custom_usermeta option.custom { font-weight: bold; } .custom_metaname { float: left; } .notice { font-size: 12px; font-style: italic; color: #aaa; } .system-option, .password-field option:last-child { font-style: italic; } .checkbox-label { font-size: 12px; } .disabled label { color: #999; } </style> <div class="wrap"> <img alt="<?php _e("User Registration", "gravityformsuserregistration"); ?> " style="margin: 15px 7px 0pt 0pt; float: left;" src="<?php echo self::get_base_url(); ?> /images/user-registration-icon-32.png"/> <h2><?php _e("User Registration Settings", "gravityformsuserregistration"); ?> </h2> <?php //getting setting id (0 when creating a new one) $id = RGForms::post("user_registration_setting_id"); $id = !empty($id) ? $id : absint(RGForms::get("id")); $config = empty($id) ? array("meta" => array(), "is_active" => true) : GFUserData::get_feed($id); $is_validation_error = false; // handle submission $is_submit = RGForms::post("gf_user_registration_submit"); if (!empty($is_submit) && check_admin_referer('user_registration_edit_submit', 'user_registration_edit_submit')) { $form_id = RGForms::post("gf_user_registration_form"); $config["form_id"] = absint($form_id); // standard meta $config["meta"]["username"] = RGForms::post("gf_user_registration_username"); $config["meta"]["firstname"] = RGForms::post("gf_user_registration_firstname"); $config["meta"]["lastname"] = RGForms::post("gf_user_registration_lastname"); $config["meta"]["displayname"] = RGForms::post("gf_user_registration_displayname"); $config["meta"]["email"] = RGForms::post("gf_user_registration_email"); $config["meta"]["password"] = RGForms::post("gf_user_registration_password"); $config["meta"]["role"] = RGForms::post("gf_user_registration_role"); // user meta $json = stripslashes(RGForms::post("gf_user_meta")); $config["meta"]["user_meta"] = GFCommon::json_decode($json); //clean user meta (workaround to avoid values being marked as array) if (is_array($config["meta"]["user_meta"])) { foreach ($config["meta"]["user_meta"] as &$meta) { if (is_array($meta["meta_value"])) { $meta["meta_value"] = $meta["meta_value"][0]; } } } // registration condition $config['meta']['reg_condition_enabled'] = RGForms::post('gf_user_registration_enabled'); $config['meta']['reg_condition_field_id'] = RGForms::post('gf_user_registration_field_id'); $config['meta']['reg_condition_operator'] = RGForms::post('gf_user_registration_operator'); $config['meta']['reg_condition_value'] = RGForms::post('gf_user_registration_value'); // additional meta options $config['meta']['notification'] = RGForms::post('gf_user_registration_notification'); $config['meta']['set_post_author'] = RGForms::post('gf_user_registration_set_post_author'); // use to save custom config options (used by BuddyPress) $config = apply_filters("gform_user_registration_save_config", $config); $is_validation_error = apply_filters("gform_user_registration_config_validation", false, $config); // validate and create/update feed if ($config["meta"]["email"] && $config["meta"]["username"] && !$is_validation_error) { $id = GFUserData::update_feed($id, $config["form_id"], $config["is_active"], $config["meta"]); ?> <div class="updated fade" style="padding:6px"><?php echo sprintf(__("Feed Updated. %sback to list%s", "gravityformsuserregistration"), "<a href='?page=gf_user_registration'>", "</a>"); ?> </div> <?php } else { $is_validation_error = true; } } $form = isset($config["form_id"]) && $config["form_id"] ? RGFormsModel::get_form_meta($config["form_id"]) : array(); $form_fields = $email_fields = $selection_fields = $password_fields = array(); if (!empty($form)) { $set_author_style = GFCommon::has_post_field($form['fields']) ? 'display:block' : 'display:none'; $form_fields = self::get_form_fields($form); $email_fields = self::get_fields_by_type($form, 'email'); $selection_fields = GFCommon::get_selection_fields($form, $config['meta']['reg_condition_field_id']); // add custom option to password fields $password_default = array(array('', __('Auto Generate Password', 'gravityformsuserregistration'))); $password_fields = self::get_fields_by_type($form, 'password'); $password_fields = array_merge($password_fields, $password_default); } ?> <form method="post" action="" id="gf_user_form"> <input type="hidden" name="user_registration_setting_id" value="<?php echo $id; ?> " /> <input type="hidden" name="gf_user_meta" id="gf_user_meta" value="" /> <?php wp_nonce_field('user_registration_edit_submit', 'user_registration_edit_submit'); ?> <div class="margin_vertical_10<?php echo $is_validation_error ? " user_registration_validation_error" : ""; ?> "> <?php if ($is_validation_error) { ?> <span><?php _e('Your Registration Feed could not be saved. Please update the errors below and re-save your feed.', 'gravityformsuserregistration'); ?> </span> <?php } ?> </div> <!-- / validation message --> <div id="user_registration_form_container" valign="top" class="margin_vertical_10"> <label for="gf_user_registration_form" class="left_header"><?php _e("Gravity Form", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_gravity_form"); ?> </label> <select id="gf_user_registration_form" name="gf_user_registration_form" onchange="SelectForm(jQuery(this).val(), '<?php echo rgar($config, 'id'); ?> ');"> <option value=""><?php _e("Select a form", "gravityformsuserregistration"); ?> </option> <?php $active_form = $config["form_id"]; $available_forms = GFUserData::get_available_forms($active_form); foreach ($available_forms as $current_form) { $selected = absint($current_form->id) == $config["form_id"] ? 'selected="selected"' : ''; ?> <option value="<?php echo absint($current_form->id); ?> " <?php echo $selected; ?> ><?php echo esc_html($current_form->title); ?> </option> <?php } ?> </select> <img src="<?php echo self::get_base_url(); ?> /images/loading.gif" id="user_registration_wait" style="display: none;"/> <div id="gf_user_registration_invalid_product_form" class="gf_user_registration_invalid_form" style="display:none;"> <?php _e("The form selected does not have any Email fields. Please add an Email field to the form and try again.", "gravityformsuserregistration"); ?> </div> </div> <!-- / select form --> <div id="user_registration_field_group" valign="top" <?php echo empty($config["form_id"]) ? "style='display:none;'" : ""; ?> > <div id="standard_fields"> <h3>User Settings</h3> <div class="margin_vertical_10 <?php echo $is_validation_error && empty($config['meta']['username']) ? 'user_registration_validation_error' : ''; ?> "> <label class="left_header" for="gf_user_registration_username"><?php _e("Username", "gravityformsuserregistration"); ?> <span class="description">(<?php _e("required", "gravityformsuserregistration"); ?> )</span> <?php gform_tooltip("user_registration_username"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_username", $form_fields, rgar($config['meta'], 'username'), "width-1 standard-meta"); ?> </div> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_firstname"><?php _e("First Name", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_firstname"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_firstname", $form_fields, rgar($config['meta'], 'firstname'), "width-1 standard-meta"); ?> </div> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_lastname"><?php _e("Last Name", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_lastname"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_lastname", $form_fields, rgar($config['meta'], 'lastname'), "width-1 standard-meta"); ?> </div> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_displayname"> <?php _e("Display Name", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_displayname"); ?> </label> <?php $display_names = array('username' => '{username}', 'firstname' => '{first name}', 'lastname' => '{last name}', 'firstlast' => '{first name} {last name}', 'lastfirst' => '{last name} {first name}'); ?> <select id="gf_user_registration_displayname" name="gf_user_registration_displayname" class="width-1 standard-meta"> <?php foreach ($display_names as $key => $value) { $selected = rgar($config['meta'], 'displayname') == $key ? 'selected="selected"' : ''; ?> <option value="<?php echo $key; ?> " <?php echo $selected; ?> ><?php echo $value; ?> </option> <?php } ?> </select> </div> <div class="margin_vertical_10 <?php echo $is_validation_error && empty($config['meta']['email']) ? 'user_registration_validation_error' : ''; ?> "> <label class="left_header" for="gf_user_registration_email"><?php _e("Email Address", "gravityformsuserregistration"); ?> <span class="description">(<?php _e("required", "gravityformsuserregistration"); ?> )</span> <?php gform_tooltip("user_registration_email"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_email", $email_fields, rgar($config['meta'], 'email'), "width-1 email-field"); ?> </div> <div class="margin_vertical_10"> <label class="left_header" for="gf_user_registration_password"><?php _e("Password", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_password"); ?> </label> <?php echo self::get_field_drop_down("gf_user_registration_password", $password_fields, rgar($config['meta'], 'password'), "width-1 password-field", false); ?> </div> <?php $disabled = is_multisite() && rgars($config['meta'], 'multisite_options/create_site') ? 'disabled="disabled"' : ''; ?> <div class="margin_vertical_10 <?php echo $disabled ? 'disabled' : ''; ?> "> <label class="left_header" for="gf_user_registration_role"><?php _e("Role", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_role"); ?> </label> <select id="gf_user_registration_role" name="gf_user_registration_role" class="width-1" <?php echo $disabled; ?> > <?php if (is_multisite() && rgars($config['meta'], 'multisite_options/create_site')) { ?> <option value="" selected="selected" class="empty-option"></option> <?php } ?> <?php self::display_role_dropdown_options(rgars($config, 'meta/role')); ?> </select> </div> </div> <!-- / standard fields --> <div id="user_meta_fields"> <h3>User Meta</h3> <div id="custom_usermeta" class="custom_usermeta"></div> </div> <!-- / user meta fields --> <?php do_action("gform_user_registration_add_option_section", $config, $form, $is_validation_error); // buddypress, networkmode ?> <div id="additional_options"> <h3>Additional Options</h3> <div class="margin_vertical_10"> <label class="left_header"><?php _e("Send Email?", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_notification"); ?> </label> <input type="checkbox" id="gf_user_registration_notification" name="gf_user_registration_notification" value="1" <?php echo rgar($config['meta'], 'notification') == 1 || !isset($config["meta"]["notification"]) ? "checked='checked'" : ""; ?> /> <label for="gf_user_registration_notification" class="checkbox-label"><?php _e("Send this password to the new user by email.", "gravityformsuserregistration"); ?> </label> </div> <!-- / send email? --> <div id="gf_user_registration_set_post_author_container" class="margin_vertical_10" style="<?php echo $set_author_style; ?> "> <label class="left_header"><?php _e("Set As Post Author", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_set_post_author"); ?> </label> <input type="checkbox" id="gf_user_registration_set_post_author" name="gf_user_registration_set_post_author" value="1" <?php echo rgar($config['meta'], 'set_post_author') == 1 || !isset($config["meta"]["set_post_author"]) ? "checked='checked'" : ""; ?> /> <label for="gf_user_registration_set_post_author" class="checkbox-label"><?php _e("Enable", "gravityformsuserregistration"); ?> </label> </div> <!-- / set post author --> <div id="gf_user_registration_section" valign="top" class="margin_vertical_10"> <label for="gf_user_registration_optin" class="left_header"><?php _e("Registration Condition", "gravityformsuserregistration"); ?> <?php gform_tooltip("user_registration_condition"); ?> </label> <div id="gf_user_registration_option" class="column_right"> <input type="checkbox" id="gf_user_registration_enabled" name="gf_user_registration_enabled" value="1" onclick="if(this.checked){jQuery('#gf_user_registration_container').fadeIn('fast');} else{jQuery('#gf_user_registration_container').fadeOut('fast');}" <?php echo rgar($config['meta'], 'reg_condition_enabled') ? "checked='checked'" : ""; ?> /> <label for="gf_user_registration_enabled" class="checkbox-label"><?php _e("Enable", "gravityformsuserregistration"); ?> </label> <div id="gf_user_registration_container" style="padding-top:5px; <?php echo !$config["meta"]["reg_condition_enabled"] ? "display:none" : ""; ?> "> <div id="gf_user_registration_condition_fields" <?php echo empty($selection_fields) ? "style='display:none'" : ""; ?> > <?php _e("Register the user if ", "gravityformsuserregistration"); ?> <select id="gf_user_registration_field_id" name="gf_user_registration_field_id" class='optin_select' onchange='jQuery("#gf_user_registration_value").html(GetFieldValues(jQuery(this).val(), "", 20));'> <?php echo $selection_fields; ?> </select> <select id="gf_user_registration_operator" name="gf_user_registration_operator"> <option value="is" <?php echo rgar($config['meta'], 'reg_condition_operator') == 'is' ? 'selected="selected"' : ''; ?> ><?php _e("is", "gravityformsuserregistration"); ?> </option> <option value="isnot" <?php echo rgar($config['meta'], 'reg_condition_operator') == "isnot" ? 'selected="selected"' : ''; ?> ><?php _e("is not", "gravityformsuserregistration"); ?> </option> </select> <select id="gf_user_registration_value" name="gf_user_registration_value" class='optin_select'></select> </div> <div id="gf_user_registration_condition_message" <?php echo !empty($selection_fields) ? "style='display:none'" : ""; ?> > <?php _e("To create a registration condition, your form must have a drop down, checkbox or multiple choice field", "gravityformsuserregistration"); ?> </div> </div> </div> </div> <!-- / registration conditional --> <?php do_action("gform_user_registration_add_option_group", $config, $form, $is_validation_error); ?> <div id="user_registration_submit_container" class="margin_vertical_30"> <input type="submit" name="gf_user_registration_submit" value="<?php echo empty($id) ? __("Save", "gravityformsuserregistration") : __("Update", "gravityformsuserregistration"); ?> " class="button-primary"/> <input type="button" value="<?php _e("Cancel", "gravityformsuserregistration"); ?> " class="button" onclick="javascript:document.location='admin.php?page=gf_user_registration'" /> </div> <!-- / form actions --> </div> <!-- / additional options --> </div> <!-- / field group --> </form> </div> <!-- / wrap --> <script type="text/javascript"> <?php $user_meta = rgar($config['meta'], 'user_meta'); ?> var GFUser = { form: <?php echo !empty($form) ? GFCommon::json_encode($form) : 'new Array()'; ?> , form_fields: <?php echo !empty($form_fields) ? GFCommon::json_encode($form_fields) : "new Array()"; ?> , form_id: <?php echo rgar($config, 'form_id') ? rgar($config, 'form_id') : "''"; ?> , user_meta: <?php echo !empty($user_meta) ? GFCommon::json_encode($user_meta) : "[new MetaOption()]"; ?> , bp_gform_options: <?php echo !empty($form) ? GFCommon::json_encode(self::get_bp_gform_fields($form)) : "''"; ?> , meta_names: [ { 'name': 'Website', 'value': 'user_url' }, { 'name': 'AIM', 'value': 'aim' }, { 'name': 'Yahoo', 'value': 'yim' }, { 'name': 'Jabber / Google Talk', 'value': 'jabber' }, { 'name': 'Biographical Information', 'value': 'description' } ] } function SelectForm(formId, configId){ if(!formId){ jQuery("#user_registration_field_group").slideUp(); return; } jQuery("#user_registration_wait").show(); jQuery("#user_registration_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_user_registration_form" ); mysack.setVar( "gf_select_user_registration_form", "<?php echo wp_create_nonce("gf_select_user_registration_form"); ?> " ); mysack.setVar( "form_id", formId); mysack.setVar( "config_id", configId); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() {jQuery("#user_registration_wait").hide(); alert('<?php echo esc_js(__("Ajax error while selecting a form", "gravityformsuserregistration")); ?> ' )}; mysack.runAJAX(); return true; } function EndSelectForm(form_meta, form_fields, field_options, password_options, email_options, options_meta, bp_gform_options){ if(email_options == '<option value=""></option>') { jQuery(".gf_user_registration_invalid_form").show(); jQuery("#user_registration_wait").hide(); return; } else { jQuery(".gf_user_registration_invalid_form").hide(); } // set global form object & reset user meta GFUser.form = form_meta; GFUser.form_fields = form_fields; GFUser.bp_gform_options = bp_gform_options; GFUser.user_meta = [new MetaOption()]; // update dropdowns with selected form's fields jQuery.each(jQuery("select.standard-meta"), function(){ jQuery(this).html(field_options); }); jQuery.each(jQuery("select.password-field"), function(){ jQuery(this).html(password_options + '<option class="system-option">Auto Generate Password</option>'); }); jQuery.each(jQuery("select.email-field"), function(){ jQuery(this).html(email_options); }); CreateCustomMetaOptions(); // handle set post author option if(options_meta['set_post_author']) { jQuery("#gf_user_registration_set_post_author_container").show(); } else { jQuery("#gf_user_registration_set_post_author_container").hide(); } // handle registration option jQuery("#gf_user_registration_enabled").attr('checked', false); SetRegistrationCondition("",""); // Form Selected Event jQuery(document).trigger('gform_user_registration_form_selected', [GFUser.form]); jQuery("#user_registration_field_group").slideDown(); jQuery("#user_registration_wait").hide(); } function CreateCustomMetaOptions(){ var form = GFUser.form; var user_meta = GFUser.user_meta; var meta_names = GFUser.meta_names; var images_url = '<?php echo GFCommon::get_base_url() . "/images"; ?> '; var str = ''; for(var i=0; i<user_meta.length; i++){ var show_select = (user_meta[i].custom == true) ? "display:none;" : ""; var show_input = (user_meta[i].custom == false) ? "display:none;" : ""; str += '<div class="margin_vertical_10">'; str += '<div class="metaname"><select type="text" name="gf_user_meta_name_' + i + '" id="gf_user_meta_name_' + i + '" class="meta-name-select width-1" style="' + show_select + '">'; str += getMetaNameOptions(meta_names, user_meta[i].meta_name) + '</select>' str += '<div class="custom_metaname" style="' + show_input + '">' + getMetaNameInput(i, user_meta[i]) + '</div></div>'; str += '<div class="metavalue"><select type="text" name="gf_user_meta_value_' + i + '" id="gf_user_meta_value_' + i + '" class="meta-value-select width-1">'; str += getMetaValueOptions(form, user_meta[i].meta_value) + '</select></div>'; str += "<img src='" + images_url + "/add.png' class='add_field_choice' title='<?php _e("add another rule", "gravityformsuserregistration"); ?> ' alt='<?php _e("add another rule", "gravityformsuserregistration"); ?> ' style='cursor:pointer;' onclick=\"InsertRule(" + (i+1) + ", 'user_meta');\" />"; if(user_meta.length > 1 ) str += "<img src='" + images_url + "/remove.png' title='<?php _e("remove this rule", "gravityformsuserregistration"); ?> ' alt='<?php _e("remove this rule", "gravityformsuserregistration"); ?> ' class='delete_field_choice' style='cursor:pointer;' onclick=\"DeleteRule(" + (i) + ", 'user_meta');\" /></li>"; str += '</div>'; } jQuery("#custom_usermeta").html(str); } function getMetaNameOptions(meta_names, selected, custom_option) { var str = '<option value="" class="label">Select Meta Option</option>'; for(i = 0; i < meta_names.length; i++) { if(meta_names[i].value == selected) { str += '<option value="' + meta_names[i].value + '" selected="selected">' + meta_names[i].name + '</option>'; } else { str += '<option value="' + meta_names[i].value + '">' + meta_names[i].name + '</option>'; } } if(custom_option != false) { str += '<option value="gf_custom" class="custom">Add Custom</option>'; } return str; } function getMetaValueOptions(form, meta_value) { var form_fields = GFUser.form_fields; var str = '<option value=""></option>'; for(i = 0; i < form_fields.length; i++) { if(form_fields[i][0] == meta_value) { str += '<option value="' + form_fields[i][0] + '" selected="selected">' + form_fields[i][1] + '</option>'; } else { str += '<option value="' + form_fields[i][0] + '">' + form_fields[i][1] + '</option>'; } } return str; } function getMetaNameInput(index, user_meta) { var meta_name = (user_meta.meta_name != "") ? user_meta.meta_name : "<?php _e("Enter Meta Name", "gravityformsuserregistration"); ?> "; str = '<input type="text" name="gf_user_custom_meta_name_' + index + '" id="gf_user_custom_meta_name_' + index + '" class="width-1" value="' + meta_name + '" />'; str += '<span class="reset">Reset</span>'; return str; } function InsertRule(ruleIndex, meta_group){ if(meta_group == 'user_meta') { GFUser[meta_group].splice(ruleIndex, 0, new MetaOption()); CreateCustomMetaOptions(); } else { // Insert Rule Action (used by BuddyPress) jQuery(document).trigger('gform_user_registration_insert_rule', [ruleIndex, meta_group]); } } function DeleteRule(ruleIndex, meta_group){ if(meta_group == 'user_meta') { GFUser[meta_group].splice(ruleIndex, 1); CreateCustomMetaOptions(); } else { // Delete Rule Action (used by BuddyPress) jQuery(document).trigger('gform_user_registration_delete_rule', [ruleIndex, meta_group]); } } function MetaOption() { this.meta_name = ""; this.meta_value = ""; this.custom = false; } function IndexOf(ary, item){ for(var i=0; i<ary.length; i++) if(ary[i] == item) return i; return -1; } function saveUserMeta() { var user_meta = GFUser.user_meta; for(var i=0; i<user_meta.length; i++){ user_meta[i].custom = (jQuery("#gf_user_meta_name_" + i).css('display') == 'none') ? true : false; user_meta[i].meta_name = (user_meta[i].custom == true) ? jQuery("#gf_user_custom_meta_name_" + i).val() : jQuery("#gf_user_meta_name_" + i).val(); user_meta[i].meta_value = jQuery("#gf_user_meta_value_" + i).val(); } GFUser.user_meta = user_meta; // save meta to hidden field for php var json = jQuery.toJSON(user_meta); jQuery("#gf_user_meta").val(json); } // initialize jQuery(document).ready(function(){ <?php if (!empty($form)) { ?> CreateCustomMetaOptions(); <?php } ?> // after GFUser is init, trigger actions jQuery(document).trigger('gform_gfuser_object_init'); // disable 'Select a form' option jQuery(this).find('option:first').attr('disabled', 'disabled'); // custom meta input jQuery("select.meta-name-select").live('change', function(){ if(jQuery(this).val() == 'gf_custom') { jQuery(this).fadeOut(function(){ jQuery(this).val(""); jQuery(this).next('div.custom_metaname').fadeIn(); jQuery(this).next('div.custom_metaname').find('input').cleardefault().focus(); }); } }); // custom meta input reset button jQuery("span.reset").live('click', function(){ jQuery(this).parent('div.custom_metaname').fadeOut(function(){ jQuery(this).siblings('select').fadeIn(); }) }); // add hover class for custom meta input reset jQuery("div.custom_metaname").live('mouseover mouseout', function(event) { if (event.type == 'mouseover') { jQuery(this).addClass('hover'); } else { jQuery(this).removeClass('hover'); } }); // save entered information jQuery(".metaname input, .metaname select, .metavalue select").live('change', function(){ saveUserMeta(); }); jQuery("#gf_user_form").submit(function(){ saveUserMeta(); }) // clear default values jQuery.fn.cleardefault = function() { return this.focus(function() { if( this.value == this.defaultValue ) { this.value = ""; } }).blur(function() { if( !this.value.length ) { this.value = this.defaultValue; } }); } }); </script> <script type="text/javascript"> // Registration Conditional Functions <?php if (!empty($config["form_id"])) { ?> // initializing registration condition drop downs jQuery(document).ready(function(){ //form = [] <?php //echo GFCommon::json_encode($form_meta) ?> ; var selectedField = "<?php echo str_replace('"', '\\"', $config["meta"]["reg_condition_field_id"]); ?> "; var selectedValue = "<?php echo str_replace('"', '\\"', $config["meta"]["reg_condition_value"]); ?> "; SetRegistrationCondition(selectedField, selectedValue); }); <?php } ?> function SetRegistrationCondition(selectedField, selectedValue){ // load form fields jQuery("#gf_user_registration_field_id").html(GetSelectableFields(selectedField, 20)); var optinConditionField = jQuery("#gf_user_registration_field_id").val(); var checked = jQuery("#gf_user_registration_enabled").attr('checked'); if(optinConditionField){ jQuery("#gf_user_registration_condition_message").hide(); jQuery("#gf_user_registration_condition_fields").show(); jQuery("#gf_user_registration_value").html(GetFieldValues(optinConditionField, selectedValue, 20)); } else{ jQuery("#gf_user_registration_condition_message").show(); jQuery("#gf_user_registration_condition_fields").hide(); } if(!checked) jQuery("#gf_user_registration_container").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){ var form = GFUser.form; 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 form = GFUser.form; 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 }
private static function edit_page() { ?> <style type="text/css"> label span.howto { cursor: default; } .exacttarget_col_heading{padding-bottom:2px; border-bottom: 1px solid #ccc; font-weight:bold;} .exacttarget_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;} .margin_vertical_10{margin: 20px 0;} #gf_exacttarget_list_list { margin-left:220px; padding-top: 1px } #exacttarget_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("ExactTarget", "gravity-forms-exacttarget"); ?> " style="margin: .75em 7px 0pt 0pt; float: left;" src="<?php echo self::get_base_url(); ?> /images/exacttarget_wordpress_icon_32.png"/> <h2><?php _e("ExactTarget Feed", "gravity-forms-exacttarget"); ?> </h2> <?php //getting ExactTarget API $api = self::get_api(); //ensures valid credentials were entered in the settings page if (!empty($api->lastError)) { ?> <div class="error" id="message" style="margin-top:20px;"><?php echo wpautop(sprintf(__("We are unable to login to ExactTarget with the provided username and API key. Please make sure they are valid in the %sSettings Page%s", "gravity-forms-exacttarget"), "<a href='?page=gf_settings&addon=ExactTarget'>", "</a>")); ?> </div> <?php return; } //getting setting id (0 when creating a new one) $id = !empty($_POST["exacttarget_setting_id"]) ? $_POST["exacttarget_setting_id"] : absint($_GET["id"]); $config = empty($id) ? array("meta" => array(), "is_active" => true) : GFExactTargetData::get_feed($id); //getting merge vars $merge_vars = array(); //updating meta information if (isset($_POST["gf_exacttarget_submit"])) { $list_ids = $list_names = array(); foreach ($_POST["gf_exacttarget_list"] as $list) { list($list_id, $list_name) = explode("|:|", stripslashes($list)); $list_ids[] = $list_id; $list_names[] = $list_name; } # print_r(array('id' => $list_ids, 'name' => $list_names)); $config["meta"]["contact_list_id"] = empty($list_ids) ? 0 : implode(',', $list_ids); $config["meta"]["contact_list_name"] = implode(',', $list_names); $config["form_id"] = absint($_POST["gf_exacttarget_form"]); $is_valid = true; $merge_vars = $api->Attributes($config["meta"]["contact_list_id"]); $field_map = array(); foreach ($merge_vars as $key => $var) { $field_name = "exacttarget_map_field_" . $key; $mapped_field = isset($_POST[$field_name]) ? stripslashes($_POST[$field_name]) : ''; if (!empty($mapped_field)) { $field_map[$key] = $mapped_field; } else { unset($field_map[$key]); if ($var["required"] == "True") { $is_valid = false; } } unset($_POST["{$field_name}"]); } // Go through the items that were not in the field map; // the Custom Fields foreach ($_POST as $k => $v) { if (preg_match('/exacttarget\\_map\\_field\\_/', $k)) { $tag = str_replace('exacttarget_map_field_', '', $k); $field_map[$tag] = stripslashes($_POST[$k]); } } $config["meta"]["field_map"] = $field_map; #$config["meta"]["double_optin"] = !empty($_POST["exacttarget_double_optin"]) ? true : false; #$config["meta"]["welcome_email"] = !empty($_POST["exacttarget_welcome_email"]) ? true : false; $config["meta"]["optin_enabled"] = !empty($_POST["exacttarget_optin_enable"]) ? true : false; $config["meta"]["optin_field_id"] = $config["meta"]["optin_enabled"] ? isset($_POST["exacttarget_optin_field_id"]) ? $_POST["exacttarget_optin_field_id"] : '' : ""; $config["meta"]["optin_operator"] = $config["meta"]["optin_enabled"] ? isset($_POST["exacttarget_optin_operator"]) ? $_POST["exacttarget_optin_operator"] : '' : ""; $config["meta"]["optin_value"] = $config["meta"]["optin_enabled"] ? $_POST["exacttarget_optin_value"] : ""; if ($is_valid) { $id = GFExactTargetData::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-exacttarget"), "<a href='?page=gf_exacttarget'>", "</a>"); ?> </p> <input type="hidden" name="exacttarget_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-exacttarget"); ?> </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="exacttarget_setting_id" value="<?php echo $id; ?> "/> <div class="margin_vertical_10"> <h2><?php _e('1. Select the lists to merge with.', "gravity-forms-exacttarget"); ?> </h2> <label for="gf_exacttarget_list" class="left_header"><?php _e("ExactTarget List", "gravity-forms-exacttarget"); ?> <?php gform_tooltip("exacttarget_contact_list"); ?> <span class="howto"><?php _e(sprintf("%sRefresh lists%s", '<a href="' . add_query_arg('refresh', 'lists') . '">', '</a>'), "gravity-forms-exacttarget"); ?> </span></label> <?php $trans = get_transient('extr_lists'); if (!isset($_POST["gf_exacttarget_submit"]) && (!$trans || $trans && isset($_REQUEST['refresh']) && $_REQUEST['refresh'] === 'lists')) { ?> <p class="lists_loading hide-if-no-js" style='padding:5px;'><img src="<?php echo GFExactTarget::get_base_url(); ?> /images/loading.gif" id="exacttarget_wait" style="padding-right:5px;" width="16" height="16" /> <?php _e('Lists are being loaded', 'gravity-forms-exacttarget'); ?> </p> <?php } //getting all contact lists $lists = $api->Lists(); if (!$lists) { echo __("Could not load ExactTarget contact lists. <br/>Error: ", "gravity-forms-exacttarget"); echo isset($api->errorMessage) ? $api->errorMessage : ''; } else { if (isset($config["meta"]["contact_list_id"])) { $contact_lists = explode(',', $config["meta"]["contact_list_id"]); } else { $contact_lists = array(); } ?> <?php if (!get_transient('extr_lists_all')) { echo sprintf('%sYour list size is large; only list ID\'s are shown. %sRetrieve List Names%s%s', '<p>', '<a href="' . add_query_arg(array('retrieveListNames' => true, '_wpnonce' => wp_create_nonce('retrieveListNames')), admin_url('admin.php?page=gf_settings&addon=ExactTarget')) . '" class="button-secondary button">', '</a>', '</p>'); } ?> <ul id="gf_exacttarget_list_list" class="hide-if-js"> <?php foreach ($lists as $key => $list) { $selected = in_array($key, $contact_lists) ? "checked='checked'" : ""; ?> <li><label style="display:block;" for="gf_exacttarget_list_<?php echo esc_html($key); ?> "><input type="checkbox" name="gf_exacttarget_list[]" id="gf_exacttarget_list_<?php echo esc_html($key); ?> " value="<?php echo esc_html($key) . "|:|" . esc_html($list['list_name']); ?> " <?php echo $selected; ?> /> <?php echo esc_html($list['list_name']); ?> </label></li> <?php } ?> </ul> <script type="text/javascript"> if(jQuery('.lists_loading').length && jQuery('#gf_exacttarget_list_list').length) { jQuery('.lists_loading').fadeOut(function() { jQuery('#gf_exacttarget_list_list').fadeIn(); }); } else if(jQuery('#gf_exacttarget_list_list').length) { jQuery('#gf_exacttarget_list_list').show(); } </script> <?php } ?> <div class="clear"></div> </div> <?php flush(); ?> <div id="exacttarget_form_container" valign="top" class="margin_vertical_10" <?php echo empty($config["meta"]["contact_list_id"]) ? "style='display:none;'" : ""; ?> > <h2><?php _e('2. Select the form to tap into.', "gravity-forms-exacttarget"); ?> </h2> <label for="gf_exacttarget_form" class="left_header"><?php _e("Gravity Form", "gravity-forms-exacttarget"); ?> <?php gform_tooltip("exacttarget_gravity_form"); ?> </label> <select id="gf_exacttarget_form" name="gf_exacttarget_form" onchange="SelectForm(jQuery('#gf_exacttarget_list_list input').serialize(), jQuery(this).val());"> <option value=""><?php _e("Select a form", "gravity-forms-exacttarget"); ?> </option> <?php $forms = RGFormsModel::get_forms(); 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 GFExactTarget::get_base_url(); ?> /images/loading.gif" id="exacttarget_wait" style="display: none;"/> </div> <div class="clear"></div> <div id="exacttarget_field_group" valign="top" <?php echo empty($config["meta"]["contact_list_id"]) || empty($config["form_id"]) ? "style='display:none;'" : ""; ?> > <div id="exacttarget_field_container" valign="top" class="margin_vertical_10" > <h2><?php _e('3. Map form fields to ExactTarget attributes.', "gravity-forms-exacttarget"); ?> </h2> <p class="description" style="margin-bottom:1em;"><?php _e(sprintf('If you don’t see an attribute listed, you need to create it in ExactTarget first under %sSubscribers > Profile Management%s.%sOnly mapped fields will be added to ExactTarget.', '<em style="font-style:normal;">', '</em>', '<br />'), "gravity-forms-exacttarget"); ?> </p> <label for="exacttarget_fields" class="left_header"><?php _e("Map Fields", "gravity-forms-exacttarget"); ?> <?php gform_tooltip("exacttarget_map_fields"); ?> <span class="howto"><?php _e(sprintf("%sRefresh fields%s", '<a href="' . add_query_arg('refresh', 'attributes') . '">', '</a>'), "gravity-forms-exacttarget"); ?> </span></label> <div id="exacttarget_field_list"> <?php if (!empty($config["form_id"])) { //getting list of all ExactTarget merge variables for the selected contact list if (empty($merge_vars)) { $merge_vars = $api->Attributes(); } //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="exacttarget_optin_container" valign="top" class="margin_vertical_10"> <label for="exacttarget_optin" class="left_header"><?php _e("Opt-In Condition", "gravity-forms-exacttarget"); ?> <?php gform_tooltip("exacttarget_optin_condition"); ?> </label> <div id="exacttarget_optin"> <table> <tr> <td> <input type="checkbox" id="exacttarget_optin_enable" name="exacttarget_optin_enable" value="1" onclick="if(this.checked){jQuery('#exacttarget_optin_condition_field_container').show('slow');} else{jQuery('#exacttarget_optin_condition_field_container').hide('slow');}" <?php echo !empty($config["meta"]["optin_enabled"]) ? "checked='checked'" : ""; ?> /> <label for="exacttarget_optin_enable"><?php _e("Enable", "gravity-forms-exacttarget"); ?> </label> </td> </tr> <tr> <td> <div id="exacttarget_optin_condition_field_container" <?php echo empty($config["meta"]["optin_enabled"]) ? "style='display:none'" : ""; ?> > <div id="exacttarget_optin_condition_fields" <?php echo empty($selection_fields) ? "style='display:none'" : ""; ?> > <?php _e("Export to ExactTarget if ", "gravity-forms-exacttarget"); ?> <select id="exacttarget_optin_field_id" name="exacttarget_optin_field_id" class='optin_select' onchange='jQuery("#exacttarget_optin_value").html(GetFieldValues(jQuery(this).val(), "", 20));'><?php echo $selection_fields; ?> </select> <select id="exacttarget_optin_operator" name="exacttarget_optin_operator" /> <option value="is" <?php echo isset($config["meta"]["optin_operator"]) && $config["meta"]["optin_operator"] == "is" ? "selected='selected'" : ""; ?> ><?php _e("is", "gravity-forms-exacttarget"); ?> </option> <option value="isnot" <?php echo isset($config["meta"]["optin_operator"]) && $config["meta"]["optin_operator"] == "isnot" ? "selected='selected'" : ""; ?> ><?php _e("is not", "gravity-forms-exacttarget"); ?> </option> </select> <select id="exacttarget_optin_value" name="exacttarget_optin_value" class='optin_select'> </select> </div> <div id="exacttarget_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="exacttarget_submit_container" class="margin_vertical_10"> <input type="submit" name="gf_exacttarget_submit" value="<?php echo empty($id) ? __("Save Feed", "gravity-forms-exacttarget") : __("Update Feed", "gravity-forms-exacttarget"); ?> " class="button-primary"/> </div> </div> </form> </div> <script type="text/javascript"> jQuery(document).ready(function($) { $('#gf_exacttarget_list_list').live('load change', function() { $('.lists_loading').hide(); }); $("#gf_exacttarget_list_list input").bind('click change', function() { if($("#gf_exacttarget_list_list input:checked").length > 0) { SelectList(1); } else { SelectList(false); jQuery("#gf_exacttarget_form").val(""); } }); <?php if (isset($_REQUEST['id'])) { ?> $('#exacttarget_field_list').live('load', function() { $('.exacttarget_field_cell select').each(function() { var $select = $(this); if($().prop) { var label = $.trim($('label[for='+$(this).prop('name')+']').text()); } else { var label = $.trim($('label[for='+$(this).attr('name')+']').text()); } label = label.replace(' *', ''); if($select.val() === '') { $('option', $select).each(function() { if($(this).text() === label) { if($().prop) { $('option:contains('+label+')', $select).prop('selected', true); } else { $('option:contains('+label+')', $select).prop('selected', true); } } }); } }); }); <?php } ?> }); </script> <script type="text/javascript"> function SelectList(listId){ if(listId){ jQuery("#exacttarget_form_container").slideDown(); // jQuery("#gf_exacttarget_form").val(""); } else{ jQuery("#exacttarget_form_container").slideUp(); EndSelectForm(""); } } function SelectForm(listId, formId){ if(!formId){ jQuery("#exacttarget_field_group").slideUp(); return; } jQuery("#exacttarget_wait").show(); jQuery("#exacttarget_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_exacttarget_form" ); mysack.setVar( "gf_select_exacttarget_form", "<?php echo wp_create_nonce("gf_select_exacttarget_form"); ?> " ); mysack.setVar( "list_ids", listId); mysack.setVar( "form_id", formId); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() {jQuery("#exacttarget_wait").hide(); alert('<?php _e("Ajax error while selecting a form", "gravity-forms-exacttarget"); ?> ' )}; mysack.runAJAX(); return true; } function SetOptin(selectedField, selectedValue){ //load form fields jQuery("#exacttarget_optin_field_id").html(GetSelectableFields(selectedField, 20)); var optinConditionField = jQuery("#exacttarget_optin_field_id").val(); if(optinConditionField){ jQuery("#exacttarget_optin_condition_message").hide(); jQuery("#exacttarget_optin_condition_fields").show(); jQuery("#exacttarget_optin_value").html(GetFieldValues(optinConditionField, selectedValue, 20)); } else{ jQuery("#exacttarget_optin_condition_message").show(); jQuery("#exacttarget_optin_condition_fields").hide(); } } function EndSelectForm(fieldList, form_meta){ //setting global form object form = form_meta; if(fieldList){ SetOptin("",""); jQuery("#exacttarget_field_list").html(fieldList); jQuery("#exacttarget_field_group").slideDown(); jQuery('#exacttarget_field_list').trigger('load'); } else{ jQuery("#exacttarget_field_group").slideUp(); jQuery("#exacttarget_field_list").html(""); } jQuery("#exacttarget_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 }
private static function edit_page() { if (isset($_REQUEST['cache'])) { delete_site_transient('gf_marketo_default_fields'); delete_site_transient('gf_marketo_custom_fields'); } ?> <style type="text/css"> label span.howto { cursor: default; } .marketo_col_heading, .marketo_tag_optin_condition_fields { padding-bottom: .5em; border-bottom: 1px solid #ccc; } .marketo_col_heading { font-weight:bold; width:50%; } .marketo_tag_optin_condition_fields { margin-bottom: .5em; } #marketo_field_list table, #marketo_tag_optin table { width: 500px; border-collapse: collapse; margin-top: 1em; } .marketo_field_cell {padding: 6px 17px 0 0; margin-right:15px; vertical-align: text-top; font-weight: normal;} ul.marketo_checkboxes { max-height: 120px; overflow-y: auto;} ul.marketo_map_field_groupId_checkboxes { max-height: 300px; } .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;} #marketo_field_list .left_header { margin-top: 1em; } .margin_vertical_10{margin: 20px 0;} #gf_marketo_list { margin-left:220px; padding-top: 1px } #marketo_doubleoptin_warning{padding-left: 5px; padding-bottom:4px; font-size: 10px;} </style> <script> var form = Array(); </script> <div class="wrap"> <img alt="<?php _e("Marketo Feeds", "gravity-forms-marketo"); ?> " src="<?php echo self::get_base_url(); ?> /images/marketo-logo.jpg" style="display:block; margin:15px 7px 0 0;" width="161" height="70"/> <h2><?php _e("Marketo Feeds", "gravity-forms-marketo"); ?> </h2> <ul class="subsubsub"> <li><a href="<?php echo admin_url('admin.php?page=gf_settings&addon=Marketo'); ?> "><?php _e('Marketo Settings', 'gravity-forms-marketo'); ?> </a> |</li> <li><a href="<?php echo admin_url('admin.php?page=gf_marketo'); ?> "><?php _e('Marketo Feeds', 'gravity-forms-marketo'); ?> </a></li> </ul> <div class="clear"></div> <?php //getting Marketo API $api = self::get_api(); //ensures valid credentials were entered in the settings page if ($api === false || is_string($api)) { ?> <div class="error" id="message" style="margin-top:20px;"><?php echo wpautop(sprintf(__("We are unable to login to Marketo with the provided username and API key. Please make sure they are valid in the %sSettings Page%s", "gravity-forms-marketo"), "<a href='?page=gf_settings&addon=Marketo'>", "</a>")); ?> </div> <?php return; } //getting setting id (0 when creating a new one) $id = !empty($_POST["marketo_setting_id"]) ? $_POST["marketo_setting_id"] : absint($_GET["id"]); $config = empty($id) ? array("meta" => array(), "is_active" => true) : GFMarketoData::get_feed($id); //getting merge vars $merge_vars = array(); //updating meta information if (isset($_POST["gf_marketo_submit"])) { $objectType = $list_names = array(); list($list_id, $list_name) = explode("|:|", stripslashes($_POST["gf_marketo_list"])); $config["meta"]["contact_list_id"] = $list_id; $config["meta"]["contact_list_name"] = $list_name; $config["form_id"] = absint($_POST["gf_marketo_form"]); $is_valid = true; $merge_vars = self::get_fields(); $field_map = array(); foreach ($merge_vars as $key => $var) { $field_name = "marketo_map_field_" . $var['tag']; if (isset($_POST[$field_name])) { if (is_array($_POST[$field_name])) { foreach ($_POST[$field_name] as $k => $v) { $_POST[$field_name][$k] = stripslashes($v); } $mapped_field = $_POST[$field_name]; } else { $mapped_field = 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}"]); } $field_map['CustomFields'] = array(); if (isset($_POST['marketo_custom_field'])) { foreach ((array) $_POST['marketo_custom_field'] as $key => $value) { if (!empty($key)) { $field_map['CustomFields'][esc_attr($key)] = stripslashes($value); } } } $config["meta"]["field_map"] = $field_map; $config["meta"]["optin_enabled"] = !empty($_POST["marketo_optin_enable"]) ? true : false; $config["meta"]["optin_field_id"] = $config["meta"]["optin_enabled"] ? isset($_POST["marketo_optin_field_id"]) ? @$_POST["marketo_optin_field_id"] : '' : ""; $config["meta"]["optin_operator"] = $config["meta"]["optin_enabled"] ? isset($_POST["marketo_optin_operator"]) ? @$_POST["marketo_optin_operator"] : '' : ""; $config["meta"]["optin_value"] = $config["meta"]["optin_enabled"] ? @$_POST["marketo_optin_value"] : ""; $config["meta"]["tag_optin_enabled"] = !empty($_POST["marketo_tag_optin_enable"]) ? true : false; $config["meta"]["tag_optin_field_id"] = !empty($config["meta"]["tag_optin_enabled"]) ? isset($_POST["marketo_tag_optin_field_id"]) ? @$_POST["marketo_tag_optin_field_id"] : '' : ""; $config["meta"]["tag_optin_operator"] = !empty($config["meta"]["tag_optin_enabled"]) ? isset($_POST["marketo_tag_optin_operator"]) ? @$_POST["marketo_tag_optin_operator"] : '' : ""; $config["meta"]["tag_optin_tags"] = !empty($config["meta"]["tag_optin_enabled"]) ? @$_POST["tag_optin_tags"] : ""; $config["meta"]["tag_optin_value"] = !empty($config["meta"]["tag_optin_enabled"]) ? @$_POST["marketo_tag_optin_value"] : ""; if ($is_valid) { $id = GFMarketoData::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-marketo"), "<a href='?page=gf_marketo'>", "</a>"); ?> </p> <input type="hidden" name="marketo_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-marketo"); ?> </div> <?php } } self::setup_tooltips(); ?> <form method="post" action="<?php echo remove_query_arg('refresh'); ?> "> <input type="hidden" name="marketo_setting_id" value="<?php echo $id; ?> "/> <div class="margin_vertical_10"> <label for="gf_marketo_list" class="left_header"><?php _e("Marketo Campaign", "gravity-forms-marketo"); ?> <?php gform_tooltip("marketo_contact_list"); ?> </label> <?php //getting all contact lists $campaigns = $api->getCampaignsForSource(); if (empty($campaigns)) { if (is_array($campaigns)) { echo '<img src="' . plugins_url('images/campaigntrigger.png', __FILE__) . '" alt="Campaign is Requested Trigger" width="562" height="138" />'; echo _e('<span class="howto" style="max-width:500px; margin-left:230px"><strong>No lists were loaded.</strong> Campaigns are only available to the API if they are active campaigns and have a "Campaign is Requested" trigger configured where the Source is "Web Service API".</span>', 'gravity-forms-marketo'); } else { echo __("Could not load Marketo contact lists.", "gravity-forms-marketo"); } ?> <script> jQuery(document).ready(function() { jQuery("#marketo_field_group, #marketo_form_container").slideUp(); }); </script><?php } else { ?> <select id="gf_marketo_list" name="gf_marketo_list" onchange="SelectList(jQuery(this).val());"> <option value=""><?php _e("Select a Marketo Campaign", "gravity-forms-marketo"); ?> </option> <?php $curr_contact_list_id = isset($config["meta"]["contact_list_id"]) ? $config["meta"]["contact_list_id"] : ''; foreach ($campaigns as $campaignname => $campaignid) { ?> <option value="<?php echo esc_html($campaignid) . "|:|" . esc_html($campaignname); ?> " <?php selected($campaignid, $curr_contact_list_id, true); ?> ><?php echo esc_html($campaignname); ?> </option> <?php } ?> </select> <?php } ?> </div> <div id="marketo_form_container" valign="top" class="margin_vertical_10" <?php echo empty($config["meta"]["contact_list_id"]) ? "style='display:none;'" : ""; ?> > <h2><?php _e('1. Select the form to tap into.', "gravity-forms-marketo"); ?> </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-marketo"), $form->title) . '</h3>'; } } } ?> <label for="gf_marketo_form" class="left_header"><?php _e("Gravity Form", "gravity-forms-marketo"); ?> <?php gform_tooltip("marketo_gravity_form"); ?> </label> <select id="gf_marketo_form" name="gf_marketo_form" onchange="SelectForm(jQuery('#gf_marketo_list').val(), jQuery(this).val());"> <option value=""><?php _e("Select a form", "gravity-forms-marketo"); ?> </option> <?php $curr_form_id = isset($config["form_id"]) ? $config["form_id"] : ''; foreach ($forms as $form) { ?> <option value="<?php echo absint($form->id); ?> " <?php selected(absint($form->id), $curr_form_id, true); ?> ><?php echo esc_html($form->title); ?> </option> <?php } ?> </select> <img src="<?php echo GFMarketo::get_base_url(); ?> /images/loading.gif" id="marketo_wait" style="display: none;"/> </div> <div class="clear"></div> <div id="marketo_field_group" valign="top" <?php echo empty($config["form_id"]) ? "style='display:none;'" : ""; ?> > <div id="marketo_field_container" valign="top" class="margin_vertical_10" > <h2><?php _e('2. Map form fields to Marketo fields.', "gravity-forms-marketo"); ?> </h2> <h3 class="description"><?php _e('About field mapping:', "gravity-forms-marketo"); ?> </h2> <label for="marketo_fields" class="left_header"><?php _e("Standard Fields", "gravity-forms-marketo"); ?> <?php gform_tooltip("marketo_map_fields"); ?> </label> <div id="marketo_field_list"> <?php if (!empty($config["form_id"])) { //getting list of all Marketo merge variables for the selected contact list if (empty($merge_vars)) { $merge_vars = self::get_fields($config['meta']['contact_list_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"]); $tag_selection_fields = true; } else { $selection_fields = $tag_selection_fields = false; } ?> </div> <div class="clear"></div> </div> <div id="marketo_optin_container" valign="top" class="margin_vertical_10"> <label for="marketo_optin" class="left_header"><?php _e("Opt-In Condition", "gravity-forms-marketo"); ?> <?php gform_tooltip("marketo_optin_condition"); ?> </label> <div id="marketo_optin"> <table> <tr> <td> <input type="checkbox" id="marketo_optin_enable" name="marketo_optin_enable" value="1" onclick="if(this.checked){jQuery('#marketo_optin_condition_field_container').show('slow'); SetOptinCondition();} else{jQuery('#marketo_optin_condition_field_container').hide('slow');}" <?php echo !empty($config["meta"]["optin_enabled"]) ? "checked='checked'" : ""; ?> /> <label for="marketo_optin_enable"><?php _e("Enable", "gravity-forms-marketo"); ?> </label> </td> </tr> <tr class="gfield_list_row" data-fieldid="optin"> <td> <div id="marketo_optin_condition_field_container" <?php echo empty($config["meta"]["optin_enabled"]) ? "style='display:none'" : ""; ?> > <div class="marketo_optin_condition_fields" <?php echo empty($selection_fields) ? "style='display:none'" : ""; ?> > <?php _e("Export to Marketo if ", "gravity-forms-marketo"); ?> <select id="marketo_optin_field_id" name="marketo_optin_field_id" class='optin_select' onchange='SetOptinCondition();'><?php echo $selection_fields; ?> </select> <select id="marketo_optin_operator" name="marketo_optin_operator" /> <option value="is" <?php echo isset($config["meta"]["optin_operator"]) && $config["meta"]["optin_operator"] == "is" ? "selected='selected'" : ""; ?> ><?php _e("is", "gravity-forms-marketo"); ?> </option> <option value="isnot" <?php echo isset($config["meta"]["optin_operator"]) && $config["meta"]["optin_operator"] == "isnot" ? "selected='selected'" : ""; ?> ><?php _e("is not", "gravity-forms-marketo"); ?> </option> </select> <select id="marketo_optin_value" name="marketo_optin_value" class='optin_select optin_value'> </select> </div> <div class="marketo_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> function marketoUpdateCFName( inputObj ) { jQuery('td select', jQuery( inputObj ).parents('tr')).attr('name', 'marketo_custom_field['+ jQuery( inputObj ).val()+']').attr('id', 'marketo_custom_field_'+ jQuery( inputObj ).val().replace(/\W/, '-') ); } <?php if (!empty($config["form_id"])) { ?> //creating Javascript form object form = <?php echo GFCommon::json_encode($form_meta); ?> ; function SetOptinCondition() { var selectedField = "<?php echo str_replace('"', '\\"', $config["meta"]["optin_field_id"]); ?> "; var selectedValue = "<?php echo str_replace('"', '\\"', $config["meta"]["optin_value"]); ?> "; jQuery("#marketo_optin_value").html(GetFieldValues(jQuery('#marketo_optin_field_id').val(), "", 50)); } //initializing drop downs jQuery(document).ready(function(){ SetOptinCondition(); }); <?php } else { ?> function SetOptinCondition() { SetOptin('','', 'optin'); } <?php } ?> </script> </div> <div id="marketo_submit_container" class="margin_vertical_10"> <input type="submit" name="gf_marketo_submit" value="<?php echo empty($id) ? __("Save Feed", "gravity-forms-marketo") : __("Update Feed", "gravity-forms-marketo"); ?> " class="button-primary"/> </div> </div> </form> </div> <script> jQuery(document).ready(function($) { <?php if (isset($_REQUEST['id'])) { ?> $('#marketo_field_list').live('load', function() { $('.marketo_field_cell select').each(function() { var $select = $(this); if($().prop) { var label = $.trim($('label[for='+$(this).prop('name')+']').text()); } else { var label = $.trim($('label[for='+$(this).attr('name')+']').text()); } label = label.replace(' *', ''); if($select.val() === '') { $('option', $select).each(function() { if($(this).text() === label) { if($().prop) { $(this).prop('selected', true); } else { $(this).attr('selected', true); } } }); } }); }); <?php } ?> }); </script> <script> jQuery(document).ready(function($) { <?php if (empty($config["form_id"])) { ?> SelectForm($('#gf_marketo_form').val()); <?php } ?> }); function SelectList(listId){ if(listId){ jQuery("#marketo_form_container").slideDown(); jQuery("#gf_marketo_form").val(""); } else{ jQuery("#marketo_form_container").slideUp(); EndSelectForm(""); } } function SelectForm(listId, formId){ // If no form is selected, just hide everything. if(!formId){ jQuery("#marketo_field_group").slideUp(); return; } jQuery("#marketo_wait").show(); jQuery("#marketo_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_marketo_form" ); mysack.setVar( "gf_select_marketo_form", "<?php echo wp_create_nonce("gf_select_marketo_form"); ?> " ); mysack.setVar( "list_id", listId); mysack.setVar( "form_id", formId); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() {jQuery("#marketo_wait").hide(); alert('<?php _e("Ajax error while selecting a form", "gravity-forms-marketo"); ?> ' )}; mysack.runAJAX(); return true; } function SetOptin(selectedField, selectedValue, tag){ //load form fields jQuery(".optin_select[id*=field_id]").each(function() { var optinConditionField = jQuery(this).val(); var $table = jQuery(this).parents('tr.gfield_list_row'); var fieldID = $table.data('fieldid'); var values = ''; jQuery(this).addClass('processed'); // If the conditional is set up if(optinConditionField){ jQuery(".marketo_optin_condition_message", $table).hide(); jQuery(".marketo_optin_condition_fields", $table).show(); if(tag == fieldID) { // Gather the form fields that qualify for conditional jQuery(this).html(GetSelectableFields(selectedField, 50)); values = GetFieldValues(optinConditionField, selectedValue, 50); jQuery(".optin_value", $table).html(values); } } else{ jQuery(this).html(GetSelectableFields(selectedField, 50)); jQuery(".marketo_optin_condition_message", $table).show(); jQuery(".marketo_optin_condition_fields", $table).hide(); } }); } function EndSelectForm(fieldList, form_meta){ //setting global form object form = form_meta; if(fieldList){ SetOptin("","", false); jQuery("#marketo_field_list").html(fieldList); jQuery("#marketo_field_group").slideDown(); } else{ jQuery("#marketo_field_group").slideUp(); jQuery("#marketo_field_list").html(""); } jQuery('#marketo_field_list').trigger('load'); jQuery("#marketo_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 }