Version Description
https://contactform7.com/contact-form-7-54/
=
Download this release
Release Info
Developer | takayukister |
Plugin | Contact Form 7 |
Version | 5.4 |
Comparing to | |
See all releases |
Code changes from version 5.3.2 to 5.4
- admin/admin.php +111 -46
- admin/css/styles.css +16 -1
- admin/js/scripts.js +9 -0
- assets/ajax-loader.gif +0 -0
- includes/block-editor/index.js +1 -1
- includes/controller.php +115 -42
- includes/css/styles-rtl.css +4 -5
- includes/css/styles.css +66 -21
- includes/file.php +367 -0
- includes/formatting.php +33 -168
- includes/functions.php +0 -13
- includes/integration.php +4 -4
- includes/js/html5-fallback.js +26 -0
- includes/js/index.js +1 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-icons_888888_256x240.png +0 -0
- includes/js/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- includes/js/jquery-ui/themes/smoothness/jquery-ui.css +318 -232
- includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css +4 -4
- includes/js/jquery-ui/themes/smoothness/theme.css +66 -33
- includes/js/scripts.js +0 -531
- includes/mail.php +3 -4
- includes/submission.php +75 -15
- includes/validation-functions.php +168 -0
- license.txt +365 -366
- load.php +7 -3
- modules/constant-contact.php +5 -5
- modules/disallowed-list.php +1 -1
- modules/file.php +14 -306
- modules/recaptcha/index.js +1 -0
- modules/recaptcha/recaptcha.php +29 -9
- modules/recaptcha/script.js +0 -53
- modules/sendinblue/contact-form-properties.php +302 -0
- modules/sendinblue/sendinblue.php +173 -0
- modules/sendinblue/service.php +381 -0
- readme.txt +6 -51
- wp-contact-form-7.php +3 -3
admin/admin.php
CHANGED
@@ -6,13 +6,21 @@ require_once WPCF7_PLUGIN_DIR . '/admin/includes/tag-generator.php';
|
|
6 |
require_once WPCF7_PLUGIN_DIR . '/admin/includes/welcome-panel.php';
|
7 |
require_once WPCF7_PLUGIN_DIR . '/admin/includes/config-validator.php';
|
8 |
|
9 |
-
add_action( 'admin_init', 'wpcf7_admin_init', 10, 0 );
|
10 |
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
-
add_action(
|
|
|
|
|
|
|
|
|
16 |
|
17 |
function wpcf7_admin_menu() {
|
18 |
do_action( 'wpcf7_admin_menu' );
|
@@ -54,7 +62,7 @@ function wpcf7_admin_menu() {
|
|
54 |
|
55 |
if ( $integration->service_exists() ) {
|
56 |
$integration = add_submenu_page( 'wpcf7',
|
57 |
-
__( 'Integration with
|
58 |
__( 'Integration', 'contact-form-7' )
|
59 |
. wpcf7_admin_menu_change_notice( 'wpcf7-integration' ),
|
60 |
'wpcf7_manage_integration',
|
@@ -66,6 +74,7 @@ function wpcf7_admin_menu() {
|
|
66 |
}
|
67 |
}
|
68 |
|
|
|
69 |
function wpcf7_admin_menu_change_notice( $menu_slug = '' ) {
|
70 |
$counts = apply_filters( 'wpcf7_admin_menu_change_notice',
|
71 |
array(
|
@@ -94,7 +103,12 @@ function wpcf7_admin_menu_change_notice( $menu_slug = '' ) {
|
|
94 |
return '';
|
95 |
}
|
96 |
|
97 |
-
|
|
|
|
|
|
|
|
|
|
|
98 |
|
99 |
function wpcf7_admin_enqueue_scripts( $hook_suffix ) {
|
100 |
if ( false === strpos( $hook_suffix, 'wpcf7' ) ) {
|
@@ -160,32 +174,45 @@ function wpcf7_admin_enqueue_scripts( $hook_suffix ) {
|
|
160 |
|
161 |
wp_enqueue_script( 'wpcf7-admin-taggenerator',
|
162 |
wpcf7_plugin_url( 'admin/js/tag-generator.js' ),
|
163 |
-
array( 'jquery', 'thickbox', 'wpcf7-admin' ),
|
|
|
|
|
|
|
164 |
}
|
165 |
|
166 |
-
|
|
|
|
|
|
|
|
|
|
|
167 |
|
168 |
function wpcf7_dark_mode_support( $user_id ) {
|
169 |
wp_enqueue_style( 'contact-form-7-admin-dark-mode',
|
170 |
wpcf7_plugin_url( 'admin/css/styles-dark-mode.css' ),
|
171 |
-
array( 'contact-form-7-admin' ),
|
|
|
|
|
|
|
172 |
}
|
173 |
|
174 |
-
add_filter( 'set_screen_option_wpcf7_contact_forms_per_page',
|
175 |
-
'wpcf7_set_screen_options', 10, 3
|
176 |
-
);
|
177 |
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
|
|
|
|
182 |
|
183 |
-
|
184 |
-
|
185 |
-
|
|
|
|
|
|
|
|
|
|
|
186 |
|
187 |
-
return $result;
|
188 |
-
}
|
189 |
|
190 |
function wpcf7_load_contact_form_admin() {
|
191 |
global $plugin_page;
|
@@ -202,7 +229,9 @@ function wpcf7_load_contact_form_admin() {
|
|
202 |
check_admin_referer( 'wpcf7-save-contact-form_' . $id );
|
203 |
|
204 |
if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) {
|
205 |
-
wp_die(
|
|
|
|
|
206 |
}
|
207 |
|
208 |
$args = $_REQUEST;
|
@@ -264,7 +293,9 @@ function wpcf7_load_contact_form_admin() {
|
|
264 |
check_admin_referer( 'wpcf7-copy-contact-form_' . $id );
|
265 |
|
266 |
if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) {
|
267 |
-
wp_die(
|
|
|
|
|
268 |
}
|
269 |
|
270 |
$query = array();
|
@@ -306,11 +337,13 @@ function wpcf7_load_contact_form_admin() {
|
|
306 |
}
|
307 |
|
308 |
if ( ! current_user_can( 'wpcf7_delete_contact_form', $post->id() ) ) {
|
309 |
-
wp_die(
|
|
|
|
|
310 |
}
|
311 |
|
312 |
if ( ! $post->delete() ) {
|
313 |
-
wp_die( __(
|
314 |
}
|
315 |
|
316 |
$deleted += 1;
|
@@ -352,8 +385,11 @@ function wpcf7_load_contact_form_admin() {
|
|
352 |
require_once WPCF7_PLUGIN_DIR . '/admin/includes/class-contact-forms-list-table.php';
|
353 |
}
|
354 |
|
355 |
-
add_filter(
|
356 |
-
|
|
|
|
|
|
|
357 |
|
358 |
add_screen_option( 'per_page', array(
|
359 |
'default' => 20,
|
@@ -362,6 +398,7 @@ function wpcf7_load_contact_form_admin() {
|
|
362 |
}
|
363 |
}
|
364 |
|
|
|
365 |
function wpcf7_admin_management_page() {
|
366 |
if ( $post = wpcf7_get_current_contact_form() ) {
|
367 |
$post_id = $post->initial() ? -1 : $post->id();
|
@@ -398,10 +435,12 @@ function wpcf7_admin_management_page() {
|
|
398 |
}
|
399 |
|
400 |
if ( ! empty( $_REQUEST['s'] ) ) {
|
401 |
-
echo sprintf(
|
|
|
402 |
/* translators: %s: search keywords */
|
403 |
. __( 'Search results for “%s”', 'contact-form-7' )
|
404 |
-
. '</span>',
|
|
|
405 |
);
|
406 |
}
|
407 |
?>
|
@@ -410,12 +449,14 @@ function wpcf7_admin_management_page() {
|
|
410 |
|
411 |
<?php
|
412 |
do_action( 'wpcf7_admin_warnings',
|
413 |
-
'wpcf7', wpcf7_current_action(), null
|
|
|
414 |
|
415 |
wpcf7_welcome_panel();
|
416 |
|
417 |
do_action( 'wpcf7_admin_notices',
|
418 |
-
'wpcf7', wpcf7_current_action(), null
|
|
|
419 |
?>
|
420 |
|
421 |
<form method="get" action="">
|
@@ -428,6 +469,7 @@ function wpcf7_admin_management_page() {
|
|
428 |
<?php
|
429 |
}
|
430 |
|
|
|
431 |
function wpcf7_admin_add_new_page() {
|
432 |
$post = wpcf7_get_current_contact_form();
|
433 |
|
@@ -441,6 +483,7 @@ function wpcf7_admin_add_new_page() {
|
|
441 |
require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
|
442 |
}
|
443 |
|
|
|
444 |
function wpcf7_load_integration_page() {
|
445 |
do_action( 'wpcf7_admin_load',
|
446 |
isset( $_GET['page'] ) ? trim( $_GET['page'] ) : '',
|
@@ -459,6 +502,7 @@ function wpcf7_load_integration_page() {
|
|
459 |
$help_tabs->set_help_tabs( 'integration' );
|
460 |
}
|
461 |
|
|
|
462 |
function wpcf7_admin_integration_page() {
|
463 |
$integration = WPCF7_Integration::get_instance();
|
464 |
|
@@ -469,19 +513,24 @@ function wpcf7_admin_integration_page() {
|
|
469 |
?>
|
470 |
<div class="wrap" id="wpcf7-integration">
|
471 |
|
472 |
-
<h1><?php echo esc_html( __( 'Integration with
|
473 |
|
474 |
<?php
|
475 |
do_action( 'wpcf7_admin_warnings',
|
476 |
-
'wpcf7-integration', wpcf7_current_action(), $service
|
|
|
477 |
|
478 |
do_action( 'wpcf7_admin_notices',
|
479 |
-
'wpcf7-integration', wpcf7_current_action(), $service
|
|
|
480 |
|
481 |
if ( $service ) {
|
482 |
$message = isset( $_REQUEST['message'] ) ? $_REQUEST['message'] : '';
|
483 |
$service->admin_notice( $message );
|
484 |
-
|
|
|
|
|
|
|
485 |
} else {
|
486 |
$integration->list_services();
|
487 |
}
|
@@ -491,7 +540,6 @@ function wpcf7_admin_integration_page() {
|
|
491 |
<?php
|
492 |
}
|
493 |
|
494 |
-
/* Misc */
|
495 |
|
496 |
add_action( 'wpcf7_admin_notices', 'wpcf7_admin_updated_message', 10, 3 );
|
497 |
|
@@ -513,15 +561,23 @@ function wpcf7_admin_updated_message( $page, $action, $object ) {
|
|
513 |
}
|
514 |
|
515 |
if ( ! empty( $updated_message ) ) {
|
516 |
-
echo sprintf(
|
|
|
|
|
|
|
|
|
517 |
return;
|
518 |
}
|
519 |
|
520 |
if ( 'failed' == $_REQUEST['message'] ) {
|
521 |
-
$updated_message =
|
522 |
-
'contact-form-7' );
|
|
|
|
|
|
|
|
|
|
|
523 |
|
524 |
-
echo sprintf( '<div id="message" class="notice notice-error is-dismissible"><p>%s</p></div>', esc_html( $updated_message ) );
|
525 |
return;
|
526 |
}
|
527 |
|
@@ -541,17 +597,24 @@ function wpcf7_admin_updated_message( $page, $action, $object ) {
|
|
541 |
number_format_i18n( $count_invalid )
|
542 |
);
|
543 |
|
544 |
-
echo sprintf(
|
|
|
|
|
|
|
545 |
} else {
|
546 |
$updated_message = __( "Configuration validation completed. No invalid contact form was found.", 'contact-form-7' );
|
547 |
|
548 |
-
echo sprintf(
|
|
|
|
|
|
|
549 |
}
|
550 |
|
551 |
return;
|
552 |
}
|
553 |
}
|
554 |
|
|
|
555 |
add_filter( 'plugin_action_links', 'wpcf7_plugin_action_links', 10, 2 );
|
556 |
|
557 |
function wpcf7_plugin_action_links( $links, $file ) {
|
@@ -573,6 +636,7 @@ function wpcf7_plugin_action_links( $links, $file ) {
|
|
573 |
return $links;
|
574 |
}
|
575 |
|
|
|
576 |
add_action( 'wpcf7_admin_warnings', 'wpcf7_old_wp_version_error', 10, 3 );
|
577 |
|
578 |
function wpcf7_old_wp_version_error( $page, $action, $object ) {
|
@@ -597,6 +661,7 @@ function wpcf7_old_wp_version_error( $page, $action, $object ) {
|
|
597 |
<?php
|
598 |
}
|
599 |
|
|
|
600 |
add_action( 'wpcf7_admin_warnings', 'wpcf7_not_allowed_to_edit', 10, 3 );
|
601 |
|
602 |
function wpcf7_not_allowed_to_edit( $page, $action, $object ) {
|
@@ -610,10 +675,10 @@ function wpcf7_not_allowed_to_edit( $page, $action, $object ) {
|
|
610 |
return;
|
611 |
}
|
612 |
|
613 |
-
$message = __( "You are not allowed to edit this contact form.",
|
614 |
-
'contact-form-7' );
|
615 |
|
616 |
echo sprintf(
|
617 |
'<div class="notice notice-warning"><p>%s</p></div>',
|
618 |
-
esc_html( $message )
|
|
|
619 |
}
|
6 |
require_once WPCF7_PLUGIN_DIR . '/admin/includes/welcome-panel.php';
|
7 |
require_once WPCF7_PLUGIN_DIR . '/admin/includes/config-validator.php';
|
8 |
|
|
|
9 |
|
10 |
+
add_action(
|
11 |
+
'admin_init',
|
12 |
+
function () {
|
13 |
+
do_action( 'wpcf7_admin_init' );
|
14 |
+
},
|
15 |
+
10, 0
|
16 |
+
);
|
17 |
+
|
18 |
|
19 |
+
add_action(
|
20 |
+
'admin_menu',
|
21 |
+
'wpcf7_admin_menu',
|
22 |
+
9, 0
|
23 |
+
);
|
24 |
|
25 |
function wpcf7_admin_menu() {
|
26 |
do_action( 'wpcf7_admin_menu' );
|
62 |
|
63 |
if ( $integration->service_exists() ) {
|
64 |
$integration = add_submenu_page( 'wpcf7',
|
65 |
+
__( 'Integration with External API', 'contact-form-7' ),
|
66 |
__( 'Integration', 'contact-form-7' )
|
67 |
. wpcf7_admin_menu_change_notice( 'wpcf7-integration' ),
|
68 |
'wpcf7_manage_integration',
|
74 |
}
|
75 |
}
|
76 |
|
77 |
+
|
78 |
function wpcf7_admin_menu_change_notice( $menu_slug = '' ) {
|
79 |
$counts = apply_filters( 'wpcf7_admin_menu_change_notice',
|
80 |
array(
|
103 |
return '';
|
104 |
}
|
105 |
|
106 |
+
|
107 |
+
add_action(
|
108 |
+
'admin_enqueue_scripts',
|
109 |
+
'wpcf7_admin_enqueue_scripts',
|
110 |
+
10, 1
|
111 |
+
);
|
112 |
|
113 |
function wpcf7_admin_enqueue_scripts( $hook_suffix ) {
|
114 |
if ( false === strpos( $hook_suffix, 'wpcf7' ) ) {
|
174 |
|
175 |
wp_enqueue_script( 'wpcf7-admin-taggenerator',
|
176 |
wpcf7_plugin_url( 'admin/js/tag-generator.js' ),
|
177 |
+
array( 'jquery', 'thickbox', 'wpcf7-admin' ),
|
178 |
+
WPCF7_VERSION,
|
179 |
+
true
|
180 |
+
);
|
181 |
}
|
182 |
|
183 |
+
|
184 |
+
add_action(
|
185 |
+
'doing_dark_mode',
|
186 |
+
'wpcf7_dark_mode_support',
|
187 |
+
10, 1
|
188 |
+
);
|
189 |
|
190 |
function wpcf7_dark_mode_support( $user_id ) {
|
191 |
wp_enqueue_style( 'contact-form-7-admin-dark-mode',
|
192 |
wpcf7_plugin_url( 'admin/css/styles-dark-mode.css' ),
|
193 |
+
array( 'contact-form-7-admin' ),
|
194 |
+
WPCF7_VERSION,
|
195 |
+
'screen'
|
196 |
+
);
|
197 |
}
|
198 |
|
|
|
|
|
|
|
199 |
|
200 |
+
add_filter(
|
201 |
+
'set_screen_option_wpcf7_contact_forms_per_page',
|
202 |
+
function ( $result, $option, $value ) {
|
203 |
+
$wpcf7_screens = array(
|
204 |
+
'wpcf7_contact_forms_per_page',
|
205 |
+
);
|
206 |
|
207 |
+
if ( in_array( $option, $wpcf7_screens ) ) {
|
208 |
+
$result = $value;
|
209 |
+
}
|
210 |
+
|
211 |
+
return $result;
|
212 |
+
},
|
213 |
+
10, 3
|
214 |
+
);
|
215 |
|
|
|
|
|
216 |
|
217 |
function wpcf7_load_contact_form_admin() {
|
218 |
global $plugin_page;
|
229 |
check_admin_referer( 'wpcf7-save-contact-form_' . $id );
|
230 |
|
231 |
if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) {
|
232 |
+
wp_die(
|
233 |
+
__( "You are not allowed to edit this item.", 'contact-form-7' )
|
234 |
+
);
|
235 |
}
|
236 |
|
237 |
$args = $_REQUEST;
|
293 |
check_admin_referer( 'wpcf7-copy-contact-form_' . $id );
|
294 |
|
295 |
if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) {
|
296 |
+
wp_die(
|
297 |
+
__( "You are not allowed to edit this item.", 'contact-form-7' )
|
298 |
+
);
|
299 |
}
|
300 |
|
301 |
$query = array();
|
337 |
}
|
338 |
|
339 |
if ( ! current_user_can( 'wpcf7_delete_contact_form', $post->id() ) ) {
|
340 |
+
wp_die(
|
341 |
+
__( "You are not allowed to delete this item.", 'contact-form-7' )
|
342 |
+
);
|
343 |
}
|
344 |
|
345 |
if ( ! $post->delete() ) {
|
346 |
+
wp_die( __( "Error in deleting.", 'contact-form-7' ) );
|
347 |
}
|
348 |
|
349 |
$deleted += 1;
|
385 |
require_once WPCF7_PLUGIN_DIR . '/admin/includes/class-contact-forms-list-table.php';
|
386 |
}
|
387 |
|
388 |
+
add_filter(
|
389 |
+
'manage_' . $current_screen->id . '_columns',
|
390 |
+
array( 'WPCF7_Contact_Form_List_Table', 'define_columns' ),
|
391 |
+
10, 0
|
392 |
+
);
|
393 |
|
394 |
add_screen_option( 'per_page', array(
|
395 |
'default' => 20,
|
398 |
}
|
399 |
}
|
400 |
|
401 |
+
|
402 |
function wpcf7_admin_management_page() {
|
403 |
if ( $post = wpcf7_get_current_contact_form() ) {
|
404 |
$post_id = $post->initial() ? -1 : $post->id();
|
435 |
}
|
436 |
|
437 |
if ( ! empty( $_REQUEST['s'] ) ) {
|
438 |
+
echo sprintf(
|
439 |
+
'<span class="subtitle">'
|
440 |
/* translators: %s: search keywords */
|
441 |
. __( 'Search results for “%s”', 'contact-form-7' )
|
442 |
+
. '</span>',
|
443 |
+
esc_html( $_REQUEST['s'] )
|
444 |
);
|
445 |
}
|
446 |
?>
|
449 |
|
450 |
<?php
|
451 |
do_action( 'wpcf7_admin_warnings',
|
452 |
+
'wpcf7', wpcf7_current_action(), null
|
453 |
+
);
|
454 |
|
455 |
wpcf7_welcome_panel();
|
456 |
|
457 |
do_action( 'wpcf7_admin_notices',
|
458 |
+
'wpcf7', wpcf7_current_action(), null
|
459 |
+
);
|
460 |
?>
|
461 |
|
462 |
<form method="get" action="">
|
469 |
<?php
|
470 |
}
|
471 |
|
472 |
+
|
473 |
function wpcf7_admin_add_new_page() {
|
474 |
$post = wpcf7_get_current_contact_form();
|
475 |
|
483 |
require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
|
484 |
}
|
485 |
|
486 |
+
|
487 |
function wpcf7_load_integration_page() {
|
488 |
do_action( 'wpcf7_admin_load',
|
489 |
isset( $_GET['page'] ) ? trim( $_GET['page'] ) : '',
|
502 |
$help_tabs->set_help_tabs( 'integration' );
|
503 |
}
|
504 |
|
505 |
+
|
506 |
function wpcf7_admin_integration_page() {
|
507 |
$integration = WPCF7_Integration::get_instance();
|
508 |
|
513 |
?>
|
514 |
<div class="wrap" id="wpcf7-integration">
|
515 |
|
516 |
+
<h1><?php echo esc_html( __( 'Integration with External API', 'contact-form-7' ) ); ?></h1>
|
517 |
|
518 |
<?php
|
519 |
do_action( 'wpcf7_admin_warnings',
|
520 |
+
'wpcf7-integration', wpcf7_current_action(), $service
|
521 |
+
);
|
522 |
|
523 |
do_action( 'wpcf7_admin_notices',
|
524 |
+
'wpcf7-integration', wpcf7_current_action(), $service
|
525 |
+
);
|
526 |
|
527 |
if ( $service ) {
|
528 |
$message = isset( $_REQUEST['message'] ) ? $_REQUEST['message'] : '';
|
529 |
$service->admin_notice( $message );
|
530 |
+
|
531 |
+
$integration->list_services( array(
|
532 |
+
'include' => $_REQUEST['service'],
|
533 |
+
) );
|
534 |
} else {
|
535 |
$integration->list_services();
|
536 |
}
|
540 |
<?php
|
541 |
}
|
542 |
|
|
|
543 |
|
544 |
add_action( 'wpcf7_admin_notices', 'wpcf7_admin_updated_message', 10, 3 );
|
545 |
|
561 |
}
|
562 |
|
563 |
if ( ! empty( $updated_message ) ) {
|
564 |
+
echo sprintf(
|
565 |
+
'<div id="message" class="notice notice-success"><p>%s</p></div>',
|
566 |
+
esc_html( $updated_message )
|
567 |
+
);
|
568 |
+
|
569 |
return;
|
570 |
}
|
571 |
|
572 |
if ( 'failed' == $_REQUEST['message'] ) {
|
573 |
+
$updated_message =
|
574 |
+
__( "There was an error saving the contact form.", 'contact-form-7' );
|
575 |
+
|
576 |
+
echo sprintf(
|
577 |
+
'<div id="message" class="notice notice-error"><p>%s</p></div>',
|
578 |
+
esc_html( $updated_message )
|
579 |
+
);
|
580 |
|
|
|
581 |
return;
|
582 |
}
|
583 |
|
597 |
number_format_i18n( $count_invalid )
|
598 |
);
|
599 |
|
600 |
+
echo sprintf(
|
601 |
+
'<div id="message" class="notice notice-warning"><p>%s</p></div>',
|
602 |
+
esc_html( $updated_message )
|
603 |
+
);
|
604 |
} else {
|
605 |
$updated_message = __( "Configuration validation completed. No invalid contact form was found.", 'contact-form-7' );
|
606 |
|
607 |
+
echo sprintf(
|
608 |
+
'<div id="message" class="notice notice-success"><p>%s</p></div>',
|
609 |
+
esc_html( $updated_message )
|
610 |
+
);
|
611 |
}
|
612 |
|
613 |
return;
|
614 |
}
|
615 |
}
|
616 |
|
617 |
+
|
618 |
add_filter( 'plugin_action_links', 'wpcf7_plugin_action_links', 10, 2 );
|
619 |
|
620 |
function wpcf7_plugin_action_links( $links, $file ) {
|
636 |
return $links;
|
637 |
}
|
638 |
|
639 |
+
|
640 |
add_action( 'wpcf7_admin_warnings', 'wpcf7_old_wp_version_error', 10, 3 );
|
641 |
|
642 |
function wpcf7_old_wp_version_error( $page, $action, $object ) {
|
661 |
<?php
|
662 |
}
|
663 |
|
664 |
+
|
665 |
add_action( 'wpcf7_admin_warnings', 'wpcf7_not_allowed_to_edit', 10, 3 );
|
666 |
|
667 |
function wpcf7_not_allowed_to_edit( $page, $action, $object ) {
|
675 |
return;
|
676 |
}
|
677 |
|
678 |
+
$message = __( "You are not allowed to edit this contact form.", 'contact-form-7' );
|
|
|
679 |
|
680 |
echo sprintf(
|
681 |
'<div class="notice notice-warning"><p>%s</p></div>',
|
682 |
+
esc_html( $message )
|
683 |
+
);
|
684 |
}
|
admin/css/styles.css
CHANGED
@@ -327,6 +327,21 @@ ul.config-error li {
|
|
327 |
margin: 5px 0 10px;
|
328 |
}
|
329 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
/*
|
331 |
* List Table
|
332 |
*/
|
@@ -416,7 +431,7 @@ ul.config-error li {
|
|
416 |
float: right;
|
417 |
font-size: 13px;
|
418 |
color: #666;
|
419 |
-
margin:
|
420 |
line-height: 1.5;
|
421 |
max-width: 240px;
|
422 |
}
|
327 |
margin: 5px 0 10px;
|
328 |
}
|
329 |
|
330 |
+
/*
|
331 |
+
* Sendinblue Tab
|
332 |
+
*/
|
333 |
+
#sendinblue-panel table tr.inactive ~ tr {
|
334 |
+
display: none;
|
335 |
+
}
|
336 |
+
|
337 |
+
#sendinblue-panel .dashicons {
|
338 |
+
text-decoration: none;
|
339 |
+
}
|
340 |
+
|
341 |
+
#sendinblue-panel td p {
|
342 |
+
margin-top: 12px;
|
343 |
+
}
|
344 |
+
|
345 |
/*
|
346 |
* List Table
|
347 |
*/
|
431 |
float: right;
|
432 |
font-size: 13px;
|
433 |
color: #666;
|
434 |
+
margin: 1em;
|
435 |
line-height: 1.5;
|
436 |
max-width: 240px;
|
437 |
}
|
admin/js/scripts.js
CHANGED
@@ -126,6 +126,15 @@
|
|
126 |
$( '#publishing-action .spinner' ).addClass( 'is-active' );
|
127 |
}
|
128 |
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
} );
|
130 |
|
131 |
wpcf7.toggleMail2 = function( checkbox ) {
|
126 |
$( '#publishing-action .spinner' ).addClass( 'is-active' );
|
127 |
}
|
128 |
} );
|
129 |
+
|
130 |
+
$( '#wpcf7-sendinblue-enable-contact-list, #wpcf7-sendinblue-enable-transactional-email' ).on( 'change', function() {
|
131 |
+
if ( $( this ).is( ':checked' ) ) {
|
132 |
+
$( this ).closest( 'tr' ).removeClass( 'inactive' );
|
133 |
+
} else {
|
134 |
+
$( this ).closest( 'tr' ).addClass( 'inactive' );
|
135 |
+
}
|
136 |
+
} );
|
137 |
+
|
138 |
} );
|
139 |
|
140 |
wpcf7.toggleMail2 = function( checkbox ) {
|
assets/ajax-loader.gif
DELETED
Binary file
|
includes/block-editor/index.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(t){var e={};function r(n){if(e[n])return e[n].exports;var
|
1 |
+
!function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=12)}([function(t,e){t.exports=window.wp.element},function(t,e){t.exports=window.wp.i18n},function(t,e){t.exports=window.wp.blocks},function(t,e,r){var n=r(7),o=r(8),c=r(9),a=r(11);t.exports=function(t,e){return n(t)||o(t,e)||c(t,e)||a()}},function(t,e){t.exports=window.wp.apiFetch},function(t,e){t.exports=window.wp.compose},function(t,e){t.exports=window.wp.components},function(t,e){t.exports=function(t){if(Array.isArray(t))return t}},function(t,e){t.exports=function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var r=[],_n=!0,n=!1,o=void 0;try{for(var c,a=t[Symbol.iterator]();!(_n=(c=a.next()).done)&&(r.push(c.value),!e||r.length!==e);_n=!0);}catch(t){n=!0,o=t}finally{try{_n||null==a.return||a.return()}finally{if(n)throw o}}return r}}},function(t,e,r){var n=r(10);t.exports=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}},function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},function(t,e,r){"use strict";r.r(e);var n=r(0),o=r(1),c=r(2),a=Object(n.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 242.5 239.46"},Object(n.createElement)("defs",null,Object(n.createElement)("clipPath",{id:"clip-path",transform:"translate(1.72)"},Object(n.createElement)("circle",{class:"cls-1",cx:"119.73",cy:"119.73",r:"116.15",fill:"none"}))),Object(n.createElement)("g",{id:"Layer_2","data-name":"Layer 2"},Object(n.createElement)("g",{id:"Layer_1","data-name":"Layer 1"},Object(n.createElement)("g",{class:"cls-2","clip-path":"url(#clip-path)"},Object(n.createElement)("circle",{class:"cls-3",cx:"121.45",cy:"119.73",r:"116.15",fill:"#33c6f4"}),Object(n.createElement)("path",{class:"cls-4",d:"M239.32,167.79c-53.41-24-108.37-91.46-113-94.55s-10.84.77-10.84.77c-3.87-6.19-10.06.77-10.06.77C76.77,123.55.14,170.11.14,170.11S36.94,237.79,122,237.79C208.48,237.79,239.32,167.79,239.32,167.79Z",transform:"translate(1.72)",fill:"#1b447e"}),Object(n.createElement)("path",{class:"cls-5",d:"M67.48,116.58s15.48-7,12.38,4.65-15.48,28.64-11.61,29.41S83,140.58,86.06,142.12s5.42.78,3.87,6.2-3.1,9.29,0,9.29,5.42-7,9.29-13.94,10.06-3.87,12.38-1.55,9.29,15.49,14.71,13.94,8.51-8.52,6.19-24,1.55-20.12,1.55-20.12,4.64-2.32,13.16,8.51,24,27.09,26.31,26.32-10.83-17.8-7.74-19.35,15.48,2.32,21.68,7.74c0,0,2.12,8.87,2.12.36L126.31,73.24,115.47,74l-10.06.77S80.64,111.94,67.48,116.58Z",transform:"translate(1.72)",fill:"#fff"}),Object(n.createElement)("path",{class:"cls-6",d:"M239.32,170.11c-53.41-24-108.37-93.78-113-96.87s-10.84.77-10.84.77c-3.87-6.19-10.06.77-10.06.77C76.77,123.55.14,170.11.14,170.11",transform:"translate(1.72)",fill:"none",stroke:"#221e1f","stroke-miterlimit":"10","stroke-width":"8px"})),Object(n.createElement)("circle",{class:"cls-6",cx:"121.45",cy:"119.73",r:"116.15",fill:"none",stroke:"#1b447e","stroke-miterlimit":"10","stroke-width":"8px"})))),i=r(3),l=r.n(i),s=r(4),f=r.n(s),u=r(5),p=r(6),m=new Map;f()({path:"contact-form-7/v1/contact-forms?per_page=20"}).then((function(t){Object.entries(t).forEach((function(t){var e=l()(t,2),r=(e[0],e[1]);m.set(r.id,r)}))}));var d={from:[{type:"shortcode",tag:"contact-form-7",attributes:{id:{type:"integer",shortcode:function(t){var e=t.named.id;return parseInt(e)}},title:{type:"string",shortcode:function(t){return t.named.title}}}}],to:[{type:"block",blocks:["core/shortcode"],transform:function(t){return Object(c.createBlock)("core/shortcode",{text:'[contact-form-7 id="'.concat(t.id,'" title="').concat(t.title,'"]')})}}]};Object(c.registerBlockType)("contact-form-7/contact-form-selector",{title:Object(o.__)("Contact Form 7","contact-form-7"),description:Object(o.__)("Insert a contact form you have created with Contact Form 7.","contact-form-7"),category:"widgets",attributes:{id:{type:"integer"},title:{type:"string"}},icon:a,transforms:d,edit:function t(e){var r=e.attributes,c=e.setAttributes;if(!m.size&&!r.id)return Object(n.createElement)("div",{className:"components-placeholder"},Object(n.createElement)("p",null,Object(o.__)("No contact forms were found. Create a contact form first.","contact-form-7")));var a=Array.from(m.values(),(function(t){return{value:t.id,label:t.title}}));if(r.id)a.length||a.push({value:r.id,label:r.title});else{var i=a[0];c({id:parseInt(i.value),title:i.label})}var l=Object(u.useInstanceId)(t),s="contact-form-7-contact-form-selector-".concat(l);return Object(n.createElement)("div",{className:"components-placeholder"},Object(n.createElement)("label",{htmlFor:s,className:"components-placeholder__label"},Object(o.__)("Select a contact form:","contact-form-7")),Object(n.createElement)(p.SelectControl,{id:s,options:a,value:r.id,onChange:function(t){return c({id:parseInt(t),title:m.get(parseInt(t)).title})}}))},save:function(t){var e=t.attributes;return Object(n.createElement)("div",null,'[contact-form-7 id="',e.id,'" title="',e.title,'"]')}})}]);
|
includes/controller.php
CHANGED
@@ -1,7 +1,18 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
2 |
|
3 |
-
add_action( 'parse_request', 'wpcf7_control_init', 20, 0 );
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
function wpcf7_control_init() {
|
6 |
if ( WPCF7_Submission::is_restful() ) {
|
7 |
return;
|
@@ -16,89 +27,151 @@ function wpcf7_control_init() {
|
|
16 |
}
|
17 |
}
|
18 |
|
19 |
-
add_action( 'wp_enqueue_scripts', 'wpcf7_do_enqueue_scripts', 10, 0 );
|
20 |
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
|
|
|
|
|
|
|
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
}
|
30 |
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
-
if ( 'header' === wpcf7_load_js() ) {
|
35 |
-
$in_footer = false;
|
36 |
-
}
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
|
|
|
|
|
41 |
|
42 |
-
$wpcf7 = array(
|
43 |
-
'apiSettings' => array(
|
44 |
-
'root' => esc_url_raw( rest_url( 'contact-form-7/v1' ) ),
|
45 |
-
'namespace' => 'contact-form-7/v1',
|
46 |
-
),
|
47 |
-
);
|
48 |
|
49 |
if ( defined( 'WP_CACHE' ) and WP_CACHE ) {
|
50 |
$wpcf7['cached'] = 1;
|
51 |
}
|
52 |
|
53 |
-
if ( wpcf7_support_html5_fallback() ) {
|
54 |
-
$wpcf7['jqueryUi'] = 1;
|
55 |
-
}
|
56 |
-
|
57 |
wp_localize_script( 'contact-form-7', 'wpcf7', $wpcf7 );
|
58 |
|
59 |
do_action( 'wpcf7_enqueue_scripts' );
|
60 |
}
|
61 |
|
|
|
|
|
|
|
|
|
62 |
function wpcf7_script_is() {
|
63 |
return wp_script_is( 'contact-form-7' );
|
64 |
}
|
65 |
|
|
|
|
|
|
|
|
|
66 |
function wpcf7_enqueue_styles() {
|
67 |
-
wp_enqueue_style( 'contact-form-7'
|
68 |
-
wpcf7_plugin_url( 'includes/css/styles.css' ),
|
69 |
-
array(), WPCF7_VERSION, 'all' );
|
70 |
|
71 |
if ( wpcf7_is_rtl() ) {
|
72 |
-
wp_enqueue_style( 'contact-form-7-rtl'
|
73 |
-
wpcf7_plugin_url( 'includes/css/styles-rtl.css' ),
|
74 |
-
array(), WPCF7_VERSION, 'all' );
|
75 |
}
|
76 |
|
77 |
do_action( 'wpcf7_enqueue_styles' );
|
78 |
}
|
79 |
|
|
|
|
|
|
|
|
|
80 |
function wpcf7_style_is() {
|
81 |
return wp_style_is( 'contact-form-7' );
|
82 |
}
|
83 |
|
84 |
-
/* HTML5 Fallback */
|
85 |
|
86 |
-
add_action(
|
|
|
|
|
|
|
|
|
87 |
|
|
|
|
|
|
|
88 |
function wpcf7_html5_fallback() {
|
89 |
if ( ! wpcf7_support_html5_fallback() ) {
|
90 |
return;
|
91 |
}
|
92 |
|
93 |
if ( wpcf7_script_is() ) {
|
94 |
-
wp_enqueue_script( '
|
95 |
-
wp_enqueue_script( 'jquery-ui-spinner' );
|
96 |
}
|
97 |
|
98 |
if ( wpcf7_style_is() ) {
|
99 |
-
wp_enqueue_style( 'jquery-ui-smoothness'
|
100 |
-
wpcf7_plugin_url(
|
101 |
-
'includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css' ),
|
102 |
-
array(), '1.11.4', 'screen' );
|
103 |
}
|
104 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Controller for front-end requests, scripts, and styles
|
4 |
+
*/
|
5 |
|
|
|
6 |
|
7 |
+
add_action(
|
8 |
+
'parse_request',
|
9 |
+
'wpcf7_control_init',
|
10 |
+
20, 0
|
11 |
+
);
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Handles a submission in non-Ajax mode.
|
15 |
+
*/
|
16 |
function wpcf7_control_init() {
|
17 |
if ( WPCF7_Submission::is_restful() ) {
|
18 |
return;
|
27 |
}
|
28 |
}
|
29 |
|
|
|
30 |
|
31 |
+
/**
|
32 |
+
* Registers main scripts and styles.
|
33 |
+
*/
|
34 |
+
add_action(
|
35 |
+
'wp_enqueue_scripts',
|
36 |
+
function () {
|
37 |
+
$assets = array();
|
38 |
+
$asset_file = wpcf7_plugin_path( 'includes/js/index.asset.php' );
|
39 |
|
40 |
+
if ( file_exists( $asset_file ) ) {
|
41 |
+
$assets = include( $asset_file );
|
42 |
+
}
|
|
|
43 |
|
44 |
+
$assets = wp_parse_args( $assets, array(
|
45 |
+
'src' => wpcf7_plugin_url( 'includes/js/index.js' ),
|
46 |
+
'dependencies' => array(
|
47 |
+
'wp-api-fetch',
|
48 |
+
'wp-polyfill',
|
49 |
+
),
|
50 |
+
'version' => WPCF7_VERSION,
|
51 |
+
'in_footer' => ( 'header' !== wpcf7_load_js() ),
|
52 |
+
) );
|
53 |
+
|
54 |
+
wp_register_script(
|
55 |
+
'contact-form-7',
|
56 |
+
$assets['src'],
|
57 |
+
$assets['dependencies'],
|
58 |
+
$assets['version'],
|
59 |
+
$assets['in_footer']
|
60 |
+
);
|
61 |
+
|
62 |
+
wp_register_script(
|
63 |
+
'contact-form-7-html5-fallback',
|
64 |
+
wpcf7_plugin_url( 'includes/js/html5-fallback.js' ),
|
65 |
+
array( 'jquery-ui-datepicker' ),
|
66 |
+
WPCF7_VERSION,
|
67 |
+
true
|
68 |
+
);
|
69 |
+
|
70 |
+
if ( wpcf7_load_js() ) {
|
71 |
+
wpcf7_enqueue_scripts();
|
72 |
+
}
|
73 |
+
|
74 |
+
wp_register_style(
|
75 |
+
'contact-form-7',
|
76 |
+
wpcf7_plugin_url( 'includes/css/styles.css' ),
|
77 |
+
array(),
|
78 |
+
WPCF7_VERSION,
|
79 |
+
'all'
|
80 |
+
);
|
81 |
+
|
82 |
+
wp_register_style(
|
83 |
+
'contact-form-7-rtl',
|
84 |
+
wpcf7_plugin_url( 'includes/css/styles-rtl.css' ),
|
85 |
+
array(),
|
86 |
+
WPCF7_VERSION,
|
87 |
+
'all'
|
88 |
+
);
|
89 |
+
|
90 |
+
wp_register_style(
|
91 |
+
'jquery-ui-smoothness',
|
92 |
+
wpcf7_plugin_url(
|
93 |
+
'includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css'
|
94 |
+
),
|
95 |
+
array(),
|
96 |
+
'1.12.1',
|
97 |
+
'screen'
|
98 |
+
);
|
99 |
+
|
100 |
+
if ( wpcf7_load_css() ) {
|
101 |
+
wpcf7_enqueue_styles();
|
102 |
+
}
|
103 |
+
},
|
104 |
+
10, 0
|
105 |
+
);
|
106 |
|
|
|
|
|
|
|
107 |
|
108 |
+
/**
|
109 |
+
* Enqueues scripts.
|
110 |
+
*/
|
111 |
+
function wpcf7_enqueue_scripts() {
|
112 |
+
wp_enqueue_script( 'contact-form-7' );
|
113 |
|
114 |
+
$wpcf7 = array();
|
|
|
|
|
|
|
|
|
|
|
115 |
|
116 |
if ( defined( 'WP_CACHE' ) and WP_CACHE ) {
|
117 |
$wpcf7['cached'] = 1;
|
118 |
}
|
119 |
|
|
|
|
|
|
|
|
|
120 |
wp_localize_script( 'contact-form-7', 'wpcf7', $wpcf7 );
|
121 |
|
122 |
do_action( 'wpcf7_enqueue_scripts' );
|
123 |
}
|
124 |
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Returns true if the main script is enqueued.
|
128 |
+
*/
|
129 |
function wpcf7_script_is() {
|
130 |
return wp_script_is( 'contact-form-7' );
|
131 |
}
|
132 |
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Enqueues styles.
|
136 |
+
*/
|
137 |
function wpcf7_enqueue_styles() {
|
138 |
+
wp_enqueue_style( 'contact-form-7' );
|
|
|
|
|
139 |
|
140 |
if ( wpcf7_is_rtl() ) {
|
141 |
+
wp_enqueue_style( 'contact-form-7-rtl' );
|
|
|
|
|
142 |
}
|
143 |
|
144 |
do_action( 'wpcf7_enqueue_styles' );
|
145 |
}
|
146 |
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Returns true if the main stylesheet is enqueued.
|
150 |
+
*/
|
151 |
function wpcf7_style_is() {
|
152 |
return wp_style_is( 'contact-form-7' );
|
153 |
}
|
154 |
|
|
|
155 |
|
156 |
+
add_action(
|
157 |
+
'wp_enqueue_scripts',
|
158 |
+
'wpcf7_html5_fallback',
|
159 |
+
20, 0
|
160 |
+
);
|
161 |
|
162 |
+
/**
|
163 |
+
* Enqueues scripts and styles for the HTML5 fallback.
|
164 |
+
*/
|
165 |
function wpcf7_html5_fallback() {
|
166 |
if ( ! wpcf7_support_html5_fallback() ) {
|
167 |
return;
|
168 |
}
|
169 |
|
170 |
if ( wpcf7_script_is() ) {
|
171 |
+
wp_enqueue_script( 'contact-form-7-html5-fallback' );
|
|
|
172 |
}
|
173 |
|
174 |
if ( wpcf7_style_is() ) {
|
175 |
+
wp_enqueue_style( 'jquery-ui-smoothness' );
|
|
|
|
|
|
|
176 |
}
|
177 |
}
|
includes/css/styles-rtl.css
CHANGED
@@ -1,12 +1,11 @@
|
|
1 |
-
|
2 |
direction: rtl;
|
3 |
}
|
4 |
|
5 |
-
.use-floating-validation-tip
|
6 |
-
|
7 |
-
right: 20%;
|
8 |
}
|
9 |
|
10 |
-
|
11 |
margin: 0 1em 0 0;
|
12 |
}
|
1 |
+
.wpcf7-not-valid-tip {
|
2 |
direction: rtl;
|
3 |
}
|
4 |
|
5 |
+
.use-floating-validation-tip .wpcf7-not-valid-tip {
|
6 |
+
right: 1em;
|
|
|
7 |
}
|
8 |
|
9 |
+
.wpcf7-list-item {
|
10 |
margin: 0 1em 0 0;
|
11 |
}
|
includes/css/styles.css
CHANGED
@@ -15,7 +15,9 @@
|
|
15 |
border: 2px solid #00a0d2; /* Blue */
|
16 |
}
|
17 |
|
18 |
-
.wpcf7 form.init .wpcf7-response-output
|
|
|
|
|
19 |
display: none;
|
20 |
}
|
21 |
|
@@ -49,58 +51,101 @@
|
|
49 |
}
|
50 |
|
51 |
.use-floating-validation-tip .wpcf7-not-valid-tip {
|
52 |
-
position:
|
53 |
-
top:
|
54 |
-
left:
|
55 |
z-index: 100;
|
56 |
border: 1px solid #dc3232;
|
57 |
background: #fff;
|
58 |
padding: .2em .8em;
|
|
|
59 |
}
|
60 |
|
61 |
-
|
62 |
display: inline-block;
|
63 |
margin: 0 0 0 1em;
|
64 |
}
|
65 |
|
66 |
-
|
67 |
-
|
68 |
content: " ";
|
69 |
}
|
70 |
|
71 |
-
|
72 |
visibility: hidden;
|
73 |
display: inline-block;
|
74 |
-
background-
|
75 |
-
|
76 |
-
|
|
|
77 |
border: none;
|
|
|
78 |
padding: 0;
|
79 |
-
margin: 0
|
80 |
-
|
81 |
}
|
82 |
|
83 |
-
|
84 |
visibility: visible;
|
85 |
}
|
86 |
|
87 |
-
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
}
|
90 |
|
91 |
-
|
92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
}
|
94 |
|
95 |
-
|
96 |
cursor: pointer;
|
97 |
}
|
98 |
|
99 |
-
|
100 |
cursor: default;
|
101 |
}
|
102 |
|
103 |
-
|
104 |
cursor: not-allowed;
|
105 |
}
|
106 |
|
15 |
border: 2px solid #00a0d2; /* Blue */
|
16 |
}
|
17 |
|
18 |
+
.wpcf7 form.init .wpcf7-response-output,
|
19 |
+
.wpcf7 form.resetting .wpcf7-response-output,
|
20 |
+
.wpcf7 form.submitting .wpcf7-response-output {
|
21 |
display: none;
|
22 |
}
|
23 |
|
51 |
}
|
52 |
|
53 |
.use-floating-validation-tip .wpcf7-not-valid-tip {
|
54 |
+
position: relative;
|
55 |
+
top: -2ex;
|
56 |
+
left: 1em;
|
57 |
z-index: 100;
|
58 |
border: 1px solid #dc3232;
|
59 |
background: #fff;
|
60 |
padding: .2em .8em;
|
61 |
+
width: 24em;
|
62 |
}
|
63 |
|
64 |
+
.wpcf7-list-item {
|
65 |
display: inline-block;
|
66 |
margin: 0 0 0 1em;
|
67 |
}
|
68 |
|
69 |
+
.wpcf7-list-item-label::before,
|
70 |
+
.wpcf7-list-item-label::after {
|
71 |
content: " ";
|
72 |
}
|
73 |
|
74 |
+
.wpcf7 .ajax-loader {
|
75 |
visibility: hidden;
|
76 |
display: inline-block;
|
77 |
+
background-color: #23282d; /* Dark Gray 800 */
|
78 |
+
opacity: 0.75;
|
79 |
+
width: 24px;
|
80 |
+
height: 24px;
|
81 |
border: none;
|
82 |
+
border-radius: 100%;
|
83 |
padding: 0;
|
84 |
+
margin: 0 24px;
|
85 |
+
position: relative;
|
86 |
}
|
87 |
|
88 |
+
.wpcf7 form.submitting .ajax-loader {
|
89 |
visibility: visible;
|
90 |
}
|
91 |
|
92 |
+
.wpcf7 .ajax-loader::before {
|
93 |
+
content: '';
|
94 |
+
position: absolute;
|
95 |
+
background-color: #fbfbfc; /* Light Gray 100 */
|
96 |
+
top: 4px;
|
97 |
+
left: 4px;
|
98 |
+
width: 6px;
|
99 |
+
height: 6px;
|
100 |
+
border: none;
|
101 |
+
border-radius: 100%;
|
102 |
+
transform-origin: 8px 8px;
|
103 |
+
animation-name: spin;
|
104 |
+
animation-duration: 1000ms;
|
105 |
+
animation-timing-function: linear;
|
106 |
+
animation-iteration-count: infinite;
|
107 |
}
|
108 |
|
109 |
+
@media (prefers-reduced-motion: reduce) {
|
110 |
+
.wpcf7 .ajax-loader::before {
|
111 |
+
animation-name: blink;
|
112 |
+
animation-duration: 2000ms;
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
@keyframes spin {
|
117 |
+
from {
|
118 |
+
transform: rotate(0deg);
|
119 |
+
}
|
120 |
+
|
121 |
+
to {
|
122 |
+
transform: rotate(360deg);
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
@keyframes blink {
|
127 |
+
from {
|
128 |
+
opacity: 0;
|
129 |
+
}
|
130 |
+
|
131 |
+
50% {
|
132 |
+
opacity: 1;
|
133 |
+
}
|
134 |
+
|
135 |
+
to {
|
136 |
+
opacity: 0;
|
137 |
+
}
|
138 |
}
|
139 |
|
140 |
+
.wpcf7 input[type="file"] {
|
141 |
cursor: pointer;
|
142 |
}
|
143 |
|
144 |
+
.wpcf7 input[type="file"]:disabled {
|
145 |
cursor: default;
|
146 |
}
|
147 |
|
148 |
+
.wpcf7 .wpcf7-submit:disabled {
|
149 |
cursor: not-allowed;
|
150 |
}
|
151 |
|
includes/file.php
ADDED
@@ -0,0 +1,367 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Validates uploaded files and moves them to the temporary directory.
|
5 |
+
*
|
6 |
+
* @param array $file An item of `$_FILES`.
|
7 |
+
* @param string|array $args Optional. Arguments to control behavior.
|
8 |
+
* @return array|WP_Error Array of file paths, or WP_Error if validation fails.
|
9 |
+
*/
|
10 |
+
function wpcf7_unship_uploaded_file( $file, $args = '' ) {
|
11 |
+
$args = wp_parse_args( $args, array(
|
12 |
+
'required' => false,
|
13 |
+
'filetypes' => '',
|
14 |
+
'limit' => MB_IN_BYTES,
|
15 |
+
) );
|
16 |
+
|
17 |
+
foreach ( array( 'name', 'size', 'tmp_name', 'error' ) as $key ) {
|
18 |
+
if ( ! isset( $file[$key] ) ) {
|
19 |
+
$file[$key] = array();
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
$names = wpcf7_array_flatten( $file['name'] );
|
24 |
+
$sizes = wpcf7_array_flatten( $file['size'] );
|
25 |
+
$tmp_names = wpcf7_array_flatten( $file['tmp_name'] );
|
26 |
+
$errors = wpcf7_array_flatten( $file['error'] );
|
27 |
+
|
28 |
+
foreach ( $errors as $error ) {
|
29 |
+
if ( ! empty( $error ) and UPLOAD_ERR_NO_FILE !== $error ) {
|
30 |
+
return new WP_Error( 'wpcf7_upload_failed_php_error',
|
31 |
+
wpcf7_get_message( 'upload_failed_php_error' )
|
32 |
+
);
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
if ( $args['required'] and ! array_filter( $tmp_names ) ) {
|
37 |
+
return new WP_Error( 'wpcf7_invalid_required',
|
38 |
+
wpcf7_get_message( 'invalid_required' )
|
39 |
+
);
|
40 |
+
}
|
41 |
+
|
42 |
+
// File type validation
|
43 |
+
$file_type_pattern = wpcf7_acceptable_filetypes(
|
44 |
+
$args['filetypes'], 'regex'
|
45 |
+
);
|
46 |
+
|
47 |
+
$file_type_pattern = '/\.(' . $file_type_pattern . ')$/i';
|
48 |
+
|
49 |
+
foreach ( $names as $name ) {
|
50 |
+
if ( ! empty( $name ) and ! preg_match( $file_type_pattern, $name ) ) {
|
51 |
+
return new WP_Error( 'wpcf7_upload_file_type_invalid',
|
52 |
+
wpcf7_get_message( 'upload_file_type_invalid' )
|
53 |
+
);
|
54 |
+
}
|
55 |
+
}
|
56 |
+
|
57 |
+
// File size validation
|
58 |
+
$total_size = array_sum( $sizes );
|
59 |
+
|
60 |
+
if ( $args['limit'] < $total_size ) {
|
61 |
+
return new WP_Error( 'wpcf7_upload_file_too_large',
|
62 |
+
wpcf7_get_message( 'upload_file_too_large' )
|
63 |
+
);
|
64 |
+
}
|
65 |
+
|
66 |
+
// Move uploaded file to tmp dir
|
67 |
+
$uploads_dir = wpcf7_upload_tmp_dir();
|
68 |
+
$uploads_dir = wpcf7_maybe_add_random_dir( $uploads_dir );
|
69 |
+
|
70 |
+
$uploaded_files = array();
|
71 |
+
|
72 |
+
foreach ( $names as $key => $name ) {
|
73 |
+
$tmp_name = $tmp_names[$key];
|
74 |
+
|
75 |
+
if ( empty( $tmp_name ) or ! is_uploaded_file( $tmp_name ) ) {
|
76 |
+
continue;
|
77 |
+
}
|
78 |
+
|
79 |
+
$filename = $name;
|
80 |
+
$filename = wpcf7_canonicalize( $filename, 'as-is' );
|
81 |
+
$filename = wpcf7_antiscript_file_name( $filename );
|
82 |
+
|
83 |
+
$filename = apply_filters( 'wpcf7_upload_file_name',
|
84 |
+
$filename, $name, $args
|
85 |
+
);
|
86 |
+
|
87 |
+
$filename = wp_unique_filename( $uploads_dir, $filename );
|
88 |
+
$new_file = path_join( $uploads_dir, $filename );
|
89 |
+
|
90 |
+
if ( false === @move_uploaded_file( $tmp_name, $new_file ) ) {
|
91 |
+
return new WP_Error( 'wpcf7_upload_failed',
|
92 |
+
wpcf7_get_message( 'upload_failed' )
|
93 |
+
);
|
94 |
+
}
|
95 |
+
|
96 |
+
// Make sure the uploaded file is only readable for the owner process
|
97 |
+
chmod( $new_file, 0400 );
|
98 |
+
|
99 |
+
$uploaded_files[] = $new_file;
|
100 |
+
}
|
101 |
+
|
102 |
+
return $uploaded_files;
|
103 |
+
}
|
104 |
+
|
105 |
+
|
106 |
+
add_filter(
|
107 |
+
'wpcf7_messages',
|
108 |
+
'wpcf7_file_messages',
|
109 |
+
10, 1
|
110 |
+
);
|
111 |
+
|
112 |
+
function wpcf7_file_messages( $messages ) {
|
113 |
+
return array_merge( $messages, array(
|
114 |
+
'upload_failed' => array(
|
115 |
+
'description' => __( "Uploading a file fails for any reason", 'contact-form-7' ),
|
116 |
+
'default' => __( "There was an unknown error uploading the file.", 'contact-form-7' )
|
117 |
+
),
|
118 |
+
|
119 |
+
'upload_file_type_invalid' => array(
|
120 |
+
'description' => __( "Uploaded file is not allowed for file type", 'contact-form-7' ),
|
121 |
+
'default' => __( "You are not allowed to upload files of this type.", 'contact-form-7' )
|
122 |
+
),
|
123 |
+
|
124 |
+
'upload_file_too_large' => array(
|
125 |
+
'description' => __( "Uploaded file is too large", 'contact-form-7' ),
|
126 |
+
'default' => __( "The file is too big.", 'contact-form-7' )
|
127 |
+
),
|
128 |
+
|
129 |
+
'upload_failed_php_error' => array(
|
130 |
+
'description' => __( "Uploading a file fails for PHP error", 'contact-form-7' ),
|
131 |
+
'default' => __( "There was an error uploading the file.", 'contact-form-7' )
|
132 |
+
)
|
133 |
+
) );
|
134 |
+
}
|
135 |
+
|
136 |
+
|
137 |
+
add_filter(
|
138 |
+
'wpcf7_form_enctype',
|
139 |
+
'wpcf7_file_form_enctype_filter',
|
140 |
+
10, 1
|
141 |
+
);
|
142 |
+
|
143 |
+
function wpcf7_file_form_enctype_filter( $enctype ) {
|
144 |
+
$multipart = (bool) wpcf7_scan_form_tags( array(
|
145 |
+
'feature' => 'file-uploading',
|
146 |
+
) );
|
147 |
+
|
148 |
+
if ( $multipart ) {
|
149 |
+
$enctype = 'multipart/form-data';
|
150 |
+
}
|
151 |
+
|
152 |
+
return $enctype;
|
153 |
+
}
|
154 |
+
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Returns a formatted list of acceptable filetypes.
|
158 |
+
*
|
159 |
+
* @param string|array $types Optional. Array of filetypes.
|
160 |
+
* @param string $format Optional. Pre-defined format designator.
|
161 |
+
* @return string Formatted list of acceptable filetypes.
|
162 |
+
*/
|
163 |
+
function wpcf7_acceptable_filetypes( $types = 'default', $format = 'regex' ) {
|
164 |
+
if ( 'default' === $types
|
165 |
+
or empty( $types ) ) {
|
166 |
+
$types = array(
|
167 |
+
'jpg',
|
168 |
+
'jpeg',
|
169 |
+
'png',
|
170 |
+
'gif',
|
171 |
+
'pdf',
|
172 |
+
'doc',
|
173 |
+
'docx',
|
174 |
+
'ppt',
|
175 |
+
'pptx',
|
176 |
+
'odt',
|
177 |
+
'avi',
|
178 |
+
'ogg',
|
179 |
+
'm4a',
|
180 |
+
'mov',
|
181 |
+
'mp3',
|
182 |
+
'mp4',
|
183 |
+
'mpg',
|
184 |
+
'wav',
|
185 |
+
'wmv',
|
186 |
+
);
|
187 |
+
} else {
|
188 |
+
$types_tmp = (array) $types;
|
189 |
+
$types = array();
|
190 |
+
|
191 |
+
foreach ( $types_tmp as $val ) {
|
192 |
+
if ( is_string( $val ) ) {
|
193 |
+
$val = preg_split( '/[\s|,]+/', $val );
|
194 |
+
}
|
195 |
+
|
196 |
+
$types = array_merge( $types, (array) $val );
|
197 |
+
}
|
198 |
+
}
|
199 |
+
|
200 |
+
$types = array_unique( array_filter( $types ) );
|
201 |
+
|
202 |
+
$output = '';
|
203 |
+
|
204 |
+
foreach ( $types as $type ) {
|
205 |
+
$type = trim( $type, ' ,.|' );
|
206 |
+
|
207 |
+
$type = str_replace(
|
208 |
+
array( '.', '+', '*', '?' ),
|
209 |
+
array( '\.', '\+', '\*', '\?' ),
|
210 |
+
$type
|
211 |
+
);
|
212 |
+
|
213 |
+
if ( '' === $type ) {
|
214 |
+
continue;
|
215 |
+
}
|
216 |
+
|
217 |
+
if ( 'attr' === $format
|
218 |
+
or 'attribute' === $format ) {
|
219 |
+
$output .= sprintf( '.%s', $type );
|
220 |
+
$output .= ',';
|
221 |
+
} else {
|
222 |
+
$output .= $type;
|
223 |
+
$output .= '|';
|
224 |
+
}
|
225 |
+
}
|
226 |
+
|
227 |
+
return trim( $output, ' ,|' );
|
228 |
+
}
|
229 |
+
|
230 |
+
|
231 |
+
add_action(
|
232 |
+
'wpcf7_init',
|
233 |
+
'wpcf7_init_uploads',
|
234 |
+
10, 0
|
235 |
+
);
|
236 |
+
|
237 |
+
function wpcf7_init_uploads() {
|
238 |
+
$dir = wpcf7_upload_tmp_dir();
|
239 |
+
wp_mkdir_p( $dir );
|
240 |
+
|
241 |
+
$htaccess_file = path_join( $dir, '.htaccess' );
|
242 |
+
|
243 |
+
if ( file_exists( $htaccess_file ) ) {
|
244 |
+
return;
|
245 |
+
}
|
246 |
+
|
247 |
+
if ( $handle = fopen( $htaccess_file, 'w' ) ) {
|
248 |
+
fwrite( $handle, "Deny from all\n" );
|
249 |
+
fclose( $handle );
|
250 |
+
}
|
251 |
+
}
|
252 |
+
|
253 |
+
|
254 |
+
function wpcf7_maybe_add_random_dir( $dir ) {
|
255 |
+
do {
|
256 |
+
$rand_max = mt_getrandmax();
|
257 |
+
$rand = zeroise( mt_rand( 0, $rand_max ), strlen( $rand_max ) );
|
258 |
+
$dir_new = path_join( $dir, $rand );
|
259 |
+
} while ( file_exists( $dir_new ) );
|
260 |
+
|
261 |
+
if ( wp_mkdir_p( $dir_new ) ) {
|
262 |
+
return $dir_new;
|
263 |
+
}
|
264 |
+
|
265 |
+
return $dir;
|
266 |
+
}
|
267 |
+
|
268 |
+
|
269 |
+
function wpcf7_upload_tmp_dir() {
|
270 |
+
if ( defined( 'WPCF7_UPLOADS_TMP_DIR' ) ) {
|
271 |
+
return WPCF7_UPLOADS_TMP_DIR;
|
272 |
+
} else {
|
273 |
+
return path_join( wpcf7_upload_dir( 'dir' ), 'wpcf7_uploads' );
|
274 |
+
}
|
275 |
+
}
|
276 |
+
|
277 |
+
|
278 |
+
add_action(
|
279 |
+
'template_redirect',
|
280 |
+
'wpcf7_cleanup_upload_files',
|
281 |
+
20, 0
|
282 |
+
);
|
283 |
+
|
284 |
+
function wpcf7_cleanup_upload_files( $seconds = 60, $max = 100 ) {
|
285 |
+
if ( is_admin()
|
286 |
+
or 'GET' != $_SERVER['REQUEST_METHOD']
|
287 |
+
or is_robots()
|
288 |
+
or is_feed()
|
289 |
+
or is_trackback() ) {
|
290 |
+
return;
|
291 |
+
}
|
292 |
+
|
293 |
+
$dir = trailingslashit( wpcf7_upload_tmp_dir() );
|
294 |
+
|
295 |
+
if ( ! is_dir( $dir )
|
296 |
+
or ! is_readable( $dir )
|
297 |
+
or ! wp_is_writable( $dir ) ) {
|
298 |
+
return;
|
299 |
+
}
|
300 |
+
|
301 |
+
$seconds = absint( $seconds );
|
302 |
+
$max = absint( $max );
|
303 |
+
$count = 0;
|
304 |
+
|
305 |
+
if ( $handle = opendir( $dir ) ) {
|
306 |
+
while ( false !== ( $file = readdir( $handle ) ) ) {
|
307 |
+
if ( '.' == $file
|
308 |
+
or '..' == $file
|
309 |
+
or '.htaccess' == $file ) {
|
310 |
+
continue;
|
311 |
+
}
|
312 |
+
|
313 |
+
$mtime = @filemtime( path_join( $dir, $file ) );
|
314 |
+
|
315 |
+
if ( $mtime and time() < $mtime + $seconds ) { // less than $seconds old
|
316 |
+
continue;
|
317 |
+
}
|
318 |
+
|
319 |
+
wpcf7_rmdir_p( path_join( $dir, $file ) );
|
320 |
+
$count += 1;
|
321 |
+
|
322 |
+
if ( $max <= $count ) {
|
323 |
+
break;
|
324 |
+
}
|
325 |
+
}
|
326 |
+
|
327 |
+
closedir( $handle );
|
328 |
+
}
|
329 |
+
}
|
330 |
+
|
331 |
+
|
332 |
+
add_action(
|
333 |
+
'wpcf7_admin_warnings',
|
334 |
+
'wpcf7_file_display_warning_message',
|
335 |
+
10, 3
|
336 |
+
);
|
337 |
+
|
338 |
+
function wpcf7_file_display_warning_message( $page, $action, $object ) {
|
339 |
+
if ( $object instanceof WPCF7_ContactForm ) {
|
340 |
+
$contact_form = $object;
|
341 |
+
} else {
|
342 |
+
return;
|
343 |
+
}
|
344 |
+
|
345 |
+
$has_tags = (bool) $contact_form->scan_form_tags( array(
|
346 |
+
'feature' => 'file-uploading',
|
347 |
+
) );
|
348 |
+
|
349 |
+
if ( ! $has_tags ) {
|
350 |
+
return;
|
351 |
+
}
|
352 |
+
|
353 |
+
$uploads_dir = wpcf7_upload_tmp_dir();
|
354 |
+
|
355 |
+
if ( ! is_dir( $uploads_dir ) or ! wp_is_writable( $uploads_dir ) ) {
|
356 |
+
$message = sprintf(
|
357 |
+
/* translators: %s: the path of the temporary folder */
|
358 |
+
__( 'This contact form has file uploading fields, but the temporary folder for the files (%s) does not exist or is not writable. You can create the folder or change its permission manually.', 'contact-form-7' ),
|
359 |
+
$uploads_dir
|
360 |
+
);
|
361 |
+
|
362 |
+
echo sprintf(
|
363 |
+
'<div class="notice notice-warning"><p>%s</p></div>',
|
364 |
+
esc_html( $message )
|
365 |
+
);
|
366 |
+
}
|
367 |
+
}
|
includes/formatting.php
CHANGED
@@ -39,8 +39,10 @@ function wpcf7_autop( $pee, $br = 1 ) {
|
|
39 |
$pee .= '<p>' . trim( $tinkle, "\n" ) . "</p>\n";
|
40 |
}
|
41 |
|
42 |
-
$pee = preg_replace( '|<p>\s*</p>|', '', $pee ); // under certain strange conditions it could create a P of entirely whitespace
|
43 |
$pee = preg_replace( '!<p>([^<]+)</(div|address|form|fieldset)>!', "<p>$1</p></$2>", $pee );
|
|
|
|
|
|
|
44 |
$pee = preg_replace( '!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee ); // don't pee all over a tag
|
45 |
$pee = preg_replace( "|<p>(<li.+?)</p>|", "$1", $pee ); // problem with nested lists
|
46 |
$pee = preg_replace( '|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee );
|
@@ -178,168 +180,16 @@ function wpcf7_canonicalize( $text, $strto = 'lower' ) {
|
|
178 |
return $text;
|
179 |
}
|
180 |
|
181 |
-
/**
|
182 |
-
* Check whether a string is a valid NAME token.
|
183 |
-
*
|
184 |
-
* ID and NAME tokens must begin with a letter ([A-Za-z])
|
185 |
-
* and may be followed by any number of letters, digits ([0-9]),
|
186 |
-
* hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
|
187 |
-
*
|
188 |
-
* @see http://www.w3.org/TR/html401/types.html#h-6.2
|
189 |
-
*
|
190 |
-
* @return bool True if it is a valid name, false if not.
|
191 |
-
*/
|
192 |
-
function wpcf7_is_name( $string ) {
|
193 |
-
return preg_match( '/^[A-Za-z][-A-Za-z0-9_:.]*$/', $string );
|
194 |
-
}
|
195 |
-
|
196 |
function wpcf7_sanitize_unit_tag( $tag ) {
|
197 |
$tag = preg_replace( '/[^A-Za-z0-9_-]/', '', $tag );
|
198 |
return $tag;
|
199 |
}
|
200 |
|
201 |
-
function wpcf7_is_email( $email ) {
|
202 |
-
$result = is_email( $email );
|
203 |
-
return apply_filters( 'wpcf7_is_email', $result, $email );
|
204 |
-
}
|
205 |
-
|
206 |
-
function wpcf7_is_url( $url ) {
|
207 |
-
$result = ( false !== filter_var( $url, FILTER_VALIDATE_URL ) );
|
208 |
-
return apply_filters( 'wpcf7_is_url', $result, $url );
|
209 |
-
}
|
210 |
-
|
211 |
-
function wpcf7_is_tel( $tel ) {
|
212 |
-
$pattern = '%^[+]?' // + sign
|
213 |
-
. '(?:\([0-9]+\)|[0-9]+)' // (1234) or 1234
|
214 |
-
. '(?:[/ -]*' // delimiter
|
215 |
-
. '(?:\([0-9]+\)|[0-9]+)' // (1234) or 1234
|
216 |
-
. ')*$%';
|
217 |
-
|
218 |
-
$result = preg_match( $pattern, trim( $tel ) );
|
219 |
-
return apply_filters( 'wpcf7_is_tel', $result, $tel );
|
220 |
-
}
|
221 |
-
|
222 |
-
function wpcf7_is_number( $number ) {
|
223 |
-
$result = is_numeric( $number );
|
224 |
-
return apply_filters( 'wpcf7_is_number', $result, $number );
|
225 |
-
}
|
226 |
-
|
227 |
-
function wpcf7_is_date( $date ) {
|
228 |
-
$result = preg_match( '/^([0-9]{4,})-([0-9]{2})-([0-9]{2})$/', $date, $matches );
|
229 |
-
|
230 |
-
if ( $result ) {
|
231 |
-
$result = checkdate( $matches[2], $matches[3], $matches[1] );
|
232 |
-
}
|
233 |
-
|
234 |
-
return apply_filters( 'wpcf7_is_date', $result, $date );
|
235 |
-
}
|
236 |
-
|
237 |
-
function wpcf7_is_mailbox_list( $mailbox_list ) {
|
238 |
-
if ( ! is_array( $mailbox_list ) ) {
|
239 |
-
$mailbox_text = (string) $mailbox_list;
|
240 |
-
$mailbox_text = wp_unslash( $mailbox_text );
|
241 |
-
|
242 |
-
$mailbox_text = preg_replace( '/\\\\(?:\"|\')/', 'esc-quote',
|
243 |
-
$mailbox_text );
|
244 |
-
|
245 |
-
$mailbox_text = preg_replace( '/(?:\".*?\"|\'.*?\')/', 'quoted-string',
|
246 |
-
$mailbox_text );
|
247 |
-
|
248 |
-
$mailbox_list = explode( ',', $mailbox_text );
|
249 |
-
}
|
250 |
-
|
251 |
-
$addresses = array();
|
252 |
-
|
253 |
-
foreach ( $mailbox_list as $mailbox ) {
|
254 |
-
if ( ! is_string( $mailbox ) ) {
|
255 |
-
return false;
|
256 |
-
}
|
257 |
-
|
258 |
-
$mailbox = trim( $mailbox );
|
259 |
-
|
260 |
-
if ( preg_match( '/<(.+)>$/', $mailbox, $matches ) ) {
|
261 |
-
$addr_spec = $matches[1];
|
262 |
-
} else {
|
263 |
-
$addr_spec = $mailbox;
|
264 |
-
}
|
265 |
-
|
266 |
-
if ( ! wpcf7_is_email( $addr_spec ) ) {
|
267 |
-
return false;
|
268 |
-
}
|
269 |
-
|
270 |
-
$addresses[] = $addr_spec;
|
271 |
-
}
|
272 |
-
|
273 |
-
return $addresses;
|
274 |
-
}
|
275 |
-
|
276 |
-
function wpcf7_is_email_in_domain( $email, $domain ) {
|
277 |
-
$email_list = wpcf7_is_mailbox_list( $email );
|
278 |
-
$domain = strtolower( $domain );
|
279 |
-
|
280 |
-
foreach ( $email_list as $email ) {
|
281 |
-
$email_domain = substr( $email, strrpos( $email, '@' ) + 1 );
|
282 |
-
$email_domain = strtolower( $email_domain );
|
283 |
-
$domain_parts = explode( '.', $domain );
|
284 |
-
|
285 |
-
do {
|
286 |
-
$site_domain = implode( '.', $domain_parts );
|
287 |
-
|
288 |
-
if ( $site_domain == $email_domain ) {
|
289 |
-
continue 2;
|
290 |
-
}
|
291 |
-
|
292 |
-
array_shift( $domain_parts );
|
293 |
-
} while ( $domain_parts );
|
294 |
-
|
295 |
-
return false;
|
296 |
-
}
|
297 |
-
|
298 |
-
return true;
|
299 |
-
}
|
300 |
-
|
301 |
-
function wpcf7_is_email_in_site_domain( $email ) {
|
302 |
-
if ( wpcf7_is_localhost() ) {
|
303 |
-
return true;
|
304 |
-
}
|
305 |
-
|
306 |
-
$site_domain = strtolower( $_SERVER['SERVER_NAME'] );
|
307 |
-
|
308 |
-
if ( preg_match( '/^[0-9.]+$/', $site_domain ) ) { // 123.456.789.012
|
309 |
-
return true;
|
310 |
-
}
|
311 |
-
|
312 |
-
if ( wpcf7_is_email_in_domain( $email, $site_domain ) ) {
|
313 |
-
return true;
|
314 |
-
}
|
315 |
-
|
316 |
-
$home_url = home_url();
|
317 |
-
|
318 |
-
// for interoperability with WordPress MU Domain Mapping plugin
|
319 |
-
if ( is_multisite()
|
320 |
-
and function_exists( 'domain_mapping_siteurl' ) ) {
|
321 |
-
$domain_mapping_siteurl = domain_mapping_siteurl( false );
|
322 |
-
|
323 |
-
if ( $domain_mapping_siteurl ) {
|
324 |
-
$home_url = $domain_mapping_siteurl;
|
325 |
-
}
|
326 |
-
}
|
327 |
-
|
328 |
-
if ( preg_match( '%^https?://([^/]+)%', $home_url, $matches ) ) {
|
329 |
-
$site_domain = strtolower( $matches[1] );
|
330 |
-
|
331 |
-
if ( $site_domain != strtolower( $_SERVER['SERVER_NAME'] )
|
332 |
-
and wpcf7_is_email_in_domain( $email, $site_domain ) ) {
|
333 |
-
return true;
|
334 |
-
}
|
335 |
-
}
|
336 |
-
|
337 |
-
return false;
|
338 |
-
}
|
339 |
-
|
340 |
function wpcf7_antiscript_file_name( $filename ) {
|
341 |
$filename = wp_basename( $filename );
|
342 |
-
|
|
|
|
|
343 |
|
344 |
$parts = explode( '.', $filename );
|
345 |
|
@@ -369,21 +219,36 @@ function wpcf7_antiscript_file_name( $filename ) {
|
|
369 |
return $filename;
|
370 |
}
|
371 |
|
372 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
$length = strlen( $text );
|
374 |
-
$length_unmasked = absint( $length_unmasked );
|
375 |
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
} else {
|
382 |
-
$length_unmasked = $length;
|
383 |
-
}
|
384 |
}
|
385 |
|
386 |
-
|
387 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
388 |
return $text;
|
389 |
}
|
39 |
$pee .= '<p>' . trim( $tinkle, "\n" ) . "</p>\n";
|
40 |
}
|
41 |
|
|
|
42 |
$pee = preg_replace( '!<p>([^<]+)</(div|address|form|fieldset)>!', "<p>$1</p></$2>", $pee );
|
43 |
+
|
44 |
+
$pee = preg_replace( '|<p>\s*</p>|', '', $pee ); // under certain strange conditions it could create a P of entirely whitespace
|
45 |
+
|
46 |
$pee = preg_replace( '!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee ); // don't pee all over a tag
|
47 |
$pee = preg_replace( "|<p>(<li.+?)</p>|", "$1", $pee ); // problem with nested lists
|
48 |
$pee = preg_replace( '|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee );
|
180 |
return $text;
|
181 |
}
|
182 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
function wpcf7_sanitize_unit_tag( $tag ) {
|
184 |
$tag = preg_replace( '/[^A-Za-z0-9_-]/', '', $tag );
|
185 |
return $tag;
|
186 |
}
|
187 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
188 |
function wpcf7_antiscript_file_name( $filename ) {
|
189 |
$filename = wp_basename( $filename );
|
190 |
+
|
191 |
+
$filename = preg_replace( '/[\r\n\t -]+/', '-', $filename );
|
192 |
+
$filename = preg_replace( '/[\pC\pZ]+/iu', '', $filename );
|
193 |
|
194 |
$parts = explode( '.', $filename );
|
195 |
|
219 |
return $filename;
|
220 |
}
|
221 |
|
222 |
+
|
223 |
+
/**
|
224 |
+
* Masks a password with asterisks (*).
|
225 |
+
*
|
226 |
+
* @param int $right Length of right-hand unmasked text. Default 0.
|
227 |
+
* @param int $left Length of left-hand unmasked text. Default 0.
|
228 |
+
* @return string Text of masked password.
|
229 |
+
*/
|
230 |
+
function wpcf7_mask_password( $text, $right = 0, $left = 0 ) {
|
231 |
$length = strlen( $text );
|
|
|
232 |
|
233 |
+
$right = absint( $right );
|
234 |
+
$left = absint( $left );
|
235 |
+
|
236 |
+
if ( $length < $right + $left ) {
|
237 |
+
$right = $left = 0;
|
|
|
|
|
|
|
238 |
}
|
239 |
|
240 |
+
if ( $length <= 48 ) {
|
241 |
+
$masked = str_repeat( '*', $length - ( $right + $left ) );
|
242 |
+
} elseif ( $right + $left < 48 ) {
|
243 |
+
$masked = str_repeat( '*', 48 - ( $right + $left ) );
|
244 |
+
} else {
|
245 |
+
$masked = '****';
|
246 |
+
}
|
247 |
+
|
248 |
+
$left_unmasked = $left ? substr( $text, 0, $left ) : '';
|
249 |
+
$right_unmasked = $right ? substr( $text, -1 * $right ) : '';
|
250 |
+
|
251 |
+
$text = $left_unmasked . $masked . $right_unmasked;
|
252 |
+
|
253 |
return $text;
|
254 |
}
|
includes/functions.php
CHANGED
@@ -464,16 +464,3 @@ function wpcf7_anonymize_ip_addr( $ip_addr ) {
|
|
464 |
|
465 |
return inet_ntop( $packed & inet_pton( $mask ) );
|
466 |
}
|
467 |
-
|
468 |
-
function wpcf7_is_file_path_in_content_dir( $path ) {
|
469 |
-
if ( 0 === strpos( realpath( $path ), realpath( WP_CONTENT_DIR ) ) ) {
|
470 |
-
return true;
|
471 |
-
}
|
472 |
-
|
473 |
-
if ( defined( 'UPLOADS' )
|
474 |
-
and 0 === strpos( realpath( $path ), realpath( ABSPATH . UPLOADS ) ) ) {
|
475 |
-
return true;
|
476 |
-
}
|
477 |
-
|
478 |
-
return false;
|
479 |
-
}
|
464 |
|
465 |
return inet_ntop( $packed & inet_pton( $mask ) );
|
466 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/integration.php
CHANGED
@@ -65,7 +65,8 @@ class WPCF7_Integration {
|
|
65 |
|
66 |
if ( ! empty( $args['include'] ) ) {
|
67 |
$services = array_intersect_key( $services,
|
68 |
-
array_flip( (array) $args['include'] )
|
|
|
69 |
|
70 |
if ( 1 == count( $services ) ) {
|
71 |
$singular = true;
|
@@ -80,15 +81,14 @@ class WPCF7_Integration {
|
|
80 |
|
81 |
foreach ( $services as $name => $service ) {
|
82 |
$cats = array_intersect_key( $this->categories,
|
83 |
-
array_flip( $service->get_categories() )
|
|
|
84 |
?>
|
85 |
<div class="card<?php echo $service->is_active() ? ' active' : ''; ?>" id="<?php echo esc_attr( $name ); ?>">
|
86 |
<?php $service->icon(); ?>
|
87 |
<h2 class="title"><?php echo esc_html( $service->get_title() ); ?></h2>
|
88 |
<div class="infobox">
|
89 |
<?php echo esc_html( implode( ', ', $cats ) ); ?>
|
90 |
-
<br />
|
91 |
-
<?php $service->link(); ?>
|
92 |
</div>
|
93 |
<br class="clear" />
|
94 |
|
65 |
|
66 |
if ( ! empty( $args['include'] ) ) {
|
67 |
$services = array_intersect_key( $services,
|
68 |
+
array_flip( (array) $args['include'] )
|
69 |
+
);
|
70 |
|
71 |
if ( 1 == count( $services ) ) {
|
72 |
$singular = true;
|
81 |
|
82 |
foreach ( $services as $name => $service ) {
|
83 |
$cats = array_intersect_key( $this->categories,
|
84 |
+
array_flip( $service->get_categories() )
|
85 |
+
);
|
86 |
?>
|
87 |
<div class="card<?php echo $service->is_active() ? ' active' : ''; ?>" id="<?php echo esc_attr( $name ); ?>">
|
88 |
<?php $service->icon(); ?>
|
89 |
<h2 class="title"><?php echo esc_html( $service->get_title() ); ?></h2>
|
90 |
<div class="infobox">
|
91 |
<?php echo esc_html( implode( ', ', $cats ) ); ?>
|
|
|
|
|
92 |
</div>
|
93 |
<br class="clear" />
|
94 |
|
includes/js/html5-fallback.js
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
( function( $ ) {
|
2 |
+
$( function() {
|
3 |
+
var supportHtml5 = ( function() {
|
4 |
+
var features = {};
|
5 |
+
var input = document.createElement( 'input' );
|
6 |
+
var inputTypes = [ 'date' ];
|
7 |
+
|
8 |
+
$.each( inputTypes, function( index, value ) {
|
9 |
+
input.setAttribute( 'type', value );
|
10 |
+
features[ value ] = input.type !== 'text';
|
11 |
+
} );
|
12 |
+
|
13 |
+
return features;
|
14 |
+
} )();
|
15 |
+
|
16 |
+
if ( ! supportHtml5.date ) {
|
17 |
+
$( 'input.wpcf7-date[type="date"]' ).each( function() {
|
18 |
+
$( this ).datepicker( {
|
19 |
+
dateFormat: 'yy-mm-dd',
|
20 |
+
minDate: new Date( $( this ).attr( 'min' ) ),
|
21 |
+
maxDate: new Date( $( this ).attr( 'max' ) )
|
22 |
+
} );
|
23 |
+
} );
|
24 |
+
}
|
25 |
+
} );
|
26 |
+
} )( jQuery );
|
includes/js/index.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var c=t[r]={i:r,l:!1,exports:{}};return e[r].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var c in e)n.d(r,c,function(t){return e[t]}.bind(null,c));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t){e.exports=window.wp.apiFetch},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";n.r(t);var r=n(1),c=n.n(r),a=function(e){return Math.abs(parseInt(e,10))},i=n(0),o=n.n(i),u=function(e,t){var n=new Map([["init","init"],["validation_failed","invalid"],["acceptance_missing","unaccepted"],["spam","spam"],["aborted","aborted"],["mail_sent","sent"],["mail_failed","failed"],["submitting","submitting"],["resetting","resetting"]]);n.has(t)&&(t=n.get(t)),Array.from(n.values()).includes(t)||(t=(t=t.replace(/[^0-9a-z]+/i," ").trim()).replace(/\s+/,"-"),t="custom-".concat(t));var r=e.getAttribute("data-status");return e.wpcf7.status=t,e.setAttribute("data-status",t),e.classList.add(t),r&&r!==t&&e.classList.remove(r),t},s=function(e,t,n){var r=new CustomEvent("wpcf7".concat(t),{bubbles:!0,detail:n});"string"==typeof e&&(e=document.querySelector(e)),e.dispatchEvent(r)};function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=new FormData(e);t.submitter&&t.submitter.name&&n.append(t.submitter.name,t.submitter.value);var r={contactFormId:e.wpcf7.id,pluginVersion:e.wpcf7.pluginVersion,contactFormLocale:e.wpcf7.locale,unitTag:e.wpcf7.unitTag,containerPostId:e.wpcf7.containerPost,status:e.wpcf7.status,inputs:Array.from(n,(function(e){var t=e[0],n=e[1];return!t.match(/^_/)&&{name:t,value:n}})).filter((function(e){return!1!==e})),formData:n},c=function(t){var n=document.createElement("li");n.setAttribute("id",t.error_id),t.idref?n.insertAdjacentHTML("beforeend",'<a href="#'.concat(t.idref,'">').concat(t.message,"</a>")):n.insertAdjacentText("beforeend",t.message),e.wpcf7.parent.querySelector(".screen-reader-response ul").appendChild(n)},a=function(t){var n=e.querySelector(t.into),r=n.querySelector(".wpcf7-form-control");r.classList.add("wpcf7-not-valid"),r.setAttribute("aria-invalid","true"),r.setAttribute("aria-describedby",t.error_id);var c=document.createElement("span");c.setAttribute("class","wpcf7-not-valid-tip"),c.setAttribute("aria-hidden","true"),c.insertAdjacentText("beforeend",t.message),n.appendChild(c),r.closest(".use-floating-validation-tip")&&(r.addEventListener("focus",(function(e){c.setAttribute("style","display: none")})),c.addEventListener("mouseover",(function(e){c.setAttribute("style","display: none")})))};o()({path:"contact-form-7/v1/contact-forms/".concat(e.wpcf7.id,"/feedback"),method:"POST",body:n,wpcf7:{endpoint:"feedback",form:e,detail:r}}).then((function(t){var n=u(e,t.status);return r.status=t.status,r.apiResponse=t,["invalid","unaccepted","spam","aborted"].includes(n)?s(e,n,r):["sent","failed"].includes(n)&&s(e,"mail".concat(n),r),s(e,"submit",r),t})).then((function(t){t.posted_data_hash&&(e.querySelector('input[name="_wpcf7_posted_data_hash"]').value=t.posted_data_hash),"mail_sent"===t.status&&e.reset(),t.invalid_fields&&(t.invalid_fields.forEach(c),t.invalid_fields.forEach(a)),e.wpcf7.parent.querySelector('.screen-reader-response [role="status"]').insertAdjacentText("beforeend",t.message),e.querySelectorAll(".wpcf7-response-output").forEach((function(e){e.innerText=t.message}))})).catch((function(e){return console.error(e)}))}o.a.use((function(e,t){if(e.wpcf7&&"feedback"===e.wpcf7.endpoint){var n=e.wpcf7,r=n.form,c=n.detail;l(r),s(r,"beforesubmit",c),u(r,"submitting")}return t(e)}));var l=function(e){e.wpcf7.parent.querySelector('.screen-reader-response [role="status"]').innerText="",e.wpcf7.parent.querySelector(".screen-reader-response ul").innerText="",e.querySelectorAll(".wpcf7-not-valid-tip").forEach((function(e){e.remove()})),e.querySelectorAll(".wpcf7-form-control").forEach((function(e){e.setAttribute("aria-invalid","false"),e.removeAttribute("aria-describedby"),e.classList.remove("wpcf7-not-valid")})),e.querySelectorAll(".wpcf7-response-output").forEach((function(e){e.innerText=""}))};function p(e){var t=new FormData(e),n={contactFormId:e.wpcf7.id,pluginVersion:e.wpcf7.pluginVersion,contactFormLocale:e.wpcf7.locale,unitTag:e.wpcf7.unitTag,containerPostId:e.wpcf7.containerPost,status:e.wpcf7.status,inputs:Array.from(t,(function(e){var t=e[0],n=e[1];return!t.match(/^_/)&&{name:t,value:n}})).filter((function(e){return!1!==e})),formData:t};o()({path:"contact-form-7/v1/contact-forms/".concat(e.wpcf7.id,"/refill"),method:"GET",wpcf7:{endpoint:"refill",form:e,detail:n}}).then((function(t){"sent"===n.status?u(e,"mail_sent"):u(e,"init"),n.apiResponse=t,s(e,"reset",n)})).catch((function(e){return console.error(e)}))}o.a.use((function(e,t){if(e.wpcf7&&"refill"===e.wpcf7.endpoint){var n=e.wpcf7,r=n.form;n.detail,l(r),u(r,"resetting")}return t(e)}));var d=function(e,t){var n=function(n){var r=t[n];e.querySelectorAll('input[name="'.concat(n,'"]')).forEach((function(e){e.value=""})),e.querySelectorAll("img.wpcf7-captcha-".concat(n)).forEach((function(e){e.setAttribute("src",r)}));var c=/([0-9]+)\.(png|gif|jpeg)$/.exec(r);c&&e.querySelectorAll('input[name="_wpcf7_captcha_challenge_'.concat(n,'"]')).forEach((function(e){e.value=c[1]}))};for(var r in t)n(r)},v=function(e,t){var n=function(n){var r=t[n][0],c=t[n][1];e.querySelectorAll(".wpcf7-form-control-wrap.".concat(n)).forEach((function(e){e.querySelector('input[name="'.concat(n,'"]')).value="",e.querySelector(".wpcf7-quiz-label").textContent=r,e.querySelector('input[name="_wpcf7_quiz_answer_'.concat(n,'"]')).value=c}))};for(var r in t)n(r)};function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){var t=new FormData(e);e.wpcf7={id:a(t.get("_wpcf7")),status:e.getAttribute("data-status"),pluginVersion:t.get("_wpcf7_version"),locale:t.get("_wpcf7_locale"),unitTag:t.get("_wpcf7_unit_tag"),containerPost:a(t.get("_wpcf7_container_post")),parent:e.closest(".wpcf7")},e.querySelectorAll(".wpcf7-submit").forEach((function(e){e.insertAdjacentHTML("afterend",'<span class="ajax-loader"></span>')})),function(e){e.querySelectorAll(".wpcf7-exclusive-checkbox").forEach((function(t){t.addEventListener("change",(function(t){var n=t.target.getAttribute("name");e.querySelectorAll('input[type="checkbox"][name="'.concat(n,'"]')).forEach((function(e){e!==t.target&&(e.checked=!1)}))}))}))}(e),function(e){e.querySelectorAll(".has-free-text").forEach((function(t){var n=t.querySelector("input.wpcf7-free-text"),r=t.querySelector('input[type="checkbox"], input[type="radio"]');n.disabled=!r.checked,e.addEventListener("change",(function(e){n.disabled=!r.checked,e.target===r&&r.checked&&n.focus()}))}))}(e),function(e){e.querySelectorAll(".wpcf7-validates-as-url").forEach((function(e){e.addEventListener("change",(function(t){var n=e.value.trim();n&&!n.match(/^[a-z][a-z0-9.+-]*:/i)&&-1!==n.indexOf(".")&&(n="http://"+(n=n.replace(/^\/+/,""))),e.value=n}))}))}(e),function(e){if(e.querySelector(".wpcf7-acceptance")&&!e.classList.contains("wpcf7-acceptance-as-validation")){var t=function(){var t=!0;e.querySelectorAll(".wpcf7-acceptance").forEach((function(e){if(t&&!e.classList.contains("optional")){var n=e.querySelector('input[type="checkbox"]');(e.classList.contains("invert")&&n.checked||!e.classList.contains("invert")&&!n.checked)&&(t=!1)}})),e.querySelectorAll(".wpcf7-submit").forEach((function(e){e.disabled=!t}))};t(),e.addEventListener("change",(function(e){t()})),e.addEventListener("wpcf7reset",(function(e){t()}))}}(e),function(e){var t=function(e,t){var n=a(e.getAttribute("data-starting-value")),r=a(e.getAttribute("data-maximum-value")),c=a(e.getAttribute("data-minimum-value")),i=e.classList.contains("down")?n-t.value.length:t.value.length;e.setAttribute("data-current-value",i),e.innerText=i,r&&r<t.value.length?e.classList.add("too-long"):e.classList.remove("too-long"),c&&t.value.length<c?e.classList.add("too-short"):e.classList.remove("too-short")},n=function(n){n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({init:!1},n),e.querySelectorAll(".wpcf7-character-count").forEach((function(r){var c=r.getAttribute("data-target-name"),a=e.querySelector('[name="'.concat(c,'"]'));a&&(a.value=a.defaultValue,t(r,a),n.init&&a.addEventListener("keyup",(function(e){t(r,a)})))}))};n({init:!0}),e.addEventListener("wpcf7reset",(function(e){n()}))}(e),window.addEventListener("load",(function(t){wpcf7.cached&&e.reset()})),e.addEventListener("reset",(function(t){wpcf7.reset(e)})),e.addEventListener("submit",(function(t){var n=t.submitter;wpcf7.submit(e,{submitter:n}),t.preventDefault()})),e.addEventListener("wpcf7submit",(function(t){t.detail.apiResponse.captcha&&d(e,t.detail.apiResponse.captcha),t.detail.apiResponse.quiz&&v(e,t.detail.apiResponse.quiz)})),e.addEventListener("wpcf7reset",(function(t){t.detail.apiResponse.captcha&&d(e,t.detail.apiResponse.captcha),t.detail.apiResponse.quiz&&v(e,t.detail.apiResponse.quiz)}))}function w(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}document.addEventListener("DOMContentLoaded",(function(e){var t;wpcf7=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?w(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):w(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({init:b,submit:f,reset:p},null!==(t=wpcf7)&&void 0!==t?t:{}),document.querySelectorAll(".wpcf7 > form").forEach((function(e){return wpcf7.init(e)}))}))}]);
|
includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
DELETED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
DELETED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-icons_888888_256x240.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png
CHANGED
Binary file
|
includes/js/jquery-ui/themes/smoothness/jquery-ui.css
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
/*! jQuery UI - v1.
|
2 |
* http://jqueryui.com
|
3 |
-
* Includes: core.css, accordion.css, autocomplete.css, button.css,
|
4 |
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
5 |
-
* Copyright
|
6 |
|
7 |
/* Layout helpers
|
8 |
----------------------------------*/
|
@@ -38,9 +38,6 @@
|
|
38 |
.ui-helper-clearfix:after {
|
39 |
clear: both;
|
40 |
}
|
41 |
-
.ui-helper-clearfix {
|
42 |
-
min-height: 0; /* support: IE7 */
|
43 |
-
}
|
44 |
.ui-helper-zfix {
|
45 |
width: 100%;
|
46 |
height: 100%;
|
@@ -60,20 +57,27 @@
|
|
60 |
----------------------------------*/
|
61 |
.ui-state-disabled {
|
62 |
cursor: default !important;
|
|
|
63 |
}
|
64 |
|
65 |
|
66 |
/* Icons
|
67 |
----------------------------------*/
|
68 |
-
|
69 |
-
/* states and images */
|
70 |
.ui-icon {
|
71 |
-
display: block;
|
|
|
|
|
|
|
72 |
text-indent: -99999px;
|
73 |
overflow: hidden;
|
74 |
background-repeat: no-repeat;
|
75 |
}
|
76 |
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
/* Misc visuals
|
79 |
----------------------------------*/
|
@@ -92,21 +96,8 @@
|
|
92 |
position: relative;
|
93 |
margin: 2px 0 0 0;
|
94 |
padding: .5em .5em .5em .7em;
|
95 |
-
min-height: 0; /* support: IE7 */
|
96 |
font-size: 100%;
|
97 |
}
|
98 |
-
.ui-accordion .ui-accordion-icons {
|
99 |
-
padding-left: 2.2em;
|
100 |
-
}
|
101 |
-
.ui-accordion .ui-accordion-icons .ui-accordion-icons {
|
102 |
-
padding-left: 2.2em;
|
103 |
-
}
|
104 |
-
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
|
105 |
-
position: absolute;
|
106 |
-
left: .5em;
|
107 |
-
top: 50%;
|
108 |
-
margin-top: -8px;
|
109 |
-
}
|
110 |
.ui-accordion .ui-accordion-content {
|
111 |
padding: 1em 2.2em;
|
112 |
border-top: 0;
|
@@ -118,17 +109,78 @@
|
|
118 |
left: 0;
|
119 |
cursor: default;
|
120 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
.ui-button {
|
|
|
122 |
display: inline-block;
|
123 |
position: relative;
|
124 |
-
padding: 0;
|
125 |
line-height: normal;
|
126 |
margin-right: .1em;
|
127 |
cursor: pointer;
|
128 |
vertical-align: middle;
|
129 |
text-align: center;
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
}
|
|
|
132 |
.ui-button,
|
133 |
.ui-button:link,
|
134 |
.ui-button:visited,
|
@@ -136,91 +188,129 @@
|
|
136 |
.ui-button:active {
|
137 |
text-decoration: none;
|
138 |
}
|
|
|
139 |
/* to make room for the icon, a width needs to be set here */
|
140 |
.ui-button-icon-only {
|
141 |
-
width:
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
width: 2.4em;
|
146 |
}
|
147 |
-
|
148 |
-
|
|
|
|
|
149 |
}
|
150 |
-
|
151 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
}
|
153 |
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
|
|
|
|
|
|
158 |
}
|
159 |
-
|
|
|
|
|
|
|
|
|
|
|
160 |
padding: .4em 1em;
|
161 |
}
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
|
|
|
|
|
|
166 |
}
|
167 |
-
.ui-
|
168 |
-
|
169 |
-
|
170 |
}
|
171 |
-
.ui-
|
172 |
-
|
173 |
-
|
|
|
174 |
}
|
175 |
-
.ui-
|
176 |
-
|
177 |
-
|
178 |
}
|
179 |
-
|
180 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
padding: .4em 1em;
|
182 |
}
|
183 |
-
|
184 |
-
|
185 |
-
.ui-button-icon-only .ui-icon,
|
186 |
-
.ui-button-text-icon-primary .ui-icon,
|
187 |
-
.ui-button-text-icon-secondary .ui-icon,
|
188 |
-
.ui-button-text-icons .ui-icon,
|
189 |
-
.ui-button-icons-only .ui-icon {
|
190 |
-
position: absolute;
|
191 |
-
top: 50%;
|
192 |
-
margin-top: -8px;
|
193 |
}
|
194 |
-
.ui-
|
195 |
-
left:
|
196 |
-
margin-left: -8px;
|
197 |
}
|
198 |
-
.ui-
|
199 |
-
|
200 |
-
.ui-button-icons-only .ui-button-icon-primary {
|
201 |
-
left: .5em;
|
202 |
}
|
203 |
-
.ui-
|
204 |
-
|
205 |
-
.ui-button-icons-only .ui-button-icon-secondary {
|
206 |
-
right: .5em;
|
207 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
|
209 |
-
/*
|
210 |
-
|
211 |
-
|
212 |
}
|
213 |
-
.ui-
|
214 |
-
|
215 |
-
margin-right: -.3em;
|
216 |
}
|
217 |
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
}
|
225 |
.ui-datepicker {
|
226 |
width: 17em;
|
@@ -387,8 +477,17 @@ button.ui-button::-moz-focus-inner {
|
|
387 |
border-right-width: 0;
|
388 |
border-left-width: 1px;
|
389 |
}
|
390 |
-
|
|
|
|
|
|
|
|
|
391 |
overflow: hidden;
|
|
|
|
|
|
|
|
|
|
|
392 |
position: absolute;
|
393 |
top: 0;
|
394 |
left: 0;
|
@@ -437,90 +536,51 @@ button.ui-button::-moz-focus-inner {
|
|
437 |
margin: .5em .4em .5em 0;
|
438 |
cursor: pointer;
|
439 |
}
|
440 |
-
.ui-dialog .ui-resizable-
|
441 |
-
|
442 |
-
|
443 |
-
right: -5px;
|
444 |
-
bottom: -5px;
|
445 |
-
background-position: 16px 16px;
|
446 |
-
}
|
447 |
-
.ui-draggable .ui-dialog-titlebar {
|
448 |
-
cursor: move;
|
449 |
-
}
|
450 |
-
.ui-draggable-handle {
|
451 |
-
-ms-touch-action: none;
|
452 |
-
touch-action: none;
|
453 |
-
}
|
454 |
-
.ui-menu {
|
455 |
-
list-style: none;
|
456 |
-
padding: 0;
|
457 |
-
margin: 0;
|
458 |
-
display: block;
|
459 |
-
outline: none;
|
460 |
-
}
|
461 |
-
.ui-menu .ui-menu {
|
462 |
-
position: absolute;
|
463 |
}
|
464 |
-
.ui-
|
465 |
-
|
466 |
-
|
467 |
-
padding: 3px 1em 3px .4em;
|
468 |
-
cursor: pointer;
|
469 |
-
min-height: 0; /* support: IE7 */
|
470 |
-
/* support: IE10, see #8844 */
|
471 |
-
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
|
472 |
}
|
473 |
-
.ui-
|
474 |
-
|
475 |
-
|
476 |
-
font-size: 0;
|
477 |
-
line-height: 0;
|
478 |
-
border-width: 1px 0 0 0;
|
479 |
}
|
480 |
-
.ui-
|
481 |
-
|
482 |
-
|
483 |
}
|
484 |
-
|
485 |
-
|
486 |
-
.ui-
|
487 |
-
|
|
|
|
|
488 |
}
|
489 |
-
.ui-
|
490 |
-
|
|
|
491 |
}
|
492 |
-
|
493 |
-
|
494 |
-
.ui-menu .ui-icon {
|
495 |
-
position: absolute;
|
496 |
-
top: 0;
|
497 |
bottom: 0;
|
498 |
-
left: .2em;
|
499 |
-
margin: auto 0;
|
500 |
}
|
501 |
-
|
502 |
-
/* right-aligned */
|
503 |
-
.ui-menu .ui-menu-icon {
|
504 |
-
left: auto;
|
505 |
right: 0;
|
|
|
506 |
}
|
507 |
-
.ui-
|
508 |
-
|
509 |
-
|
510 |
-
overflow: hidden;
|
511 |
-
}
|
512 |
-
.ui-progressbar .ui-progressbar-value {
|
513 |
-
margin: -1px;
|
514 |
-
height: 100%;
|
515 |
}
|
516 |
-
.ui-
|
517 |
-
|
518 |
-
height: 100%;
|
519 |
-
filter: alpha(opacity=25); /* support: IE8 */
|
520 |
-
opacity: 0.25;
|
521 |
}
|
522 |
-
.ui-
|
523 |
-
|
|
|
524 |
}
|
525 |
.ui-resizable {
|
526 |
position: relative;
|
@@ -592,6 +652,24 @@ button.ui-button::-moz-focus-inner {
|
|
592 |
right: -5px;
|
593 |
top: -5px;
|
594 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
595 |
.ui-selectable {
|
596 |
-ms-touch-action: none;
|
597 |
touch-action: none;
|
@@ -611,7 +689,6 @@ button.ui-button::-moz-focus-inner {
|
|
611 |
}
|
612 |
.ui-selectmenu-menu .ui-menu {
|
613 |
overflow: auto;
|
614 |
-
/* Support: IE7 */
|
615 |
overflow-x: hidden;
|
616 |
padding-bottom: 1px;
|
617 |
}
|
@@ -627,28 +704,20 @@ button.ui-button::-moz-focus-inner {
|
|
627 |
.ui-selectmenu-open {
|
628 |
display: block;
|
629 |
}
|
630 |
-
.ui-selectmenu-
|
631 |
-
display: inline-block;
|
632 |
-
overflow: hidden;
|
633 |
-
position: relative;
|
634 |
-
text-decoration: none;
|
635 |
-
cursor: pointer;
|
636 |
-
}
|
637 |
-
.ui-selectmenu-button span.ui-icon {
|
638 |
-
right: 0.5em;
|
639 |
-
left: auto;
|
640 |
-
margin-top: -8px;
|
641 |
-
position: absolute;
|
642 |
-
top: 50%;
|
643 |
-
}
|
644 |
-
.ui-selectmenu-button span.ui-selectmenu-text {
|
645 |
-
text-align: left;
|
646 |
-
padding: 0.4em 2.1em 0.4em 1em;
|
647 |
display: block;
|
648 |
-
|
649 |
overflow: hidden;
|
650 |
text-overflow: ellipsis;
|
|
|
|
|
|
|
651 |
white-space: nowrap;
|
|
|
|
|
|
|
|
|
|
|
652 |
}
|
653 |
.ui-slider {
|
654 |
position: relative;
|
@@ -730,14 +799,14 @@ button.ui-button::-moz-focus-inner {
|
|
730 |
border: none;
|
731 |
background: none;
|
732 |
color: inherit;
|
733 |
-
padding: 0;
|
734 |
margin: .2em 0;
|
735 |
vertical-align: middle;
|
736 |
margin-left: .4em;
|
737 |
-
margin-right:
|
738 |
}
|
739 |
.ui-spinner-button {
|
740 |
-
width:
|
741 |
height: 50%;
|
742 |
font-size: .5em;
|
743 |
padding: 0;
|
@@ -751,16 +820,9 @@ button.ui-button::-moz-focus-inner {
|
|
751 |
}
|
752 |
/* more specificity required here to override default borders */
|
753 |
.ui-spinner a.ui-spinner-button {
|
754 |
-
border-top: none;
|
755 |
-
border-bottom: none;
|
756 |
-
border-right: none;
|
757 |
-
}
|
758 |
-
/* vertically center icon */
|
759 |
-
.ui-spinner .ui-icon {
|
760 |
-
position: absolute;
|
761 |
-
margin-top: -8px;
|
762 |
-
top: 50%;
|
763 |
-
left: 0;
|
764 |
}
|
765 |
.ui-spinner-up {
|
766 |
top: 0;
|
@@ -768,12 +830,6 @@ button.ui-button::-moz-focus-inner {
|
|
768 |
.ui-spinner-down {
|
769 |
bottom: 0;
|
770 |
}
|
771 |
-
|
772 |
-
/* TR overrides */
|
773 |
-
.ui-spinner .ui-icon-triangle-1-s {
|
774 |
-
/* need to fix icons sprite */
|
775 |
-
background-position: -65px -16px;
|
776 |
-
}
|
777 |
.ui-tabs {
|
778 |
position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
779 |
padding: .2em;
|
@@ -820,13 +876,10 @@ button.ui-button::-moz-focus-inner {
|
|
820 |
position: absolute;
|
821 |
z-index: 9999;
|
822 |
max-width: 300px;
|
823 |
-
-webkit-box-shadow: 0 0 5px #aaa;
|
824 |
-
box-shadow: 0 0 5px #aaa;
|
825 |
}
|
826 |
body .ui-tooltip {
|
827 |
border-width: 2px;
|
828 |
}
|
829 |
-
|
830 |
/* Component containers
|
831 |
----------------------------------*/
|
832 |
.ui-widget {
|
@@ -843,9 +896,12 @@ body .ui-tooltip {
|
|
843 |
font-family: Verdana,Arial,sans-serif;
|
844 |
font-size: 1em;
|
845 |
}
|
|
|
|
|
|
|
846 |
.ui-widget-content {
|
847 |
border: 1px solid #aaaaaa;
|
848 |
-
background: #ffffff
|
849 |
color: #222222;
|
850 |
}
|
851 |
.ui-widget-content a {
|
@@ -865,7 +921,13 @@ body .ui-tooltip {
|
|
865 |
----------------------------------*/
|
866 |
.ui-state-default,
|
867 |
.ui-widget-content .ui-state-default,
|
868 |
-
.ui-widget-header .ui-state-default
|
|
|
|
|
|
|
|
|
|
|
|
|
869 |
border: 1px solid #d3d3d3;
|
870 |
background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
|
871 |
font-weight: normal;
|
@@ -873,7 +935,11 @@ body .ui-tooltip {
|
|
873 |
}
|
874 |
.ui-state-default a,
|
875 |
.ui-state-default a:link,
|
876 |
-
.ui-state-default a:visited
|
|
|
|
|
|
|
|
|
877 |
color: #555555;
|
878 |
text-decoration: none;
|
879 |
}
|
@@ -882,7 +948,9 @@ body .ui-tooltip {
|
|
882 |
.ui-widget-header .ui-state-hover,
|
883 |
.ui-state-focus,
|
884 |
.ui-widget-content .ui-state-focus,
|
885 |
-
.ui-widget-header .ui-state-focus
|
|
|
|
|
886 |
border: 1px solid #999999;
|
887 |
background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
|
888 |
font-weight: normal;
|
@@ -895,18 +963,32 @@ body .ui-tooltip {
|
|
895 |
.ui-state-focus a,
|
896 |
.ui-state-focus a:hover,
|
897 |
.ui-state-focus a:link,
|
898 |
-
.ui-state-focus a:visited
|
|
|
|
|
899 |
color: #212121;
|
900 |
text-decoration: none;
|
901 |
}
|
|
|
|
|
|
|
|
|
902 |
.ui-state-active,
|
903 |
.ui-widget-content .ui-state-active,
|
904 |
-
.ui-widget-header .ui-state-active
|
|
|
|
|
|
|
905 |
border: 1px solid #aaaaaa;
|
906 |
background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
|
907 |
font-weight: normal;
|
908 |
color: #212121;
|
909 |
}
|
|
|
|
|
|
|
|
|
|
|
910 |
.ui-state-active a,
|
911 |
.ui-state-active a:link,
|
912 |
.ui-state-active a:visited {
|
@@ -923,6 +1005,10 @@ body .ui-tooltip {
|
|
923 |
background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
|
924 |
color: #363636;
|
925 |
}
|
|
|
|
|
|
|
|
|
926 |
.ui-state-highlight a,
|
927 |
.ui-widget-content .ui-state-highlight a,
|
928 |
.ui-widget-header .ui-state-highlight a {
|
@@ -983,41 +1069,45 @@ body .ui-tooltip {
|
|
983 |
.ui-widget-header .ui-icon {
|
984 |
background-image: url("images/ui-icons_222222_256x240.png");
|
985 |
}
|
986 |
-
.ui-state-default .ui-icon {
|
987 |
-
background-image: url("images/ui-icons_888888_256x240.png");
|
988 |
-
}
|
989 |
.ui-state-hover .ui-icon,
|
990 |
-
.ui-state-focus .ui-icon
|
|
|
|
|
991 |
background-image: url("images/ui-icons_454545_256x240.png");
|
992 |
}
|
993 |
-
.ui-state-active .ui-icon
|
|
|
994 |
background-image: url("images/ui-icons_454545_256x240.png");
|
995 |
}
|
996 |
-
.ui-state-highlight .ui-icon
|
|
|
997 |
background-image: url("images/ui-icons_2e83ff_256x240.png");
|
998 |
}
|
999 |
.ui-state-error .ui-icon,
|
1000 |
.ui-state-error-text .ui-icon {
|
1001 |
background-image: url("images/ui-icons_cd0a0a_256x240.png");
|
1002 |
}
|
|
|
|
|
|
|
1003 |
|
1004 |
/* positioning */
|
1005 |
.ui-icon-blank { background-position: 16px 16px; }
|
1006 |
-
.ui-icon-
|
1007 |
-
.ui-icon-
|
1008 |
-
.ui-icon-
|
1009 |
-
.ui-icon-
|
1010 |
-
.ui-icon-
|
1011 |
-
.ui-icon-
|
1012 |
-
.ui-icon-
|
1013 |
-
.ui-icon-
|
1014 |
-
.ui-icon-
|
1015 |
-
.ui-icon-
|
1016 |
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
1017 |
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
1018 |
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
1019 |
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
1020 |
-
.ui-icon-triangle-1-s { background-position: -
|
1021 |
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
1022 |
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
1023 |
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
@@ -1027,7 +1117,7 @@ body .ui-tooltip {
|
|
1027 |
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
1028 |
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
1029 |
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
1030 |
-
.ui-icon-arrow-1-s { background-position: -
|
1031 |
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
1032 |
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
1033 |
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
@@ -1039,7 +1129,7 @@ body .ui-tooltip {
|
|
1039 |
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
1040 |
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
1041 |
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
1042 |
-
.ui-icon-arrowthick-1-n { background-position:
|
1043 |
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
1044 |
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
1045 |
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
@@ -1211,15 +1301,11 @@ body .ui-tooltip {
|
|
1211 |
|
1212 |
/* Overlays */
|
1213 |
.ui-widget-overlay {
|
1214 |
-
background: #aaaaaa
|
1215 |
opacity: .3;
|
1216 |
filter: Alpha(Opacity=30); /* support: IE8 */
|
1217 |
}
|
1218 |
.ui-widget-shadow {
|
1219 |
-
|
1220 |
-
|
1221 |
-
background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
|
1222 |
-
opacity: .3;
|
1223 |
-
filter: Alpha(Opacity=30); /* support: IE8 */
|
1224 |
-
border-radius: 8px;
|
1225 |
}
|
1 |
+
/*! jQuery UI - v1.12.1 - 2016-09-14
|
2 |
* http://jqueryui.com
|
3 |
+
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
|
4 |
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
5 |
+
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
|
7 |
/* Layout helpers
|
8 |
----------------------------------*/
|
38 |
.ui-helper-clearfix:after {
|
39 |
clear: both;
|
40 |
}
|
|
|
|
|
|
|
41 |
.ui-helper-zfix {
|
42 |
width: 100%;
|
43 |
height: 100%;
|
57 |
----------------------------------*/
|
58 |
.ui-state-disabled {
|
59 |
cursor: default !important;
|
60 |
+
pointer-events: none;
|
61 |
}
|
62 |
|
63 |
|
64 |
/* Icons
|
65 |
----------------------------------*/
|
|
|
|
|
66 |
.ui-icon {
|
67 |
+
display: inline-block;
|
68 |
+
vertical-align: middle;
|
69 |
+
margin-top: -.25em;
|
70 |
+
position: relative;
|
71 |
text-indent: -99999px;
|
72 |
overflow: hidden;
|
73 |
background-repeat: no-repeat;
|
74 |
}
|
75 |
|
76 |
+
.ui-widget-icon-block {
|
77 |
+
left: 50%;
|
78 |
+
margin-left: -8px;
|
79 |
+
display: block;
|
80 |
+
}
|
81 |
|
82 |
/* Misc visuals
|
83 |
----------------------------------*/
|
96 |
position: relative;
|
97 |
margin: 2px 0 0 0;
|
98 |
padding: .5em .5em .5em .7em;
|
|
|
99 |
font-size: 100%;
|
100 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
.ui-accordion .ui-accordion-content {
|
102 |
padding: 1em 2.2em;
|
103 |
border-top: 0;
|
109 |
left: 0;
|
110 |
cursor: default;
|
111 |
}
|
112 |
+
.ui-menu {
|
113 |
+
list-style: none;
|
114 |
+
padding: 0;
|
115 |
+
margin: 0;
|
116 |
+
display: block;
|
117 |
+
outline: 0;
|
118 |
+
}
|
119 |
+
.ui-menu .ui-menu {
|
120 |
+
position: absolute;
|
121 |
+
}
|
122 |
+
.ui-menu .ui-menu-item {
|
123 |
+
margin: 0;
|
124 |
+
cursor: pointer;
|
125 |
+
/* support: IE10, see #8844 */
|
126 |
+
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
|
127 |
+
}
|
128 |
+
.ui-menu .ui-menu-item-wrapper {
|
129 |
+
position: relative;
|
130 |
+
padding: 3px 1em 3px .4em;
|
131 |
+
}
|
132 |
+
.ui-menu .ui-menu-divider {
|
133 |
+
margin: 5px 0;
|
134 |
+
height: 0;
|
135 |
+
font-size: 0;
|
136 |
+
line-height: 0;
|
137 |
+
border-width: 1px 0 0 0;
|
138 |
+
}
|
139 |
+
.ui-menu .ui-state-focus,
|
140 |
+
.ui-menu .ui-state-active {
|
141 |
+
margin: -1px;
|
142 |
+
}
|
143 |
+
|
144 |
+
/* icon support */
|
145 |
+
.ui-menu-icons {
|
146 |
+
position: relative;
|
147 |
+
}
|
148 |
+
.ui-menu-icons .ui-menu-item-wrapper {
|
149 |
+
padding-left: 2em;
|
150 |
+
}
|
151 |
+
|
152 |
+
/* left-aligned */
|
153 |
+
.ui-menu .ui-icon {
|
154 |
+
position: absolute;
|
155 |
+
top: 0;
|
156 |
+
bottom: 0;
|
157 |
+
left: .2em;
|
158 |
+
margin: auto 0;
|
159 |
+
}
|
160 |
+
|
161 |
+
/* right-aligned */
|
162 |
+
.ui-menu .ui-menu-icon {
|
163 |
+
left: auto;
|
164 |
+
right: 0;
|
165 |
+
}
|
166 |
.ui-button {
|
167 |
+
padding: .4em 1em;
|
168 |
display: inline-block;
|
169 |
position: relative;
|
|
|
170 |
line-height: normal;
|
171 |
margin-right: .1em;
|
172 |
cursor: pointer;
|
173 |
vertical-align: middle;
|
174 |
text-align: center;
|
175 |
+
-webkit-user-select: none;
|
176 |
+
-moz-user-select: none;
|
177 |
+
-ms-user-select: none;
|
178 |
+
user-select: none;
|
179 |
+
|
180 |
+
/* Support: IE <= 11 */
|
181 |
+
overflow: visible;
|
182 |
}
|
183 |
+
|
184 |
.ui-button,
|
185 |
.ui-button:link,
|
186 |
.ui-button:visited,
|
188 |
.ui-button:active {
|
189 |
text-decoration: none;
|
190 |
}
|
191 |
+
|
192 |
/* to make room for the icon, a width needs to be set here */
|
193 |
.ui-button-icon-only {
|
194 |
+
width: 2em;
|
195 |
+
box-sizing: border-box;
|
196 |
+
text-indent: -9999px;
|
197 |
+
white-space: nowrap;
|
|
|
198 |
}
|
199 |
+
|
200 |
+
/* no icon support for input elements */
|
201 |
+
input.ui-button.ui-button-icon-only {
|
202 |
+
text-indent: 0;
|
203 |
}
|
204 |
+
|
205 |
+
/* button icon element(s) */
|
206 |
+
.ui-button-icon-only .ui-icon {
|
207 |
+
position: absolute;
|
208 |
+
top: 50%;
|
209 |
+
left: 50%;
|
210 |
+
margin-top: -8px;
|
211 |
+
margin-left: -8px;
|
212 |
}
|
213 |
|
214 |
+
.ui-button.ui-icon-notext .ui-icon {
|
215 |
+
padding: 0;
|
216 |
+
width: 2.1em;
|
217 |
+
height: 2.1em;
|
218 |
+
text-indent: -9999px;
|
219 |
+
white-space: nowrap;
|
220 |
+
|
221 |
}
|
222 |
+
|
223 |
+
input.ui-button.ui-icon-notext .ui-icon {
|
224 |
+
width: auto;
|
225 |
+
height: auto;
|
226 |
+
text-indent: 0;
|
227 |
+
white-space: normal;
|
228 |
padding: .4em 1em;
|
229 |
}
|
230 |
+
|
231 |
+
/* workarounds */
|
232 |
+
/* Support: Firefox 5 - 40 */
|
233 |
+
input.ui-button::-moz-focus-inner,
|
234 |
+
button.ui-button::-moz-focus-inner {
|
235 |
+
border: 0;
|
236 |
+
padding: 0;
|
237 |
}
|
238 |
+
.ui-controlgroup {
|
239 |
+
vertical-align: middle;
|
240 |
+
display: inline-block;
|
241 |
}
|
242 |
+
.ui-controlgroup > .ui-controlgroup-item {
|
243 |
+
float: left;
|
244 |
+
margin-left: 0;
|
245 |
+
margin-right: 0;
|
246 |
}
|
247 |
+
.ui-controlgroup > .ui-controlgroup-item:focus,
|
248 |
+
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
|
249 |
+
z-index: 9999;
|
250 |
}
|
251 |
+
.ui-controlgroup-vertical > .ui-controlgroup-item {
|
252 |
+
display: block;
|
253 |
+
float: none;
|
254 |
+
width: 100%;
|
255 |
+
margin-top: 0;
|
256 |
+
margin-bottom: 0;
|
257 |
+
text-align: left;
|
258 |
+
}
|
259 |
+
.ui-controlgroup-vertical .ui-controlgroup-item {
|
260 |
+
box-sizing: border-box;
|
261 |
+
}
|
262 |
+
.ui-controlgroup .ui-controlgroup-label {
|
263 |
padding: .4em 1em;
|
264 |
}
|
265 |
+
.ui-controlgroup .ui-controlgroup-label span {
|
266 |
+
font-size: 80%;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
267 |
}
|
268 |
+
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
|
269 |
+
border-left: none;
|
|
|
270 |
}
|
271 |
+
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
|
272 |
+
border-top: none;
|
|
|
|
|
273 |
}
|
274 |
+
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
|
275 |
+
border-right: none;
|
|
|
|
|
276 |
}
|
277 |
+
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
|
278 |
+
border-bottom: none;
|
279 |
+
}
|
280 |
+
|
281 |
+
/* Spinner specific style fixes */
|
282 |
+
.ui-controlgroup-vertical .ui-spinner-input {
|
283 |
|
284 |
+
/* Support: IE8 only, Android < 4.4 only */
|
285 |
+
width: 75%;
|
286 |
+
width: calc( 100% - 2.4em );
|
287 |
}
|
288 |
+
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
|
289 |
+
border-top-style: solid;
|
|
|
290 |
}
|
291 |
|
292 |
+
.ui-checkboxradio-label .ui-icon-background {
|
293 |
+
box-shadow: inset 1px 1px 1px #ccc;
|
294 |
+
border-radius: .12em;
|
295 |
+
border: none;
|
296 |
+
}
|
297 |
+
.ui-checkboxradio-radio-label .ui-icon-background {
|
298 |
+
width: 16px;
|
299 |
+
height: 16px;
|
300 |
+
border-radius: 1em;
|
301 |
+
overflow: visible;
|
302 |
+
border: none;
|
303 |
+
}
|
304 |
+
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
|
305 |
+
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
|
306 |
+
background-image: none;
|
307 |
+
width: 8px;
|
308 |
+
height: 8px;
|
309 |
+
border-width: 4px;
|
310 |
+
border-style: solid;
|
311 |
+
}
|
312 |
+
.ui-checkboxradio-disabled {
|
313 |
+
pointer-events: none;
|
314 |
}
|
315 |
.ui-datepicker {
|
316 |
width: 17em;
|
477 |
border-right-width: 0;
|
478 |
border-left-width: 1px;
|
479 |
}
|
480 |
+
|
481 |
+
/* Icons */
|
482 |
+
.ui-datepicker .ui-icon {
|
483 |
+
display: block;
|
484 |
+
text-indent: -99999px;
|
485 |
overflow: hidden;
|
486 |
+
background-repeat: no-repeat;
|
487 |
+
left: .5em;
|
488 |
+
top: .3em;
|
489 |
+
}
|
490 |
+
.ui-dialog {
|
491 |
position: absolute;
|
492 |
top: 0;
|
493 |
left: 0;
|
536 |
margin: .5em .4em .5em 0;
|
537 |
cursor: pointer;
|
538 |
}
|
539 |
+
.ui-dialog .ui-resizable-n {
|
540 |
+
height: 2px;
|
541 |
+
top: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
}
|
543 |
+
.ui-dialog .ui-resizable-e {
|
544 |
+
width: 2px;
|
545 |
+
right: 0;
|
|
|
|
|
|
|
|
|
|
|
546 |
}
|
547 |
+
.ui-dialog .ui-resizable-s {
|
548 |
+
height: 2px;
|
549 |
+
bottom: 0;
|
|
|
|
|
|
|
550 |
}
|
551 |
+
.ui-dialog .ui-resizable-w {
|
552 |
+
width: 2px;
|
553 |
+
left: 0;
|
554 |
}
|
555 |
+
.ui-dialog .ui-resizable-se,
|
556 |
+
.ui-dialog .ui-resizable-sw,
|
557 |
+
.ui-dialog .ui-resizable-ne,
|
558 |
+
.ui-dialog .ui-resizable-nw {
|
559 |
+
width: 7px;
|
560 |
+
height: 7px;
|
561 |
}
|
562 |
+
.ui-dialog .ui-resizable-se {
|
563 |
+
right: 0;
|
564 |
+
bottom: 0;
|
565 |
}
|
566 |
+
.ui-dialog .ui-resizable-sw {
|
567 |
+
left: 0;
|
|
|
|
|
|
|
568 |
bottom: 0;
|
|
|
|
|
569 |
}
|
570 |
+
.ui-dialog .ui-resizable-ne {
|
|
|
|
|
|
|
571 |
right: 0;
|
572 |
+
top: 0;
|
573 |
}
|
574 |
+
.ui-dialog .ui-resizable-nw {
|
575 |
+
left: 0;
|
576 |
+
top: 0;
|
|
|
|
|
|
|
|
|
|
|
577 |
}
|
578 |
+
.ui-draggable .ui-dialog-titlebar {
|
579 |
+
cursor: move;
|
|
|
|
|
|
|
580 |
}
|
581 |
+
.ui-draggable-handle {
|
582 |
+
-ms-touch-action: none;
|
583 |
+
touch-action: none;
|
584 |
}
|
585 |
.ui-resizable {
|
586 |
position: relative;
|
652 |
right: -5px;
|
653 |
top: -5px;
|
654 |
}
|
655 |
+
.ui-progressbar {
|
656 |
+
height: 2em;
|
657 |
+
text-align: left;
|
658 |
+
overflow: hidden;
|
659 |
+
}
|
660 |
+
.ui-progressbar .ui-progressbar-value {
|
661 |
+
margin: -1px;
|
662 |
+
height: 100%;
|
663 |
+
}
|
664 |
+
.ui-progressbar .ui-progressbar-overlay {
|
665 |
+
background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
|
666 |
+
height: 100%;
|
667 |
+
filter: alpha(opacity=25); /* support: IE8 */
|
668 |
+
opacity: 0.25;
|
669 |
+
}
|
670 |
+
.ui-progressbar-indeterminate .ui-progressbar-value {
|
671 |
+
background-image: none;
|
672 |
+
}
|
673 |
.ui-selectable {
|
674 |
-ms-touch-action: none;
|
675 |
touch-action: none;
|
689 |
}
|
690 |
.ui-selectmenu-menu .ui-menu {
|
691 |
overflow: auto;
|
|
|
692 |
overflow-x: hidden;
|
693 |
padding-bottom: 1px;
|
694 |
}
|
704 |
.ui-selectmenu-open {
|
705 |
display: block;
|
706 |
}
|
707 |
+
.ui-selectmenu-text {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
708 |
display: block;
|
709 |
+
margin-right: 20px;
|
710 |
overflow: hidden;
|
711 |
text-overflow: ellipsis;
|
712 |
+
}
|
713 |
+
.ui-selectmenu-button.ui-button {
|
714 |
+
text-align: left;
|
715 |
white-space: nowrap;
|
716 |
+
width: 14em;
|
717 |
+
}
|
718 |
+
.ui-selectmenu-icon.ui-icon {
|
719 |
+
float: right;
|
720 |
+
margin-top: 0;
|
721 |
}
|
722 |
.ui-slider {
|
723 |
position: relative;
|
799 |
border: none;
|
800 |
background: none;
|
801 |
color: inherit;
|
802 |
+
padding: .222em 0;
|
803 |
margin: .2em 0;
|
804 |
vertical-align: middle;
|
805 |
margin-left: .4em;
|
806 |
+
margin-right: 2em;
|
807 |
}
|
808 |
.ui-spinner-button {
|
809 |
+
width: 1.6em;
|
810 |
height: 50%;
|
811 |
font-size: .5em;
|
812 |
padding: 0;
|
820 |
}
|
821 |
/* more specificity required here to override default borders */
|
822 |
.ui-spinner a.ui-spinner-button {
|
823 |
+
border-top-style: none;
|
824 |
+
border-bottom-style: none;
|
825 |
+
border-right-style: none;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
826 |
}
|
827 |
.ui-spinner-up {
|
828 |
top: 0;
|
830 |
.ui-spinner-down {
|
831 |
bottom: 0;
|
832 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
833 |
.ui-tabs {
|
834 |
position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
835 |
padding: .2em;
|
876 |
position: absolute;
|
877 |
z-index: 9999;
|
878 |
max-width: 300px;
|
|
|
|
|
879 |
}
|
880 |
body .ui-tooltip {
|
881 |
border-width: 2px;
|
882 |
}
|
|
|
883 |
/* Component containers
|
884 |
----------------------------------*/
|
885 |
.ui-widget {
|
896 |
font-family: Verdana,Arial,sans-serif;
|
897 |
font-size: 1em;
|
898 |
}
|
899 |
+
.ui-widget.ui-widget-content {
|
900 |
+
border: 1px solid #d3d3d3;
|
901 |
+
}
|
902 |
.ui-widget-content {
|
903 |
border: 1px solid #aaaaaa;
|
904 |
+
background: #ffffff;
|
905 |
color: #222222;
|
906 |
}
|
907 |
.ui-widget-content a {
|
921 |
----------------------------------*/
|
922 |
.ui-state-default,
|
923 |
.ui-widget-content .ui-state-default,
|
924 |
+
.ui-widget-header .ui-state-default,
|
925 |
+
.ui-button,
|
926 |
+
|
927 |
+
/* We use html here because we need a greater specificity to make sure disabled
|
928 |
+
works properly when clicked or hovered */
|
929 |
+
html .ui-button.ui-state-disabled:hover,
|
930 |
+
html .ui-button.ui-state-disabled:active {
|
931 |
border: 1px solid #d3d3d3;
|
932 |
background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
|
933 |
font-weight: normal;
|
935 |
}
|
936 |
.ui-state-default a,
|
937 |
.ui-state-default a:link,
|
938 |
+
.ui-state-default a:visited,
|
939 |
+
a.ui-button,
|
940 |
+
a:link.ui-button,
|
941 |
+
a:visited.ui-button,
|
942 |
+
.ui-button {
|
943 |
color: #555555;
|
944 |
text-decoration: none;
|
945 |
}
|
948 |
.ui-widget-header .ui-state-hover,
|
949 |
.ui-state-focus,
|
950 |
.ui-widget-content .ui-state-focus,
|
951 |
+
.ui-widget-header .ui-state-focus,
|
952 |
+
.ui-button:hover,
|
953 |
+
.ui-button:focus {
|
954 |
border: 1px solid #999999;
|
955 |
background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
|
956 |
font-weight: normal;
|
963 |
.ui-state-focus a,
|
964 |
.ui-state-focus a:hover,
|
965 |
.ui-state-focus a:link,
|
966 |
+
.ui-state-focus a:visited,
|
967 |
+
a.ui-button:hover,
|
968 |
+
a.ui-button:focus {
|
969 |
color: #212121;
|
970 |
text-decoration: none;
|
971 |
}
|
972 |
+
|
973 |
+
.ui-visual-focus {
|
974 |
+
box-shadow: 0 0 3px 1px rgb(94, 158, 214);
|
975 |
+
}
|
976 |
.ui-state-active,
|
977 |
.ui-widget-content .ui-state-active,
|
978 |
+
.ui-widget-header .ui-state-active,
|
979 |
+
a.ui-button:active,
|
980 |
+
.ui-button:active,
|
981 |
+
.ui-button.ui-state-active:hover {
|
982 |
border: 1px solid #aaaaaa;
|
983 |
background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
|
984 |
font-weight: normal;
|
985 |
color: #212121;
|
986 |
}
|
987 |
+
.ui-icon-background,
|
988 |
+
.ui-state-active .ui-icon-background {
|
989 |
+
border: #aaaaaa;
|
990 |
+
background-color: #212121;
|
991 |
+
}
|
992 |
.ui-state-active a,
|
993 |
.ui-state-active a:link,
|
994 |
.ui-state-active a:visited {
|
1005 |
background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
|
1006 |
color: #363636;
|
1007 |
}
|
1008 |
+
.ui-state-checked {
|
1009 |
+
border: 1px solid #fcefa1;
|
1010 |
+
background: #fbf9ee;
|
1011 |
+
}
|
1012 |
.ui-state-highlight a,
|
1013 |
.ui-widget-content .ui-state-highlight a,
|
1014 |
.ui-widget-header .ui-state-highlight a {
|
1069 |
.ui-widget-header .ui-icon {
|
1070 |
background-image: url("images/ui-icons_222222_256x240.png");
|
1071 |
}
|
|
|
|
|
|
|
1072 |
.ui-state-hover .ui-icon,
|
1073 |
+
.ui-state-focus .ui-icon,
|
1074 |
+
.ui-button:hover .ui-icon,
|
1075 |
+
.ui-button:focus .ui-icon {
|
1076 |
background-image: url("images/ui-icons_454545_256x240.png");
|
1077 |
}
|
1078 |
+
.ui-state-active .ui-icon,
|
1079 |
+
.ui-button:active .ui-icon {
|
1080 |
background-image: url("images/ui-icons_454545_256x240.png");
|
1081 |
}
|
1082 |
+
.ui-state-highlight .ui-icon,
|
1083 |
+
.ui-button .ui-state-highlight.ui-icon {
|
1084 |
background-image: url("images/ui-icons_2e83ff_256x240.png");
|
1085 |
}
|
1086 |
.ui-state-error .ui-icon,
|
1087 |
.ui-state-error-text .ui-icon {
|
1088 |
background-image: url("images/ui-icons_cd0a0a_256x240.png");
|
1089 |
}
|
1090 |
+
.ui-button .ui-icon {
|
1091 |
+
background-image: url("images/ui-icons_888888_256x240.png");
|
1092 |
+
}
|
1093 |
|
1094 |
/* positioning */
|
1095 |
.ui-icon-blank { background-position: 16px 16px; }
|
1096 |
+
.ui-icon-caret-1-n { background-position: 0 0; }
|
1097 |
+
.ui-icon-caret-1-ne { background-position: -16px 0; }
|
1098 |
+
.ui-icon-caret-1-e { background-position: -32px 0; }
|
1099 |
+
.ui-icon-caret-1-se { background-position: -48px 0; }
|
1100 |
+
.ui-icon-caret-1-s { background-position: -65px 0; }
|
1101 |
+
.ui-icon-caret-1-sw { background-position: -80px 0; }
|
1102 |
+
.ui-icon-caret-1-w { background-position: -96px 0; }
|
1103 |
+
.ui-icon-caret-1-nw { background-position: -112px 0; }
|
1104 |
+
.ui-icon-caret-2-n-s { background-position: -128px 0; }
|
1105 |
+
.ui-icon-caret-2-e-w { background-position: -144px 0; }
|
1106 |
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
1107 |
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
1108 |
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
1109 |
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
1110 |
+
.ui-icon-triangle-1-s { background-position: -65px -16px; }
|
1111 |
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
1112 |
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
1113 |
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
1117 |
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
1118 |
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
1119 |
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
1120 |
+
.ui-icon-arrow-1-s { background-position: -65px -32px; }
|
1121 |
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
1122 |
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
1123 |
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
1129 |
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
1130 |
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
1131 |
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
1132 |
+
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
|
1133 |
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
1134 |
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
1135 |
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
1301 |
|
1302 |
/* Overlays */
|
1303 |
.ui-widget-overlay {
|
1304 |
+
background: #aaaaaa;
|
1305 |
opacity: .3;
|
1306 |
filter: Alpha(Opacity=30); /* support: IE8 */
|
1307 |
}
|
1308 |
.ui-widget-shadow {
|
1309 |
+
-webkit-box-shadow: -8px -8px 8px #aaaaaa;
|
1310 |
+
box-shadow: -8px -8px 8px #aaaaaa;
|
|
|
|
|
|
|
|
|
1311 |
}
|
includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
/*! jQuery UI - v1.
|
2 |
* http://jqueryui.com
|
3 |
-
* Includes: core.css, accordion.css, autocomplete.css, button.css,
|
4 |
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
5 |
-
* Copyright
|
6 |
|
7 |
-
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
|
1 |
+
/*! jQuery UI - v1.12.1 - 2016-09-14
|
2 |
* http://jqueryui.com
|
3 |
+
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
|
4 |
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
5 |
+
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
|
7 |
+
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #d3d3d3}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#212121;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-icon-background,.ui-state-active .ui-icon-background{border:#aaa;background-color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-checked{border:1px solid #fcefa1;background:#fbf9ee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}
|
includes/js/jquery-ui/themes/smoothness/theme.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* jQuery UI CSS Framework 1.
|
3 |
* http://jqueryui.com
|
4 |
*
|
5 |
* Copyright jQuery Foundation and other contributors
|
@@ -28,9 +28,12 @@
|
|
28 |
font-family: Verdana,Arial,sans-serif;
|
29 |
font-size: 1em;
|
30 |
}
|
|
|
|
|
|
|
31 |
.ui-widget-content {
|
32 |
border: 1px solid #aaaaaa;
|
33 |
-
background: #ffffff
|
34 |
color: #222222;
|
35 |
}
|
36 |
.ui-widget-content a {
|
@@ -50,7 +53,13 @@
|
|
50 |
----------------------------------*/
|
51 |
.ui-state-default,
|
52 |
.ui-widget-content .ui-state-default,
|
53 |
-
.ui-widget-header .ui-state-default
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
border: 1px solid #d3d3d3;
|
55 |
background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
|
56 |
font-weight: normal;
|
@@ -58,7 +67,11 @@
|
|
58 |
}
|
59 |
.ui-state-default a,
|
60 |
.ui-state-default a:link,
|
61 |
-
.ui-state-default a:visited
|
|
|
|
|
|
|
|
|
62 |
color: #555555;
|
63 |
text-decoration: none;
|
64 |
}
|
@@ -67,7 +80,9 @@
|
|
67 |
.ui-widget-header .ui-state-hover,
|
68 |
.ui-state-focus,
|
69 |
.ui-widget-content .ui-state-focus,
|
70 |
-
.ui-widget-header .ui-state-focus
|
|
|
|
|
71 |
border: 1px solid #999999;
|
72 |
background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
|
73 |
font-weight: normal;
|
@@ -80,18 +95,32 @@
|
|
80 |
.ui-state-focus a,
|
81 |
.ui-state-focus a:hover,
|
82 |
.ui-state-focus a:link,
|
83 |
-
.ui-state-focus a:visited
|
|
|
|
|
84 |
color: #212121;
|
85 |
text-decoration: none;
|
86 |
}
|
|
|
|
|
|
|
|
|
87 |
.ui-state-active,
|
88 |
.ui-widget-content .ui-state-active,
|
89 |
-
.ui-widget-header .ui-state-active
|
|
|
|
|
|
|
90 |
border: 1px solid #aaaaaa;
|
91 |
background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
|
92 |
font-weight: normal;
|
93 |
color: #212121;
|
94 |
}
|
|
|
|
|
|
|
|
|
|
|
95 |
.ui-state-active a,
|
96 |
.ui-state-active a:link,
|
97 |
.ui-state-active a:visited {
|
@@ -108,6 +137,10 @@
|
|
108 |
background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
|
109 |
color: #363636;
|
110 |
}
|
|
|
|
|
|
|
|
|
111 |
.ui-state-highlight a,
|
112 |
.ui-widget-content .ui-state-highlight a,
|
113 |
.ui-widget-header .ui-state-highlight a {
|
@@ -168,41 +201,45 @@
|
|
168 |
.ui-widget-header .ui-icon {
|
169 |
background-image: url("images/ui-icons_222222_256x240.png");
|
170 |
}
|
171 |
-
.ui-state-default .ui-icon {
|
172 |
-
background-image: url("images/ui-icons_888888_256x240.png");
|
173 |
-
}
|
174 |
.ui-state-hover .ui-icon,
|
175 |
-
.ui-state-focus .ui-icon
|
|
|
|
|
176 |
background-image: url("images/ui-icons_454545_256x240.png");
|
177 |
}
|
178 |
-
.ui-state-active .ui-icon
|
|
|
179 |
background-image: url("images/ui-icons_454545_256x240.png");
|
180 |
}
|
181 |
-
.ui-state-highlight .ui-icon
|
|
|
182 |
background-image: url("images/ui-icons_2e83ff_256x240.png");
|
183 |
}
|
184 |
.ui-state-error .ui-icon,
|
185 |
.ui-state-error-text .ui-icon {
|
186 |
background-image: url("images/ui-icons_cd0a0a_256x240.png");
|
187 |
}
|
|
|
|
|
|
|
188 |
|
189 |
/* positioning */
|
190 |
.ui-icon-blank { background-position: 16px 16px; }
|
191 |
-
.ui-icon-
|
192 |
-
.ui-icon-
|
193 |
-
.ui-icon-
|
194 |
-
.ui-icon-
|
195 |
-
.ui-icon-
|
196 |
-
.ui-icon-
|
197 |
-
.ui-icon-
|
198 |
-
.ui-icon-
|
199 |
-
.ui-icon-
|
200 |
-
.ui-icon-
|
201 |
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
202 |
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
203 |
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
204 |
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
205 |
-
.ui-icon-triangle-1-s { background-position: -
|
206 |
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
207 |
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
208 |
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
@@ -212,7 +249,7 @@
|
|
212 |
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
213 |
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
214 |
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
215 |
-
.ui-icon-arrow-1-s { background-position: -
|
216 |
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
217 |
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
218 |
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
@@ -224,7 +261,7 @@
|
|
224 |
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
225 |
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
226 |
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
227 |
-
.ui-icon-arrowthick-1-n { background-position:
|
228 |
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
229 |
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
230 |
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
@@ -396,15 +433,11 @@
|
|
396 |
|
397 |
/* Overlays */
|
398 |
.ui-widget-overlay {
|
399 |
-
background: #aaaaaa
|
400 |
opacity: .3;
|
401 |
filter: Alpha(Opacity=30); /* support: IE8 */
|
402 |
}
|
403 |
.ui-widget-shadow {
|
404 |
-
|
405 |
-
|
406 |
-
background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
|
407 |
-
opacity: .3;
|
408 |
-
filter: Alpha(Opacity=30); /* support: IE8 */
|
409 |
-
border-radius: 8px;
|
410 |
}
|
1 |
/*!
|
2 |
+
* jQuery UI CSS Framework 1.12.1
|
3 |
* http://jqueryui.com
|
4 |
*
|
5 |
* Copyright jQuery Foundation and other contributors
|
28 |
font-family: Verdana,Arial,sans-serif;
|
29 |
font-size: 1em;
|
30 |
}
|
31 |
+
.ui-widget.ui-widget-content {
|
32 |
+
border: 1px solid #d3d3d3;
|
33 |
+
}
|
34 |
.ui-widget-content {
|
35 |
border: 1px solid #aaaaaa;
|
36 |
+
background: #ffffff;
|
37 |
color: #222222;
|
38 |
}
|
39 |
.ui-widget-content a {
|
53 |
----------------------------------*/
|
54 |
.ui-state-default,
|
55 |
.ui-widget-content .ui-state-default,
|
56 |
+
.ui-widget-header .ui-state-default,
|
57 |
+
.ui-button,
|
58 |
+
|
59 |
+
/* We use html here because we need a greater specificity to make sure disabled
|
60 |
+
works properly when clicked or hovered */
|
61 |
+
html .ui-button.ui-state-disabled:hover,
|
62 |
+
html .ui-button.ui-state-disabled:active {
|
63 |
border: 1px solid #d3d3d3;
|
64 |
background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
|
65 |
font-weight: normal;
|
67 |
}
|
68 |
.ui-state-default a,
|
69 |
.ui-state-default a:link,
|
70 |
+
.ui-state-default a:visited,
|
71 |
+
a.ui-button,
|
72 |
+
a:link.ui-button,
|
73 |
+
a:visited.ui-button,
|
74 |
+
.ui-button {
|
75 |
color: #555555;
|
76 |
text-decoration: none;
|
77 |
}
|
80 |
.ui-widget-header .ui-state-hover,
|
81 |
.ui-state-focus,
|
82 |
.ui-widget-content .ui-state-focus,
|
83 |
+
.ui-widget-header .ui-state-focus,
|
84 |
+
.ui-button:hover,
|
85 |
+
.ui-button:focus {
|
86 |
border: 1px solid #999999;
|
87 |
background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
|
88 |
font-weight: normal;
|
95 |
.ui-state-focus a,
|
96 |
.ui-state-focus a:hover,
|
97 |
.ui-state-focus a:link,
|
98 |
+
.ui-state-focus a:visited,
|
99 |
+
a.ui-button:hover,
|
100 |
+
a.ui-button:focus {
|
101 |
color: #212121;
|
102 |
text-decoration: none;
|
103 |
}
|
104 |
+
|
105 |
+
.ui-visual-focus {
|
106 |
+
box-shadow: 0 0 3px 1px rgb(94, 158, 214);
|
107 |
+
}
|
108 |
.ui-state-active,
|
109 |
.ui-widget-content .ui-state-active,
|
110 |
+
.ui-widget-header .ui-state-active,
|
111 |
+
a.ui-button:active,
|
112 |
+
.ui-button:active,
|
113 |
+
.ui-button.ui-state-active:hover {
|
114 |
border: 1px solid #aaaaaa;
|
115 |
background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
|
116 |
font-weight: normal;
|
117 |
color: #212121;
|
118 |
}
|
119 |
+
.ui-icon-background,
|
120 |
+
.ui-state-active .ui-icon-background {
|
121 |
+
border: #aaaaaa;
|
122 |
+
background-color: #212121;
|
123 |
+
}
|
124 |
.ui-state-active a,
|
125 |
.ui-state-active a:link,
|
126 |
.ui-state-active a:visited {
|
137 |
background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
|
138 |
color: #363636;
|
139 |
}
|
140 |
+
.ui-state-checked {
|
141 |
+
border: 1px solid #fcefa1;
|
142 |
+
background: #fbf9ee;
|
143 |
+
}
|
144 |
.ui-state-highlight a,
|
145 |
.ui-widget-content .ui-state-highlight a,
|
146 |
.ui-widget-header .ui-state-highlight a {
|
201 |
.ui-widget-header .ui-icon {
|
202 |
background-image: url("images/ui-icons_222222_256x240.png");
|
203 |
}
|
|
|
|
|
|
|
204 |
.ui-state-hover .ui-icon,
|
205 |
+
.ui-state-focus .ui-icon,
|
206 |
+
.ui-button:hover .ui-icon,
|
207 |
+
.ui-button:focus .ui-icon {
|
208 |
background-image: url("images/ui-icons_454545_256x240.png");
|
209 |
}
|
210 |
+
.ui-state-active .ui-icon,
|
211 |
+
.ui-button:active .ui-icon {
|
212 |
background-image: url("images/ui-icons_454545_256x240.png");
|
213 |
}
|
214 |
+
.ui-state-highlight .ui-icon,
|
215 |
+
.ui-button .ui-state-highlight.ui-icon {
|
216 |
background-image: url("images/ui-icons_2e83ff_256x240.png");
|
217 |
}
|
218 |
.ui-state-error .ui-icon,
|
219 |
.ui-state-error-text .ui-icon {
|
220 |
background-image: url("images/ui-icons_cd0a0a_256x240.png");
|
221 |
}
|
222 |
+
.ui-button .ui-icon {
|
223 |
+
background-image: url("images/ui-icons_888888_256x240.png");
|
224 |
+
}
|
225 |
|
226 |
/* positioning */
|
227 |
.ui-icon-blank { background-position: 16px 16px; }
|
228 |
+
.ui-icon-caret-1-n { background-position: 0 0; }
|
229 |
+
.ui-icon-caret-1-ne { background-position: -16px 0; }
|
230 |
+
.ui-icon-caret-1-e { background-position: -32px 0; }
|
231 |
+
.ui-icon-caret-1-se { background-position: -48px 0; }
|
232 |
+
.ui-icon-caret-1-s { background-position: -65px 0; }
|
233 |
+
.ui-icon-caret-1-sw { background-position: -80px 0; }
|
234 |
+
.ui-icon-caret-1-w { background-position: -96px 0; }
|
235 |
+
.ui-icon-caret-1-nw { background-position: -112px 0; }
|
236 |
+
.ui-icon-caret-2-n-s { background-position: -128px 0; }
|
237 |
+
.ui-icon-caret-2-e-w { background-position: -144px 0; }
|
238 |
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
239 |
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
240 |
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
241 |
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
242 |
+
.ui-icon-triangle-1-s { background-position: -65px -16px; }
|
243 |
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
244 |
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
245 |
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
249 |
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
250 |
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
251 |
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
252 |
+
.ui-icon-arrow-1-s { background-position: -65px -32px; }
|
253 |
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
254 |
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
255 |
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
261 |
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
262 |
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
263 |
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
264 |
+
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
|
265 |
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
266 |
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
267 |
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
433 |
|
434 |
/* Overlays */
|
435 |
.ui-widget-overlay {
|
436 |
+
background: #aaaaaa;
|
437 |
opacity: .3;
|
438 |
filter: Alpha(Opacity=30); /* support: IE8 */
|
439 |
}
|
440 |
.ui-widget-shadow {
|
441 |
+
-webkit-box-shadow: -8px -8px 8px #aaaaaa;
|
442 |
+
box-shadow: -8px -8px 8px #aaaaaa;
|
|
|
|
|
|
|
|
|
443 |
}
|
includes/js/scripts.js
DELETED
@@ -1,531 +0,0 @@
|
|
1 |
-
( function( $ ) {
|
2 |
-
|
3 |
-
'use strict';
|
4 |
-
|
5 |
-
if ( typeof wpcf7 === 'undefined' || wpcf7 === null ) {
|
6 |
-
return;
|
7 |
-
}
|
8 |
-
|
9 |
-
wpcf7 = $.extend( {
|
10 |
-
cached: 0,
|
11 |
-
inputs: []
|
12 |
-
}, wpcf7 );
|
13 |
-
|
14 |
-
$( function() {
|
15 |
-
wpcf7.supportHtml5 = ( function() {
|
16 |
-
var features = {};
|
17 |
-
var input = document.createElement( 'input' );
|
18 |
-
|
19 |
-
features.placeholder = 'placeholder' in input;
|
20 |
-
|
21 |
-
var inputTypes = [ 'email', 'url', 'tel', 'number', 'range', 'date' ];
|
22 |
-
|
23 |
-
$.each( inputTypes, function( index, value ) {
|
24 |
-
input.setAttribute( 'type', value );
|
25 |
-
features[ value ] = input.type !== 'text';
|
26 |
-
} );
|
27 |
-
|
28 |
-
return features;
|
29 |
-
} )();
|
30 |
-
|
31 |
-
$( 'div.wpcf7 > form' ).each( function() {
|
32 |
-
var $form = $( this );
|
33 |
-
wpcf7.initForm( $form );
|
34 |
-
|
35 |
-
if ( wpcf7.cached ) {
|
36 |
-
wpcf7.refill( $form );
|
37 |
-
}
|
38 |
-
} );
|
39 |
-
} );
|
40 |
-
|
41 |
-
wpcf7.getId = function( form ) {
|
42 |
-
return parseInt( $( 'input[name="_wpcf7"]', form ).val(), 10 );
|
43 |
-
};
|
44 |
-
|
45 |
-
wpcf7.initForm = function( form ) {
|
46 |
-
var $form = $( form );
|
47 |
-
|
48 |
-
wpcf7.setStatus( $form, 'init' );
|
49 |
-
|
50 |
-
$form.submit( function( event ) {
|
51 |
-
if ( ! wpcf7.supportHtml5.placeholder ) {
|
52 |
-
$( '[placeholder].placeheld', $form ).each( function( i, n ) {
|
53 |
-
$( n ).val( '' ).removeClass( 'placeheld' );
|
54 |
-
} );
|
55 |
-
}
|
56 |
-
|
57 |
-
if ( typeof window.FormData === 'function' ) {
|
58 |
-
wpcf7.submit( $form );
|
59 |
-
event.preventDefault();
|
60 |
-
}
|
61 |
-
} );
|
62 |
-
|
63 |
-
$( '.wpcf7-submit', $form ).after( '<span class="ajax-loader"></span>' );
|
64 |
-
|
65 |
-
wpcf7.toggleSubmit( $form );
|
66 |
-
|
67 |
-
$form.on( 'click', '.wpcf7-acceptance', function() {
|
68 |
-
wpcf7.toggleSubmit( $form );
|
69 |
-
} );
|
70 |
-
|
71 |
-
// Exclusive Checkbox
|
72 |
-
$( '.wpcf7-exclusive-checkbox', $form ).on( 'click', 'input:checkbox', function() {
|
73 |
-
var name = $( this ).attr( 'name' );
|
74 |
-
$form.find( 'input:checkbox[name="' + name + '"]' ).not( this ).prop( 'checked', false );
|
75 |
-
} );
|
76 |
-
|
77 |
-
// Free Text Option for Checkboxes and Radio Buttons
|
78 |
-
$( '.wpcf7-list-item.has-free-text', $form ).each( function() {
|
79 |
-
var $freetext = $( ':input.wpcf7-free-text', this );
|
80 |
-
var $wrap = $( this ).closest( '.wpcf7-form-control' );
|
81 |
-
|
82 |
-
if ( $( ':checkbox, :radio', this ).is( ':checked' ) ) {
|
83 |
-
$freetext.prop( 'disabled', false );
|
84 |
-
} else {
|
85 |
-
$freetext.prop( 'disabled', true );
|
86 |
-
}
|
87 |
-
|
88 |
-
$wrap.on( 'change', ':checkbox, :radio', function() {
|
89 |
-
var $cb = $( '.has-free-text', $wrap ).find( ':checkbox, :radio' );
|
90 |
-
|
91 |
-
if ( $cb.is( ':checked' ) ) {
|
92 |
-
$freetext.prop( 'disabled', false ).focus();
|
93 |
-
} else {
|
94 |
-
$freetext.prop( 'disabled', true );
|
95 |
-
}
|
96 |
-
} );
|
97 |
-
} );
|
98 |
-
|
99 |
-
// Placeholder Fallback
|
100 |
-
if ( ! wpcf7.supportHtml5.placeholder ) {
|
101 |
-
$( '[placeholder]', $form ).each( function() {
|
102 |
-
$( this ).val( $( this ).attr( 'placeholder' ) );
|
103 |
-
$( this ).addClass( 'placeheld' );
|
104 |
-
|
105 |
-
$( this ).focus( function() {
|
106 |
-
if ( $( this ).hasClass( 'placeheld' ) ) {
|
107 |
-
$( this ).val( '' ).removeClass( 'placeheld' );
|
108 |
-
}
|
109 |
-
} );
|
110 |
-
|
111 |
-
$( this ).blur( function() {
|
112 |
-
if ( '' === $( this ).val() ) {
|
113 |
-
$( this ).val( $( this ).attr( 'placeholder' ) );
|
114 |
-
$( this ).addClass( 'placeheld' );
|
115 |
-
}
|
116 |
-
} );
|
117 |
-
} );
|
118 |
-
}
|
119 |
-
|
120 |
-
if ( wpcf7.jqueryUi && ! wpcf7.supportHtml5.date ) {
|
121 |
-
$form.find( 'input.wpcf7-date[type="date"]' ).each( function() {
|
122 |
-
$( this ).datepicker( {
|
123 |
-
dateFormat: 'yy-mm-dd',
|
124 |
-
minDate: new Date( $( this ).attr( 'min' ) ),
|
125 |
-
maxDate: new Date( $( this ).attr( 'max' ) )
|
126 |
-
} );
|
127 |
-
} );
|
128 |
-
}
|
129 |
-
|
130 |
-
if ( wpcf7.jqueryUi && ! wpcf7.supportHtml5.number ) {
|
131 |
-
$form.find( 'input.wpcf7-number[type="number"]' ).each( function() {
|
132 |
-
$( this ).spinner( {
|
133 |
-
min: $( this ).attr( 'min' ),
|
134 |
-
max: $( this ).attr( 'max' ),
|
135 |
-
step: $( this ).attr( 'step' )
|
136 |
-
} );
|
137 |
-
} );
|
138 |
-
}
|
139 |
-
|
140 |
-
// Character Count
|
141 |
-
wpcf7.resetCounter( $form );
|
142 |
-
|
143 |
-
// URL Input Correction
|
144 |
-
$form.on( 'change', '.wpcf7-validates-as-url', function() {
|
145 |
-
var val = $.trim( $( this ).val() );
|
146 |
-
|
147 |
-
if ( val
|
148 |
-
&& ! val.match( /^[a-z][a-z0-9.+-]*:/i )
|
149 |
-
&& -1 !== val.indexOf( '.' ) ) {
|
150 |
-
val = val.replace( /^\/+/, '' );
|
151 |
-
val = 'http://' + val;
|
152 |
-
}
|
153 |
-
|
154 |
-
$( this ).val( val );
|
155 |
-
} );
|
156 |
-
};
|
157 |
-
|
158 |
-
wpcf7.submit = function( form ) {
|
159 |
-
if ( typeof window.FormData !== 'function' ) {
|
160 |
-
return;
|
161 |
-
}
|
162 |
-
|
163 |
-
var $form = $( form );
|
164 |
-
|
165 |
-
$( '.ajax-loader', $form ).addClass( 'is-active' );
|
166 |
-
wpcf7.clearResponse( $form );
|
167 |
-
|
168 |
-
var formData = new FormData( $form.get( 0 ) );
|
169 |
-
|
170 |
-
var detail = {
|
171 |
-
id: $form.closest( 'div.wpcf7' ).attr( 'id' ),
|
172 |
-
status: 'init',
|
173 |
-
inputs: [],
|
174 |
-
formData: formData
|
175 |
-
};
|
176 |
-
|
177 |
-
$.each( $form.serializeArray(), function( i, field ) {
|
178 |
-
if ( '_wpcf7' == field.name ) {
|
179 |
-
detail.contactFormId = field.value;
|
180 |
-
} else if ( '_wpcf7_version' == field.name ) {
|
181 |
-
detail.pluginVersion = field.value;
|
182 |
-
} else if ( '_wpcf7_locale' == field.name ) {
|
183 |
-
detail.contactFormLocale = field.value;
|
184 |
-
} else if ( '_wpcf7_unit_tag' == field.name ) {
|
185 |
-
detail.unitTag = field.value;
|
186 |
-
} else if ( '_wpcf7_container_post' == field.name ) {
|
187 |
-
detail.containerPostId = field.value;
|
188 |
-
} else if ( field.name.match( /^_/ ) ) {
|
189 |
-
// do nothing
|
190 |
-
} else {
|
191 |
-
detail.inputs.push( field );
|
192 |
-
}
|
193 |
-
} );
|
194 |
-
|
195 |
-
wpcf7.triggerEvent( $form.closest( 'div.wpcf7' ), 'beforesubmit', detail );
|
196 |
-
|
197 |
-
var ajaxSuccess = function( data, status, xhr, $form ) {
|
198 |
-
detail.id = $( data.into ).attr( 'id' );
|
199 |
-
detail.status = data.status;
|
200 |
-
detail.apiResponse = data;
|
201 |
-
|
202 |
-
switch ( data.status ) {
|
203 |
-
case 'init':
|
204 |
-
wpcf7.setStatus( $form, 'init' );
|
205 |
-
break;
|
206 |
-
case 'validation_failed':
|
207 |
-
$.each( data.invalid_fields, function( i, n ) {
|
208 |
-
$( n.into, $form ).each( function() {
|
209 |
-
wpcf7.notValidTip( this, n.message );
|
210 |
-
$( '.wpcf7-form-control', this ).addClass( 'wpcf7-not-valid' );
|
211 |
-
$( '.wpcf7-form-control', this ).attr(
|
212 |
-
'aria-describedby',
|
213 |
-
n.error_id
|
214 |
-
);
|
215 |
-
$( '[aria-invalid]', this ).attr( 'aria-invalid', 'true' );
|
216 |
-
} );
|
217 |
-
} );
|
218 |
-
|
219 |
-
wpcf7.setStatus( $form, 'invalid' );
|
220 |
-
wpcf7.triggerEvent( data.into, 'invalid', detail );
|
221 |
-
break;
|
222 |
-
case 'acceptance_missing':
|
223 |
-
wpcf7.setStatus( $form, 'unaccepted' );
|
224 |
-
wpcf7.triggerEvent( data.into, 'unaccepted', detail );
|
225 |
-
break;
|
226 |
-
case 'spam':
|
227 |
-
wpcf7.setStatus( $form, 'spam' );
|
228 |
-
wpcf7.triggerEvent( data.into, 'spam', detail );
|
229 |
-
break;
|
230 |
-
case 'aborted':
|
231 |
-
wpcf7.setStatus( $form, 'aborted' );
|
232 |
-
wpcf7.triggerEvent( data.into, 'aborted', detail );
|
233 |
-
break;
|
234 |
-
case 'mail_sent':
|
235 |
-
wpcf7.setStatus( $form, 'sent' );
|
236 |
-
wpcf7.triggerEvent( data.into, 'mailsent', detail );
|
237 |
-
break;
|
238 |
-
case 'mail_failed':
|
239 |
-
wpcf7.setStatus( $form, 'failed' );
|
240 |
-
wpcf7.triggerEvent( data.into, 'mailfailed', detail );
|
241 |
-
break;
|
242 |
-
default:
|
243 |
-
wpcf7.setStatus( $form,
|
244 |
-
'custom-' + data.status.replace( /[^0-9a-z]+/i, '-' )
|
245 |
-
);
|
246 |
-
}
|
247 |
-
|
248 |
-
wpcf7.refill( $form, data );
|
249 |
-
|
250 |
-
wpcf7.triggerEvent( data.into, 'submit', detail );
|
251 |
-
|
252 |
-
if ( 'mail_sent' == data.status ) {
|
253 |
-
$form.each( function() {
|
254 |
-
this.reset();
|
255 |
-
} );
|
256 |
-
|
257 |
-
wpcf7.toggleSubmit( $form );
|
258 |
-
wpcf7.resetCounter( $form );
|
259 |
-
}
|
260 |
-
|
261 |
-
if ( ! wpcf7.supportHtml5.placeholder ) {
|
262 |
-
$form.find( '[placeholder].placeheld' ).each( function( i, n ) {
|
263 |
-
$( n ).val( $( n ).attr( 'placeholder' ) );
|
264 |
-
} );
|
265 |
-
}
|
266 |
-
|
267 |
-
$( '.wpcf7-response-output', $form )
|
268 |
-
.html( '' ).append( data.message ).slideDown( 'fast' );
|
269 |
-
|
270 |
-
$( '.screen-reader-response', $form.closest( '.wpcf7' ) ).each( function() {
|
271 |
-
var $response = $( this );
|
272 |
-
$( '[role="status"]', $response ).html( data.message );
|
273 |
-
|
274 |
-
if ( data.invalid_fields ) {
|
275 |
-
$.each( data.invalid_fields, function( i, n ) {
|
276 |
-
if ( n.idref ) {
|
277 |
-
var $li = $( '<li></li>' ).append( $( '<a></a>' ).attr( 'href', '#' + n.idref ).append( n.message ) );
|
278 |
-
} else {
|
279 |
-
var $li = $( '<li></li>' ).append( n.message );
|
280 |
-
}
|
281 |
-
|
282 |
-
$li.attr( 'id', n.error_id );
|
283 |
-
|
284 |
-
$( 'ul', $response ).append( $li );
|
285 |
-
} );
|
286 |
-
}
|
287 |
-
} );
|
288 |
-
|
289 |
-
if ( data.posted_data_hash ) {
|
290 |
-
$form.find( 'input[name="_wpcf7_posted_data_hash"]' ).first()
|
291 |
-
.val( data.posted_data_hash );
|
292 |
-
}
|
293 |
-
};
|
294 |
-
|
295 |
-
$.ajax( {
|
296 |
-
type: 'POST',
|
297 |
-
url: wpcf7.apiSettings.getRoute(
|
298 |
-
'/contact-forms/' + wpcf7.getId( $form ) + '/feedback' ),
|
299 |
-
data: formData,
|
300 |
-
dataType: 'json',
|
301 |
-
processData: false,
|
302 |
-
contentType: false
|
303 |
-
} ).done( function( data, status, xhr ) {
|
304 |
-
ajaxSuccess( data, status, xhr, $form );
|
305 |
-
$( '.ajax-loader', $form ).removeClass( 'is-active' );
|
306 |
-
} ).fail( function( xhr, status, error ) {
|
307 |
-
var $e = $( '<div class="ajax-error"></div>' ).text( error.message );
|
308 |
-
$form.after( $e );
|
309 |
-
} );
|
310 |
-
};
|
311 |
-
|
312 |
-
wpcf7.triggerEvent = function( target, name, detail ) {
|
313 |
-
var event = new CustomEvent( 'wpcf7' + name, {
|
314 |
-
bubbles: true,
|
315 |
-
detail: detail
|
316 |
-
} );
|
317 |
-
|
318 |
-
$( target ).get( 0 ).dispatchEvent( event );
|
319 |
-
};
|
320 |
-
|
321 |
-
wpcf7.setStatus = function( form, status ) {
|
322 |
-
var $form = $( form );
|
323 |
-
var prevStatus = $form.attr( 'data-status' );
|
324 |
-
|
325 |
-
$form.data( 'status', status );
|
326 |
-
$form.addClass( status );
|
327 |
-
$form.attr( 'data-status', status );
|
328 |
-
|
329 |
-
if ( prevStatus && prevStatus !== status ) {
|
330 |
-
$form.removeClass( prevStatus );
|
331 |
-
}
|
332 |
-
}
|
333 |
-
|
334 |
-
wpcf7.toggleSubmit = function( form, state ) {
|
335 |
-
var $form = $( form );
|
336 |
-
var $submit = $( 'input:submit', $form );
|
337 |
-
|
338 |
-
if ( typeof state !== 'undefined' ) {
|
339 |
-
$submit.prop( 'disabled', ! state );
|
340 |
-
return;
|
341 |
-
}
|
342 |
-
|
343 |
-
if ( $form.hasClass( 'wpcf7-acceptance-as-validation' ) ) {
|
344 |
-
return;
|
345 |
-
}
|
346 |
-
|
347 |
-
$submit.prop( 'disabled', false );
|
348 |
-
|
349 |
-
$( '.wpcf7-acceptance', $form ).each( function() {
|
350 |
-
var $span = $( this );
|
351 |
-
var $input = $( 'input:checkbox', $span );
|
352 |
-
|
353 |
-
if ( ! $span.hasClass( 'optional' ) ) {
|
354 |
-
if ( $span.hasClass( 'invert' ) && $input.is( ':checked' )
|
355 |
-
|| ! $span.hasClass( 'invert' ) && ! $input.is( ':checked' ) ) {
|
356 |
-
$submit.prop( 'disabled', true );
|
357 |
-
return false;
|
358 |
-
}
|
359 |
-
}
|
360 |
-
} );
|
361 |
-
};
|
362 |
-
|
363 |
-
wpcf7.resetCounter = function( form ) {
|
364 |
-
var $form = $( form );
|
365 |
-
|
366 |
-
$( '.wpcf7-character-count', $form ).each( function() {
|
367 |
-
var $count = $( this );
|
368 |
-
var name = $count.attr( 'data-target-name' );
|
369 |
-
var down = $count.hasClass( 'down' );
|
370 |
-
var starting = parseInt( $count.attr( 'data-starting-value' ), 10 );
|
371 |
-
var maximum = parseInt( $count.attr( 'data-maximum-value' ), 10 );
|
372 |
-
var minimum = parseInt( $count.attr( 'data-minimum-value' ), 10 );
|
373 |
-
|
374 |
-
var updateCount = function( target ) {
|
375 |
-
var $target = $( target );
|
376 |
-
var length = $target.val().length;
|
377 |
-
var count = down ? starting - length : length;
|
378 |
-
$count.attr( 'data-current-value', count );
|
379 |
-
$count.text( count );
|
380 |
-
|
381 |
-
if ( maximum && maximum < length ) {
|
382 |
-
$count.addClass( 'too-long' );
|
383 |
-
} else {
|
384 |
-
$count.removeClass( 'too-long' );
|
385 |
-
}
|
386 |
-
|
387 |
-
if ( minimum && length < minimum ) {
|
388 |
-
$count.addClass( 'too-short' );
|
389 |
-
} else {
|
390 |
-
$count.removeClass( 'too-short' );
|
391 |
-
}
|
392 |
-
};
|
393 |
-
|
394 |
-
$( ':input[name="' + name + '"]', $form ).each( function() {
|
395 |
-
updateCount( this );
|
396 |
-
|
397 |
-
$( this ).keyup( function() {
|
398 |
-
updateCount( this );
|
399 |
-
} );
|
400 |
-
} );
|
401 |
-
} );
|
402 |
-
};
|
403 |
-
|
404 |
-
wpcf7.notValidTip = function( target, message ) {
|
405 |
-
var $target = $( target );
|
406 |
-
$( '.wpcf7-not-valid-tip', $target ).remove();
|
407 |
-
|
408 |
-
$( '<span></span>' ).attr( {
|
409 |
-
'class': 'wpcf7-not-valid-tip',
|
410 |
-
'aria-hidden': 'true',
|
411 |
-
} ).text( message ).appendTo( $target );
|
412 |
-
|
413 |
-
if ( $target.is( '.use-floating-validation-tip *' ) ) {
|
414 |
-
var fadeOut = function( target ) {
|
415 |
-
$( target ).not( ':hidden' ).animate( {
|
416 |
-
opacity: 0
|
417 |
-
}, 'fast', function() {
|
418 |
-
$( this ).css( { 'z-index': -100 } );
|
419 |
-
} );
|
420 |
-
};
|
421 |
-
|
422 |
-
$target.on( 'mouseover', '.wpcf7-not-valid-tip', function() {
|
423 |
-
fadeOut( this );
|
424 |
-
} );
|
425 |
-
|
426 |
-
$target.on( 'focus', ':input', function() {
|
427 |
-
fadeOut( $( '.wpcf7-not-valid-tip', $target ) );
|
428 |
-
} );
|
429 |
-
}
|
430 |
-
};
|
431 |
-
|
432 |
-
wpcf7.refill = function( form, data ) {
|
433 |
-
var $form = $( form );
|
434 |
-
|
435 |
-
var refillCaptcha = function( $form, items ) {
|
436 |
-
$.each( items, function( i, n ) {
|
437 |
-
$form.find( ':input[name="' + i + '"]' ).val( '' );
|
438 |
-
$form.find( 'img.wpcf7-captcha-' + i ).attr( 'src', n );
|
439 |
-
var match = /([0-9]+)\.(png|gif|jpeg)$/.exec( n );
|
440 |
-
$form.find( 'input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]' ).attr( 'value', match[ 1 ] );
|
441 |
-
} );
|
442 |
-
};
|
443 |
-
|
444 |
-
var refillQuiz = function( $form, items ) {
|
445 |
-
$.each( items, function( i, n ) {
|
446 |
-
$form.find( ':input[name="' + i + '"]' ).val( '' );
|
447 |
-
$form.find( ':input[name="' + i + '"]' ).siblings( 'span.wpcf7-quiz-label' ).text( n[ 0 ] );
|
448 |
-
$form.find( 'input:hidden[name="_wpcf7_quiz_answer_' + i + '"]' ).attr( 'value', n[ 1 ] );
|
449 |
-
} );
|
450 |
-
};
|
451 |
-
|
452 |
-
if ( typeof data === 'undefined' ) {
|
453 |
-
$.ajax( {
|
454 |
-
type: 'GET',
|
455 |
-
url: wpcf7.apiSettings.getRoute(
|
456 |
-
'/contact-forms/' + wpcf7.getId( $form ) + '/refill' ),
|
457 |
-
beforeSend: function( xhr ) {
|
458 |
-
var nonce = $form.find( ':input[name="_wpnonce"]' ).val();
|
459 |
-
|
460 |
-
if ( nonce ) {
|
461 |
-
xhr.setRequestHeader( 'X-WP-Nonce', nonce );
|
462 |
-
}
|
463 |
-
},
|
464 |
-
dataType: 'json'
|
465 |
-
} ).done( function( data, status, xhr ) {
|
466 |
-
if ( data.captcha ) {
|
467 |
-
refillCaptcha( $form, data.captcha );
|
468 |
-
}
|
469 |
-
|
470 |
-
if ( data.quiz ) {
|
471 |
-
refillQuiz( $form, data.quiz );
|
472 |
-
}
|
473 |
-
} );
|
474 |
-
|
475 |
-
} else {
|
476 |
-
if ( data.captcha ) {
|
477 |
-
refillCaptcha( $form, data.captcha );
|
478 |
-
}
|
479 |
-
|
480 |
-
if ( data.quiz ) {
|
481 |
-
refillQuiz( $form, data.quiz );
|
482 |
-
}
|
483 |
-
}
|
484 |
-
};
|
485 |
-
|
486 |
-
wpcf7.clearResponse = function( form ) {
|
487 |
-
var $form = $( form );
|
488 |
-
|
489 |
-
$form.siblings( '.screen-reader-response' ).each( function() {
|
490 |
-
$( '[role="status"]', this ).html( '' );
|
491 |
-
$( 'ul', this ).html( '' );
|
492 |
-
} );
|
493 |
-
|
494 |
-
$( '.wpcf7-not-valid-tip', $form ).remove();
|
495 |
-
$( '[aria-invalid]', $form ).attr( 'aria-invalid', 'false' );
|
496 |
-
$( '.wpcf7-form-control', $form ).removeClass( 'wpcf7-not-valid' );
|
497 |
-
|
498 |
-
$( '.wpcf7-response-output', $form ).hide().empty();
|
499 |
-
};
|
500 |
-
|
501 |
-
wpcf7.apiSettings.getRoute = function( path ) {
|
502 |
-
var url = wpcf7.apiSettings.root;
|
503 |
-
|
504 |
-
url = url.replace(
|
505 |
-
wpcf7.apiSettings.namespace,
|
506 |
-
wpcf7.apiSettings.namespace + path );
|
507 |
-
|
508 |
-
return url;
|
509 |
-
};
|
510 |
-
|
511 |
-
} )( jQuery );
|
512 |
-
|
513 |
-
/*
|
514 |
-
* Polyfill for Internet Explorer
|
515 |
-
* See https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
|
516 |
-
*/
|
517 |
-
( function () {
|
518 |
-
if ( typeof window.CustomEvent === "function" ) return false;
|
519 |
-
|
520 |
-
function CustomEvent ( event, params ) {
|
521 |
-
params = params || { bubbles: false, cancelable: false, detail: undefined };
|
522 |
-
var evt = document.createEvent( 'CustomEvent' );
|
523 |
-
evt.initCustomEvent( event,
|
524 |
-
params.bubbles, params.cancelable, params.detail );
|
525 |
-
return evt;
|
526 |
-
}
|
527 |
-
|
528 |
-
CustomEvent.prototype = window.Event.prototype;
|
529 |
-
|
530 |
-
window.CustomEvent = CustomEvent;
|
531 |
-
} )();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/mail.php
CHANGED
@@ -158,10 +158,9 @@ class WPCF7_Mail {
|
|
158 |
if ( $submission = WPCF7_Submission::get_instance() ) {
|
159 |
$uploaded_files = $submission->uploaded_files();
|
160 |
|
161 |
-
foreach ( (array) $uploaded_files as $name => $
|
162 |
-
if ( false !== strpos( $template, "[${name}]" )
|
163 |
-
|
164 |
-
$attachments[] = $path;
|
165 |
}
|
166 |
}
|
167 |
}
|
158 |
if ( $submission = WPCF7_Submission::get_instance() ) {
|
159 |
$uploaded_files = $submission->uploaded_files();
|
160 |
|
161 |
+
foreach ( (array) $uploaded_files as $name => $paths ) {
|
162 |
+
if ( false !== strpos( $template, "[${name}]" ) ) {
|
163 |
+
$attachments = array_merge( $attachments, (array) $paths );
|
|
|
164 |
}
|
165 |
}
|
166 |
}
|
includes/submission.php
CHANGED
@@ -71,6 +71,11 @@ class WPCF7_Submission {
|
|
71 |
$this->set_response( $contact_form->message( 'spam' ) );
|
72 |
}
|
73 |
|
|
|
|
|
|
|
|
|
|
|
74 |
if ( $this->is( 'init' ) ) {
|
75 |
$abort = ! $this->before_send_mail();
|
76 |
|
@@ -349,10 +354,11 @@ class WPCF7_Submission {
|
|
349 |
return false;
|
350 |
}
|
351 |
|
352 |
-
require_once WPCF7_PLUGIN_DIR . '/includes/validation.php';
|
353 |
$result = new WPCF7_Validation();
|
354 |
|
355 |
-
$tags = $this->contact_form->scan_form_tags(
|
|
|
|
|
356 |
|
357 |
foreach ( $tags as $tag ) {
|
358 |
$type = $tag->type;
|
@@ -493,32 +499,86 @@ class WPCF7_Submission {
|
|
493 |
return $this->uploaded_files;
|
494 |
}
|
495 |
|
496 |
-
|
497 |
if ( ! wpcf7_is_name( $name ) ) {
|
498 |
return false;
|
499 |
}
|
500 |
|
501 |
-
|
502 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
503 |
}
|
504 |
|
505 |
-
$this->uploaded_files[$name] = $
|
506 |
|
507 |
if ( empty( $this->posted_data[$name] ) ) {
|
508 |
-
$this->posted_data[$name] =
|
509 |
}
|
510 |
}
|
511 |
|
512 |
-
|
513 |
-
foreach ( (array) $this->uploaded_files as $
|
514 |
-
|
515 |
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
|
|
|
|
|
|
|
|
521 |
}
|
522 |
}
|
523 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
524 |
}
|
71 |
$this->set_response( $contact_form->message( 'spam' ) );
|
72 |
}
|
73 |
|
74 |
+
if ( $this->is( 'init' ) and ! $this->unship_uploaded_files() ) {
|
75 |
+
$this->set_status( 'validation_failed' );
|
76 |
+
$this->set_response( $contact_form->message( 'validation_error' ) );
|
77 |
+
}
|
78 |
+
|
79 |
if ( $this->is( 'init' ) ) {
|
80 |
$abort = ! $this->before_send_mail();
|
81 |
|
354 |
return false;
|
355 |
}
|
356 |
|
|
|
357 |
$result = new WPCF7_Validation();
|
358 |
|
359 |
+
$tags = $this->contact_form->scan_form_tags( array(
|
360 |
+
'feature' => '! file-uploading',
|
361 |
+
) );
|
362 |
|
363 |
foreach ( $tags as $tag ) {
|
364 |
$type = $tag->type;
|
499 |
return $this->uploaded_files;
|
500 |
}
|
501 |
|
502 |
+
private function add_uploaded_file( $name, $file_path ) {
|
503 |
if ( ! wpcf7_is_name( $name ) ) {
|
504 |
return false;
|
505 |
}
|
506 |
|
507 |
+
$paths = (array) $file_path;
|
508 |
+
$uploaded_files = array();
|
509 |
+
$hash_strings = array();
|
510 |
+
|
511 |
+
foreach ( $paths as $path ) {
|
512 |
+
if ( @is_file( $path ) and @is_readable( $path ) ) {
|
513 |
+
$uploaded_files[] = $path;
|
514 |
+
$hash_strings[] = md5_file( $path );
|
515 |
+
}
|
516 |
}
|
517 |
|
518 |
+
$this->uploaded_files[$name] = $uploaded_files;
|
519 |
|
520 |
if ( empty( $this->posted_data[$name] ) ) {
|
521 |
+
$this->posted_data[$name] = implode( ' ', $hash_strings );
|
522 |
}
|
523 |
}
|
524 |
|
525 |
+
private function remove_uploaded_files() {
|
526 |
+
foreach ( (array) $this->uploaded_files as $file_path ) {
|
527 |
+
$paths = (array) $file_path;
|
528 |
|
529 |
+
foreach ( $paths as $path ) {
|
530 |
+
wpcf7_rmdir_p( $path );
|
531 |
+
|
532 |
+
if ( $dir = dirname( $path )
|
533 |
+
and false !== ( $files = scandir( $dir ) )
|
534 |
+
and ! array_diff( $files, array( '.', '..' ) ) ) {
|
535 |
+
// remove parent dir if it's empty.
|
536 |
+
rmdir( $dir );
|
537 |
+
}
|
538 |
}
|
539 |
}
|
540 |
}
|
541 |
+
|
542 |
+
private function unship_uploaded_files() {
|
543 |
+
$result = new WPCF7_Validation();
|
544 |
+
|
545 |
+
$tags = $this->contact_form->scan_form_tags( array(
|
546 |
+
'feature' => 'file-uploading',
|
547 |
+
) );
|
548 |
+
|
549 |
+
foreach ( $tags as $tag ) {
|
550 |
+
if ( empty( $_FILES[$tag->name] ) ) {
|
551 |
+
continue;
|
552 |
+
}
|
553 |
+
|
554 |
+
$file = $_FILES[$tag->name];
|
555 |
+
|
556 |
+
$args = array(
|
557 |
+
'tag' => $tag,
|
558 |
+
'name' => $tag->name,
|
559 |
+
'required' => $tag->is_required(),
|
560 |
+
'filetypes' => $tag->get_option( 'filetypes' ),
|
561 |
+
'limit' => $tag->get_limit_option(),
|
562 |
+
);
|
563 |
+
|
564 |
+
$new_files = wpcf7_unship_uploaded_file( $file, $args );
|
565 |
+
|
566 |
+
if ( ! is_wp_error( $new_files ) ) {
|
567 |
+
$this->add_uploaded_file( $tag->name, $new_files );
|
568 |
+
}
|
569 |
+
|
570 |
+
$result = apply_filters(
|
571 |
+
"wpcf7_validate_{$tag->type}",
|
572 |
+
$result, $tag,
|
573 |
+
array(
|
574 |
+
'uploaded_files' => $new_files,
|
575 |
+
)
|
576 |
+
);
|
577 |
+
}
|
578 |
+
|
579 |
+
$this->invalid_fields = $result->get_invalid_fields();
|
580 |
+
|
581 |
+
return $result->is_valid();
|
582 |
+
}
|
583 |
+
|
584 |
}
|
includes/validation-functions.php
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Checks whether a string is a valid NAME token.
|
5 |
+
*
|
6 |
+
* ID and NAME tokens must begin with a letter ([A-Za-z])
|
7 |
+
* and may be followed by any number of letters, digits ([0-9]),
|
8 |
+
* hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
|
9 |
+
*
|
10 |
+
* @see http://www.w3.org/TR/html401/types.html#h-6.2
|
11 |
+
*
|
12 |
+
* @return bool True if it is a valid name, false if not.
|
13 |
+
*/
|
14 |
+
function wpcf7_is_name( $string ) {
|
15 |
+
return preg_match( '/^[A-Za-z][-A-Za-z0-9_:.]*$/', $string );
|
16 |
+
}
|
17 |
+
|
18 |
+
function wpcf7_is_email( $email ) {
|
19 |
+
$result = is_email( $email );
|
20 |
+
return apply_filters( 'wpcf7_is_email', $result, $email );
|
21 |
+
}
|
22 |
+
|
23 |
+
function wpcf7_is_url( $url ) {
|
24 |
+
$result = ( false !== filter_var( $url, FILTER_VALIDATE_URL ) );
|
25 |
+
return apply_filters( 'wpcf7_is_url', $result, $url );
|
26 |
+
}
|
27 |
+
|
28 |
+
function wpcf7_is_tel( $tel ) {
|
29 |
+
$pattern = '%^[+]?' // + sign
|
30 |
+
. '(?:\([0-9]+\)|[0-9]+)' // (1234) or 1234
|
31 |
+
. '(?:[/ -]*' // delimiter
|
32 |
+
. '(?:\([0-9]+\)|[0-9]+)' // (1234) or 1234
|
33 |
+
. ')*$%';
|
34 |
+
|
35 |
+
$result = preg_match( $pattern, trim( $tel ) );
|
36 |
+
return apply_filters( 'wpcf7_is_tel', $result, $tel );
|
37 |
+
}
|
38 |
+
|
39 |
+
function wpcf7_is_number( $number ) {
|
40 |
+
$result = is_numeric( $number );
|
41 |
+
return apply_filters( 'wpcf7_is_number', $result, $number );
|
42 |
+
}
|
43 |
+
|
44 |
+
function wpcf7_is_date( $date ) {
|
45 |
+
$result = preg_match( '/^([0-9]{4,})-([0-9]{2})-([0-9]{2})$/', $date, $matches );
|
46 |
+
|
47 |
+
if ( $result ) {
|
48 |
+
$result = checkdate( $matches[2], $matches[3], $matches[1] );
|
49 |
+
}
|
50 |
+
|
51 |
+
return apply_filters( 'wpcf7_is_date', $result, $date );
|
52 |
+
}
|
53 |
+
|
54 |
+
function wpcf7_is_mailbox_list( $mailbox_list ) {
|
55 |
+
if ( ! is_array( $mailbox_list ) ) {
|
56 |
+
$mailbox_text = (string) $mailbox_list;
|
57 |
+
$mailbox_text = wp_unslash( $mailbox_text );
|
58 |
+
|
59 |
+
$mailbox_text = preg_replace( '/\\\\(?:\"|\')/', 'esc-quote',
|
60 |
+
$mailbox_text );
|
61 |
+
|
62 |
+
$mailbox_text = preg_replace( '/(?:\".*?\"|\'.*?\')/', 'quoted-string',
|
63 |
+
$mailbox_text );
|
64 |
+
|
65 |
+
$mailbox_list = explode( ',', $mailbox_text );
|
66 |
+
}
|
67 |
+
|
68 |
+
$addresses = array();
|
69 |
+
|
70 |
+
foreach ( $mailbox_list as $mailbox ) {
|
71 |
+
if ( ! is_string( $mailbox ) ) {
|
72 |
+
return false;
|
73 |
+
}
|
74 |
+
|
75 |
+
$mailbox = trim( $mailbox );
|
76 |
+
|
77 |
+
if ( preg_match( '/<(.+)>$/', $mailbox, $matches ) ) {
|
78 |
+
$addr_spec = $matches[1];
|
79 |
+
} else {
|
80 |
+
$addr_spec = $mailbox;
|
81 |
+
}
|
82 |
+
|
83 |
+
if ( ! wpcf7_is_email( $addr_spec ) ) {
|
84 |
+
return false;
|
85 |
+
}
|
86 |
+
|
87 |
+
$addresses[] = $addr_spec;
|
88 |
+
}
|
89 |
+
|
90 |
+
return $addresses;
|
91 |
+
}
|
92 |
+
|
93 |
+
function wpcf7_is_email_in_domain( $email, $domain ) {
|
94 |
+
$email_list = wpcf7_is_mailbox_list( $email );
|
95 |
+
$domain = strtolower( $domain );
|
96 |
+
|
97 |
+
foreach ( $email_list as $email ) {
|
98 |
+
$email_domain = substr( $email, strrpos( $email, '@' ) + 1 );
|
99 |
+
$email_domain = strtolower( $email_domain );
|
100 |
+
$domain_parts = explode( '.', $domain );
|
101 |
+
|
102 |
+
do {
|
103 |
+
$site_domain = implode( '.', $domain_parts );
|
104 |
+
|
105 |
+
if ( $site_domain == $email_domain ) {
|
106 |
+
continue 2;
|
107 |
+
}
|
108 |
+
|
109 |
+
array_shift( $domain_parts );
|
110 |
+
} while ( $domain_parts );
|
111 |
+
|
112 |
+
return false;
|
113 |
+
}
|
114 |
+
|
115 |
+
return true;
|
116 |
+
}
|
117 |
+
|
118 |
+
function wpcf7_is_email_in_site_domain( $email ) {
|
119 |
+
if ( wpcf7_is_localhost() ) {
|
120 |
+
return true;
|
121 |
+
}
|
122 |
+
|
123 |
+
$site_domain = strtolower( $_SERVER['SERVER_NAME'] );
|
124 |
+
|
125 |
+
if ( preg_match( '/^[0-9.]+$/', $site_domain ) ) { // 123.456.789.012
|
126 |
+
return true;
|
127 |
+
}
|
128 |
+
|
129 |
+
if ( wpcf7_is_email_in_domain( $email, $site_domain ) ) {
|
130 |
+
return true;
|
131 |
+
}
|
132 |
+
|
133 |
+
$home_url = home_url();
|
134 |
+
|
135 |
+
// for interoperability with WordPress MU Domain Mapping plugin
|
136 |
+
if ( is_multisite()
|
137 |
+
and function_exists( 'domain_mapping_siteurl' ) ) {
|
138 |
+
$domain_mapping_siteurl = domain_mapping_siteurl( false );
|
139 |
+
|
140 |
+
if ( $domain_mapping_siteurl ) {
|
141 |
+
$home_url = $domain_mapping_siteurl;
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( preg_match( '%^https?://([^/]+)%', $home_url, $matches ) ) {
|
146 |
+
$site_domain = strtolower( $matches[1] );
|
147 |
+
|
148 |
+
if ( $site_domain != strtolower( $_SERVER['SERVER_NAME'] )
|
149 |
+
and wpcf7_is_email_in_domain( $email, $site_domain ) ) {
|
150 |
+
return true;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
return false;
|
155 |
+
}
|
156 |
+
|
157 |
+
function wpcf7_is_file_path_in_content_dir( $path ) {
|
158 |
+
if ( 0 === strpos( realpath( $path ), realpath( WP_CONTENT_DIR ) ) ) {
|
159 |
+
return true;
|
160 |
+
}
|
161 |
+
|
162 |
+
if ( defined( 'UPLOADS' )
|
163 |
+
and 0 === strpos( realpath( $path ), realpath( ABSPATH . UPLOADS ) ) ) {
|
164 |
+
return true;
|
165 |
+
}
|
166 |
+
|
167 |
+
return false;
|
168 |
+
}
|
license.txt
CHANGED
@@ -1,366 +1,365 @@
|
|
1 |
-
Contact Form 7 WordPress Plugin, 2007-
|
2 |
-
Contact Form 7 is distributed under the terms of the GNU GPL
|
3 |
-
|
4 |
-
This program is free software; you can redistribute it and/or modify
|
5 |
-
it under the terms of the GNU General Public License as published by
|
6 |
-
the Free Software Foundation; either version 2 of the License, or
|
7 |
-
(at your option) any later version.
|
8 |
-
|
9 |
-
This program is distributed in the hope that it will be useful,
|
10 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
-
GNU General Public License for more details.
|
13 |
-
|
14 |
-
You should have received a copy of the GNU General Public License
|
15 |
-
along with this program; if not, write to the Free Software
|
16 |
-
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17 |
-
|
18 |
-
|
19 |
-
Contact Form 7 WordPress Plugin bundles the following third-party resources:
|
20 |
-
|
21 |
-
The official icon designed by Cheung Vong
|
22 |
-
https://contactform7.com/2020/04/08/new-official-logo/
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
freedom to share and change
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
program
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
sections
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
access to copy from
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
of
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
Gnomovision
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
Public License instead of this License.
|
1 |
+
Contact Form 7 WordPress Plugin, 2007-2021 Takayuki Miyoshi
|
2 |
+
Contact Form 7 is distributed under the terms of the GNU GPL
|
3 |
+
|
4 |
+
This program is free software; you can redistribute it and/or modify
|
5 |
+
it under the terms of the GNU General Public License as published by
|
6 |
+
the Free Software Foundation; either version 2 of the License, or
|
7 |
+
(at your option) any later version.
|
8 |
+
|
9 |
+
This program is distributed in the hope that it will be useful,
|
10 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
GNU General Public License for more details.
|
13 |
+
|
14 |
+
You should have received a copy of the GNU General Public License
|
15 |
+
along with this program; if not, write to the Free Software
|
16 |
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17 |
+
|
18 |
+
|
19 |
+
Contact Form 7 WordPress Plugin bundles the following third-party resources:
|
20 |
+
|
21 |
+
The official icon designed by Cheung Vong
|
22 |
+
https://contactform7.com/2020/04/08/new-official-logo/
|
23 |
+
|
24 |
+
|
25 |
+
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
26 |
+
|
27 |
+
GNU GENERAL PUBLIC LICENSE
|
28 |
+
Version 2, June 1991
|
29 |
+
|
30 |
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
31 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
32 |
+
Everyone is permitted to copy and distribute verbatim copies
|
33 |
+
of this license document, but changing it is not allowed.
|
34 |
+
|
35 |
+
Preamble
|
36 |
+
|
37 |
+
The licenses for most software are designed to take away your
|
38 |
+
freedom to share and change it. By contrast, the GNU General Public
|
39 |
+
License is intended to guarantee your freedom to share and change free
|
40 |
+
software--to make sure the software is free for all its users. This
|
41 |
+
General Public License applies to most of the Free Software
|
42 |
+
Foundation's software and to any other program whose authors commit to
|
43 |
+
using it. (Some other Free Software Foundation software is covered by
|
44 |
+
the GNU Lesser General Public License instead.) You can apply it to
|
45 |
+
your programs, too.
|
46 |
+
|
47 |
+
When we speak of free software, we are referring to freedom, not
|
48 |
+
price. Our General Public Licenses are designed to make sure that you
|
49 |
+
have the freedom to distribute copies of free software (and charge for
|
50 |
+
this service if you wish), that you receive source code or can get it
|
51 |
+
if you want it, that you can change the software or use pieces of it
|
52 |
+
in new free programs; and that you know you can do these things.
|
53 |
+
|
54 |
+
To protect your rights, we need to make restrictions that forbid
|
55 |
+
anyone to deny you these rights or to ask you to surrender the rights.
|
56 |
+
These restrictions translate to certain responsibilities for you if you
|
57 |
+
distribute copies of the software, or if you modify it.
|
58 |
+
|
59 |
+
For example, if you distribute copies of such a program, whether
|
60 |
+
gratis or for a fee, you must give the recipients all the rights that
|
61 |
+
you have. You must make sure that they, too, receive or can get the
|
62 |
+
source code. And you must show them these terms so they know their
|
63 |
+
rights.
|
64 |
+
|
65 |
+
We protect your rights with two steps: (1) copyright the software, and
|
66 |
+
(2) offer you this license which gives you legal permission to copy,
|
67 |
+
distribute and/or modify the software.
|
68 |
+
|
69 |
+
Also, for each author's protection and ours, we want to make certain
|
70 |
+
that everyone understands that there is no warranty for this free
|
71 |
+
software. If the software is modified by someone else and passed on, we
|
72 |
+
want its recipients to know that what they have is not the original, so
|
73 |
+
that any problems introduced by others will not reflect on the original
|
74 |
+
authors' reputations.
|
75 |
+
|
76 |
+
Finally, any free program is threatened constantly by software
|
77 |
+
patents. We wish to avoid the danger that redistributors of a free
|
78 |
+
program will individually obtain patent licenses, in effect making the
|
79 |
+
program proprietary. To prevent this, we have made it clear that any
|
80 |
+
patent must be licensed for everyone's free use or not licensed at all.
|
81 |
+
|
82 |
+
The precise terms and conditions for copying, distribution and
|
83 |
+
modification follow.
|
84 |
+
|
85 |
+
GNU GENERAL PUBLIC LICENSE
|
86 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
87 |
+
|
88 |
+
0. This License applies to any program or other work which contains
|
89 |
+
a notice placed by the copyright holder saying it may be distributed
|
90 |
+
under the terms of this General Public License. The "Program", below,
|
91 |
+
refers to any such program or work, and a "work based on the Program"
|
92 |
+
means either the Program or any derivative work under copyright law:
|
93 |
+
that is to say, a work containing the Program or a portion of it,
|
94 |
+
either verbatim or with modifications and/or translated into another
|
95 |
+
language. (Hereinafter, translation is included without limitation in
|
96 |
+
the term "modification".) Each licensee is addressed as "you".
|
97 |
+
|
98 |
+
Activities other than copying, distribution and modification are not
|
99 |
+
covered by this License; they are outside its scope. The act of
|
100 |
+
running the Program is not restricted, and the output from the Program
|
101 |
+
is covered only if its contents constitute a work based on the
|
102 |
+
Program (independent of having been made by running the Program).
|
103 |
+
Whether that is true depends on what the Program does.
|
104 |
+
|
105 |
+
1. You may copy and distribute verbatim copies of the Program's
|
106 |
+
source code as you receive it, in any medium, provided that you
|
107 |
+
conspicuously and appropriately publish on each copy an appropriate
|
108 |
+
copyright notice and disclaimer of warranty; keep intact all the
|
109 |
+
notices that refer to this License and to the absence of any warranty;
|
110 |
+
and give any other recipients of the Program a copy of this License
|
111 |
+
along with the Program.
|
112 |
+
|
113 |
+
You may charge a fee for the physical act of transferring a copy, and
|
114 |
+
you may at your option offer warranty protection in exchange for a fee.
|
115 |
+
|
116 |
+
2. You may modify your copy or copies of the Program or any portion
|
117 |
+
of it, thus forming a work based on the Program, and copy and
|
118 |
+
distribute such modifications or work under the terms of Section 1
|
119 |
+
above, provided that you also meet all of these conditions:
|
120 |
+
|
121 |
+
a) You must cause the modified files to carry prominent notices
|
122 |
+
stating that you changed the files and the date of any change.
|
123 |
+
|
124 |
+
b) You must cause any work that you distribute or publish, that in
|
125 |
+
whole or in part contains or is derived from the Program or any
|
126 |
+
part thereof, to be licensed as a whole at no charge to all third
|
127 |
+
parties under the terms of this License.
|
128 |
+
|
129 |
+
c) If the modified program normally reads commands interactively
|
130 |
+
when run, you must cause it, when started running for such
|
131 |
+
interactive use in the most ordinary way, to print or display an
|
132 |
+
announcement including an appropriate copyright notice and a
|
133 |
+
notice that there is no warranty (or else, saying that you provide
|
134 |
+
a warranty) and that users may redistribute the program under
|
135 |
+
these conditions, and telling the user how to view a copy of this
|
136 |
+
License. (Exception: if the Program itself is interactive but
|
137 |
+
does not normally print such an announcement, your work based on
|
138 |
+
the Program is not required to print an announcement.)
|
139 |
+
|
140 |
+
These requirements apply to the modified work as a whole. If
|
141 |
+
identifiable sections of that work are not derived from the Program,
|
142 |
+
and can be reasonably considered independent and separate works in
|
143 |
+
themselves, then this License, and its terms, do not apply to those
|
144 |
+
sections when you distribute them as separate works. But when you
|
145 |
+
distribute the same sections as part of a whole which is a work based
|
146 |
+
on the Program, the distribution of the whole must be on the terms of
|
147 |
+
this License, whose permissions for other licensees extend to the
|
148 |
+
entire whole, and thus to each and every part regardless of who wrote it.
|
149 |
+
|
150 |
+
Thus, it is not the intent of this section to claim rights or contest
|
151 |
+
your rights to work written entirely by you; rather, the intent is to
|
152 |
+
exercise the right to control the distribution of derivative or
|
153 |
+
collective works based on the Program.
|
154 |
+
|
155 |
+
In addition, mere aggregation of another work not based on the Program
|
156 |
+
with the Program (or with a work based on the Program) on a volume of
|
157 |
+
a storage or distribution medium does not bring the other work under
|
158 |
+
the scope of this License.
|
159 |
+
|
160 |
+
3. You may copy and distribute the Program (or a work based on it,
|
161 |
+
under Section 2) in object code or executable form under the terms of
|
162 |
+
Sections 1 and 2 above provided that you also do one of the following:
|
163 |
+
|
164 |
+
a) Accompany it with the complete corresponding machine-readable
|
165 |
+
source code, which must be distributed under the terms of Sections
|
166 |
+
1 and 2 above on a medium customarily used for software interchange; or,
|
167 |
+
|
168 |
+
b) Accompany it with a written offer, valid for at least three
|
169 |
+
years, to give any third party, for a charge no more than your
|
170 |
+
cost of physically performing source distribution, a complete
|
171 |
+
machine-readable copy of the corresponding source code, to be
|
172 |
+
distributed under the terms of Sections 1 and 2 above on a medium
|
173 |
+
customarily used for software interchange; or,
|
174 |
+
|
175 |
+
c) Accompany it with the information you received as to the offer
|
176 |
+
to distribute corresponding source code. (This alternative is
|
177 |
+
allowed only for noncommercial distribution and only if you
|
178 |
+
received the program in object code or executable form with such
|
179 |
+
an offer, in accord with Subsection b above.)
|
180 |
+
|
181 |
+
The source code for a work means the preferred form of the work for
|
182 |
+
making modifications to it. For an executable work, complete source
|
183 |
+
code means all the source code for all modules it contains, plus any
|
184 |
+
associated interface definition files, plus the scripts used to
|
185 |
+
control compilation and installation of the executable. However, as a
|
186 |
+
special exception, the source code distributed need not include
|
187 |
+
anything that is normally distributed (in either source or binary
|
188 |
+
form) with the major components (compiler, kernel, and so on) of the
|
189 |
+
operating system on which the executable runs, unless that component
|
190 |
+
itself accompanies the executable.
|
191 |
+
|
192 |
+
If distribution of executable or object code is made by offering
|
193 |
+
access to copy from a designated place, then offering equivalent
|
194 |
+
access to copy the source code from the same place counts as
|
195 |
+
distribution of the source code, even though third parties are not
|
196 |
+
compelled to copy the source along with the object code.
|
197 |
+
|
198 |
+
4. You may not copy, modify, sublicense, or distribute the Program
|
199 |
+
except as expressly provided under this License. Any attempt
|
200 |
+
otherwise to copy, modify, sublicense or distribute the Program is
|
201 |
+
void, and will automatically terminate your rights under this License.
|
202 |
+
However, parties who have received copies, or rights, from you under
|
203 |
+
this License will not have their licenses terminated so long as such
|
204 |
+
parties remain in full compliance.
|
205 |
+
|
206 |
+
5. You are not required to accept this License, since you have not
|
207 |
+
signed it. However, nothing else grants you permission to modify or
|
208 |
+
distribute the Program or its derivative works. These actions are
|
209 |
+
prohibited by law if you do not accept this License. Therefore, by
|
210 |
+
modifying or distributing the Program (or any work based on the
|
211 |
+
Program), you indicate your acceptance of this License to do so, and
|
212 |
+
all its terms and conditions for copying, distributing or modifying
|
213 |
+
the Program or works based on it.
|
214 |
+
|
215 |
+
6. Each time you redistribute the Program (or any work based on the
|
216 |
+
Program), the recipient automatically receives a license from the
|
217 |
+
original licensor to copy, distribute or modify the Program subject to
|
218 |
+
these terms and conditions. You may not impose any further
|
219 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
220 |
+
You are not responsible for enforcing compliance by third parties to
|
221 |
+
this License.
|
222 |
+
|
223 |
+
7. If, as a consequence of a court judgment or allegation of patent
|
224 |
+
infringement or for any other reason (not limited to patent issues),
|
225 |
+
conditions are imposed on you (whether by court order, agreement or
|
226 |
+
otherwise) that contradict the conditions of this License, they do not
|
227 |
+
excuse you from the conditions of this License. If you cannot
|
228 |
+
distribute so as to satisfy simultaneously your obligations under this
|
229 |
+
License and any other pertinent obligations, then as a consequence you
|
230 |
+
may not distribute the Program at all. For example, if a patent
|
231 |
+
license would not permit royalty-free redistribution of the Program by
|
232 |
+
all those who receive copies directly or indirectly through you, then
|
233 |
+
the only way you could satisfy both it and this License would be to
|
234 |
+
refrain entirely from distribution of the Program.
|
235 |
+
|
236 |
+
If any portion of this section is held invalid or unenforceable under
|
237 |
+
any particular circumstance, the balance of the section is intended to
|
238 |
+
apply and the section as a whole is intended to apply in other
|
239 |
+
circumstances.
|
240 |
+
|
241 |
+
It is not the purpose of this section to induce you to infringe any
|
242 |
+
patents or other property right claims or to contest validity of any
|
243 |
+
such claims; this section has the sole purpose of protecting the
|
244 |
+
integrity of the free software distribution system, which is
|
245 |
+
implemented by public license practices. Many people have made
|
246 |
+
generous contributions to the wide range of software distributed
|
247 |
+
through that system in reliance on consistent application of that
|
248 |
+
system; it is up to the author/donor to decide if he or she is willing
|
249 |
+
to distribute software through any other system and a licensee cannot
|
250 |
+
impose that choice.
|
251 |
+
|
252 |
+
This section is intended to make thoroughly clear what is believed to
|
253 |
+
be a consequence of the rest of this License.
|
254 |
+
|
255 |
+
8. If the distribution and/or use of the Program is restricted in
|
256 |
+
certain countries either by patents or by copyrighted interfaces, the
|
257 |
+
original copyright holder who places the Program under this License
|
258 |
+
may add an explicit geographical distribution limitation excluding
|
259 |
+
those countries, so that distribution is permitted only in or among
|
260 |
+
countries not thus excluded. In such case, this License incorporates
|
261 |
+
the limitation as if written in the body of this License.
|
262 |
+
|
263 |
+
9. The Free Software Foundation may publish revised and/or new versions
|
264 |
+
of the General Public License from time to time. Such new versions will
|
265 |
+
be similar in spirit to the present version, but may differ in detail to
|
266 |
+
address new problems or concerns.
|
267 |
+
|
268 |
+
Each version is given a distinguishing version number. If the Program
|
269 |
+
specifies a version number of this License which applies to it and "any
|
270 |
+
later version", you have the option of following the terms and conditions
|
271 |
+
either of that version or of any later version published by the Free
|
272 |
+
Software Foundation. If the Program does not specify a version number of
|
273 |
+
this License, you may choose any version ever published by the Free Software
|
274 |
+
Foundation.
|
275 |
+
|
276 |
+
10. If you wish to incorporate parts of the Program into other free
|
277 |
+
programs whose distribution conditions are different, write to the author
|
278 |
+
to ask for permission. For software which is copyrighted by the Free
|
279 |
+
Software Foundation, write to the Free Software Foundation; we sometimes
|
280 |
+
make exceptions for this. Our decision will be guided by the two goals
|
281 |
+
of preserving the free status of all derivatives of our free software and
|
282 |
+
of promoting the sharing and reuse of software generally.
|
283 |
+
|
284 |
+
NO WARRANTY
|
285 |
+
|
286 |
+
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
287 |
+
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
288 |
+
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
289 |
+
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
290 |
+
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
291 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
292 |
+
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
293 |
+
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
294 |
+
REPAIR OR CORRECTION.
|
295 |
+
|
296 |
+
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
297 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
298 |
+
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
299 |
+
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
300 |
+
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
301 |
+
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
302 |
+
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
303 |
+
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
304 |
+
POSSIBILITY OF SUCH DAMAGES.
|
305 |
+
|
306 |
+
END OF TERMS AND CONDITIONS
|
307 |
+
|
308 |
+
How to Apply These Terms to Your New Programs
|
309 |
+
|
310 |
+
If you develop a new program, and you want it to be of the greatest
|
311 |
+
possible use to the public, the best way to achieve this is to make it
|
312 |
+
free software which everyone can redistribute and change under these terms.
|
313 |
+
|
314 |
+
To do so, attach the following notices to the program. It is safest
|
315 |
+
to attach them to the start of each source file to most effectively
|
316 |
+
convey the exclusion of warranty; and each file should have at least
|
317 |
+
the "copyright" line and a pointer to where the full notice is found.
|
318 |
+
|
319 |
+
<one line to give the program's name and a brief idea of what it does.>
|
320 |
+
Copyright (C) <year> <name of author>
|
321 |
+
|
322 |
+
This program is free software; you can redistribute it and/or modify
|
323 |
+
it under the terms of the GNU General Public License as published by
|
324 |
+
the Free Software Foundation; either version 2 of the License, or
|
325 |
+
(at your option) any later version.
|
326 |
+
|
327 |
+
This program is distributed in the hope that it will be useful,
|
328 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
329 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
330 |
+
GNU General Public License for more details.
|
331 |
+
|
332 |
+
You should have received a copy of the GNU General Public License along
|
333 |
+
with this program; if not, write to the Free Software Foundation, Inc.,
|
334 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
335 |
+
|
336 |
+
Also add information on how to contact you by electronic and paper mail.
|
337 |
+
|
338 |
+
If the program is interactive, make it output a short notice like this
|
339 |
+
when it starts in an interactive mode:
|
340 |
+
|
341 |
+
Gnomovision version 69, Copyright (C) year name of author
|
342 |
+
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
343 |
+
This is free software, and you are welcome to redistribute it
|
344 |
+
under certain conditions; type `show c' for details.
|
345 |
+
|
346 |
+
The hypothetical commands `show w' and `show c' should show the appropriate
|
347 |
+
parts of the General Public License. Of course, the commands you use may
|
348 |
+
be called something other than `show w' and `show c'; they could even be
|
349 |
+
mouse-clicks or menu items--whatever suits your program.
|
350 |
+
|
351 |
+
You should also get your employer (if you work as a programmer) or your
|
352 |
+
school, if any, to sign a "copyright disclaimer" for the program, if
|
353 |
+
necessary. Here is a sample; alter the names:
|
354 |
+
|
355 |
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
356 |
+
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
357 |
+
|
358 |
+
<signature of Ty Coon>, 1 April 1989
|
359 |
+
Ty Coon, President of Vice
|
360 |
+
|
361 |
+
This General Public License does not permit incorporating your program into
|
362 |
+
proprietary programs. If your program is a subroutine library, you may
|
363 |
+
consider it more useful to permit linking proprietary applications with the
|
364 |
+
library. If this is what you want to do, use the GNU Lesser General
|
365 |
+
Public License instead of this License.
|
|
load.php
CHANGED
@@ -1,18 +1,21 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
require_once WPCF7_PLUGIN_DIR . '/includes/functions.php';
|
4 |
require_once WPCF7_PLUGIN_DIR . '/includes/l10n.php';
|
|
|
|
|
5 |
require_once WPCF7_PLUGIN_DIR . '/includes/formatting.php';
|
6 |
require_once WPCF7_PLUGIN_DIR . '/includes/pipe.php';
|
7 |
require_once WPCF7_PLUGIN_DIR . '/includes/form-tag.php';
|
8 |
require_once WPCF7_PLUGIN_DIR . '/includes/form-tags-manager.php';
|
9 |
require_once WPCF7_PLUGIN_DIR . '/includes/shortcodes.php';
|
10 |
-
require_once WPCF7_PLUGIN_DIR . '/includes/
|
11 |
require_once WPCF7_PLUGIN_DIR . '/includes/contact-form-template.php';
|
12 |
require_once WPCF7_PLUGIN_DIR . '/includes/contact-form.php';
|
13 |
-
require_once WPCF7_PLUGIN_DIR . '/includes/contact-form-functions.php';
|
14 |
require_once WPCF7_PLUGIN_DIR . '/includes/mail.php';
|
15 |
require_once WPCF7_PLUGIN_DIR . '/includes/special-mail-tags.php';
|
|
|
|
|
|
|
16 |
require_once WPCF7_PLUGIN_DIR . '/includes/submission.php';
|
17 |
require_once WPCF7_PLUGIN_DIR . '/includes/upgrade.php';
|
18 |
require_once WPCF7_PLUGIN_DIR . '/includes/integration.php';
|
@@ -46,6 +49,7 @@ class WPCF7 {
|
|
46 |
self::load_module( 'recaptcha' );
|
47 |
self::load_module( 'response' );
|
48 |
self::load_module( 'select' );
|
|
|
49 |
self::load_module( 'submit' );
|
50 |
self::load_module( 'text' );
|
51 |
self::load_module( 'textarea' );
|
1 |
<?php
|
2 |
|
|
|
3 |
require_once WPCF7_PLUGIN_DIR . '/includes/l10n.php';
|
4 |
+
require_once WPCF7_PLUGIN_DIR . '/includes/capabilities.php';
|
5 |
+
require_once WPCF7_PLUGIN_DIR . '/includes/functions.php';
|
6 |
require_once WPCF7_PLUGIN_DIR . '/includes/formatting.php';
|
7 |
require_once WPCF7_PLUGIN_DIR . '/includes/pipe.php';
|
8 |
require_once WPCF7_PLUGIN_DIR . '/includes/form-tag.php';
|
9 |
require_once WPCF7_PLUGIN_DIR . '/includes/form-tags-manager.php';
|
10 |
require_once WPCF7_PLUGIN_DIR . '/includes/shortcodes.php';
|
11 |
+
require_once WPCF7_PLUGIN_DIR . '/includes/contact-form-functions.php';
|
12 |
require_once WPCF7_PLUGIN_DIR . '/includes/contact-form-template.php';
|
13 |
require_once WPCF7_PLUGIN_DIR . '/includes/contact-form.php';
|
|
|
14 |
require_once WPCF7_PLUGIN_DIR . '/includes/mail.php';
|
15 |
require_once WPCF7_PLUGIN_DIR . '/includes/special-mail-tags.php';
|
16 |
+
require_once WPCF7_PLUGIN_DIR . '/includes/file.php';
|
17 |
+
require_once WPCF7_PLUGIN_DIR . '/includes/validation-functions.php';
|
18 |
+
require_once WPCF7_PLUGIN_DIR . '/includes/validation.php';
|
19 |
require_once WPCF7_PLUGIN_DIR . '/includes/submission.php';
|
20 |
require_once WPCF7_PLUGIN_DIR . '/includes/upgrade.php';
|
21 |
require_once WPCF7_PLUGIN_DIR . '/includes/integration.php';
|
49 |
self::load_module( 'recaptcha' );
|
50 |
self::load_module( 'response' );
|
51 |
self::load_module( 'select' );
|
52 |
+
self::load_module( 'sendinblue' );
|
53 |
self::load_module( 'submit' );
|
54 |
self::load_module( 'text' );
|
55 |
self::load_module( 'textarea' );
|
modules/constant-contact.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
add_action( 'wpcf7_init', 'wpcf7_constant_contact_register_service',
|
4 |
|
5 |
function wpcf7_constant_contact_register_service() {
|
6 |
$integration = WPCF7_Integration::get_instance();
|
@@ -459,20 +459,20 @@ class WPCF7_ConstantContact extends WPCF7_Service_OAuth2 {
|
|
459 |
switch ( $message ) {
|
460 |
case 'success':
|
461 |
echo sprintf(
|
462 |
-
'<div class="notice notice-success
|
463 |
esc_html( __( "Connection established.", 'contact-form-7' ) )
|
464 |
);
|
465 |
break;
|
466 |
case 'failed':
|
467 |
echo sprintf(
|
468 |
-
'<div class="notice notice-error
|
469 |
esc_html( __( "Error", 'contact-form-7' ) ),
|
470 |
esc_html( __( "Failed to establish connection. Please double-check your configuration.", 'contact-form-7' ) )
|
471 |
);
|
472 |
break;
|
473 |
case 'updated':
|
474 |
echo sprintf(
|
475 |
-
'<div class="notice notice-success
|
476 |
esc_html( __( "Configuration updated.", 'contact-form-7' ) )
|
477 |
);
|
478 |
break;
|
@@ -536,7 +536,7 @@ class WPCF7_ConstantContact extends WPCF7_Service_OAuth2 {
|
|
536 |
<th scope="row"><label for="client_secret"><?php echo esc_html( __( 'App Secret', 'contact-form-7' ) ); ?></label></th>
|
537 |
<td><?php
|
538 |
if ( $this->is_active() ) {
|
539 |
-
echo esc_html( wpcf7_mask_password( $this->client_secret ) );
|
540 |
echo sprintf(
|
541 |
'<input type="hidden" value="%1$s" id="client_secret" name="client_secret" />',
|
542 |
esc_attr( $this->client_secret )
|
1 |
<?php
|
2 |
|
3 |
+
add_action( 'wpcf7_init', 'wpcf7_constant_contact_register_service', 20, 0 );
|
4 |
|
5 |
function wpcf7_constant_contact_register_service() {
|
6 |
$integration = WPCF7_Integration::get_instance();
|
459 |
switch ( $message ) {
|
460 |
case 'success':
|
461 |
echo sprintf(
|
462 |
+
'<div class="notice notice-success"><p>%s</p></div>',
|
463 |
esc_html( __( "Connection established.", 'contact-form-7' ) )
|
464 |
);
|
465 |
break;
|
466 |
case 'failed':
|
467 |
echo sprintf(
|
468 |
+
'<div class="notice notice-error"><p><strong>%1$s</strong>: %2$s</p></div>',
|
469 |
esc_html( __( "Error", 'contact-form-7' ) ),
|
470 |
esc_html( __( "Failed to establish connection. Please double-check your configuration.", 'contact-form-7' ) )
|
471 |
);
|
472 |
break;
|
473 |
case 'updated':
|
474 |
echo sprintf(
|
475 |
+
'<div class="notice notice-success"><p>%s</p></div>',
|
476 |
esc_html( __( "Configuration updated.", 'contact-form-7' ) )
|
477 |
);
|
478 |
break;
|
536 |
<th scope="row"><label for="client_secret"><?php echo esc_html( __( 'App Secret', 'contact-form-7' ) ); ?></label></th>
|
537 |
<td><?php
|
538 |
if ( $this->is_active() ) {
|
539 |
+
echo esc_html( wpcf7_mask_password( $this->client_secret, 4, 4 ) );
|
540 |
echo sprintf(
|
541 |
'<input type="hidden" value="%1$s" id="client_secret" name="client_secret" />',
|
542 |
esc_attr( $this->client_secret )
|
modules/disallowed-list.php
CHANGED
@@ -49,7 +49,7 @@ function wpcf7_disallowed_list( $spam, $submission ) {
|
|
49 |
}
|
50 |
|
51 |
function wpcf7_check_disallowed_list( $target ) {
|
52 |
-
$mod_keys = trim( get_option( '
|
53 |
|
54 |
if ( '' === $mod_keys ) {
|
55 |
return false;
|
49 |
}
|
50 |
|
51 |
function wpcf7_check_disallowed_list( $target ) {
|
52 |
+
$mod_keys = trim( get_option( 'disallowed_keys' ) );
|
53 |
|
54 |
if ( '' === $mod_keys ) {
|
55 |
return false;
|
modules/file.php
CHANGED
@@ -12,6 +12,7 @@ function wpcf7_add_form_tag_file() {
|
|
12 |
'wpcf7_file_form_tag_handler',
|
13 |
array(
|
14 |
'name-attr' => true,
|
|
|
15 |
)
|
16 |
);
|
17 |
}
|
@@ -66,100 +67,20 @@ function wpcf7_file_form_tag_handler( $tag ) {
|
|
66 |
}
|
67 |
|
68 |
|
69 |
-
/* Encode type filter */
|
70 |
-
|
71 |
-
add_filter( 'wpcf7_form_enctype', 'wpcf7_file_form_enctype_filter', 10, 1 );
|
72 |
-
|
73 |
-
function wpcf7_file_form_enctype_filter( $enctype ) {
|
74 |
-
$multipart = (bool) wpcf7_scan_form_tags(
|
75 |
-
array( 'type' => array( 'file', 'file*' ) )
|
76 |
-
);
|
77 |
-
|
78 |
-
if ( $multipart ) {
|
79 |
-
$enctype = 'multipart/form-data';
|
80 |
-
}
|
81 |
-
|
82 |
-
return $enctype;
|
83 |
-
}
|
84 |
-
|
85 |
-
|
86 |
/* Validation + upload handling filter */
|
87 |
|
88 |
-
add_filter( 'wpcf7_validate_file', 'wpcf7_file_validation_filter', 10,
|
89 |
-
add_filter( 'wpcf7_validate_file*', 'wpcf7_file_validation_filter', 10,
|
90 |
-
|
91 |
-
function wpcf7_file_validation_filter( $result, $tag ) {
|
92 |
-
$name = $tag->name;
|
93 |
-
$id = $tag->get_id_option();
|
94 |
-
|
95 |
-
$file = isset( $_FILES[$name] ) ? $_FILES[$name] : null;
|
96 |
-
|
97 |
-
if ( ! empty( $file['error'] ) and UPLOAD_ERR_NO_FILE !== $file['error'] ) {
|
98 |
-
$result->invalidate( $tag, wpcf7_get_message( 'upload_failed_php_error' ) );
|
99 |
-
return $result;
|
100 |
-
}
|
101 |
-
|
102 |
-
if ( empty( $file['tmp_name'] ) and $tag->is_required() ) {
|
103 |
-
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
104 |
-
return $result;
|
105 |
-
}
|
106 |
-
|
107 |
-
if ( empty( $file['tmp_name'] )
|
108 |
-
or ! is_uploaded_file( $file['tmp_name'] ) ) {
|
109 |
-
return $result;
|
110 |
-
}
|
111 |
-
|
112 |
-
/* File type validation */
|
113 |
-
|
114 |
-
$file_type_pattern = wpcf7_acceptable_filetypes(
|
115 |
-
$tag->get_option( 'filetypes' ), 'regex'
|
116 |
-
);
|
117 |
-
|
118 |
-
$file_type_pattern = '/\.(' . $file_type_pattern . ')$/i';
|
119 |
-
|
120 |
-
if ( empty( $file['name'] )
|
121 |
-
or ! preg_match( $file_type_pattern, $file['name'] ) ) {
|
122 |
-
$result->invalidate( $tag,
|
123 |
-
wpcf7_get_message( 'upload_file_type_invalid' )
|
124 |
-
);
|
125 |
-
|
126 |
-
return $result;
|
127 |
-
}
|
128 |
-
|
129 |
-
/* File size validation */
|
130 |
-
|
131 |
-
$allowed_size = $tag->get_limit_option();
|
132 |
-
|
133 |
-
if ( ! empty( $file['size'] ) and $allowed_size < $file['size'] ) {
|
134 |
-
$result->invalidate( $tag, wpcf7_get_message( 'upload_file_too_large' ) );
|
135 |
-
return $result;
|
136 |
-
}
|
137 |
-
|
138 |
-
wpcf7_init_uploads(); // Confirm upload dir
|
139 |
-
$uploads_dir = wpcf7_upload_tmp_dir();
|
140 |
-
$uploads_dir = wpcf7_maybe_add_random_dir( $uploads_dir );
|
141 |
|
142 |
-
|
143 |
-
$
|
144 |
-
$filename = wpcf7_antiscript_file_name( $filename );
|
145 |
-
|
146 |
-
$filename = apply_filters( 'wpcf7_upload_file_name', $filename,
|
147 |
-
$file['name'], $tag
|
148 |
-
);
|
149 |
-
|
150 |
-
$filename = wp_unique_filename( $uploads_dir, $filename );
|
151 |
-
$new_file = path_join( $uploads_dir, $filename );
|
152 |
-
|
153 |
-
if ( false === @move_uploaded_file( $file['tmp_name'], $new_file ) ) {
|
154 |
-
$result->invalidate( $tag, wpcf7_get_message( 'upload_failed' ) );
|
155 |
-
return $result;
|
156 |
-
}
|
157 |
|
158 |
-
|
159 |
-
|
160 |
|
161 |
-
|
162 |
-
|
|
|
163 |
}
|
164 |
|
165 |
return $result;
|
@@ -174,42 +95,16 @@ function wpcf7_file_mail_tag( $replaced, $submitted, $html, $mail_tag ) {
|
|
174 |
$name = $mail_tag->field_name();
|
175 |
|
176 |
if ( ! empty( $uploaded_files[$name] ) ) {
|
177 |
-
$
|
|
|
|
|
|
|
178 |
}
|
179 |
|
180 |
return $replaced;
|
181 |
}
|
182 |
|
183 |
|
184 |
-
/* Messages */
|
185 |
-
|
186 |
-
add_filter( 'wpcf7_messages', 'wpcf7_file_messages', 10, 1 );
|
187 |
-
|
188 |
-
function wpcf7_file_messages( $messages ) {
|
189 |
-
return array_merge( $messages, array(
|
190 |
-
'upload_failed' => array(
|
191 |
-
'description' => __( "Uploading a file fails for any reason", 'contact-form-7' ),
|
192 |
-
'default' => __( "There was an unknown error uploading the file.", 'contact-form-7' )
|
193 |
-
),
|
194 |
-
|
195 |
-
'upload_file_type_invalid' => array(
|
196 |
-
'description' => __( "Uploaded file is not allowed for file type", 'contact-form-7' ),
|
197 |
-
'default' => __( "You are not allowed to upload files of this type.", 'contact-form-7' )
|
198 |
-
),
|
199 |
-
|
200 |
-
'upload_file_too_large' => array(
|
201 |
-
'description' => __( "Uploaded file is too large", 'contact-form-7' ),
|
202 |
-
'default' => __( "The file is too big.", 'contact-form-7' )
|
203 |
-
),
|
204 |
-
|
205 |
-
'upload_failed_php_error' => array(
|
206 |
-
'description' => __( "Uploading a file fails for PHP error", 'contact-form-7' ),
|
207 |
-
'default' => __( "There was an error uploading the file.", 'contact-form-7' )
|
208 |
-
)
|
209 |
-
) );
|
210 |
-
}
|
211 |
-
|
212 |
-
|
213 |
/* Tag generator */
|
214 |
|
215 |
add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_file', 50, 0 );
|
@@ -288,190 +183,3 @@ function wpcf7_tag_generator_file( $contact_form, $args = '' ) {
|
|
288 |
</div>
|
289 |
<?php
|
290 |
}
|
291 |
-
|
292 |
-
|
293 |
-
/* Warning message */
|
294 |
-
|
295 |
-
add_action( 'wpcf7_admin_warnings',
|
296 |
-
'wpcf7_file_display_warning_message', 10, 3 );
|
297 |
-
|
298 |
-
function wpcf7_file_display_warning_message( $page, $action, $object ) {
|
299 |
-
if ( $object instanceof WPCF7_ContactForm ) {
|
300 |
-
$contact_form = $object;
|
301 |
-
} else {
|
302 |
-
return;
|
303 |
-
}
|
304 |
-
|
305 |
-
$has_tags = (bool) $contact_form->scan_form_tags(
|
306 |
-
array( 'type' => array( 'file', 'file*' ) ) );
|
307 |
-
|
308 |
-
if ( ! $has_tags ) {
|
309 |
-
return;
|
310 |
-
}
|
311 |
-
|
312 |
-
$uploads_dir = wpcf7_upload_tmp_dir();
|
313 |
-
wpcf7_init_uploads();
|
314 |
-
|
315 |
-
if ( ! is_dir( $uploads_dir )
|
316 |
-
or ! wp_is_writable( $uploads_dir ) ) {
|
317 |
-
$message = sprintf( __( 'This contact form contains file uploading fields, but the temporary folder for the files (%s) does not exist or is not writable. You can create the folder or change its permission manually.', 'contact-form-7' ), $uploads_dir );
|
318 |
-
|
319 |
-
echo sprintf( '<div class="notice notice-warning"><p>%s</p></div>',
|
320 |
-
esc_html( $message ) );
|
321 |
-
}
|
322 |
-
}
|
323 |
-
|
324 |
-
|
325 |
-
/* File uploading functions */
|
326 |
-
|
327 |
-
function wpcf7_acceptable_filetypes( $types = 'default', $format = 'regex' ) {
|
328 |
-
if ( 'default' === $types
|
329 |
-
or empty( $types ) ) {
|
330 |
-
$types = array(
|
331 |
-
'jpg',
|
332 |
-
'jpeg',
|
333 |
-
'png',
|
334 |
-
'gif',
|
335 |
-
'pdf',
|
336 |
-
'doc',
|
337 |
-
'docx',
|
338 |
-
'ppt',
|
339 |
-
'pptx',
|
340 |
-
'odt',
|
341 |
-
'avi',
|
342 |
-
'ogg',
|
343 |
-
'm4a',
|
344 |
-
'mov',
|
345 |
-
'mp3',
|
346 |
-
'mp4',
|
347 |
-
'mpg',
|
348 |
-
'wav',
|
349 |
-
'wmv',
|
350 |
-
);
|
351 |
-
} else {
|
352 |
-
$types_tmp = (array) $types;
|
353 |
-
$types = array();
|
354 |
-
|
355 |
-
foreach ( $types_tmp as $val ) {
|
356 |
-
if ( is_string( $val ) ) {
|
357 |
-
$val = preg_split( '/[\s|,]+/', $val );
|
358 |
-
}
|
359 |
-
|
360 |
-
$types = array_merge( $types, (array) $val );
|
361 |
-
}
|
362 |
-
}
|
363 |
-
|
364 |
-
$types = array_unique( array_filter( $types ) );
|
365 |
-
|
366 |
-
$output = '';
|
367 |
-
|
368 |
-
foreach ( $types as $type ) {
|
369 |
-
$type = trim( $type, ' ,.|' );
|
370 |
-
$type = str_replace(
|
371 |
-
array( '.', '+', '*', '?' ),
|
372 |
-
array( '\.', '\+', '\*', '\?' ),
|
373 |
-
$type );
|
374 |
-
|
375 |
-
if ( '' === $type ) {
|
376 |
-
continue;
|
377 |
-
}
|
378 |
-
|
379 |
-
if ( 'attr' === $format
|
380 |
-
or 'attribute' === $format ) {
|
381 |
-
$output .= sprintf( '.%s', $type );
|
382 |
-
$output .= ',';
|
383 |
-
} else {
|
384 |
-
$output .= $type;
|
385 |
-
$output .= '|';
|
386 |
-
}
|
387 |
-
}
|
388 |
-
|
389 |
-
return trim( $output, ' ,|' );
|
390 |
-
}
|
391 |
-
|
392 |
-
function wpcf7_init_uploads() {
|
393 |
-
$dir = wpcf7_upload_tmp_dir();
|
394 |
-
wp_mkdir_p( $dir );
|
395 |
-
|
396 |
-
$htaccess_file = path_join( $dir, '.htaccess' );
|
397 |
-
|
398 |
-
if ( file_exists( $htaccess_file ) ) {
|
399 |
-
return;
|
400 |
-
}
|
401 |
-
|
402 |
-
if ( $handle = fopen( $htaccess_file, 'w' ) ) {
|
403 |
-
fwrite( $handle, "Deny from all\n" );
|
404 |
-
fclose( $handle );
|
405 |
-
}
|
406 |
-
}
|
407 |
-
|
408 |
-
function wpcf7_maybe_add_random_dir( $dir ) {
|
409 |
-
do {
|
410 |
-
$rand_max = mt_getrandmax();
|
411 |
-
$rand = zeroise( mt_rand( 0, $rand_max ), strlen( $rand_max ) );
|
412 |
-
$dir_new = path_join( $dir, $rand );
|
413 |
-
} while ( file_exists( $dir_new ) );
|
414 |
-
|
415 |
-
if ( wp_mkdir_p( $dir_new ) ) {
|
416 |
-
return $dir_new;
|
417 |
-
}
|
418 |
-
|
419 |
-
return $dir;
|
420 |
-
}
|
421 |
-
|
422 |
-
function wpcf7_upload_tmp_dir() {
|
423 |
-
if ( defined( 'WPCF7_UPLOADS_TMP_DIR' ) ) {
|
424 |
-
return WPCF7_UPLOADS_TMP_DIR;
|
425 |
-
} else {
|
426 |
-
return path_join( wpcf7_upload_dir( 'dir' ), 'wpcf7_uploads' );
|
427 |
-
}
|
428 |
-
}
|
429 |
-
|
430 |
-
add_action( 'template_redirect', 'wpcf7_cleanup_upload_files', 20, 0 );
|
431 |
-
|
432 |
-
function wpcf7_cleanup_upload_files( $seconds = 60, $max = 100 ) {
|
433 |
-
if ( is_admin()
|
434 |
-
or 'GET' != $_SERVER['REQUEST_METHOD']
|
435 |
-
or is_robots()
|
436 |
-
or is_feed()
|
437 |
-
or is_trackback() ) {
|
438 |
-
return;
|
439 |
-
}
|
440 |
-
|
441 |
-
$dir = trailingslashit( wpcf7_upload_tmp_dir() );
|
442 |
-
|
443 |
-
if ( ! is_dir( $dir )
|
444 |
-
or ! is_readable( $dir )
|
445 |
-
or ! wp_is_writable( $dir ) ) {
|
446 |
-
return;
|
447 |
-
}
|
448 |
-
|
449 |
-
$seconds = absint( $seconds );
|
450 |
-
$max = absint( $max );
|
451 |
-
$count = 0;
|
452 |
-
|
453 |
-
if ( $handle = opendir( $dir ) ) {
|
454 |
-
while ( false !== ( $file = readdir( $handle ) ) ) {
|
455 |
-
if ( '.' == $file
|
456 |
-
or '..' == $file
|
457 |
-
or '.htaccess' == $file ) {
|
458 |
-
continue;
|
459 |
-
}
|
460 |
-
|
461 |
-
$mtime = @filemtime( path_join( $dir, $file ) );
|
462 |
-
|
463 |
-
if ( $mtime and time() < $mtime + $seconds ) { // less than $seconds old
|
464 |
-
continue;
|
465 |
-
}
|
466 |
-
|
467 |
-
wpcf7_rmdir_p( path_join( $dir, $file ) );
|
468 |
-
$count += 1;
|
469 |
-
|
470 |
-
if ( $max <= $count ) {
|
471 |
-
break;
|
472 |
-
}
|
473 |
-
}
|
474 |
-
|
475 |
-
closedir( $handle );
|
476 |
-
}
|
477 |
-
}
|
12 |
'wpcf7_file_form_tag_handler',
|
13 |
array(
|
14 |
'name-attr' => true,
|
15 |
+
'file-uploading' => true,
|
16 |
)
|
17 |
);
|
18 |
}
|
67 |
}
|
68 |
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
/* Validation + upload handling filter */
|
71 |
|
72 |
+
add_filter( 'wpcf7_validate_file', 'wpcf7_file_validation_filter', 10, 3 );
|
73 |
+
add_filter( 'wpcf7_validate_file*', 'wpcf7_file_validation_filter', 10, 3 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
+
function wpcf7_file_validation_filter( $result, $tag, $args ) {
|
76 |
+
$args = wp_parse_args( $args, array() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
+
if ( isset( $args['uploaded_files'] ) ) {
|
79 |
+
$maybe_error = $args['uploaded_files'];
|
80 |
|
81 |
+
if ( is_wp_error( $maybe_error ) ) {
|
82 |
+
$result->invalidate( $tag, $maybe_error->get_error_message() );
|
83 |
+
}
|
84 |
}
|
85 |
|
86 |
return $result;
|
95 |
$name = $mail_tag->field_name();
|
96 |
|
97 |
if ( ! empty( $uploaded_files[$name] ) ) {
|
98 |
+
$paths = (array) $uploaded_files[$name];
|
99 |
+
$paths = array_map( 'wp_basename', $paths );
|
100 |
+
|
101 |
+
$replaced = wpcf7_flat_join( $paths );
|
102 |
}
|
103 |
|
104 |
return $replaced;
|
105 |
}
|
106 |
|
107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
/* Tag generator */
|
109 |
|
110 |
add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_file', 50, 0 );
|
183 |
</div>
|
184 |
<?php
|
185 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
modules/recaptcha/index.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}},function(t,e,n){var r=n(4),o=n(5),c=n(6),i=n(7);t.exports=function(t){return r(t)||o(t)||c(t)||i()}},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){"use strict";n.r(e);var r=n(1),o=n.n(r),c=n(2),i=n.n(c);function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}document.addEventListener("DOMContentLoaded",(function(t){var e;wpcf7_recaptcha=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?a(Object(n),!0).forEach((function(e){i()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({},null!==(e=wpcf7_recaptcha)&&void 0!==e?e:{});var n=wpcf7_recaptcha.sitekey,r=wpcf7_recaptcha.actions,c=r.homepage,u=r.contactform,f=function(t){var e=t.action,r=t.func,c=t.params;grecaptcha.execute(n,{action:e}).then((function(t){var n=new CustomEvent("wpcf7grecaptchaexecuted",{detail:{action:e,token:t}});document.dispatchEvent(n)})).then((function(){"function"==typeof r&&r.apply(void 0,o()(c))})).catch((function(t){return console.error(t)}))};if(grecaptcha.ready((function(){f({action:c})})),document.addEventListener("change",(function(t){f({action:u})})),"undefined"!=typeof wpcf7&&"function"==typeof wpcf7.submit){var p=wpcf7.submit;wpcf7.submit=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};f({action:u,func:p,params:[t,e]})}}document.addEventListener("wpcf7grecaptchaexecuted",(function(t){document.querySelectorAll('form.wpcf7-form input[name="_wpcf7_recaptcha_response"]').forEach((function(e){e.setAttribute("value",t.detail.token)}))}))}))},function(t,e,n){var r=n(0);t.exports=function(t){if(Array.isArray(t))return r(t)}},function(t,e){t.exports=function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}},function(t,e,n){var r=n(0);t.exports=function(t,e){if(t){if("string"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}}]);
|
modules/recaptcha/recaptcha.php
CHANGED
@@ -14,7 +14,7 @@ function wpcf7_recaptcha_register_service() {
|
|
14 |
);
|
15 |
}
|
16 |
|
17 |
-
add_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts',
|
18 |
|
19 |
function wpcf7_recaptcha_enqueue_scripts() {
|
20 |
$service = WPCF7_RECAPTCHA::get_instance();
|
@@ -35,13 +35,33 @@ function wpcf7_recaptcha_enqueue_scripts() {
|
|
35 |
true
|
36 |
);
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
);
|
44 |
|
|
|
|
|
45 |
wp_localize_script( 'wpcf7-recaptcha',
|
46 |
'wpcf7_recaptcha',
|
47 |
array(
|
@@ -414,13 +434,13 @@ class WPCF7_RECAPTCHA extends WPCF7_Service {
|
|
414 |
public function admin_notice( $message = '' ) {
|
415 |
if ( 'invalid' == $message ) {
|
416 |
echo sprintf(
|
417 |
-
'<div class="notice notice-error
|
418 |
esc_html( __( "Error", 'contact-form-7' ) ),
|
419 |
esc_html( __( "Invalid key values.", 'contact-form-7' ) ) );
|
420 |
}
|
421 |
|
422 |
if ( 'success' == $message ) {
|
423 |
-
echo sprintf( '<div class="notice notice-success
|
424 |
esc_html( __( 'Settings saved.', 'contact-form-7' ) ) );
|
425 |
}
|
426 |
}
|
@@ -482,7 +502,7 @@ class WPCF7_RECAPTCHA extends WPCF7_Service {
|
|
482 |
<th scope="row"><label for="secret"><?php echo esc_html( __( 'Secret Key', 'contact-form-7' ) ); ?></label></th>
|
483 |
<td><?php
|
484 |
if ( $this->is_active() ) {
|
485 |
-
echo esc_html( wpcf7_mask_password( $secret ) );
|
486 |
echo sprintf(
|
487 |
'<input type="hidden" value="%1$s" id="secret" name="secret" />',
|
488 |
esc_attr( $secret )
|
14 |
);
|
15 |
}
|
16 |
|
17 |
+
add_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts', 20, 0 );
|
18 |
|
19 |
function wpcf7_recaptcha_enqueue_scripts() {
|
20 |
$service = WPCF7_RECAPTCHA::get_instance();
|
35 |
true
|
36 |
);
|
37 |
|
38 |
+
$assets = array();
|
39 |
+
$asset_file = wpcf7_plugin_path( 'modules/recaptcha/index.asset.php' );
|
40 |
+
|
41 |
+
if ( file_exists( $asset_file ) ) {
|
42 |
+
$assets = include( $asset_file );
|
43 |
+
}
|
44 |
+
|
45 |
+
$assets = wp_parse_args( $assets, array(
|
46 |
+
'src' => wpcf7_plugin_url( 'modules/recaptcha/index.js' ),
|
47 |
+
'dependencies' => array(
|
48 |
+
'google-recaptcha',
|
49 |
+
'wp-polyfill',
|
50 |
+
),
|
51 |
+
'version' => WPCF7_VERSION,
|
52 |
+
'in_footer' => true,
|
53 |
+
) );
|
54 |
+
|
55 |
+
wp_register_script(
|
56 |
+
'wpcf7-recaptcha',
|
57 |
+
$assets['src'],
|
58 |
+
$assets['dependencies'],
|
59 |
+
$assets['version'],
|
60 |
+
$assets['in_footer']
|
61 |
);
|
62 |
|
63 |
+
wp_enqueue_script( 'wpcf7-recaptcha' );
|
64 |
+
|
65 |
wp_localize_script( 'wpcf7-recaptcha',
|
66 |
'wpcf7_recaptcha',
|
67 |
array(
|
434 |
public function admin_notice( $message = '' ) {
|
435 |
if ( 'invalid' == $message ) {
|
436 |
echo sprintf(
|
437 |
+
'<div class="notice notice-error"><p><strong>%1$s</strong>: %2$s</p></div>',
|
438 |
esc_html( __( "Error", 'contact-form-7' ) ),
|
439 |
esc_html( __( "Invalid key values.", 'contact-form-7' ) ) );
|
440 |
}
|
441 |
|
442 |
if ( 'success' == $message ) {
|
443 |
+
echo sprintf( '<div class="notice notice-success"><p>%s</p></div>',
|
444 |
esc_html( __( 'Settings saved.', 'contact-form-7' ) ) );
|
445 |
}
|
446 |
}
|
502 |
<th scope="row"><label for="secret"><?php echo esc_html( __( 'Secret Key', 'contact-form-7' ) ); ?></label></th>
|
503 |
<td><?php
|
504 |
if ( $this->is_active() ) {
|
505 |
+
echo esc_html( wpcf7_mask_password( $secret, 4, 4 ) );
|
506 |
echo sprintf(
|
507 |
'<input type="hidden" value="%1$s" id="secret" name="secret" />',
|
508 |
esc_attr( $secret )
|
modules/recaptcha/script.js
DELETED
@@ -1,53 +0,0 @@
|
|
1 |
-
( function() {
|
2 |
-
document.addEventListener( 'DOMContentLoaded', function( event ) {
|
3 |
-
|
4 |
-
wpcf7_recaptcha.execute = function( action ) {
|
5 |
-
grecaptcha.execute(
|
6 |
-
wpcf7_recaptcha.sitekey,
|
7 |
-
{ action: action }
|
8 |
-
).then( function( token ) {
|
9 |
-
var event = new CustomEvent( 'wpcf7grecaptchaexecuted', {
|
10 |
-
detail: {
|
11 |
-
action: action,
|
12 |
-
token: token,
|
13 |
-
},
|
14 |
-
} );
|
15 |
-
|
16 |
-
document.dispatchEvent( event );
|
17 |
-
} );
|
18 |
-
};
|
19 |
-
|
20 |
-
wpcf7_recaptcha.execute_on_homepage = function() {
|
21 |
-
wpcf7_recaptcha.execute( wpcf7_recaptcha.actions[ 'homepage' ] );
|
22 |
-
};
|
23 |
-
|
24 |
-
wpcf7_recaptcha.execute_on_contactform = function() {
|
25 |
-
wpcf7_recaptcha.execute( wpcf7_recaptcha.actions[ 'contactform' ] );
|
26 |
-
};
|
27 |
-
|
28 |
-
grecaptcha.ready(
|
29 |
-
wpcf7_recaptcha.execute_on_homepage
|
30 |
-
);
|
31 |
-
|
32 |
-
document.addEventListener( 'change',
|
33 |
-
wpcf7_recaptcha.execute_on_contactform
|
34 |
-
);
|
35 |
-
|
36 |
-
document.addEventListener( 'wpcf7submit',
|
37 |
-
wpcf7_recaptcha.execute_on_homepage
|
38 |
-
);
|
39 |
-
|
40 |
-
} );
|
41 |
-
|
42 |
-
document.addEventListener( 'wpcf7grecaptchaexecuted', function( event ) {
|
43 |
-
var fields = document.querySelectorAll(
|
44 |
-
"form.wpcf7-form input[name='_wpcf7_recaptcha_response']"
|
45 |
-
);
|
46 |
-
|
47 |
-
for ( var i = 0; i < fields.length; i++ ) {
|
48 |
-
var field = fields[ i ];
|
49 |
-
field.setAttribute( 'value', event.detail.token );
|
50 |
-
}
|
51 |
-
} );
|
52 |
-
|
53 |
-
} )();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
modules/sendinblue/contact-form-properties.php
ADDED
@@ -0,0 +1,302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
add_filter(
|
4 |
+
'wpcf7_contact_form_properties',
|
5 |
+
'wpcf7_sendinblue_register_property',
|
6 |
+
10, 2
|
7 |
+
);
|
8 |
+
|
9 |
+
function wpcf7_sendinblue_register_property( $properties, $contact_form ) {
|
10 |
+
$service = WPCF7_Sendinblue::get_instance();
|
11 |
+
|
12 |
+
if ( ! $service->is_active() ) {
|
13 |
+
return $properties;
|
14 |
+
}
|
15 |
+
|
16 |
+
$properties += array(
|
17 |
+
'sendinblue' => array(),
|
18 |
+
);
|
19 |
+
|
20 |
+
return $properties;
|
21 |
+
}
|
22 |
+
|
23 |
+
|
24 |
+
add_action(
|
25 |
+
'wpcf7_save_contact_form',
|
26 |
+
'wpcf7_sendinblue_save_contact_form',
|
27 |
+
10, 3
|
28 |
+
);
|
29 |
+
|
30 |
+
function wpcf7_sendinblue_save_contact_form( $contact_form, $args, $context ) {
|
31 |
+
$service = WPCF7_Sendinblue::get_instance();
|
32 |
+
|
33 |
+
if ( ! $service->is_active() ) {
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
$prop = isset( $_POST['wpcf7-sendinblue'] )
|
38 |
+
? (array) $_POST['wpcf7-sendinblue']
|
39 |
+
: array();
|
40 |
+
|
41 |
+
$prop = wp_parse_args(
|
42 |
+
$prop,
|
43 |
+
array(
|
44 |
+
'enable_contact_list' => false,
|
45 |
+
'contact_lists' => array(),
|
46 |
+
'enable_transactional_email' => false,
|
47 |
+
'email_template' => 0,
|
48 |
+
)
|
49 |
+
);
|
50 |
+
|
51 |
+
$prop['contact_lists'] = array_map( 'absint', $prop['contact_lists'] );
|
52 |
+
|
53 |
+
$prop['email_template'] = absint( $prop['email_template'] );
|
54 |
+
|
55 |
+
$contact_form->set_properties( array(
|
56 |
+
'sendinblue' => $prop,
|
57 |
+
) );
|
58 |
+
}
|
59 |
+
|
60 |
+
|
61 |
+
add_filter(
|
62 |
+
'wpcf7_editor_panels',
|
63 |
+
'wpcf7_sendinblue_editor_panels',
|
64 |
+
10, 1
|
65 |
+
);
|
66 |
+
|
67 |
+
function wpcf7_sendinblue_editor_panels( $panels ) {
|
68 |
+
$service = WPCF7_Sendinblue::get_instance();
|
69 |
+
|
70 |
+
if ( ! $service->is_active() ) {
|
71 |
+
return $panels;
|
72 |
+
}
|
73 |
+
|
74 |
+
$contact_form = WPCF7_ContactForm::get_current();
|
75 |
+
|
76 |
+
$prop = wp_parse_args(
|
77 |
+
$contact_form->prop( 'sendinblue' ),
|
78 |
+
array(
|
79 |
+
'enable_contact_list' => false,
|
80 |
+
'contact_lists' => array(),
|
81 |
+
'enable_transactional_email' => false,
|
82 |
+
'email_template' => 0,
|
83 |
+
)
|
84 |
+
);
|
85 |
+
|
86 |
+
$editor_panel = function () use ( $prop, $service ) {
|
87 |
+
|
88 |
+
$description = sprintf(
|
89 |
+
esc_html(
|
90 |
+
__( "You can set up the Sendinblue integration here. For details, see %s.", 'contact-form-7' )
|
91 |
+
),
|
92 |
+
wpcf7_link(
|
93 |
+
__( 'https://contactform7.com/sendinblue-integration/', 'contact-form-7' ),
|
94 |
+
__( 'Sendinblue integration', 'contact-form-7' )
|
95 |
+
)
|
96 |
+
);
|
97 |
+
|
98 |
+
$lists = $service->get_lists();
|
99 |
+
$templates = $service->get_templates();
|
100 |
+
|
101 |
+
?>
|
102 |
+
<h2><?php echo esc_html( __( 'Sendinblue', 'contact-form-7' ) ); ?></h2>
|
103 |
+
|
104 |
+
<fieldset>
|
105 |
+
<legend><?php echo $description; ?></legend>
|
106 |
+
|
107 |
+
<table class="form-table" role="presentation">
|
108 |
+
<tbody>
|
109 |
+
<tr class="<?php echo $prop['enable_contact_list'] ? '' : 'inactive'; ?>">
|
110 |
+
<th scope="row">
|
111 |
+
<?php
|
112 |
+
|
113 |
+
echo esc_html( __( 'Contact lists', 'contact-form-7' ) );
|
114 |
+
|
115 |
+
?>
|
116 |
+
</th>
|
117 |
+
<td>
|
118 |
+
<fieldset>
|
119 |
+
<legend class="screen-reader-text">
|
120 |
+
<?php
|
121 |
+
|
122 |
+
echo esc_html( __( 'Contact lists', 'contact-form-7' ) );
|
123 |
+
|
124 |
+
?>
|
125 |
+
</legend>
|
126 |
+
<label for="wpcf7-sendinblue-enable-contact-list">
|
127 |
+
<input type="checkbox" name="wpcf7-sendinblue[enable_contact_list]" id="wpcf7-sendinblue-enable-contact-list" value="1" <?php checked( $prop['enable_contact_list'] ); ?> />
|
128 |
+
<?php
|
129 |
+
|
130 |
+
echo esc_html(
|
131 |
+
__( "Add form submitters to your contact lists", 'contact-form-7' )
|
132 |
+
);
|
133 |
+
|
134 |
+
?>
|
135 |
+
</label>
|
136 |
+
</fieldset>
|
137 |
+
</td>
|
138 |
+
</tr>
|
139 |
+
<tr>
|
140 |
+
<th scope="row"></th>
|
141 |
+
<td>
|
142 |
+
<fieldset>
|
143 |
+
<?php
|
144 |
+
|
145 |
+
if ( $lists ) {
|
146 |
+
echo sprintf(
|
147 |
+
'<legend>%1$s</legend>',
|
148 |
+
esc_html( __( 'Select lists to which contacts are added:', 'contact-form-7' ) )
|
149 |
+
);
|
150 |
+
|
151 |
+
echo '<ul>';
|
152 |
+
|
153 |
+
foreach ( $lists as $list ) {
|
154 |
+
echo sprintf(
|
155 |
+
'<li><label><input %1$s /> %2$s</label></li>',
|
156 |
+
wpcf7_format_atts( array(
|
157 |
+
'type' => 'checkbox',
|
158 |
+
'name' => 'wpcf7-sendinblue[contact_lists][]',
|
159 |
+
'value' => $list['id'],
|
160 |
+
'checked' => in_array( $list['id'], $prop['contact_lists'] )
|
161 |
+
? 'checked'
|
162 |
+
: '',
|
163 |
+
) ),
|
164 |
+
esc_html( $list['name'] )
|
165 |
+
);
|
166 |
+
}
|
167 |
+
|
168 |
+
echo '</ul>';
|
169 |
+
} else {
|
170 |
+
echo sprintf(
|
171 |
+
'<legend>%1$s</legend>',
|
172 |
+
esc_html( __( 'You have no contact list yet.', 'contact-form-7' ) )
|
173 |
+
);
|
174 |
+
}
|
175 |
+
|
176 |
+
?>
|
177 |
+
</fieldset>
|
178 |
+
<?php
|
179 |
+
|
180 |
+
echo sprintf(
|
181 |
+
'<p><a %1$s>%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a></p>',
|
182 |
+
wpcf7_format_atts( array(
|
183 |
+
'href' => 'https://my.sendinblue.com/lists',
|
184 |
+
'target' => '_blank',
|
185 |
+
'rel' => 'external noreferrer noopener',
|
186 |
+
) ),
|
187 |
+
esc_html( __( 'Manage your contact lists', 'contact-form-7' ) ),
|
188 |
+
esc_html( __( '(opens in a new tab)', 'contact-form-7' ) )
|
189 |
+
);
|
190 |
+
|
191 |
+
?>
|
192 |
+
</td>
|
193 |
+
</tr>
|
194 |
+
<tr class="<?php echo $prop['enable_transactional_email'] ? '' : 'inactive'; ?>">
|
195 |
+
<th scope="row">
|
196 |
+
<?php
|
197 |
+
|
198 |
+
echo esc_html( __( 'Welcome email', 'contact-form-7' ) );
|
199 |
+
|
200 |
+
?>
|
201 |
+
</th>
|
202 |
+
<td>
|
203 |
+
<fieldset>
|
204 |
+
<legend class="screen-reader-text">
|
205 |
+
<?php
|
206 |
+
|
207 |
+
echo esc_html( __( 'Welcome email', 'contact-form-7' ) );
|
208 |
+
|
209 |
+
?>
|
210 |
+
</legend>
|
211 |
+
<label for="wpcf7-sendinblue-enable-transactional-email">
|
212 |
+
<input type="checkbox" name="wpcf7-sendinblue[enable_transactional_email]" id="wpcf7-sendinblue-enable-transactional-email" value="1" <?php checked( $prop['enable_transactional_email'] ); ?> />
|
213 |
+
<?php
|
214 |
+
|
215 |
+
echo esc_html(
|
216 |
+
__( "Send a welcome email to new contacts", 'contact-form-7' )
|
217 |
+
);
|
218 |
+
|
219 |
+
?>
|
220 |
+
</label>
|
221 |
+
</fieldset>
|
222 |
+
</td>
|
223 |
+
</tr>
|
224 |
+
<tr>
|
225 |
+
<th scope="row"></th>
|
226 |
+
<td>
|
227 |
+
<fieldset>
|
228 |
+
<?php
|
229 |
+
|
230 |
+
if ( $templates ) {
|
231 |
+
echo sprintf(
|
232 |
+
'<legend>%1$s</legend>',
|
233 |
+
esc_html( __( 'Select an email template:', 'contact-form-7' ) )
|
234 |
+
);
|
235 |
+
|
236 |
+
echo '<select name="wpcf7-sendinblue[email_template]">';
|
237 |
+
|
238 |
+
echo sprintf(
|
239 |
+
'<option %1$s>%2$s</option>',
|
240 |
+
wpcf7_format_atts( array(
|
241 |
+
'value' => 0,
|
242 |
+
'selected' => 0 === $prop['email_template']
|
243 |
+
? 'selected'
|
244 |
+
: '',
|
245 |
+
) ),
|
246 |
+
esc_html( __( '— Select —', 'contact-form-7' ) )
|
247 |
+
);
|
248 |
+
|
249 |
+
foreach ( $templates as $template ) {
|
250 |
+
echo sprintf(
|
251 |
+
'<option %1$s>%2$s</option>',
|
252 |
+
wpcf7_format_atts( array(
|
253 |
+
'value' => $template['id'],
|
254 |
+
'selected' => $prop['email_template'] === $template['id']
|
255 |
+
? 'selected'
|
256 |
+
: '',
|
257 |
+
) ),
|
258 |
+
esc_html( $template['name'] )
|
259 |
+
);
|
260 |
+
}
|
261 |
+
|
262 |
+
echo '</select>';
|
263 |
+
} else {
|
264 |
+
echo sprintf(
|
265 |
+
'<legend>%1$s</legend>',
|
266 |
+
esc_html( __( 'You have no active email template yet.', 'contact-form-7' ) )
|
267 |
+
);
|
268 |
+
}
|
269 |
+
|
270 |
+
?>
|
271 |
+
</fieldset>
|
272 |
+
<?php
|
273 |
+
|
274 |
+
echo sprintf(
|
275 |
+
'<p><a %1$s>%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a></p>',
|
276 |
+
wpcf7_format_atts( array(
|
277 |
+
'href' => 'https://my.sendinblue.com/camp/lists/template',
|
278 |
+
'target' => '_blank',
|
279 |
+
'rel' => 'external noreferrer noopener',
|
280 |
+
) ),
|
281 |
+
esc_html( __( 'Manage your email templates', 'contact-form-7' ) ),
|
282 |
+
esc_html( __( '(opens in a new tab)', 'contact-form-7' ) )
|
283 |
+
);
|
284 |
+
|
285 |
+
?>
|
286 |
+
</td>
|
287 |
+
</tr>
|
288 |
+
</tbody>
|
289 |
+
</table>
|
290 |
+
</fieldset>
|
291 |
+
<?php
|
292 |
+
};
|
293 |
+
|
294 |
+
$panels += array(
|
295 |
+
'sendinblue-panel' => array(
|
296 |
+
'title' => __( 'Sendinblue', 'contact-form-7' ),
|
297 |
+
'callback' => $editor_panel,
|
298 |
+
),
|
299 |
+
);
|
300 |
+
|
301 |
+
return $panels;
|
302 |
+
}
|
modules/sendinblue/sendinblue.php
ADDED
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
include_once path_join(
|
4 |
+
WPCF7_PLUGIN_MODULES_DIR,
|
5 |
+
'sendinblue/service.php'
|
6 |
+
);
|
7 |
+
|
8 |
+
include_once path_join(
|
9 |
+
WPCF7_PLUGIN_MODULES_DIR,
|
10 |
+
'sendinblue/contact-form-properties.php'
|
11 |
+
);
|
12 |
+
|
13 |
+
|
14 |
+
add_action( 'wpcf7_init', 'wpcf7_sendinblue_register_service', 1, 0 );
|
15 |
+
|
16 |
+
function wpcf7_sendinblue_register_service() {
|
17 |
+
$integration = WPCF7_Integration::get_instance();
|
18 |
+
|
19 |
+
$integration->add_service( 'sendinblue',
|
20 |
+
WPCF7_Sendinblue::get_instance()
|
21 |
+
);
|
22 |
+
}
|
23 |
+
|
24 |
+
|
25 |
+
add_action( 'wpcf7_submit', 'wpcf7_sendinblue_submit', 10, 2 );
|
26 |
+
|
27 |
+
function wpcf7_sendinblue_submit( $contact_form, $result ) {
|
28 |
+
if ( $contact_form->in_demo_mode() ) {
|
29 |
+
return;
|
30 |
+
}
|
31 |
+
|
32 |
+
$service = WPCF7_Sendinblue::get_instance();
|
33 |
+
|
34 |
+
if ( ! $service->is_active() ) {
|
35 |
+
return;
|
36 |
+
}
|
37 |
+
|
38 |
+
if ( empty( $result['posted_data_hash'] ) ) {
|
39 |
+
return;
|
40 |
+
}
|
41 |
+
|
42 |
+
if ( empty( $result['status'] )
|
43 |
+
or ! in_array( $result['status'], array( 'mail_sent', 'mail_failed' ) ) ) {
|
44 |
+
return;
|
45 |
+
}
|
46 |
+
|
47 |
+
$submission = WPCF7_Submission::get_instance();
|
48 |
+
|
49 |
+
$consented = true;
|
50 |
+
|
51 |
+
foreach ( $contact_form->scan_form_tags( 'feature=name-attr' ) as $tag ) {
|
52 |
+
if ( $tag->has_option( 'consent_for:sendinblue' )
|
53 |
+
and null == $submission->get_posted_data( $tag->name ) ) {
|
54 |
+
$consented = false;
|
55 |
+
break;
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
if ( ! $consented ) {
|
60 |
+
return;
|
61 |
+
}
|
62 |
+
|
63 |
+
$prop = wp_parse_args(
|
64 |
+
$contact_form->prop( 'sendinblue' ),
|
65 |
+
array(
|
66 |
+
'enable_contact_list' => false,
|
67 |
+
'contact_lists' => array(),
|
68 |
+
'enable_transactional_email' => false,
|
69 |
+
'email_template' => 0,
|
70 |
+
)
|
71 |
+
);
|
72 |
+
|
73 |
+
if ( ! $prop['enable_contact_list'] ) {
|
74 |
+
return;
|
75 |
+
}
|
76 |
+
|
77 |
+
$attributes = wpcf7_sendinblue_collect_parameters();
|
78 |
+
|
79 |
+
if ( empty( $attributes['EMAIL'] ) and empty( $attributes['SMS'] ) ) {
|
80 |
+
return;
|
81 |
+
}
|
82 |
+
|
83 |
+
$contact_id = $service->create_contact( array(
|
84 |
+
'email' => $attributes['EMAIL'],
|
85 |
+
'attributes' => (object) $attributes,
|
86 |
+
'listIds' => (array) $prop['contact_lists'],
|
87 |
+
) );
|
88 |
+
|
89 |
+
if ( ! $contact_id ) {
|
90 |
+
return;
|
91 |
+
}
|
92 |
+
|
93 |
+
if ( ! $prop['enable_transactional_email'] or ! $prop['email_template'] ) {
|
94 |
+
return;
|
95 |
+
}
|
96 |
+
|
97 |
+
$service->send_email( array(
|
98 |
+
'templateId' => absint( $prop['email_template'] ),
|
99 |
+
'to' => array(
|
100 |
+
array(
|
101 |
+
'name' => sprintf(
|
102 |
+
'%1$s %2$s',
|
103 |
+
$attributes['FIRSTNAME'],
|
104 |
+
$attributes['LASTNAME']
|
105 |
+
),
|
106 |
+
'email' => $attributes['EMAIL'],
|
107 |
+
),
|
108 |
+
),
|
109 |
+
'params' => (object) $attributes,
|
110 |
+
'tags' => array( 'Contact Form 7' ),
|
111 |
+
) );
|
112 |
+
}
|
113 |
+
|
114 |
+
|
115 |
+
function wpcf7_sendinblue_collect_parameters() {
|
116 |
+
$params = array();
|
117 |
+
|
118 |
+
$submission = WPCF7_Submission::get_instance();
|
119 |
+
|
120 |
+
foreach ( (array) $submission->get_posted_data() as $name => $val ) {
|
121 |
+
$name = strtoupper( $name );
|
122 |
+
|
123 |
+
if ( 'YOUR-' == substr( $name, 0, 5 ) ) {
|
124 |
+
$name = substr( $name, 5 );
|
125 |
+
}
|
126 |
+
|
127 |
+
if ( $val ) {
|
128 |
+
$params += array(
|
129 |
+
$name => $val,
|
130 |
+
);
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
if ( isset( $params['SMS'] ) ) {
|
135 |
+
$sms = implode( ' ', (array) $params['SMS'] );
|
136 |
+
$sms = trim( $sms );
|
137 |
+
|
138 |
+
$plus = '+' == substr( $sms, 0, 1 ) ? '+' : '';
|
139 |
+
$sms = preg_replace( '/[^0-9]/', '', $sms );
|
140 |
+
|
141 |
+
if ( 6 < strlen( $sms ) and strlen( $sms ) < 18 ) {
|
142 |
+
$params['SMS'] = $plus . $sms;
|
143 |
+
} else { // Invalid phone number
|
144 |
+
unset( $params['SMS'] );
|
145 |
+
}
|
146 |
+
}
|
147 |
+
|
148 |
+
if ( isset( $params['NAME'] ) ) {
|
149 |
+
$your_name = implode( ' ', (array) $params['NAME'] );
|
150 |
+
$your_name = explode( ' ', $your_name );
|
151 |
+
|
152 |
+
if ( ! isset( $params['LASTNAME'] ) ) {
|
153 |
+
$params['LASTNAME'] = implode(
|
154 |
+
' ',
|
155 |
+
array_slice( $your_name, 1 )
|
156 |
+
);
|
157 |
+
}
|
158 |
+
|
159 |
+
if ( ! isset( $params['FIRSTNAME'] ) ) {
|
160 |
+
$params['FIRSTNAME'] = implode(
|
161 |
+
' ',
|
162 |
+
array_slice( $your_name, 0, 1 )
|
163 |
+
);
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
$params = apply_filters(
|
168 |
+
'wpcf7_sendinblue_collect_parameters',
|
169 |
+
$params
|
170 |
+
);
|
171 |
+
|
172 |
+
return $params;
|
173 |
+
}
|
modules/sendinblue/service.php
ADDED
@@ -0,0 +1,381 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! class_exists( 'WPCF7_Service' ) ) {
|
4 |
+
return;
|
5 |
+
}
|
6 |
+
|
7 |
+
class WPCF7_Sendinblue extends WPCF7_Service {
|
8 |
+
use WPCF7_Sendinblue_API;
|
9 |
+
|
10 |
+
private static $instance;
|
11 |
+
private $api_key;
|
12 |
+
|
13 |
+
public static function get_instance() {
|
14 |
+
if ( empty( self::$instance ) ) {
|
15 |
+
self::$instance = new self;
|
16 |
+
}
|
17 |
+
|
18 |
+
return self::$instance;
|
19 |
+
}
|
20 |
+
|
21 |
+
private function __construct() {
|
22 |
+
$option = WPCF7::get_option( 'sendinblue' );
|
23 |
+
|
24 |
+
if ( isset( $option['api_key'] ) ) {
|
25 |
+
$this->api_key = $option['api_key'];
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
public function get_title() {
|
30 |
+
return __( 'Sendinblue', 'contact-form-7' );
|
31 |
+
}
|
32 |
+
|
33 |
+
public function is_active() {
|
34 |
+
return (bool) $this->get_api_key();
|
35 |
+
}
|
36 |
+
|
37 |
+
public function get_api_key() {
|
38 |
+
return $this->api_key;
|
39 |
+
}
|
40 |
+
|
41 |
+
public function get_categories() {
|
42 |
+
return array( 'email_marketing' );
|
43 |
+
}
|
44 |
+
|
45 |
+
public function icon() {
|
46 |
+
}
|
47 |
+
|
48 |
+
public function link() {
|
49 |
+
echo wpcf7_link(
|
50 |
+
'https://www.sendinblue.com/?tap_a=30591-fb13f0&tap_s=1031580-b1bb1d',
|
51 |
+
'sendinblue.com'
|
52 |
+
);
|
53 |
+
}
|
54 |
+
|
55 |
+
protected function log( $url, $request, $response ) {
|
56 |
+
wpcf7_log_remote_request( $url, $request, $response );
|
57 |
+
}
|
58 |
+
|
59 |
+
protected function menu_page_url( $args = '' ) {
|
60 |
+
$args = wp_parse_args( $args, array() );
|
61 |
+
|
62 |
+
$url = menu_page_url( 'wpcf7-integration', false );
|
63 |
+
$url = add_query_arg( array( 'service' => 'sendinblue' ), $url );
|
64 |
+
|
65 |
+
if ( ! empty( $args ) ) {
|
66 |
+
$url = add_query_arg( $args, $url );
|
67 |
+
}
|
68 |
+
|
69 |
+
return $url;
|
70 |
+
}
|
71 |
+
|
72 |
+
protected function save_data() {
|
73 |
+
WPCF7::update_option( 'sendinblue', array(
|
74 |
+
'api_key' => $this->api_key,
|
75 |
+
) );
|
76 |
+
}
|
77 |
+
|
78 |
+
protected function reset_data() {
|
79 |
+
$this->api_key = null;
|
80 |
+
$this->save_data();
|
81 |
+
}
|
82 |
+
|
83 |
+
public function load( $action = '' ) {
|
84 |
+
if ( 'setup' == $action and 'POST' == $_SERVER['REQUEST_METHOD'] ) {
|
85 |
+
check_admin_referer( 'wpcf7-sendinblue-setup' );
|
86 |
+
|
87 |
+
if ( ! empty( $_POST['reset'] ) ) {
|
88 |
+
$this->reset_data();
|
89 |
+
$redirect_to = $this->menu_page_url( 'action=setup' );
|
90 |
+
} else {
|
91 |
+
$this->api_key = isset( $_POST['api_key'] )
|
92 |
+
? trim( $_POST['api_key'] )
|
93 |
+
: '';
|
94 |
+
|
95 |
+
$confirmed = $this->confirm_key();
|
96 |
+
|
97 |
+
if ( true === $confirmed ) {
|
98 |
+
$redirect_to = $this->menu_page_url( array(
|
99 |
+
'message' => 'success',
|
100 |
+
) );
|
101 |
+
|
102 |
+
$this->save_data();
|
103 |
+
} elseif ( false === $confirmed ) {
|
104 |
+
$redirect_to = $this->menu_page_url( array(
|
105 |
+
'action' => 'setup',
|
106 |
+
'message' => 'unauthorized',
|
107 |
+
) );
|
108 |
+
} else {
|
109 |
+
$redirect_to = $this->menu_page_url( array(
|
110 |
+
'action' => 'setup',
|
111 |
+
'message' => 'invalid',
|
112 |
+
) );
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
wp_safe_redirect( $redirect_to );
|
117 |
+
exit();
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
public function admin_notice( $message = '' ) {
|
122 |
+
if ( 'unauthorized' == $message ) {
|
123 |
+
echo sprintf(
|
124 |
+
'<div class="notice notice-error"><p><strong>%1$s</strong>: %2$s</p></div>',
|
125 |
+
esc_html( __( "Error", 'contact-form-7' ) ),
|
126 |
+
esc_html( __( "You have not been authenticated. Make sure the provided API key is correct.", 'contact-form-7' ) )
|
127 |
+
);
|
128 |
+
}
|
129 |
+
|
130 |
+
if ( 'invalid' == $message ) {
|
131 |
+
echo sprintf(
|
132 |
+
'<div class="notice notice-error"><p><strong>%1$s</strong>: %2$s</p></div>',
|
133 |
+
esc_html( __( "Error", 'contact-form-7' ) ),
|
134 |
+
esc_html( __( "Invalid key values.", 'contact-form-7' ) )
|
135 |
+
);
|
136 |
+
}
|
137 |
+
|
138 |
+
if ( 'success' == $message ) {
|
139 |
+
echo sprintf(
|
140 |
+
'<div class="notice notice-success"><p>%s</p></div>',
|
141 |
+
esc_html( __( 'Settings saved.', 'contact-form-7' ) )
|
142 |
+
);
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
public function display( $action = '' ) {
|
147 |
+
echo '<p>' . sprintf(
|
148 |
+
esc_html( __( "Store and organize your contacts while protecting user privacy on Sendinblue, the leading CRM & email marketing platform in Europe. Sendinblue offers unlimited contacts and advanced marketing features. For details, see %s.", 'contact-form-7' ) ),
|
149 |
+
wpcf7_link(
|
150 |
+
__( 'https://contactform7.com/sendinblue-integration/', 'contact-form-7' ),
|
151 |
+
__( 'Sendinblue integration', 'contact-form-7' )
|
152 |
+
)
|
153 |
+
) . '</p>';
|
154 |
+
|
155 |
+
if ( $this->is_active() ) {
|
156 |
+
echo sprintf(
|
157 |
+
'<p class="dashicons-before dashicons-yes">%s</p>',
|
158 |
+
esc_html( __( "Sendinblue is active on this site.", 'contact-form-7' ) )
|
159 |
+
);
|
160 |
+
}
|
161 |
+
|
162 |
+
if ( 'setup' == $action ) {
|
163 |
+
$this->display_setup();
|
164 |
+
} else {
|
165 |
+
echo sprintf(
|
166 |
+
'<p><a href="%1$s" class="button">%2$s</a></p>',
|
167 |
+
esc_url( $this->menu_page_url( 'action=setup' ) ),
|
168 |
+
esc_html( __( 'Setup integration', 'contact-form-7' ) )
|
169 |
+
);
|
170 |
+
}
|
171 |
+
}
|
172 |
+
|
173 |
+
private function display_setup() {
|
174 |
+
$api_key = $this->get_api_key();
|
175 |
+
|
176 |
+
?>
|
177 |
+
<form method="post" action="<?php echo esc_url( $this->menu_page_url( 'action=setup' ) ); ?>">
|
178 |
+
<?php wp_nonce_field( 'wpcf7-sendinblue-setup' ); ?>
|
179 |
+
<table class="form-table">
|
180 |
+
<tbody>
|
181 |
+
<tr>
|
182 |
+
<th scope="row"><label for="publishable"><?php echo esc_html( __( 'API key', 'contact-form-7' ) ); ?></label></th>
|
183 |
+
<td><?php
|
184 |
+
if ( $this->is_active() ) {
|
185 |
+
echo esc_html( wpcf7_mask_password( $api_key, 4, 8 ) );
|
186 |
+
echo sprintf(
|
187 |
+
'<input type="hidden" value="%s" id="api_key" name="api_key" />',
|
188 |
+
esc_attr( $api_key )
|
189 |
+
);
|
190 |
+
} else {
|
191 |
+
echo sprintf(
|
192 |
+
'<input type="text" aria-required="true" value="%s" id="api_key" name="api_key" class="regular-text code" />',
|
193 |
+
esc_attr( $api_key )
|
194 |
+
);
|
195 |
+
}
|
196 |
+
?></td>
|
197 |
+
</tr>
|
198 |
+
</tbody>
|
199 |
+
</table>
|
200 |
+
<?php
|
201 |
+
if ( $this->is_active() ) {
|
202 |
+
submit_button(
|
203 |
+
_x( 'Remove key', 'API keys', 'contact-form-7' ),
|
204 |
+
'small', 'reset'
|
205 |
+
);
|
206 |
+
} else {
|
207 |
+
submit_button( __( 'Save changes', 'contact-form-7' ) );
|
208 |
+
}
|
209 |
+
?>
|
210 |
+
</form>
|
211 |
+
<?php
|
212 |
+
}
|
213 |
+
}
|
214 |
+
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Trait for the Sendinblue API (v3).
|
218 |
+
*
|
219 |
+
* @link https://developers.sendinblue.com/reference
|
220 |
+
*/
|
221 |
+
trait WPCF7_Sendinblue_API {
|
222 |
+
|
223 |
+
|
224 |
+
public function confirm_key() {
|
225 |
+
$endpoint = 'https://api.sendinblue.com/v3/account';
|
226 |
+
|
227 |
+
$request = array(
|
228 |
+
'headers' => array(
|
229 |
+
'Accept' => 'application/json',
|
230 |
+
'Content-Type' => 'application/json; charset=utf-8',
|
231 |
+
'API-Key' => $this->get_api_key(),
|
232 |
+
),
|
233 |
+
);
|
234 |
+
|
235 |
+
$response = wp_remote_get( $endpoint, $request );
|
236 |
+
$response_code = (int) wp_remote_retrieve_response_code( $response );
|
237 |
+
|
238 |
+
if ( 200 === $response_code ) { // 200 OK
|
239 |
+
return true;
|
240 |
+
} elseif ( 401 === $response_code ) { // 401 Unauthorized
|
241 |
+
return false;
|
242 |
+
} elseif ( 400 <= $response_code ) {
|
243 |
+
if ( WP_DEBUG ) {
|
244 |
+
$this->log( $endpoint, $request, $response );
|
245 |
+
}
|
246 |
+
}
|
247 |
+
}
|
248 |
+
|
249 |
+
|
250 |
+
public function get_lists() {
|
251 |
+
$endpoint = add_query_arg(
|
252 |
+
array(
|
253 |
+
'limit' => 50,
|
254 |
+
'offset' => 0,
|
255 |
+
),
|
256 |
+
'https://api.sendinblue.com/v3/contacts/lists'
|
257 |
+
);
|
258 |
+
|
259 |
+
$request = array(
|
260 |
+
'headers' => array(
|
261 |
+
'Accept' => 'application/json',
|
262 |
+
'Content-Type' => 'application/json; charset=utf-8',
|
263 |
+
'API-Key' => $this->get_api_key(),
|
264 |
+
),
|
265 |
+
);
|
266 |
+
|
267 |
+
$response = wp_remote_get( $endpoint, $request );
|
268 |
+
$response_code = (int) wp_remote_retrieve_response_code( $response );
|
269 |
+
|
270 |
+
if ( 200 === $response_code ) { // 200 OK
|
271 |
+
$response_body = wp_remote_retrieve_body( $response );
|
272 |
+
$response_body = json_decode( $response_body, true );
|
273 |
+
|
274 |
+
if ( empty( $response_body['lists'] ) ) {
|
275 |
+
return array();
|
276 |
+
} else {
|
277 |
+
return (array) $response_body['lists'];
|
278 |
+
}
|
279 |
+
} elseif ( 400 <= $response_code ) {
|
280 |
+
if ( WP_DEBUG ) {
|
281 |
+
$this->log( $endpoint, $request, $response );
|
282 |
+
}
|
283 |
+
}
|
284 |
+
}
|
285 |
+
|
286 |
+
|
287 |
+
public function get_templates() {
|
288 |
+
$endpoint = add_query_arg(
|
289 |
+
array(
|
290 |
+
'templateStatus' => 'true',
|
291 |
+
'limit' => 100,
|
292 |
+
'offset' => 0,
|
293 |
+
),
|
294 |
+
'https://api.sendinblue.com/v3/smtp/templates'
|
295 |
+
);
|
296 |
+
|
297 |
+
$request = array(
|
298 |
+
'headers' => array(
|
299 |
+
'Accept' => 'application/json',
|
300 |
+
'Content-Type' => 'application/json; charset=utf-8',
|
301 |
+
'API-Key' => $this->get_api_key(),
|
302 |
+
),
|
303 |
+
);
|
304 |
+
|
305 |
+
$response = wp_remote_get( $endpoint, $request );
|
306 |
+
$response_code = (int) wp_remote_retrieve_response_code( $response );
|
307 |
+
|
308 |
+
if ( 200 === $response_code ) { // 200 OK
|
309 |
+
$response_body = wp_remote_retrieve_body( $response );
|
310 |
+
$response_body = json_decode( $response_body, true );
|
311 |
+
|
312 |
+
if ( empty( $response_body['templates'] ) ) {
|
313 |
+
return array();
|
314 |
+
} else {
|
315 |
+
return (array) $response_body['templates'];
|
316 |
+
}
|
317 |
+
} elseif ( 400 <= $response_code ) {
|
318 |
+
if ( WP_DEBUG ) {
|
319 |
+
$this->log( $endpoint, $request, $response );
|
320 |
+
}
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
|
325 |
+
public function create_contact( $properties ) {
|
326 |
+
$endpoint = 'https://api.sendinblue.com/v3/contacts';
|
327 |
+
|
328 |
+
$request = array(
|
329 |
+
'headers' => array(
|
330 |
+
'Accept' => 'application/json',
|
331 |
+
'Content-Type' => 'application/json; charset=utf-8',
|
332 |
+
'API-Key' => $this->get_api_key(),
|
333 |
+
),
|
334 |
+
'body' => json_encode( $properties ),
|
335 |
+
);
|
336 |
+
|
337 |
+
$response = wp_remote_post( $endpoint, $request );
|
338 |
+
$response_code = (int) wp_remote_retrieve_response_code( $response );
|
339 |
+
|
340 |
+
if ( in_array( $response_code, array( 201, 204 ), true ) ) {
|
341 |
+
$contact_id = wp_remote_retrieve_body( $response );
|
342 |
+
return $contact_id;
|
343 |
+
} elseif ( 400 <= $response_code ) {
|
344 |
+
if ( WP_DEBUG ) {
|
345 |
+
$this->log( $endpoint, $request, $response );
|
346 |
+
}
|
347 |
+
}
|
348 |
+
|
349 |
+
return false;
|
350 |
+
}
|
351 |
+
|
352 |
+
|
353 |
+
public function send_email( $properties ) {
|
354 |
+
$endpoint = 'https://api.sendinblue.com/v3/smtp/email';
|
355 |
+
|
356 |
+
$request = array(
|
357 |
+
'headers' => array(
|
358 |
+
'Accept' => 'application/json',
|
359 |
+
'Content-Type' => 'application/json; charset=utf-8',
|
360 |
+
'API-Key' => $this->get_api_key(),
|
361 |
+
),
|
362 |
+
'body' => json_encode( $properties ),
|
363 |
+
);
|
364 |
+
|
365 |
+
$response = wp_remote_post( $endpoint, $request );
|
366 |
+
$response_code = (int) wp_remote_retrieve_response_code( $response );
|
367 |
+
|
368 |
+
if ( 201 === $response_code ) { // 201 Transactional email sent
|
369 |
+
$message_id = wp_remote_retrieve_body( $response );
|
370 |
+
return $message_id;
|
371 |
+
} elseif ( 400 <= $response_code ) {
|
372 |
+
if ( WP_DEBUG ) {
|
373 |
+
$this->log( $endpoint, $request, $response );
|
374 |
+
}
|
375 |
+
}
|
376 |
+
|
377 |
+
return false;
|
378 |
+
}
|
379 |
+
|
380 |
+
|
381 |
+
}
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: takayukister
|
3 |
Donate link: https://contactform7.com/donate/
|
4 |
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
|
5 |
-
Requires at least: 5.
|
6 |
-
Tested up to: 5.
|
7 |
-
Stable tag: 5.
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -36,6 +36,7 @@ If you activate certain features in this plugin, the contact form submitter's pe
|
|
36 |
* reCAPTCHA ([Google](https://policies.google.com/?hl=en))
|
37 |
* Akismet ([Automattic](https://automattic.com/privacy/))
|
38 |
* Constant Contact ([Endurance International Group](https://www.endurance.com/privacy))
|
|
|
39 |
|
40 |
= Recommended plugins =
|
41 |
|
@@ -75,54 +76,8 @@ Do you have questions or issues with Contact Form 7? Use these support channels
|
|
75 |
|
76 |
For more information, see [Releases](https://contactform7.com/category/releases/).
|
77 |
|
78 |
-
= 5.
|
79 |
|
80 |
-
|
81 |
-
* Akismet: Sets ISO 8601 date/time format for the `comment_date_gmt` parameter.
|
82 |
-
|
83 |
-
= 5.3.1 =
|
84 |
-
|
85 |
-
* Flamingo: Passes the `last_contacted` parameter based on the submission timestamp.
|
86 |
-
|
87 |
-
= 5.3 =
|
88 |
-
|
89 |
-
* Block Editor: Introduces the contact form selector block type.
|
90 |
-
* Renames the 'images' directory to 'assets'.
|
91 |
-
* New filter hook: `wpcf7_form_tag_date_option`.
|
92 |
-
* Date: Makes all DateTime date formats available for `min` and `max` options.
|
93 |
-
* Date: Converts the default value to Y-m-d date format string.
|
94 |
-
* Disallowed list: Deprecates the `wpcf7_submission_is_blacklisted` filter hook in favor of `wpcf7_submission_has_disallowed_words`.
|
95 |
-
* Accessibility: Sets the `aria-describedby` attribute for invalid fields.
|
96 |
-
* Default form template: Removes the "(required)" labels from required fields. Adds "(optional)" to optional fields instead.
|
97 |
-
* Default mail template: Uses site-related special mail-tags.
|
98 |
-
|
99 |
-
= 5.2.2 =
|
100 |
-
|
101 |
-
* Fixed: A REST API call aborted with a PHP fatal error when the `WPCF7_USE_PIPE` constant value was false.
|
102 |
-
* Introduces the `wpcf7_doing_it_wrong()` function.
|
103 |
-
* Sets the `trigger_error()` function’s `$error_type` parameter explicitly.
|
104 |
-
* Makes the `wpcf7_special_mail_tags` filter functions’ `$mail_tag` parameter optional.
|
105 |
-
|
106 |
-
= 5.2.1 =
|
107 |
-
|
108 |
-
* Makes the [contact-form-7 404 "Not Found"] message localizable.
|
109 |
-
* REST API: Adds the `permission_callback` argument to every endpoint definition.
|
110 |
-
* Flamingo: Uses `id()` instead of `id`, if available.
|
111 |
-
* Fixed: The `free_text` option did not work correctly with the `exclusive` option.
|
112 |
-
* Applies `wpcf7_mail_tag_replaced` filters even when the `$posted_data` is null.
|
113 |
-
* Adds custom mail-tag replacement for quiz fields.
|
114 |
-
* Admin: Updates the date column format in the list table.
|
115 |
-
|
116 |
-
= 5.2 =
|
117 |
-
|
118 |
-
* Submission: Introduces the `$posted_data_hash` and `$skip_spam_check` properties.
|
119 |
-
* Submission: Introduces the `wpcf7_skip_spam_check` filter hook.
|
120 |
-
* Contact form: Introduces the `pref()` method.
|
121 |
-
* REST API: Adds parsed form-tags data to the response.
|
122 |
-
* REST API: Deprecates the `wpcf7_ajax_json_echo` and `wpcf7_ajax_onload` filter hooks and introduces the `wpcf7_feedback_response` and `wpcf7_refill_response` filter hooks as alternatives.
|
123 |
-
* Frontend CSS: Style rules for the response output refer to the `form` element’s `class` attribute.
|
124 |
-
* Frontend JavaScript: Abolishes the use of jQuery events.
|
125 |
-
* reCAPTCHA: Moves script code to a separate file.
|
126 |
-
* reCAPTCHA: Changes the name of the field for reCAPTCHA response token from `g-recaptcha-response` to `_wpcf7_recaptcha_response`.
|
127 |
|
128 |
== Upgrade Notice ==
|
2 |
Contributors: takayukister
|
3 |
Donate link: https://contactform7.com/donate/
|
4 |
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
|
5 |
+
Requires at least: 5.5
|
6 |
+
Tested up to: 5.7
|
7 |
+
Stable tag: 5.4
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
36 |
* reCAPTCHA ([Google](https://policies.google.com/?hl=en))
|
37 |
* Akismet ([Automattic](https://automattic.com/privacy/))
|
38 |
* Constant Contact ([Endurance International Group](https://www.endurance.com/privacy))
|
39 |
+
* [Sendinblue](https://www.sendinblue.com/legal/privacypolicy/)
|
40 |
|
41 |
= Recommended plugins =
|
42 |
|
76 |
|
77 |
For more information, see [Releases](https://contactform7.com/category/releases/).
|
78 |
|
79 |
+
= 5.4 =
|
80 |
|
81 |
+
https://contactform7.com/contact-form-7-54/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
|
83 |
== Upgrade Notice ==
|
wp-contact-form-7.php
CHANGED
@@ -7,12 +7,12 @@ Author: Takayuki Miyoshi
|
|
7 |
Author URI: https://ideasilo.wordpress.com/
|
8 |
Text Domain: contact-form-7
|
9 |
Domain Path: /languages/
|
10 |
-
Version: 5.
|
11 |
*/
|
12 |
|
13 |
-
define( 'WPCF7_VERSION', '5.
|
14 |
|
15 |
-
define( 'WPCF7_REQUIRED_WP_VERSION', '5.
|
16 |
|
17 |
define( 'WPCF7_TEXT_DOMAIN', 'contact-form-7' );
|
18 |
|
7 |
Author URI: https://ideasilo.wordpress.com/
|
8 |
Text Domain: contact-form-7
|
9 |
Domain Path: /languages/
|
10 |
+
Version: 5.4
|
11 |
*/
|
12 |
|
13 |
+
define( 'WPCF7_VERSION', '5.4' );
|
14 |
|
15 |
+
define( 'WPCF7_REQUIRED_WP_VERSION', '5.5' );
|
16 |
|
17 |
define( 'WPCF7_TEXT_DOMAIN', 'contact-form-7' );
|
18 |
|