PluginProbe
GetResponse Forms by Optin Cat / 2.0.2
GetResponse Forms by Optin Cat v2.0.2
1.3.4 1.3.5 1.3.6 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 2.0.0 All 36 releases
← All changes | assets/script.js +102 -121 1.7.02.0.2 View file →
@@ -1,35 +1,59 @@
1 +/* jshint asi: true */
1 2
2 -jQuery( document ).ready(function(){
3 +jQuery( document ).ready(function($){
4 +
5 + function is_email( email ) {
6 + var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/
7 + return regex.test(email)
8 + }
3 9
10 + function set_cookie( name, value, exdays ) {
11 + if ( exdays === 0 ) {
12 + document.cookie = name + "=" + value + "" + ";" + "path=/;"
13 + } else {
14 + var d = new Date()
15 + d.setTime( d.getTime() + ( exdays*24*60*60*1000 ) )
16 + document.cookie = name + "=" + value + "" + ";" + "path=/;" + "expires=" + d.toUTCString()
17 + }
18 + }
19 +
20 + function get_cookie( name ) {
21 + var value = "; " + document.cookie
22 + var parts = value.split( "; " + name + "=" )
4 23
5 - jQuery( document ).on( 'submit', '.fca_eoi_form', function (e) {
24 + if ( parts.length === 2 ) {
25 + return parts.pop().split(";").shift()
26 + } else {
27 + return false
28 + }
29 + }
6 30
7 - e.preventDefault();
31 + $( document ).on( 'submit', '.fca_eoi_form', function (e) {
8 32
9 - var $this = jQuery( this );
10 - var $email_field = jQuery( '[name=email]', $this );
11 - var $name_field = jQuery( '[name=name]:visible', $this );
12 - var name = $name_field.val();
13 - var email = $email_field.val();
14 - var list_id = $this.data( 'fca_eoi_list_id' );
15 - var $button = jQuery( '[type=submit]', $this );
16 - var $input_div = jQuery( '.fca_eoi_layout_submit_button_wrapper', $this );
17 - var $spinner = jQuery( '.fca_eoi_loading_spinner', $this );
18 - var $div = jQuery( '.fca_eoi_spiner_div', $this );
19 - var button_initial_val;
33 + e.preventDefault()
34 +
35 + var $this = $( this )
36 + var $email_field = $( '[name=email]', $this )
37 + var $name_field = $( '[name=name]:visible', $this )
38 + var name = $name_field.val()
39 + var email = $email_field.val()
40 + var list_id = $this.data( 'fca_eoi_list_id' )
41 + var $button = $( '[type=submit]', $this )
42 + var button_initial_val
20 43 var highlight_interval = false;
21 - var thank_you_mode = $this.data( 'fca_eoi_thank_you_mode' );
22 - var thank_you_page = $this.data( 'fca_eoi_thank_you_page' );
23 - var has_error = false;
24 - var form_id = jQuery( '[name=fca_eoi_form_id]', $this ).val();
25 -
26 -
44 + var thank_you_mode = $this.data( 'fca_eoi_thank_you_mode' )
45 + var thank_you_page = $this.data( 'fca_eoi_thank_you_page' )
46 + var cookie_duration = $this.data( 'fca_eoi_success_cookie_duration' )
47 + var subscribe_msg = $this.data( 'fca_eoi_sub_msg' )
48 + var has_error = false
49 + var form_id = $( '[name=fca_eoi_form_id]', $this ).val()
50 +
27 51 // Attach tooltips
28 - jQuery( '[name=email], [name=name]', $this ).each( function() {
52 + $( '[name=email], [name=name]', $this ).not('.tooltipstered').each( function() {
29 53
30 - var $this = jQuery( this );
31 - var tooltipWidth = $this.width() * .8;
54 + var $this = $( this )
55 + var tooltipWidth = $this.width() * .8
32 56
33 57 $this.tooltipster( {
34 58 contentAsHTML: true,
35 59 fixedWidth: tooltipWidth,
@@ -40,28 +64,28 @@
40 64 } )
41 65 } )
42 66
43 67 // Remove tooltip and tick on focus
44 - jQuery( '[name=email], [name=name]', jQuery( this ) ).focus( function() {
45 - var $this = jQuery( this );
46 - var $button = jQuery( '[type=submit]', $this.closest( '.fca_eoi_form' ) );
47 - var button_initial_val = $button.data( 'fca_eoi_initial_val' );
68 + $( '[name=email], [name=name]', $( this ) ).focus( function() {
69 + var $this = $( this )
70 + var $button = $( '[type=submit]', $this.closest( '.fca_eoi_form' ) )
71 + var button_initial_val = $button.data( 'fca_eoi_initial_val' )
48 72
49 73 // Remove any previous icon
50 74 if( 'undefined' !== typeof( button_initial_val ) ) {
51 - $button.val( button_initial_val );
75 + $button.val( button_initial_val )
52 76 }
53 77
54 78 // Hide tooltip
55 - jQuery( this ).tooltipster( 'hide' );
56 - } );
79 + $( this ).tooltipster( 'hide' )
80 + } )
57 81
58 82 // Save or save and get initial button value
59 83 if( $button.data( 'fca_eoi_initial_val' ) ) {
60 - button_initial_val = $button.data( 'fca_eoi_initial_val' );
84 + button_initial_val = $button.data( 'fca_eoi_initial_val' )
61 85 } else {
62 - button_initial_val = $button.val();
63 - $button.data( 'fca_eoi_initial_val', button_initial_val );
86 + button_initial_val = $button.val()
87 + $button.data( 'fca_eoi_initial_val', button_initial_val )
64 88 }
65 89
66 90 // Remove any previous icon
67 91 $button.val( button_initial_val );
@@ -66,16 +90,14 @@
66 90 // Remove any previous icon
67 91 $button.val( button_initial_val );
68 92
69 93 // Get Error Messages from hidden fields
70 - fca_eoi.invalid_email = $this.find('.fca_eoi_error_texts_email').val();
71 - fca_eoi.field_required = $this.find('.fca_eoi_error_texts_required').val();
94 + fcaEoiScriptData.invalid_email = $this.find('.fca_eoi_error_texts_email').val()
95 + fcaEoiScriptData.field_required = $this.find('.fca_eoi_error_texts_required').val()
72 96
73 -
74 97 // Check email address
75 98 if( ! email || ! is_email( email ) ) {
76 -
77 - $email_field.tooltipster( 'content', email ? fca_eoi.invalid_email : fca_eoi.field_required );
99 + $email_field.tooltipster( 'content', email ? fcaEoiScriptData.invalid_email : fcaEoiScriptData.field_required )
78 100 $email_field.tooltipster( 'show' );
79 101 $button.val( '✗ ' + button_initial_val );
80 102 has_error = true;
81 103 }
@@ -81,10 +103,9 @@
81 103 }
82 104
83 105 // Check name
84 106 if( $name_field.length && ! name ) {
85 -
86 - $name_field.tooltipster( 'content', fca_eoi.field_required );
107 + $name_field.tooltipster( 'content', fcaEoiScriptData.field_required );
87 108 $name_field.tooltipster( 'show' );
88 109 $button.val( '✗ ' + button_initial_val );
89 110 has_error = true;
90 111 }
@@ -92,57 +113,51 @@
92 113 // Exit if there is any error
93 114 if( has_error ) {
94 115 return false;
95 116 }
96 -
117 + $button.val( subscribe_msg );
97 118 //DISABLE BUTTON CLICK EVENT
98 119 $button.click(function(event) {
99 120 event.preventDefault();
100 121 });
101 122
102 - if ( $button.closest('.fca_eoi_form').hasClass('fca_eoi_layout_1') ) {
103 - //without extra border
104 - scaleSpinnerDiv($button, $div);
105 -
106 - } else {
107 - //width extra border
108 - scaleSpinnerDiv($input_div, $div);
109 - }
110 - scaleSpinnerSize($button, $spinner);
123 +
124 + $button.attr('style', 'cursor: default' );
125 + var tz = jstz.determine()
111 126
112 - //Match div border radius with button's
113 - var radius = $button.css("borderRadius");
114 - $div.css('borderRadius', radius);
115 -
116 - //animate out the button and in the spinner div
117 - $div.animate({ width: '100%'});
118 -
119 - $spinner.css("display", "block");
120 - $button.attr('style', 'cursor: default' );
121 -
122 - jQuery.ajax({
123 - url: fca_eoi.ajax_url,
124 - data: { 'email': email, 'name': name, 'action': 'fca_eoi_subscribe', 'list_id': list_id ,'form_id': form_id, 'nonce': fca_eoi.nonce },
127 + $.ajax({
128 + url: fcaEoiScriptData.ajax_url,
129 + data: { 'email': email, 'name': name, 'action': 'fca_eoi_subscribe', 'list_id': list_id ,'form_id': form_id, 'nonce': fcaEoiScriptData.nonce, 'timezone' : tz.name() },
125 130 type: 'POST',
126 131 datatype: 'text',
127 132 timeout: 15000
128 133 }).done( function( data ) {
134 +
135 + // Stop highlighting and add an icon for success/failure
136 + if ( data === '✓' ) {
137 + $button.val( data + ' ' + button_initial_val );
138 +
139 + set_cookie( 'fca_eoi_success_' + form_id, Math.floor(Date.now() / 1000), cookie_duration )
140 +
141 + //REMOVE FROM ACTIVE
142 + var activeOptins = JSON.parse( get_cookie( 'fca_eoi_active_optins' ) )
143 + if ( !Array.isArray( activeOptins ) ) {
144 + activeOptins = []
145 + }
146 + var index = activeOptins.indexOf( form_id )
147 + if ( index !== -1 ) {
148 + activeOptins.splice( index, 1 )
149 + }
150 + set_cookie ( 'fca_eoi_active_optins', JSON.stringify ( activeOptins ) )
151 +
152 + } else {
153 + $button.val( data );
154 + }
129 155
130 - if ( thank_you_mode == 'ajax' ) {
131 -
132 - // Stop highlighting and add an icon for success/failure
133 - if ( data === '✓' ) {
134 - $button.val( data + ' ' + button_initial_val );
135 - } else {
136 - $button.val( data );
137 - }
138 -
139 - $spinner.css("display", "none");
140 - $div.animate({ width: '0', padding: '0', left: '100%' });
141 -
142 - clearInterval( highlight_interval );
156 + if ( thank_you_mode === 'ajax' && data === '✓' ) {
157 + clearInterval( highlight_interval )
143 158 if ( thank_you_page && '✓' === data ) {
144 - tooltipWidth = $button.width();
159 + tooltipWidth = $button.width()
145 160 $button.tooltipster( {
146 161 contentAsHTML: true,
147 162 trigger: 'none',
148 163 fixedWidth: tooltipWidth,
@@ -151,51 +166,17 @@
151 166 arrow: false,
152 167 theme: ['tooltipster-borderless', 'tooltipster-optin-cat']
153 168 } );
154 169
155 - $button.tooltipster( 'content', thank_you_page );
156 - $button.tooltipster( 'show' );
157 - $email_field.prop('disabled', true);
158 - $name_field.prop('disabled', true);
170 + $button.tooltipster( 'content', thank_you_page )
171 + $button.tooltipster( 'show' )
172 + $email_field.prop('disabled', true)
173 + $name_field.prop('disabled', true)
159 174
160 - jQuery('.tooltipster-content').css("background-color", "#148544");
161 - setTimeout(function() {
162 - $button.tooltipster( 'hide' );
163 - }, 5000);
175 + $('.tooltipster-content').css("background-color", "#148544")
164 176 }
165 - } else {
166 - window.location.href = thank_you_page;
177 + } else if ( data === '✓' ) {
178 + window.location.href = thank_you_page
167 179 }
168 - });
169 - });
170 -});
171 -
172 -//set height, top and (-)margin top to same size as the fca_eoi_layout_submit_button_wrapper height
173 -
174 -function scaleSpinnerDiv ($button, $div){
175 -
176 - var h = $button.outerHeight();
177 -
178 - $div.css('height', h + 'px');
179 - $div.css('top', h + 'px');
180 - $div.css('margin-top', '-' + h + 'px');
181 - $div.css('z-index', '1');
182 -
183 -}
184 -
185 -function scaleSpinnerSize( $button, $spinner ) {
186 - var h = $button.outerHeight();
187 - var w = $button.outerWidth();
188 - h = h - 8; //account for borders
189 -
190 - var newWidth = ( w / 2 ) - ( h / 2);
191 -
192 - $spinner.css('margin-left', newWidth + 'px' );
193 - $spinner.css('height', h + 'px');
194 - $spinner.css('width', h + 'px');
195 -
196 -}
197 -
198 -function is_email( email ) {
199 - var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
200 - return regex.test(email);
201 -}
180 + })
181 + })
182 +})