PageSourceSearch

https://www.gamesforchange.org/wp-content/plugins/charitable-spam-…/js/charitable-recaptcha.js?ver=7.1.2

js gamesforchange.org collected 2026-10-01 10:19:23 UTC 2,373 bytes, 90 lines download raw bytes

1var charitable_reCAPTCHA_onload = function() {
2
3	( function( $ ) {
4		var $body      = $( 'body' );
5		var $recaptcha = $( '.charitable-recaptcha' );
6		var input      = $recaptcha.parent().find( '[name=charitable_grecaptcha_token]')[0];
7		var form       = input.form;
8		var recaptcha_id;
9
10		/**
11		 * For donation form submissions, execute reCAPTCHA as part of the
12		 * validation process, before firing off the rest of the donation
13		 * form processing.
14		 */
15		var donation_form_handler = function() {
16			var helper,
17				executed = false;
18
19			recaptcha_id = grecaptcha.render( $recaptcha[0], {
20				'sitekey' : CHARITABLE_RECAPTCHA.site_key,
21				'callback' : function( token ) {
22					input.setAttribute( 'value', token );
23					helper.remove_pending_process_by_name( 'recaptcha' );
24				},
25				'error-callback' : function() {
26					helper.add_error( CHARITABLE_RECAPTCHA.error_message );
27					helper.remove_pending_process_by_name( 'recaptcha' );
28				},
29				'expired-callback' : function() {
30					input.setAttribute( 'value', null );
31					helper.remove_pending_process_by_name( 'recaptcha' );
32				},
33				'size' : 'invisible',
34				'isolated' : true,
35			} );
36
37			$body.on( 'charitable:form:validate', function( event, target ) {
38				helper = target;
39
40				if ( helper.errors.length === 0 ) {
41					if ( executed ) {
42						grecaptcha.reset( recaptcha_id );
43					}
44
45					helper.add_pending_process( 'recaptcha' );
46
47					grecaptcha.execute( recaptcha_id );
48
49					executed = true;
50				}
51			} );
52		}
53
54		/**
55		 * For regular form submissions (not the donation form), execute reCAPTCHA
56		 * when the form is submitted.
57		 * */
58		var default_form_handler = function() {
59			var submitting = false;
60
61			recaptcha_id = grecaptcha.render( $recaptcha[0], {
62				'sitekey' : CHARITABLE_RECAPTCHA.site_key,
63				'callback' : function( token ) {
64					input.setAttribute( 'value', token );
65					form.submit();
66				},
67				'error-callback' : function() {
68					if ( submitting ) {
69						alert( CHARITABLE_RECAPTCHA.error_message );
70						submitting = false;
71					}
72				},
73				'size' : 'invisible',
74				'isolated' : true,
75			} );
76
77			form.onsubmit = function() {
78				submitting = true;
79				grecaptcha.execute( recaptcha_id );
80				return false;
81			}
82		}
83
84		if ( form.classList.contains( 'charitable-donation-form' ) ) {
85			donation_form_handler();
86		} else {
87			default_form_handler();
88		}
89	})( jQuery );
90}

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.