public static function add_page_script($form)
 {
     self::log_debug('Adding page script to ' . $form['id']);
     $script = "(function(\$){" . "\$('#gform_" . $form['id'] . "').sisyphus();" . "})(jQuery);";
     GFFormDisplay::add_init_script($form['id'], 'gravity-forms-js-validate', GFFormDisplay::ON_PAGE_RENDER, $script);
     return $form;
 }
예제 #2
0
 public function register_init_scripts($form)
 {
     if (!$this->has_copy_cat_field($form)) {
         return;
     }
     $copy_fields = $this->get_copy_cat_fields($form);
     $enable_overwrite = gf_apply_filters('gpcc_overwrite_existing_values', $form['id'], false, $form);
     $script = 'new gwCopyObj( ' . $form['id'] . ', ' . json_encode($copy_fields) . ', ' . ($enable_overwrite ? 'true' : 'false') . ' );';
     GFFormDisplay::add_init_script($form['id'], 'gp-copy-cat', GFFormDisplay::ON_PAGE_RENDER, $script);
 }
 public static function add_page_script($form)
 {
     self::log_debug('Adding page script to ' . $form['id']);
     $script = "(function(\$){" . "var container;" . "\$('.gfield_contains_required').each(function(i, e){" . "\$(e).find('input, select, textarea').attr('required', true);" . "});" . "\$('#gform_" . $form['id'] . "').validate({" . "debug: true," . "errorElement: 'div'," . "errorClass: 'gfield_error'," . "errorPlacement: function(error, element){" . "container = element.closest('.gfield');" . "},";
     // Get messages for each input
     $script .= "messages: {";
     foreach ($form['fields'] as $field) {
         $field_name = 'input_' . $field['id'];
         // test
         $field_errorMessage = "'" . $field['errorMessage'] . "',";
         if ($field['errorMessage'] !== '') {
             $script = $script . $field_name . ": " . $field_errorMessage;
         }
     }
     $script .= "},";
     $script .= "groups: getGroups()," . "focusCleanup: true," . "highlight: function(element, errorClass, validClass) {" . "\$(element).closest('.gfield').addClass(errorClass).removeClass(validClass);" . "}," . "unhighlight: function(element, errorClass, validClass) {" . "\$(element).closest('.gfield').removeClass(errorClass).addClass(validClass);" . "}," . "invalidHandler: function(event, validator) {" . "gf_submitting_" . $form['id'] . " = false;" . "}" . "});" . "})(jQuery);";
     self::log_debug('Script is: ' . $script);
     GFFormDisplay::add_init_script($form['id'], 'gf_js_validate', GFFormDisplay::ON_PAGE_RENDER, $script);
     return $form;
 }
예제 #4
0
 /**
  * Registers the script returned by get_form_inline_script_on_page_render() for display on the front-end.
  *
  * @param array $form The Form Object currently being processed.
  */
 public function register_form_init_scripts($form)
 {
     GFFormDisplay::add_init_script($form['id'], $this->type . '_' . $this->id, GFFormDisplay::ON_PAGE_RENDER, $this->get_form_inline_script_on_page_render($form));
 }
 /**
  * Prepare Javascript for creating credit card tokens.
  *
  * @access public
  *
  * @param array $form
  * @param array $field_values
  * @param bool $is_ajax
  *
  * @return void
  */
 public function register_creditcard_token_script($form, $field_values, $is_ajax)
 {
     if (!$this->enqueue_creditcard_token_script($form)) {
         return;
     }
     /* Prepare GFToken object. */
     $gftoken = array('callback' => 'GF_' . str_replace(' ', '', $this->_short_title), 'feeds' => $this->creditcard_token_info($form), 'formId' => rgar($form, 'id'), 'hasPages' => GFCommon::has_pages($form), 'pageCount' => GFFormDisplay::get_max_page_number($form), 'responseField' => '#gf_' . str_replace('gravityforms', '', $this->_slug) . '_response');
     /* Get needed fields. */
     $gftoken['fields'] = $this->get_creditcard_token_entry_fields($gftoken['feeds']);
     $script = 'new GFToken( ' . json_encode($gftoken) . ' );';
     GFFormDisplay::add_init_script($form['id'], 'GFToken', GFFormDisplay::ON_PAGE_RENDER, $script);
 }
예제 #6
0
    function pre_render($form)
    {
        $script = '';
        $output_script = false;
        foreach ($form['fields'] as $field) {
            $field_id = $field['id'];
            $field_limits = $this->get_field_limits($field['id']);
            if (!$field_limits || RGFormsModel::get_input_type($field) != 'checkbox' || !isset($field_limits['max'])) {
                continue;
            }
            $output_script = true;
            $max = $field_limits['max'];
            $selectors = array();
            foreach ($field_limits['field'] as $checkbox_field) {
                $selectors[] = "#field_{$form['id']}_{$checkbox_field} .gfield_checkbox input:checkbox";
            }
            $script .= "jQuery(\"" . implode(', ', $selectors) . "\").checkboxLimit({$max});";
        }
        GFFormDisplay::add_init_script($form['id'], 'limit_checkboxes', GFFormDisplay::ON_PAGE_RENDER, $script);
        if ($output_script) {
            ?>

            <script type="text/javascript">
            jQuery(document).ready(function($) {
                $.fn.checkboxLimit = function(n) {

                    var checkboxes = this;

                    this.toggleDisable = function() {

                        // if we have reached or exceeded the limit, disable all other checkboxes
                        if(this.filter(':checked').length >= n) {
                            var unchecked = this.not(':checked');
                            unchecked.prop('disabled', true);
                        }
                        // if we are below the limit, make sure all checkboxes are available
                        else {
                            this.prop('disabled', false);
                        }

                    }

                    // when form is rendered, toggle disable
                    checkboxes.bind('gform_post_render', checkboxes.toggleDisable());

                    // when checkbox is clicked, toggle disable
                    checkboxes.click(function(event) {

                        checkboxes.toggleDisable();

                        // if we are equal to or below the limit, the field should be checked
                        return checkboxes.filter(':checked').length <= n;
                    });

                }
            });
            </script>

            <?php 
        }
        return $form;
    }
예제 #7
0
 public function register_init_scripts($form, $field_values, $is_ajax)
 {
     if (!$this->has_feed($form['id'])) {
         return;
     }
     $cc_field = $this->get_credit_card_field($form);
     $args = array('apiKey' => $this->get_publishable_api_key(), 'formId' => $form['id'], 'ccFieldId' => $cc_field['id'], 'ccPage' => rgar($cc_field, 'pageNumber'), 'isAjax' => $is_ajax, 'cardLabels' => $this->get_card_labels());
     $script = 'new GFStripe( ' . json_encode($args) . ' );';
     GFFormDisplay::add_init_script($form['id'], 'stripe', GFFormDisplay::ON_PAGE_RENDER, $script);
 }
 function add_init_script($return)
 {
     $start_field_format = false;
     $end_field_format = false;
     foreach ($this->form['fields'] as &$field) {
         if ($field['id'] == $this->start_field_id) {
             $start_field_format = $field['dateFormat'] ? $field['dateFormat'] : 'mdy';
         }
         if ($field['id'] == $this->end_field_id) {
             $end_field_format = $field['dateFormat'] ? $field['dateFormat'] : 'mdy';
         }
     }
     $script = " \n\t\t\n\t\tnew gwdc({\n                formId:             {$this->form['id']},\n                startFieldId:       {$this->start_field_id},\n                startDateFormat:    '{$start_field_format}',\n                endFieldId:         {$this->end_field_id},\n                endDateFormat:      '{$end_field_format}',\n                countFieldId:       {$this->count_field_id},\n                countAdjust:        {$this->count_adjust}\n            });\n\t\t\t\n\t\t\t";
     $slug = implode('_', array('gw_display_count', $this->start_field_id, $this->end_field_id, $this->count_field_id));
     // GFFormDisplay::add_init_script( $this->form['id'], 'gw_display_count_' . $this->count_field_id, GFFormDisplay::ON_PAGE_RENDER, $script );
     GFFormDisplay::add_init_script($this->form['id'], $slug, GFFormDisplay::ON_PAGE_RENDER, $script);
     // remove filter so init script is not output on subsequent forms
     remove_filter('gform_init_scripts_footer', array(&$this, 'add_init_script'));
     return $return;
 }
 function register_init_script($form)
 {
     // remove this function from the filter otherwise it will be called for every other form on the page
     remove_filter('gform_register_init_scripts', array($this, 'register_init_script'));
     $args = array('formId' => $this->_args['form_id'], 'listFieldId' => $this->_args['list_field_id'], 'inputHtmlId' => $this->_args['input_html_id']);
     $script = "new gwalfr(" . json_encode($args) . ");";
     $key = implode('_', $args);
     GFFormDisplay::add_init_script($form['id'], 'gwalfr_' . $key, GFFormDisplay::ON_PAGE_RENDER, $script);
 }
 public static function initialise_form_edit()
 {
     /*
      * If we aren't editing our form, don't do anything
      */
     if (empty($_GET['action']) || empty($_GET['lid']) || !is_user_logged_in()) {
         return false;
     }
     $lid = isset($_GET['lid']) ? (int) $_GET['lid'] : 0;
     self::$lead = $lead = GFAPI::get_entry($lid);
     self::$form = $form = GFAPI::get_form(self::$lead['form_id']);
     if (!self::check_user_permission(self::$lead)) {
         return false;
     }
     self::$allowed_edit = true;
     if (!class_exists('GFFormDisplay')) {
         require_once GFCommon::get_base_path() . "/form_display.php";
     }
     $field_values = RGForms::post("gform_field_values");
     /*
      * Include appropriate css/javascript here...
      */
     GFFormDisplay::enqueue_form_scripts($form, false);
     GFFormDisplay::add_init_script($form["id"], "conditional_logic", GFFormDisplay::ON_PAGE_RENDER, self::get_conditional_logic($form, $field_values));
     GFFormDisplay::add_init_script($form["id"], "pricing", GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_pricing_init_script($form));
     $chosen_script = GFFormDisplay::get_chosen_init_script($form);
     GFFormDisplay::add_init_script($form["id"], "chosen", GFFormDisplay::ON_PAGE_RENDER, $chosen_script);
     GFFormDisplay::add_init_script($form["id"], "chosen", GFFormDisplay::ON_CONDITIONAL_LOGIC, $chosen_script);
     GFFormDisplay::add_init_script($form['id'], 'input_mask', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_input_mask_init_script($form));
     GFFormDisplay::add_init_script($form['id'], 'calculation', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_calculations_init_script($form));
     GFFormDisplay::add_init_script($form['id'], 'currency_format', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_currency_format_init_script($form));
     return true;
 }
 public function registerInitScripts($form, $field_values, $is_ajax)
 {
     if (!$this->has_feed($form['id'])) {
         return;
     }
     $feeds = GFAPI::get_feeds(null, $form['id']);
     $feed = $feeds[0];
     $cc_field = $this->get_credit_card_field($form);
     $args = array('apiKey' => $this->getPublicApiKey($feed), 'formId' => $form['id'], 'ccFieldId' => $cc_field['id'], 'ccPage' => rgar($cc_field, 'pageNumber'), 'isAjax' => $is_ajax);
     $script = 'new SecureSubmit(' . json_encode($args) . ');';
     GFFormDisplay::add_init_script($form['id'], 'securesubmit', GFFormDisplay::ON_PAGE_RENDER, $script);
 }
 public function get_field_input($form, $value = '', $entry = null)
 {
     if (is_admin()) {
         return '';
     } else {
         $form_id = $form['id'];
         $is_entry_detail = $this->is_entry_detail();
         $is_form_editor = $this->is_form_editor();
         $id = (int) $this->id;
         $field_id = $is_entry_detail || $is_form_editor || $form_id == 0 ? "input_{$id}" : 'input_' . $form_id . "_{$id}";
         $tabindex = $this->get_tabindex();
         $repeater_id = $this->repeaterId;
         $repeater_parem = $this->inputName;
         $repeater_required = $this->repeaterRequiredChildren;
         $repeater_children = $this->repeaterChildren;
         $repeater_start = apply_filters('gf_repeater_start', $this->start, $form, $this);
         $repeater_min = apply_filters('gf_repeater_min', $this->min, $form, $this);
         $repeater_max = apply_filters('gf_repeater_max', $this->max, $form, $this);
         $repeater_animations = apply_filters('gf_repeater_animations', $this->animations, $form, $this);
         if (!empty($repeater_parem)) {
             $repeater_parem_value = GFFormsModel::get_parameter_value($repeater_parem, $value, $this);
             if (!empty($repeater_parem_value)) {
                 $repeater_start = $repeater_parem_value;
             }
         }
         if (!empty($repeater_children)) {
             $repeater_children_info = array();
             $repeater_parems = GF_Field_Repeater::get_children_parem_values($form, $repeater_children);
             foreach ($repeater_children as $repeater_child) {
                 $repeater_children_info[$repeater_child] = array();
                 $repeater_child_field_index = GF_Field_Repeater::get_field_index($form, 'id', $repeater_child);
                 if (!empty($repeater_required)) {
                     if (in_array($repeater_child, $repeater_required)) {
                         $repeater_children_info[$repeater_child]['required'] = true;
                     }
                 }
                 if (!empty($repeater_parems)) {
                     if (array_key_exists($repeater_child, $repeater_parems)) {
                         $repeater_children_info[$repeater_child]['prePopulate'] = $repeater_parems[$repeater_child];
                     }
                 }
                 if ($repeater_child_field_index !== false) {
                     $repeater_child_field = $form['fields'][$repeater_child_field_index];
                     if ($repeater_child_field['inputMask']) {
                         $repeater_children_info[$repeater_child]['inputMask'] = $repeater_child_field['inputMaskValue'];
                     } elseif ($repeater_child_field['type'] == 'phone' && ($repeater_child_field['phoneFormat'] = 'standard')) {
                         $repeater_children_info[$repeater_child]['inputMask'] = "(999) 999-9999";
                     }
                     if ($repeater_child_field['conditionalLogic']) {
                         $repeater_children_info[$repeater_child]['conditionalLogic'] = $repeater_child_field['conditionalLogic'];
                     }
                     if ($repeater_child_field['maxLength']) {
                         $repeater_children_info[$repeater_child]['maxLength'] = $repeater_child_field['maxLength'];
                     }
                     if ($repeater_child_field['enableEnhancedUI']) {
                         $repeater_children_info[$repeater_child]['enableEnhancedUI'] = $repeater_child_field['enableEnhancedUI'];
                     }
                 }
             }
             $repeater_children = $repeater_children_info;
         }
         $value = array();
         $value['formId'] = $form_id;
         if (!empty($repeater_start)) {
             $value['start'] = $repeater_start;
         }
         if (!empty($repeater_min)) {
             $value['min'] = $repeater_min;
         }
         if (!empty($repeater_max)) {
             $value['max'] = $repeater_max;
         }
         if (!empty($repeater_children)) {
             $value['children'] = $repeater_children;
         }
         $value = json_encode($value);
         if (!empty($repeater_animations)) {
             $animation_script = "var animations={" . $repeater_animations . "};jQuery.extend(true,gfRepeater_repeaters[" . $form_id . "][" . $repeater_id . "].settings.animations,animations);";
             GFFormDisplay::add_init_script($form_id, 'repeater_animations', GFFormDisplay::ON_PAGE_RENDER, $animation_script);
         }
         return sprintf("<input name='input_%d' id='%s' type='hidden' class='gform_repeater' value='%s' %s />", $id, $field_id, $value, $tabindex);
     }
 }
 public function filter_gform_register_init_scripts($form, $field_values, $is_ajax)
 {
     if ($this->has_enhanced_dropdown($form)) {
         $chosen_script = $this->get_chosen_init_script($form);
         GFFormDisplay::add_init_script($form['id'], 'workflow_assignee_chosen', GFFormDisplay::ON_PAGE_RENDER, $chosen_script);
         GFFormDisplay::add_init_script($form['id'], 'workflow_assignee_chosen', GFFormDisplay::ON_CONDITIONAL_LOGIC, $chosen_script);
     }
 }
예제 #14
0
function gform_addScript($form)
{
    $script = '(function(){' . 'jQuery("input[type=radio][name=input_1]").change(function(){
            if (jQuery(this).val().indexOf("Standard Presentation") > -1) {
                //disable "45 minutes" option
                jQuery("input[name=\'input_2.3\']").attr("disabled",true);
                //if option is already checked, uncheck it
                jQuery("input[name=\'input_2.3\']").attr("checked",false);
            }else{
                jQuery("input[name=\'input_2.3\']").attr("disabled",false);
            }
        });' . '})(jQuery);';
    GFFormDisplay::add_init_script($form['id'], 'formScript', GFFormDisplay::ON_PAGE_RENDER, $script);
    return $form;
}
 /**
  * Register Stripe script when displaying form.
  *
  * @param array $form Form object.
  * @param array $field_values Current field values.
  * @param bool  $is_ajax If form is being submitted via AJAX.
  */
 public function register_init_scripts($form, $field_values, $is_ajax)
 {
     // If form does not have a Stripe feed and does not have a credit card field, exit.
     if (!$this->has_feed($form['id'])) {
         return;
     }
     $cc_field = $this->get_credit_card_field($form);
     if (!$cc_field) {
         return;
     }
     // Prepare Stripe Javascript arguments.
     $args = array('apiKey' => $this->get_publishable_api_key(), 'formId' => $form['id'], 'ccFieldId' => $cc_field->id, 'ccPage' => $cc_field->pageNumber, 'isAjax' => $is_ajax, 'cardLabels' => $this->get_card_labels());
     // Initialize Stripe script.
     $script = 'new GFStripe( ' . json_encode($args) . ' );';
     // Add Stripe script to form scripts.
     GFFormDisplay::add_init_script($form['id'], 'stripe', GFFormDisplay::ON_PAGE_RENDER, $script);
 }
 function register_script($form)
 {
     $page_number = GFFormDisplay::get_current_page($form['id']);
     $last_page = count($form['pagination']['pages']);
     $args = array('formId' => $form['id'], 'currentPage' => $page_number, 'lastPage' => $last_page, 'labels' => array('lastPageButton' => __('Back to Last Page')));
     $script = "window.gwmpn = new gwmpnObj(" . json_encode($args) . ");";
     GFFormDisplay::add_init_script($form['id'], 'gwmpn', GFFormDisplay::ON_PAGE_RENDER, $script);
 }
 public function register_init_scripts($form)
 {
     if (!$this->is_applicable_form($form)) {
         return $form;
     }
     $spinner_url = apply_filters("gform_ajax_spinner_url_{$form['id']}", apply_filters('gform_ajax_spinner_url', GFCommon::get_base_url() . '/images/spinner.gif', $form), $form);
     $refresh_time = rgar($form, $this->key('refresh_time'));
     $args = array('formId' => $form['id'], 'spinnerUrl' => $spinner_url, 'refreshTime' => $refresh_time ? $refresh_time : 0);
     $script = 'window.gwrf_' . $form['id'] . ' = new gwrf( ' . json_encode($args) . ' );';
     $slug = sprintf('gpreloadform_%d', $form['id']);
     GFFormDisplay::add_init_script($form['id'], $slug, GFFormDisplay::ON_PAGE_RENDER, $script);
     return $form;
 }
 /**
  * Enqueue and retrieve all inline scripts that should be executed when the form is rendered.
  * Use add_init_script() function to enqueue scripts.
  *
  * @param array $form
  * @param array $field_values
  * @param bool  $is_ajax
  */
 public static function register_form_init_scripts($form, $field_values = array(), $conditional_logic_enabled = true)
 {
     $is_ajax = false;
     // adding conditional logic script if conditional logic is configured for this form.
     // get_conditional_logic also adds the chosen script for the enhanced dropdown option.
     // if this form does not have conditional logic, add chosen script separately
     if ($conditional_logic_enabled && GFFormDisplay::has_conditional_logic($form)) {
         GFFormDisplay::add_init_script($form['id'], 'number_formats', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_number_formats_script($form));
         GFFormDisplay::add_init_script($form['id'], 'conditional_logic', GFFormDisplay::ON_PAGE_RENDER, self::get_conditional_logic($form, $field_values));
     }
     //adding currency config if there are any product fields in the form
     if (self::has_price_field($form)) {
         GFFormDisplay::add_init_script($form['id'], 'pricing', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_pricing_init_script($form));
     }
     if (self::has_password_strength($form)) {
         $password_script = GFFormDisplay::get_password_strength_init_script($form);
         GFFormDisplay::add_init_script($form['id'], 'password', GFFormDisplay::ON_PAGE_RENDER, $password_script);
     }
     if (self::has_enhanced_dropdown($form)) {
         $chosen_script = GFFormDisplay::get_chosen_init_script($form);
         GFFormDisplay::add_init_script($form['id'], 'chosen', GFFormDisplay::ON_PAGE_RENDER, $chosen_script);
         GFFormDisplay::add_init_script($form['id'], 'chosen', GFFormDisplay::ON_CONDITIONAL_LOGIC, $chosen_script);
     }
     if (self::has_character_counter($form)) {
         GFFormDisplay::add_init_script($form['id'], 'character_counter', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_counter_init_script($form));
     }
     if (GFFormDisplay::has_input_mask($form)) {
         GFFormDisplay::add_init_script($form['id'], 'input_mask', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_input_mask_init_script($form));
     }
     if (GFFormDisplay::has_calculation_field($form)) {
         GFFormDisplay::add_init_script($form['id'], 'number_formats', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_number_formats_script($form));
         GFFormDisplay::add_init_script($form['id'], 'calculation', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_calculations_init_script($form));
     }
     if (self::has_currency_format_number_field($form)) {
         GFFormDisplay::add_init_script($form['id'], 'currency_format', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_currency_format_init_script($form));
     }
     if (self::has_currency_copy_values_option($form)) {
         GFFormDisplay::add_init_script($form['id'], 'copy_values', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_copy_values_init_script($form));
     }
     if (self::has_placeholder($form)) {
         GFFormDisplay::add_init_script($form['id'], 'placeholders', GFFormDisplay::ON_PAGE_RENDER, GFFormDisplay::get_placeholders_init_script($form));
     }
     if (isset($form['fields']) && is_array($form['fields'])) {
         foreach ($form['fields'] as $field) {
             /* @var GF_Field $field */
             if (is_subclass_of($field, 'GF_Field')) {
                 $field->register_form_init_scripts($form);
             }
         }
     }
     gf_do_action(array('gform_register_init_scripts', $form['id']), $form, $field_values, $is_ajax);
 }