Version Description
- Fixed: Validate and potentially create full urls for values passed into custom "redirect to url" values. Prevents unintended destinations from partial urls.
- Fixed: Error display for cron debugging was not showing correctly.
- Fixed: Added required indicators to all appropriate fields in address fieldset on frontend.
- Fixed: No form will be displayed if the form is not published.
- Added: Address line 2 is no longer considered a required field.
- Added: Plugin will now send email notifications if notifications are disabled but no Constant Contact list has been set for a form or opt-in is required but user does not opt in. Prevents possible lost submissions.
- Updated: Wording for "Disable email" setting to clarify its purpose and intent.
- Updated: Wording around some form builder fields.
- Updated: Reworded emails and conditionally added messages regarding issues with form that required sending the email.
- Updated: Adjusted plugin load order slightly to prevent conflicts with other plugins using GuzzleHTTP.
Download this release
Release Info
Developer | constantcontact |
Plugin | Constant Contact Forms |
Version | 1.3.6 |
Comparing to | |
See all releases |
Code changes from version 1.3.5 to 1.3.6
- constant-contact-forms.php +164 -9
- includes/class-api.php +3 -2
- includes/class-builder-fields.php +10 -9
- includes/class-check.php +2 -2
- includes/class-display.php +35 -5
- includes/class-mail.php +111 -7
- includes/class-process-form.php +4 -0
- includes/class-settings.php +23 -23
- includes/class-user-customizations.php +1 -1
- includes/helper-functions.php +21 -0
- languages/constant-contact-forms.pot +138 -104
- readme.txt +16 -4
constant-contact-forms.php
CHANGED
@@ -12,9 +12,9 @@
|
|
12 |
* Plugin Name: Constant Contact Forms for WordPress
|
13 |
* Plugin URI: https://www.constantcontact.com
|
14 |
* Description: Be a better marketer. All it takes is Constant Contact email marketing.
|
15 |
-
* Version: 1.3.
|
16 |
* Author: Constant Contact
|
17 |
-
* Author URI: https://www.constantcontact.com
|
18 |
* License: GPLv3
|
19 |
* Text Domain: constant-contact-forms
|
20 |
* Domain Path: /languages
|
@@ -77,7 +77,7 @@ class Constant_Contact {
|
|
77 |
* @since 1.0.0
|
78 |
* @var string
|
79 |
*/
|
80 |
-
const VERSION = '1.3.
|
81 |
|
82 |
/**
|
83 |
* URL of plugin directory.
|
@@ -136,32 +136,187 @@ class Constant_Contact {
|
|
136 |
protected static $single_instance = null;
|
137 |
|
138 |
/**
|
139 |
-
*
|
140 |
*
|
141 |
* @since 1.0.1
|
|
|
142 |
*/
|
143 |
-
private $admin;
|
144 |
-
private $admin_pages;
|
145 |
-
private $auth_redirect;
|
146 |
private $api;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
private $builder;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
private $builder_fields;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
private $check;
|
150 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
private $cpts;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
private $display;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
private $display_shortcode;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
private $lists;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
private $process_form;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
private $settings;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
private $mail;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
private $notifications;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
private $notification_content;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
private $authserver;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
private $updates;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
private $optin;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
private $customizations;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
private $shortcode;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
165 |
private $shortcode_admin;
|
166 |
|
167 |
/**
|
@@ -209,7 +364,6 @@ class Constant_Contact {
|
|
209 |
|
210 |
// Load our plugin and our libraries.
|
211 |
$this->plugin_classes();
|
212 |
-
$this->load_libs();
|
213 |
$this->admin_plugin_classes();
|
214 |
|
215 |
// Include our helper functions function for end-users.
|
@@ -278,6 +432,7 @@ class Constant_Contact {
|
|
278 |
add_action( 'init', array( $this, 'includes' ), 5 );
|
279 |
add_action( 'widgets_init', array( $this, 'widgets' ) );
|
280 |
add_filter( 'body_class', array( $this, 'body_classes' ) );
|
|
|
281 |
|
282 |
// Our vendor files will do a check for ISSSL, so we want to set it to be that.
|
283 |
// See Guzzle for more info and usage of this.
|
12 |
* Plugin Name: Constant Contact Forms for WordPress
|
13 |
* Plugin URI: https://www.constantcontact.com
|
14 |
* Description: Be a better marketer. All it takes is Constant Contact email marketing.
|
15 |
+
* Version: 1.3.6
|
16 |
* Author: Constant Contact
|
17 |
+
* Author URI: https://www.constantcontact.com/index?pn=miwordpress
|
18 |
* License: GPLv3
|
19 |
* Text Domain: constant-contact-forms
|
20 |
* Domain Path: /languages
|
77 |
* @since 1.0.0
|
78 |
* @var string
|
79 |
*/
|
80 |
+
const VERSION = '1.3.6';
|
81 |
|
82 |
/**
|
83 |
* URL of plugin directory.
|
136 |
protected static $single_instance = null;
|
137 |
|
138 |
/**
|
139 |
+
* An instance of the ConstantContact_API Class.
|
140 |
*
|
141 |
* @since 1.0.1
|
142 |
+
* @var ConstantContact_API
|
143 |
*/
|
|
|
|
|
|
|
144 |
private $api;
|
145 |
+
|
146 |
+
/**
|
147 |
+
* An instance of the ConstantContact_Builder Class.
|
148 |
+
*
|
149 |
+
* @since 1.0.1
|
150 |
+
* @var ConstantContact_Builder
|
151 |
+
*/
|
152 |
private $builder;
|
153 |
+
|
154 |
+
/**
|
155 |
+
* An instance of the ConstantContact_Builder_Fields Class.
|
156 |
+
*
|
157 |
+
* @since 1.0.1
|
158 |
+
* @var ConstantContact_Builder_Fields
|
159 |
+
*/
|
160 |
private $builder_fields;
|
161 |
+
|
162 |
+
/**
|
163 |
+
* An instance of the ConstantContact_Check Class.
|
164 |
+
*
|
165 |
+
* @since 1.0.1
|
166 |
+
* @var ConstantContact_Check
|
167 |
+
*/
|
168 |
private $check;
|
169 |
+
|
170 |
+
/**
|
171 |
+
* An instance of the ConstantContact_CPTS Class.
|
172 |
+
*
|
173 |
+
* @since 1.0.1
|
174 |
+
* @var ConstantContact_CPTS
|
175 |
+
*/
|
176 |
private $cpts;
|
177 |
+
|
178 |
+
/**
|
179 |
+
* An instance of the ConstantContact_Display Class.
|
180 |
+
*
|
181 |
+
* @since 1.0.1
|
182 |
+
* @var ConstantContact_Display
|
183 |
+
*/
|
184 |
private $display;
|
185 |
+
|
186 |
+
/**
|
187 |
+
* An instance of the ConstantContact_Display_Shortcode Class.
|
188 |
+
*
|
189 |
+
* @since 1.0.1
|
190 |
+
* @var ConstantContact_Display_Shortcode
|
191 |
+
*/
|
192 |
private $display_shortcode;
|
193 |
+
|
194 |
+
/**
|
195 |
+
* An instance of the ConstantContact_Lists Class.
|
196 |
+
*
|
197 |
+
* @since 1.0.1
|
198 |
+
* @var ConstantContact_Lists
|
199 |
+
*/
|
200 |
private $lists;
|
201 |
+
|
202 |
+
/**
|
203 |
+
* An instance of the ConstantContact_Process_Form Class.
|
204 |
+
*
|
205 |
+
* @since 1.0.1
|
206 |
+
* @var ConstantContact_Process_Form
|
207 |
+
*/
|
208 |
private $process_form;
|
209 |
+
|
210 |
+
/**
|
211 |
+
* An instance of the ConstantContact_Settings Class.
|
212 |
+
*
|
213 |
+
* @since 1.0.1
|
214 |
+
* @var ConstantContact_Settings
|
215 |
+
*/
|
216 |
private $settings;
|
217 |
+
|
218 |
+
/**
|
219 |
+
* An instance of the ConstantContact_Auth_Redirect Class.
|
220 |
+
*
|
221 |
+
* @since 1.0.1
|
222 |
+
* @var ConstantContact_Auth_Redirect
|
223 |
+
*/
|
224 |
+
private $auth_redirect;
|
225 |
+
|
226 |
+
/**
|
227 |
+
* An instance of the ConstantContact_Connect Class.
|
228 |
+
*
|
229 |
+
* @since 1.0.1
|
230 |
+
* @var ConstantContact_Connect
|
231 |
+
*/
|
232 |
+
private $connect;
|
233 |
+
|
234 |
+
/**
|
235 |
+
* An instance of the ConstantContact_Mail Class.
|
236 |
+
*
|
237 |
+
* @since 1.0.1
|
238 |
+
* @var ConstantContact_Mail
|
239 |
+
*/
|
240 |
private $mail;
|
241 |
+
|
242 |
+
/**
|
243 |
+
* An instance of the ConstantContact_Notifications Class.
|
244 |
+
*
|
245 |
+
* @since 1.0.1
|
246 |
+
* @var ConstantContact_Notifications
|
247 |
+
*/
|
248 |
private $notifications;
|
249 |
+
|
250 |
+
/**
|
251 |
+
* An instance of the ConstantContact_Notification_Content Class.
|
252 |
+
*
|
253 |
+
* @since 1.0.1
|
254 |
+
* @var ConstantContact_Notification_Content
|
255 |
+
*/
|
256 |
private $notification_content;
|
257 |
+
|
258 |
+
/**
|
259 |
+
* An instance of the ConstantContact_Middleware Class.
|
260 |
+
*
|
261 |
+
* @since 1.0.1
|
262 |
+
* @var ConstantContact_Middleware
|
263 |
+
*/
|
264 |
private $authserver;
|
265 |
+
|
266 |
+
/**
|
267 |
+
* An instance of the ConstantContact_Updates Class.
|
268 |
+
*
|
269 |
+
* @since 1.0.1
|
270 |
+
* @var ConstantContact_Updates
|
271 |
+
*/
|
272 |
private $updates;
|
273 |
+
|
274 |
+
/**
|
275 |
+
* An instance of the ConstantContact_Optin Class.
|
276 |
+
*
|
277 |
+
* @since 1.0.1
|
278 |
+
* @var ConstantContact_Optin
|
279 |
+
*/
|
280 |
private $optin;
|
281 |
+
|
282 |
+
/**
|
283 |
+
* An instance of the ConstantContact_User_Customizations Class.
|
284 |
+
*
|
285 |
+
* @since 1.0.1
|
286 |
+
* @var ConstantContact_User_Customizations
|
287 |
+
*/
|
288 |
private $customizations;
|
289 |
+
|
290 |
+
/**
|
291 |
+
* An instance of the ConstantContact_Admin Class.
|
292 |
+
*
|
293 |
+
* @since 1.0.1
|
294 |
+
* @var ConstantContact_Admin
|
295 |
+
*/
|
296 |
+
private $admin;
|
297 |
+
|
298 |
+
/**
|
299 |
+
* An instance of the ConstantContact_Admin_Pages class.
|
300 |
+
*
|
301 |
+
* @since 1.0.1
|
302 |
+
* @var ConstantContact_Admin_Pages
|
303 |
+
*/
|
304 |
+
private $admin_pages;
|
305 |
+
|
306 |
+
/**
|
307 |
+
* An instance of the ConstantContact_Shortcode class.
|
308 |
+
*
|
309 |
+
* @since 1.0.1
|
310 |
+
* @var ConstantContact_Shortcode
|
311 |
+
*/
|
312 |
private $shortcode;
|
313 |
+
|
314 |
+
/**
|
315 |
+
* An instance of the ConstantContact_Shortcode_Admin class.
|
316 |
+
*
|
317 |
+
* @since 1.0.1
|
318 |
+
* @var ConstantContact_Shortcode_Admin
|
319 |
+
*/
|
320 |
private $shortcode_admin;
|
321 |
|
322 |
/**
|
364 |
|
365 |
// Load our plugin and our libraries.
|
366 |
$this->plugin_classes();
|
|
|
367 |
$this->admin_plugin_classes();
|
368 |
|
369 |
// Include our helper functions function for end-users.
|
432 |
add_action( 'init', array( $this, 'includes' ), 5 );
|
433 |
add_action( 'widgets_init', array( $this, 'widgets' ) );
|
434 |
add_filter( 'body_class', array( $this, 'body_classes' ) );
|
435 |
+
$this->load_libs();
|
436 |
|
437 |
// Our vendor files will do a check for ISSSL, so we want to set it to be that.
|
438 |
// See Guzzle for more info and usage of this.
|
includes/class-api.php
CHANGED
@@ -442,7 +442,7 @@ class ConstantContact_API {
|
|
442 |
* @param string $api_token Token.
|
443 |
* @param string $list List name.
|
444 |
* @param string $email Email address.
|
445 |
-
* @param
|
446 |
* @param string $form_id ID of the form being processed.
|
447 |
* @return mixed Response from API.
|
448 |
*/
|
@@ -482,7 +482,7 @@ class ConstantContact_API {
|
|
482 |
* @param array $response Response from api call.
|
483 |
* @param string $api_token Token.
|
484 |
* @param string $list List name.
|
485 |
-
* @param
|
486 |
* @param string $form_id Form ID being processed.
|
487 |
* @return mixed Response from API.
|
488 |
*/
|
@@ -565,6 +565,7 @@ class ConstantContact_API {
|
|
565 |
case 'g-recaptcha-response':
|
566 |
case 'ctct_usage_field':
|
567 |
case 'ctct_time':
|
|
|
568 |
// Do nothing, as we already captured.
|
569 |
break;
|
570 |
case 'phone_number':
|
442 |
* @param string $api_token Token.
|
443 |
* @param string $list List name.
|
444 |
* @param string $email Email address.
|
445 |
+
* @param array $user_data User data.
|
446 |
* @param string $form_id ID of the form being processed.
|
447 |
* @return mixed Response from API.
|
448 |
*/
|
482 |
* @param array $response Response from api call.
|
483 |
* @param string $api_token Token.
|
484 |
* @param string $list List name.
|
485 |
+
* @param array $user_data User data.
|
486 |
* @param string $form_id Form ID being processed.
|
487 |
* @return mixed Response from API.
|
488 |
*/
|
565 |
case 'g-recaptcha-response':
|
566 |
case 'ctct_usage_field':
|
567 |
case 'ctct_time':
|
568 |
+
case 'ctct_must_opt_in':
|
569 |
// Do nothing, as we already captured.
|
570 |
break;
|
571 |
case 'phone_number':
|
includes/class-builder-fields.php
CHANGED
@@ -184,17 +184,18 @@ class ConstantContact_Builder_Fields {
|
|
184 |
) );
|
185 |
|
186 |
$options_metabox->add_field( array(
|
187 |
-
'name'
|
188 |
-
'id'
|
189 |
-
'type'
|
190 |
-
'description'
|
|
|
191 |
) );
|
192 |
|
193 |
$options_metabox->add_field( array(
|
194 |
-
'name' => __( '
|
195 |
'id' => $this->prefix . 'do_ajax',
|
196 |
'type' => 'checkbox',
|
197 |
-
'description' => __( '
|
198 |
) );
|
199 |
|
200 |
|
@@ -216,11 +217,11 @@ class ConstantContact_Builder_Fields {
|
|
216 |
$overall_description = sprintf(
|
217 |
'<hr/><p>%s %s</p>',
|
218 |
esc_html__(
|
219 |
-
'Enabling this option will require
|
220 |
'constant-contact-forms'
|
221 |
),
|
222 |
sprintf(
|
223 |
-
'<a href="%s">%s</a>',
|
224 |
'https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18260-WordPress-Constant-Contact-Forms-Options',
|
225 |
esc_html__( 'Learn more', 'constant-contact-forms' )
|
226 |
)
|
@@ -272,7 +273,7 @@ class ConstantContact_Builder_Fields {
|
|
272 |
*/
|
273 |
public function show_enable_show_checkbox_field( $options_metabox ) {
|
274 |
|
275 |
-
$description = esc_html__( 'Add a checkbox so
|
276 |
$description .= '<br>';
|
277 |
$description .= esc_html__( '(For use with Contact Us form)', 'constant-contact-forms' );
|
278 |
|
184 |
) );
|
185 |
|
186 |
$options_metabox->add_field( array(
|
187 |
+
'name' => __( 'Redirect URL', 'constant-contact-forms' ),
|
188 |
+
'id' => $this->prefix . 'redirect_uri',
|
189 |
+
'type' => 'text',
|
190 |
+
'description' => esc_html__( 'Leave blank to keep users on the current page.', 'constant-contact-forms' ),
|
191 |
+
'sanitization_cb' => 'constant_contact_clean_url',
|
192 |
) );
|
193 |
|
194 |
$options_metabox->add_field( array(
|
195 |
+
'name' => __( 'No page refresh', 'constant-contact-forms' ),
|
196 |
'id' => $this->prefix . 'do_ajax',
|
197 |
'type' => 'checkbox',
|
198 |
+
'description' => __( 'Enable form submission without a page refresh. This option overrides the Redirect URL choice above.', 'constant-contact-forms' ),
|
199 |
) );
|
200 |
|
201 |
|
217 |
$overall_description = sprintf(
|
218 |
'<hr/><p>%s %s</p>',
|
219 |
esc_html__(
|
220 |
+
'Enabling this option will require users to check a box to be added to your list.',
|
221 |
'constant-contact-forms'
|
222 |
),
|
223 |
sprintf(
|
224 |
+
'<a href="%s" target="_blank">%s</a>',
|
225 |
'https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18260-WordPress-Constant-Contact-Forms-Options',
|
226 |
esc_html__( 'Learn more', 'constant-contact-forms' )
|
227 |
)
|
273 |
*/
|
274 |
public function show_enable_show_checkbox_field( $options_metabox ) {
|
275 |
|
276 |
+
$description = esc_html__( 'Add a checkbox so subscribers can opt-in to your email list.', 'constant-contact-forms' );
|
277 |
$description .= '<br>';
|
278 |
$description .= esc_html__( '(For use with Contact Us form)', 'constant-contact-forms' );
|
279 |
|
includes/class-check.php
CHANGED
@@ -54,7 +54,7 @@ class ConstantContact_Check {
|
|
54 |
|
55 |
<p><?php
|
56 |
// Check our cron status.
|
57 |
-
esc_html( $this->cron_spawn() ); ?>
|
58 |
</p>
|
59 |
</div>
|
60 |
<?php
|
@@ -188,7 +188,7 @@ class ConstantContact_Check {
|
|
188 |
$result = wp_remote_post( $cron_request['url'], $cron_request['args'] );
|
189 |
|
190 |
if ( is_wp_error( $result ) ) {
|
191 |
-
return $result;
|
192 |
} elseif ( wp_remote_retrieve_response_code( $result ) >= 300 ) {
|
193 |
return sprintf(
|
194 |
// translators: placeholder iwll have an HTTP response code value.
|
54 |
|
55 |
<p><?php
|
56 |
// Check our cron status.
|
57 |
+
echo esc_html( $this->cron_spawn() ); ?>
|
58 |
</p>
|
59 |
</div>
|
60 |
<?php
|
188 |
$result = wp_remote_post( $cron_request['url'], $cron_request['args'] );
|
189 |
|
190 |
if ( is_wp_error( $result ) ) {
|
191 |
+
return $result->get_error_message();
|
192 |
} elseif ( wp_remote_retrieve_response_code( $result ) >= 300 ) {
|
193 |
return sprintf(
|
194 |
// translators: placeholder iwll have an HTTP response code value.
|
includes/class-display.php
CHANGED
@@ -89,6 +89,10 @@ class ConstantContact_Display {
|
|
89 |
*/
|
90 |
public function form( $form_data, $form_id = '', $skip_styles = false ) {
|
91 |
|
|
|
|
|
|
|
|
|
92 |
// Enqueue some things.
|
93 |
if ( ! $skip_styles ) {
|
94 |
$this->styles( true );
|
@@ -186,6 +190,8 @@ class ConstantContact_Display {
|
|
186 |
// Add our disclose notice maybe.
|
187 |
$return .= wp_kses_post( $this->maybe_add_disclose_note( $form_data ) );
|
188 |
|
|
|
|
|
189 |
$return .= '</form>';
|
190 |
|
191 |
$return .= '<script type="text/javascript">';
|
@@ -356,6 +362,22 @@ class ConstantContact_Display {
|
|
356 |
return '<input type="hidden" name="ctct_time" value="' . time() . '" />';
|
357 |
}
|
358 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
359 |
/**
|
360 |
* Wrapper for single field display.
|
361 |
*
|
@@ -970,14 +992,22 @@ class ConstantContact_Display {
|
|
970 |
$v_state = isset( $value['state_address'] ) ? $value['state_address'] : '';
|
971 |
$v_zip = isset( $value['zip_address'] ) ? $value['zip'] : '';
|
972 |
|
973 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
974 |
$req_class = $req ? ' ctct-form-field-required ' : '';
|
|
|
975 |
|
976 |
// Build our field.
|
977 |
$return = '<fieldset class="ctct-address">';
|
978 |
$return .= ' <legend>' . esc_attr( $name ) . '</legend>';
|
979 |
$return .= ' <div class="ctct-form-field ctct-field-full address-line-1' . $req_class . '">';
|
980 |
-
$return .= ' <label for="street_' . esc_attr( $f_id ) . '">' . esc_attr( $street ) . '</label>';
|
981 |
$return .= ' <input ' . $req . 'type="text" class="ctct-text ctct-address-street" name="street_' . esc_attr( $f_id ) . '" id="street_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_street ) . '">';
|
982 |
$return .= ' </div>';
|
983 |
// Address Line 2 is not required, note the missing $req inclusion.
|
@@ -986,15 +1016,15 @@ class ConstantContact_Display {
|
|
986 |
$return .= ' <input type="text" class="ctct-text ctct-address-line-2" name="line_2_' . esc_attr( $f_id ) . '" id="line_2_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_line_2 ) . '">';
|
987 |
$return .= ' </div>';
|
988 |
$return .= ' <div class="ctct-form-field ctct-field-third address-city' . $req_class . '" id="input_2_1_3_container">';
|
989 |
-
$return .= ' <label for="city_' . esc_attr( $f_id ) . '">' . esc_attr( $city ) . '</label>';
|
990 |
$return .= ' <input ' . $req . 'type="text" class="ctct-text ctct-address-city" name="city_' . esc_attr( $f_id ) . '" id="city_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_city ) . '">';
|
991 |
$return .= ' </div>';
|
992 |
$return .= ' <div class="ctct-form-field ctct-field-third address-state' . $req_class . '" id="input_2_1_4_container">';
|
993 |
-
$return .= ' <label for="state_' . esc_attr( $f_id ) . '">' . esc_attr( $state ) . '</label>';
|
994 |
$return .= ' <input ' . $req . 'type="text" class="ctct-text ctct-address-state" name="state_' . esc_attr( $f_id ) . '" id="state_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_state ) . '">';
|
995 |
$return .= ' </div>';
|
996 |
$return .= ' <div class="ctct-form-field ctct-field-third address-zip' . $req_class . '" id="input_2_1_5_container">';
|
997 |
-
$return .= ' <label for="zip_' . esc_attr( $f_id ) . '">' . esc_attr( $zip ) . '</label>';
|
998 |
$return .= ' <input ' . $req . 'type="text" class="ctct-text ctct-address-zip" name="zip_' . esc_attr( $f_id ) . '" id="zip_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_zip ) . '">';
|
999 |
$return .= ' </div>';
|
1000 |
$return .= '</fieldset>';
|
89 |
*/
|
90 |
public function form( $form_data, $form_id = '', $skip_styles = false ) {
|
91 |
|
92 |
+
if ( 'publish' !== get_post_status( $form_id ) ) {
|
93 |
+
return '';
|
94 |
+
}
|
95 |
+
|
96 |
// Enqueue some things.
|
97 |
if ( ! $skip_styles ) {
|
98 |
$this->styles( true );
|
190 |
// Add our disclose notice maybe.
|
191 |
$return .= wp_kses_post( $this->maybe_add_disclose_note( $form_data ) );
|
192 |
|
193 |
+
$return .= $this->must_opt_in( $form_data );
|
194 |
+
|
195 |
$return .= '</form>';
|
196 |
|
197 |
$return .= '<script type="text/javascript">';
|
362 |
return '<input type="hidden" name="ctct_time" value="' . time() . '" />';
|
363 |
}
|
364 |
|
365 |
+
/**
|
366 |
+
* Use a hidden field to denote needing to opt in.
|
367 |
+
*
|
368 |
+
* @since 1.3.6
|
369 |
+
*
|
370 |
+
* @param array $form_data
|
371 |
+
* @return string
|
372 |
+
*/
|
373 |
+
public function must_opt_in( array $form_data ) {
|
374 |
+
if ( empty( $form_data['options']['optin']['show'] ) ) {
|
375 |
+
return '';
|
376 |
+
}
|
377 |
+
|
378 |
+
return '<input type="hidden" name="ctct_must_opt_in" value="yes" />';
|
379 |
+
}
|
380 |
+
|
381 |
/**
|
382 |
* Wrapper for single field display.
|
383 |
*
|
992 |
$v_state = isset( $value['state_address'] ) ? $value['state_address'] : '';
|
993 |
$v_zip = isset( $value['zip_address'] ) ? $value['zip'] : '';
|
994 |
|
995 |
+
/**
|
996 |
+
* Filters the markup used for the required indicator.
|
997 |
+
*
|
998 |
+
* @since 1.0.0
|
999 |
+
*
|
1000 |
+
* @param string $value An `<abbr>` tag with an asterisk indicating required status.
|
1001 |
+
*/
|
1002 |
+
$req_label = $req ? ' ' . apply_filters( 'constant_contact_required_label', '<abbr title="required">*</abbr>' ) : '';
|
1003 |
$req_class = $req ? ' ctct-form-field-required ' : '';
|
1004 |
+
$req = $req ? ' required ' : '';
|
1005 |
|
1006 |
// Build our field.
|
1007 |
$return = '<fieldset class="ctct-address">';
|
1008 |
$return .= ' <legend>' . esc_attr( $name ) . '</legend>';
|
1009 |
$return .= ' <div class="ctct-form-field ctct-field-full address-line-1' . $req_class . '">';
|
1010 |
+
$return .= ' <label for="street_' . esc_attr( $f_id ) . '">' . esc_attr( $street ) . $req_label . '</label>';
|
1011 |
$return .= ' <input ' . $req . 'type="text" class="ctct-text ctct-address-street" name="street_' . esc_attr( $f_id ) . '" id="street_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_street ) . '">';
|
1012 |
$return .= ' </div>';
|
1013 |
// Address Line 2 is not required, note the missing $req inclusion.
|
1016 |
$return .= ' <input type="text" class="ctct-text ctct-address-line-2" name="line_2_' . esc_attr( $f_id ) . '" id="line_2_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_line_2 ) . '">';
|
1017 |
$return .= ' </div>';
|
1018 |
$return .= ' <div class="ctct-form-field ctct-field-third address-city' . $req_class . '" id="input_2_1_3_container">';
|
1019 |
+
$return .= ' <label for="city_' . esc_attr( $f_id ) . '">' . esc_attr( $city ) . $req_label . '</label>';
|
1020 |
$return .= ' <input ' . $req . 'type="text" class="ctct-text ctct-address-city" name="city_' . esc_attr( $f_id ) . '" id="city_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_city ) . '">';
|
1021 |
$return .= ' </div>';
|
1022 |
$return .= ' <div class="ctct-form-field ctct-field-third address-state' . $req_class . '" id="input_2_1_4_container">';
|
1023 |
+
$return .= ' <label for="state_' . esc_attr( $f_id ) . '">' . esc_attr( $state ) . $req_label . '</label>';
|
1024 |
$return .= ' <input ' . $req . 'type="text" class="ctct-text ctct-address-state" name="state_' . esc_attr( $f_id ) . '" id="state_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_state ) . '">';
|
1025 |
$return .= ' </div>';
|
1026 |
$return .= ' <div class="ctct-form-field ctct-field-third address-zip' . $req_class . '" id="input_2_1_5_container">';
|
1027 |
+
$return .= ' <label for="zip_' . esc_attr( $f_id ) . '">' . esc_attr( $zip ) . $req_label . '</label>';
|
1028 |
$return .= ' <input ' . $req . 'type="text" class="ctct-text ctct-address-zip" name="zip_' . esc_attr( $f_id ) . '" id="zip_' . esc_attr( $f_id ) . '" value="' . esc_attr( $v_zip ) . '">';
|
1029 |
$return .= ' </div>';
|
1030 |
$return .= '</fieldset>';
|
includes/class-mail.php
CHANGED
@@ -69,6 +69,7 @@ class ConstantContact_Mail {
|
|
69 |
if ( 'on' !== $maybe_bypass ) {
|
70 |
/**
|
71 |
* Filters the delay between scheduling of the opt-in e-mail event.
|
|
|
72 |
* @since 1.0.2
|
73 |
*
|
74 |
* @param int $schedule_delay The time to add to `time()` for the event.
|
@@ -78,6 +79,8 @@ class ConstantContact_Mail {
|
|
78 |
}
|
79 |
}
|
80 |
|
|
|
|
|
81 |
// Preserve form ID for mail() method. Lost in pretty_values() pass.
|
82 |
$submission_details = array();
|
83 |
$submission_details['form_id'] = $values['ctct-id']['value'];
|
@@ -88,17 +91,41 @@ class ConstantContact_Mail {
|
|
88 |
|
89 |
// Format them.
|
90 |
$email_values = $this->format_values_for_email( $values );
|
|
|
91 |
|
92 |
// Increment our counter for processed form entries.
|
93 |
constant_contact()->process_form->increment_processed_form_count();
|
94 |
|
95 |
-
// Skip sending e-mail if we're connected
|
96 |
-
if ( constant_contact()->api->is_connected() && ( 'on' === ctct_get_settings_option( '_ctct_disable_email_notifications' ) ) ) {
|
97 |
return true;
|
98 |
}
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
// Send the mail.
|
101 |
-
return $this->mail( $this->get_email(), $email_values, $submission_details );
|
102 |
}
|
103 |
|
104 |
/**
|
@@ -201,13 +228,15 @@ class ConstantContact_Mail {
|
|
201 |
* Sends our mail out.
|
202 |
*
|
203 |
* @since 1.0.0
|
|
|
204 |
*
|
205 |
* @param string $destination_email Intended mail address.
|
206 |
* @param string $content Data from clean values.
|
207 |
* @param array $submission_details Details for submission to process.
|
|
|
208 |
* @return bool Whether or not sent.
|
209 |
*/
|
210 |
-
public function mail( $destination_email, $content, $submission_details ) {
|
211 |
|
212 |
// Define a mail key for the cache.
|
213 |
static $last_sent = false;
|
@@ -246,9 +275,24 @@ class ConstantContact_Mail {
|
|
246 |
// Filter to allow sending HTML for our message body.
|
247 |
add_filter( 'wp_mail_content_type', array( $this, 'set_email_type' ) );
|
248 |
|
249 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
|
251 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
|
253 |
/**
|
254 |
* Filters the final constructed email content to be sent to an admin.
|
@@ -280,8 +324,9 @@ class ConstantContact_Mail {
|
|
280 |
* @since 1.3.0
|
281 |
*
|
282 |
* @param string $value Constructed email subject.
|
|
|
283 |
*/
|
284 |
-
apply_filters( 'constant_contact_email_subject', __( '
|
285 |
$content
|
286 |
);
|
287 |
|
@@ -357,4 +402,63 @@ class ConstantContact_Mail {
|
|
357 |
return $value['value'];
|
358 |
}
|
359 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
}
|
69 |
if ( 'on' !== $maybe_bypass ) {
|
70 |
/**
|
71 |
* Filters the delay between scheduling of the opt-in e-mail event.
|
72 |
+
*
|
73 |
* @since 1.0.2
|
74 |
*
|
75 |
* @param int $schedule_delay The time to add to `time()` for the event.
|
79 |
}
|
80 |
}
|
81 |
|
82 |
+
$opt_in_details = ( isset( $values['ctct-opt-in'] ) ) ? $values['ctct-opt-in'] : array();
|
83 |
+
|
84 |
// Preserve form ID for mail() method. Lost in pretty_values() pass.
|
85 |
$submission_details = array();
|
86 |
$submission_details['form_id'] = $values['ctct-id']['value'];
|
91 |
|
92 |
// Format them.
|
93 |
$email_values = $this->format_values_for_email( $values );
|
94 |
+
$was_forced = false; // Set a value regardless of status.
|
95 |
|
96 |
// Increment our counter for processed form entries.
|
97 |
constant_contact()->process_form->increment_processed_form_count();
|
98 |
|
99 |
+
// Skip sending e-mail if we're connected, the site owner has opted out of notification emails, and the user has opted in
|
100 |
+
if ( constant_contact()->api->is_connected() && ( 'on' === ctct_get_settings_option( '_ctct_disable_email_notifications' ) ) && $add_to_opt_in ) { // If we have $add_to_opt_in, we should already have a list.
|
101 |
return true;
|
102 |
}
|
103 |
|
104 |
+
// This would allow for setting each sections error and also allow for returning early again for cases
|
105 |
+
// like having a list, but not needing to opt in.
|
106 |
+
$has_list = get_post_meta( $submission_details['form_id'], '_ctct_list', true );
|
107 |
+
|
108 |
+
// Checks if we have a list
|
109 |
+
if (
|
110 |
+
( ! constant_contact()->api->is_connected() || empty( $has_list ) ) &&
|
111 |
+
( 'on' === ctct_get_settings_option( '_ctct_disable_email_notifications' ) )
|
112 |
+
) { // If we're not connected or have no list set AND we've disabled. Override.
|
113 |
+
|
114 |
+
$submission_details['list-available'] = 'no';
|
115 |
+
$was_forced = true;
|
116 |
+
}
|
117 |
+
|
118 |
+
if (
|
119 |
+
! empty( $_POST['ctct_must_opt_in'] ) &&
|
120 |
+
empty( $opt_in_details ) &&
|
121 |
+
( 'on' === ctct_get_settings_option( '_ctct_disable_email_notifications' ) )
|
122 |
+
) {
|
123 |
+
$submission_details['opted-in'] = 'no';
|
124 |
+
$was_forced = true;
|
125 |
+
}
|
126 |
+
|
127 |
// Send the mail.
|
128 |
+
return $this->mail( $this->get_email(), $email_values, $submission_details, $was_forced );
|
129 |
}
|
130 |
|
131 |
/**
|
228 |
* Sends our mail out.
|
229 |
*
|
230 |
* @since 1.0.0
|
231 |
+
* @since 1.3.6 Added $was_forced.
|
232 |
*
|
233 |
* @param string $destination_email Intended mail address.
|
234 |
* @param string $content Data from clean values.
|
235 |
* @param array $submission_details Details for submission to process.
|
236 |
+
* @param bool $was_forced Whether or not we are force sending. Default false.
|
237 |
* @return bool Whether or not sent.
|
238 |
*/
|
239 |
+
public function mail( $destination_email, $content, $submission_details, $was_forced = false ) {
|
240 |
|
241 |
// Define a mail key for the cache.
|
242 |
static $last_sent = false;
|
275 |
// Filter to allow sending HTML for our message body.
|
276 |
add_filter( 'wp_mail_content_type', array( $this, 'set_email_type' ) );
|
277 |
|
278 |
+
$content_notice_note = $this->maybe_append_forced_email_notice_note( $was_forced );
|
279 |
+
$content_notice_reasons = $this->maybe_append_forced_email_notice_reasons( $was_forced, $submission_details );
|
280 |
+
|
281 |
+
$content_before = esc_html__( 'Your Constant Contact Forms plugin has captured new information.', 'constant-contact-forms' );
|
282 |
+
|
283 |
+
$content_before = $content_notice_note . $content_before . $content_notice_reasons;
|
284 |
+
|
285 |
+
$content_title = '<p><strong>' . esc_html__( 'Form title: ', 'constant-contact-forms' ) . '</strong>' . get_the_title( $submission_details['form_id'] ) . '<br/>';
|
286 |
+
$content_title .= '<strong>' . esc_html__( 'Form information: ', 'constant-contact-forms' ) . '</strong></p>';
|
287 |
|
288 |
+
$content = $content_title . $content;
|
289 |
+
|
290 |
+
|
291 |
+
$content_after = sprintf(
|
292 |
+
esc_html__( "Email marketing is a great way to stay connected and engage with visitors after they've left your site. Visit %shttps://www.constantcontact.com/index?pn=miwordpress%s to sign up for a Free Trial.", 'constant-contact-forms' ),
|
293 |
+
'<a href="https://www.constantcontact.com/index?pn=miwordpress">',
|
294 |
+
'</a>'
|
295 |
+
);
|
296 |
|
297 |
/**
|
298 |
* Filters the final constructed email content to be sent to an admin.
|
324 |
* @since 1.3.0
|
325 |
*
|
326 |
* @param string $value Constructed email subject.
|
327 |
+
* @param string $value Constant Contact Form ID.
|
328 |
*/
|
329 |
+
apply_filters( 'constant_contact_email_subject', __( 'Constant Contact Forms Notification', 'constant-contact-forms' ), $submission_details['form_id'] ),
|
330 |
$content
|
331 |
);
|
332 |
|
402 |
return $value['value'];
|
403 |
}
|
404 |
}
|
405 |
+
|
406 |
+
/**
|
407 |
+
* Potentially add initial note for why we are emailing the site owner.
|
408 |
+
*
|
409 |
+
* @since 1.3.6
|
410 |
+
*
|
411 |
+
* @param bool $was_forced Whether or not we have to force send an email.
|
412 |
+
* @return string $value Message to explain why an email was received.
|
413 |
+
*/
|
414 |
+
public function maybe_append_forced_email_notice_note( $was_forced = false ) {
|
415 |
+
|
416 |
+
if ( ! $was_forced ) {
|
417 |
+
return '';
|
418 |
+
}
|
419 |
+
|
420 |
+
return sprintf(
|
421 |
+
'<p>' . esc_html__( '%sNote:%s You have disabled admin email notifications under the plugin settings, but are receiving this email because of the following reason.', 'constant-contact-forms' ) . '</p>',
|
422 |
+
'<strong>*',
|
423 |
+
'</strong>'
|
424 |
+
);
|
425 |
+
|
426 |
+
}
|
427 |
+
|
428 |
+
/**
|
429 |
+
* Potentially add email content regarding reason we're emailing the site owner.
|
430 |
+
*
|
431 |
+
* @since 1.3.6
|
432 |
+
*
|
433 |
+
* @param bool $was_forced Whether or not we have to force send an email.
|
434 |
+
* @param array $submission_details Array of submission details that we tack reasons to send email in.
|
435 |
+
* @return string
|
436 |
+
*/
|
437 |
+
public function maybe_append_forced_email_notice_reasons( $was_forced = false, $submission_details = array() ) {
|
438 |
+
|
439 |
+
if ( ! $was_forced ) {
|
440 |
+
return '';
|
441 |
+
}
|
442 |
+
|
443 |
+
$content_notice = '';
|
444 |
+
$template = '<p><strong>' . esc_html__( 'Submitted to Constant Contact:', 'constant-contact-forms' ) . '</strong> %s</p>';
|
445 |
+
|
446 |
+
if ( isset( $submission_details['list-available'] ) || isset( $submission_details['opted-in'] ) ) {
|
447 |
+
if ( isset( $submission_details['list-available'] ) && 'no' === $submission_details['list-available'] ) {
|
448 |
+
$content_notice .= sprintf(
|
449 |
+
$template,
|
450 |
+
esc_html__( 'NO (Constant Contact list not selected for this form)', 'constant-contact-forms' )
|
451 |
+
);
|
452 |
+
}
|
453 |
+
if ( isset( $submission_details['opted-in'] ) && 'no' === $submission_details['opted-in'] ) {
|
454 |
+
$content_notice .= sprintf(
|
455 |
+
$template,
|
456 |
+
esc_html__( 'NO (User did not select the Email Opt-in checkbox)', 'constant-contact-forms' ) . '<br/>' . esc_html__( "You can disable this under Form options. Email Opt-in isn't required to add subscribers into your account", 'constant-contact-forms' )
|
457 |
+
|
458 |
+
);
|
459 |
+
}
|
460 |
+
}
|
461 |
+
|
462 |
+
return $content_notice;
|
463 |
+
}
|
464 |
}
|
includes/class-process-form.php
CHANGED
@@ -721,6 +721,10 @@ class ConstantContact_Process_Form {
|
|
721 |
|
722 |
$has_all = true;
|
723 |
foreach( $original as $key => $value ) {
|
|
|
|
|
|
|
|
|
724 |
if (
|
725 |
isset( $form_data[ $key ] ) &&
|
726 |
true === $value['required'] &&
|
721 |
|
722 |
$has_all = true;
|
723 |
foreach( $original as $key => $value ) {
|
724 |
+
if ( isset( $value['_ctct_map_select'] ) && 'line_2' === $value['_ctct_map_select'] ) {
|
725 |
+
continue;
|
726 |
+
}
|
727 |
+
|
728 |
if (
|
729 |
isset( $form_data[ $key ] ) &&
|
730 |
true === $value['required'] &&
|
includes/class-settings.php
CHANGED
@@ -161,8 +161,8 @@ class ConstantContact_Settings {
|
|
161 |
|
162 |
$this->options_page = add_submenu_page(
|
163 |
'edit.php?post_type=ctct_forms',
|
164 |
-
|
165 |
-
|
166 |
'manage_options',
|
167 |
$this->key,
|
168 |
array( $this, 'admin_page_display' )
|
@@ -248,7 +248,7 @@ class ConstantContact_Settings {
|
|
248 |
public function do_lists_field( $cmb ) {
|
249 |
|
250 |
$cmb->add_field( array(
|
251 |
-
'name' =>
|
252 |
'id' => '_ctct_data_tracking',
|
253 |
'type' => 'checkbox',
|
254 |
'desc' => __( 'Allow Constant Contact to use Google Analytics™ to track your usage across the Constant Contact Forms plugin.<br/> NOTE — Your website and users will not be tracked. See our <a href="https://www.constantcontact.com/legal/privacy-statement"> Privacy Statement</a> information about what is and is not tracked.', 'constant-contact-forms' ),
|
@@ -259,8 +259,8 @@ class ConstantContact_Settings {
|
|
259 |
|
260 |
// Add field to disable e-mail notifications.
|
261 |
$cmb->add_field( array(
|
262 |
-
'name' =>
|
263 |
-
'desc' =>
|
264 |
'id' => '_ctct_disable_email_notifications',
|
265 |
'type' => 'checkbox',
|
266 |
'before_row' => '<hr/>',
|
@@ -268,8 +268,8 @@ class ConstantContact_Settings {
|
|
268 |
|
269 |
// Make API contact requests immediately instead of via cron.
|
270 |
$cmb->add_field( array(
|
271 |
-
'name' =>
|
272 |
-
'desc' =>
|
273 |
'id' => '_ctct_bypass_cron',
|
274 |
'type' => 'checkbox',
|
275 |
'before_row' => '<hr/>',
|
@@ -287,7 +287,7 @@ class ConstantContact_Settings {
|
|
287 |
|
288 |
// Set our CMB2 fields.
|
289 |
$cmb->add_field( array(
|
290 |
-
'name' =>
|
291 |
'id' => '_ctct_optin_forms',
|
292 |
'type' => 'multicheck',
|
293 |
'options' => $this->get_optin_show_options(),
|
@@ -295,19 +295,19 @@ class ConstantContact_Settings {
|
|
295 |
) );
|
296 |
|
297 |
// Tack on 'select a list' to our lists array.
|
298 |
-
$lists[0] =
|
299 |
|
300 |
$cmb->add_field( array(
|
301 |
-
'name' =>
|
302 |
'id' => '_ctct_optin_list',
|
303 |
'type' => 'select',
|
304 |
'show_option_none' => false,
|
305 |
-
'default' =>
|
306 |
'options' => $lists,
|
307 |
) );
|
308 |
|
309 |
// Get the business name and address.
|
310 |
-
$business_name = get_bloginfo( 'name' ) ?:
|
311 |
$business_addr = '';
|
312 |
|
313 |
// We might be able to get it from the API?
|
@@ -319,16 +319,16 @@ class ConstantContact_Settings {
|
|
319 |
}
|
320 |
|
321 |
$cmb->add_field( array(
|
322 |
-
'name' =>
|
323 |
'id' => '_ctct_optin_label',
|
324 |
'type' => 'text',
|
325 |
// translators: placeholder will hold site owner's business name.
|
326 |
-
'default' => sprintf(
|
327 |
) );
|
328 |
|
329 |
if ( empty( $disclosure_info ) ) {
|
330 |
$cmb->add_field( array(
|
331 |
-
'name' =>
|
332 |
'id' => '_ctct_disclose_name',
|
333 |
'type' => 'text',
|
334 |
'default' => $business_name,
|
@@ -336,7 +336,7 @@ class ConstantContact_Settings {
|
|
336 |
) );
|
337 |
|
338 |
$cmb->add_field( array(
|
339 |
-
'name' =>
|
340 |
'id' => '_ctct_disclose_address',
|
341 |
'type' => 'text',
|
342 |
'default' => $business_addr,
|
@@ -352,14 +352,14 @@ class ConstantContact_Settings {
|
|
352 |
'<div class="discover-recaptcha">' . __( 'Learn more and get an <a href="https://www.google.com/recaptcha/intro/" target="_blank">API site key</a>', 'constant-contact-forms' ) . '</div>'
|
353 |
);
|
354 |
$cmb->add_field( array(
|
355 |
-
'name' =>
|
356 |
'id' => '_ctct_recaptcha_site_key',
|
357 |
'type' => 'text',
|
358 |
'before_row' => $before_recaptcha,
|
359 |
) );
|
360 |
|
361 |
$cmb->add_field( array(
|
362 |
-
'name' =>
|
363 |
'id' => '_ctct_recaptcha_secret_key',
|
364 |
'type' => 'text',
|
365 |
) );
|
@@ -376,13 +376,13 @@ class ConstantContact_Settings {
|
|
376 |
|
377 |
// Set up our default options.
|
378 |
$optin_options = array(
|
379 |
-
'comment_form' =>
|
380 |
-
'login_form' =>
|
381 |
);
|
382 |
|
383 |
// If users can register, then allow this option as well.
|
384 |
if ( get_option( 'users_can_register' ) ) {
|
385 |
-
$optin_options['reg_form'] =
|
386 |
}
|
387 |
|
388 |
// Send em back.
|
@@ -471,7 +471,7 @@ class ConstantContact_Settings {
|
|
471 |
$list = ctct_get_settings_option( '_ctct_optin_list' );
|
472 |
|
473 |
// Otherwise, use our default.
|
474 |
-
$label = $saved_label ? $saved_label :
|
475 |
|
476 |
?><p class="ctct-optin-wrapper" style="padding: 0 0 1em 0;">
|
477 |
<label for="ctct_optin">
|
@@ -682,7 +682,7 @@ class ConstantContact_Settings {
|
|
682 |
}
|
683 |
|
684 |
// Output any errors / notices we need.
|
685 |
-
add_settings_error( $this->key . '-notices', '',
|
686 |
settings_errors( $this->key . '-notices' );
|
687 |
}
|
688 |
|
161 |
|
162 |
$this->options_page = add_submenu_page(
|
163 |
'edit.php?post_type=ctct_forms',
|
164 |
+
esc_html__( 'Constant Contact Forms Settings', 'constant-contact-forms' ),
|
165 |
+
esc_html__( 'Settings', 'constant-contact-forms' ),
|
166 |
'manage_options',
|
167 |
$this->key,
|
168 |
array( $this, 'admin_page_display' )
|
248 |
public function do_lists_field( $cmb ) {
|
249 |
|
250 |
$cmb->add_field( array(
|
251 |
+
'name' => esc_html__( 'Google Analytics™ tracking opt-in.', 'constant-contact-forms' ),
|
252 |
'id' => '_ctct_data_tracking',
|
253 |
'type' => 'checkbox',
|
254 |
'desc' => __( 'Allow Constant Contact to use Google Analytics™ to track your usage across the Constant Contact Forms plugin.<br/> NOTE — Your website and users will not be tracked. See our <a href="https://www.constantcontact.com/legal/privacy-statement"> Privacy Statement</a> information about what is and is not tracked.', 'constant-contact-forms' ),
|
259 |
|
260 |
// Add field to disable e-mail notifications.
|
261 |
$cmb->add_field( array(
|
262 |
+
'name' => esc_html__( 'Disable E-mail Notifications', 'constant-contact-forms' ),
|
263 |
+
'desc' => sprintf( esc_html__( 'This option will disable e-mail notifications for forms with a selected list and successfully submit to Constant Contact.%s Notifications are sent to the email address listed under Wordpress "General Settings".', 'constant-contact-forms' ), '<br/>' ),
|
264 |
'id' => '_ctct_disable_email_notifications',
|
265 |
'type' => 'checkbox',
|
266 |
'before_row' => '<hr/>',
|
268 |
|
269 |
// Make API contact requests immediately instead of via cron.
|
270 |
$cmb->add_field( array(
|
271 |
+
'name' => esc_html__( 'Bypass Constant Contact cron scheduling', 'constant-contact-forms' ),
|
272 |
+
'desc' => esc_html__( 'This option will send form entries to Constant Contact right away instead of holding for one minute delay.', 'constant-contact-forms' ),
|
273 |
'id' => '_ctct_bypass_cron',
|
274 |
'type' => 'checkbox',
|
275 |
'before_row' => '<hr/>',
|
287 |
|
288 |
// Set our CMB2 fields.
|
289 |
$cmb->add_field( array(
|
290 |
+
'name' => esc_html__( 'Opt-in Location', 'constant-contact-forms' ),
|
291 |
'id' => '_ctct_optin_forms',
|
292 |
'type' => 'multicheck',
|
293 |
'options' => $this->get_optin_show_options(),
|
295 |
) );
|
296 |
|
297 |
// Tack on 'select a list' to our lists array.
|
298 |
+
$lists[0] = esc_html__( 'Select a list', 'constant-contact-forms' );
|
299 |
|
300 |
$cmb->add_field( array(
|
301 |
+
'name' => esc_html__( 'Add subscribers to', 'constant-contact-forms' ),
|
302 |
'id' => '_ctct_optin_list',
|
303 |
'type' => 'select',
|
304 |
'show_option_none' => false,
|
305 |
+
'default' => esc_html__( 'Select a list', 'constant-contact-forms' ),
|
306 |
'options' => $lists,
|
307 |
) );
|
308 |
|
309 |
// Get the business name and address.
|
310 |
+
$business_name = get_bloginfo( 'name' ) ?: esc_html__( 'Business Name', 'constant-contact-forms' );
|
311 |
$business_addr = '';
|
312 |
|
313 |
// We might be able to get it from the API?
|
319 |
}
|
320 |
|
321 |
$cmb->add_field( array(
|
322 |
+
'name' => esc_html__( 'Opt-in Affirmation', 'constant-contact-forms' ),
|
323 |
'id' => '_ctct_optin_label',
|
324 |
'type' => 'text',
|
325 |
// translators: placeholder will hold site owner's business name.
|
326 |
+
'default' => sprintf( esc_html__( 'Yes, I would like to receive emails from %s. Sign me up!', 'constant-contact-forms' ), $business_name ),
|
327 |
) );
|
328 |
|
329 |
if ( empty( $disclosure_info ) ) {
|
330 |
$cmb->add_field( array(
|
331 |
+
'name' => esc_html__( 'Disclosure Name', 'constant-contact-forms' ),
|
332 |
'id' => '_ctct_disclose_name',
|
333 |
'type' => 'text',
|
334 |
'default' => $business_name,
|
336 |
) );
|
337 |
|
338 |
$cmb->add_field( array(
|
339 |
+
'name' => esc_html__( 'Disclosure Address', 'constant-contact-forms' ),
|
340 |
'id' => '_ctct_disclose_address',
|
341 |
'type' => 'text',
|
342 |
'default' => $business_addr,
|
352 |
'<div class="discover-recaptcha">' . __( 'Learn more and get an <a href="https://www.google.com/recaptcha/intro/" target="_blank">API site key</a>', 'constant-contact-forms' ) . '</div>'
|
353 |
);
|
354 |
$cmb->add_field( array(
|
355 |
+
'name' => esc_html__( 'Site Key', 'constant-contact-forms' ),
|
356 |
'id' => '_ctct_recaptcha_site_key',
|
357 |
'type' => 'text',
|
358 |
'before_row' => $before_recaptcha,
|
359 |
) );
|
360 |
|
361 |
$cmb->add_field( array(
|
362 |
+
'name' => esc_html__( 'Secret Key', 'constant-contact-forms' ),
|
363 |
'id' => '_ctct_recaptcha_secret_key',
|
364 |
'type' => 'text',
|
365 |
) );
|
376 |
|
377 |
// Set up our default options.
|
378 |
$optin_options = array(
|
379 |
+
'comment_form' => esc_html__( 'Add a checkbox to the comment field in your posts', 'constant-contact-forms' ),
|
380 |
+
'login_form' => esc_html__( 'Add a checkbox to the main WordPress login page', 'constant-contact-forms' ),
|
381 |
);
|
382 |
|
383 |
// If users can register, then allow this option as well.
|
384 |
if ( get_option( 'users_can_register' ) ) {
|
385 |
+
$optin_options['reg_form'] = esc_html__( 'Add a checkbox to the WordPress user registration page', 'constant-contact-forms' );
|
386 |
}
|
387 |
|
388 |
// Send em back.
|
471 |
$list = ctct_get_settings_option( '_ctct_optin_list' );
|
472 |
|
473 |
// Otherwise, use our default.
|
474 |
+
$label = $saved_label ? $saved_label : esc_html__( 'Sign up to our newsletter.', 'constant-contact-forms' );
|
475 |
|
476 |
?><p class="ctct-optin-wrapper" style="padding: 0 0 1em 0;">
|
477 |
<label for="ctct_optin">
|
682 |
}
|
683 |
|
684 |
// Output any errors / notices we need.
|
685 |
+
add_settings_error( $this->key . '-notices', '', esc_html__( 'Settings updated.', 'constant-contact-forms' ), 'updated' );
|
686 |
settings_errors( $this->key . '-notices' );
|
687 |
}
|
688 |
|
includes/class-user-customizations.php
CHANGED
@@ -73,6 +73,6 @@ class ConstantContact_User_Customizations {
|
|
73 |
return $url;
|
74 |
}
|
75 |
|
76 |
-
return $custom;
|
77 |
}
|
78 |
}
|
73 |
return $url;
|
74 |
}
|
75 |
|
76 |
+
return constant_contact_clean_url( $custom );
|
77 |
}
|
78 |
}
|
includes/helper-functions.php
CHANGED
@@ -318,3 +318,24 @@ function constant_contact_check_timestamps( $maybe_spam, $data ) {
|
|
318 |
return $maybe_spam;
|
319 |
}
|
320 |
add_filter( 'constant_contact_maybe_spam', 'constant_contact_check_timestamps', 10, 2 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
318 |
return $maybe_spam;
|
319 |
}
|
320 |
add_filter( 'constant_contact_maybe_spam', 'constant_contact_check_timestamps', 10, 2 );
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Clean and correctly protocol an given URL.
|
324 |
+
*
|
325 |
+
* @since 1.3.6
|
326 |
+
*
|
327 |
+
* @param string $url
|
328 |
+
* @return string
|
329 |
+
*/
|
330 |
+
function constant_contact_clean_url( $url = '' ) {
|
331 |
+
// Reject and return untouched if not provided a string.
|
332 |
+
if ( ! is_string( $url ) ) {
|
333 |
+
return $url;
|
334 |
+
}
|
335 |
+
|
336 |
+
$clean_url = esc_url( $url );
|
337 |
+
if ( is_ssl() && 'http' === parse_url( $clean_url, PHP_URL_SCHEME ) ) {
|
338 |
+
$clean_url = str_replace( 'http', 'https', $clean_url );
|
339 |
+
}
|
340 |
+
return $clean_url;
|
341 |
+
}
|
languages/constant-contact-forms.pot
CHANGED
@@ -3,7 +3,7 @@ msgid ""
|
|
3 |
msgstr ""
|
4 |
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
5 |
"Project-Id-Version: Constant Contact Forms for WordPress\n"
|
6 |
-
"POT-Creation-Date:
|
7 |
"PO-Revision-Date: 2017-01-12 14:46-0600\n"
|
8 |
"Last-Translator: Michael Beckwith <michael.d.beckwith@gmail.com>\n"
|
9 |
"Language-Team: Constant Contact\n"
|
@@ -24,18 +24,18 @@ msgstr ""
|
|
24 |
"X-Poedit-SearchPathExcluded-3: node_modules\n"
|
25 |
|
26 |
#. Author of the plugin/theme
|
27 |
-
#: constant-contact-forms.php:
|
28 |
#: includes/class-cpts.php:87 includes/class-cpts.php:145
|
29 |
msgid "Constant Contact"
|
30 |
msgstr ""
|
31 |
|
32 |
-
#: constant-contact-forms.php:
|
33 |
msgid ""
|
34 |
"Constant Contact Forms requires PHP 5.4 or higher. Your hosting provider or "
|
35 |
"website administrator should be able to assist in updating your PHP version."
|
36 |
msgstr ""
|
37 |
|
38 |
-
#: constant-contact-forms.php:
|
39 |
msgid "Error loading license."
|
40 |
msgstr ""
|
41 |
|
@@ -274,7 +274,7 @@ msgstr ""
|
|
274 |
msgid "Description"
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: includes/class-admin.php:249 includes/class-builder-fields.php:
|
278 |
msgid "Shortcode"
|
279 |
msgstr ""
|
280 |
|
@@ -314,7 +314,7 @@ msgstr ""
|
|
314 |
msgid "Contact type not returned"
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: includes/class-api.php:
|
318 |
msgid ""
|
319 |
"Your API access token is invalid. Reconnect to Constant Contact to receive a "
|
320 |
"new token."
|
@@ -369,212 +369,211 @@ msgid "Submission behavior"
|
|
369 |
msgstr ""
|
370 |
|
371 |
#: includes/class-builder-fields.php:187
|
372 |
-
msgid "Redirect
|
373 |
msgstr ""
|
374 |
|
375 |
#: includes/class-builder-fields.php:190
|
376 |
-
msgid "
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: includes/class-builder-fields.php:
|
380 |
-
msgid "
|
381 |
msgstr ""
|
382 |
|
383 |
-
#: includes/class-builder-fields.php:
|
384 |
msgid ""
|
385 |
-
"
|
386 |
-
"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: includes/class-builder-fields.php:
|
390 |
msgid ""
|
391 |
-
"Enabling this option will require
|
392 |
-
"
|
393 |
-
"selected list automatically on submitting."
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: includes/class-builder-fields.php:
|
397 |
msgid "Learn more"
|
398 |
msgstr ""
|
399 |
|
400 |
-
#: includes/class-builder-fields.php:
|
401 |
msgid "Email opt-in"
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: includes/class-builder-fields.php:
|
405 |
msgid "Enable email subscriber opt-in"
|
406 |
msgstr ""
|
407 |
|
408 |
-
#: includes/class-builder-fields.php:
|
409 |
msgid "Adds an opt-in to the bottom of your form."
|
410 |
msgstr ""
|
411 |
|
412 |
-
#: includes/class-builder-fields.php:
|
413 |
-
msgid "Add a checkbox so
|
414 |
msgstr ""
|
415 |
|
416 |
-
#: includes/class-builder-fields.php:
|
417 |
msgid "(For use with Contact Us form)"
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: includes/class-builder-fields.php:
|
421 |
msgid "Opt-in checkbox"
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: includes/class-builder-fields.php:
|
425 |
msgid "Your Business Name"
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: includes/class-builder-fields.php:
|
429 |
msgid "Opt-in Affirmation"
|
430 |
msgstr ""
|
431 |
|
432 |
-
#: includes/class-builder-fields.php:
|
433 |
#, php-format
|
434 |
msgid ""
|
435 |
"Example: Yes, I would like to receive emails from %s. (You can unsubscribe "
|
436 |
"anytime)"
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: includes/class-builder-fields.php:
|
440 |
msgid "Form Fields"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: includes/class-builder-fields.php:
|
444 |
msgid "Add Fields"
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: includes/class-builder-fields.php:
|
448 |
msgid ""
|
449 |
"Create a field for each piece of information you want to collect. Good "
|
450 |
"basics include email address, first name, and last name."
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: includes/class-builder-fields.php:
|
454 |
msgid "Field {#}"
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: includes/class-builder-fields.php:
|
458 |
msgid "Add Another Field"
|
459 |
msgstr ""
|
460 |
|
461 |
-
#: includes/class-builder-fields.php:
|
462 |
msgid "Remove Field"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: includes/class-builder-fields.php:
|
466 |
msgid "A brief description of this field (optional)"
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: includes/class-builder-fields.php:
|
470 |
msgid "Email (required)"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: includes/class-builder-fields.php:
|
474 |
msgid "c.contact@example.com"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: includes/class-builder-fields.php:
|
478 |
msgid "First Name"
|
479 |
msgstr ""
|
480 |
|
481 |
-
#: includes/class-builder-fields.php:
|
482 |
msgid "John"
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: includes/class-builder-fields.php:
|
486 |
msgid "Last Name"
|
487 |
msgstr ""
|
488 |
|
489 |
-
#: includes/class-builder-fields.php:
|
490 |
msgid "Smith"
|
491 |
msgstr ""
|
492 |
|
493 |
-
#: includes/class-builder-fields.php:
|
494 |
msgid "Phone Number"
|
495 |
msgstr ""
|
496 |
|
497 |
-
#: includes/class-builder-fields.php:
|
498 |
msgid "(555) 272-3342"
|
499 |
msgstr ""
|
500 |
|
501 |
-
#: includes/class-builder-fields.php:
|
502 |
msgid "Address"
|
503 |
msgstr ""
|
504 |
|
505 |
-
#: includes/class-builder-fields.php:
|
506 |
msgid "4115 S. Main Rd."
|
507 |
msgstr ""
|
508 |
|
509 |
-
#: includes/class-builder-fields.php:
|
510 |
msgid "Job Title"
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: includes/class-builder-fields.php:
|
514 |
msgid "Project Manager"
|
515 |
msgstr ""
|
516 |
|
517 |
-
#: includes/class-builder-fields.php:
|
518 |
msgid "Company"
|
519 |
msgstr ""
|
520 |
|
521 |
-
#: includes/class-builder-fields.php:
|
522 |
msgid "Acme Manufacturing"
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: includes/class-builder-fields.php:
|
526 |
msgid "Website"
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: includes/class-builder-fields.php:
|
530 |
msgid "http://www.example.com"
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: includes/class-builder-fields.php:
|
534 |
msgid "Custom Text Field"
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: includes/class-builder-fields.php:
|
538 |
msgid "A custom text field"
|
539 |
msgstr ""
|
540 |
|
541 |
-
#: includes/class-builder-fields.php:
|
542 |
msgid "Custom Text Area"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: includes/class-builder-fields.php:
|
546 |
msgid "A large custom text field"
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: includes/class-builder-fields.php:
|
550 |
msgid "Select a Field"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: includes/class-builder-fields.php:
|
554 |
msgid "Field Label"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: includes/class-builder-fields.php:
|
558 |
msgid "Email"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: includes/class-builder-fields.php:
|
562 |
msgid "Field Description"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: includes/class-builder-fields.php:
|
566 |
msgid "Ex: Enter email address"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: includes/class-builder-fields.php:
|
570 |
msgid "Required"
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: includes/class-builder-fields.php:
|
574 |
msgid "Shortcode to use"
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: includes/class-builder-fields.php:
|
578 |
msgid ""
|
579 |
"Shortcode to embed - <em><small>You can copy and paste this in a post to "
|
580 |
"display your form.</small></em>"
|
@@ -842,7 +841,7 @@ msgstr ""
|
|
842 |
msgid "New Form"
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: includes/class-cpts.php:70 includes/class-display.php:
|
846 |
msgid "Edit Form"
|
847 |
msgstr ""
|
848 |
|
@@ -1073,103 +1072,103 @@ msgstr ""
|
|
1073 |
msgid "%1$s (last modified %2$s ago)"
|
1074 |
msgstr ""
|
1075 |
|
1076 |
-
#: includes/class-display.php:
|
1077 |
msgid "Constant Contact Use."
|
1078 |
msgstr ""
|
1079 |
|
1080 |
-
#: includes/class-display.php:
|
1081 |
msgid "Error: Please correct your entry."
|
1082 |
msgstr ""
|
1083 |
|
1084 |
-
#: includes/class-display.php:
|
1085 |
msgid " Error: Please fill out this field."
|
1086 |
msgstr ""
|
1087 |
|
1088 |
-
#: includes/class-display.php:
|
1089 |
msgid "Send"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
-
#: includes/class-display.php:
|
1093 |
msgid "Street Address"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
-
#: includes/class-display.php:
|
1097 |
msgid "Address Line 2"
|
1098 |
msgstr ""
|
1099 |
|
1100 |
-
#: includes/class-display.php:
|
1101 |
msgid "City"
|
1102 |
msgstr ""
|
1103 |
|
1104 |
-
#: includes/class-display.php:
|
1105 |
msgid "State"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
-
#: includes/class-display.php:
|
1109 |
msgid "ZIP Code"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
-
#: includes/class-display.php:
|
1113 |
msgid "Month"
|
1114 |
msgstr ""
|
1115 |
|
1116 |
-
#: includes/class-display.php:
|
1117 |
msgid "Day"
|
1118 |
msgstr ""
|
1119 |
|
1120 |
-
#: includes/class-display.php:
|
1121 |
msgid "Year"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
-
#: includes/class-display.php:
|
1125 |
msgid "January"
|
1126 |
msgstr ""
|
1127 |
|
1128 |
-
#: includes/class-display.php:
|
1129 |
msgid "February"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
#: includes/class-display.php:
|
1133 |
msgid "March"
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#: includes/class-display.php:
|
1137 |
msgid "April"
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: includes/class-display.php:
|
1141 |
msgid "May"
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
#: includes/class-display.php:
|
1145 |
msgid "June"
|
1146 |
msgstr ""
|
1147 |
|
1148 |
-
#: includes/class-display.php:
|
1149 |
msgid "July "
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#: includes/class-display.php:
|
1153 |
msgid "August"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: includes/class-display.php:
|
1157 |
msgid "September"
|
1158 |
msgstr ""
|
1159 |
|
1160 |
-
#: includes/class-display.php:
|
1161 |
msgid "October"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: includes/class-display.php:
|
1165 |
msgid "November"
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#: includes/class-display.php:
|
1169 |
msgid "December"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
-
#: includes/class-display.php:
|
1173 |
#, php-format
|
1174 |
msgid ""
|
1175 |
"By submitting this form, you are granting: %s, permission to email you. You "
|
@@ -1194,28 +1193,58 @@ msgstr ""
|
|
1194 |
msgid "Sync Lists with Constant Contact"
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: includes/class-mail.php:
|
1198 |
#, php-format
|
1199 |
msgid "Duplicate send mail for: %1$s and: %2$s"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
-
#: includes/class-mail.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1203 |
msgid ""
|
1204 |
-
"
|
1205 |
-
"
|
|
|
|
|
|
|
|
|
|
|
1206 |
msgstr ""
|
1207 |
|
1208 |
-
#: includes/class-mail.php:
|
|
|
1209 |
msgid ""
|
1210 |
-
"
|
1211 |
-
"
|
1212 |
-
"Contact account, all new subscribers are automatically synced so you can "
|
1213 |
-
"keep the interaction going through emails and more. Sign up for a Free Trial "
|
1214 |
-
"on the Connect page in the Plugin console view."
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: includes/class-mail.php:
|
1218 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1219 |
msgstr ""
|
1220 |
|
1221 |
#: includes/class-notification-content.php:52
|
@@ -1357,9 +1386,11 @@ msgid "Disable E-mail Notifications"
|
|
1357 |
msgstr ""
|
1358 |
|
1359 |
#: includes/class-settings.php:263
|
|
|
1360 |
msgid ""
|
1361 |
-
"This option will disable e-mail notifications
|
1362 |
-
"and
|
|
|
1363 |
msgstr ""
|
1364 |
|
1365 |
#: includes/class-settings.php:271
|
@@ -1471,10 +1502,13 @@ msgid "Constant Contact Forms for WordPress"
|
|
1471 |
msgstr ""
|
1472 |
|
1473 |
#. Plugin URI of the plugin/theme
|
1474 |
-
#. Author URI of the plugin/theme
|
1475 |
msgid "https://www.constantcontact.com"
|
1476 |
msgstr ""
|
1477 |
|
1478 |
#. Description of the plugin/theme
|
1479 |
msgid "Be a better marketer. All it takes is Constant Contact email marketing."
|
1480 |
msgstr ""
|
|
|
|
|
|
|
|
3 |
msgstr ""
|
4 |
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
5 |
"Project-Id-Version: Constant Contact Forms for WordPress\n"
|
6 |
+
"POT-Creation-Date: 2018-02-27 17:35-0600\n"
|
7 |
"PO-Revision-Date: 2017-01-12 14:46-0600\n"
|
8 |
"Last-Translator: Michael Beckwith <michael.d.beckwith@gmail.com>\n"
|
9 |
"Language-Team: Constant Contact\n"
|
24 |
"X-Poedit-SearchPathExcluded-3: node_modules\n"
|
25 |
|
26 |
#. Author of the plugin/theme
|
27 |
+
#: constant-contact-forms.php:353 includes/class-builder.php:347
|
28 |
#: includes/class-cpts.php:87 includes/class-cpts.php:145
|
29 |
msgid "Constant Contact"
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: constant-contact-forms.php:379
|
33 |
msgid ""
|
34 |
"Constant Contact Forms requires PHP 5.4 or higher. Your hosting provider or "
|
35 |
"website administrator should be able to assist in updating your PHP version."
|
36 |
msgstr ""
|
37 |
|
38 |
+
#: constant-contact-forms.php:704
|
39 |
msgid "Error loading license."
|
40 |
msgstr ""
|
41 |
|
274 |
msgid "Description"
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: includes/class-admin.php:249 includes/class-builder-fields.php:496
|
278 |
msgid "Shortcode"
|
279 |
msgstr ""
|
280 |
|
314 |
msgid "Contact type not returned"
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: includes/class-api.php:721
|
318 |
msgid ""
|
319 |
"Your API access token is invalid. Reconnect to Constant Contact to receive a "
|
320 |
"new token."
|
369 |
msgstr ""
|
370 |
|
371 |
#: includes/class-builder-fields.php:187
|
372 |
+
msgid "Redirect URL"
|
373 |
msgstr ""
|
374 |
|
375 |
#: includes/class-builder-fields.php:190
|
376 |
+
msgid "Leave blank to keep users on the current page."
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: includes/class-builder-fields.php:195
|
380 |
+
msgid "No page refresh"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: includes/class-builder-fields.php:198
|
384 |
msgid ""
|
385 |
+
"Enable form submission without a page refresh. This option overrides the "
|
386 |
+
"Redirect URL choice above."
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: includes/class-builder-fields.php:220
|
390 |
msgid ""
|
391 |
+
"Enabling this option will require users to check a box to be added to your "
|
392 |
+
"list."
|
|
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: includes/class-builder-fields.php:226
|
396 |
msgid "Learn more"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: includes/class-builder-fields.php:231
|
400 |
msgid "Email opt-in"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: includes/class-builder-fields.php:254
|
404 |
msgid "Enable email subscriber opt-in"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: includes/class-builder-fields.php:256
|
408 |
msgid "Adds an opt-in to the bottom of your form."
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: includes/class-builder-fields.php:276
|
412 |
+
msgid "Add a checkbox so subscribers can opt-in to your email list."
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: includes/class-builder-fields.php:278
|
416 |
msgid "(For use with Contact Us form)"
|
417 |
msgstr ""
|
418 |
|
419 |
+
#: includes/class-builder-fields.php:281
|
420 |
msgid "Opt-in checkbox"
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: includes/class-builder-fields.php:299
|
424 |
msgid "Your Business Name"
|
425 |
msgstr ""
|
426 |
|
427 |
+
#: includes/class-builder-fields.php:302 includes/class-settings.php:322
|
428 |
msgid "Opt-in Affirmation"
|
429 |
msgstr ""
|
430 |
|
431 |
+
#: includes/class-builder-fields.php:306
|
432 |
#, php-format
|
433 |
msgid ""
|
434 |
"Example: Yes, I would like to receive emails from %s. (You can unsubscribe "
|
435 |
"anytime)"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: includes/class-builder-fields.php:322
|
439 |
msgid "Form Fields"
|
440 |
msgstr ""
|
441 |
|
442 |
+
#: includes/class-builder-fields.php:331
|
443 |
msgid "Add Fields"
|
444 |
msgstr ""
|
445 |
|
446 |
+
#: includes/class-builder-fields.php:337
|
447 |
msgid ""
|
448 |
"Create a field for each piece of information you want to collect. Good "
|
449 |
"basics include email address, first name, and last name."
|
450 |
msgstr ""
|
451 |
|
452 |
+
#: includes/class-builder-fields.php:348
|
453 |
msgid "Field {#}"
|
454 |
msgstr ""
|
455 |
|
456 |
+
#: includes/class-builder-fields.php:349
|
457 |
msgid "Add Another Field"
|
458 |
msgstr ""
|
459 |
|
460 |
+
#: includes/class-builder-fields.php:350
|
461 |
msgid "Remove Field"
|
462 |
msgstr ""
|
463 |
|
464 |
+
#: includes/class-builder-fields.php:362
|
465 |
msgid "A brief description of this field (optional)"
|
466 |
msgstr ""
|
467 |
|
468 |
+
#: includes/class-builder-fields.php:367
|
469 |
msgid "Email (required)"
|
470 |
msgstr ""
|
471 |
|
472 |
+
#: includes/class-builder-fields.php:368
|
473 |
msgid "c.contact@example.com"
|
474 |
msgstr ""
|
475 |
|
476 |
+
#: includes/class-builder-fields.php:371
|
477 |
msgid "First Name"
|
478 |
msgstr ""
|
479 |
|
480 |
+
#: includes/class-builder-fields.php:372
|
481 |
msgid "John"
|
482 |
msgstr ""
|
483 |
|
484 |
+
#: includes/class-builder-fields.php:375
|
485 |
msgid "Last Name"
|
486 |
msgstr ""
|
487 |
|
488 |
+
#: includes/class-builder-fields.php:376
|
489 |
msgid "Smith"
|
490 |
msgstr ""
|
491 |
|
492 |
+
#: includes/class-builder-fields.php:379
|
493 |
msgid "Phone Number"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: includes/class-builder-fields.php:380
|
497 |
msgid "(555) 272-3342"
|
498 |
msgstr ""
|
499 |
|
500 |
+
#: includes/class-builder-fields.php:383
|
501 |
msgid "Address"
|
502 |
msgstr ""
|
503 |
|
504 |
+
#: includes/class-builder-fields.php:384
|
505 |
msgid "4115 S. Main Rd."
|
506 |
msgstr ""
|
507 |
|
508 |
+
#: includes/class-builder-fields.php:387
|
509 |
msgid "Job Title"
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: includes/class-builder-fields.php:388
|
513 |
msgid "Project Manager"
|
514 |
msgstr ""
|
515 |
|
516 |
+
#: includes/class-builder-fields.php:391
|
517 |
msgid "Company"
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: includes/class-builder-fields.php:392
|
521 |
msgid "Acme Manufacturing"
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: includes/class-builder-fields.php:395
|
525 |
msgid "Website"
|
526 |
msgstr ""
|
527 |
|
528 |
+
#: includes/class-builder-fields.php:396
|
529 |
msgid "http://www.example.com"
|
530 |
msgstr ""
|
531 |
|
532 |
+
#: includes/class-builder-fields.php:411
|
533 |
msgid "Custom Text Field"
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: includes/class-builder-fields.php:412
|
537 |
msgid "A custom text field"
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: includes/class-builder-fields.php:415
|
541 |
msgid "Custom Text Area"
|
542 |
msgstr ""
|
543 |
|
544 |
+
#: includes/class-builder-fields.php:416
|
545 |
msgid "A large custom text field"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: includes/class-builder-fields.php:451
|
549 |
msgid "Select a Field"
|
550 |
msgstr ""
|
551 |
|
552 |
+
#: includes/class-builder-fields.php:462
|
553 |
msgid "Field Label"
|
554 |
msgstr ""
|
555 |
|
556 |
+
#: includes/class-builder-fields.php:465
|
557 |
msgid "Email"
|
558 |
msgstr ""
|
559 |
|
560 |
+
#: includes/class-builder-fields.php:470
|
561 |
msgid "Field Description"
|
562 |
msgstr ""
|
563 |
|
564 |
+
#: includes/class-builder-fields.php:474
|
565 |
msgid "Ex: Enter email address"
|
566 |
msgstr ""
|
567 |
|
568 |
+
#: includes/class-builder-fields.php:480
|
569 |
msgid "Required"
|
570 |
msgstr ""
|
571 |
|
572 |
+
#: includes/class-builder-fields.php:504
|
573 |
msgid "Shortcode to use"
|
574 |
msgstr ""
|
575 |
|
576 |
+
#: includes/class-builder-fields.php:507
|
577 |
msgid ""
|
578 |
"Shortcode to embed - <em><small>You can copy and paste this in a post to "
|
579 |
"display your form.</small></em>"
|
841 |
msgid "New Form"
|
842 |
msgstr ""
|
843 |
|
844 |
+
#: includes/class-cpts.php:70 includes/class-display.php:613
|
845 |
msgid "Edit Form"
|
846 |
msgstr ""
|
847 |
|
1072 |
msgid "%1$s (last modified %2$s ago)"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
+
#: includes/class-display.php:329
|
1076 |
msgid "Constant Contact Use."
|
1077 |
msgstr ""
|
1078 |
|
1079 |
+
#: includes/class-display.php:440 includes/class-display.php:1292
|
1080 |
msgid "Error: Please correct your entry."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
+
#: includes/class-display.php:442
|
1084 |
msgid " Error: Please fill out this field."
|
1085 |
msgstr ""
|
1086 |
|
1087 |
+
#: includes/class-display.php:867
|
1088 |
msgid "Send"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: includes/class-display.php:982
|
1092 |
msgid "Street Address"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
+
#: includes/class-display.php:983
|
1096 |
msgid "Address Line 2"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
+
#: includes/class-display.php:984
|
1100 |
msgid "City"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
+
#: includes/class-display.php:985
|
1104 |
msgid "State"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: includes/class-display.php:986
|
1108 |
msgid "ZIP Code"
|
1109 |
msgstr ""
|
1110 |
|
1111 |
+
#: includes/class-display.php:1051
|
1112 |
msgid "Month"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
+
#: includes/class-display.php:1052
|
1116 |
msgid "Day"
|
1117 |
msgstr ""
|
1118 |
|
1119 |
+
#: includes/class-display.php:1053
|
1120 |
msgid "Year"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
#: includes/class-display.php:1177
|
1124 |
msgid "January"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
+
#: includes/class-display.php:1178
|
1128 |
msgid "February"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
+
#: includes/class-display.php:1179
|
1132 |
msgid "March"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
+
#: includes/class-display.php:1180
|
1136 |
msgid "April"
|
1137 |
msgstr ""
|
1138 |
|
1139 |
+
#: includes/class-display.php:1181
|
1140 |
msgid "May"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
+
#: includes/class-display.php:1182
|
1144 |
msgid "June"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: includes/class-display.php:1183
|
1148 |
msgid "July "
|
1149 |
msgstr ""
|
1150 |
|
1151 |
+
#: includes/class-display.php:1184
|
1152 |
msgid "August"
|
1153 |
msgstr ""
|
1154 |
|
1155 |
+
#: includes/class-display.php:1185
|
1156 |
msgid "September"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
+
#: includes/class-display.php:1186
|
1160 |
msgid "October"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
+
#: includes/class-display.php:1187
|
1164 |
msgid "November"
|
1165 |
msgstr ""
|
1166 |
|
1167 |
+
#: includes/class-display.php:1188
|
1168 |
msgid "December"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
+
#: includes/class-display.php:1357
|
1172 |
#, php-format
|
1173 |
msgid ""
|
1174 |
"By submitting this form, you are granting: %s, permission to email you. You "
|
1193 |
msgid "Sync Lists with Constant Contact"
|
1194 |
msgstr ""
|
1195 |
|
1196 |
+
#: includes/class-mail.php:257
|
1197 |
#, php-format
|
1198 |
msgid "Duplicate send mail for: %1$s and: %2$s"
|
1199 |
msgstr ""
|
1200 |
|
1201 |
+
#: includes/class-mail.php:281
|
1202 |
+
msgid "Your Constant Contact Forms plugin has captured new information."
|
1203 |
+
msgstr ""
|
1204 |
+
|
1205 |
+
#: includes/class-mail.php:285
|
1206 |
+
msgid "Form title: "
|
1207 |
+
msgstr ""
|
1208 |
+
|
1209 |
+
#: includes/class-mail.php:286
|
1210 |
+
msgid "Form information: "
|
1211 |
+
msgstr ""
|
1212 |
+
|
1213 |
+
#: includes/class-mail.php:292
|
1214 |
+
#, php-format
|
1215 |
msgid ""
|
1216 |
+
"Email marketing is a great way to stay connected and engage with visitors "
|
1217 |
+
"after they've left your site. Visit %shttps://www.constantcontact.com/index?"
|
1218 |
+
"pn=miwordpress%s to sign up for a Free Trial."
|
1219 |
+
msgstr ""
|
1220 |
+
|
1221 |
+
#: includes/class-mail.php:329
|
1222 |
+
msgid "Constant Contact Forms Notification"
|
1223 |
msgstr ""
|
1224 |
|
1225 |
+
#: includes/class-mail.php:421
|
1226 |
+
#, php-format
|
1227 |
msgid ""
|
1228 |
+
"%sNote:%s You have disabled admin email notifications under the plugin "
|
1229 |
+
"settings, but are receiving this email because of the following reason."
|
|
|
|
|
|
|
1230 |
msgstr ""
|
1231 |
|
1232 |
+
#: includes/class-mail.php:444
|
1233 |
+
msgid "Submitted to Constant Contact:"
|
1234 |
+
msgstr ""
|
1235 |
+
|
1236 |
+
#: includes/class-mail.php:450
|
1237 |
+
msgid "NO (Constant Contact list not selected for this form)"
|
1238 |
+
msgstr ""
|
1239 |
+
|
1240 |
+
#: includes/class-mail.php:456
|
1241 |
+
msgid "NO (User did not select the Email Opt-in checkbox)"
|
1242 |
+
msgstr ""
|
1243 |
+
|
1244 |
+
#: includes/class-mail.php:456
|
1245 |
+
msgid ""
|
1246 |
+
"You can disable this under Form options. Email Opt-in isn't required to add "
|
1247 |
+
"subscribers into your account"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
#: includes/class-notification-content.php:52
|
1386 |
msgstr ""
|
1387 |
|
1388 |
#: includes/class-settings.php:263
|
1389 |
+
#, php-format
|
1390 |
msgid ""
|
1391 |
+
"This option will disable e-mail notifications for forms with a selected list "
|
1392 |
+
"and successfully submit to Constant Contact.%s Notifications are sent to the "
|
1393 |
+
"email address listed under Wordpress \"General Settings\"."
|
1394 |
msgstr ""
|
1395 |
|
1396 |
#: includes/class-settings.php:271
|
1502 |
msgstr ""
|
1503 |
|
1504 |
#. Plugin URI of the plugin/theme
|
|
|
1505 |
msgid "https://www.constantcontact.com"
|
1506 |
msgstr ""
|
1507 |
|
1508 |
#. Description of the plugin/theme
|
1509 |
msgid "Be a better marketer. All it takes is Constant Contact email marketing."
|
1510 |
msgstr ""
|
1511 |
+
|
1512 |
+
#. Author URI of the plugin/theme
|
1513 |
+
msgid "https://www.constantcontact.com/index?pn=miwordpress"
|
1514 |
+
msgstr ""
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: constantcontact
|
3 |
Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
|
4 |
Requires at least: 4.0.0
|
5 |
-
Tested up to: 4.
|
6 |
-
Stable tag: 1.3.
|
7 |
License: GPLv2
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -21,7 +21,7 @@ https://www.youtube.com/watch?v=MhxtAlpZzJw
|
|
21 |
* Choose forms that automatically select the theme and style of your WordPress site.
|
22 |
* Customize data fields, so you can tailor the type of information you collect.
|
23 |
|
24 |
-
BONUS: If you have a Constant Contact account, all new email addresses that you capture will be automatically added to the Constant Contact email lists of your choosing. Not a Constant Contact customer? Sign up for a Free Trial right from the plugin.
|
25 |
|
26 |
**Constant Contact Forms** requires a PHP version of 5.4 or higher. You will not be able to use if on a lower version. Talk to your system administrator or hosting company if you are not sure what version you are on.
|
27 |
|
@@ -34,6 +34,18 @@ BONUS: If you have a Constant Contact account, all new email addresses that you
|
|
34 |
|
35 |
== Changelog ==
|
36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
= 1.3.5 =
|
38 |
* Fixed: Prevent submission status message from displaying on all forms with multiple forms on same page.
|
39 |
* Fixed: Properly prevent submission via AJAX when required fields are not met.
|
@@ -43,7 +55,7 @@ BONUS: If you have a Constant Contact account, all new email addresses that you
|
|
43 |
* Fixed: Prevent possible issues with $_POST globals not being strings.
|
44 |
* Fixed: Addressed issues with Google reCAPTCHA validation and verification of submitting users via allow_url_fopen.
|
45 |
* Updated: Provided updated default values for button text, success message.
|
46 |
-
* Updated: Rearranged and updated
|
47 |
* Updated: Added form's unique ID to form markup output for styling options and specific targeting.
|
48 |
|
49 |
= 1.3.4 =
|
2 |
Contributors: constantcontact
|
3 |
Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
|
4 |
Requires at least: 4.0.0
|
5 |
+
Tested up to: 4.9.4
|
6 |
+
Stable tag: 1.3.6
|
7 |
License: GPLv2
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
21 |
* Choose forms that automatically select the theme and style of your WordPress site.
|
22 |
* Customize data fields, so you can tailor the type of information you collect.
|
23 |
|
24 |
+
BONUS: If you have a Constant Contact account, all new email addresses that you capture will be automatically added to the Constant Contact email lists of your choosing. Not a Constant Contact customer? Sign up for a [Free Trial](http://www.constantcontact.com/index?pn=miwordpress) right from the plugin.
|
25 |
|
26 |
**Constant Contact Forms** requires a PHP version of 5.4 or higher. You will not be able to use if on a lower version. Talk to your system administrator or hosting company if you are not sure what version you are on.
|
27 |
|
34 |
|
35 |
== Changelog ==
|
36 |
|
37 |
+
= 1.3.6 =
|
38 |
+
* Fixed: Validate and potentially create full urls for values passed into custom "redirect to url" values. Prevents unintended destinations from partial urls.
|
39 |
+
* Fixed: Error display for cron debugging was not showing correctly.
|
40 |
+
* Fixed: Added required indicators to all appropriate fields in address fieldset on frontend.
|
41 |
+
* Fixed: No form will be displayed if the form is not published.
|
42 |
+
* Added: Address line 2 is no longer considered a required field.
|
43 |
+
* Added: Plugin will now send email notifications if notifications are disabled but no Constant Contact list has been set for a form or opt-in is required but user does not opt in. Prevents possible lost submissions.
|
44 |
+
* Updated: Wording for "Disable email" setting to clarify its purpose and intent.
|
45 |
+
* Updated: Wording around some form builder fields.
|
46 |
+
* Updated: Reworded emails and conditionally added messages regarding issues with form that required sending the email.
|
47 |
+
* Updated: Adjusted plugin load order slightly to prevent conflicts with other plugins using GuzzleHTTP.
|
48 |
+
|
49 |
= 1.3.5 =
|
50 |
* Fixed: Prevent submission status message from displaying on all forms with multiple forms on same page.
|
51 |
* Fixed: Properly prevent submission via AJAX when required fields are not met.
|
55 |
* Fixed: Prevent possible issues with $_POST globals not being strings.
|
56 |
* Fixed: Addressed issues with Google reCAPTCHA validation and verification of submitting users via allow_url_fopen.
|
57 |
* Updated: Provided updated default values for button text, success message.
|
58 |
+
* Updated: Rearranged and updated labels form builder fields to provide better clarity.
|
59 |
* Updated: Added form's unique ID to form markup output for styling options and specific targeting.
|
60 |
|
61 |
= 1.3.4 =
|