Unbounce Landing Pages - Version 1.0.3

Version Description

Download this release

Release Info

Developer unbouncewordpress
Plugin Icon Unbounce Landing Pages
Version 1.0.3
Comparing to
See all releases

Code changes from version 1.0.2 to 1.0.3

UBConfig.php CHANGED
@@ -12,8 +12,8 @@ class UBConfig {
12
  const UB_AUTHORIZED_DOMAINS_KEY = 'ub-authorized-domains';
13
  const UB_HAS_AUTHORIZED_KEY = 'ub-has-authorized';
14
  const UB_CACHE_TIMEOUT_ENV_KEY = 'UB_WP_ROUTES_CACHE_EXP';
15
- const UB_USER_AGENT = 'Unbounce WP Plugin 1.0.2';
16
- const UB_VERSION = '1.0.2';
17
 
18
  public static function default_page_server_domain() {
19
  $domain = getenv('UB_PAGE_SERVER_DOMAIN');
@@ -81,71 +81,76 @@ class UBConfig {
81
  return array('FAILURE', null, null, null);
82
  }
83
 
84
- $url = 'https://' . $ps_domain . '/sitemap.xml';
85
- $curl = curl_init();
86
- $curl_options = array(
87
- CURLOPT_URL => $url,
88
- CURLOPT_CUSTOMREQUEST => "GET",
89
- CURLOPT_HEADER => true,
90
- CURLOPT_USERAGENT => UBConfig::UB_USER_AGENT,
91
- CURLOPT_HTTPHEADER => array('Host: ' . $domain, 'If-None-Match: ' . $etag),
92
- CURLOPT_RETURNTRANSFER => true,
93
- CURLOPT_FOLLOWLOCATION => false,
94
- CURLOPT_TIMEOUT => 5
95
- );
96
-
97
- UBLogger::debug("Retrieving routes from '$url', etag: '$etag', host: '$domain'");
98
-
99
- curl_setopt_array($curl, $curl_options);
100
- $data = curl_exec($curl);
101
-
102
- $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
103
- $curl_error = null;
104
-
105
- // when having an CURL error, http_code is 0
106
- if ($http_code == 0) {
107
- $curl_error = curl_error($curl);
108
- }
 
109
 
110
- curl_close($curl);
111
 
112
- list($headers, $body) = array_pad(explode("\r\n\r\n", $data, 2), 2, null);
113
 
114
- $matches = array();
115
- $does_match = preg_match('/ETag: (\S+)/is', $headers, $matches);
116
- if ($does_match) {
117
- $etag = $matches[1];
118
- }
119
 
120
- $matches = array();
121
- $does_match = preg_match('/Cache-Control: max-age=(\S+)/is', $headers, $matches);
122
- if ($does_match) {
123
- $max_age = $matches[1];
124
- }
125
 
126
- if ($http_code == 200) {
127
- list($success, $result) = UBConfig::url_list_from_sitemap($body);
128
 
129
- if ($success) {
130
- UBLogger::debug("Retrieved new routes, HTTP code: '$http_code'");
131
- return array('NEW', $etag, $max_age, $result);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  }
133
  else {
134
- $errors = join(', ', $result);
135
- UBLogger::warning("An error occurred while processing routes, XML errors: '$errors'");
136
  return array('FAILURE', null, null, null);
137
  }
138
- }
139
- if ($http_code == 304) {
140
- UBLogger::debug("Routes have not changed, HTTP code: '$http_code'");
141
- return array('SAME', $etag, $max_age, null);
142
- }
143
- if ($http_code == 404) {
144
- UBLogger::debug("No routes to retrieve, HTTP code: '$http_code'");
145
- return array('NONE', null, null, null);
146
- }
147
- else {
148
- UBLogger::warning("An error occurred while retrieving routes; HTTP code: '$http_code'; Error: " . $curl_error);
149
  return array('FAILURE', null, null, null);
150
  }
151
  }
@@ -239,14 +244,15 @@ class UBConfig {
239
  }
240
 
241
  $domain_info['proxyable_url_set_fetched_at'] = $current_time;
 
242
  $domains_info[$domain] = $domain_info;
243
  $options_setter(UBConfig::UB_ROUTES_CACHE_KEY, $domains_info);
244
  }
245
 
246
-
247
  return UBUtil::array_select_by_key($domain_info,
248
  array('proxyable_url_set',
249
- 'proxyable_url_set_fetched_at'));
 
250
  }
251
 
252
  public static function read_unbounce_domain_info($domain, $expire_now) {
12
  const UB_AUTHORIZED_DOMAINS_KEY = 'ub-authorized-domains';
13
  const UB_HAS_AUTHORIZED_KEY = 'ub-has-authorized';
14
  const UB_CACHE_TIMEOUT_ENV_KEY = 'UB_WP_ROUTES_CACHE_EXP';
15
+ const UB_USER_AGENT = 'Unbounce WP Plugin 1.0.3';
16
+ const UB_VERSION = '1.0.3';
17
 
18
  public static function default_page_server_domain() {
19
  $domain = getenv('UB_PAGE_SERVER_DOMAIN');
81
  return array('FAILURE', null, null, null);
82
  }
83
 
84
+ try {
85
+ $url = 'https://' . $ps_domain . '/sitemap.xml';
86
+ $curl = curl_init();
87
+ $curl_options = array(
88
+ CURLOPT_URL => $url,
89
+ CURLOPT_CUSTOMREQUEST => "GET",
90
+ CURLOPT_HEADER => true,
91
+ CURLOPT_USERAGENT => UBConfig::UB_USER_AGENT,
92
+ CURLOPT_HTTPHEADER => array('Host: ' . $domain, 'If-None-Match: ' . $etag),
93
+ CURLOPT_RETURNTRANSFER => true,
94
+ CURLOPT_FOLLOWLOCATION => false,
95
+ CURLOPT_TIMEOUT => 5
96
+ );
97
+
98
+ UBLogger::debug("Retrieving routes from '$url', etag: '$etag', host: '$domain'");
99
+
100
+ curl_setopt_array($curl, $curl_options);
101
+ $data = curl_exec($curl);
102
+
103
+ $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
104
+ $curl_error = null;
105
+
106
+ // when having an CURL error, http_code is 0
107
+ if ($http_code == 0) {
108
+ $curl_error = curl_error($curl);
109
+ }
110
 
111
+ curl_close($curl);
112
 
113
+ list($headers, $body) = array_pad(explode("\r\n\r\n", $data, 2), 2, null);
114
 
115
+ $matches = array();
116
+ $does_match = preg_match('/ETag: (\S+)/is', $headers, $matches);
117
+ if ($does_match) {
118
+ $etag = $matches[1];
119
+ }
120
 
121
+ $matches = array();
122
+ $does_match = preg_match('/Cache-Control: max-age=(\S+)/is', $headers, $matches);
123
+ if ($does_match) {
124
+ $max_age = $matches[1];
125
+ }
126
 
127
+ if ($http_code == 200) {
128
+ list($success, $result) = UBConfig::url_list_from_sitemap($body);
129
 
130
+ if ($success) {
131
+ UBLogger::debug("Retrieved new routes, HTTP code: '$http_code'");
132
+ return array('NEW', $etag, $max_age, $result);
133
+ }
134
+ else {
135
+ $errors = join(', ', $result);
136
+ UBLogger::warning("An error occurred while processing routes, XML errors: '$errors'");
137
+ return array('FAILURE', null, null, null);
138
+ }
139
+ }
140
+ if ($http_code == 304) {
141
+ UBLogger::debug("Routes have not changed, HTTP code: '$http_code'");
142
+ return array('SAME', $etag, $max_age, null);
143
+ }
144
+ if ($http_code == 404) {
145
+ UBLogger::debug("No routes to retrieve, HTTP code: '$http_code'");
146
+ return array('NONE', null, null, null);
147
  }
148
  else {
149
+ UBLogger::warning("An error occurred while retrieving routes; HTTP code: '$http_code'; Error: " . $curl_error);
 
150
  return array('FAILURE', null, null, null);
151
  }
152
+ } catch (Exception $e) {
153
+ UBLogger::warning("An error occurred while retrieving routes; Error: " . $e);
 
 
 
 
 
 
 
 
 
154
  return array('FAILURE', null, null, null);
155
  }
156
  }
244
  }
245
 
246
  $domain_info['proxyable_url_set_fetched_at'] = $current_time;
247
+ $domain_info['last_status'] = $routes_status;
248
  $domains_info[$domain] = $domain_info;
249
  $options_setter(UBConfig::UB_ROUTES_CACHE_KEY, $domains_info);
250
  }
251
 
 
252
  return UBUtil::array_select_by_key($domain_info,
253
  array('proxyable_url_set',
254
+ 'proxyable_url_set_fetched_at',
255
+ 'last_status'));
256
  }
257
 
258
  public static function read_unbounce_domain_info($domain, $expire_now) {
UBDiagnostics.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class UBDiagnostics {
4
+
5
+ const SUPPORTED_PHP_VERSION = '5.3';
6
+ const SUPPORTED_WP_VERSION = '4.0';
7
+
8
+ public static function working() {
9
+ return !in_array(false, UBDiagnostics::checks());
10
+ }
11
+
12
+ public static function checks($domain, $domain_info) {
13
+ return array(
14
+ 'Curl Support' => function_exists('curl_init'),
15
+ 'Permalink Structure' => get_option('permalink_structure', '') !== '',
16
+ 'Domain is Authorized' => UBConfig::is_authorized_domain($domain),
17
+ 'Can Fetch Page Listing' => UBDiagnostics::last_status_success($domain_info),
18
+ 'Supported PHP Version' => version_compare(phpversion(),
19
+ UBDiagnostics::SUPPORTED_PHP_VERSION,
20
+ '>='),
21
+ 'Supported Wordpress Version' => version_compare(UBDiagnostics::wordpress_version(),
22
+ UBDiagnostics::SUPPORTED_WP_VERSION,
23
+ '>=')
24
+ );
25
+ }
26
+
27
+ public static function details($domain, $domain_info) {
28
+ return array(
29
+ 'PHP Version' => phpversion(),
30
+ 'WordPress Version' => UBDiagnostics::wordpress_version(),
31
+ 'Unbounce Plugin Version' => "1.0.3",
32
+ 'Permalink Structure' => get_option('permalink_structure', ''),
33
+ 'Domain' => $domain,
34
+ 'Domain Authorized' => print_r(UBConfig::is_authorized_domain($domain), true),
35
+ 'Domain Information' => print_r($domain_info, true),
36
+ 'Page Server Domain' => UBConfig::page_server_domain(),
37
+ 'Remote Log URL' => UBConfig::remote_log_url(),
38
+ 'API URL' => UBConfig::api_url(),
39
+ 'API Client ID' => UBConfig::api_client_id(),
40
+ 'Authorized Domains' => join(', ', UBConfig::authorized_domains()),
41
+ 'Has Authorized' => print_r(UBConfig::has_authorized(), true),
42
+ 'Active Plugins' => print_r(get_option('active_plugins'), true),
43
+ 'Plugin Details' => print_r(get_plugins(), true),
44
+ 'Curl Version' => UBDiagnostics::curl_version(),
45
+ 'Configuration Options' => print_r(ini_get_all(), true),
46
+ 'Extensions' => print_r(get_loaded_extensions(), true),
47
+ 'Operating System' => php_uname(),
48
+ 'Checks' => print_r(UBDiagnostics::checks($domain, $domain_info), true)
49
+ );
50
+ }
51
+
52
+ private static function curl_version() {
53
+ if(function_exists('curl_version')) {
54
+ return print_r(curl_version(), true);
55
+ } else {
56
+ return 'N/A';
57
+ }
58
+ }
59
+
60
+ private static function wordpress_version() {
61
+ global $wp_version;
62
+ include(ABSPATH . WPINC . '/version.php');
63
+ return $wp_version;
64
+ }
65
+
66
+ private static function last_status_success($domain_info) {
67
+ $last_status = UBUtil::array_fetch($domain_info, 'last_status');
68
+ return $last_status !== 'FAILURE' && $last_status !== null;
69
+ }
70
+
71
+ }
72
+ ?>
UBLogger.php CHANGED
@@ -27,38 +27,44 @@ class UBLogger {
27
  $json_unescaped = json_encode($data);
28
  $data_string = str_replace('\\/', '/', $json_unescaped);
29
 
30
- $curl = curl_init();
31
- $curl_options = array(
32
- CURLOPT_URL => $url,
33
- CURLOPT_CUSTOMREQUEST => 'POST',
34
- CURLOPT_USERAGENT => UBConfig::UB_USER_AGENT,
35
- CURLOPT_FOLLOWLOCATION => false,
36
- CURLOPT_HTTPHEADER => array(
37
- 'Content-Type: application/json',
38
- 'Content-Length: ' . strlen($data_string)
39
- ),
40
- CURLOPT_POSTFIELDS => $data_string,
41
- CURLOPT_TIMEOUT => 2
42
- );
43
- curl_setopt_array($curl, $curl_options);
44
- $success = curl_exec($curl);
45
- $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
46
-
47
- if(!$success) {
48
- $message = 'Unable to send log messages to ' . $url . ': "'
49
- . curl_error($curl) . '" - HTTP status: ' . curl_errno($curl);
50
- UBLogger::warning($message);
51
- } elseif($http_code >= 200 && $http_code < 300) {
52
- $message = 'Successfully sent log messsages to ' . $url
53
- . ' - HTTP status: ' . $http_code;
54
- UBLogger::debug($message);
55
- } else {
 
 
 
 
 
 
 
 
56
  $message = 'Unable to send log messages to ' . $url
57
- . ' - HTTP status: ' . $http_code;
58
  UBLogger::warning($message);
59
  }
60
-
61
- curl_close($curl);
62
  }
63
  }
64
 
27
  $json_unescaped = json_encode($data);
28
  $data_string = str_replace('\\/', '/', $json_unescaped);
29
 
30
+ try {
31
+ $curl = curl_init();
32
+ $curl_options = array(
33
+ CURLOPT_URL => $url,
34
+ CURLOPT_CUSTOMREQUEST => 'POST',
35
+ CURLOPT_USERAGENT => UBConfig::UB_USER_AGENT,
36
+ CURLOPT_FOLLOWLOCATION => false,
37
+ CURLOPT_HTTPHEADER => array(
38
+ 'Content-Type: application/json',
39
+ 'Content-Length: ' . strlen($data_string)
40
+ ),
41
+ CURLOPT_POSTFIELDS => $data_string,
42
+ CURLOPT_TIMEOUT => 2
43
+ );
44
+ curl_setopt_array($curl, $curl_options);
45
+ $success = curl_exec($curl);
46
+ $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
47
+
48
+ if(!$success) {
49
+ $message = 'Unable to send log messages to ' . $url . ': "'
50
+ . curl_error($curl) . '" - HTTP status: ' . curl_errno($curl);
51
+ UBLogger::warning($message);
52
+ } elseif($http_code >= 200 && $http_code < 300) {
53
+ $message = 'Successfully sent log messsages to ' . $url
54
+ . ' - HTTP status: ' . $http_code;
55
+ UBLogger::debug($message);
56
+ } else {
57
+ $message = 'Unable to send log messages to ' . $url
58
+ . ' - HTTP status: ' . $http_code;
59
+ UBLogger::warning($message);
60
+ }
61
+
62
+ curl_close($curl);
63
+ } catch (Exception $e) {
64
  $message = 'Unable to send log messages to ' . $url
65
+ . ' - Error: ' . $e;
66
  UBLogger::warning($message);
67
  }
 
 
68
  }
69
  }
70
 
Unbounce-Page.php CHANGED
@@ -3,13 +3,14 @@
3
  Plugin Name: Unbounce
4
  Plugin URI: http://unbounce.com
5
  Description: Publish Unbounce Landing Pages to your Wordpress Domain.
6
- Version: 1.0.2
7
  Author: Unbounce
8
  Author URI: http://unbounce.com
9
  License: GPLv2
10
  */
11
 
12
  require_once dirname(__FILE__) . '/UBCompatibility.php';
 
13
  require_once dirname(__FILE__) . '/UBUtil.php';
14
  require_once dirname(__FILE__) . '/UBConfig.php';
15
  require_once dirname(__FILE__) . '/UBLogger.php';
@@ -196,7 +197,7 @@ function render_unbounce_pages($domain_info, $domain) {
196
  }
197
 
198
  if(UBConfig::is_authorized_domain($domain)) {
199
- $proxyable_url_set = UBUtil::array_fetch($domain_info, 'proxyable_url_set');
200
 
201
  echo '<h2 class="ub-published-pages-heading">Published Pages</h2>';
202
 
@@ -230,7 +231,9 @@ function render_unbounce_pages($domain_info, $domain) {
230
  echo '. If they are still not appearing, double check that your Unbounce pages are using a Wordpress domain.</p>';
231
  echo '</form>';
232
  echo '<a href="http://documentation.unbounce.com/hc/en-us/articles/205069824-Integrating-with-WordPress" target="_blank">Check out our knowledge base.</a>';
233
- echo '<p class="ub-version">Unbounce Version 1.0.2</p>';
 
 
234
  });
235
  } else {
236
  if (UBConfig::has_authorized()) {
@@ -261,15 +264,50 @@ function render_unbounce_pages($domain_info, $domain) {
261
  echo '</p>';
262
  echo '</form>';
263
  }
 
 
 
 
 
 
 
 
264
  }
265
 
266
  echo "</div>"; //close ub-plugin-wrapper
267
  }
268
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
  add_action('admin_menu', function() {
 
270
  $print_admin_panel = function() {
271
  $domain = parse_url(get_home_url(), PHP_URL_HOST);
272
- $domain_info = UBConfig::read_unbounce_domain_info($domain, false);
273
 
274
  render_unbounce_pages($domain_info, $domain);
275
  };
@@ -280,6 +318,21 @@ add_action('admin_menu', function() {
280
  'unbounce-pages',
281
  $print_admin_panel,
282
  UBIcon::base64_encoded_svg());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  });
284
 
285
  add_action('admin_post_set_unbounce_domains', function() {
3
  Plugin Name: Unbounce
4
  Plugin URI: http://unbounce.com
5
  Description: Publish Unbounce Landing Pages to your Wordpress Domain.
6
+ Version: 1.0.3
7
  Author: Unbounce
8
  Author URI: http://unbounce.com
9
  License: GPLv2
10
  */
11
 
12
  require_once dirname(__FILE__) . '/UBCompatibility.php';
13
+ require_once dirname(__FILE__) . '/UBDiagnostics.php';
14
  require_once dirname(__FILE__) . '/UBUtil.php';
15
  require_once dirname(__FILE__) . '/UBConfig.php';
16
  require_once dirname(__FILE__) . '/UBLogger.php';
197
  }
198
 
199
  if(UBConfig::is_authorized_domain($domain)) {
200
+ $proxyable_url_set = UBUtil::array_fetch($domain_info, 'proxyable_url_set', array());
201
 
202
  echo '<h2 class="ub-published-pages-heading">Published Pages</h2>';
203
 
231
  echo '. If they are still not appearing, double check that your Unbounce pages are using a Wordpress domain.</p>';
232
  echo '</form>';
233
  echo '<a href="http://documentation.unbounce.com/hc/en-us/articles/205069824-Integrating-with-WordPress" target="_blank">Check out our knowledge base.</a>';
234
+ $diagnostics_url = admin_url('admin.php?page=unbounce-pages-diagnostics');
235
+ echo "<br/><a class='ub-diagnostics-link' href='${diagnostics_url}'>Diagnostics</a>";
236
+ echo '<p class="ub-version">Unbounce Version 1.0.3</p>';
237
  });
238
  } else {
239
  if (UBConfig::has_authorized()) {
264
  echo '</p>';
265
  echo '</form>';
266
  }
267
+
268
+ add_action('in_admin_footer', function() {
269
+ echo '<a href="http://documentation.unbounce.com/hc/en-us/articles/205069824-Integrating-with-WordPress"';
270
+ echo ' target="_blank">Check out our knowledge base.</a>';
271
+ $diagnostics_url = admin_url('admin.php?page=unbounce-pages-diagnostics');
272
+ echo "<br/><a class='ub-diagnostics-link' href='${diagnostics_url}'>Diagnostics</a>";
273
+ echo '<p class="ub-version">Unbounce Version 1.0.3</p>';
274
+ });
275
  }
276
 
277
  echo "</div>"; //close ub-plugin-wrapper
278
  }
279
 
280
+ function render_unbounce_pages_diagnostics($domain, $domain_info) {
281
+ echo "<div class=\"ub-plugin-wrapper\">";
282
+ $img_url = plugins_url('img/unbounce-logo-blue.png', __FILE__);
283
+ echo "<img class=\"ub-logo\" src=\"${img_url}\" />";
284
+ echo "<h1 class=\"ub-unbounce-pages-heading\">Unbounce Pages Diagnostics</h1>";
285
+
286
+ $checks = UBDiagnostics::checks($domain, $domain_info);
287
+ echo '<br/>';
288
+ echo '<ul class="ub-diagnostics-checks">';
289
+ foreach($checks as $check => $success) {
290
+ $css_class = ($success ? 'dashicons-yes' : 'dashicons-no-alt');
291
+ echo "<li><span class='dashicons ${css_class}'></span>${check}</li>";
292
+ }
293
+ echo '</ul>';
294
+
295
+ echo '<h2>Details</h2>';
296
+ echo '<p>If you are experiencing problems with the Unbounce Pages plugin, please email the following details to <a href="mailto:support@unbounce.com">support@unbounce.com</a>.</p>';
297
+ $details = UBDiagnostics::details($domain, $domain_info);
298
+ echo '<textarea rows="10" cols="100">';
299
+ foreach($details as $detail_name => $detail) {
300
+ echo "[${detail_name}] ${detail}\n";
301
+ }
302
+ echo '</textarea>';
303
+ echo "</div>"; //close ub-plugin-wrapper
304
+ }
305
+
306
  add_action('admin_menu', function() {
307
+ // Main admin page
308
  $print_admin_panel = function() {
309
  $domain = parse_url(get_home_url(), PHP_URL_HOST);
310
+ $domain_info = UBConfig::read_unbounce_domain_info($domain, false);
311
 
312
  render_unbounce_pages($domain_info, $domain);
313
  };
318
  'unbounce-pages',
319
  $print_admin_panel,
320
  UBIcon::base64_encoded_svg());
321
+
322
+ // Diagnostics page
323
+ $print_diagnostics_panel = function() {
324
+ $domain = parse_url(get_home_url(), PHP_URL_HOST);
325
+ $domain_info = UBConfig::read_unbounce_domain_info($domain, false);
326
+
327
+ render_unbounce_pages_diagnostics($domain, $domain_info);
328
+ };
329
+
330
+ add_submenu_page(NULL,
331
+ 'Unbounce Pages Diagnostics',
332
+ 'Unbounce Pages Diagnostics',
333
+ 'manage_options',
334
+ 'unbounce-pages-diagnostics',
335
+ $print_diagnostics_panel);
336
  });
337
 
338
  add_action('admin_post_set_unbounce_domains', function() {
css/unbounce-pages.css CHANGED
@@ -67,3 +67,15 @@
67
  width: 100%;
68
  float: left;
69
  }
 
 
 
 
 
 
 
 
 
 
 
 
67
  width: 100%;
68
  float: left;
69
  }
70
+
71
+ .ub-diagnostics-link {
72
+ float: left;
73
+ }
74
+
75
+ .ub-diagnostics-checks .dashicons-yes {
76
+ color: #7ad03a;
77
+ }
78
+
79
+ .ub-diagnostics-checks .dashicons-no-alt {
80
+ color: #dd3d36;
81
+ }
js/unbounce-page.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ // Unbounce-Page.php JS Functions
2
+
3
+ function swap_primary_buttons(current_primary, current_secondary) {
4
+ var $ = jQuery;
5
+ $('#' + current_primary).removeClass('button-primary');
6
+ $('#' + current_secondary).addClass('button-primary');
7
+ }
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: unbouncewordpress
3
  Tags: Unbounce, AB testing, A/B testing, split testing, CRO, conversion optimization, wordpress landing page, wp landing pages, splash pages, landing pages, squeeze pages, lead gen, lead generation, email list, responsive landing pages, templates, inbound marketing, ppc, analytics
4
  Requires at least: 4.1.5
5
  Tested up to: 4.3
6
- Stable tag: 1.0.2
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
3
  Tags: Unbounce, AB testing, A/B testing, split testing, CRO, conversion optimization, wordpress landing page, wp landing pages, splash pages, landing pages, squeeze pages, lead gen, lead generation, email list, responsive landing pages, templates, inbound marketing, ppc, analytics
4
  Requires at least: 4.1.5
5
  Tested up to: 4.3
6
+ Stable tag: 1.0.3
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9