diff --git a/README.md b/README.md index a768ad5..bc1df32 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # jQuery-OSDI The jQuery OSDI plugin implements non-authenticated POST via AJAX against OSDI-compliant API endpoints. It can be used to send in data to OSDI-compliant APIs. -*Version 1.2.0* +*Version 1.3.0* This plugin is free and open source, and licensed under the [MIT open source license](https://github.com/opensupporter/jquery-osdi/blob/master/LICENSE.md). diff --git a/jquery.osdi.js b/jquery.osdi.js index 7b3e395..2950974 100644 --- a/jquery.osdi.js +++ b/jquery.osdi.js @@ -159,18 +159,18 @@ //console.log(this.settings.add_tags); //console.log(this.settings.add_tags.length); //console.log(this.settings.add_tags); - //console.log(!$.isArray(this.settings.add_tags)); + //console.log(!Array.isArray(this.settings.add_tags)); //console.log(this.settings.add_tags.length <= 0); if (this.settings.add_tags) { if (typeof(this.settings.add_tags) == 'function') { - if (!$.isArray(this.settings.add_tags()) || !this.settings.add_tags().length > 0) { + if (!Array.isArray(this.settings.add_tags()) || !this.settings.add_tags().length > 0) { console.log('JQUERY OSDI ERROR: The add_tags option is not a valid array of at least one element. You must pass an array with at least one element to the jQuery OSDI plugin to add tags.'); return false; } else { return true; } } else { - if (!$.isArray(this.settings.add_tags) || !this.settings.add_tags.length > 0) { + if (!Array.isArray(this.settings.add_tags) || !this.settings.add_tags.length > 0) { console.log('JQUERY OSDI ERROR: The add_tags option is not a valid array of at least one element. You must pass an array with at least one element to the jQuery OSDI plugin to add tags.'); return false; } else { @@ -243,15 +243,15 @@ } if ($element.find(':input[name="family_name"]').length && $element.find(':input[name="family_name"]').val()) { - body.person.family_name = $.isArray($element.find(':input[name="family_name"]').val()) ? $element.find(':input[name="family_name"]').val().pop() : $element.find(':input[name="family_name"]').val(); + body.person.family_name = Array.isArray($element.find(':input[name="family_name"]').val()) ? $element.find(':input[name="family_name"]').val().pop() : $element.find(':input[name="family_name"]').val(); } if ($element.find(':input[name="given_name"]').length && $element.find(':input[name="given_name"]').val()) { - body.person.given_name = $.isArray($element.find(':input[name="given_name"]').val()) ? $element.find(':input[name="given_name"]').val().pop() : $element.find(':input[name="given_name"]').val(); + body.person.given_name = Array.isArray($element.find(':input[name="given_name"]').val()) ? $element.find(':input[name="given_name"]').val().pop() : $element.find(':input[name="given_name"]').val(); } if ($element.find(':input[name="email_address"]').length && $element.find(':input[name="email_address"]').val()) { - var email_address_string = $.isArray($element.find(':input[name="email_address"]').val()) ? $element.find(':input[name="email_address"]').val().pop() : $element.find(':input[name="email_address"]').val(); + var email_address_string = Array.isArray($element.find(':input[name="email_address"]').val()) ? $element.find(':input[name="email_address"]').val().pop() : $element.find(':input[name="email_address"]').val(); email_address = { "email_addresses" : [ @@ -286,24 +286,24 @@ if ($element.find(':input[name="street"]').length && $element.find(':input[name="street"]').val()) { postal_address.address_lines = [ - $.isArray($element.find(':input[name="street"]').val()) ? $element.find(':input[name="street"]').val().pop() : $element.find(':input[name="street"]').val() + Array.isArray($element.find(':input[name="street"]').val()) ? $element.find(':input[name="street"]').val().pop() : $element.find(':input[name="street"]').val() ]; } if ($element.find(':input[name="locality"]').length && $element.find(':input[name="locality"]').val()) { - postal_address.locality = $.isArray($element.find(':input[name="locality"]').val()) ? $element.find(':input[name="locality"]').val().pop() : $element.find(':input[name="locality"]').val(); + postal_address.locality = Array.isArray($element.find(':input[name="locality"]').val()) ? $element.find(':input[name="locality"]').val().pop() : $element.find(':input[name="locality"]').val(); } if ($element.find(':input[name="region"]').length && $element.find(':input[name="region"]').val()) { - postal_address.region = $.isArray($element.find(':input[name="region"]').val()) ? $element.find(':input[name="region"]').val().pop() : $element.find(':input[name="region"]').val(); + postal_address.region = Array.isArray($element.find(':input[name="region"]').val()) ? $element.find(':input[name="region"]').val().pop() : $element.find(':input[name="region"]').val(); } if ($element.find(':input[name="postal_code"]').length && $element.find(':input[name="postal_code"]').val()) { - postal_address.postal_code = $.isArray($element.find(':input[name="postal_code"]').val()) ? $element.find(':input[name="postal_code"]').val().pop() : $element.find(':input[name="postal_code"]').val(); + postal_address.postal_code = Array.isArray($element.find(':input[name="postal_code"]').val()) ? $element.find(':input[name="postal_code"]').val().pop() : $element.find(':input[name="postal_code"]').val(); } if ($element.find(':input[name="country"]').length && $element.find(':input[name="country"]').val()) { - postal_address.country = $.isArray($element.find(':input[name="country"]').val()) ? $element.find(':input[name="country"]').val().pop() : $element.find(':input[name="country"]').val(); + postal_address.country = Array.isArray($element.find(':input[name="country"]').val()) ? $element.find(':input[name="country"]').val().pop() : $element.find(':input[name="country"]').val(); } postal_addresses = { @@ -316,7 +316,7 @@ } if ($element.find(':input[name="phone_number"]').length && $element.find(':input[name="phone_number"]').val()) { - var phone_number_string = $.isArray($element.find(':input[name="phone_number"]').val()) ? $element.find(':input[name="phone_number"]').val().pop() : $element.find(':input[name="phone_number"]').val(); + var phone_number_string = Array.isArray($element.find(':input[name="phone_number"]').val()) ? $element.find(':input[name="phone_number"]').val().pop() : $element.find(':input[name="phone_number"]').val(); phone_number = { "phone_numbers" : [ diff --git a/jquery.osdi.min.js b/jquery.osdi.min.js index 368841d..ee88b3e 100644 --- a/jquery.osdi.min.js +++ b/jquery.osdi.min.js @@ -1 +1 @@ -!function(a,b,c,d){"use strict";function h(b,c){this.$element=a(b),this.settings=a.extend({},f,c),this._defaults=f,this._name=e,this.init(this.$element),this.submit=function(){this.form_submit(this.$element,this)}}var e="osdi",f={autoresponse:!0,done:function(){},fail:function(){},always:function(){},status:"subscribed",immediate:!1,ajax_options:{type:"POST",dataType:"json",contentType:"application/json"}};a.extend(h.prototype,{init:function(a){this.validate_form(a)&&this.form_submit(a,this)},validate_form:function(a){return!!a.is("form")||(console.log("JQUERY OSDI ERROR: The DOM element passed to the jQuery OSDI plugin is not a form. The jQuery OSDI plugin only supports form elements."),!1)},form_submit:function(a,b){b.settings.immediate?b.submit_handler(a,b):a.on("submit",function(){return b.submit_handler(a,b),!1})},submit_handler:function(b,c){if(c.validate_submit(b)){var d,e,f,g,h,i;d=c.create_body(b),e=c.settings.endpoint&&""!=c.settings.endpoint?"function"==typeof c.settings.endpoint?c.settings.endpoint():c.settings.endpoint:b.attr("action"),f={url:e,data:JSON.stringify(d)},f="function"==typeof c.settings.ajax_options?a.extend(f,c.settings.ajax_options()):a.extend(f,c.settings.ajax_options),g=c.settings.done,h=c.settings.fail,i=c.settings.always,c.perform_ajax(f,g,h,i)}},validate_submit:function(a){return!(!this.validate_endpoint(a)||!this.validate_add_tags())},validate_endpoint:function(a){return!(!this.settings.endpoint&&!a.attr("action"))||(console.log("JQUERY OSDI ERROR: An endpoint is required. Either set the endpoint option with a string when calling the jQuery OSDI plugin, or give your form an action attribute with the endpoint as its value."),!1)},validate_add_tags:function(){return!this.settings.add_tags||("function"==typeof this.settings.add_tags?!(!a.isArray(this.settings.add_tags())||!this.settings.add_tags().length>0)||(console.log("JQUERY OSDI ERROR: The add_tags option is not a valid array of at least one element. You must pass an array with at least one element to the jQuery OSDI plugin to add tags."),!1):!(!a.isArray(this.settings.add_tags)||!this.settings.add_tags.length>0)||(console.log("JQUERY OSDI ERROR: The add_tags option is not a valid array of at least one element. You must pass an array with at least one element to the jQuery OSDI plugin to add tags."),!1))},create_body:function(b){var c,d,e,f,g,h,i,j;if(this.settings.body)c="function"==typeof this.settings.body?this.settings.body():this.settings.body;else{if(c={person:{}},"function"==typeof this.settings.autoresponse?this.settings.autoresponse()===!0&&(d={triggers:{autoresponse:{enabled:!0}}}):this.settings.autoresponse&&this.settings.autoresponse===!0&&(d={triggers:{autoresponse:{enabled:!0}}}),a.extend(c,d),this.settings.add_tags&&(j="function"==typeof this.settings.add_tags?{add_tags:this.settings.add_tags()}:{add_tags:this.settings.add_tags},a.extend(c,j)),b.find(':input[name="family_name"]').length&&b.find(':input[name="family_name"]').val()&&(c.person.family_name=a.isArray(b.find(':input[name="family_name"]').val())?b.find(':input[name="family_name"]').val().pop():b.find(':input[name="family_name"]').val()),b.find(':input[name="given_name"]').length&&b.find(':input[name="given_name"]').val()&&(c.person.given_name=a.isArray(b.find(':input[name="given_name"]').val())?b.find(':input[name="given_name"]').val().pop():b.find(':input[name="given_name"]').val()),b.find(':input[name="email_address"]').length&&b.find(':input[name="email_address"]').val()){var k=a.isArray(b.find(':input[name="email_address"]').val())?b.find(':input[name="email_address"]').val().pop():b.find(':input[name="email_address"]').val();e={email_addresses:[{address:k}]},a.extend(c.person,e),"function"==typeof this.settings.status?this.settings.status()!==!1&&(c.person.email_addresses[0].status=this.settings.status()):this.settings.status!==!1&&(c.person.email_addresses[0].status=this.settings.status)}if((b.find(':input[name="street"]').length&&b.find(':input[name="street"]').val()||b.find(':input[name="locality"]').length&&b.find(':input[name="locality"]').val()||b.find(':input[name="region"]').length&&b.find(':input[name="region"]').val()||b.find(':input[name="postal_code"]').length&&b.find(':input[name="postal_code"]').val()||b.find(':input[name="country"]').length&&b.find(':input[name="country"]').val())&&(f={},b.find(':input[name="street"]').length&&b.find(':input[name="street"]').val()&&(f.address_lines=[a.isArray(b.find(':input[name="street"]').val())?b.find(':input[name="street"]').val().pop():b.find(':input[name="street"]').val()]),b.find(':input[name="locality"]').length&&b.find(':input[name="locality"]').val()&&(f.locality=a.isArray(b.find(':input[name="locality"]').val())?b.find(':input[name="locality"]').val().pop():b.find(':input[name="locality"]').val()),b.find(':input[name="region"]').length&&b.find(':input[name="region"]').val()&&(f.region=a.isArray(b.find(':input[name="region"]').val())?b.find(':input[name="region"]').val().pop():b.find(':input[name="region"]').val()),b.find(':input[name="postal_code"]').length&&b.find(':input[name="postal_code"]').val()&&(f.postal_code=a.isArray(b.find(':input[name="postal_code"]').val())?b.find(':input[name="postal_code"]').val().pop():b.find(':input[name="postal_code"]').val()),b.find(':input[name="country"]').length&&b.find(':input[name="country"]').val()&&(f.country=a.isArray(b.find(':input[name="country"]').val())?b.find(':input[name="country"]').val().pop():b.find(':input[name="country"]').val()),g={postal_addresses:[f]},a.extend(c.person,g)),b.find(':input[name="phone_number"]').length&&b.find(':input[name="phone_number"]').val()){var l=a.isArray(b.find(':input[name="phone_number"]').val())?b.find(':input[name="phone_number"]').val().pop():b.find(':input[name="phone_number"]').val();h={phone_numbers:[{number:l}]},a.extend(c.person,h)}b.find(':input[name^="custom["]').length&&(i={},a.each(b.find(':input[name^="custom["]').serializeArray(),function(){""!=this.value&&(i[this.name.replace(/^custom\[|\]$/g,"")]=this.value)}),a.isEmptyObject(i)||(c.person.custom_fields=i))}return c},perform_ajax:function(b,c,d,e){a.ajax(b).done(function(a,b,d){c(a,b,d)}).fail(function(a,b,c){d(a,b,c)}).always(function(a,b,c){e(a,b,c)})}}),a.fn[e]=function(b){return this.each(function(){a.data(this,"plugin_"+e)?a.data(this,"plugin_"+e).submit():a.data(this,"plugin_"+e,new h(this,b))})}}(jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){"use strict";function h(b,c){this.$element=a(b),this.settings=a.extend({},f,c),this._defaults=f,this._name=e,this.init(this.$element),this.submit=function(){this.form_submit(this.$element,this)}}var e="osdi",f={autoresponse:!0,done:function(){},fail:function(){},always:function(){},status:"subscribed",immediate:!1,ajax_options:{type:"POST",dataType:"json",contentType:"application/json"}};a.extend(h.prototype,{init:function(a){this.validate_form(a)&&this.form_submit(a,this)},validate_form:function(a){return!!a.is("form")||(console.log("JQUERY OSDI ERROR: The DOM element passed to the jQuery OSDI plugin is not a form. The jQuery OSDI plugin only supports form elements."),!1)},form_submit:function(a,b){b.settings.immediate?b.submit_handler(a,b):a.on("submit",function(){return b.submit_handler(a,b),!1})},submit_handler:function(b,c){if(c.validate_submit(b)){var d,e,f,g,h,i;d=c.create_body(b),e=c.settings.endpoint&&""!=c.settings.endpoint?"function"==typeof c.settings.endpoint?c.settings.endpoint():c.settings.endpoint:b.attr("action"),f={url:e,data:JSON.stringify(d)},f="function"==typeof c.settings.ajax_options?a.extend(f,c.settings.ajax_options()):a.extend(f,c.settings.ajax_options),g=c.settings.done,h=c.settings.fail,i=c.settings.always,c.perform_ajax(f,g,h,i)}},validate_submit:function(a){return!(!this.validate_endpoint(a)||!this.validate_add_tags())},validate_endpoint:function(a){return!(!this.settings.endpoint&&!a.attr("action"))||(console.log("JQUERY OSDI ERROR: An endpoint is required. Either set the endpoint option with a string when calling the jQuery OSDI plugin, or give your form an action attribute with the endpoint as its value."),!1)},validate_add_tags:function(){return!this.settings.add_tags||("function"==typeof this.settings.add_tags?!(!Array.isArray(this.settings.add_tags())||!this.settings.add_tags().length>0)||(console.log("JQUERY OSDI ERROR: The add_tags option is not a valid array of at least one element. You must pass an array with at least one element to the jQuery OSDI plugin to add tags."),!1):!(!Array.isArray(this.settings.add_tags)||!this.settings.add_tags.length>0)||(console.log("JQUERY OSDI ERROR: The add_tags option is not a valid array of at least one element. You must pass an array with at least one element to the jQuery OSDI plugin to add tags."),!1))},create_body:function(b){var c,d,e,f,g,h,i,j;if(this.settings.body)c="function"==typeof this.settings.body?this.settings.body():this.settings.body;else{if(c={person:{}},"function"==typeof this.settings.autoresponse?this.settings.autoresponse()===!0&&(d={triggers:{autoresponse:{enabled:!0}}}):this.settings.autoresponse&&this.settings.autoresponse===!0&&(d={triggers:{autoresponse:{enabled:!0}}}),a.extend(c,d),this.settings.add_tags&&(j="function"==typeof this.settings.add_tags?{add_tags:this.settings.add_tags()}:{add_tags:this.settings.add_tags},a.extend(c,j)),b.find(':input[name="family_name"]').length&&b.find(':input[name="family_name"]').val()&&(c.person.family_name=Array.isArray(b.find(':input[name="family_name"]').val())?b.find(':input[name="family_name"]').val().pop():b.find(':input[name="family_name"]').val()),b.find(':input[name="given_name"]').length&&b.find(':input[name="given_name"]').val()&&(c.person.given_name=Array.isArray(b.find(':input[name="given_name"]').val())?b.find(':input[name="given_name"]').val().pop():b.find(':input[name="given_name"]').val()),b.find(':input[name="email_address"]').length&&b.find(':input[name="email_address"]').val()){var k=Array.isArray(b.find(':input[name="email_address"]').val())?b.find(':input[name="email_address"]').val().pop():b.find(':input[name="email_address"]').val();e={email_addresses:[{address:k}]},a.extend(c.person,e),"function"==typeof this.settings.status?this.settings.status()!==!1&&(c.person.email_addresses[0].status=this.settings.status()):this.settings.status!==!1&&(c.person.email_addresses[0].status=this.settings.status)}if((b.find(':input[name="street"]').length&&b.find(':input[name="street"]').val()||b.find(':input[name="locality"]').length&&b.find(':input[name="locality"]').val()||b.find(':input[name="region"]').length&&b.find(':input[name="region"]').val()||b.find(':input[name="postal_code"]').length&&b.find(':input[name="postal_code"]').val()||b.find(':input[name="country"]').length&&b.find(':input[name="country"]').val())&&(f={},b.find(':input[name="street"]').length&&b.find(':input[name="street"]').val()&&(f.address_lines=[Array.isArray(b.find(':input[name="street"]').val())?b.find(':input[name="street"]').val().pop():b.find(':input[name="street"]').val()]),b.find(':input[name="locality"]').length&&b.find(':input[name="locality"]').val()&&(f.locality=Array.isArray(b.find(':input[name="locality"]').val())?b.find(':input[name="locality"]').val().pop():b.find(':input[name="locality"]').val()),b.find(':input[name="region"]').length&&b.find(':input[name="region"]').val()&&(f.region=Array.isArray(b.find(':input[name="region"]').val())?b.find(':input[name="region"]').val().pop():b.find(':input[name="region"]').val()),b.find(':input[name="postal_code"]').length&&b.find(':input[name="postal_code"]').val()&&(f.postal_code=Array.isArray(b.find(':input[name="postal_code"]').val())?b.find(':input[name="postal_code"]').val().pop():b.find(':input[name="postal_code"]').val()),b.find(':input[name="country"]').length&&b.find(':input[name="country"]').val()&&(f.country=Array.isArray(b.find(':input[name="country"]').val())?b.find(':input[name="country"]').val().pop():b.find(':input[name="country"]').val()),g={postal_addresses:[f]},a.extend(c.person,g)),b.find(':input[name="phone_number"]').length&&b.find(':input[name="phone_number"]').val()){var l=Array.isArray(b.find(':input[name="phone_number"]').val())?b.find(':input[name="phone_number"]').val().pop():b.find(':input[name="phone_number"]').val();h={phone_numbers:[{number:l}]},a.extend(c.person,h)}b.find(':input[name^="custom["]').length&&(i={},a.each(b.find(':input[name^="custom["]').serializeArray(),function(){""!=this.value&&(i[this.name.replace(/^custom\[|\]$/g,"")]=this.value)}),a.isEmptyObject(i)||(c.person.custom_fields=i))}return c},perform_ajax:function(b,c,d,e){a.ajax(b).done(function(a,b,d){c(a,b,d)}).fail(function(a,b,c){d(a,b,c)}).always(function(a,b,c){e(a,b,c)})}}),a.fn[e]=function(b){return this.each(function(){a.data(this,"plugin_"+e)?a.data(this,"plugin_"+e).submit():a.data(this,"plugin_"+e,new h(this,b))})}}(jQuery,window,document); diff --git a/package.json b/package.json index 2eeb879..2dc4cac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jquery-osdi", - "version": "1.1.0", + "version": "1.3.0", "description": "The jQuery OSDI plugin implements non-authenticated POST via AJAX against OSDI-compliant API endpoints. It can be used to send in data to OSDI-compliant APIs.", "main": "jquery.osdi.js", "repository": {