Contact Form 7 add confirm - Version 1.3.9.1

Version Description

Download this release

Release Info

Developer Yuichiro ABE
Plugin Icon wp plugin Contact Form 7 add confirm
Version 1.3.9.1
Comparing to
See all releases

Code changes from version 1.3.8.13 to 1.3.9.1

contact-form-7-confirm.php CHANGED
@@ -7,7 +7,7 @@ Author: Yuichiro ABE
7
  Author URI: http://www.eyeta.jp/
8
  Text Domain: contact-form-7-confirm
9
  Domain Path: /languages/
10
- Version: 1.3.8.13
11
  */
12
 
13
  /* Copyright 2014- Yuichiro ABE (email: y.abe at eyeta.jp)
@@ -44,7 +44,7 @@ Version: 1.3.8.13
44
   戻って編集ボタンのデフォルトテキストが英語だった件を修正
45
  以降、readme.txtに記述
46
  */
47
- define( 'WPCF7C_VERSION', '1.3.8.13' );
48
 
49
  if ( ! defined( 'WPCF7C_PLUGIN_BASENAME' ) )
50
  define( 'WPCF7C_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
7
  Author URI: http://www.eyeta.jp/
8
  Text Domain: contact-form-7-confirm
9
  Domain Path: /languages/
10
+ Version: 1.3.9.1
11
  */
12
 
13
  /* Copyright 2014- Yuichiro ABE (email: y.abe at eyeta.jp)
44
   戻って編集ボタンのデフォルトテキストが英語だった件を修正
45
  以降、readme.txtに記述
46
  */
47
+ define( 'WPCF7C_VERSION', '1.3.9.1' );
48
 
49
  if ( ! defined( 'WPCF7C_PLUGIN_BASENAME' ) )
50
  define( 'WPCF7C_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
includes/controller.php CHANGED
@@ -10,6 +10,7 @@
10
 
11
  add_action( 'init', 'wpcf7c_control_init', 10 );
12
  function wpcf7c_control_init() {
 
13
  wpcf7c_ajax_json_echo();
14
 
15
  // キャプチャ用フックの差替え
@@ -23,7 +24,11 @@ function wpcf7c_ajax_json_echo() {
23
  if (isset($_POST['_wpcf7c'])) switch($_POST["_wpcf7c"]) {
24
  case "step1":
25
  // $result = apply_filters( 'wpcf7_before_send_mail', $result );
26
- add_action("wpcf7_before_send_mail", "wpcf7c_before_send_mail_step1", 10, 2);
 
 
 
 
27
 
28
  //$items = apply_filters( 'wpcf7_ajax_json_echo', $items, $result );
29
  add_filter("wpcf7_ajax_json_echo", "wpcf7c_ajax_json_echo_step1", 10, 3);
@@ -66,14 +71,42 @@ function wpcf7c_ajax_json_echo() {
66
  return;
67
  }
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  function wpcf7c_before_send_mail_step1(&$cls) {
70
  //eyeta_log("wpcf7c_before_send_mail_step1");
71
  $cls->skip_mail = true;
72
  }
73
 
74
  function wpcf7c_ajax_json_echo_step1($items, $result) {
75
- //eyeta_log("wpcf7c_ajax_json_echo_step1");
76
- if($result['mail_sent']) {
 
 
 
 
 
 
 
 
77
  if(!isset($items["onSubmit"]) || $items["onSubmit"] == null) {
78
  $items["onSubmit"] = array("wpcf7c_step1('" . $_POST['_wpcf7_unit_tag'] . "');");
79
  } else {
@@ -95,6 +128,16 @@ function wpcf7c_ajax_json_echo_step1($items, $result) {
95
 
96
  unset($items['captcha']);
97
 
 
 
 
 
 
 
 
 
 
 
98
  }
99
 
100
  return $items;
@@ -131,7 +174,14 @@ function wpcf7c_captcha_validation_filter( $result, $tag ) {
131
 
132
  function wpcf7c_ajax_json_echo_step2($items, $result) {
133
  //eyeta_log("wpcf7c_ajax_json_echo_step1");
134
- if($result['mail_sent']) {
 
 
 
 
 
 
 
135
  if(!isset($items["onSubmit"]) || $items["onSubmit"] == null) {
136
  $items["onSubmit"] = array("wpcf7c_step2('" . $_POST['_wpcf7_unit_tag'] . "');");
137
  } else {
10
 
11
  add_action( 'init', 'wpcf7c_control_init', 10 );
12
  function wpcf7c_control_init() {
13
+
14
  wpcf7c_ajax_json_echo();
15
 
16
  // キャプチャ用フックの差替え
24
  if (isset($_POST['_wpcf7c'])) switch($_POST["_wpcf7c"]) {
25
  case "step1":
26
  // $result = apply_filters( 'wpcf7_before_send_mail', $result );
27
+ if(WPCF7_VERSION >= 3.9) {
28
+ add_filter( 'wpcf7_acceptance', 'wpcf7c_acceptance_filter', 11, 1 );
29
+ } else {
30
+ add_action("wpcf7_before_send_mail", "wpcf7c_before_send_mail_step1", 10, 2);
31
+ }
32
 
33
  //$items = apply_filters( 'wpcf7_ajax_json_echo', $items, $result );
34
  add_filter("wpcf7_ajax_json_echo", "wpcf7c_ajax_json_echo_step1", 10, 3);
71
  return;
72
  }
73
 
74
+ /**
75
+ * 3.9からフックが変わったため、
76
+ * acceptanceの機能を利用してメール送信をスキップする。
77
+ *
78
+ * @param $accepted
79
+ * @return bool
80
+ */
81
+ function wpcf7c_acceptance_filter($accepted) {
82
+ global $wpcf7_confflag;
83
+
84
+ if($accepted == false) {
85
+ // すでにエラー
86
+ return $accepted;
87
+ }
88
+
89
+ // これが呼ばれるときは必ずSTEP1
90
+ $wpcf7_confflag = true;
91
+ return false;
92
+ }
93
+
94
  function wpcf7c_before_send_mail_step1(&$cls) {
95
  //eyeta_log("wpcf7c_before_send_mail_step1");
96
  $cls->skip_mail = true;
97
  }
98
 
99
  function wpcf7c_ajax_json_echo_step1($items, $result) {
100
+ global $wpcf7_confflag;
101
+
102
+ $flag = false;
103
+ if(WPCF7_VERSION >= 3.9) {
104
+ $flag = $wpcf7_confflag;
105
+ } else {
106
+ $flag = $result['mail_sent'];
107
+ }
108
+
109
+ if($flag) {
110
  if(!isset($items["onSubmit"]) || $items["onSubmit"] == null) {
111
  $items["onSubmit"] = array("wpcf7c_step1('" . $_POST['_wpcf7_unit_tag'] . "');");
112
  } else {
128
 
129
  unset($items['captcha']);
130
 
131
+ } else {
132
+ // フィルタ指定があればエラー時にアンカーまでスクロールさせる
133
+ $result = false;
134
+ if(apply_filters( 'wpcf7c_input_error_scroll', $result )) {
135
+ if(!isset($items["onSubmit"]) || $items["onSubmit"] == null) {
136
+ $items["onSubmit"] = array("wpcf7c_scroll('" . $_POST['_wpcf7_unit_tag'] . "');");
137
+ } else {
138
+ $items["onSubmit"][] = "wpcf7c_scroll('" . $_POST['_wpcf7_unit_tag'] . "');";
139
+ }
140
+ }
141
  }
142
 
143
  return $items;
174
 
175
  function wpcf7c_ajax_json_echo_step2($items, $result) {
176
  //eyeta_log("wpcf7c_ajax_json_echo_step1");
177
+ $flag = false;
178
+ if(WPCF7_VERSION >= 3.9) {
179
+ $flag = $items['mailSent'];
180
+ } else {
181
+ $flag = $result['mail_sent'];
182
+ }
183
+
184
+ if($flag) {
185
  if(!isset($items["onSubmit"]) || $items["onSubmit"] == null) {
186
  $items["onSubmit"] = array("wpcf7c_step2('" . $_POST['_wpcf7_unit_tag'] . "');");
187
  } else {
includes/js/scripts.js CHANGED
@@ -73,12 +73,8 @@ var wpcf7c_to_step1 = function(parent, scroll){
73
 
74
  // スムーズスクロール
75
  if(scroll) {
76
- var speed = 1000;
77
- var position = parent.offset().top;
78
- if(jQuery('.wpcf7c-anchor').size() != 0) {
79
- position = jQuery('.wpcf7c-anchor').offset().top;
80
- }
81
- jQuery("html, body").animate({scrollTop:position}, speed, "swing");
82
  }
83
 
84
  }
@@ -98,6 +94,12 @@ var wpcf7c_step1 = function(unit_tag){
98
  responseOutput.addClass("wpcf7c-force-hide");
99
 
100
  // 確認画面表示
 
 
 
 
 
 
101
  parent.find("textarea").attr("readonly", true).addClass("wpcf7c-conf");
102
  parent.find("select").each(function(){
103
  jQuery(this).attr("readonly", true).attr("disabled", true).addClass("wpcf7c-conf");
@@ -131,7 +133,7 @@ var wpcf7c_step1 = function(unit_tag){
131
 
132
  break;
133
  default:
134
- jQuery(this).attr("readonly", true).attr("disabled", true).addClass("wpcf7c-conf");
135
  jQuery(this).after(
136
  jQuery('<input type="hidden" />').attr("name", jQuery(this).attr("name")).val(jQuery(this).val()).addClass("wpcf7c-conf-hidden")
137
  );
@@ -149,13 +151,24 @@ var wpcf7c_step1 = function(unit_tag){
149
  parent.find("input[name=_wpcf7c]").val("step2");
150
 
151
  // スムーズスクロール
 
 
 
 
 
 
 
 
 
 
 
 
152
  var speed = 1000;
153
  var position = parent.offset().top;
154
  if(jQuery('.wpcf7c-anchor').size() != 0) {
155
  position = jQuery('.wpcf7c-anchor').offset().top;
156
  }
157
  jQuery("html, body").animate({scrollTop:position}, speed, "swing");
158
-
159
  }
160
  });
161
  }
73
 
74
  // スムーズスクロール
75
  if(scroll) {
76
+ // スムーズスクロール
77
+ setTimeout(function() { wpcf7c_scroll(parent.attr("name")) }, 100);
 
 
 
 
78
  }
79
 
80
  }
94
  responseOutput.addClass("wpcf7c-force-hide");
95
 
96
  // 確認画面表示
97
+ // テキストエリアを伸ばす
98
+ parent.find("textarea").each(function(){
99
+ if(this.scrollHeight > this.offsetHeight){
100
+ this.style.height = (this.scrollHeight + 10) + 'px';
101
+ }
102
+ });
103
  parent.find("textarea").attr("readonly", true).addClass("wpcf7c-conf");
104
  parent.find("select").each(function(){
105
  jQuery(this).attr("readonly", true).attr("disabled", true).addClass("wpcf7c-conf");
133
 
134
  break;
135
  default:
136
+ jQuery(this).attr("readonly", true).addClass("wpcf7c-conf");
137
  jQuery(this).after(
138
  jQuery('<input type="hidden" />').attr("name", jQuery(this).attr("name")).val(jQuery(this).val()).addClass("wpcf7c-conf-hidden")
139
  );
151
  parent.find("input[name=_wpcf7c]").val("step2");
152
 
153
  // スムーズスクロール
154
+ setTimeout(function() { wpcf7c_scroll(unit_tag) }, 100);
155
+
156
+
157
+ }
158
+ });
159
+ }
160
+
161
+ var wpcf7c_scroll = function(unit_tag) {
162
+ // エラーの時などにアンカーまでスクロール
163
+ jQuery(jQuery.find("input[name=_wpcf7_unit_tag]")).each(function(){
164
+ if(jQuery(this).val() == unit_tag) {
165
+ var parent = jQuery(this).parents("form");
166
  var speed = 1000;
167
  var position = parent.offset().top;
168
  if(jQuery('.wpcf7c-anchor').size() != 0) {
169
  position = jQuery('.wpcf7c-anchor').offset().top;
170
  }
171
  jQuery("html, body").animate({scrollTop:position}, speed, "swing");
 
172
  }
173
  });
174
  }
modules/back.php CHANGED
@@ -50,7 +50,7 @@ function wpcf7c_add_tag_generator_back() {
50
  'wpcf7-tg-pane-back', 'wpcf7c_tg_pane_back', array( 'nameless' => 1 ) );
51
  }
52
 
53
- function wpcf7c_tg_pane_back( &$contact_form ) {
54
  ?>
55
  <div id="wpcf7-tg-pane-back" class="hidden">
56
  <form action="">
50
  'wpcf7-tg-pane-back', 'wpcf7c_tg_pane_back', array( 'nameless' => 1 ) );
51
  }
52
 
53
+ function wpcf7c_tg_pane_back( $contact_form ) {
54
  ?>
55
  <div id="wpcf7-tg-pane-back" class="hidden">
56
  <form action="">
modules/confirm.php CHANGED
@@ -50,7 +50,7 @@ function wpcf7c_add_tag_generator_confirm() {
50
  'wpcf7-tg-pane-confirm', 'wpcf7c_tg_pane_confirm', array( 'nameless' => 1 ) );
51
  }
52
 
53
- function wpcf7c_tg_pane_confirm( &$contact_form ) {
54
  ?>
55
  <div id="wpcf7-tg-pane-confirm" class="hidden">
56
  <form action="">
50
  'wpcf7-tg-pane-confirm', 'wpcf7c_tg_pane_confirm', array( 'nameless' => 1 ) );
51
  }
52
 
53
+ function wpcf7c_tg_pane_confirm( $contact_form ) {
54
  ?>
55
  <div id="wpcf7-tg-pane-confirm" class="hidden">
56
  <form action="">
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link:
4
  Tags: contact, form, contact form
5
  Requires at least: 3.8
6
  Tested up to: 3.9.1
7
- Stable tag: 1.3.8.13
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -64,8 +64,18 @@ An answer to that question.
64
  1.3.8.12
65
  Contact Form DBプラグインで確認ボタンクリック時に記録されてしまう問題を修正
66
 
67
- == Upgrade notice ==
68
  1.3.8.13
69
  「on_confirm」オプションを追加、確認画面表示時に独自のJavascriptを追加できるようにしました。
70
  編集に戻る際は、ボタンに直接イベントをつけて下さい。
71
 
 
 
 
 
 
 
 
 
 
 
 
4
  Tags: contact, form, contact form
5
  Requires at least: 3.8
6
  Tested up to: 3.9.1
7
+ Stable tag: 1.3.9.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
64
  1.3.8.12
65
  Contact Form DBプラグインで確認ボタンクリック時に記録されてしまう問題を修正
66
 
 
67
  1.3.8.13
68
  「on_confirm」オプションを追加、確認画面表示時に独自のJavascriptを追加できるようにしました。
69
  編集に戻る際は、ボタンに直接イベントをつけて下さい。
70
 
71
+ == Upgrade notice ==
72
+ 1.3.9.1
73
+ せっかくスクロールアンカーをセットできるので
74
+  add_filter("wpcf7c_input_error_scroll", '__return_true');
75
+  とすることで、入力エラーじもアンカーまでスクロールするようにしました。
76
+  要素の表示非表示を制御するとスクロールが思った場所にいかないのでインターバルを入れました。
77
+ Contact Form 7 3.9 に(無理矢理ですが)対応しました。
78
+ input type="text"などについて、disabledは付けずにreadonlyのみにしました。
79
+ textareaについて、入力内容が縦幅より大きい場合、確認画面で高さを伸ばすようにしました。
80
+
81
+
settings.php CHANGED
@@ -7,6 +7,9 @@
7
  *
8
  */
9
 
 
 
 
10
  require_once WPCF7C_PLUGIN_DIR . '/includes/functions.php';
11
  require_once WPCF7C_PLUGIN_DIR . '/includes/controller.php';
12
 
7
  *
8
  */
9
 
10
+ global $wpcf7_confflag;
11
+ $wpcf7_confflag = false;
12
+
13
  require_once WPCF7C_PLUGIN_DIR . '/includes/functions.php';
14
  require_once WPCF7C_PLUGIN_DIR . '/includes/controller.php';
15