| 1 |
/*! gravityforms-eway: form editor for Recurring Payments field */ |
| 2 |
|
| 3 |
// initialise form on page load |
| 4 |
(function($) { |
| 5 |
|
| 6 |
var TYPE_RECURRING = "gfewayrecurring"; |
| 7 |
|
| 8 |
// add required classes to the field on the admin form |
| 9 |
fieldSettings.gfewayrecurring = ".conditional_logic_field_setting, .error_message_setting, .label_setting, .admin_label_setting, .rules_setting, .description_setting, .css_class_setting, .gfewayrecurring_setting"; |
| 10 |
|
| 11 |
// binding to the load field settings event to initialize custom inputs |
| 12 |
$(document).bind("gform_load_field_settings", function(event, field, form) { |
| 13 |
|
| 14 |
$("#gfeway_initial_setting").prop("checked", !!field.gfeway_initial_setting); |
| 15 |
if (!field.gfeway_initial_setting) { |
| 16 |
$("#gfeway_initial_fields").hide(); |
| 17 |
} |
| 18 |
|
| 19 |
// NB: for backwards compatibility, check for combined start/end setting |
| 20 |
if (field.gfeway_recurring_date_start || field.gfeway_recurring_date_setting) { |
| 21 |
$("#gfeway_recurring_date_start").prop("checked", true); |
| 22 |
} |
| 23 |
else { |
| 24 |
$("#gfeway_recurring_date_start").prop("checked", false); |
| 25 |
$("#gfeway_recurring_start_date_fields").hide(); |
| 26 |
} |
| 27 |
|
| 28 |
// NB: for backwards compatibility, check for combined start/end setting |
| 29 |
if (field.gfeway_recurring_date_end || field.gfeway_recurring_date_setting) { |
| 30 |
$("#gfeway_recurring_date_end").prop("checked", true); |
| 31 |
} |
| 32 |
else { |
| 33 |
$("#gfeway_recurring_date_end").prop("checked", false); |
| 34 |
$("#gfeway_recurring_end_date_fields").hide(); |
| 35 |
} |
| 36 |
|
| 37 |
$("#gfeway_initial_amount_label").val(field.gfeway_initial_amount_label); |
| 38 |
$("#gfeway_recurring_amount_label").val(field.gfeway_recurring_amount_label); |
| 39 |
$("#gfeway_initial_date_label").val(field.gfeway_initial_date_label); |
| 40 |
$("#gfeway_start_date_label").val(field.gfeway_start_date_label); |
| 41 |
$("#gfeway_end_date_label").val(field.gfeway_end_date_label); |
| 42 |
$("#gfeway_interval_type_label").val(field.gfeway_interval_type_label); |
| 43 |
|
| 44 |
}); |
| 45 |
|
| 46 |
/** |
| 47 |
* toggle whether to show the Initial Amount and Initial Date fields |
| 48 |
*/ |
| 49 |
$("#gfeway_initial_setting").on("change", function() { |
| 50 |
SetFieldProperty(this.id, this.checked ? "1" : ""); |
| 51 |
|
| 52 |
if (this.checked) { |
| 53 |
$("#gfeway_initial_fields").slideDown(); |
| 54 |
} |
| 55 |
else { |
| 56 |
$("#gfeway_initial_fields").slideUp(); |
| 57 |
} |
| 58 |
}); |
| 59 |
|
| 60 |
/** |
| 61 |
* toggle whether to show the Start Date field |
| 62 |
*/ |
| 63 |
$("#gfeway_recurring_date_start").on("change", function() { |
| 64 |
SetFieldProperty(this.id, this.checked ? "1" : ""); |
| 65 |
|
| 66 |
// cleanup old combined start/end setting |
| 67 |
var field = GetSelectedField(); |
| 68 |
if ("gfeway_recurring_date_setting" in field) { |
| 69 |
field.gfeway_recurring_date_end = field.gfeway_recurring_date_setting ? "1" : ""; |
| 70 |
delete(field.gfeway_recurring_date_setting); |
| 71 |
} |
| 72 |
|
| 73 |
if (this.checked) { |
| 74 |
$("#gfeway_recurring_start_date_fields").slideDown(); |
| 75 |
} |
| 76 |
else { |
| 77 |
$("#gfeway_recurring_start_date_fields").slideUp(); |
| 78 |
} |
| 79 |
}); |
| 80 |
|
| 81 |
/** |
| 82 |
* toggle whether to show the End Date field |
| 83 |
*/ |
| 84 |
$("#gfeway_recurring_date_end").on("change", function() { |
| 85 |
SetFieldProperty(this.id, this.checked ? "1" : ""); |
| 86 |
|
| 87 |
// cleanup old combined start/end setting |
| 88 |
var field = GetSelectedField(); |
| 89 |
if ("gfeway_recurring_date_setting" in field) { |
| 90 |
field.gfeway_recurring_date_start = field.gfeway_recurring_date_setting ? "1" : ""; |
| 91 |
delete(field.gfeway_recurring_date_setting); |
| 92 |
} |
| 93 |
|
| 94 |
if (this.checked) { |
| 95 |
$("#gfeway_recurring_end_date_fields").slideDown(); |
| 96 |
} |
| 97 |
else { |
| 98 |
$("#gfeway_recurring_end_date_fields").slideUp(); |
| 99 |
} |
| 100 |
}); |
| 101 |
|
| 102 |
/** |
| 103 |
* set the label on a subfield in the recurring field |
| 104 |
*/ |
| 105 |
$("li.gfewayrecurring_setting").on("keyup", "input.gfeway-field-label", function() { |
| 106 |
var newLabel = this.value; |
| 107 |
|
| 108 |
// if new label value is empty, pick up the default value instead |
| 109 |
if (!(/\S/.test(newLabel))) { |
| 110 |
newLabel = $(this).data("gfeway-field-label"); |
| 111 |
} |
| 112 |
|
| 113 |
// set the new label, and record for the field |
| 114 |
$("." + this.id).text(newLabel); |
| 115 |
SetFieldProperty(this.id, newLabel); |
| 116 |
}); |
| 117 |
|
| 118 |
/** |
| 119 |
* prevent multiple instances of Recurring field on form |
| 120 |
* @param {bool} can_be_added |
| 121 |
* @param {String} field_type |
| 122 |
* @return {bool} |
| 123 |
*/ |
| 124 |
gform.addFilter("gform_form_editor_can_field_be_added", function(can_be_added, field_type) { |
| 125 |
if (field_type === TYPE_RECURRING && GetFieldsByType([field_type]).length > 0) { |
| 126 |
can_be_added = false; |
| 127 |
window.alert(gfeway_editor_admin_strings_recurring.only_one); |
| 128 |
} |
| 129 |
|
| 130 |
return can_be_added; |
| 131 |
}); |
| 132 |
|
| 133 |
})(jQuery); |
| 134 |
|