Version Description
- Introduce wpcf7_verify_nonce() and wpcf7_create_nonce() for front-end use. This fixes the wrong nonce issue on cached pages.
- Preserve new line characters in form shortcode contents to bypass auto-p filter.
- Use [\r\n\t ] instead of [\s] in regex to prevent issues of checkbox/radio options containing some UTF-8 characters are dropped.
- Bug fixed: tag generator menu is incorrectly shown on WordPress 3.2.x.
- The jQuery Form Plugin (jquery.form.js) has been updated to 2.96.
- Translations for Latvian, Hebrew, German, and Japanese have been updated.
Download this release
Release Info
Developer | takayukister |
Plugin | Contact Form 7 |
Version | 3.1.1 |
Comparing to | |
See all releases |
Code changes from version 3.1 to 3.1.1
- admin/admin.php +28 -0
- includes/classes.php +9 -4
- includes/controller.php +2 -2
- includes/functions.php +29 -1
- includes/shortcodes.php +7 -5
- jquery.form.js +65 -36
- languages/wpcf7-de_DE.mo +0 -0
- languages/wpcf7-he_IL.mo +0 -0
- languages/wpcf7-ja.mo +0 -0
- languages/wpcf7-lv.mo +0 -0
- languages/wpcf7.pot +21 -21
- readme.txt +12 -3
- wp-contact-form-7.php +2 -2
admin/admin.php
CHANGED
@@ -169,6 +169,34 @@ function wpcf7_admin_enqueue_scripts() {
|
|
169 |
'tagGenerators' => $taggenerators ) );
|
170 |
}
|
171 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
function wpcf7_admin_management_page() {
|
173 |
$contact_forms = get_posts( array(
|
174 |
'numberposts' => -1,
|
169 |
'tagGenerators' => $taggenerators ) );
|
170 |
}
|
171 |
|
172 |
+
add_action( 'admin_print_footer_scripts', 'wpcf7_print_taggenerators_json', 20 );
|
173 |
+
|
174 |
+
function wpcf7_print_taggenerators_json() { // for backward compatibility
|
175 |
+
global $plugin_page, $wpcf7_tag_generators;
|
176 |
+
|
177 |
+
if ( ! version_compare( get_bloginfo( 'version' ), '3.3-dev', '<' ) )
|
178 |
+
return;
|
179 |
+
|
180 |
+
if ( ! isset( $plugin_page ) || 'wpcf7' != $plugin_page )
|
181 |
+
return;
|
182 |
+
|
183 |
+
$taggenerators = array();
|
184 |
+
|
185 |
+
foreach ( (array) $wpcf7_tag_generators as $name => $tg ) {
|
186 |
+
$taggenerators[$name] = array_merge(
|
187 |
+
(array) $tg['options'],
|
188 |
+
array( 'title' => $tg['title'], 'content' => $tg['content'] ) );
|
189 |
+
}
|
190 |
+
|
191 |
+
?>
|
192 |
+
<script type="text/javascript">
|
193 |
+
/* <![CDATA[ */
|
194 |
+
_wpcf7.tagGenerators = <?php echo json_encode( $taggenerators ) ?>;
|
195 |
+
/* ]]> */
|
196 |
+
</script>
|
197 |
+
<?php
|
198 |
+
}
|
199 |
+
|
200 |
function wpcf7_admin_management_page() {
|
201 |
$contact_forms = get_posts( array(
|
202 |
'numberposts' => -1,
|
includes/classes.php
CHANGED
@@ -82,7 +82,7 @@ class WPCF7_ContactForm {
|
|
82 |
'_wpcf7_unit_tag' => $this->unit_tag );
|
83 |
|
84 |
if ( WPCF7_VERIFY_NONCE )
|
85 |
-
$hidden_fields['_wpnonce'] =
|
86 |
|
87 |
$content = '';
|
88 |
|
@@ -222,9 +222,14 @@ class WPCF7_ContactForm {
|
|
222 |
continue;
|
223 |
|
224 |
$name = $fe['name'];
|
225 |
-
|
|
|
|
|
|
|
226 |
$value = $_POST[$name];
|
227 |
|
|
|
|
|
228 |
if ( WPCF7_USE_PIPE && is_a( $pipes, 'WPCF7_Pipes' ) && ! $pipes->zero() ) {
|
229 |
if ( is_array( $value) ) {
|
230 |
$new_value = array();
|
@@ -330,7 +335,7 @@ class WPCF7_ContactForm {
|
|
330 |
}
|
331 |
|
332 |
function verify_nonce() {
|
333 |
-
return
|
334 |
}
|
335 |
|
336 |
/* Mail */
|
@@ -484,7 +489,7 @@ class WPCF7_ContactForm {
|
|
484 |
$values = array();
|
485 |
|
486 |
foreach ( $tmp_settings as $setting ) {
|
487 |
-
if ( preg_match('/^([a-zA-Z0-9_]+)\
|
488 |
if ( $matches[1] != $name )
|
489 |
continue;
|
490 |
|
82 |
'_wpcf7_unit_tag' => $this->unit_tag );
|
83 |
|
84 |
if ( WPCF7_VERIFY_NONCE )
|
85 |
+
$hidden_fields['_wpnonce'] = wpcf7_create_nonce( $this->unit_tag );
|
86 |
|
87 |
$content = '';
|
88 |
|
222 |
continue;
|
223 |
|
224 |
$name = $fe['name'];
|
225 |
+
|
226 |
+
if ( ! isset( $_POST[$name] ) )
|
227 |
+
continue;
|
228 |
+
|
229 |
$value = $_POST[$name];
|
230 |
|
231 |
+
$pipes = $fe['pipes'];
|
232 |
+
|
233 |
if ( WPCF7_USE_PIPE && is_a( $pipes, 'WPCF7_Pipes' ) && ! $pipes->zero() ) {
|
234 |
if ( is_array( $value) ) {
|
235 |
$new_value = array();
|
335 |
}
|
336 |
|
337 |
function verify_nonce() {
|
338 |
+
return wpcf7_verify_nonce( $_POST['_wpnonce'], $_POST['_wpcf7_unit_tag'] );
|
339 |
}
|
340 |
|
341 |
/* Mail */
|
489 |
$values = array();
|
490 |
|
491 |
foreach ( $tmp_settings as $setting ) {
|
492 |
+
if ( preg_match('/^([a-zA-Z0-9_]+)[\t ]*:(.*)$/', $setting, $matches ) ) {
|
493 |
if ( $matches[1] != $name )
|
494 |
continue;
|
495 |
|
includes/controller.php
CHANGED
@@ -153,7 +153,7 @@ add_filter( 'widget_text', 'wpcf7_widget_text_filter', 9 );
|
|
153 |
function wpcf7_widget_text_filter( $content ) {
|
154 |
global $wpcf7;
|
155 |
|
156 |
-
if ( ! preg_match( '/\[\
|
157 |
return $content;
|
158 |
|
159 |
$wpcf7->widget_count += 1;
|
@@ -231,7 +231,7 @@ function wpcf7_enqueue_scripts() {
|
|
231 |
// so we need to deregister it and re-register the latest one
|
232 |
wp_deregister_script( 'jquery-form' );
|
233 |
wp_register_script( 'jquery-form', wpcf7_plugin_url( 'jquery.form.js' ),
|
234 |
-
array( 'jquery' ), '2.
|
235 |
|
236 |
$in_footer = true;
|
237 |
if ( 'header' === WPCF7_LOAD_JS )
|
153 |
function wpcf7_widget_text_filter( $content ) {
|
154 |
global $wpcf7;
|
155 |
|
156 |
+
if ( ! preg_match( '/\[[\r\n\t ]*contact-form(-7)?[\r\n\t ].*?\]/', $content ) )
|
157 |
return $content;
|
158 |
|
159 |
$wpcf7->widget_count += 1;
|
231 |
// so we need to deregister it and re-register the latest one
|
232 |
wp_deregister_script( 'jquery-form' );
|
233 |
wp_register_script( 'jquery-form', wpcf7_plugin_url( 'jquery.form.js' ),
|
234 |
+
array( 'jquery' ), '2.96', true );
|
235 |
|
236 |
$in_footer = true;
|
237 |
if ( 'header' === WPCF7_LOAD_JS )
|
includes/functions.php
CHANGED
@@ -186,7 +186,7 @@ function wpcf7_l10n() {
|
|
186 |
'sq' => __( 'Albanian', 'wpcf7' ),
|
187 |
'ar' => __( 'Arabic', 'wpcf7' ),
|
188 |
'hy_AM' => __( 'Armenian', 'wpcf7' ),
|
189 |
-
'az_AZ' => __( '
|
190 |
'bn_BD' => __( 'Bangla', 'wpcf7' ),
|
191 |
'be_BY' => __( 'Belarusian', 'wpcf7' ),
|
192 |
'bs' => __( 'Bosnian', 'wpcf7' ),
|
@@ -257,4 +257,32 @@ function wpcf7_ajax_loader() {
|
|
257 |
return apply_filters( 'wpcf7_ajax_loader', $url );
|
258 |
}
|
259 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260 |
?>
|
186 |
'sq' => __( 'Albanian', 'wpcf7' ),
|
187 |
'ar' => __( 'Arabic', 'wpcf7' ),
|
188 |
'hy_AM' => __( 'Armenian', 'wpcf7' ),
|
189 |
+
'az_AZ' => __( 'Azerbaijani', 'wpcf7' ),
|
190 |
'bn_BD' => __( 'Bangla', 'wpcf7' ),
|
191 |
'be_BY' => __( 'Belarusian', 'wpcf7' ),
|
192 |
'bs' => __( 'Bosnian', 'wpcf7' ),
|
257 |
return apply_filters( 'wpcf7_ajax_loader', $url );
|
258 |
}
|
259 |
|
260 |
+
/* Nonce functions: wpcf7_verify_nonce() and wpcf7_create_nonce()
|
261 |
+
* For front-end use only.
|
262 |
+
* Almost the same as wp_verify_nonce() and wp_create_nonce() except that $uid is always 0.
|
263 |
+
*/
|
264 |
+
|
265 |
+
function wpcf7_verify_nonce( $nonce, $action = -1 ) {
|
266 |
+
$i = wp_nonce_tick();
|
267 |
+
$uid = 0;
|
268 |
+
|
269 |
+
// Nonce generated 0-12 hours ago
|
270 |
+
if ( substr( wp_hash( $i . $action . $uid, 'nonce' ), -12, 10 ) == $nonce )
|
271 |
+
return 1;
|
272 |
+
|
273 |
+
// Nonce generated 12-24 hours ago
|
274 |
+
if ( substr( wp_hash( ( $i - 1 ) . $action . $uid, 'nonce' ), -12, 10 ) == $nonce )
|
275 |
+
return 2;
|
276 |
+
|
277 |
+
// Invalid nonce
|
278 |
+
return false;
|
279 |
+
}
|
280 |
+
|
281 |
+
function wpcf7_create_nonce( $action = -1 ) {
|
282 |
+
$i = wp_nonce_tick();
|
283 |
+
$uid = 0;
|
284 |
+
|
285 |
+
return substr( wp_hash( $i . $action . $uid, 'nonce' ), -12, 10 );
|
286 |
+
}
|
287 |
+
|
288 |
?>
|
includes/shortcodes.php
CHANGED
@@ -36,9 +36,11 @@ class WPCF7_ShortcodeManager {
|
|
36 |
return $m[0];
|
37 |
|
38 |
$tag = $m[2];
|
39 |
-
$attr = trim( preg_replace( '
|
40 |
$content = trim( $m[5] );
|
41 |
|
|
|
|
|
42 |
$result = $m[1] . '[' . $tag
|
43 |
. ( $attr ? ' ' . $attr : '' )
|
44 |
. ( $m[4] ? ' ' . $m[4] : '' )
|
@@ -71,7 +73,7 @@ class WPCF7_ShortcodeManager {
|
|
71 |
$tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
|
72 |
|
73 |
return '(\[?)'
|
74 |
-
. '\[(' . $tagregexp . ')(
|
75 |
. '(?:([^[]*?)\[\/\2\])?'
|
76 |
. '(\]?)';
|
77 |
}
|
@@ -125,7 +127,7 @@ class WPCF7_ShortcodeManager {
|
|
125 |
}
|
126 |
|
127 |
$content = trim( $m[5] );
|
128 |
-
$content = preg_replace( "/<br\
|
129 |
$scanned_tag['content'] = $content;
|
130 |
|
131 |
$scanned_tag = apply_filters( 'wpcf7_form_tag', $scanned_tag, $this->exec );
|
@@ -145,11 +147,11 @@ class WPCF7_ShortcodeManager {
|
|
145 |
$text = preg_replace( "/[\x{00a0}\x{200b}]+/u", " ", $text );
|
146 |
$text = stripcslashes( trim( $text ) );
|
147 |
|
148 |
-
$pattern = '%^([-+*=0-9a-zA-Z:.!?#$&@_/|\%\
|
149 |
|
150 |
if ( preg_match( $pattern, $text, $match ) ) {
|
151 |
if ( ! empty( $match[1] ) ) {
|
152 |
-
$atts['options'] = preg_split( '/[\
|
153 |
}
|
154 |
if ( ! empty( $match[2] ) ) {
|
155 |
preg_match_all( '/"[^"]*"|\'[^\']*\'/', $match[2], $matched_values );
|
36 |
return $m[0];
|
37 |
|
38 |
$tag = $m[2];
|
39 |
+
$attr = trim( preg_replace( '/[\r\n\t ]+/', ' ', $m[3] ) );
|
40 |
$content = trim( $m[5] );
|
41 |
|
42 |
+
$content = str_replace( "\n", '<WPPreserveNewline />', $content );
|
43 |
+
|
44 |
$result = $m[1] . '[' . $tag
|
45 |
. ( $attr ? ' ' . $attr : '' )
|
46 |
. ( $m[4] ? ' ' . $m[4] : '' )
|
73 |
$tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
|
74 |
|
75 |
return '(\[?)'
|
76 |
+
. '\[(' . $tagregexp . ')(?:[\r\n\t ](.*?))?(?:[\r\n\t ](\/))?\]'
|
77 |
. '(?:([^[]*?)\[\/\2\])?'
|
78 |
. '(\]?)';
|
79 |
}
|
127 |
}
|
128 |
|
129 |
$content = trim( $m[5] );
|
130 |
+
$content = preg_replace( "/<br[\r\n\t ]*\/?>$/m", '', $content );
|
131 |
$scanned_tag['content'] = $content;
|
132 |
|
133 |
$scanned_tag = apply_filters( 'wpcf7_form_tag', $scanned_tag, $this->exec );
|
147 |
$text = preg_replace( "/[\x{00a0}\x{200b}]+/u", " ", $text );
|
148 |
$text = stripcslashes( trim( $text ) );
|
149 |
|
150 |
+
$pattern = '%^([-+*=0-9a-zA-Z:.!?#$&@_/|\%\r\n\t ]*?)((?:[\r\n\t ]*"[^"]*"|[\r\n\t ]*\'[^\']*\')*)$%';
|
151 |
|
152 |
if ( preg_match( $pattern, $text, $match ) ) {
|
153 |
if ( ! empty( $match[1] ) ) {
|
154 |
+
$atts['options'] = preg_split( '/[\r\n\t ]+/', trim( $match[1] ) );
|
155 |
}
|
156 |
if ( ! empty( $match[2] ) ) {
|
157 |
preg_match_all( '/"[^"]*"|\'[^\']*\'/', $match[2], $matched_values );
|
jquery.form.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/*!
|
2 |
* jQuery Form Plugin
|
3 |
-
* version: 2.
|
4 |
* @requires jQuery v1.3.2 or later
|
5 |
*
|
6 |
* Examples and documentation at: http://malsup.com/jquery/form/
|
@@ -14,7 +14,7 @@
|
|
14 |
Usage Note:
|
15 |
-----------
|
16 |
Do not use both ajaxSubmit and ajaxForm on the same form. These
|
17 |
-
functions are
|
18 |
to bind your own submit handler to the form. For example,
|
19 |
|
20 |
$(document).ready(function() {
|
@@ -34,7 +34,15 @@
|
|
34 |
target: '#output'
|
35 |
});
|
36 |
});
|
|
|
|
|
|
|
37 |
|
|
|
|
|
|
|
|
|
|
|
38 |
When using ajaxForm, the ajaxSubmit function will be invoked for you
|
39 |
at the appropriate time.
|
40 |
*/
|
@@ -634,8 +642,11 @@ $.fn.ajaxSubmit = function(options) {
|
|
634 |
* the form itself.
|
635 |
*/
|
636 |
$.fn.ajaxForm = function(options) {
|
|
|
|
|
|
|
637 |
// in jQuery 1.3+ we can fix mistakes with the ready state
|
638 |
-
if (this.length === 0) {
|
639 |
var o = { s: this.selector, c: this.context };
|
640 |
if (!$.isReady && o.s) {
|
641 |
log('DOM not ready, queuing ajaxForm');
|
@@ -649,42 +660,60 @@ $.fn.ajaxForm = function(options) {
|
|
649 |
return this;
|
650 |
}
|
651 |
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
|
|
682 |
}
|
683 |
-
|
684 |
-
|
685 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
686 |
};
|
687 |
|
|
|
688 |
// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
|
689 |
$.fn.ajaxFormUnbind = function() {
|
690 |
return this.unbind('submit.form-plugin click.form-plugin');
|
1 |
/*!
|
2 |
* jQuery Form Plugin
|
3 |
+
* version: 2.96 (16-FEB-2012)
|
4 |
* @requires jQuery v1.3.2 or later
|
5 |
*
|
6 |
* Examples and documentation at: http://malsup.com/jquery/form/
|
14 |
Usage Note:
|
15 |
-----------
|
16 |
Do not use both ajaxSubmit and ajaxForm on the same form. These
|
17 |
+
functions are mutually exclusive. Use ajaxSubmit if you want
|
18 |
to bind your own submit handler to the form. For example,
|
19 |
|
20 |
$(document).ready(function() {
|
34 |
target: '#output'
|
35 |
});
|
36 |
});
|
37 |
+
|
38 |
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
|
39 |
+
form does not have to exist when you invoke ajaxForm:
|
40 |
|
41 |
+
$('#myForm').ajaxForm({
|
42 |
+
delegation: true,
|
43 |
+
target: '#output'
|
44 |
+
});
|
45 |
+
|
46 |
When using ajaxForm, the ajaxSubmit function will be invoked for you
|
47 |
at the appropriate time.
|
48 |
*/
|
642 |
* the form itself.
|
643 |
*/
|
644 |
$.fn.ajaxForm = function(options) {
|
645 |
+
options = options || {};
|
646 |
+
options.delegation = options.delegation && $.isFunction($.fn.on);
|
647 |
+
|
648 |
// in jQuery 1.3+ we can fix mistakes with the ready state
|
649 |
+
if (!options.delegation && this.length === 0) {
|
650 |
var o = { s: this.selector, c: this.context };
|
651 |
if (!$.isReady && o.s) {
|
652 |
log('DOM not ready, queuing ajaxForm');
|
660 |
return this;
|
661 |
}
|
662 |
|
663 |
+
if ( options.delegation ) {
|
664 |
+
$(document)
|
665 |
+
.off('submit.form-plugin', this.selector, doAjaxSubmit)
|
666 |
+
.off('click.form-plugin', this.selector, captureSubmittingElement)
|
667 |
+
.on('submit.form-plugin', this.selector, options, doAjaxSubmit)
|
668 |
+
.on('click.form-plugin', this.selector, options, captureSubmittingElement);
|
669 |
+
return this;
|
670 |
+
}
|
671 |
+
|
672 |
+
return this.ajaxFormUnbind()
|
673 |
+
.bind('submit.form-plugin', options, doAjaxSubmit)
|
674 |
+
.bind('click.form-plugin', options, captureSubmittingElement);
|
675 |
+
};
|
676 |
+
|
677 |
+
// private event handlers
|
678 |
+
function doAjaxSubmit(e) {
|
679 |
+
var options = e.data;
|
680 |
+
if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
|
681 |
+
e.preventDefault();
|
682 |
+
$(this).ajaxSubmit(options);
|
683 |
+
}
|
684 |
+
}
|
685 |
+
|
686 |
+
function captureSubmittingElement(e) {
|
687 |
+
var target = e.target;
|
688 |
+
var $el = $(target);
|
689 |
+
if (!($el.is(":submit,input:image"))) {
|
690 |
+
// is this a child element of the submit el? (ex: a span within a button)
|
691 |
+
var t = $el.closest(':submit');
|
692 |
+
if (t.length == 0) {
|
693 |
+
return;
|
694 |
}
|
695 |
+
target = t[0];
|
696 |
+
}
|
697 |
+
var form = this;
|
698 |
+
form.clk = target;
|
699 |
+
if (target.type == 'image') {
|
700 |
+
if (e.offsetX != undefined) {
|
701 |
+
form.clk_x = e.offsetX;
|
702 |
+
form.clk_y = e.offsetY;
|
703 |
+
} else if (typeof $.fn.offset == 'function') {
|
704 |
+
var offset = $el.offset();
|
705 |
+
form.clk_x = e.pageX - offset.left;
|
706 |
+
form.clk_y = e.pageY - offset.top;
|
707 |
+
} else {
|
708 |
+
form.clk_x = e.pageX - target.offsetLeft;
|
709 |
+
form.clk_y = e.pageY - target.offsetTop;
|
710 |
+
}
|
711 |
+
}
|
712 |
+
// clear form vars
|
713 |
+
setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
|
714 |
};
|
715 |
|
716 |
+
|
717 |
// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
|
718 |
$.fn.ajaxFormUnbind = function() {
|
719 |
return this.unbind('submit.form-plugin click.form-plugin');
|
languages/wpcf7-de_DE.mo
CHANGED
Binary file
|
languages/wpcf7-he_IL.mo
CHANGED
Binary file
|
languages/wpcf7-ja.mo
CHANGED
Binary file
|
languages/wpcf7-lv.mo
CHANGED
Binary file
|
languages/wpcf7.pot
CHANGED
@@ -2,8 +2,8 @@ msgid ""
|
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Contact Form 7\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date: 2012-
|
6 |
-
"PO-Revision-Date: 2012-
|
7 |
"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
|
8 |
"Language-Team: \n"
|
9 |
"MIME-Version: 1.0\n"
|
@@ -53,71 +53,71 @@ msgstr ""
|
|
53 |
msgid "Generate Tag"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: contact-form-7/admin/admin.php:
|
57 |
msgid "Settings"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: contact-form-7/admin/admin.php:
|
61 |
msgid "http://contactform7.com/"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: contact-form-7/admin/admin.php:
|
65 |
msgid "Contactform7.com"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: contact-form-7/admin/admin.php:
|
69 |
msgid "http://contactform7.com/docs/"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: contact-form-7/admin/admin.php:
|
73 |
msgid "Docs"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: contact-form-7/admin/admin.php:
|
77 |
msgid "http://contactform7.com/faq/"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: contact-form-7/admin/admin.php:
|
81 |
msgid "FAQ"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: contact-form-7/admin/admin.php:
|
85 |
msgid "http://contactform7.com/support/"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: contact-form-7/admin/admin.php:
|
89 |
msgid "Support"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: contact-form-7/admin/admin.php:
|
93 |
msgid "Contact form created."
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: contact-form-7/admin/admin.php:
|
97 |
msgid "Contact form saved."
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: contact-form-7/admin/admin.php:
|
101 |
msgid "Contact form deleted."
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: contact-form-7/admin/admin.php:
|
105 |
msgid "Contact Form 7 needs your support. Please donate today."
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: contact-form-7/admin/admin.php:
|
109 |
msgid "Your contribution is needed for making this plugin better."
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: contact-form-7/admin/admin.php:
|
113 |
msgid "http://contactform7.com/donate/"
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: contact-form-7/admin/admin.php:
|
117 |
msgid "Donate"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: contact-form-7/admin/admin.php:
|
121 |
#, php-format
|
122 |
msgid "<strong>Contact Form 7 %1$s requires WordPress %2$s or higher.</strong> Please <a href=\"%3$s\">update WordPress</a> first."
|
123 |
msgstr ""
|
@@ -220,7 +220,7 @@ msgstr ""
|
|
220 |
msgid "Message body:"
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: contact-form-7/includes/classes.php:
|
224 |
msgid "Untitled"
|
225 |
msgstr ""
|
226 |
|
@@ -339,7 +339,7 @@ msgid "Armenian"
|
|
339 |
msgstr ""
|
340 |
|
341 |
#: contact-form-7/includes/functions.php:189
|
342 |
-
msgid "
|
343 |
msgstr ""
|
344 |
|
345 |
#: contact-form-7/includes/functions.php:190
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Contact Form 7\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2012-02-22 15:57+0900\n"
|
6 |
+
"PO-Revision-Date: 2012-02-22 15:58+0900\n"
|
7 |
"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
|
8 |
"Language-Team: \n"
|
9 |
"MIME-Version: 1.0\n"
|
53 |
msgid "Generate Tag"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: contact-form-7/admin/admin.php:244
|
57 |
msgid "Settings"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: contact-form-7/admin/admin.php:255
|
61 |
msgid "http://contactform7.com/"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: contact-form-7/admin/admin.php:256
|
65 |
msgid "Contactform7.com"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: contact-form-7/admin/admin.php:257
|
69 |
msgid "http://contactform7.com/docs/"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: contact-form-7/admin/admin.php:258
|
73 |
msgid "Docs"
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: contact-form-7/admin/admin.php:259
|
77 |
msgid "http://contactform7.com/faq/"
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: contact-form-7/admin/admin.php:260
|
81 |
msgid "FAQ"
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: contact-form-7/admin/admin.php:261
|
85 |
msgid "http://contactform7.com/support/"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: contact-form-7/admin/admin.php:262
|
89 |
msgid "Support"
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: contact-form-7/admin/admin.php:276
|
93 |
msgid "Contact form created."
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: contact-form-7/admin/admin.php:279
|
97 |
msgid "Contact form saved."
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: contact-form-7/admin/admin.php:282
|
101 |
msgid "Contact form deleted."
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: contact-form-7/admin/admin.php:316
|
105 |
msgid "Contact Form 7 needs your support. Please donate today."
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: contact-form-7/admin/admin.php:317
|
109 |
msgid "Your contribution is needed for making this plugin better."
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: contact-form-7/admin/admin.php:323
|
113 |
msgid "http://contactform7.com/donate/"
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: contact-form-7/admin/admin.php:323
|
117 |
msgid "Donate"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: contact-form-7/admin/admin.php:343
|
121 |
#, php-format
|
122 |
msgid "<strong>Contact Form 7 %1$s requires WordPress %2$s or higher.</strong> Please <a href=\"%3$s\">update WordPress</a> first."
|
123 |
msgstr ""
|
220 |
msgid "Message body:"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: contact-form-7/includes/classes.php:665
|
224 |
msgid "Untitled"
|
225 |
msgstr ""
|
226 |
|
339 |
msgstr ""
|
340 |
|
341 |
#: contact-form-7/includes/functions.php:189
|
342 |
+
msgid "Azerbaijani"
|
343 |
msgstr ""
|
344 |
|
345 |
#: contact-form-7/includes/functions.php:190
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://contactform7.com/donate/
|
|
4 |
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
|
5 |
Requires at least: 3.2
|
6 |
Tested up to: 3.3.1
|
7 |
-
Stable tag: 3.1
|
8 |
|
9 |
Just another contact form plugin. Simple but flexible.
|
10 |
|
@@ -28,7 +28,7 @@ It is hard to continue development and support for this plugin without contribut
|
|
28 |
* Albanian (sq) - [Olgi Zenullari](http://www.olgizenullari.com/)
|
29 |
* Arabic (ar) - [Tarek Chaaban](http://www.chaaban.info/), Muhammed Lardi, [Yaser Maadan](http://www.englize.com/)
|
30 |
* Armenian (hy_AM) - [Emmanuelle Traduction](http://www.translatonline.com/)
|
31 |
-
*
|
32 |
* Bangla (bn_BD) - [SM Mehdi Akram](http://www.shamokaldarpon.com/)
|
33 |
* Belarusian (be_BY) - [Igor Dubilei](http://www.iflexion.com/)
|
34 |
* Bosnian (bs) - [Vedran](http://www.seorabbit.com/)
|
@@ -49,7 +49,7 @@ It is hard to continue development and support for this plugin without contribut
|
|
49 |
* Georgian (ka_GE) - [Nodar Rocko Davituri](http://davituri.com/)
|
50 |
* German (de_DE) - [Marcel Spitau](http://blog.spitau.de), [Ivan Graf](http://blog.bildergallery.com/)
|
51 |
* Greek (el) - [Nick Mouratidis](http://www.kepik.gr/), [Pr. friedlich](http://friedlich.wordpress.com/)
|
52 |
-
* Hebrew (he_IL) - [Yaron Ofer](http://www.gadgetguru.co.il/)
|
53 |
* Hindi (hi_IN) - [Tarun Joshi](http://www.readers-cafe.net/), [Ashish](http://outshinesolutions.com/)
|
54 |
* Hungarian (hu_HU) - [Andras Hirschler](http://hia.itblog.hu/), [János Csárdi-Braunstein](http://blogocska.org/), [Farkas Győző](http://www.sakraft.hu/)
|
55 |
* Indonesian (Bahasa Indonesia; id_ID) - [Hendry Lee](http://blogbuildingu.com/), [Belajar Seo Indonesia](http://dhany.web.id/panduan-seo)
|
@@ -113,6 +113,15 @@ Do you have questions or issues with Contact Form 7? Use these support channels
|
|
113 |
|
114 |
== Changelog ==
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
= 3.1 =
|
117 |
|
118 |
* Offer nonce verification for contact forms.
|
4 |
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
|
5 |
Requires at least: 3.2
|
6 |
Tested up to: 3.3.1
|
7 |
+
Stable tag: 3.1.1
|
8 |
|
9 |
Just another contact form plugin. Simple but flexible.
|
10 |
|
28 |
* Albanian (sq) - [Olgi Zenullari](http://www.olgizenullari.com/)
|
29 |
* Arabic (ar) - [Tarek Chaaban](http://www.chaaban.info/), Muhammed Lardi, [Yaser Maadan](http://www.englize.com/)
|
30 |
* Armenian (hy_AM) - [Emmanuelle Traduction](http://www.translatonline.com/)
|
31 |
+
* Azerbaijani (az_AZ) - [Zaur Bayramov](http://bloglayaq.com/)
|
32 |
* Bangla (bn_BD) - [SM Mehdi Akram](http://www.shamokaldarpon.com/)
|
33 |
* Belarusian (be_BY) - [Igor Dubilei](http://www.iflexion.com/)
|
34 |
* Bosnian (bs) - [Vedran](http://www.seorabbit.com/)
|
49 |
* Georgian (ka_GE) - [Nodar Rocko Davituri](http://davituri.com/)
|
50 |
* German (de_DE) - [Marcel Spitau](http://blog.spitau.de), [Ivan Graf](http://blog.bildergallery.com/)
|
51 |
* Greek (el) - [Nick Mouratidis](http://www.kepik.gr/), [Pr. friedlich](http://friedlich.wordpress.com/)
|
52 |
+
* Hebrew (he_IL) - [Yaron Ofer](http://www.gadgetguru.co.il/), [Arik Galansky](http://www.arikg.co.il/)
|
53 |
* Hindi (hi_IN) - [Tarun Joshi](http://www.readers-cafe.net/), [Ashish](http://outshinesolutions.com/)
|
54 |
* Hungarian (hu_HU) - [Andras Hirschler](http://hia.itblog.hu/), [János Csárdi-Braunstein](http://blogocska.org/), [Farkas Győző](http://www.sakraft.hu/)
|
55 |
* Indonesian (Bahasa Indonesia; id_ID) - [Hendry Lee](http://blogbuildingu.com/), [Belajar Seo Indonesia](http://dhany.web.id/panduan-seo)
|
113 |
|
114 |
== Changelog ==
|
115 |
|
116 |
+
= 3.1.1 =
|
117 |
+
|
118 |
+
* Introduce wpcf7_verify_nonce() and wpcf7_create_nonce() for front-end use. This fixes the wrong nonce issue on cached pages.
|
119 |
+
* Preserve new line characters in form shortcode contents to bypass auto-p filter.
|
120 |
+
* Use [\r\n\t ] instead of [\s] in regex to prevent issues of checkbox/radio options containing some UTF-8 characters are dropped.
|
121 |
+
* Bug fixed: tag generator menu is incorrectly shown on WordPress 3.2.x.
|
122 |
+
* The jQuery Form Plugin (jquery.form.js) has been updated to 2.96.
|
123 |
+
* Translations for Latvian, Hebrew, German, and Japanese have been updated.
|
124 |
+
|
125 |
= 3.1 =
|
126 |
|
127 |
* Offer nonce verification for contact forms.
|
wp-contact-form-7.php
CHANGED
@@ -7,7 +7,7 @@ Author: Takayuki Miyoshi
|
|
7 |
Author URI: http://ideasilo.wordpress.com/
|
8 |
Text Domain: wpcf7
|
9 |
Domain Path: /languages/
|
10 |
-
Version: 3.1
|
11 |
*/
|
12 |
|
13 |
/* Copyright 2007-2012 Takayuki Miyoshi (email: takayukister at gmail.com)
|
@@ -27,7 +27,7 @@ Version: 3.1
|
|
27 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
28 |
*/
|
29 |
|
30 |
-
define( 'WPCF7_VERSION', '3.1' );
|
31 |
|
32 |
define( 'WPCF7_REQUIRED_WP_VERSION', '3.2' );
|
33 |
|
7 |
Author URI: http://ideasilo.wordpress.com/
|
8 |
Text Domain: wpcf7
|
9 |
Domain Path: /languages/
|
10 |
+
Version: 3.1.1
|
11 |
*/
|
12 |
|
13 |
/* Copyright 2007-2012 Takayuki Miyoshi (email: takayukister at gmail.com)
|
27 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
28 |
*/
|
29 |
|
30 |
+
define( 'WPCF7_VERSION', '3.1.1' );
|
31 |
|
32 |
define( 'WPCF7_REQUIRED_WP_VERSION', '3.2' );
|
33 |
|