Exemplo n.º 1
0
 public static function get_active_config($form, $lead = false)
 {
     require_once self::get_base_path() . "/data.php";
     $config = false;
     // if lead is provided, attempt to retrieve config from lead meta
     if (isset($lead['id'])) {
         $config_id = gform_get_meta($lead['id'], 'user_registration_feed_id');
         $config = GFUserData::get_feed($config_id);
     }
     // if no lead is provided or if meta retrieval fails, get all feeds and find the first feed that matches
     if (!$config) {
         $configs = GFUserData::get_feeds_by_form($form["id"]);
         if (!$configs) {
             return false;
         }
         foreach ($configs as $cnfg) {
             if (self::registration_condition_met($form, $cnfg, $lead)) {
                 $config = $cnfg;
                 break;
             }
         }
     }
     // if lead is provided and a config is found, update lead meta with config ID
     if (isset($lead['id']) && $config && !$config_id) {
         gform_update_meta($lead['id'], 'user_registration_feed_id', $config['id']);
     }
     if ($config) {
         return $config;
     }
     return false;
 }
Exemplo n.º 2
0
    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>
                &nbsp;&nbsp;
                <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("'", "&#039;") + "' " + selected + ">" + TruncateMiddle(field.choices[i].text, labelMaxCharacters) + "</option>";
                }

                if(!isAnySelected && selectedValue){
                    str += "<option value='" + selectedValue.replace("'", "&#039;") + "' selected='selected'>" + TruncateMiddle(selectedValue, labelMaxCharacters) + "</option>";
                }

                return str;
            }

            function GetFieldById(fieldId){
                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 
    }