Bootstrap for Contact Form 7 - Version 1.3.1

Version Description

  • Enhanced: alerts can now be made dismissible by defining the constant CF7BS_ALERT_DISMISSIBLE
  • Fixed: properly add for attributes to labels for checkbox and radio groups for accessibility
  • Fixed: wrapped checkbox and radio groups with <fieldset> for accessibility; needs to be manually enabled by defining the constant CF7BS_FIELDSET_WRAP (because of possible backwards compatibility issues with styling)
  • Fixed: ID is no longer created for button groups which have an empty ID specified
Download this release

Release Info

Developer flixos90
Plugin Icon 128x128 Bootstrap for Contact Form 7
Version 1.3.1
Comparing to
See all releases

Code changes from version 1.3.0 to 1.3.1

.gitignore DELETED
@@ -1,51 +0,0 @@
1
- # folders and files to be ignored by git
2
-
3
- ############
4
- ## IDEs
5
- ############
6
-
7
- *.pydevproject
8
- .project
9
- .metadata
10
- *.swp
11
- *~.nib
12
- local.properties
13
- .classpath
14
- .settings/
15
- .loadpath
16
- .externalToolBuilders/
17
- *.launch
18
- .cproject
19
- .buildpath
20
- nbproject/
21
- node_modules/*
22
-
23
- ############
24
- ## OSes
25
- ############
26
-
27
- [Tt]humbs.db
28
- [Dd]esktop.ini
29
- *.DS_store
30
- .DS_store?
31
-
32
- ############
33
- ## Misc
34
- ############
35
-
36
- bin/
37
- tmp/
38
- *.tmp
39
- *.bak
40
- *.log
41
- *.[Cc]ache
42
- *.cpr
43
- *.orig
44
- *.php.in
45
- .idea/
46
- .sass-cache/*
47
- temp/
48
- ._*
49
- .Trashes
50
-
51
- .svn
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Gruntfile.js DELETED
@@ -1,121 +0,0 @@
1
- 'use strict';
2
- module.exports = function(grunt) {
3
- grunt.initConfig({
4
- pkg: grunt.file.readJSON('package.json'),
5
- jsbanner: '/*!\n' +
6
- ' * <%= pkg.pluginName %> Scripts - Version <%= pkg.version %>\n' +
7
- ' * \n' +
8
- ' * Modifications and Additions to WPCF7 Scripts to work with CF7BS\n' +
9
- ' * <%= pkg.author.name %> <<%= pkg.author.email %>>\n' +
10
- ' */',
11
- pluginheader: '/*\n' +
12
- 'Plugin Name: <%= pkg.pluginName %>\n' +
13
- 'Plugin URI: <%= pkg.homepage %>\n' +
14
- 'Description: <%= pkg.description %>\n' +
15
- 'Version: <%= pkg.version %>\n' +
16
- 'Author: <%= pkg.author.name %>\n' +
17
- 'Author URI: <%= pkg.author.url %>\n' +
18
- 'License: <%= pkg.license.name %>\n' +
19
- 'License URI: <%= pkg.license.url %>\n' +
20
- 'Text Domain: bootstrap-for-contact-form-7\n' +
21
- 'Tags: <%= pkg.keywords.join(", ") %>\n' +
22
- '*/',
23
- fileheader: '/**\n' +
24
- ' * @package CF7BS\n' +
25
- ' * @version <%= pkg.version %>\n' +
26
- ' * @author <%= pkg.author.name %> <<%= pkg.author.email %>>\n' +
27
- ' */',
28
-
29
- clean: {
30
- scripts: [
31
- 'assets/scripts.min.js'
32
- ]
33
- },
34
-
35
- jshint: {
36
- options: {
37
- jshintrc: 'assets/.jshintrc'
38
- },
39
- src: [
40
- 'assets/scripts.js'
41
- ]
42
- },
43
-
44
- uglify: {
45
- options: {
46
- preserveComments: 'some',
47
- report: 'min'
48
- },
49
- dist: {
50
- src: 'assets/scripts.js',
51
- dest: 'assets/scripts.min.js'
52
- }
53
- },
54
-
55
- usebanner: {
56
- options: {
57
- position: 'top',
58
- banner: '<%= jsbanner %>'
59
- },
60
- files: {
61
- src: [
62
- 'assets/scripts.min.js'
63
- ]
64
- }
65
- },
66
-
67
- replace: {
68
- header: {
69
- src: [
70
- 'bootstrap-for-contact-form-7.php'
71
- ],
72
- overwrite: true,
73
- replacements: [{
74
- from: /((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/,
75
- to: '<%= pluginheader %>'
76
- }]
77
- },
78
- version: {
79
- src: [
80
- 'bootstrap-for-contact-form-7.php',
81
- 'modifications.php',
82
- 'classes/*.php',
83
- 'modules/*.php'
84
- ],
85
- overwrite: true,
86
- replacements: [{
87
- from: /\/\*\*\s+\*\s@package\s[^*]+\s+\*\s@version\s[^*]+\s+\*\s@author\s[^*]+\s\*\//,
88
- to: '<%= fileheader %>'
89
- }]
90
- }
91
- }
92
-
93
- });
94
-
95
- grunt.loadNpmTasks('grunt-contrib-clean');
96
- grunt.loadNpmTasks('grunt-contrib-jshint');
97
- grunt.loadNpmTasks('grunt-contrib-uglify');
98
- grunt.loadNpmTasks('grunt-banner');
99
- grunt.loadNpmTasks('grunt-text-replace');
100
-
101
- grunt.registerTask('scripts', [
102
- 'clean:scripts',
103
- 'jshint',
104
- 'uglify'
105
- ]);
106
-
107
- grunt.registerTask('plugin', [
108
- 'usebanner',
109
- 'replace:version',
110
- 'replace:header'
111
- ]);
112
-
113
- grunt.registerTask('default', [
114
- 'scripts'
115
- ]);
116
-
117
- grunt.registerTask('build', [
118
- 'scripts',
119
- 'plugin'
120
- ]);
121
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.md CHANGED
File without changes
assets/scripts.js CHANGED
@@ -15,6 +15,11 @@
15
  $( 'div.wpcf7' ).on( 'mailfailed.wpcf7', function() {
16
  $( this ).find( 'div.wpcf7-response-output' ).addClass( 'alert-danger' );
17
  });
 
 
 
 
 
18
  });
19
 
20
  // WPCF7 Function Override: Adjusted for Bootstrap Help Block Output and Status Class
@@ -61,7 +66,11 @@
61
  // WPCF7 Function Override: Adjusted for Bootstrap Alert classes and Status Class
62
  $.fn.wpcf7ClearResponseOutput = function() {
63
  return this.each(function() {
 
64
  $( this ).find( 'div.wpcf7-response-output' ).hide().empty().removeClass( 'wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked alert-warning alert-success alert-danger' ).removeAttr( 'role' );
 
 
 
65
  $( this ).find( 'div.form-group' ).removeClass( 'has-error' );
66
  $( this ).find( 'span.wpcf7-not-valid-tip' ).remove();
67
  $( this ).find( 'img.ajax-loader' ).css({ visibility: 'hidden' });
15
  $( 'div.wpcf7' ).on( 'mailfailed.wpcf7', function() {
16
  $( this ).find( 'div.wpcf7-response-output' ).addClass( 'alert-danger' );
17
  });
18
+
19
+ $( 'div.wpcf7' ).on( 'click', 'div.wpcf7-response-output .close', function( e ) {
20
+ $( this ).parent().hide();
21
+ e.preventDefault();
22
+ });
23
  });
24
 
25
  // WPCF7 Function Override: Adjusted for Bootstrap Help Block Output and Status Class
66
  // WPCF7 Function Override: Adjusted for Bootstrap Alert classes and Status Class
67
  $.fn.wpcf7ClearResponseOutput = function() {
68
  return this.each(function() {
69
+ var $close = $( this ).find( 'div.wpcf7-response-output .close' );
70
  $( this ).find( 'div.wpcf7-response-output' ).hide().empty().removeClass( 'wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked alert-warning alert-success alert-danger' ).removeAttr( 'role' );
71
+ if ( 0 < $close.length ) {
72
+ $( this ).find( 'div.wpcf7-response-output' ).append( $close );
73
+ }
74
  $( this ).find( 'div.form-group' ).removeClass( 'has-error' );
75
  $( this ).find( 'span.wpcf7-not-valid-tip' ).remove();
76
  $( this ).find( 'img.ajax-loader' ).css({ visibility: 'hidden' });
assets/scripts.min.js CHANGED
@@ -1,7 +1,7 @@
1
  /*!
2
- * Bootstrap for Contact Form 7 Scripts - Version 1.3.0
3
  *
4
  * Modifications and Additions to WPCF7 Scripts to work with CF7BS
5
  * Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
- +function(a){"use strict";a(function(){a("div.wpcf7").on("invalid.wpcf7",function(){a(this).find("div.wpcf7-response-output").addClass("alert-warning")}),a("div.wpcf7").on("spam.wpcf7",function(){a(this).find("div.wpcf7-response-output").addClass("alert-warning")}),a("div.wpcf7").on("mailsent.wpcf7",function(){a(this).find("div.wpcf7-response-output").addClass("alert-success")}),a("div.wpcf7").on("mailfailed.wpcf7",function(){a(this).find("div.wpcf7-response-output").addClass("alert-danger")})}),a.fn.wpcf7NotValidTip=function(b){return this.each(function(){var c=a(this);c.addClass("has-error"),c.parents(".wpcf7-form").hasClass("form-inline")||(c.find("span.wpcf7-not-valid-tip").remove(),c.parents(".wpcf7-form").hasClass("form-horizontal")?c.children("div").append('<span class="help-block wpcf7-not-valid-tip">'+b+"</span>"):c.append('<span class="help-block wpcf7-not-valid-tip">'+b+"</span>"),c.slideDown("fast"),c.is(".use-floating-validation-tip *")&&(a(".wpcf7-not-valid-tip",c).mouseover(function(){a(this).wpcf7FadeOut()}),a(":input",c).focus(function(){a(".wpcf7-not-valid-tip",c).not(":hidden").wpcf7FadeOut()})))})},a.fn.wpcf7RefillQuiz=function(b){return this.each(function(){var c=a(this);a.each(b,function(a,b){c.find(':input[name="'+a+'"]').clearFields(),c.find(':input[name="'+a+'"]').siblings("p.wpcf7-quiz-label").text(b[0]),c.find('input:hidden[name="_wpcf7_quiz_answer_'+a+'"]').attr("value",b[1])})})},a.fn.wpcf7ClearResponseOutput=function(){return this.each(function(){a(this).find("div.wpcf7-response-output").hide().empty().removeClass("wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked alert-warning alert-success alert-danger").removeAttr("role"),a(this).find("div.form-group").removeClass("has-error"),a(this).find("span.wpcf7-not-valid-tip").remove(),a(this).find("img.ajax-loader").css({visibility:"hidden"})})}}(jQuery);
1
  /*!
2
+ * Bootstrap for Contact Form 7 Scripts - Version 1.3.1
3
  *
4
  * Modifications and Additions to WPCF7 Scripts to work with CF7BS
5
  * Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
+ +function(a){"use strict";a(function(){a("div.wpcf7").on("invalid.wpcf7",function(){a(this).find("div.wpcf7-response-output").addClass("alert-warning")}),a("div.wpcf7").on("spam.wpcf7",function(){a(this).find("div.wpcf7-response-output").addClass("alert-warning")}),a("div.wpcf7").on("mailsent.wpcf7",function(){a(this).find("div.wpcf7-response-output").addClass("alert-success")}),a("div.wpcf7").on("mailfailed.wpcf7",function(){a(this).find("div.wpcf7-response-output").addClass("alert-danger")}),a("div.wpcf7").on("click","div.wpcf7-response-output .close",function(b){a(this).parent().hide(),b.preventDefault()})}),a.fn.wpcf7NotValidTip=function(b){return this.each(function(){var c=a(this);c.addClass("has-error"),c.parents(".wpcf7-form").hasClass("form-inline")||(c.find("span.wpcf7-not-valid-tip").remove(),c.parents(".wpcf7-form").hasClass("form-horizontal")?c.children("div").append('<span class="help-block wpcf7-not-valid-tip">'+b+"</span>"):c.append('<span class="help-block wpcf7-not-valid-tip">'+b+"</span>"),c.slideDown("fast"),c.is(".use-floating-validation-tip *")&&(a(".wpcf7-not-valid-tip",c).mouseover(function(){a(this).wpcf7FadeOut()}),a(":input",c).focus(function(){a(".wpcf7-not-valid-tip",c).not(":hidden").wpcf7FadeOut()})))})},a.fn.wpcf7RefillQuiz=function(b){return this.each(function(){var c=a(this);a.each(b,function(a,b){c.find(':input[name="'+a+'"]').clearFields(),c.find(':input[name="'+a+'"]').siblings("p.wpcf7-quiz-label").text(b[0]),c.find('input:hidden[name="_wpcf7_quiz_answer_'+a+'"]').attr("value",b[1])})})},a.fn.wpcf7ClearResponseOutput=function(){return this.each(function(){var b=a(this).find("div.wpcf7-response-output .close");a(this).find("div.wpcf7-response-output").hide().empty().removeClass("wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked alert-warning alert-success alert-danger").removeAttr("role"),0<b.length&&a(this).find("div.wpcf7-response-output").append(b),a(this).find("div.form-group").removeClass("has-error"),a(this).find("span.wpcf7-not-valid-tip").remove(),a(this).find("img.ajax-loader").css({visibility:"hidden"})})}}(jQuery);
bootstrap-for-contact-form-7.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Bootstrap for Contact Form 7
4
  Plugin URI: http://wordpress.org/plugins/bootstrap-for-contact-form-7/
5
  Description: This plugin modifies the output of the popular Contact Form 7 plugin to be styled in compliance with themes using the Bootstrap CSS framework.
6
- Version: 1.3.0
7
  Author: Felix Arntz
8
  Author URI: http://leaves-and-love.net
9
  License: GNU General Public License v3
@@ -13,7 +13,7 @@ Tags: wordpress, plugin, contact form 7, wpcf7, bootstrap, bootstrap 3, bootstra
13
  */
14
  /**
15
  * @package CF7BS
16
- * @version 1.3.0
17
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
18
  */
19
 
@@ -22,7 +22,7 @@ if ( ! defined( 'WPCF7_AUTOP' ) ) {
22
  }
23
 
24
  function cf7bs_maybe_init() {
25
- define( 'CF7BS_VERSION', '1.3.0' );
26
  define( 'CF7BS_MAINFILE', __FILE__ );
27
  define( 'CF7BS_PATH', untrailingslashit( plugin_dir_path( CF7BS_MAINFILE ) ) );
28
  define( 'CF7BS_URL', untrailingslashit( plugin_dir_url( CF7BS_MAINFILE ) ) );
3
  Plugin Name: Bootstrap for Contact Form 7
4
  Plugin URI: http://wordpress.org/plugins/bootstrap-for-contact-form-7/
5
  Description: This plugin modifies the output of the popular Contact Form 7 plugin to be styled in compliance with themes using the Bootstrap CSS framework.
6
+ Version: 1.3.1
7
  Author: Felix Arntz
8
  Author URI: http://leaves-and-love.net
9
  License: GNU General Public License v3
13
  */
14
  /**
15
  * @package CF7BS
16
+ * @version 1.3.1
17
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
18
  */
19
 
22
  }
23
 
24
  function cf7bs_maybe_init() {
25
+ define( 'CF7BS_VERSION', '1.3.1' );
26
  define( 'CF7BS_MAINFILE', __FILE__ );
27
  define( 'CF7BS_PATH', untrailingslashit( plugin_dir_path( CF7BS_MAINFILE ) ) );
28
  define( 'CF7BS_URL', untrailingslashit( plugin_dir_url( CF7BS_MAINFILE ) ) );
changelog.txt CHANGED
@@ -1,5 +1,11 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
3
  = 1.3.0 =
4
  * Added: the new Google reCAPTCHA shortcode is now supported
5
  * Enhanced: added an additional filter to adjust form field arguments
1
  == Changelog ==
2
 
3
+ = 1.3.1 =
4
+ * Enhanced: alerts can now be made dismissible by defining the constant `CF7BS_ALERT_DISMISSIBLE`
5
+ * Fixed: properly add `for` attributes to labels for checkbox and radio groups for accessibility
6
+ * Fixed: wrapped checkbox and radio groups with `<fieldset>` for accessibility; needs to be manually enabled by defining the constant `CF7BS_FIELDSET_WRAP` (because of possible backwards compatibility issues with styling)
7
+ * Fixed: ID is no longer created for button groups which have an empty ID specified
8
+
9
  = 1.3.0 =
10
  * Added: the new Google reCAPTCHA shortcode is now supported
11
  * Enhanced: added an additional filter to adjust form field arguments
classes/CF7BS_Alert.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
@@ -29,7 +29,8 @@ class CF7BS_Alert extends CF7BS_Component {
29
 
30
  $output .= '<div class="' . esc_attr( $class ) . '"' . ( $hide ? ' style="display:none;"' : '' ) . '>';
31
  if ( $dismissible ) {
32
- $output .= '<button class="close" data-dismiss="alert" type="button">&times;</button>';
 
33
  }
34
  }
35
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
29
 
30
  $output .= '<div class="' . esc_attr( $class ) . '"' . ( $hide ? ' style="display:none;"' : '' ) . '>';
31
  if ( $dismissible ) {
32
+ // do not add `data-dismiss="alert"` here so that Bootstrap JS does not handle this
33
+ $output .= '<button class="close" type="button">&times;</button>';
34
  }
35
  }
36
 
classes/CF7BS_Button.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
@@ -31,7 +31,9 @@ class CF7BS_Button extends CF7BS_Component {
31
  $class .= ' btn-' . $sizes[ $size ];
32
  }
33
 
 
34
  if ( ! empty( $id ) ) {
 
35
  $id = ' id="' . esc_attr( $id ) . '"';
36
  }
37
 
@@ -43,12 +45,12 @@ class CF7BS_Button extends CF7BS_Component {
43
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
44
  $title = esc_html( $title );
45
  }
46
- $output .= '<label class="' . esc_attr( $class ) . '"><input' . $id . $name . ' type="checkbox" value="' . esc_attr( $value ) . '"' . $append . '>' . $title . '</label>';
47
  } elseif ( 'radio' == $mode ) {
48
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
49
  $title = esc_html( $title );
50
  }
51
- $output .= '<label class="' . esc_attr( $class ) . '"><input' . $id . $name . ' type="radio" value="' . esc_attr( $value ) . '"' . $append . '>' . $title . '</label>';
52
  } else {
53
  $wrapper_class = array();
54
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
31
  $class .= ' btn-' . $sizes[ $size ];
32
  }
33
 
34
+ $for = '';
35
  if ( ! empty( $id ) ) {
36
+ $for = ' for="' . esc_attr( $id ) . '"';
37
  $id = ' id="' . esc_attr( $id ) . '"';
38
  }
39
 
45
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
46
  $title = esc_html( $title );
47
  }
48
+ $output .= '<label' . $for . ' class="' . esc_attr( $class ) . '"><input' . $id . $name . ' type="checkbox" value="' . esc_attr( $value ) . '"' . $append . '>' . $title . '</label>';
49
  } elseif ( 'radio' == $mode ) {
50
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
51
  $title = esc_html( $title );
52
  }
53
+ $output .= '<label' . $for . ' class="' . esc_attr( $class ) . '"><input' . $id . $name . ' type="radio" value="' . esc_attr( $value ) . '"' . $append . '>' . $title . '</label>';
54
  } else {
55
  $wrapper_class = array();
56
 
classes/CF7BS_Button_Group.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
classes/CF7BS_Component.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
classes/CF7BS_Form_Field.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
@@ -140,13 +140,17 @@ class CF7BS_Form_Field extends CF7BS_Component {
140
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
141
  $title = esc_html( $title );
142
  }
 
143
  $output .= '<div class="checkbox' . $wrapper_class . '">';
144
- $output .= '<label>';
145
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id ) . '"' : '' ) . ' name="' . esc_attr( $name ) . '" type="checkbox" value="' . esc_attr( $curval ) . '"' . cf7bs_checked( $value, $curval, false ) . ( is_int( $tabindex ) ? ' tabindex="' . $tabindex . '"' : '' ) . $append . '>';
146
  $output .= $title;
147
  $output .= '</label>';
148
  $output .= '</div>';
149
  } else {
 
 
 
150
  if ( 'buttons' == $group_layout ) {
151
  $button_group = new CF7BS_Button_Group( array(
152
  'mode' => 'checkbox',
@@ -158,7 +162,7 @@ class CF7BS_Form_Field extends CF7BS_Component {
158
  $is_checked = cf7bs_multiple_checked( $value, $curval, false );
159
  $output .= $button_group->insert_button( array(
160
  'type' => $group_type,
161
- 'id' => $id . ( $counter + 1 ),
162
  'name' => $name . '[]',
163
  'class' => $class,
164
  'value' => $curval,
@@ -174,7 +178,7 @@ class CF7BS_Form_Field extends CF7BS_Component {
174
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
175
  $title = esc_html( $title );
176
  }
177
- $output .= '<label class="checkbox-inline">';
178
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . ' name="' . esc_attr( $name . '[]' ) . '" type="checkbox" value="' . esc_attr( $curval ) . '"' . cf7bs_multiple_checked( $value, $curval, false ) . ( $tabindex >= 0 ? ' tabindex="' . ( $tabindex + $counter ) . '"' : '' ) . $append . '>';
179
  $output .= $title;
180
  $output .= '</label>';
@@ -187,7 +191,7 @@ class CF7BS_Form_Field extends CF7BS_Component {
187
  $title = esc_html( $title );
188
  }
189
  $output .= '<div class="checkbox">';
190
- $output .= '<label>';
191
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . ' name="' . esc_attr( $name . '[]' ) . '" type="checkbox" value="' . esc_attr( $curval ) . '"' . cf7bs_multiple_checked( $value, $curval, false ) . ( is_int( $tabindex ) ? ' tabindex="' . ( $tabindex + $counter ) . '"' : '' ) . $append . '>';
192
  $output .= $title;
193
  $output .= '</label>';
@@ -195,6 +199,9 @@ class CF7BS_Form_Field extends CF7BS_Component {
195
  $counter++;
196
  }
197
  }
 
 
 
198
  }
199
  break;
200
  case 'select':
@@ -219,12 +226,15 @@ class CF7BS_Form_Field extends CF7BS_Component {
219
  $title = esc_html( $title );
220
  }
221
  $output .= '<div class="radio' . $wrapper_class . '">';
222
- $output .= '<label>';
223
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id ) . '"' : '' ) . ' name="' . esc_attr( $name ) . '" type="radio" value="' . esc_attr( $curval ) . '"' . cf7bs_checked( $value, $curval, false ) . ( is_int( $tabindex ) ? ' tabindex="' . $tabindex . '"' : '' ) . $append . '>';
224
  $output .= $title;
225
  $output .= '</label>';
226
  $output .= '</div>';
227
  } else {
 
 
 
228
  if ( 'buttons' == $group_layout ) {
229
  $button_group = new CF7BS_Button_Group( array(
230
  'mode' => 'radio',
@@ -236,7 +246,7 @@ class CF7BS_Form_Field extends CF7BS_Component {
236
  $is_checked = cf7bs_checked( $value, $curval, false );
237
  $output .= $button_group->insert_button( array(
238
  'type' => $group_type,
239
- 'id' => $id . ( $counter + 1 ),
240
  'name' => $name,
241
  'class' => $class,
242
  'value' => $curval,
@@ -252,7 +262,7 @@ class CF7BS_Form_Field extends CF7BS_Component {
252
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
253
  $title = esc_html( $title );
254
  }
255
- $output .= '<label class="radio-inline">';
256
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . ' name="' . esc_attr( $name ) . '" type="radio" value="' . esc_attr( $curval ) . '"' . cf7bs_checked( $value, $curval, false ) . ( $tabindex >= 0 ? ' tabindex="' . ( $tabindex + $counter ) . '"' : '' ) . $append . '>';
257
  $output .= $title;
258
  $output .= '</label>';
@@ -265,7 +275,7 @@ class CF7BS_Form_Field extends CF7BS_Component {
265
  $title = esc_html( $title );
266
  }
267
  $output .= '<div class="radio">';
268
- $output .= '<label>';
269
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . ' name="' . esc_attr( $name ) . '" type="radio" value="' . esc_attr( $curval ) . '"' . cf7bs_checked( $value, $curval, false ) . ( is_int( $tabindex ) ? ' tabindex="' . ( $tabindex + $counter ) . '"' : '' ) . $append . '>';
270
  $output .= $title;
271
  $output .= '</label>';
@@ -273,6 +283,9 @@ class CF7BS_Form_Field extends CF7BS_Component {
273
  $counter++;
274
  }
275
  }
 
 
 
276
  }
277
  break;
278
  case 'textarea':
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
140
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
141
  $title = esc_html( $title );
142
  }
143
+
144
  $output .= '<div class="checkbox' . $wrapper_class . '">';
145
+ $output .= '<label '. ( ! empty( $id ) ? ' for="' . esc_attr( $id ) . '"' : '' ) .'>' ;
146
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id ) . '"' : '' ) . ' name="' . esc_attr( $name ) . '" type="checkbox" value="' . esc_attr( $curval ) . '"' . cf7bs_checked( $value, $curval, false ) . ( is_int( $tabindex ) ? ' tabindex="' . $tabindex . '"' : '' ) . $append . '>';
147
  $output .= $title;
148
  $output .= '</label>';
149
  $output .= '</div>';
150
  } else {
151
+ if ( defined( 'CF7BS_FIELDSET_WRAP' ) && CF7BS_FIELDSET_WRAP ) {
152
+ $output .= '<fieldset>';
153
+ }
154
  if ( 'buttons' == $group_layout ) {
155
  $button_group = new CF7BS_Button_Group( array(
156
  'mode' => 'checkbox',
162
  $is_checked = cf7bs_multiple_checked( $value, $curval, false );
163
  $output .= $button_group->insert_button( array(
164
  'type' => $group_type,
165
+ 'id' => ! empty( $id ) ? $id . ( $counter + 1 ) : '',
166
  'name' => $name . '[]',
167
  'class' => $class,
168
  'value' => $curval,
178
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
179
  $title = esc_html( $title );
180
  }
181
+ $output .= '<label class="checkbox-inline" ' . ( ! empty( $id ) ? ' for="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) .'>';
182
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . ' name="' . esc_attr( $name . '[]' ) . '" type="checkbox" value="' . esc_attr( $curval ) . '"' . cf7bs_multiple_checked( $value, $curval, false ) . ( $tabindex >= 0 ? ' tabindex="' . ( $tabindex + $counter ) . '"' : '' ) . $append . '>';
183
  $output .= $title;
184
  $output .= '</label>';
191
  $title = esc_html( $title );
192
  }
193
  $output .= '<div class="checkbox">';
194
+ $output .= '<label ' . ( ! empty( $id ) ? ' for="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . '>';
195
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . ' name="' . esc_attr( $name . '[]' ) . '" type="checkbox" value="' . esc_attr( $curval ) . '"' . cf7bs_multiple_checked( $value, $curval, false ) . ( is_int( $tabindex ) ? ' tabindex="' . ( $tabindex + $counter ) . '"' : '' ) . $append . '>';
196
  $output .= $title;
197
  $output .= '</label>';
199
  $counter++;
200
  }
201
  }
202
+ if ( defined( 'CF7BS_FIELDSET_WRAP' ) && CF7BS_FIELDSET_WRAP ) {
203
+ $output .= '</fieldset>';
204
+ }
205
  }
206
  break;
207
  case 'select':
226
  $title = esc_html( $title );
227
  }
228
  $output .= '<div class="radio' . $wrapper_class . '">';
229
+ $output .= '<label ' . ( ! empty( $id ) ? ' for="' . esc_attr( $id ) . '"' : '' ) . '>';
230
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id ) . '"' : '' ) . ' name="' . esc_attr( $name ) . '" type="radio" value="' . esc_attr( $curval ) . '"' . cf7bs_checked( $value, $curval, false ) . ( is_int( $tabindex ) ? ' tabindex="' . $tabindex . '"' : '' ) . $append . '>';
231
  $output .= $title;
232
  $output .= '</label>';
233
  $output .= '</div>';
234
  } else {
235
+ if ( defined( 'CF7BS_FIELDSET_WRAP' ) && CF7BS_FIELDSET_WRAP ) {
236
+ $output .= '<fieldset>';
237
+ }
238
  if ( 'buttons' == $group_layout ) {
239
  $button_group = new CF7BS_Button_Group( array(
240
  'mode' => 'radio',
246
  $is_checked = cf7bs_checked( $value, $curval, false );
247
  $output .= $button_group->insert_button( array(
248
  'type' => $group_type,
249
+ 'id' => ! empty( $id ) ? $id . ( $counter + 1 ) : '',
250
  'name' => $name,
251
  'class' => $class,
252
  'value' => $curval,
262
  if ( false === strpos( $title, 'wpcf7-free-text' ) ) {
263
  $title = esc_html( $title );
264
  }
265
+ $output .= '<label class="radio-inline"' . ( ! empty( $id ) ? ' for="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . '>';
266
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . ' name="' . esc_attr( $name ) . '" type="radio" value="' . esc_attr( $curval ) . '"' . cf7bs_checked( $value, $curval, false ) . ( $tabindex >= 0 ? ' tabindex="' . ( $tabindex + $counter ) . '"' : '' ) . $append . '>';
267
  $output .= $title;
268
  $output .= '</label>';
275
  $title = esc_html( $title );
276
  }
277
  $output .= '<div class="radio">';
278
+ $output .= '<label' . ( ! empty( $id ) ? ' for="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . '>';
279
  $output .= '<input' . $input_class . ( ! empty( $id ) ? ' id="' . esc_attr( $id . ( $counter + 1 ) ) . '"' : '' ) . ' name="' . esc_attr( $name ) . '" type="radio" value="' . esc_attr( $curval ) . '"' . cf7bs_checked( $value, $curval, false ) . ( is_int( $tabindex ) ? ' tabindex="' . ( $tabindex + $counter ) . '"' : '' ) . $append . '>';
280
  $output .= $title;
281
  $output .= '</label>';
283
  $counter++;
284
  }
285
  }
286
+ if ( defined( 'CF7BS_FIELDSET_WRAP' ) && CF7BS_FIELDSET_WRAP ) {
287
+ $output .= '</fieldset>';
288
+ }
289
  }
290
  break;
291
  case 'textarea':
composer.json DELETED
@@ -1,38 +0,0 @@
1
- {
2
- "name": "felixarntz/bootstrap-for-contact-form-7",
3
- "description": "This plugin modifies the output of the popular Contact Form 7 plugin to be styled in compliance with themes using the Bootstrap CSS framework.",
4
- "version": "1.3.0",
5
- "license": "GPL-3.0",
6
- "type": "wordpress-plugin",
7
- "keywords": [
8
- "wordpress",
9
- "plugin",
10
- "contact form 7",
11
- "wpcf7",
12
- "bootstrap",
13
- "bootstrap 3",
14
- "bootstrap framework",
15
- "addon",
16
- "contact form 7 addon",
17
- "contact form",
18
- "cf7bs",
19
- "css"
20
- ],
21
- "homepage": "http://wordpress.org/plugins/bootstrap-for-contact-form-7/",
22
- "authors": [
23
- {
24
- "name": "Felix Arntz",
25
- "email": "felix-arntz@leaves-and-love.net",
26
- "homepage": "http://leaves-and-love.net",
27
- "role": "Developer"
28
- }
29
- ],
30
- "support": {
31
- "email": "felix-arntz@leaves-and-love.net",
32
- "issues": "https://github.com/felixarntz/bootstrap-for-contact-form-7/issues"
33
- },
34
- "require": {
35
- "php": ">=5.3.0",
36
- "composer/installers": "~1.0"
37
- }
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
modifications.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
@@ -164,8 +164,9 @@ function cf7bs_form_response_output( $output, $class, $content, $form_obj ) {
164
  }
165
 
166
  $alert = new CF7BS_Alert( array(
167
- 'type' => $type,
168
- 'class' => $class,
 
169
  ) );
170
 
171
  return $alert->open( false ) . esc_html( $content ) . $alert->close( false );
@@ -174,8 +175,9 @@ add_filter( 'wpcf7_form_response_output', 'cf7bs_form_response_output', 10, 4 );
174
 
175
  function cf7bs_validation_error( $output, $name, $form_obj ) {
176
  $alert = new CF7BS_Alert( array(
177
- 'type' => 'warning',
178
- 'class' => 'wpcf7-not-valid-tip',
 
179
  ) );
180
  $output = str_replace( '<span role="alert" class="wpcf7-not-valid-tip">', $alert->open( false ), $output );
181
  $output = str_replace( '</span>', $alert->close( false ), $output );
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
164
  }
165
 
166
  $alert = new CF7BS_Alert( array(
167
+ 'type' => $type,
168
+ 'class' => $class,
169
+ 'dismissible' => defined( 'CF7BS_ALERT_DISMISSIBLE' ) && CF7BS_ALERT_DISMISSIBLE,
170
  ) );
171
 
172
  return $alert->open( false ) . esc_html( $content ) . $alert->close( false );
175
 
176
  function cf7bs_validation_error( $output, $name, $form_obj ) {
177
  $alert = new CF7BS_Alert( array(
178
+ 'type' => 'warning',
179
+ 'class' => 'wpcf7-not-valid-tip',
180
+ 'dismissible' => defined( 'CF7BS_ALERT_DISMISSIBLE' ) && CF7BS_ALERT_DISMISSIBLE,
181
  ) );
182
  $output = str_replace( '<span role="alert" class="wpcf7-not-valid-tip">', $alert->open( false ), $output );
183
  $output = str_replace( '</span>', $alert->close( false ), $output );
modules/acceptance.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/checkbox.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/count.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/date.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/file.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/number.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/quiz.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/really-simple-captcha.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/recaptcha.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/select.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/submit.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/text.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
modules/textarea.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package CF7BS
4
- * @version 1.3.0
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
1
  <?php
2
  /**
3
  * @package CF7BS
4
+ * @version 1.3.1
5
  * @author Felix Arntz <felix-arntz@leaves-and-love.net>
6
  */
7
 
package.json DELETED
@@ -1,49 +0,0 @@
1
- {
2
- "name": "bootstrap-for-contact-form-7",
3
- "pluginName": "Bootstrap for Contact Form 7",
4
- "version": "1.3.0",
5
- "description": "This plugin modifies the output of the popular Contact Form 7 plugin to be styled in compliance with themes using the Bootstrap CSS framework.",
6
- "keywords": [
7
- "wordpress",
8
- "plugin",
9
- "contact form 7",
10
- "wpcf7",
11
- "bootstrap",
12
- "bootstrap 3",
13
- "bootstrap framework",
14
- "addon",
15
- "contact form 7 addon",
16
- "contact form",
17
- "cf7bs",
18
- "css"
19
- ],
20
- "author": {
21
- "name": "Felix Arntz",
22
- "email": "felix-arntz@leaves-and-love.net",
23
- "url": "http://leaves-and-love.net"
24
- },
25
- "homepage": "http://wordpress.org/plugins/bootstrap-for-contact-form-7/",
26
- "repository": {
27
- "type": "git",
28
- "url": "git://github.com/felixarntz/bootstrap-for-contact-form-7.git"
29
- },
30
- "bugs": {
31
- "url" : "https://github.com/felixarntz/bootstrap-for-contact-form-7/issues"
32
- },
33
- "license": {
34
- "type": "GPL-3.0",
35
- "name": "GNU General Public License v3",
36
- "url": "http://www.gnu.org/licenses/gpl-3.0.html"
37
- },
38
- "engines": {
39
- "node": ">= 0.10.0"
40
- },
41
- "devDependencies": {
42
- "grunt": "~0.4.5",
43
- "grunt-contrib-clean": "~0.6.0",
44
- "grunt-contrib-jshint": "~0.10.0",
45
- "grunt-contrib-uglify": "~0.5.0",
46
- "grunt-banner": "~0.2.3",
47
- "grunt-text-replace": "~0.4.0"
48
- }
49
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -7,9 +7,9 @@ Author: Felix Arntz
7
  Donate link: http://leaves-and-love.net/wordpress-plugins/
8
  Contributors: flixos90
9
  Requires at least: 3.6
10
- Tested up to: 4.4.1
11
- Stable tag: 1.3.0
12
- Version: 1.3.0
13
  License: GPL v3
14
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
15
  Tags: wordpress, plugin, contact form 7, wpcf7, bootstrap, bootstrap 3, bootstrap framework, addon, contact form 7 addon, contact form, cf7bs, css
@@ -109,6 +109,12 @@ If you're a developer and you have some ideas to improve the plugin or to solve
109
 
110
  == Changelog ==
111
 
 
 
 
 
 
 
112
  = 1.3.0 =
113
  * Added: the new Google reCAPTCHA shortcode is now supported
114
  * Enhanced: added an additional filter to adjust form field arguments
7
  Donate link: http://leaves-and-love.net/wordpress-plugins/
8
  Contributors: flixos90
9
  Requires at least: 3.6
10
+ Tested up to: 4.4.2
11
+ Stable tag: 1.3.1
12
+ Version: 1.3.1
13
  License: GPL v3
14
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
15
  Tags: wordpress, plugin, contact form 7, wpcf7, bootstrap, bootstrap 3, bootstrap framework, addon, contact form 7 addon, contact form, cf7bs, css
109
 
110
  == Changelog ==
111
 
112
+ = 1.3.1 =
113
+ * Enhanced: alerts can now be made dismissible by defining the constant `CF7BS_ALERT_DISMISSIBLE`
114
+ * Fixed: properly add `for` attributes to labels for checkbox and radio groups for accessibility
115
+ * Fixed: wrapped checkbox and radio groups with `<fieldset>` for accessibility; needs to be manually enabled by defining the constant `CF7BS_FIELDSET_WRAP` (because of possible backwards compatibility issues with styling)
116
+ * Fixed: ID is no longer created for button groups which have an empty ID specified
117
+
118
  = 1.3.0 =
119
  * Added: the new Google reCAPTCHA shortcode is now supported
120
  * Enhanced: added an additional filter to adjust form field arguments