WordPress Share Buttons Plugin – AddThis - Version 3.1

Version Description

  • Better support for excerpts
  • Internal issues with tw:screenname resolved
  • Better JSON validation
  • Bug fixes
Download this release

Release Info

Developer srijith.v
Plugin Icon 128x128 WordPress Share Buttons Plugin – AddThis
Version 3.1
Comparing to
See all releases

Code changes from version 3.0.5 to 3.1

addthis_settings_functions.php CHANGED
@@ -22,7 +22,7 @@ function addthis_kses($string, $customstyles)
22
  $mytags['a'][ 'gplusoneannotation' ]= array();
23
  $mytags['a'][ 'fblikelayout' ]= array();
24
  $mytags['a'][ 'fblikesend' ]= array();
25
- $mytags['a'][ 'fblikeshow_faces' ]= array();
26
  $mytags['a'][ 'fblikewidth' ]= array();
27
  $mytags['a'][ 'fblikeaction' ]= array();
28
  $mytags['a'][ 'fblikefont' ]= array();
@@ -37,11 +37,12 @@ function addthis_kses($string, $customstyles)
37
  $mytags['a'][ 'twlang' ]= array();
38
  $mytags['a'][ 'twhashtags' ]= array();
39
  $mytags['a'][ 'twcounturl' ]= array();
 
40
  $mytags['a'][ 'pipinitlayout' ]= array();
41
  $mytags['a'][ 'pipiniturl' ]= array();
42
  $mytags['a'][ 'pipinitmedia' ]= array();
43
  $mytags['a'][ 'pipinitdescription' ]= array();
44
-
45
  $pretags = array( 'g:plusone:', 'fb:like:', 'tw:', 'pi:pinit:');
46
  $posttags = array('gplusone', 'fblike', 'tw', 'pipinit');
47
 
@@ -55,12 +56,32 @@ function addthis_kses($string, $customstyles)
55
  $post_pattern[] = '/[^_]'.$attr.'/';
56
  $posttags[$i] = ' '.$attr;
57
  }
 
58
  $temp_string = preg_replace( $pre_pattern, $posttags, $string);
 
 
 
 
 
 
 
59
  $new_temp_string = wp_kses($temp_string, $mytags);
60
- $new_string = preg_replace( $post_pattern, $pretags, $new_temp_string);
61
  // Add in our %s so that the url and title get added properly
62
-
63
- $new_string = substr_replace($new_string, $customstyles, 4, 0);
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  return $new_string;
66
  }
22
  $mytags['a'][ 'gplusoneannotation' ]= array();
23
  $mytags['a'][ 'fblikelayout' ]= array();
24
  $mytags['a'][ 'fblikesend' ]= array();
25
+ $mytags['a'][ 'fblikeshowfaces' ]= array();
26
  $mytags['a'][ 'fblikewidth' ]= array();
27
  $mytags['a'][ 'fblikeaction' ]= array();
28
  $mytags['a'][ 'fblikefont' ]= array();
37
  $mytags['a'][ 'twlang' ]= array();
38
  $mytags['a'][ 'twhashtags' ]= array();
39
  $mytags['a'][ 'twcounturl' ]= array();
40
+ $mytags['a'][ 'twscreenname' ]= array();
41
  $mytags['a'][ 'pipinitlayout' ]= array();
42
  $mytags['a'][ 'pipiniturl' ]= array();
43
  $mytags['a'][ 'pipinitmedia' ]= array();
44
  $mytags['a'][ 'pipinitdescription' ]= array();
45
+
46
  $pretags = array( 'g:plusone:', 'fb:like:', 'tw:', 'pi:pinit:');
47
  $posttags = array('gplusone', 'fblike', 'tw', 'pipinit');
48
 
56
  $post_pattern[] = '/[^_]'.$attr.'/';
57
  $posttags[$i] = ' '.$attr;
58
  }
59
+
60
  $temp_string = preg_replace( $pre_pattern, $posttags, $string);
61
+ if (strpos($temp_string, "twscreen_name") != false) {
62
+ $temp_string = str_replace('twscreen_name', 'twscreenname', $temp_string);
63
+ }
64
+ if (strpos($temp_string, "fblikeshow_faces") != false) {
65
+ $temp_string = str_replace('fblikeshow_faces', 'fblikeshowfaces', $temp_string);
66
+ }
67
+
68
  $new_temp_string = wp_kses($temp_string, $mytags);
69
+
70
  // Add in our %s so that the url and title get added properly
71
+ if (!preg_match('/(<img[^>]+>)/i', $string, $matches)) {
72
+ $new_string = preg_replace( $post_pattern, $pretags, $new_temp_string);
73
+ $new_string = substr_replace($new_string, $customstyles, 4, 0);
74
+ }
75
+ else {
76
+ $new_string = substr_replace($new_temp_string, $customstyles, 4, 0);
77
+ }
78
+
79
+ if (strpos($new_string, "tw:screenname") != false) {
80
+ $new_string = str_replace('tw:screenname', 'tw:screen_name', $new_string);
81
+ }
82
+ if (strpos($new_string, "fb:like:showfaces") != false) {
83
+ $new_string = str_replace('fb:like:showfaces', 'fb:like:show_faces', $new_string);
84
+ }
85
 
86
  return $new_string;
87
  }
addthis_social_widget.php CHANGED
@@ -23,7 +23,7 @@
23
  * Plugin Name: AddThis Social Bookmarking Widget
24
  * Plugin URI: http://www.addthis.com
25
  * Description: Help your visitor promote your site! The AddThis Social Bookmarking Widget allows any visitor to bookmark your site easily with many popular services. Sign up for an AddThis.com account to see how your visitors are sharing your content--which services they're using for sharing, which content is shared the most, and more. It's all free--even the pretty charts and graphs.
26
- * Version: 3.0.5
27
  *
28
  * Author: The AddThis Team
29
  * Author URI: http://www.addthis.com/blog
@@ -46,8 +46,8 @@ function addthis_early(){
46
 
47
 
48
  define( 'addthis_style_default' , 'fb_tw_p1_sc');
49
- define( 'ADDTHIS_PLUGIN_VERSION' , '3.0.5');
50
- define( 'ADDTHIS_PRODUCT_VERSION' , 'wpp-3.0.5');
51
  define( 'ADDTHIS_ATVERSION', '300');
52
  define( 'ADDTHIS_ATVERSION_MANUAL_UPDATE', -1);
53
  define( 'ADDTHIS_ATVERSION_AUTO_UPDATE', 0);
@@ -144,7 +144,7 @@ function addthis_script_to_content($content)
144
  add_filter('language_attributes', 'addthis_language_attributes');
145
  function addthis_language_attributes($input)
146
  {
147
- return $input . ' xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:addthis="http://www.addthis.com/help/api-spec" ';
148
  }
149
 
150
 
@@ -597,7 +597,7 @@ function addthis_render_dashboard_widget() {
597
  'domain='.$domain.'&period='.$period.
598
  '&username='.$username.
599
  '&password='.$password.
600
- $profile;
601
  $stats[$metric.$dimension.$period] = wp_remote_get($url, array('period' => $period, 'domain' => $domain, 'password' => $password, 'username' => $username) );
602
 
603
  if ( is_wp_error( $stats[$metric.$dimension.$period] ) )
@@ -747,7 +747,7 @@ function addthis_render_dashboard_widget() {
747
  {
748
  $url = array_shift($shareurls);
749
  $displayUrl = str_replace( array('http://', 'https://', $domain), '',$url->url);
750
- echo "<li><span class='urlCount'>" . $url->shares . "</span><span class='urlUrl'>". $displayUrl . "</span></li>";
751
  }
752
  echo "</ul>";
753
  echo "<h5>Top Services for shares(last month)</h5>";
@@ -761,7 +761,7 @@ function addthis_render_dashboard_widget() {
761
  {
762
  $url = array_shift($clickbackurls);
763
  $displayUrl = str_replace( array('http://', 'https://', $domain), '',$url->url);
764
- echo "<li><span class='urlCount'>" . $url->clickbacks . "</span><span class='urlUrl'>". $displayUrl . "</span></li>";
765
  }
766
  echo "</ul>";
767
  echo "<h5>Top Services for clicks(last month)</h5>";
@@ -1325,8 +1325,34 @@ function addthis_display_social_widget($content, $filtered = true, $below_excerp
1325
  $options = get_option('addthis_settings');
1326
 
1327
 
1328
- if ( is_home() || is_front_page() )
1329
- $display = (isset($options['addthis_showonhome']) && $options['addthis_showonhome'] == true ) ? true : false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1330
  elseif ( is_archive() && ! is_category() )
1331
  $display = (isset($options['addthis_showonarchives']) && $options['addthis_showonarchives'] == true ) ? true : false;
1332
  // Cat
@@ -1547,14 +1573,15 @@ function addthis_output_script($return = false, $justConfig = false )
1547
  if ($justConfig)
1548
  {
1549
  $return = '';
1550
- if ( isset( $options['addthis_share_json'] ) && $options['addthis_share_json'] != '')
1551
- $return .= 'if (typeof(addthis_share) == "undefined"){ addthis_share = ' . $options['addthis_share_json'] . ';}';
 
 
 
1552
  else
1553
  {
1554
- $share = apply_filters('addthis_share_js_var', $addthis_share );
1555
  if (! empty($share) )
1556
  $return .= 'if (typeof(addthis_share) == "undefined"){ addthis_share = ' . json_encode( apply_filters('addthis_share_js_var', $addthis_share ) ) .';}';
1557
-
1558
  }
1559
  $return .= "\n";
1560
 
@@ -1573,7 +1600,7 @@ function addthis_output_script($return = false, $justConfig = false )
1573
 
1574
 
1575
  if ( isset( $options['addthis_share_json'] ) && $options['addthis_share_json'] != '')
1576
- $script .= 'if (typeof(addthis_share) == "undefined"){ addthis_share = ' . $options['addthis_share_json'] . ';}';
1577
  else
1578
  $script .= 'if (typeof(addthis_share) == "undefined"){ addthis_share = ' . json_encode( apply_filters('addthis_share_js_var', $addthis_share ) ) .';}';
1579
  $script .= '</script>';
@@ -1597,7 +1624,7 @@ function validate_addthis_api_credentials()
1597
  $ajax_response = array('profileerror' => 'true', 'profilemessage' => '',
1598
  'credentialerror' => 'true', 'credentialmessage' => '');
1599
  if ($_POST['addthis_username'] && $_POST['addthis_password'] && $_POST['addthis_profile']) {
1600
- $url = 'http://api.addthis.com/analytics/1.0/pub/shares.json?'.
1601
  'username=' . urlencode($_POST['addthis_username']).
1602
  '&password=' . urlencode($_POST['addthis_password']).
1603
  '&pubid=' . urlencode($_POST['addthis_profile']);
@@ -1648,7 +1675,27 @@ function merge_config_with_json_config($append_string, $addthis_config, $addthis
1648
  $append_string .= 'var addthis_config = '. json_encode($addthis_config) .';';
1649
  return $append_string;
1650
  }
1651
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1652
  /**
1653
  * Appends AddThis button to post content.
1654
  */
23
  * Plugin Name: AddThis Social Bookmarking Widget
24
  * Plugin URI: http://www.addthis.com
25
  * Description: Help your visitor promote your site! The AddThis Social Bookmarking Widget allows any visitor to bookmark your site easily with many popular services. Sign up for an AddThis.com account to see how your visitors are sharing your content--which services they're using for sharing, which content is shared the most, and more. It's all free--even the pretty charts and graphs.
26
+ * Version: 3.1
27
  *
28
  * Author: The AddThis Team
29
  * Author URI: http://www.addthis.com/blog
46
 
47
 
48
  define( 'addthis_style_default' , 'fb_tw_p1_sc');
49
+ define( 'ADDTHIS_PLUGIN_VERSION' , '3.1');
50
+ define( 'ADDTHIS_PRODUCT_VERSION' , 'wpp-3.1');
51
  define( 'ADDTHIS_ATVERSION', '300');
52
  define( 'ADDTHIS_ATVERSION_MANUAL_UPDATE', -1);
53
  define( 'ADDTHIS_ATVERSION_AUTO_UPDATE', 0);
144
  add_filter('language_attributes', 'addthis_language_attributes');
145
  function addthis_language_attributes($input)
146
  {
147
+ return $input . ' xmlns:fb="http://ogp.me/ns/fb#" xmlns:addthis="http://www.addthis.com/help/api-spec" ';
148
  }
149
 
150
 
597
  'domain='.$domain.'&period='.$period.
598
  '&username='.$username.
599
  '&password='.$password.
600
+ $profile.'&origin=wordpress_plugin';
601
  $stats[$metric.$dimension.$period] = wp_remote_get($url, array('period' => $period, 'domain' => $domain, 'password' => $password, 'username' => $username) );
602
 
603
  if ( is_wp_error( $stats[$metric.$dimension.$period] ) )
747
  {
748
  $url = array_shift($shareurls);
749
  $displayUrl = str_replace( array('http://', 'https://', $domain), '',$url->url);
750
+ echo "<li><span class='urlCount'>" . $url->shares . "</span><span class='urlUrl'>". urldecode($displayUrl) . "</span></li>";
751
  }
752
  echo "</ul>";
753
  echo "<h5>Top Services for shares(last month)</h5>";
761
  {
762
  $url = array_shift($clickbackurls);
763
  $displayUrl = str_replace( array('http://', 'https://', $domain), '',$url->url);
764
+ echo "<li><span class='urlCount'>" . $url->clickbacks . "</span><span class='urlUrl'>". urldecode($displayUrl) . "</span></li>";
765
  }
766
  echo "</ul>";
767
  echo "<h5>Top Services for clicks(last month)</h5>";
1325
  $options = get_option('addthis_settings');
1326
 
1327
 
1328
+ if ( is_home() || is_front_page() ) {
1329
+ if (isset($options['addthis_showonhome']) && $options['addthis_showonhome'] == true ) {
1330
+ if (isset($options['addthis_showonexcerpts']) && $options['addthis_showonexcerpts'] == true ) {
1331
+ $display = true;
1332
+ }
1333
+ else {
1334
+ if( strpos($post->post_content, '<!--more-->') != false) {
1335
+ $display = false;
1336
+ }
1337
+ else {
1338
+ $display = true;
1339
+ }
1340
+ }
1341
+ }
1342
+ else {
1343
+ if (isset($options['addthis_showonexcerpts']) && $options['addthis_showonexcerpts'] == true ) {
1344
+ if( strpos($post->post_content, '<!--more-->') != false) {
1345
+ $display = true;
1346
+ }
1347
+ else {
1348
+ $display = false;
1349
+ }
1350
+ }
1351
+ else {
1352
+ $display = false;
1353
+ }
1354
+ }
1355
+ }
1356
  elseif ( is_archive() && ! is_category() )
1357
  $display = (isset($options['addthis_showonarchives']) && $options['addthis_showonarchives'] == true ) ? true : false;
1358
  // Cat
1573
  if ($justConfig)
1574
  {
1575
  $return = '';
1576
+ $share = apply_filters('addthis_share_js_var', $addthis_share );
1577
+ if ( isset( $options['addthis_share_json'] ) && $options['addthis_share_json'] != '') {
1578
+ $addthis_json_share = array_key_exists('addthis_share_json', $options) ? $options['addthis_share_json'] : '';
1579
+ $return .= merge_share_with_json_share($addthis_share, $addthis_json_share);
1580
+ }
1581
  else
1582
  {
 
1583
  if (! empty($share) )
1584
  $return .= 'if (typeof(addthis_share) == "undefined"){ addthis_share = ' . json_encode( apply_filters('addthis_share_js_var', $addthis_share ) ) .';}';
 
1585
  }
1586
  $return .= "\n";
1587
 
1600
 
1601
 
1602
  if ( isset( $options['addthis_share_json'] ) && $options['addthis_share_json'] != '')
1603
+ $script .= merge_share_with_json_share($addthis_share, $addthis_json_share);
1604
  else
1605
  $script .= 'if (typeof(addthis_share) == "undefined"){ addthis_share = ' . json_encode( apply_filters('addthis_share_js_var', $addthis_share ) ) .';}';
1606
  $script .= '</script>';
1624
  $ajax_response = array('profileerror' => 'true', 'profilemessage' => '',
1625
  'credentialerror' => 'true', 'credentialmessage' => '');
1626
  if ($_POST['addthis_username'] && $_POST['addthis_password'] && $_POST['addthis_profile']) {
1627
+ $url = 'https://api.addthis.com/analytics/1.0/pub/shares.json?'.
1628
  'username=' . urlencode($_POST['addthis_username']).
1629
  '&password=' . urlencode($_POST['addthis_password']).
1630
  '&pubid=' . urlencode($_POST['addthis_profile']);
1675
  $append_string .= 'var addthis_config = '. json_encode($addthis_config) .';';
1676
  return $append_string;
1677
  }
1678
+ /*
1679
+ * Merge the Add this settings with that given using JSON format
1680
+ * @param String $appendString - The string to build and return the script
1681
+ * @param array $addthis_share - The setting array for add this share
1682
+ * @param String $addthis_json_share - The JSON String
1683
+ * @return String $appendString - The string to build and return the script
1684
+ */
1685
+ function merge_share_with_json_share($addthis_share, $addthis_json_share) {
1686
+ $append_string = '';
1687
+ if ( isset( $addthis_json_share ) && trim($addthis_json_share) != '') {
1688
+ $addthis_share_json_list = json_decode($addthis_json_share, true);
1689
+ if (! empty ($addthis_share_json_list) && ! empty ($addthis_share)) {
1690
+ foreach($addthis_share_json_list as $key_json => $json_share_value) {
1691
+ $addthis_share[$key_json] = $json_share_value;
1692
+ }
1693
+ }
1694
+ }
1695
+ if (! empty ($addthis_share) )
1696
+ $append_string = 'if (typeof(addthis_share) == "undefined"){ addthis_share = '. json_encode($addthis_share) .';}';
1697
+ return $append_string;
1698
+ }
1699
  /**
1700
  * Appends AddThis button to post content.
1701
  */
css/output.css CHANGED
@@ -4,4 +4,7 @@
4
  .addthis_button_tweet {
5
  min-width: 83px;
6
  float:left;
7
- }
 
 
 
4
  .addthis_button_tweet {
5
  min-width: 83px;
6
  float:left;
7
+ }
8
+ .atwidget iframe {
9
+ max-width:none;
10
+ }
img/plusone-share.gif CHANGED
Binary file
js/options-page.32.js CHANGED
@@ -298,9 +298,10 @@ jQuery(document).ready(function($) {
298
  try {
299
  var addthis_config_json = jQuery.parseJSON($('#addthis-config-json').val());
300
  }
301
- catch (e) {
302
- error = 1;
303
- }
 
304
  }
305
  if (error == 0) {
306
  $('#config-error').hide();
@@ -319,6 +320,7 @@ jQuery(document).ready(function($) {
319
  var addthis_share_json = jQuery.parseJSON($('#addthis-share-json').val());
320
  }
321
  catch (e) {
 
322
  error = 1;
323
  }
324
  }
@@ -338,23 +340,23 @@ jQuery(document).ready(function($) {
338
  var error = 0;
339
  if ($('#addthis-config-json').val() != " ") {
340
  try {
341
- var addthis_config_json = jQuery.parseJSON($('#addthis-config-json').val());
342
  }
343
  catch (e) {
344
- $('#config-error').show();
345
- error = 1;
346
  }
347
  }
348
  if ($('#addthis-share-json').val() != " ") {
349
  try {
350
- var addthis_share_json = jQuery.parseJSON($('#addthis-share-json').val());
351
  }
352
- catch (e) {
353
- $('#share-error').show();
354
- error = 1;
355
  }
356
  }
357
- if (error == 0) {
358
  return true;
359
  }
360
  else {
298
  try {
299
  var addthis_config_json = jQuery.parseJSON($('#addthis-config-json').val());
300
  }
301
+ catch (e) {
302
+ $('#config-error').show();
303
+ error = 1;
304
+ }
305
  }
306
  if (error == 0) {
307
  $('#config-error').hide();
320
  var addthis_share_json = jQuery.parseJSON($('#addthis-share-json').val());
321
  }
322
  catch (e) {
323
+ $('#share-error').show();
324
  error = 1;
325
  }
326
  }
340
  var error = 0;
341
  if ($('#addthis-config-json').val() != " ") {
342
  try {
343
+ var addthis_config_json = jQuery.parseJSON($('#addthis-config-json').val());
344
  }
345
  catch (e) {
346
+ $('#config-error').show();
347
+ error = 1;
348
  }
349
  }
350
  if ($('#addthis-share-json').val() != " ") {
351
  try {
352
+ var addthis_share_json = jQuery.parseJSON($('#addthis-share-json').val());
353
  }
354
+ catch (e) {
355
+ $('#share-error').show();
356
+ error = 1;
357
  }
358
  }
359
+ if (error == 0) {
360
  return true;
361
  }
362
  else {
js/options-page.js CHANGED
@@ -296,17 +296,19 @@ jQuery(document).ready(function($) {
296
  var error = 0;
297
  if ($('#addthis-config-json').val() != " ") {
298
  try {
299
- var addthis_config_json = jQuery.parseJSON($('#addthis-config-json').val());
300
  }
301
  catch (e) {
302
- $('#config-error').show();
303
- error = 1;
304
- }
305
  }
306
  if (error == 0) {
 
307
  return true;
308
  }
309
  else {
 
310
  return false;
311
  }
312
  });
@@ -318,6 +320,7 @@ jQuery(document).ready(function($) {
318
  var addthis_share_json = jQuery.parseJSON($('#addthis-share-json').val());
319
  }
320
  catch (e) {
 
321
  error = 1;
322
  }
323
  }
296
  var error = 0;
297
  if ($('#addthis-config-json').val() != " ") {
298
  try {
299
+ var addthis_config_json = jQuery.parseJSON($('#addthis-config-json').val());
300
  }
301
  catch (e) {
302
+ $('#config-error').show();
303
+ error = 1;
304
+ }
305
  }
306
  if (error == 0) {
307
+ $('#config-error').hide();
308
  return true;
309
  }
310
  else {
311
+ $('#config-error').show();
312
  return false;
313
  }
314
  });
320
  var addthis_share_json = jQuery.parseJSON($('#addthis-share-json').val());
321
  }
322
  catch (e) {
323
+ $('#share-error').show();
324
  error = 1;
325
  }
326
  }
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: srijith.v, solchea, _mjk_, addthis_paul
3
  Tags: share, addthis, social, bookmark, sharing, bookmarking, widget,AddThis, addtoany, aim, bookmark, buzz, del.icio.us, Digg,e-mail, email, Facebook, google bookmarks, google buzz, myspace,network, NewsVine, Reddit, Share, share this, sharethis, social, socialize, stumbleupon, twitter, windows live, yahoo buzz, pintrest, widget
4
  Requires at least: 2.9
5
- Tested up to: 3.5
6
- Stable tag: 3.0.5
7
 
8
  AddThis Share Buttons help drive traffic to your site by helping visitors share, bookmark and email your content to over 330 services.
9
 
@@ -76,6 +76,12 @@ PHP 5+ is preferred; PHP 4 is supported.
76
 
77
  == Changelog ==
78
 
 
 
 
 
 
 
79
  = 3.0.5 =
80
  * Bug fixes: Style conflicts resolved
81
 
@@ -223,6 +229,9 @@ Fixed nondeterministic bug with the_title(), causing the title to occasionally a
223
 
224
  == Upgrade Notice ==
225
 
 
 
 
226
  = 3.0.5 =
227
  Bug fixes
228
 
2
  Contributors: srijith.v, solchea, _mjk_, addthis_paul
3
  Tags: share, addthis, social, bookmark, sharing, bookmarking, widget,AddThis, addtoany, aim, bookmark, buzz, del.icio.us, Digg,e-mail, email, Facebook, google bookmarks, google buzz, myspace,network, NewsVine, Reddit, Share, share this, sharethis, social, socialize, stumbleupon, twitter, windows live, yahoo buzz, pintrest, widget
4
  Requires at least: 2.9
5
+ Tested up to: 3.5.1
6
+ Stable tag: 3.1
7
 
8
  AddThis Share Buttons help drive traffic to your site by helping visitors share, bookmark and email your content to over 330 services.
9
 
76
 
77
  == Changelog ==
78
 
79
+ = 3.1 =
80
+ * Better support for excerpts
81
+ * Internal issues with tw:screenname resolved
82
+ * Better JSON validation
83
+ * Bug fixes
84
+
85
  = 3.0.5 =
86
  * Bug fixes: Style conflicts resolved
87
 
229
 
230
  == Upgrade Notice ==
231
 
232
+ = 3.1 =
233
+ Bug fixes, better validations
234
+
235
  = 3.0.5 =
236
  Bug fixes
237