admin.js
2 years ago
ajax-chimp.js
2 years ago
elementor-widgets.js
2 years ago
scripts.js
2 years ago
ajax-chimp.js
126 lines
| 1 | /*! |
| 2 | Mailchimp Ajax Submit |
| 3 | jQuery Plugin |
| 4 | Author: Siddharth Doshi |
| 5 | */ |
| 6 | ;(function ($) { |
| 7 | 'use strict'; |
| 8 | |
| 9 | $.ajaxChimp = { |
| 10 | responses: { |
| 11 | 'You are sent to a welcome message and will be being sent our latest newsletters time to time': 0, |
| 12 | 'Please enter a value': 1, |
| 13 | 'An email address must contain a single @': 2, |
| 14 | 'The domain portion of the email address is invalid (the portion after the @: )': 3, |
| 15 | 'The username portion of the email address is invalid (the portion before the @: )': 4, |
| 16 | 'This email address looks fake or invalid. Please enter a real email address': 5 |
| 17 | }, |
| 18 | translations: { |
| 19 | 'en': null |
| 20 | }, |
| 21 | init: function (selector, options) { |
| 22 | $(selector).ajaxChimp(options); |
| 23 | } |
| 24 | }; |
| 25 | |
| 26 | $.fn.ajaxChimp = function (options) { |
| 27 | $(this).each(function (i, elem) { |
| 28 | var form = $(elem); |
| 29 | var email = form.find('input[type=email]'); |
| 30 | var label = form.find('label[for=' + email.attr('id') + ']'); |
| 31 | |
| 32 | var settings = $.extend({ |
| 33 | 'url': form.attr('action'), |
| 34 | 'language': 'en' |
| 35 | }, options); |
| 36 | |
| 37 | var url = settings.url.replace('/post?', '/post-json?').concat('&c=?'); |
| 38 | |
| 39 | form.attr('novalidate', 'true'); |
| 40 | email.attr('name', 'EMAIL'); |
| 41 | |
| 42 | form.submit(function () { |
| 43 | var msg; |
| 44 | |
| 45 | function successCallback(resp) { |
| 46 | if (resp.result === 'success') { |
| 47 | msg = 'You are sent to a welcome message and will be being sent our latest newsletters time to time.'; |
| 48 | label.removeClass('error').addClass('valid'); |
| 49 | email.removeClass('error').addClass('valid'); |
| 50 | } else { |
| 51 | email.removeClass('valid').addClass('error'); |
| 52 | label.removeClass('valid').addClass('error'); |
| 53 | var index = -1; |
| 54 | try { |
| 55 | var parts = resp.msg.split(' - ', 2); |
| 56 | if (parts[1] === undefined) { |
| 57 | msg = resp.msg; |
| 58 | } else { |
| 59 | var i = parseInt(parts[0], 10); |
| 60 | if (i.toString() === parts[0]) { |
| 61 | index = parts[0]; |
| 62 | msg = parts[1]; |
| 63 | } else { |
| 64 | index = -1; |
| 65 | msg = resp.msg; |
| 66 | } |
| 67 | } |
| 68 | } catch (e) { |
| 69 | index = -1; |
| 70 | msg = resp.msg; |
| 71 | } |
| 72 | } |
| 73 | |
| 74 | // Translate and display message |
| 75 | if ( |
| 76 | settings.language !== 'en' |
| 77 | && $.ajaxChimp.responses[msg] !== undefined |
| 78 | && $.ajaxChimp.translations |
| 79 | && $.ajaxChimp.translations[settings.language] |
| 80 | && $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]] |
| 81 | ) { |
| 82 | msg = $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]; |
| 83 | } |
| 84 | label.html(msg); |
| 85 | |
| 86 | label.show(2000); |
| 87 | if (settings.callback) { |
| 88 | settings.callback(resp); |
| 89 | } |
| 90 | } |
| 91 | |
| 92 | var data = {}; |
| 93 | var dataArray = form.serializeArray(); |
| 94 | $.each(dataArray, function (index, item) { |
| 95 | data[item.name] = item.value; |
| 96 | }); |
| 97 | |
| 98 | $.ajax({ |
| 99 | url: url, |
| 100 | data: data, |
| 101 | success: successCallback, |
| 102 | dataType: 'jsonp', |
| 103 | error: function (resp, text) { |
| 104 | console.log('mailchimp ajax submit error: ' + text); |
| 105 | } |
| 106 | }); |
| 107 | |
| 108 | // Translate and display submit message |
| 109 | var submitMsg = 'Submitting...'; |
| 110 | if ( |
| 111 | settings.language !== 'en' |
| 112 | && $.ajaxChimp.translations |
| 113 | && $.ajaxChimp.translations[settings.language] |
| 114 | && $.ajaxChimp.translations[settings.language]['submit'] |
| 115 | ) { |
| 116 | submitMsg = $.ajaxChimp.translations[settings.language]['submit']; |
| 117 | } |
| 118 | label.html(submitMsg).show(2000); |
| 119 | |
| 120 | return false; |
| 121 | }); |
| 122 | }); |
| 123 | return this; |
| 124 | }; |
| 125 | })(jQuery); |
| 126 |