Changeset 2311221
- Timestamp:
- 05/24/2020 08:34:30 PM (6 years ago)
- Location:
- wp-serverless-forms
- Files:
-
- 4 edited
- 1 copied
-
tags/1.3.0 (copied) (copied from wp-serverless-forms/trunk)
-
tags/1.3.0/assets/js/main.js (modified) (4 diffs)
-
tags/1.3.0/wp-serverless-forms.php (modified) (3 diffs)
-
trunk/assets/js/main.js (modified) (4 diffs)
-
trunk/wp-serverless-forms.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wp-serverless-forms/tags/1.3.0/assets/js/main.js
r2265533 r2311221 1 document.addEventListener("DOMContentLoaded", function() {1 function onBootstrap() { 2 2 // Check if endpoint is set 3 3 if (wp.wp_sls_forms_endpoint.length === 0) { … … 6 6 console.log("WP Serverless Forms is installed but no endpoint is set."); 7 7 } 8 9 8 return; 10 9 } 10 } 11 11 12 var serializeForm = function(form) { 13 // Setup our serialized data 14 var serialized = []; 12 function success(el) { 13 el.target.submit.disabled = false; 14 el.target.querySelector('input[type="submit"]').blur(); 15 el.target.reset(); 15 16 16 // Loop through each field in the form 17 for (var i = 0; i < form.elements.length; i++) { 18 var field = form.elements[i]; 17 // Redirect if set 18 if (wp.wp_sls_forms_redirect.length > 0) { 19 window.location.replace(wp.wp_sls_forms_redirect); 20 } 21 } 19 22 20 // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields 21 if ( 22 !field.name || 23 field.disabled || 24 field.type === "file" || 25 field.type === "reset" || 26 field.type === "submit" || 27 field.type === "button" 28 ) 29 continue; 23 function error(el) { 24 el.target.querySelector('input[type="submit"]').disabled = false; 25 alert("Oops! There was an error."); 26 } 30 27 31 // If a multi-select, get all selections 32 if (field.type === "select-multiple") { 33 for (var n = 0; n < field.options.length; n++) { 34 if (!field.options[n].selected) continue; 35 serialized.push({ 36 name: field.name, 37 value: field.options[n].value 38 }); 39 } 40 } 41 42 // Convert field data to a query string 43 else if ( 44 (field.type !== "checkbox" && field.type !== "radio") || 45 field.checked 46 ) { 47 serialized.push({ 48 name: field.name, 49 value: field.value 50 }); 51 } 28 function submitForm(method, url, data, el) { 29 var xhr = new XMLHttpRequest(); 30 xhr.open(method, url); 31 xhr.onreadystatechange = function () { 32 if (xhr.readyState !== XMLHttpRequest.DONE) return; 33 if (xhr.status === 200) { 34 success(el); 35 } else { 36 error(el); 52 37 } 53 54 return serialized;55 38 }; 56 39 40 xhr.send(data); 41 } 42 43 function modifyFormAttributes(form) { 44 form.removeAttribute("action"); 45 form.removeAttribute("method"); 46 form.removeAttribute("enctype"); 47 form.removeAttribute("novalidate"); 48 form.setAttribute("data-wp-sls-forms", true); 49 } 50 51 onBootstrap(); 52 53 document.addEventListener("DOMContentLoaded", function () { 57 54 const allForms = document.querySelectorAll( 58 55 "form[data-shifter='true'], .wpcf7 form, .gform_wrapper form, .wpforms-container form" 59 56 ); 60 const method = "post";61 const headers = { Accept: "application/json" };62 const url = wp.wp_sls_forms_endpoint;63 57 64 allForms.forEach(form => { 65 // Remove attributes 66 form.removeAttribute("action"); 67 form.removeAttribute("method"); 68 form.removeAttribute("enctype"); 69 form.removeAttribute("novalidate"); 70 form.setAttribute("data-wp-sls-forms", true); 58 allForms.forEach((form) => { 59 modifyFormAttributes(form); 71 60 72 61 // Inputs … … 74 63 75 64 // Add HTML required attribute 76 inputs.forEach( input=> {65 inputs.forEach((input) => { 77 66 if (input.getAttribute("aria-required") === "true") { 78 67 input.required = true; … … 80 69 }); 81 70 82 // On submit 83 form.addEventListener("submit", function(el) { 71 form.addEventListener("submit", function (el) { 84 72 el.preventDefault(); 85 el.target.submit.disabled = true; 86 const fields = serializeForm(el.target); 87 const data = { 88 id: null, 89 blogname: wp.blogname, 90 form_name: form.getAttribute("name"), 91 host_name: window.location.hostname, 92 pathname: window.location.pathname, 93 site_id: null, 94 redirect: wp.wp_sls_forms_redirect, 95 email: [wp.admin_email], 96 fields: fields 97 }; 98 99 function success(res, el) { 100 el.target.submit.disabled = false; 101 el.target.querySelector('input[type="submit"]').blur(); 102 el.target.reset(); 103 104 // Redirect if set 105 if (wp.wp_sls_forms_redirect.length > 0) { 106 window.location.replace(wp.wp_sls_forms_redirect); 107 } 108 109 console.log(res); 110 } 111 112 function error(err, el) { 113 el.target.querySelector('input[type="submit"]').disabled = false; 114 alert("Oops! There was an error."); 115 console.log(err); 116 } 117 118 axios({ 119 method: method, 120 url: url, 121 data: data, 122 headers: headers 123 }) 124 .then(function(res) { 125 success(res, el); 126 console.log(res); 127 }) 128 .catch(function(err) { 129 error(err, el); 130 console.log(err); 131 }); 73 var data = new FormData(form); 74 submitForm("POST", wp.wp_sls_forms_endpoint, data, el); 132 75 }); 133 76 }); -
wp-serverless-forms/tags/1.3.0/wp-serverless-forms.php
r2265533 r2311221 4 4 Plugin URI: https://github.com/getshifter/wp-serverless-forms 5 5 Description: Customizable form endpoints for WordPress sites. 6 Version: 1. 2.06 Version: 1.3.0 7 7 Author: Shifter 8 8 Author URI: https://getshifter.io … … 34 34 function wp_sls_forms_js() { 35 35 $shifter_js = plugins_url( 'assets/js/main.js', __FILE__ ); 36 $axios = 'https://unpkg.com/axios/dist/axios.min.js';37 36 38 37 // Main.js … … 47 46 wp_localize_script( 'wp-sls-forms-js', 'wp', $args ); 48 47 wp_enqueue_script("wp-sls-forms-js"); 49 50 // Axios51 wp_register_script("axios", $axios);52 wp_enqueue_script("axios");53 48 } 54 49 -
wp-serverless-forms/trunk/assets/js/main.js
r2265533 r2311221 1 document.addEventListener("DOMContentLoaded", function() {1 function onBootstrap() { 2 2 // Check if endpoint is set 3 3 if (wp.wp_sls_forms_endpoint.length === 0) { … … 6 6 console.log("WP Serverless Forms is installed but no endpoint is set."); 7 7 } 8 9 8 return; 10 9 } 10 } 11 11 12 var serializeForm = function(form) { 13 // Setup our serialized data 14 var serialized = []; 12 function success(el) { 13 el.target.submit.disabled = false; 14 el.target.querySelector('input[type="submit"]').blur(); 15 el.target.reset(); 15 16 16 // Loop through each field in the form 17 for (var i = 0; i < form.elements.length; i++) { 18 var field = form.elements[i]; 17 // Redirect if set 18 if (wp.wp_sls_forms_redirect.length > 0) { 19 window.location.replace(wp.wp_sls_forms_redirect); 20 } 21 } 19 22 20 // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields 21 if ( 22 !field.name || 23 field.disabled || 24 field.type === "file" || 25 field.type === "reset" || 26 field.type === "submit" || 27 field.type === "button" 28 ) 29 continue; 23 function error(el) { 24 el.target.querySelector('input[type="submit"]').disabled = false; 25 alert("Oops! There was an error."); 26 } 30 27 31 // If a multi-select, get all selections 32 if (field.type === "select-multiple") { 33 for (var n = 0; n < field.options.length; n++) { 34 if (!field.options[n].selected) continue; 35 serialized.push({ 36 name: field.name, 37 value: field.options[n].value 38 }); 39 } 40 } 41 42 // Convert field data to a query string 43 else if ( 44 (field.type !== "checkbox" && field.type !== "radio") || 45 field.checked 46 ) { 47 serialized.push({ 48 name: field.name, 49 value: field.value 50 }); 51 } 28 function submitForm(method, url, data, el) { 29 var xhr = new XMLHttpRequest(); 30 xhr.open(method, url); 31 xhr.onreadystatechange = function () { 32 if (xhr.readyState !== XMLHttpRequest.DONE) return; 33 if (xhr.status === 200) { 34 success(el); 35 } else { 36 error(el); 52 37 } 53 54 return serialized;55 38 }; 56 39 40 xhr.send(data); 41 } 42 43 function modifyFormAttributes(form) { 44 form.removeAttribute("action"); 45 form.removeAttribute("method"); 46 form.removeAttribute("enctype"); 47 form.removeAttribute("novalidate"); 48 form.setAttribute("data-wp-sls-forms", true); 49 } 50 51 onBootstrap(); 52 53 document.addEventListener("DOMContentLoaded", function () { 57 54 const allForms = document.querySelectorAll( 58 55 "form[data-shifter='true'], .wpcf7 form, .gform_wrapper form, .wpforms-container form" 59 56 ); 60 const method = "post";61 const headers = { Accept: "application/json" };62 const url = wp.wp_sls_forms_endpoint;63 57 64 allForms.forEach(form => { 65 // Remove attributes 66 form.removeAttribute("action"); 67 form.removeAttribute("method"); 68 form.removeAttribute("enctype"); 69 form.removeAttribute("novalidate"); 70 form.setAttribute("data-wp-sls-forms", true); 58 allForms.forEach((form) => { 59 modifyFormAttributes(form); 71 60 72 61 // Inputs … … 74 63 75 64 // Add HTML required attribute 76 inputs.forEach( input=> {65 inputs.forEach((input) => { 77 66 if (input.getAttribute("aria-required") === "true") { 78 67 input.required = true; … … 80 69 }); 81 70 82 // On submit 83 form.addEventListener("submit", function(el) { 71 form.addEventListener("submit", function (el) { 84 72 el.preventDefault(); 85 el.target.submit.disabled = true; 86 const fields = serializeForm(el.target); 87 const data = { 88 id: null, 89 blogname: wp.blogname, 90 form_name: form.getAttribute("name"), 91 host_name: window.location.hostname, 92 pathname: window.location.pathname, 93 site_id: null, 94 redirect: wp.wp_sls_forms_redirect, 95 email: [wp.admin_email], 96 fields: fields 97 }; 98 99 function success(res, el) { 100 el.target.submit.disabled = false; 101 el.target.querySelector('input[type="submit"]').blur(); 102 el.target.reset(); 103 104 // Redirect if set 105 if (wp.wp_sls_forms_redirect.length > 0) { 106 window.location.replace(wp.wp_sls_forms_redirect); 107 } 108 109 console.log(res); 110 } 111 112 function error(err, el) { 113 el.target.querySelector('input[type="submit"]').disabled = false; 114 alert("Oops! There was an error."); 115 console.log(err); 116 } 117 118 axios({ 119 method: method, 120 url: url, 121 data: data, 122 headers: headers 123 }) 124 .then(function(res) { 125 success(res, el); 126 console.log(res); 127 }) 128 .catch(function(err) { 129 error(err, el); 130 console.log(err); 131 }); 73 var data = new FormData(form); 74 submitForm("POST", wp.wp_sls_forms_endpoint, data, el); 132 75 }); 133 76 }); -
wp-serverless-forms/trunk/wp-serverless-forms.php
r2265533 r2311221 4 4 Plugin URI: https://github.com/getshifter/wp-serverless-forms 5 5 Description: Customizable form endpoints for WordPress sites. 6 Version: 1. 2.06 Version: 1.3.0 7 7 Author: Shifter 8 8 Author URI: https://getshifter.io … … 34 34 function wp_sls_forms_js() { 35 35 $shifter_js = plugins_url( 'assets/js/main.js', __FILE__ ); 36 $axios = 'https://unpkg.com/axios/dist/axios.min.js';37 36 38 37 // Main.js … … 47 46 wp_localize_script( 'wp-sls-forms-js', 'wp', $args ); 48 47 wp_enqueue_script("wp-sls-forms-js"); 49 50 // Axios51 wp_register_script("axios", $axios);52 wp_enqueue_script("axios");53 48 } 54 49
Note: See TracChangeset
for help on using the changeset viewer.