Contact Form 7 Datepicker - Version 2.1

Version Description

  • Added inline option
  • Fixed tag generator
  • Fixed date format when localized
Download this release

Release Info

Developer shockware
Plugin Icon wp plugin Contact Form 7 Datepicker
Version 2.1
Comparing to
See all releases

Code changes from version 2.0 to 2.1

contact-form-7-datepicker.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Contact Form 7 Datepicker
4
  Plugin URI: https://github.com/relu/contact-form-7-datepicker/
5
  Description: Easily add a date field using jQuery UI's datepicker to your CF7 forms. This plugin depends on Contact Form 7.
6
  Author: Aurel Canciu
7
- Version: 2.0
8
  Author URI: https://github.com/relu/
9
  */
10
 
4
  Plugin URI: https://github.com/relu/contact-form-7-datepicker/
5
  Description: Easily add a date field using jQuery UI's datepicker to your CF7 forms. This plugin depends on Contact Form 7.
6
  Author: Aurel Canciu
7
+ Version: 2.1
8
  Author URI: https://github.com/relu/
9
  */
10
 
date-module.php CHANGED
@@ -42,38 +42,43 @@ class ContactForm7Datepicker_Date {
42
  if ($validation_error)
43
  $class_att .= ' wpcf7-not-valid';
44
 
 
 
45
  $dpOptions = array();
46
  foreach ($options as $option) {
47
- if (preg_match('%^id:([-_0-9a-z]+)$%i', $option, $matches)) {
48
  $id_att = $matches[1];
49
- } elseif (preg_match('%^class:([-_0-9a-z]+)$%i', $option, $matches)) {
50
  $class_att .= " $matches[1]";
51
- } elseif (preg_match('%^([0-9]*)[/x]([0-9]*)$%i', $option, $matches)) {
52
  $size_att = (int) $matches[1];
53
  $maxlen_att = (int) $matches[2];
54
  } elseif (preg_match('%^tabindex:(\d+)$%i', $option, $matches)) {
55
  $tabindex_att = (int) $matches[1];
56
- } elseif (preg_match('%^date-format:([-_/\.a-z0-9]+)$%i', $option, $matches)) {
57
  $dpOptions['dateFormat'] = str_replace('_', ' ', $matches[1]);
58
- } elseif (preg_match('%^(min|max)-date:([-_/\., 0-9a-z]+)$%i', $option, $matches)) {
59
  $dpOptions[$matches[1] . 'Date'] = $matches[2];
60
  } elseif (preg_match('%^first-day:(\d)$%', $option, $matches)) {
61
  $dpOptions['firstDay'] = (int) $matches[1];
62
- } elseif (preg_match('%^animate:([a-z]+)$%i', $option, $matches)) {
63
  $dpOptions['showAnim'] = $matches[1];
64
- } elseif (preg_match('%^change-month:(true|false)$%i', $option, $matches)) {
65
- $dpOptions['changeMonth'] = ('true' == $matches[1]);
66
- } elseif (preg_match('%^change-year:(true|false)$%i', $option, $matches)) {
67
- $dpOptions['changeYear'] = ('true' == $matches[1]);
68
- } elseif (preg_match('%^year-range:([\d]+)-?([\d]+)?$%', $option, $matches)) {
69
  $dpOptions['yearRange'] = "{$matches[1]}:{$matches[2]}";
70
- } elseif (preg_match('%^months:([\d]+)$%', $option, $matches)) {
71
  $dpOptions['numberOfMonths'] = (int) $matches[1];
72
- } elseif (preg_match('%^buttons:(true|false)$%', $option, $matches)) {
73
- $dpOptions['showButtonPanel'] = ('true' == $matches[1]);
 
 
 
74
  }
75
 
76
- do_action('cf7_datepicker_attr_match', $dpOptions, $option);
77
  }
78
 
79
  $value = reset($values);
@@ -107,19 +112,28 @@ class ContactForm7Datepicker_Date {
107
  if ($title_att)
108
  $atts .= ' title="' . trim(esc_attr($title_att)) . '"';
109
 
110
- $input = sprintf('<input type="text" name="%s" value="%s" %s/>',
 
 
 
 
111
  esc_attr($name),
112
  esc_attr($value),
113
- $atts
114
  );
115
 
116
- $dp = new CF7_DatePicker($name, $dpOptions);
 
 
 
 
 
117
 
118
  return sprintf('<span class="wpcf7-form-control-wrap %s">%s %s</span>%s',
119
  esc_attr($name),
120
  $input,
121
  $validation_error,
122
- $dp->generate_code()
123
  );
124
  }
125
 
42
  if ($validation_error)
43
  $class_att .= ' wpcf7-not-valid';
44
 
45
+ $inline = false;
46
+
47
  $dpOptions = array();
48
  foreach ($options as $option) {
49
+ if (preg_match('%^id:([-_\w\d]+)$%i', $option, $matches)) {
50
  $id_att = $matches[1];
51
+ } elseif (preg_match('%^class:([-_\w\d]+)$%i', $option, $matches)) {
52
  $class_att .= " $matches[1]";
53
+ } elseif (preg_match('%^(\d*)[/x](\d*)$%i', $option, $matches)) {
54
  $size_att = (int) $matches[1];
55
  $maxlen_att = (int) $matches[2];
56
  } elseif (preg_match('%^tabindex:(\d+)$%i', $option, $matches)) {
57
  $tabindex_att = (int) $matches[1];
58
+ } elseif (preg_match('%^date-format:([-_/\.\w\d]+)$%i', $option, $matches)) {
59
  $dpOptions['dateFormat'] = str_replace('_', ' ', $matches[1]);
60
+ } elseif (preg_match('%^(min|max)-date:([-_/\.\w\d]+)$%i', $option, $matches)) {
61
  $dpOptions[$matches[1] . 'Date'] = $matches[2];
62
  } elseif (preg_match('%^first-day:(\d)$%', $option, $matches)) {
63
  $dpOptions['firstDay'] = (int) $matches[1];
64
+ } elseif (preg_match('%^animate:(\w+)$%i', $option, $matches)) {
65
  $dpOptions['showAnim'] = $matches[1];
66
+ } elseif (preg_match('%^change-month$%i', $option, $matches)) {
67
+ $dpOptions['changeMonth'] = true;
68
+ } elseif (preg_match('%^change-year$%i', $option, $matches)) {
69
+ $dpOptions['changeYear'] = true;
70
+ } elseif (preg_match('%^year-range:(\d+)-?(\d+)?$%', $option, $matches)) {
71
  $dpOptions['yearRange'] = "{$matches[1]}:{$matches[2]}";
72
+ } elseif (preg_match('%^months:(\d+)$%', $option, $matches)) {
73
  $dpOptions['numberOfMonths'] = (int) $matches[1];
74
+ } elseif (preg_match('%^buttons$%', $option, $matches)) {
75
+ $dpOptions['showButtonPanel'] = true;
76
+ } elseif (preg_match('%inline$%', $option, $matches)) {
77
+ $inline = true;
78
+ $dpOptions['altField'] = "#{$name}_alt";
79
  }
80
 
81
+ do_action_ref_array('cf7_datepicker_attr_match', array($dpOptions), $option);
82
  }
83
 
84
  $value = reset($values);
112
  if ($title_att)
113
  $atts .= ' title="' . trim(esc_attr($title_att)) . '"';
114
 
115
+ $input_type = $inline ? 'hidden' : 'text';
116
+ $input_atts = $inline ? "id=\"{$name}_alt\"" : $atts;
117
+
118
+ $input = sprintf('<input type="%s" name="%s" value="%s" %s/>',
119
+ $input_type,
120
  esc_attr($name),
121
  esc_attr($value),
122
+ $input_atts
123
  );
124
 
125
+ if ($inline)
126
+ $input .= sprintf('<div id="%s_datepicker" %s></div>', $name, $atts);
127
+
128
+ $dp_selector = $inline ? '#' . $name . '_datepicker' : $name;
129
+
130
+ $dp = new CF7_DatePicker($dp_selector, $dpOptions);
131
 
132
  return sprintf('<span class="wpcf7-form-control-wrap %s">%s %s</span>%s',
133
  esc_attr($name),
134
  $input,
135
  $validation_error,
136
+ $dp->generate_code($inline)
137
  );
138
  }
139
 
date-tag-generator.php CHANGED
@@ -59,11 +59,12 @@
59
  <tr>
60
  <td>
61
  <code>first-day</code><br />
62
- <input type="text" name="first-day" class="option" style="display: none" />
63
- <select id="first-day">
64
- <option value="0" selected="selected"><?php _e('Sunday'); ?></option>
65
- <option value="1"><?php _e('Monday'); ?></option>
66
- </select>
 
67
  </td>
68
  <td>
69
  <code>animate</code><br />
@@ -74,44 +75,35 @@
74
 
75
  <tr>
76
  <td>
77
- <code>change-month</code><br />
78
- <input type="text" name="change-month" class="option" style="display: none" />
79
- <select id="change-month">
80
- <option value="true"><?php _e('True'); ?></option>
81
- <option value="false"><?php _e('False'); ?></option>
82
- </select>
83
  </td>
84
  </tr>
85
 
86
  <tr>
87
  <td>
88
- <code>change-year</code><br />
89
- <input type="text" name="change-year" class="option" style="display: none" />
90
- <select id="change-year">
91
- <option value="true"><?php _e('True'); ?></option>
92
- <option value="false" selected="selected"><?php _e('False'); ?></option>
93
- </select>
94
  </td>
95
  <td>
96
  <code>year-range</code><br />
97
- <input type="text" name="year-range" class="option" style="display: none"/>
98
- <input size="4" type="text" name="year-range-start" class="numeric" /> -
99
- <input size="4"type="text" name="year-range-end" class="numeric" />
100
  </td>
101
  </tr>
102
 
103
  <tr>
104
  <td>
105
  <code>months</code><br />
106
- <input type="text" size="2" name="months" class="option"/>
 
 
 
107
  </td>
 
 
 
108
  <td>
109
- <code>buttons</code><br />
110
- <input type="text" name="buttons" class="option" style="display: none" />
111
- <select id="buttons">
112
- <option value="true"><?php _e('True'); ?></option>
113
- <option value="false" selected="selected"><?php _e('False'); ?></option>
114
- </select>
115
  </td>
116
  </tr>
117
 
@@ -134,23 +126,23 @@
134
 
135
  <script type="text/javascript">
136
  jQuery(function($){
137
- $('select').change(function(){
138
  var $this = $(this),
139
  value = $this.val();
140
 
141
  if (! value)
142
  return;
143
 
144
- $('input[name="'+$this.attr('id')+'"]').val(value);
145
  });
146
 
147
- $('input[name="year-range-start"], input[name="year-range-end"]').change(function(){
148
  var value = $('input[name="year-range-start"]').val() + '-' + $('input[name="year-range-end"]').val();
149
 
150
  if (! value)
151
  return;
152
 
153
- $('input[name="year-range"]').val(value);
154
  });
155
  });
156
  </script>
59
  <tr>
60
  <td>
61
  <code>first-day</code><br />
62
+ <input type="checkbox" id="first-day-sunday" name="first-day:0" class="option exclusive" />
63
+ <label for="first-day-sunday"><?php _e('Sunday'); ?></label>
64
+ &nbsp;&nbsp;
65
+
66
+ <input type="checkbox" value="1" id="first-day-monday" name="first-day:1" class="option exclusive" />
67
+ <label for="first-day-monday"><?php _e('Monday'); ?></label>
68
  </td>
69
  <td>
70
  <code>animate</code><br />
75
 
76
  <tr>
77
  <td>
78
+ <label><code>change-month</code> <input type="checkbox" name="change-month" id="change-month" class="option" /></label>
 
 
 
 
 
79
  </td>
80
  </tr>
81
 
82
  <tr>
83
  <td>
84
+ <label><code>change-year</code> <input type="checkbox" name="change-year" id="change-year" class="option" /></label>
 
 
 
 
 
85
  </td>
86
  <td>
87
  <code>year-range</code><br />
88
+ <input type="text" id="year-range" name="year-range" class="option" style="display: none;" />
89
+ <input size="4" type="text" name="year-range-start" class="year-range numeric" /> -
90
+ <input size="4"type="text" name="year-range-end" class="year-range numeric" />
91
  </td>
92
  </tr>
93
 
94
  <tr>
95
  <td>
96
  <code>months</code><br />
97
+ <input type="text" size="2" name="months" class="option numeric"/>
98
+ </td>
99
+ <td>
100
+ <label><code>buttons</code> <input type="checkbox" name="buttons" class="option" /></label>
101
  </td>
102
+ </tr>
103
+
104
+ <tr>
105
  <td>
106
+ <label><code>inline</code> <input type="checkbox" name="inline" class="option" /></label>
 
 
 
 
 
107
  </td>
108
  </tr>
109
 
126
 
127
  <script type="text/javascript">
128
  jQuery(function($){
129
+ $(document).on('change', 'select', function(){
130
  var $this = $(this),
131
  value = $this.val();
132
 
133
  if (! value)
134
  return;
135
 
136
+ $('input[name="'+$this.attr('id')+'"]').val(value).trigger('change');
137
  });
138
 
139
+ $(document).on('keyup', '.year-range', function(){
140
  var value = $('input[name="year-range-start"]').val() + '-' + $('input[name="year-range-end"]').val();
141
 
142
  if (! value)
143
  return;
144
 
145
+ $('#year-range').val(value);
146
  });
147
  });
148
  </script>
datepicker.php CHANGED
@@ -110,8 +110,8 @@ class CF7_DatePicker {
110
  public function generate_code($inline = false) {
111
  $selector = ($inline) ? "$('$this->input_name')" : "$('input[name=\"{$this->input_name}\"]')";
112
 
113
- $out = "{$selector}.datepicker({$this->options_encode()});\n";
114
- $out .= self::_regionalize($selector);
115
 
116
  $out = "jQuery(function($){ $out });";
117
 
110
  public function generate_code($inline = false) {
111
  $selector = ($inline) ? "$('$this->input_name')" : "$('input[name=\"{$this->input_name}\"]')";
112
 
113
+ $out = self::_regionalize($selector);
114
+ $out .= "{$selector}.datepicker({$this->options_encode()});\n";
115
 
116
  $out = "jQuery(function($){ $out });";
117
 
readme.txt CHANGED
@@ -1,10 +1,11 @@
1
  === Plugin Name ===
2
  Contributors: shockware
3
- Donate link:
4
  Tags: wordpress, datepicker, calendar, contact form 7, forms, jqueryui
5
- Requires at least: WordPress 2.9
6
- Tested up to: WordPress 3.4.2
7
- Stable tag: 2.0
 
 
8
 
9
  Easily add a date field using jQuery UI's datepicker to your CF7 forms.
10
  This plugin depends on Contact Form 7.
@@ -33,6 +34,11 @@ You can [open an issue on github](https://github.com/relu/contact-form-7-datepic
33
 
34
  == Changelog ==
35
 
 
 
 
 
 
36
  = 2.0 =
37
  * Complete rewrite, using jquery-ui's datepicker
38
 
1
  === Plugin Name ===
2
  Contributors: shockware
 
3
  Tags: wordpress, datepicker, calendar, contact form 7, forms, jqueryui
4
+ Requires at least: 2.9
5
+ Tested up to: 3.5
6
+ Stable tag: 2.1
7
+ License: GPLv2 or later
8
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
  Easily add a date field using jQuery UI's datepicker to your CF7 forms.
11
  This plugin depends on Contact Form 7.
34
 
35
  == Changelog ==
36
 
37
+ = 2.1 =
38
+ * Added inline option
39
+ * Fixed tag generator
40
+ * Fixed date format when localized
41
+
42
  = 2.0 =
43
  * Complete rewrite, using jquery-ui's datepicker
44