PATH:
home
/
cf7x
/
public_html
/
wp-content_
/
plugins
/
email-validator
/
assets
(function($){ let token = null; let total = 0; let inProgress = false; let canceled = false; const els = { dropzone: $('#eva-dropzone'), choose: $('#eva-choose-file'), file: $('#eva-csv-file'), fileMeta: $('#eva-file-meta'), start: $('#eva-start-import'), cancel: $('#eva-cancel-import'), uploadWrap: $('#eva-upload-status'), uploadFill: $('#eva-upload-progress'), importWrap: $('#eva-import-status'), importFill: $('#eva-import-progress'), importText: $('#eva-import-text'), errorBox: $('#eva-error') }; function setDisabled(disabled){ els.start.prop('disabled', disabled); els.cancel.prop('disabled', disabled); } function showError(msg){ els.errorBox.removeClass('notice-success').addClass('notice-error').text(msg).show(); } function showNotice(msg){ els.errorBox.removeClass('notice-error').addClass('notice-success').text(msg).show(); } function clearError(){ els.errorBox.hide().removeClass('notice-error notice-success').empty(); } function showUploadProgress(pct){ els.uploadWrap.show(); els.uploadFill.css('width', pct + '%'); } function showImportProgress(pct, text){ els.importWrap.show(); els.importFill.css('width', pct + '%'); if (text) els.importText.text(text); } function formatBytes(bytes){ if(!bytes && bytes!==0) return ''; const sizes=['B','KB','MB','GB']; const i=Math.floor(Math.log(bytes)/Math.log(1024)); return (bytes/Math.pow(1024,i)).toFixed(1)+' '+sizes[i]; } let opening = false; function pickFile(){ if (opening) return; opening = true; try { els.file[0].click(); } finally { setTimeout(function(){ opening = false; }, 0); } } function acceptFile(file){ if (!file) return false; const isCsv = /\.csv$/i.test(file.name); if (!isCsv){ showError('Please choose a CSV file.'); return false; } clearError(); els.fileMeta.text(file.name + ' • ' + formatBytes(file.size)).show(); els.start.prop('disabled', false); return true; } function uploadFile(file){ return new Promise(function(resolve, reject){ const form = new FormData(); form.append('action', 'eva_upload_csv'); form.append('nonce', EVA.nonce); form.append('file', file); form.append('hasHeader', $('#eva-has-header').is(':checked') ? '1' : '0'); form.append('turbo', $('#eva-turbo-mode').is(':checked') ? '1' : '0'); const xhr = new XMLHttpRequest(); xhr.open('POST', EVA.ajaxUrl, true); xhr.upload.addEventListener('progress', function(e){ if (e.lengthComputable) { const pct = Math.round((e.loaded / e.total) * 100); showUploadProgress(pct); } }); xhr.onreadystatechange = function(){ if (xhr.readyState === 4) { try { const res = JSON.parse(xhr.responseText || '{}'); if (xhr.status === 200 && res && res.success) resolve(res.data); else reject(res && res.data && res.data.message ? res.data.message : 'Upload failed'); } catch(err){ reject('Upload failed'); } } }; xhr.send(form); }); } function importBatch(){ if (!token || inProgress === false || canceled) return; $.post(EVA.ajaxUrl, { action:'eva_import_batch', nonce:EVA.nonce, token:token, batch:1000 }) .done(function(res){ if (!res || !res.success){ setDisabled(false); inProgress=false; return; } const data=res.data||{}; const pct=data.percent||0; const text='Processed '+(data.processed||0)+' / '+(total||0)+' | Inserted '+(data.inserted||0)+' | Updated '+(data.updated||0); showImportProgress(pct, text); if (data.notice){ showNotice(data.notice); } if (data.done){ inProgress=false; setDisabled(false); return; } setTimeout(importBatch, 150); }) .fail(function(){ setDisabled(false); inProgress=false; }); } $(function(){ els.choose.on('click', function(e){ e.preventDefault(); pickFile(); }); els.dropzone.on('click', function(e){ e.preventDefault(); // Avoid recursion when input click bubbles to dropzone if (e.target === els.file[0] || $(e.target).closest('#eva-csv-file').length) return; if (opening) return; pickFile(); }); els.dropzone.on('dragover', function(e){ e.preventDefault(); e.stopPropagation(); $(this).addClass('is-drag'); }); els.dropzone.on('dragleave drop', function(e){ e.preventDefault(); e.stopPropagation(); $(this).removeClass('is-drag'); }); els.dropzone.on('drop', function(e){ const files=e.originalEvent.dataTransfer.files; if (files && files[0]) acceptFile(files[0]) && (els.file[0].files=files); }); els.file.on('click', function(e){ e.stopPropagation(); }); els.file.on('change', function(){ const f=this.files&&this.files[0]; acceptFile(f); }); els.start.on('click', function(e){ e.preventDefault(); clearError(); canceled=false; const file = els.file[0].files && els.file[0].files[0]; if (!file) return; setDisabled(true); inProgress=true; uploadFile(file).then(function(info){ const data=info||{}; token=data.token; total=data.total||0; setDisabled(true); inProgress=true; if (data.warn){ showNotice(data.warn); } importBatch(); }) .catch(function(msg){ showError(msg||'Upload failed'); setDisabled(false); inProgress=false; }); }); els.cancel.on('click', function(e){ e.preventDefault(); canceled=true; setDisabled(false); inProgress=false; }); }); })(jQuery);
[+]
..
[-] email-validator-admin.js
[open]
[-] email-validator-admin.css
[open]