1/** 2 * Give Tributes Frontend JS. 3 */ 4 5var give_global_vars, 6 give_tributes_public_strings, 7 Give_Tribute, 8 give_tributes_common_vars; 9 10jQuery(document).ready(function ($) { 11 var $body = $("body"); 12 13 /** 14 * On Change Show dedication. 15 */ 16 $body 17 .on( 18 "change", 19 'input[name="give_tributes_show_dedication"]:radio', 20 function () { 21 var form = $(this).closest("form.give-form"); 22 23 if (0 === form.length) { 24 form = $(this).closest( 25 "#give_md_create_payment, #give-tributes-edit-donation, #give-tributes-edit-donation" 26 ); 27 if (!form) { 28 form = $(this).parents("form"); 29 } 30 } 31 32 Give_Tribute.give_tributes_show_dedication(form); 33 } 34 ) 35 .change(); 36 37 /** 38 * On Change of Would like to option. 39 */ 40 $body 41 .on("change", 'input[name="give_tributes_would_to"]', function () { 42 var form = $(this).closest("form.give-form"); 43 44 if (0 === form.length) { 45 form = $(this).closest( 46 "#give_md_create_payment, #give-tributes-edit-donation" 47 ); 48 if (!form) { 49 form = $(this).parents("form"); 50 } 51 } 52 Give_Tribute.give_tributes_would_to(form); 53 }) 54 .change(); 55 56 /** 57 * Get state list based on Country. 58 */ 59 $body 60 .on("change", 'select[name="give_tributes_address_country"]', function () { 61 var $this = $(this), 62 form = $this.closest("form.give-form"); 63 64 if (0 === form.length) { 65 form = $(this).closest( 66 "#give_md_create_payment, #give-tributes-edit-donation" 67 ); 68 } 69 Give_Tribute.give_tributes_address_country(form); 70 }) 71 .change(); 72 73 /** 74 * Give Tribute type Buttons: Update tribute type Field based on select. 75 */ 76 $body.on( 77 "change touchend click", 78 ".give-tribute-type-button, .give-tribute-type-radio, .give-tributes-type-select, .give-tributes-type-input", 79 function () { 80 var give_tribute_type = $(this).val(), 81 form = $(this).closest("form.give-form"), 82 this_btn = $(this); 83 84 if (!form) { 85 form = $(this).parents("form"); 86 } 87 88 if (0 === form.length) { 89 form = $(this).closest( 90 "#give_md_create_payment, #give-tributes-edit-donation" 91 ); 92 93 if ($(this).hasClass("give-tribute-type-button")) { 94 $(form) 95 .find(".give-tribute-type-button") 96 .each(function (i, em) { 97 $(this).removeClass("active"); 98 }); 99 100 // Add active class. 101 this_btn.addClass("active"); 102 } 103 } 104 105 form.find(".give-tributes-type").val(give_tribute_type); 106 } 107 ); 108 109 /** 110 * Character count logic for eCard. 111 */ 112 $body.on( 113 "keyup change", 114 'textarea.give-tributes-personalized-message, textarea[name="give-tributes-mail-card-personalized-message"]', 115 function () { 116 var $this = $(this); 117 118 $this 119 .closest(".give_tributes_send_ecard_fields") 120 .find(".give-tributes-ecard-personalized-message-left") 121 .text( 122 parseInt($this.attr("maxlength")) - 123 $this.val().length + 124 " " + 125 give_tributes_common_vars.give_tribute_characters_left 126 ); 127 } 128 ); 129 130 /** 131 * Character count logic for Mail card. 132 */ 133 $body.on( 134 "keyup change", 135 'textarea[name="give-tributes-mail-card-personalized-message"]', 136 function () { 137 var $this = $(this); 138 139 $this 140 .closest(".give_tributes_mail_card_personalized_message") 141 .find(".give-tributes-mail-card-personalized-message-left") 142 .text( 143 parseInt($this.attr("maxlength")) - 144 $this.val().length + 145 " " + 146 give_tributes_common_vars.give_tribute_characters_left 147 ); 148 } 149 ); 150 151 /** 152 * Control repeater for notification field. 153 * 154 * @since 1.0 155 */ 156 $(document).on("click", "span.give-tributes-clone-field", function (e) { 157 // Prevent Default. 158 e.preventDefault(); 159 160 var form = $(this).closest("form.give-form"), 161 lists_container = $(this).closest(".give-tributes-notification-lists"); 162 163 if (0 === form.length) { 164 form = $(this).closest( 165 "#give_md_create_payment, #give-tributes-edit-donation" 166 ); 167 168 if (!form) { 169 form = $(this).parents("form"); 170 } 171 } 172 173 // Get the button action. 174 var btn_action = jQuery(this).data("action"), 175 recipient_fields = $(this).closest(".give_tributes_send_ecard_fields"), 176 count_recipient = lists_container.find( 177 ".give_tributes_send_ecard_fields" 178 ).length, 179 max_length = recipient_fields 180 .find("textarea.give-tributes-personalized-message") 181 .attr("maxlength"), 182 form_id = form.find('input[name="give-form-id"]').val(), 183 recipient_count = 0; 184 185 // If 'add' action were requested. 186 if ("add" === btn_action) { 187 // Limit exceed after 5 receipts. 188 if (count_recipient >= 5) { 189 alert(give_tributes_public_strings.give_tribute_receipt_limit_exceed); 190 return false;
191 } 192 193 // Increase recipient count. 194 recipient_count = recipient_count + 1; 195 196 // Wrap receipt field-set into a div container. 197 recipient_fields = 198 '<div id="give-tributes-send-ecard-fields-' + 199 form_id + 200 "-recipient-" + 201 recipient_count + 202 '" class="' + 203 recipient_fields.attr("class") + 204 ' cloned-field" >' + 205 recipient_fields.html() + 206 "</div>"; 207 208 var appended_html = lists_container.append(recipient_fields), 209 notify_person_section = jQuery( 210 "#give-tributes-send-ecard-fields-" + 211 form_id + 212 "-recipient-" + 213 recipient_count 214 ); 215 216 // Loop all the label 217 notify_person_section.find(".give-label").each(function (em, i) { 218 var $this = $(this), 219 attr_for = $this.attr("for"), 220 new_id = attr_for + "-" + recipient_count; 221 222 $(this).attr("for", new_id); 223 notify_person_section 224 .find("input#" + attr_for + ",textarea#" + attr_for) 225 .attr("id", new_id); 226 }); 227 228 var character_left = appended_html.find( 229 ".cloned-field .give-tributes-ecard-personalized-message-left" 230 ); 231 232 if (character_left.length > 0) { 233 character_left.html(character_left.html().replace(/\d+/, max_length)); 234 } 235 236 // Add recipient field. 237 appended_html 238 .find(".cloned-field input") 239 .val("") 240 .closest(".cloned-field") 241 .removeClass("cloned-field"); 242 243 if ( 244 !$(this).closest( 245 "#give_md_create_payment, #give-tributes-edit-donation" 246 ) 247 ) { 248 // Floating labels. 249 give_fl_trigger(); 250 } 251 } else if ("remove" === btn_action) { 252 // If the action is about to remove the fieldset. 253 254 // Do not remove if, its last recipient. 255 if (count_recipient <= 1) { 256 return false; 257 } 258 259 // Remove receipt set group. 260 jQuery(this).closest(".give_tributes_send_ecard_fields").remove(); 261 } 262 263 // Remove Cross sign. 264 Give_Tribute.remove_cross_sign(); 265 }); 266 267 /** 268 * Give Tribute init. 269 */ 270 Give_Tribute = { 271 /** 272 * Init. 273 */ 274 init: function () { 275 var forms = $("form.give-form"); 276 277 // If there is no form element then trigger init() function for manual donation. 278 if (0 === forms.length) { 279 // Get the form from manual donation creation or edit donation. 280 var $form = $("#give_md_create_payment, #give-tributes-edit-donation"); 281 282 Give_Tribute.initial_trigger($form); 283 284 $form.find("button.give-tribute-type-button").each(function (i, em) { 285 if (i === 0) { 286 $(this).addClass("active"); 287 } 288 $(this).addClass("button"); 289 }); 290 } else { 291 forms.each(function () { 292 Give_Tribute.initial_trigger($(this)); 293 }); 294 } 295 }, 296 297 /** 298 * Initial load 299 * 300 * @since 2.0 Trigger change event on the "show_dedication" radio to prevent the display of hidden fields in the first form render 301 * @since 1.4.1 302 * 303 * @param $form 304 */ 305 initial_trigger: function ($form) { 306 Give_Tribute.give_tributes_show_dedication($form); 307 Give_Tribute.give_tributes_would_to($form); 308 Give_Tribute.remove_cross_sign(); 309 $('input[name="give_tributes_show_dedication"]:radio').trigger("change"); 310 }, 311 312 /** 313 * Show dedication. 314 * 315 * @param $form 316 */ 317 give_tributes_show_dedication: function ($form) { 318 var form_id = Give_Tribute.getFormID($form), 319 value = $form 320 .find('input[name="give_tributes_show_dedication"]') 321 .filter(':radio:checked,[type="hidden"]') 322 .val(), 323 tribute_type_wrap = $form.find("#give-tributes-type-wrap-" + form_id), 324 tribute_info_wrap = $form.find("#give-tributes-info-wrap-" + form_id), 325 tribute_grab_info_wrap = $form.find( 326 "#give-tributes-grab-info-wrap-" + form_id 327 ), 328 tribute_mail_card_fields = $form.find( 329 "#give-tributes-mail-card-fields-" + form_id 330 ), 331 tribute_ecard_fields = $form.find( 332 "#give-tributes-notification-list-" + form_id 333 ), 334 give_tribute_type = $form 335 .find(".give-tributes-type-button-list li:first button") 336 .val(), 337 give_tribute_email = $( 338 "#give_md_create_payment, #give-tributes-edit-donation" 339 ).find("tr.give-tributes-row.give-tributes-email-option"); 340 341 if (tribute_type_wrap.hasClass("has_radios")) { 342 give_tribute_type = $form 343 .find('input[name="give_tributes_radio_type"]:radio:checked') 344 .val(); 345 } else if (tribute_type_wrap.hasClass("has_dropdown")) { 346 give_tribute_type = $form 347 .find(".give-tributes-type-select option:first") 348 .val(); 349 } 350 351 var give_tribute_type_append_value = $form.find( 352 ".give-tributes-type-" + form_id 353 ); 354 give_tribute_type_append_value.val(give_tribute_type); 355 356 // If enable show other fields. 357 if ("no" === value) { 358 // Hide it. 359 tribute_type_wrap.hide(); 360 tribute_info_wrap.hide(); 361 tribute_grab_info_wrap.hide(); 362 tribute_mail_card_fields.hide(); 363 tribute_ecard_fields.hide(); 364 give_tribute_email.hide(); 365 366 tribute_type_wrap.closest("tr.give-tributes-row").hide(); 367 tribute_info_wrap.closest("tr.give-tributes-row").hide(); 368 tribute_grab_info_wrap.closest("tr.give-tributes-row").hide(); 369 tribute_mail_card_fields.closest("tr.give-tributes-row").hide(); 370 tribute_ecard_fields.closest("tr.give-tributes-row").hide(); 371 } else { 372 // Otherwise, show rest of fields. 373 tribute_type_wrap.show(); 374 tribute_info_wrap.show(); 375 tribute_grab_info_wrap.show(); 376 tribute_mail_card_fields.show(); 377 tribute_ecard_fields.show(); 378 give_tribute_email.show(); 379 380 // Show manual donation entities. 381 tribute_type_wrap.closest("tr.give-tributes-row").show(); 382 tribute_info_wrap.closest("tr.give-tributes-row").show(); 383 tribute_grab_info_wrap.closest("tr.give-tributes-row").show(); 384 tribute_mail_card_fields.closest("tr.give-tributes-row").show(); 385 tribute_ecard_fields.closest("tr.give-tributes-row").show(); 386 387 $('input[name="give_tributes_would_to"]').trigger("change"); 388 } // End if(). 389 }, 390 391 /** 392 * 393 * @param $form 394 */ 395 give_tributes_would_to: function ($form) { 396 var form_id = Give_Tribute.getFormID($form), 397 give_tributes_would_like_to = $form 398 .find( 399 "#give-tributes-grab-info-wrap-" + 400 form_id + 401 ' input[name="give_tributes_would_to"]' 402 ) 403 .filter(':radio:checked,[type="hidden"]') 404 .val(), 405 give_tributes_mail_card_fields = $form.find( 406 "#give-tributes-mail-card-fields-" + form_id 407 ), 408 give_tributes_ecard_fields = $form.find( 409 ".give-tributes-notification-lists" 410 ), 411 give_tribute_email = $( 412 "#give_md_create_payment, #give-tributes-edit-donation" 413 ).find("tr.give-tributes-row.give-tributes-email-option"); 414 415 if ("send_eCard" === give_tributes_would_like_to) { 416 give_tributes_ecard_fields.show(); 417 give_tributes_ecard_fields.closest("tr.give-tributes-row").show(); // Manual Donation. 418 419 give_tributes_mail_card_fields.hide(); 420 give_tributes_mail_card_fields.closest("tr.give-tributes-row").show(); // Manual Donation. 421 give_tribute_email.show(); 422 } else if ("send_mail_card" === give_tributes_would_like_to) { 423 give_tributes_ecard_fields.hide(); 424 give_tributes_mail_card_fields.show(); 425 426 give_tributes_ecard_fields.closest("tr.give-tributes-row").show(); // Manual Donation. 427 give_tribute_email.hide(); 428 } else { 429 give_tributes_ecard_fields.hide(); 430 give_tributes_mail_card_fields.hide(); 431 432 give_tributes_mail_card_fields.closest("tr.give-tributes-row").hide(); // Manual Donation. 433 give_tributes_ecard_fields.closest("tr.give-tributes-row").hide(); // Manual Donation. 434 give_tribute_email.hide(); 435 } 436 }, 437 438 /** 439 * Tributes Mail a Card Address Country Change. 440 * 441 * @param $form 442 */ 443 give_tributes_address_country: function ($form) { 444 var form_id = Give_Tribute.getFormID($form), 445 state_wrap = $form.find("#give-tributes-mail-card-state-" + form_id), 446 default_country = $form 447 .find("#give_tributes_address_country_" + form_id) 448 .val(); 449 450 if ("undefined" !== typeof default_country && "" !== default_country) { 451 var data = { 452 action: "give_get_states", 453 country: default_country, 454 field_name: "give_tributes_address_state", 455 form_id: form_id, 456 }; 457 458 $.post(give_tributes_common_vars.ajax_url, data, function (response) { 459 state_wrap 460 .find("*") 461 .not(".give_tributes_address_state_label, span") 462 .remove(); 463 464 // Show the states dropdown menu. 465 state_wrap.removeClass("give-hidden"); 466
467 // Add support to zip fields. 468 $form.find(".give_tributes_adjust_zip").removeClass("form-row-wide"); 469 $form.find(".give_tributes_adjust_zip").addClass("form-row-last"); 470 471 if ( 472 "undefined" !== typeof response.states_found && 473 true === response.states_found 474 ) { 475 state_wrap.append(response.data); 476 } else { 477 state_wrap.append( 478 '<input aria-required="true" name="give_tributes_address_state" id="give_tributes_address_state_' + 479 form_id + 480 '" class="text give-input required" type="text" value="" />' 481 ); 482 483 if ( 484 "undefined" !== typeof response.show_field && 485 false === response.show_field 486 ) { 487 // Hide the states drop-down menu. 488 state_wrap.addClass("give-hidden"); 489 490 // Add support to zip fields. 491 $form.find(".give_tributes_adjust_zip").addClass("form-row-wide"); 492 $form 493 .find(".give_tributes_adjust_zip") 494 .removeClass("form-row-last"); 495 } 496 } 497 }); 498 } 499 }, 500 501 /** 502 * Get the Donation form Id from the manual donation page 503 * or from front-end donation form. 504 * 505 * @since 1.4.1 506 * 507 * @param $form 508 * @returns {*} 509 */ 510 getFormID: function ($form) { 511 // Get the form ID. 512 var form_id = $form.find('input[name="give-form-id"]').val(); 513 514 // If form id is undefined. 515 if (undefined === form_id) { 516 form_id = jQuery('select[name="forms[id]"]').val(); 517 } 518 519 return form_id; 520 }, 521 522 /** 523 * Remove cross sign for the first repeater field. 524 */ 525 remove_cross_sign: function () { 526 var ecard_fields = jQuery(".give_tributes_send_ecard_fields"); 527 528 ecard_fields.each(function (index) { 529 $(this).find(".give-icon-minus").parent().show(); 530 531 if (0 === index && 1 === ecard_fields.length) { 532 $(this).find(".give-icon-minus").parent().hide(); 533 } 534 }); 535 }, 536 }; 537 538 // Give Tribute init. 539 Give_Tribute.init(); 540});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.