PageSourceSearch

https://www.dogma.gr/wp-content/cache/min/1/wp-content/plugins/gem…-political-ad-form-public.js?ver=1787732719

js dogma.gr collected 2026-10-02 07:19:00 UTC 4,695 bytes, 10 lines download raw bytes

1document.addEventListener('DOMContentLoaded',function(){function isValidEmail(email){const re=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return re.test(String(email).toLowerCase())}
2function displayFormFeedbackMessage(messageType,messageText){let form=document.getElementById('political-ad-form');if(!form)return;let feedbackMessage=form.querySelector('.feedback-message');let feedbackText=feedbackMessage?feedbackMessage.querySelector('.feedback-message-text'):null;if(feedbackMessage&&feedbackText){feedbackText.textContent=messageText;feedbackMessage.classList.remove('success','failed','warning','hidden');feedbackMessage.classList.add(messageType);setTimeout(function(){feedbackMessage.classList.add('hidden')},5000)}}
3const form=document.getElementById('political-ad-form');if(!form){return}
4form.addEventListener('submit',function(e){e.preventDefault();if(typeof pcfData==='undefined'){console.error('Form data object (pcfData) is not defined. This script cannot submit the form.');console.error('This object is usually created by wp_localize_script in WordPress.');displayFormFeedbackMessage('failed','Σφάλμα διαμόρφωσης. Η φόρμα δεν μπορεί να υποβληθεί.');return}
5const submitBtn=form.querySelector('button[type="submit"]');const messageDiv=form.querySelector('.message');let isValid=!0;const requiredFields=form.querySelectorAll('input[required], textarea[required], input[placeholder*="*"], textarea[placeholder*="*"]');requiredFields.forEach(function(field){const value=field.value.trim();const column=field.closest('.column');const errorMsg=column?column.querySelector('.validation-error'):null;if(value===''){if(errorMsg)errorMsg.classList.remove('hidden');isValid=!1}else{if(errorMsg)errorMsg.classList.add('hidden')}});const emailField=form.querySelector('#email');if(emailField){const emailValue=emailField.value.trim();const emailColumn=emailField.closest('.column');const emailError=emailColumn?emailColumn.querySelector('.validation-error'):null;if(emailError){if(emailValue===''){emailError.textContent='Το πεδίο είναι υποχρεωτικό';emailError.classList.remove('hidden');isValid=!1}else if(!isValidEmail(emailValue)){emailError.textContent='Παρακαλώ εισάγετε έγκυρο email';emailError.classList.remove('hidden');isValid=!1}else{emailError.classList.add('hidden')}}else if(emailValue===''||!isValidEmail(emailValue)){isValid=!1}}
6if(!isValid){return!1}
7submitBtn.disabled=!0;submitBtn.textContent='Αποστολή...';if(messageDiv){messageDiv.style.display='none'}
8function submitForm(token){const formData=new URLSearchParams();formData.append('action','submit_contact_form');formData.append('nonce',pcfData.nonce);formData.append('fullname',form.querySelector('#fullname')?form.querySelector('#fullname').value:'');formData.append('email',form.querySelector('#email')?form.querySelector('#email').value:'');formData.append('phone',form.querySelector('#phone')?form.querySelector('#phone').value:'');formData.append('info',form.querySelector('#info')?form.querySelector('#info').value:'');formData.append('message',form.querySelector('#message')?form.querySelector('#message').value:'');formData.append('recaptcha_token',token);fetch(pcfData.ajaxurl,{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded',},body:formData,}).then(response=>{if(!response.ok){throw new Error('Network response was not ok: '+response.statusText)}
9return response.json()}).then(data=>{if(data.success){displayFormFeedbackMessage('success','Το μήνυμα σας υποβλήθηκε με επιτυχια.');form.reset()}else{console.log('error',data);displayFormFeedbackMessage('failed','Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε ξανά.')}}).catch(error=>{console.log('error',error);displayFormFeedbackMessage('failed','Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε ξανά.')}).finally(()=>{submitBtn.disabled=!1;submitBtn.textContent='Υποβολή'})}
10if(typeof grecaptcha!=='undefined'&&grecaptcha.execute&&pcfData.siteKey){grecaptcha.ready(function(){gre
10captcha.execute(pcfData.siteKey,{action:'submit'}).then(function(token){console.log('reCAPTCHA token generated:',token);submitForm(token)}).catch(function(error){console.error('reCAPTCHA error:',error);displayFormFeedbackMessage('failed','reCAPTCHA error. Παρακαλώ δοκιμάστε ξανά.');submitBtn.disabled=!1;submitBtn.textContent='Υποβολή'})})}else{console.log('reCAPTCHA not configured. Submitting without token.');console.log('grecaptcha defined:',typeof grecaptcha!=='undefined');console.log('siteKey:',pcfData.siteKey);submitForm('')}})})

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.