summaryrefslogtreecommitdiff
path: root/build/resources/main/static/js/jquery.ajaxchimp.min.js
diff options
context:
space:
mode:
Diffstat (limited to 'build/resources/main/static/js/jquery.ajaxchimp.min.js')
-rw-r--r--build/resources/main/static/js/jquery.ajaxchimp.min.js120
1 files changed, 120 insertions, 0 deletions
diff --git a/build/resources/main/static/js/jquery.ajaxchimp.min.js b/build/resources/main/static/js/jquery.ajaxchimp.min.js
new file mode 100644
index 0000000..72b5c0f
--- /dev/null
+++ b/build/resources/main/static/js/jquery.ajaxchimp.min.js
@@ -0,0 +1,120 @@
+(function ($) {
+ 'use strict';
+
+ $.ajaxChimp = {
+ responses: {
+ 'We have sent you a confirmation email' : 0,
+ 'Please enter a valid email' : 1,
+ 'An email address must contain a single @' : 2,
+ 'The domain portion of the email address is invalid (the portion after the @: )' : 3,
+ 'The username portion of the email address is invalid (the portion before the @: )' : 4,
+ 'This email address looks fake or invalid. Please enter a real email address' : 5
+ },
+ translations: {
+ 'en': null
+ },
+ init: function (selector, options) {
+ $(selector).ajaxChimp(options);
+ }
+ };
+
+ $.fn.ajaxChimp = function (options) {
+ $(this).each(function(i, elem) {
+ var form = $(elem);
+ var email = form.find('input[type=email]');
+ var label = form.find('.info');
+
+ var settings = $.extend({
+ 'url': form.attr('action'),
+ 'language': 'en'
+ }, options);
+
+ var url = settings.url.replace('/post?', '/post-json?').concat('&c=?');
+
+ form.attr('novalidate', 'true');
+ email.attr('name', 'EMAIL');
+
+ form.submit(function () {
+ var msg;
+ function successCallback(resp) {
+ if (resp.result === 'success') {
+ msg = 'We have sent you a confirmation email';
+ label.removeClass('error').addClass('valid');
+ email.removeClass('error').addClass('valid');
+ } else {
+ email.removeClass('valid').addClass('error');
+ label.removeClass('valid').addClass('error');
+ var index = -1;
+ try {
+ var parts = resp.msg.split(' - ', 2);
+ if (parts[1] === undefined) {
+ msg = resp.msg;
+ } else {
+ var i = parseInt(parts[0], 10);
+ if (i.toString() === parts[0]) {
+ index = parts[0];
+ msg = parts[1];
+ } else {
+ index = -1;
+ msg = resp.msg;
+ }
+ }
+ }
+ catch (e) {
+ index = -1;
+ msg = resp.msg;
+ }
+ }
+
+ // Translate and display message
+ if (
+ settings.language !== 'en'
+ && $.ajaxChimp.responses[msg] !== undefined
+ && $.ajaxChimp.translations
+ && $.ajaxChimp.translations[settings.language]
+ && $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]
+ ) {
+ msg = $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]];
+ }
+ label.html(msg);
+
+ label.show(2000);
+ if (settings.callback) {
+ settings.callback(resp);
+ }
+ }
+
+ var data = {};
+ var dataArray = form.serializeArray();
+ $.each(dataArray, function (index, item) {
+ data[item.name] = item.value;
+ });
+
+ $.ajax({
+ url: url,
+ data: data,
+ success: successCallback,
+ dataType: 'jsonp',
+ error: function (resp, text) {
+ console.log('mailchimp ajax submit error: ' + text);
+ }
+ });
+
+ // Translate and display submit message
+ var submitMsg = 'Submitting...';
+ if(
+ settings.language !== 'en'
+ && $.ajaxChimp.translations
+ && $.ajaxChimp.translations[settings.language]
+ && $.ajaxChimp.translations[settings.language]['submit']
+ ) {
+ submitMsg = $.ajaxChimp.translations[settings.language]['submit'];
+ }
+ label.html(submitMsg).show(2000);
+
+ return false;
+ });
+ });
+ return this;
+ };
+})(jQuery); \ No newline at end of file