Plugin Directory

Changeset 2311221


Ignore:
Timestamp:
05/24/2020 08:34:30 PM (6 years ago)
Author:
emaildano
Message:

Update to version 1.3.0 from GitHub

Location:
wp-serverless-forms
Files:
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • wp-serverless-forms/tags/1.3.0/assets/js/main.js

    r2265533 r2311221  
    1 document.addEventListener("DOMContentLoaded", function() {
     1function onBootstrap() {
    22  // Check if endpoint is set
    33  if (wp.wp_sls_forms_endpoint.length === 0) {
     
    66      console.log("WP Serverless Forms is installed but no endpoint is set.");
    77    }
    8 
    98    return;
    109  }
     10}
    1111
    12   var serializeForm = function(form) {
    13     // Setup our serialized data
    14     var serialized = [];
     12function success(el) {
     13  el.target.submit.disabled = false;
     14  el.target.querySelector('input[type="submit"]').blur();
     15  el.target.reset();
    1516
    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}
    1922
    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;
     23function error(el) {
     24  el.target.querySelector('input[type="submit"]').disabled = false;
     25  alert("Oops! There was an error.");
     26}
    3027
    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       }
     28function 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);
    5237    }
    53 
    54     return serialized;
    5538  };
    5639
     40  xhr.send(data);
     41}
     42
     43function 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
     51onBootstrap();
     52
     53document.addEventListener("DOMContentLoaded", function () {
    5754  const allForms = document.querySelectorAll(
    5855    "form[data-shifter='true'], .wpcf7 form, .gform_wrapper form, .wpforms-container form"
    5956  );
    60   const method = "post";
    61   const headers = { Accept: "application/json" };
    62   const url = wp.wp_sls_forms_endpoint;
    6357
    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);
    7160
    7261    // Inputs
     
    7463
    7564    // Add HTML required attribute
    76     inputs.forEach(input => {
     65    inputs.forEach((input) => {
    7766      if (input.getAttribute("aria-required") === "true") {
    7867        input.required = true;
     
    8069    });
    8170
    82     // On submit
    83     form.addEventListener("submit", function(el) {
     71    form.addEventListener("submit", function (el) {
    8472      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);
    13275    });
    13376  });
  • wp-serverless-forms/tags/1.3.0/wp-serverless-forms.php

    r2265533 r2311221  
    44Plugin URI: https://github.com/getshifter/wp-serverless-forms
    55Description: Customizable form endpoints for WordPress sites.
    6 Version: 1.2.0
     6Version: 1.3.0
    77Author: Shifter
    88Author URI: https://getshifter.io
     
    3434function wp_sls_forms_js() {
    3535    $shifter_js = plugins_url( 'assets/js/main.js', __FILE__ );
    36     $axios = 'https://unpkg.com/axios/dist/axios.min.js';
    3736
    3837    // Main.js
     
    4746    wp_localize_script( 'wp-sls-forms-js', 'wp', $args );
    4847    wp_enqueue_script("wp-sls-forms-js");
    49    
    50     // Axios
    51     wp_register_script("axios", $axios);
    52   wp_enqueue_script("axios");
    5348}
    5449
  • wp-serverless-forms/trunk/assets/js/main.js

    r2265533 r2311221  
    1 document.addEventListener("DOMContentLoaded", function() {
     1function onBootstrap() {
    22  // Check if endpoint is set
    33  if (wp.wp_sls_forms_endpoint.length === 0) {
     
    66      console.log("WP Serverless Forms is installed but no endpoint is set.");
    77    }
    8 
    98    return;
    109  }
     10}
    1111
    12   var serializeForm = function(form) {
    13     // Setup our serialized data
    14     var serialized = [];
     12function success(el) {
     13  el.target.submit.disabled = false;
     14  el.target.querySelector('input[type="submit"]').blur();
     15  el.target.reset();
    1516
    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}
    1922
    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;
     23function error(el) {
     24  el.target.querySelector('input[type="submit"]').disabled = false;
     25  alert("Oops! There was an error.");
     26}
    3027
    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       }
     28function 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);
    5237    }
    53 
    54     return serialized;
    5538  };
    5639
     40  xhr.send(data);
     41}
     42
     43function 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
     51onBootstrap();
     52
     53document.addEventListener("DOMContentLoaded", function () {
    5754  const allForms = document.querySelectorAll(
    5855    "form[data-shifter='true'], .wpcf7 form, .gform_wrapper form, .wpforms-container form"
    5956  );
    60   const method = "post";
    61   const headers = { Accept: "application/json" };
    62   const url = wp.wp_sls_forms_endpoint;
    6357
    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);
    7160
    7261    // Inputs
     
    7463
    7564    // Add HTML required attribute
    76     inputs.forEach(input => {
     65    inputs.forEach((input) => {
    7766      if (input.getAttribute("aria-required") === "true") {
    7867        input.required = true;
     
    8069    });
    8170
    82     // On submit
    83     form.addEventListener("submit", function(el) {
     71    form.addEventListener("submit", function (el) {
    8472      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);
    13275    });
    13376  });
  • wp-serverless-forms/trunk/wp-serverless-forms.php

    r2265533 r2311221  
    44Plugin URI: https://github.com/getshifter/wp-serverless-forms
    55Description: Customizable form endpoints for WordPress sites.
    6 Version: 1.2.0
     6Version: 1.3.0
    77Author: Shifter
    88Author URI: https://getshifter.io
     
    3434function wp_sls_forms_js() {
    3535    $shifter_js = plugins_url( 'assets/js/main.js', __FILE__ );
    36     $axios = 'https://unpkg.com/axios/dist/axios.min.js';
    3736
    3837    // Main.js
     
    4746    wp_localize_script( 'wp-sls-forms-js', 'wp', $args );
    4847    wp_enqueue_script("wp-sls-forms-js");
    49    
    50     // Axios
    51     wp_register_script("axios", $axios);
    52   wp_enqueue_script("axios");
    5348}
    5449
Note: See TracChangeset for help on using the changeset viewer.