PageSourceSearch

https://sala-negra.com/wp-content/plugins/actua/assets/js/actua-public-form.js?ver=1.1.5

js sala-negra.com collected 2026-10-03 22:11:49 UTC 18,136 bytes, 524 lines download raw bytes

1(function( $, i18n ) {
2
3	var ActuaPublicForm = $.fn.ActuaPublicForm = {};
4	ActuaPublicForm.vars = actua_public_vars;
5	ActuaPublicForm.loading = {background:"rgba(54,70,93,0.95)", imageColor:"#FFFFFF", size:30, minSize:30, maxSize:30};
6	ActuaPublicForm.form_id = 0;
7	ActuaPublicForm.data = {};
8	ActuaPublicForm.autofill = false;
9	ActuaPublicForm.autofill_method = false;
10
11	ActuaPublicForm.app = {
12		
13		init: function(){
14			
15			if($("#actuaFormContainer").length){
16				
17				ActuaPublicForm.form_id = $("#actuaFormContainer").data('form_id');
18				ActuaPublicForm.app.enableForm();
19	
20			}
21			
22		},
23		enableForm: function(){
24			
25			$.ajax({
26				url: ActuaPublicForm.vars.site_url + '/actua_public_form/display_form/',
27				dataType:"html",
28				type:'POST',
29				data:{'form_id':ActuaPublicForm.form_id},
30				beforeSend: function(){
31					
32					$('#actuaFormContainer').LoadingOverlay('show',ActuaPublicForm.loading);
33					
34				},
35				success: function(response){
36					
37					$("#actuaForm").html(response);
38					ActuaPublicForm.app.enableFormEvents();
39										
40				},
41				error: function(){
42					$('#actuaFormContainer').LoadingOverlay('hide',ActuaPublicForm.loading);
43				}
44			}).done(function(){
45				$('#actuaFormContainer').LoadingOverlay('hide',ActuaPublicForm.loading);
46			});	
47			
48		},
49		enableFormEvents: function(){
50			
51			if($('.actua_form_range_input').length){
52				$('.actua_form_range_input').asRange({
53					range: false,
54					tip: {
55						active: 'onMove'
56					}	
57				});
58			}
59			
60			if($('#actuaFormContainer .col.autofill').length){
61				ActuaPublicForm.autofill = true;
62				if($('#actuaFormContainer .col.autofill.in-session').length){
63					ActuaPublicForm.autofill_method = 'session';
64				}else{
65					ActuaPublicForm.autofill_method = 'local';	
66				}
67			}
68			
69			$('#actua-form-submit-btn').click(function(event){
70				event.preventDefault();
71				ActuaPublicForm.app.submitForm();	
72			});
73			
74			ActuaPublicForm.app.enableAutofill();
75			ActuaPublicForm.app.loadAutofill();
76			
77		},
78		enableAutofill: function(){
79			if(ActuaPublicForm.autofill == true){
80				$('#actuaForm input[type=date], #actuaForm select, #actuaForm textarea, #actuaForm input[type=text], #actuaForm input[type=email], #actuaForm input[type=number]').change(function(){
81					var key = $(this).attr('id');
82					var value = $(this).val();
83					if(ActuaPublicForm.autofill_method == 'session'){
84						sessionStorage.setItem(key, value);			
85					}else{
86						localStorage.setItem(key, value);	
87					}
88				});
89				$('#actuaForm input[type=checkbox]').change(function(){
90					var key = $(this).attr('id');
91					if($(this).is(':checked')){
92						var value = 'check';
93					}else{
94						var value = 'uncheck';
95					}
96					if(ActuaPublicForm.autofill_method == 'session'){
97						sessionStorage.setItem(key, value);			
98					}else{
99						localStorage.setItem(key, value);	
100					}
101				});
102				$('#actuaForm input[type=radio]').change(function(){
103					var key = $(this).attr('name');
104					if($(this).is(':checked')){
105						var value = $(this).val();
106						if(ActuaPublicForm.autofill_method == 'session'){
107							sessionStorage.setItem(key, value);			
108						}else{
109							localStorage.setItem(key, value);	
110						}
111					}
112				});
113				$('#actuaForm .actua_form_range_input').on('asRange::change', function (e) {
114					var key = $(this).attr('id');
115					var value = $(this).val();
116					if(ActuaPublicForm.autofill_method == 'session'){
117						sessionStorage.setItem(key, value);			
118					}else{
119						localStorage.setItem(key, value);	
120					}
121				});			
122			}			
123		},
124		loadAutofill:function(){
125			if(ActuaPublicForm.autofill == true){
126				$('#actuaForm input[type=date], #actuaForm select, #actuaForm textarea, #actuaForm input[type=text], #actuaForm input[type=email], #actuaForm input[type=number]').each(function(index, element) {
127					var key = $(this).attr('id');
128					if(ActuaPublicForm.autofill_method == 'session'){
129						if (sessionStorage.getItem(key)) {
130							$(this).val(sessionStorage.getItem(key));
131						}			
132					}else{
133						if (localStorage.getItem(key)) {
134							$(this).val(localStorage.getItem(key));
135						}			
136					}
137				});
138				$('#actuaForm input[type=checkbox]').each(function(index, element) {
139					var key = $(this).attr('id');
140					if(ActuaPublicForm.autofill_method == 'session'){
141						if (sessionStorage.getItem(key)) {
142							if(sessionStorage.getItem(key) == 'check'){
143								$(this).prop( "checked", true);
144							}else{
145								$(this).prop( "checked", false);
146							}
147						}
148					}else{
149						if (localStorage.getItem(key)) {
150							if(localStorage.getItem(key) == 'check'){
151								$(this).prop( "checked", true);
152							}else{
153								$(this).prop( "checked", false);
154							}
155						}
156					}
157				});
158				$('#actuaForm input[type=radio]').each(function(index, element) {
159					var key = $(this).attr('name');
160					if(ActuaPublicForm.autofill_method == 'session'){
161						if (sessionStorage.getItem(key)) {
162							if(sessionStorage.getItem(key) == $(this).val()){
163								$(this).prop( "checked", true);
164							}
165						}
166					}else{
167						if (localStorage.getItem(key)) {
168							if(localStorage.getItem(key) == $(this).val()){
169								$(this).prop( "checked", true);
170							}
171						}
172					}
173				});
174				$('#actuaForm .actua_form_range_input').each(function(index, element) {
175					var key = $(this).attr('id');
176					if(ActuaPublicForm.autofill_method == 'session'){
177						if (sessionStorage.getItem(key)) {
178							$(this).asRange('set',sessionStorage.getItem(key));	
179						}
180					}else{
181						if (localStorage.getItem(key)) {
182							$(this).asRange('set',localStorage.getItem(key));	
183						}
184					}
185				});
186			}
187		},
188		submitForm: function() {
189			
190			if(ActuaPublicForm.app.validateForm()){
191				
192				ActuaPublicForm.app.recolectFormData();
193				
194				$.ajax({
195					url: ActuaPublicForm.vars.site_url + '/actua_public_form/process_form/',
196					dataType:"json",
197					type:'POST',
198					data:{'form_id':ActuaPublicForm.form_id,'data':ActuaPublicForm.data},
199					beforeSend: function(){
200						
201						$('#actuaFormContainer').LoadingOverlay('show',ActuaPublicForm.loading);
202						
203					},
204					success: function(response){
205
206						if(response.success == 'toast_msg'){
207							
208							toastr.error(response.msg);	
209							
210						}else if(response.success == 'html_msg'){
211							if(ActuaPublicForm.autofill == true){
212								if(response.clean_stored == 'clean'){
213									sessionStorage.clear();
214									localStorage.clear();
215								}
216							}
217							$("#actuaForm").html(response.msg);
218							$('html,body').animate({scrollTop: $('#actuaForm').offset().top - 300},1000);
219						}
220											
221					},
222					error: function(){
223						$('#actuaFormContainer').LoadingOverlay('hide',ActuaPublicForm.loading);
224					}
225				}).done(function(){
226					$('#actuaFormContainer').LoadingOverlay('hide',ActuaPublicForm.loading);
227				});	
228				
229			}else{
230				
231				$('html,body').animate({scrollTop: $('.is-invalid').first().offset().top - 300},1000);
232				toastr.error(ActuaPublicForm.vars.texts.something_went_wrong);
233				
234			}
235			
236		},
237		recolectFormData: function(){
238			
239			var formData = [];
240			
241			$('#actuaForm input[type=date], #actuaForm select, #actuaForm textarea, #actuaForm input[type=text], #actuaForm input[type=email], #actuaForm input[type=number]').each(function(index, element) {
242				var name = $(this).attr('id');
243				var value = $(this).val();
244				var current = {'name':name,'value':value};
245				formData.push(current);
246			});
247			
248			var distinctInputNames = [];
249			$('#actuaForm .form-check-input').each(function(index, element) {
250				var name = $(this).attr('name');
251				if(distinctInputNames.indexOf(name) == -1){
252					distinctInputNames.push(name);
253				}
254			});
255			
256			$(distinctInputNames).each(function(index, element) {
257				var values = [];
258				$('input[name='+element+']:checked').each(function(index, element) {
259                    values[index] = $(this).val();
260                });
261				var current = {'name':element,'value':values};
262				formData.push(current);
263			});
264			
265			ActuaPublicForm.data = formData;
266			
267		},
268		validateForm: function() {
269
270			$('#actuaForm .is-invalid').removeClass('is-invalid');
271			$('#actuaForm .invalid-feedback').empty();
272			
273			var form_validated = true;
274			
275			$('#actuaForm input[type=text]').each(function(index, element) {
276                var value = $(this).val();
277                var required = $(this).attr('required');
278                var maxlength = parseInt($(this).attr('maxlength'));
279				if(required == 'required' && value == ''){
280					$(this).addClass('is-invalid');
281					form_validated = false;
282					$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.field_required);
283				}
284				if(value != ''){
285					if(!isNaN(maxlength)  && value.length > maxlength){
286						$(this).addClass('is-invalid');
287						form_validated = false;
288						$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.maxlength_error.replace('%s',maxlength));
289					}
290					if($(this).hasClass('actua_form_url_validation')){
291						if(!ActuaPublicForm.app.validateURL(value)){
292							$(this).addClass('is-invalid');
293							form_validated = false;
294							$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.valid_url_required);
295						}
296					}
297				}
298            });
299
300			$('#actuaForm input[type=email]').each(function(index, element) {
301                var value = $(this).val();
302                var required = $(this).attr('required');
303                var maxlength = parseInt($(this).attr('maxlength'));
304				if(required == 'required' && value == ''){
305					$(this).addClass('is-invalid');
306					form_validated = false;
307					$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.field_required);
308				}
309				if(value != ''){
310					if(!isNaN(maxlength)  && value.length > maxlength){
311						$(this).addClass('is-invalid');
312						form_validated = false;
313						$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.maxlength_error.replace('%s',maxlength));
314					}
315					if(!ActuaPublicForm.app.validateEmail(value)){
316						$(this).addClass('is-invalid');
317						form_validated = false;
318						$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.valid_email_required);
319					}
320				}
321			});
322			
323			$('#actuaForm input[type=number]:not(.actua_form_range_input)').each(function(index, element) {
324                var value = $(this).val();
325                var required = $(this).attr('required');
326                var maxlength = parseInt($(this).attr('maxlength'));
327                var imin = parseInt($(this).attr('min'));
328                var imax = parseInt($(this).attr('max'));
329				if(required == 'required' && value == ''){
330					$(this).addClass('is-invalid');
331					form_validated = false;
332					$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.field_required);
333				}
334				if(value != ''){
335					if(!isNaN(maxlength)  && value.length > maxlength){
336						$(this).addClass('is-invalid');
337						form_validated = false;
338						$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.maxlength_error.replace('%s',maxlength));
339					}
340					if(!isNaN(imin) && value < imin){
341						$(this).addClass('is-invalid');
342						form_validated = false;
343						$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.min_error.replace('%s',imin));
344					}
345					if(!isNaN(imax) && value > imax){
346						$(this).addClass('is-invalid');
347						form_validated = false;
348						$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.max_error.replace('%s',imax));
349					}
350				}
351			});
352			
353			$('#actuaForm select').each(function(index, element) {
354                var value = $(this).val();
355                var required = $(this).attr('required');
356				if(required == 'required' && value == null){
357					$(this).addClass('is-invalid');
358					form_validated = false;
359					$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.field_required);
360				}
361			});
362
363			$('#actuaForm textarea').each(function(index, element) {
364                var value = $(this).val();
365                var required = $(this).attr('required');
366				if(required == 'required' && value == ''){
367					$(this).addClass('is-invalid');
368					form_validated = false;
369					$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.field_required);
370				}
371			});
372
373			$('#actuaForm input[type=date]').each(function(index, element) {
374                var value = $(this).val();
375                var required = $(this).attr('required');
376				if(required == 'required' && value == ''){
377					$(this).addClass('is-invalid');
378					form_validated = false;
379					$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.field_required);
380				}
381				if(value != '' && !ActuaPublicForm.app.validateDate(value)){
382					$(this).addClass('is-invalid');
383					form_validated = false;
384					$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.valid_date_required);
385				}
386				if($(this).attr('min_date')){
387					var inputDate = new Date(value);
388					var minDate = new Date($(this).attr('min_date'));
389					if(inputDate < minDate){
390						var limit_date = $.fn.ActuaPublic.app.dateFormat($(this).attr('min_date'),"DD/MM/YYYY");
391						form_validated = false;
392						$(this).addClass('is-invalid');
393						$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.minimum_date_available + " " + limit_date);
394					}
395				}
396				if($(this).attr('max_date')){
397					var inputDate = new Date(value);
398					var maxDate = new Date($(this).attr('max_date'));
399					if(inputDate > maxDate){
400						var limit_date = $.fn.ActuaPublic.app.dateFormat($(this).attr('max_date'),"DD/MM/YYYY");
401						form_validated = false;
402						$(this).addClass('is-invalid');
403						$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.maximum_date_available + " " + limit_date);
404					}
405				}
406			});
407			
408			$('#actuaForm .group-required').each(function(index, element) {
409				var inputs = $(this).find('.form-check-input');
410				var has_checked = false;
411				inputs.each(function(index, element) {
412                    if($(this).is(':checked')){
413						has_checked = true;	
414					}
415                });
416				if(!has_checked){
417					$(this).addClass('is-invalid');
418					form_validated = false;
419					$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.field_required);
420				}
421			});
422			
423			$('#actuaForm .form-group').each(function(index, element) {
424				if($(this).attr('data-maxcheckable') && $(this).attr('data-mincheckable')){
425					if($(this).data('maxcheckable') != 'DEFAULT'){
426						var lim = $(this).data('maxcheckable');
427						var inputs = $(this).find('.form-check-input');
428						var conta = 0;
429						inputs.each(function(index, element) {
430							if($(this).is(':checked')){
431								conta++;	
432							}
433						});
434						if(conta > lim){
435							$(this).addClass('is-invalid');
436							form_validated = false;
437							$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.max_checkable_error.replace('%s',lim));
438							
439						}
440					}
441					if($(this).data('mincheckable') != 'DEFAULT'){
442						var lim = $(this).data('mincheckable');
443						var inputs = $(this).find('.form-check-input');
444						var conta = 0;
445						inputs.each(function(index, element) {
446							if($(this).is(':checked')){
447								conta++;	
448							}
449						});
450						if(conta < lim){
451							$(this).addClass('is-invalid');
452							form_validated = false;
453							$(this).closest('.form-group').find('div.invalid-feedback').text(ActuaPublicForm.vars.texts.min_checkable_error.replace('%s',lim));
454						}
455					}
456				}					 							 
457			 });
458			
459			if(form_validated){
460				$('#actuaForm .form-pattern').each(function(index, element) {
461					var field_id = $(this).data('field_id');
462					var field_val = $(this).val();
463					var current_input = $(this);
464					if(field_val != ''){
465						$.ajax({
466							url: ActuaPublicForm.vars.site_url + '/actua_public_form/check_pattern/',
467							dataType:"json",
468							async:false,
469							type:'POST',
470							data:{'field_id':field_id,'field_val':field_val},
471							success: function(result){
472								
473								if(result.success == 'error'){
474									$(current_input).addClass('is-invalid');
475									form_validated = false;
476									$(current_input).closest('.form-group').find('div.invalid-feedback').text(result.msg);
477								}
478													
479							},
480						});	
481					}
482				});
483			}
484
485			return form_validated;
486			
487		},
488		validateDate: function(str) {
489
490			var pattern = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
491			return pattern.test(str);
492
493		},
494		validateEmail: function(str) {
495
496			var pattern = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
497			return pattern.test(str);
498
499		},
500		validateURL: function(str) {
501			
502			var pattern = /(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
503			return pattern.test(str);
504			
505  		}
506	}
507
508	jQuery(document).ready(function($) {
509		
510		ActuaPublicForm.app.init();
511
512	});
513	
514	jQuery( document ).ajaxComplete(function(event, xhr, settings) {
515		
516		let url = new URL(settings.url);
517		if(url.pathname == '/actua_public_booking/display_tickets/'){
518			ActuaPublicForm.app.init();
519			$('#actuaFormContainer').closest('.container').addClass('notice notice-warning');
520		}
521		
522	});
523			
524})( jQuery, wp.i18n );

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.