PKP\fOwp-contact-form-7.phpnuW+A $value ) ); update_option( 'wpcf7', $option ); } } add_action( 'plugins_loaded', 'wpcf7' ); function wpcf7() { wpcf7_load_textdomain(); WPCF7::load_modules(); /* Shortcodes */ add_shortcode( 'contact-form-7', 'wpcf7_contact_form_tag_func' ); add_shortcode( 'contact-form', 'wpcf7_contact_form_tag_func' ); } add_action( 'init', 'wpcf7_init' ); function wpcf7_init() { wpcf7_get_request_uri(); wpcf7_register_post_types(); do_action( 'wpcf7_init' ); } add_action( 'admin_init', 'wpcf7_upgrade' ); function wpcf7_upgrade() { $old_ver = WPCF7::get_option( 'version', '0' ); $new_ver = WPCF7_VERSION; if ( $old_ver == $new_ver ) { return; } do_action( 'wpcf7_upgrade', $new_ver, $old_ver ); WPCF7::update_option( 'version', $new_ver ); } /* Install and default settings */ add_action( 'activate_' . WPCF7_PLUGIN_BASENAME, 'wpcf7_install' ); function wpcf7_install() { if ( $opt = get_option( 'wpcf7' ) ) { return; } wpcf7_load_textdomain(); wpcf7_register_post_types(); wpcf7_upgrade(); if ( get_posts( array( 'post_type' => 'wpcf7_contact_form' ) ) ) { return; } $contact_form = WPCF7_ContactForm::get_template( array( 'title' => sprintf( __( 'Contact form %d', 'contact-form-7' ), 1 ), ) ); $contact_form->save(); WPCF7::update_option( 'bulk_validate', array( 'timestamp' => current_time( 'timestamp' ), 'version' => WPCF7_VERSION, 'count_valid' => 1, 'count_invalid' => 0, ) ); } PKP\v modules/akismet.phpnuW+A $value ) { if ( ! in_array( $key, (array) $ignore ) ) $c["$key"] = $value; } return wpcf7_akismet_comment_check( $c ); } function wpcf7_akismet_is_available() { if ( is_callable( array( 'Akismet', 'get_api_key' ) ) ) { // Akismet v3.0+ return (bool) Akismet::get_api_key(); } if ( function_exists( 'akismet_get_key' ) ) { return (bool) akismet_get_key(); } return false; } function wpcf7_akismet_submitted_params() { $params = array( 'author' => '', 'author_email' => '', 'author_url' => '', 'content' => '' ); $has_akismet_option = false; foreach ( (array) $_POST as $key => $val ) { if ( '_wpcf7' == substr( $key, 0, 6 ) || '_wpnonce' == $key ) { continue; } if ( is_array( $val ) ) { $val = implode( ', ', wpcf7_array_flatten( $val ) ); } $val = trim( $val ); if ( 0 == strlen( $val ) ) { continue; } if ( $tags = wpcf7_scan_form_tags( array( 'name' => $key ) ) ) { $tag = $tags[0]; $tag = new WPCF7_FormTag( $tag ); $akismet = $tag->get_option( 'akismet', '(author|author_email|author_url)', true ); if ( $akismet ) { $has_akismet_option = true; if ( 'author' == $akismet ) { $params[$akismet] = trim( $params[$akismet] . ' ' . $val ); } elseif ( '' == $params[$akismet] ) { $params[$akismet] = $val; } } } $params['content'] .= "\n\n" . $val; } if ( ! $has_akismet_option ) { return false; } $params['content'] = trim( $params['content'] ); return $params; } function wpcf7_akismet_comment_check( $comment ) { global $akismet_api_host, $akismet_api_port; $spam = false; $query_string = wpcf7_build_query( $comment ); if ( is_callable( array( 'Akismet', 'http_post' ) ) ) { // Akismet v3.0+ $response = Akismet::http_post( $query_string, 'comment-check' ); } else { $response = akismet_http_post( $query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port ); } if ( 'true' == $response[1] ) { $spam = true; } if ( $submission = WPCF7_Submission::get_instance() ) { $submission->akismet = array( 'comment' => $comment, 'spam' => $spam ); } return apply_filters( 'wpcf7_akismet_comment_check', $spam, $comment ); } PKP\u&&modules/select.phpnuW+A true, 'selectable-values' => true ) ); } function wpcf7_select_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); if ( $tag->is_required() ) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $multiple = $tag->has_option( 'multiple' ); $include_blank = $tag->has_option( 'include_blank' ); $first_as_label = $tag->has_option( 'first_as_label' ); if ( $tag->has_option( 'size' ) ) { $size = $tag->get_option( 'size', 'int', true ); if ( $size ) { $atts['size'] = $size; } elseif ( $multiple ) { $atts['size'] = 4; } else { $atts['size'] = 1; } } $values = $tag->values; $labels = $tag->labels; if ( $data = (array) $tag->get_data_option() ) { $values = array_merge( $values, array_values( $data ) ); $labels = array_merge( $labels, array_values( $data ) ); } $defaults = array(); $default_choice = $tag->get_default_option( null, 'multiple=1' ); foreach ( $default_choice as $value ) { $key = array_search( $value, $values, true ); if ( false !== $key ) { $defaults[] = (int) $key + 1; } } if ( $matches = $tag->get_first_match_option( '/^default:([0-9_]+)$/' ) ) { $defaults = array_merge( $defaults, explode( '_', $matches[1] ) ); } $defaults = array_unique( $defaults ); $shifted = false; if ( $include_blank || empty( $values ) ) { array_unshift( $labels, '---' ); array_unshift( $values, '' ); $shifted = true; } elseif ( $first_as_label ) { $values[0] = ''; } $html = ''; $hangover = wpcf7_get_hangover( $tag->name ); foreach ( $values as $key => $value ) { $selected = false; if ( $hangover ) { if ( $multiple ) { $selected = in_array( esc_sql( $value ), (array) $hangover ); } else { $selected = ( $hangover == esc_sql( $value ) ); } } else { if ( ! $shifted && in_array( (int) $key + 1, (array) $defaults ) ) { $selected = true; } elseif ( $shifted && in_array( (int) $key, (array) $defaults ) ) { $selected = true; } } $item_atts = array( 'value' => $value, 'selected' => $selected ? 'selected' : '' ); $item_atts = wpcf7_format_atts( $item_atts ); $label = isset( $labels[$key] ) ? $labels[$key] : $value; $html .= sprintf( '', $item_atts, esc_html( $label ) ); } if ( $multiple ) { $atts['multiple'] = 'multiple'; } $atts['name'] = $tag->name . ( $multiple ? '[]' : '' ); $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%4$s', sanitize_html_class( $tag->name ), $atts, $html, $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_select', 'wpcf7_select_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_select*', 'wpcf7_select_validation_filter', 10, 2 ); function wpcf7_select_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $name = $tag->name; if ( isset( $_POST[$name] ) && is_array( $_POST[$name] ) ) { foreach ( $_POST[$name] as $key => $value ) { if ( '' === $value ) { unset( $_POST[$name][$key] ); } } } $empty = ! isset( $_POST[$name] ) || empty( $_POST[$name] ) && '0' !== $_POST[$name]; if ( $tag->is_required() && $empty ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } return $result; } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_menu', 25 ); function wpcf7_add_tag_generator_menu() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'menu', __( 'drop-down menu', 'contact-form-7' ), 'wpcf7_tag_generator_menu' ); } function wpcf7_tag_generator_menu( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $description = __( "Generate a form-tag for a drop-down menu. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/checkboxes-radio-buttons-and-menus/', 'contact-form-7' ), __( 'Checkboxes, Radio Buttons and Menus', 'contact-form-7' ) ); ?>



true ) ); } function wpcf7_file_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option( '40' ); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); if ( $tag->is_required() ) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $atts['type'] = 'file'; $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%3$s', sanitize_html_class( $tag->name ), $atts, $validation_error ); return $html; } /* Encode type filter */ add_filter( 'wpcf7_form_enctype', 'wpcf7_file_form_enctype_filter' ); function wpcf7_file_form_enctype_filter( $enctype ) { $multipart = (bool) wpcf7_scan_form_tags( array( 'type' => array( 'file', 'file*' ) ) ); if ( $multipart ) { $enctype = 'multipart/form-data'; } return $enctype; } /* Validation + upload handling filter */ add_filter( 'wpcf7_validate_file', 'wpcf7_file_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_file*', 'wpcf7_file_validation_filter', 10, 2 ); function wpcf7_file_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $name = $tag->name; $id = $tag->get_id_option(); $file = isset( $_FILES[$name] ) ? $_FILES[$name] : null; if ( $file['error'] && UPLOAD_ERR_NO_FILE != $file['error'] ) { $result->invalidate( $tag, wpcf7_get_message( 'upload_failed_php_error' ) ); return $result; } if ( empty( $file['tmp_name'] ) && $tag->is_required() ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); return $result; } if ( ! is_uploaded_file( $file['tmp_name'] ) ) { return $result; } $allowed_file_types = array(); if ( $file_types_a = $tag->get_option( 'filetypes' ) ) { foreach ( $file_types_a as $file_types ) { $file_types = explode( '|', $file_types ); foreach ( $file_types as $file_type ) { $file_type = trim( $file_type, '.' ); $file_type = str_replace( array( '.', '+', '*', '?' ), array( '\.', '\+', '\*', '\?' ), $file_type ); $allowed_file_types[] = $file_type; } } } $allowed_file_types = array_unique( $allowed_file_types ); $file_type_pattern = implode( '|', $allowed_file_types ); $allowed_size = 1048576; // default size 1 MB if ( $file_size_a = $tag->get_option( 'limit' ) ) { $limit_pattern = '/^([1-9][0-9]*)([kKmM]?[bB])?$/'; foreach ( $file_size_a as $file_size ) { if ( preg_match( $limit_pattern, $file_size, $matches ) ) { $allowed_size = (int) $matches[1]; if ( ! empty( $matches[2] ) ) { $kbmb = strtolower( $matches[2] ); if ( 'kb' == $kbmb ) { $allowed_size *= 1024; } elseif ( 'mb' == $kbmb ) { $allowed_size *= 1024 * 1024; } } break; } } } /* File type validation */ // Default file-type restriction if ( '' == $file_type_pattern ) { $file_type_pattern = 'jpg|jpeg|png|gif|pdf|doc|docx|ppt|pptx|odt|avi|ogg|m4a|mov|mp3|mp4|mpg|wav|wmv'; } $file_type_pattern = trim( $file_type_pattern, '|' ); $file_type_pattern = '(' . $file_type_pattern . ')'; $file_type_pattern = '/\.' . $file_type_pattern . '$/i'; if ( ! preg_match( $file_type_pattern, $file['name'] ) ) { $result->invalidate( $tag, wpcf7_get_message( 'upload_file_type_invalid' ) ); return $result; } /* File size validation */ if ( $file['size'] > $allowed_size ) { $result->invalidate( $tag, wpcf7_get_message( 'upload_file_too_large' ) ); return $result; } wpcf7_init_uploads(); // Confirm upload dir $uploads_dir = wpcf7_upload_tmp_dir(); $uploads_dir = wpcf7_maybe_add_random_dir( $uploads_dir ); $filename = $file['name']; $filename = wpcf7_canonicalize( $filename, 'as-is' ); $filename = sanitize_file_name( $filename ); $filename = wpcf7_antiscript_file_name( $filename ); $filename = wp_unique_filename( $uploads_dir, $filename ); $new_file = trailingslashit( $uploads_dir ) . $filename; if ( false === @move_uploaded_file( $file['tmp_name'], $new_file ) ) { $result->invalidate( $tag, wpcf7_get_message( 'upload_failed' ) ); return $result; } // Make sure the uploaded file is only readable for the owner process @chmod( $new_file, 0400 ); if ( $submission = WPCF7_Submission::get_instance() ) { $submission->add_uploaded_file( $name, $new_file ); } return $result; } /* Messages */ add_filter( 'wpcf7_messages', 'wpcf7_file_messages' ); function wpcf7_file_messages( $messages ) { return array_merge( $messages, array( 'upload_failed' => array( 'description' => __( "Uploading a file fails for any reason", 'contact-form-7' ), 'default' => __( "There was an unknown error uploading the file.", 'contact-form-7' ) ), 'upload_file_type_invalid' => array( 'description' => __( "Uploaded file is not allowed for file type", 'contact-form-7' ), 'default' => __( "You are not allowed to upload files of this type.", 'contact-form-7' ) ), 'upload_file_too_large' => array( 'description' => __( "Uploaded file is too large", 'contact-form-7' ), 'default' => __( "The file is too big.", 'contact-form-7' ) ), 'upload_failed_php_error' => array( 'description' => __( "Uploading a file fails for PHP error", 'contact-form-7' ), 'default' => __( "There was an error uploading the file.", 'contact-form-7' ) ) ) ); } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_file', 50 ); function wpcf7_add_tag_generator_file() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'file', __( 'file', 'contact-form-7' ), 'wpcf7_tag_generator_file' ); } function wpcf7_tag_generator_file( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = 'file'; $description = __( "Generate a form-tag for a file uploading field. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/file-uploading-and-attachment/', 'contact-form-7' ), __( 'File Uploading and Attachment', 'contact-form-7' ) ); ?>

scan_form_tags( array( 'type' => array( 'file', 'file*' ) ) ); if ( ! $has_tags ) { return; } $uploads_dir = wpcf7_upload_tmp_dir(); wpcf7_init_uploads(); if ( ! is_dir( $uploads_dir ) || ! wp_is_writable( $uploads_dir ) ) { $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 ); echo '

' . esc_html( $message ) . '

'; } } /* File uploading functions */ function wpcf7_init_uploads() { $dir = wpcf7_upload_tmp_dir(); wp_mkdir_p( $dir ); $htaccess_file = trailingslashit( $dir ) . '.htaccess'; if ( file_exists( $htaccess_file ) ) { return; } if ( $handle = @fopen( $htaccess_file, 'w' ) ) { fwrite( $handle, "Deny from all\n" ); fclose( $handle ); } } function wpcf7_maybe_add_random_dir( $dir ) { do { $rand_max = mt_getrandmax(); $rand = zeroise( mt_rand( 0, $rand_max ), strlen( $rand_max ) ); $dir_new = path_join( $dir, $rand ); } while ( file_exists( $dir_new ) ); if ( wp_mkdir_p( $dir_new ) ) { return $dir_new; } return $dir; } function wpcf7_upload_tmp_dir() { if ( defined( 'WPCF7_UPLOADS_TMP_DIR' ) ) return WPCF7_UPLOADS_TMP_DIR; else return wpcf7_upload_dir( 'dir' ) . '/wpcf7_uploads'; } add_action( 'template_redirect', 'wpcf7_cleanup_upload_files', 20 ); function wpcf7_cleanup_upload_files( $seconds = 60, $max = 100 ) { if ( is_admin() || 'GET' != $_SERVER['REQUEST_METHOD'] || is_robots() || is_feed() || is_trackback() ) { return; } $dir = trailingslashit( wpcf7_upload_tmp_dir() ); if ( ! is_dir( $dir ) || ! is_readable( $dir ) || ! wp_is_writable( $dir ) ) { return; } $seconds = absint( $seconds ); $max = absint( $max ); $count = 0; if ( $handle = @opendir( $dir ) ) { while ( false !== ( $file = readdir( $handle ) ) ) { if ( $file == "." || $file == ".." || $file == ".htaccess" ) { continue; } $mtime = @filemtime( $dir . $file ); if ( $mtime && time() < $mtime + $seconds ) { // less than $seconds old continue; } wpcf7_rmdir_p( path_join( $dir, $file ) ); $count += 1; if ( $max <= $count ) { break; } } closedir( $handle ); } } PKP\Elmodules/quiz.phpnuW+A true ) ); } function wpcf7_quiz_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option( '40' ); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ( $atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength'] ) { unset( $atts['maxlength'], $atts['minlength'] ); } $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $atts['autocomplete'] = 'off'; $atts['aria-required'] = 'true'; $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $pipes = $tag->pipes; if ( $pipes instanceof WPCF7_Pipes && ! $pipes->zero() ) { $pipe = $pipes->random_pipe(); $question = $pipe->before; $answer = $pipe->after; } else { // default quiz $question = '1+1=?'; $answer = '2'; } $answer = wpcf7_canonicalize( $answer ); $atts['type'] = 'text'; $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%6$s', sanitize_html_class( $tag->name ), esc_html( $question ), $atts, $tag->name, wp_hash( $answer, 'wpcf7_quiz' ), $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_quiz', 'wpcf7_quiz_validation_filter', 10, 2 ); function wpcf7_quiz_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $name = $tag->name; $answer = isset( $_POST[$name] ) ? wpcf7_canonicalize( $_POST[$name] ) : ''; $answer = wp_unslash( $answer ); $answer_hash = wp_hash( $answer, 'wpcf7_quiz' ); $expected_hash = isset( $_POST['_wpcf7_quiz_answer_' . $name] ) ? (string) $_POST['_wpcf7_quiz_answer_' . $name] : ''; if ( $answer_hash != $expected_hash ) { $result->invalidate( $tag, wpcf7_get_message( 'quiz_answer_not_correct' ) ); } return $result; } /* Ajax echo filter */ add_filter( 'wpcf7_ajax_onload', 'wpcf7_quiz_ajax_refill' ); add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_quiz_ajax_refill' ); function wpcf7_quiz_ajax_refill( $items ) { if ( ! is_array( $items ) ) return $items; $fes = wpcf7_scan_form_tags( array( 'type' => 'quiz' ) ); if ( empty( $fes ) ) return $items; $refill = array(); foreach ( $fes as $fe ) { $name = $fe['name']; $pipes = $fe['pipes']; if ( empty( $name ) ) continue; if ( $pipes instanceof WPCF7_Pipes && ! $pipes->zero() ) { $pipe = $pipes->random_pipe(); $question = $pipe->before; $answer = $pipe->after; } else { // default quiz $question = '1+1=?'; $answer = '2'; } $answer = wpcf7_canonicalize( $answer ); $refill[$name] = array( $question, wp_hash( $answer, 'wpcf7_quiz' ) ); } if ( ! empty( $refill ) ) $items['quiz'] = $refill; return $items; } /* Messages */ add_filter( 'wpcf7_messages', 'wpcf7_quiz_messages' ); function wpcf7_quiz_messages( $messages ) { return array_merge( $messages, array( 'quiz_answer_not_correct' => array( 'description' => __( "Sender doesn't enter the correct answer to the quiz", 'contact-form-7' ), 'default' => __( "The answer to the quiz is incorrect.", 'contact-form-7' ) ) ) ); } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_quiz', 40 ); function wpcf7_add_tag_generator_quiz() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'quiz', __( 'quiz', 'contact-form-7' ), 'wpcf7_tag_generator_quiz' ); } function wpcf7_tag_generator_quiz( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = 'quiz'; $description = __( "Generate a form-tag for a question-answer pair. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/quiz/', 'contact-form-7' ), __( 'Quiz', 'contact-form-7' ) ); ?>

true ) ); } function wpcf7_text_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type, 'wpcf7-text' ); if ( in_array( $tag->basetype, array( 'email', 'url', 'tel' ) ) ) { $class .= ' wpcf7-validates-as-' . $tag->basetype; } if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option( '40' ); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ( $atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength'] ) { unset( $atts['maxlength'], $atts['minlength'] ); } $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $atts['autocomplete'] = $tag->get_option( 'autocomplete', '[-0-9a-zA-Z]+', true ); if ( $tag->has_option( 'readonly' ) ) { $atts['readonly'] = 'readonly'; } if ( $tag->is_required() ) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = (string) reset( $tag->values ); if ( $tag->has_option( 'placeholder' ) || $tag->has_option( 'watermark' ) ) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option( $value ); $value = wpcf7_get_hangover( $tag->name, $value ); $atts['value'] = $value; if ( wpcf7_support_html5() ) { $atts['type'] = $tag->basetype; } else { $atts['type'] = 'text'; } $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%3$s', sanitize_html_class( $tag->name ), $atts, $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_text', 'wpcf7_text_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_text*', 'wpcf7_text_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_url', 'wpcf7_text_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_url*', 'wpcf7_text_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_tel', 'wpcf7_text_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_tel*', 'wpcf7_text_validation_filter', 10, 2 ); function wpcf7_text_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $name = $tag->name; $value = isset( $_POST[$name] ) ? trim( wp_unslash( strtr( (string) $_POST[$name], "\n", " " ) ) ) : ''; if ( 'text' == $tag->basetype ) { if ( $tag->is_required() && '' == $value ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } } if ( 'email' == $tag->basetype ) { if ( $tag->is_required() && '' == $value ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } elseif ( '' != $value && ! wpcf7_is_email( $value ) ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_email' ) ); } } if ( 'url' == $tag->basetype ) { if ( $tag->is_required() && '' == $value ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } elseif ( '' != $value && ! wpcf7_is_url( $value ) ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_url' ) ); } } if ( 'tel' == $tag->basetype ) { if ( $tag->is_required() && '' == $value ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } elseif ( '' != $value && ! wpcf7_is_tel( $value ) ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_tel' ) ); } } if ( '' !== $value ) { $maxlength = $tag->get_maxlength_option(); $minlength = $tag->get_minlength_option(); if ( $maxlength && $minlength && $maxlength < $minlength ) { $maxlength = $minlength = null; } $code_units = wpcf7_count_code_units( stripslashes( $value ) ); if ( false !== $code_units ) { if ( $maxlength && $maxlength < $code_units ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_long' ) ); } elseif ( $minlength && $code_units < $minlength ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_short' ) ); } } } return $result; } /* Messages */ add_filter( 'wpcf7_messages', 'wpcf7_text_messages' ); function wpcf7_text_messages( $messages ) { return array_merge( $messages, array( 'invalid_email' => array( 'description' => __( "Email address that the sender entered is invalid", 'contact-form-7' ), 'default' => __( "The e-mail address entered is invalid.", 'contact-form-7' ) ), 'invalid_url' => array( 'description' => __( "URL that the sender entered is invalid", 'contact-form-7' ), 'default' => __( "The URL is invalid.", 'contact-form-7' ) ), 'invalid_tel' => array( 'description' => __( "Telephone number that the sender entered is invalid", 'contact-form-7' ), 'default' => __( "The telephone number is invalid.", 'contact-form-7' ) ) ) ); } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_text', 15 ); function wpcf7_add_tag_generator_text() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'text', __( 'text', 'contact-form-7' ), 'wpcf7_tag_generator_text' ); $tag_generator->add( 'email', __( 'email', 'contact-form-7' ), 'wpcf7_tag_generator_text' ); $tag_generator->add( 'url', __( 'URL', 'contact-form-7' ), 'wpcf7_tag_generator_text' ); $tag_generator->add( 'tel', __( 'tel', 'contact-form-7' ), 'wpcf7_tag_generator_text' ); } function wpcf7_tag_generator_text( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = $args['id']; if ( ! in_array( $type, array( 'email', 'url', 'tel' ) ) ) { $type = 'text'; } if ( 'text' == $type ) { $description = __( "Generate a form-tag for a single-line plain text input field. For more details, see %s.", 'contact-form-7' ); } elseif ( 'email' == $type ) { $description = __( "Generate a form-tag for a single-line email address input field. For more details, see %s.", 'contact-form-7' ); } elseif ( 'url' == $type ) { $description = __( "Generate a form-tag for a single-line URL input field. For more details, see %s.", 'contact-form-7' ); } elseif ( 'tel' == $type ) { $description = __( "Generate a form-tag for a single-line telephone number input field. For more details, see %s.", 'contact-form-7' ); } $desc_link = wpcf7_link( __( 'https://contactform7.com/text-fields/', 'contact-form-7' ), __( 'Text Fields', 'contact-form-7' ) ); ?>


locale(); foreach ( (array) $options as $option ) { $option = explode( '.', $option ); $type = $option[0]; $args['group'] = isset( $option[1] ) ? $option[1] : null; if ( $list = listo( $type, $args ) ) { $data = array_merge( (array) $data, $list ); } } return $data; } PKP\IHmodules/response.phpnuW+Aform_response_output(); } } PKP\:<<modules/textarea.phpnuW+A true ) ); } function wpcf7_textarea_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['cols'] = $tag->get_cols_option( '40' ); $atts['rows'] = $tag->get_rows_option( '10' ); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ( $atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength'] ) { unset( $atts['maxlength'], $atts['minlength'] ); } $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $atts['autocomplete'] = $tag->get_option( 'autocomplete', '[-0-9a-zA-Z]+', true ); if ( $tag->has_option( 'readonly' ) ) { $atts['readonly'] = 'readonly'; } if ( $tag->is_required() ) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = empty( $tag->content ) ? (string) reset( $tag->values ) : $tag->content; if ( $tag->has_option( 'placeholder' ) || $tag->has_option( 'watermark' ) ) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option( $value ); $value = wpcf7_get_hangover( $tag->name, $value ); $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%4$s', sanitize_html_class( $tag->name ), $atts, esc_textarea( $value ), $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_textarea', 'wpcf7_textarea_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_textarea*', 'wpcf7_textarea_validation_filter', 10, 2 ); function wpcf7_textarea_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $type = $tag->type; $name = $tag->name; $value = isset( $_POST[$name] ) ? (string) $_POST[$name] : ''; if ( $tag->is_required() && '' == $value ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } if ( '' !== $value ) { $maxlength = $tag->get_maxlength_option(); $minlength = $tag->get_minlength_option(); if ( $maxlength && $minlength && $maxlength < $minlength ) { $maxlength = $minlength = null; } $code_units = wpcf7_count_code_units( stripslashes( $value ) ); if ( false !== $code_units ) { if ( $maxlength && $maxlength < $code_units ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_long' ) ); } elseif ( $minlength && $code_units < $minlength ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_short' ) ); } } } return $result; } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_textarea', 20 ); function wpcf7_add_tag_generator_textarea() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'textarea', __( 'text area', 'contact-form-7' ), 'wpcf7_tag_generator_textarea' ); } function wpcf7_tag_generator_textarea( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = 'textarea'; $description = __( "Generate a form-tag for a multi-line text input field. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/text-fields/', 'contact-form-7' ), __( 'Text Fields', 'contact-form-7' ) ); ?>


sitekeys = WPCF7::get_option( 'recaptcha' ); } public function get_title() { return __( 'reCAPTCHA', 'contact-form-7' ); } public function is_active() { $sitekey = $this->get_sitekey(); $secret = $this->get_secret( $sitekey ); return $sitekey && $secret; } public function get_categories() { return array( 'captcha' ); } public function icon() { } public function link() { echo sprintf( '%2$s', 'https://www.google.com/recaptcha/intro/index.html', 'google.com/recaptcha' ); } public function get_sitekey() { if ( empty( $this->sitekeys ) || ! is_array( $this->sitekeys ) ) { return false; } $sitekeys = array_keys( $this->sitekeys ); return $sitekeys[0]; } public function get_secret( $sitekey ) { $sitekeys = (array) $this->sitekeys; if ( isset( $sitekeys[$sitekey] ) ) { return $sitekeys[$sitekey]; } else { return false; } } public function verify( $response_token ) { $is_human = false; if ( empty( $response_token ) ) { return $is_human; } $url = self::VERIFY_URL; $sitekey = $this->get_sitekey(); $secret = $this->get_secret( $sitekey ); $response = wp_safe_remote_post( $url, array( 'body' => array( 'secret' => $secret, 'response' => $response_token, 'remoteip' => $_SERVER['REMOTE_ADDR'] ) ) ); if ( 200 != wp_remote_retrieve_response_code( $response ) ) { return $is_human; } $response = wp_remote_retrieve_body( $response ); $response = json_decode( $response, true ); $is_human = isset( $response['success'] ) && true == $response['success']; return $is_human; } private function menu_page_url( $args = '' ) { $args = wp_parse_args( $args, array() ); $url = menu_page_url( 'wpcf7-integration', false ); $url = add_query_arg( array( 'service' => 'recaptcha' ), $url ); if ( ! empty( $args) ) { $url = add_query_arg( $args, $url ); } return $url; } public function load( $action = '' ) { if ( 'setup' == $action ) { if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) { check_admin_referer( 'wpcf7-recaptcha-setup' ); $sitekey = isset( $_POST['sitekey'] ) ? trim( $_POST['sitekey'] ) : ''; $secret = isset( $_POST['secret'] ) ? trim( $_POST['secret'] ) : ''; if ( $sitekey && $secret ) { WPCF7::update_option( 'recaptcha', array( $sitekey => $secret ) ); $redirect_to = $this->menu_page_url( array( 'message' => 'success' ) ); } elseif ( '' === $sitekey && '' === $secret ) { WPCF7::update_option( 'recaptcha', null ); $redirect_to = $this->menu_page_url( array( 'message' => 'success' ) ); } else { $redirect_to = $this->menu_page_url( array( 'action' => 'setup', 'message' => 'invalid' ) ); } wp_safe_redirect( $redirect_to ); exit(); } } } public function admin_notice( $message = '' ) { if ( 'invalid' == $message ) { echo sprintf( '

%1$s: %2$s

', esc_html( __( "ERROR", 'contact-form-7' ) ), esc_html( __( "Invalid key values.", 'contact-form-7' ) ) ); } if ( 'success' == $message ) { echo sprintf( '

%s

', esc_html( __( 'Settings saved.', 'contact-form-7' ) ) ); } } public function display( $action = '' ) { ?>

display_setup(); return; } if ( $this->is_active() ) { $sitekey = $this->get_sitekey(); $secret = $this->get_secret( $sitekey ); ?>

__( 'CAPTCHA', 'contact-form-7' ) ); foreach ( $categories as $name => $category ) { $integration->add_category( $name, $category ); } $services = array( 'recaptcha' => WPCF7_RECAPTCHA::get_instance() ); foreach ( $services as $name => $service ) { $integration->add_service( $name, $service ); } } add_action( 'wpcf7_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts' ); function wpcf7_recaptcha_enqueue_scripts() { $url = 'https://www.google.com/recaptcha/api.js'; $url = add_query_arg( array( 'onload' => 'recaptchaCallback', 'render' => 'explicit' ), $url ); wp_register_script( 'google-recaptcha', $url, array(), '2.0', true ); } add_action( 'wp_footer', 'wpcf7_recaptcha_callback_script' ); function wpcf7_recaptcha_callback_script() { if ( ! wp_script_is( 'google-recaptcha', 'enqueued' ) ) { return; } ?> is_active() ) { wpcf7_add_form_tag( 'recaptcha', 'wpcf7_recaptcha_form_tag_handler' ); } } function wpcf7_recaptcha_form_tag_handler( $tag ) { if ( ! wp_script_is( 'google-recaptcha', 'registered' ) ) { wpcf7_recaptcha_enqueue_scripts(); } wp_enqueue_script( 'google-recaptcha' ); $tag = new WPCF7_FormTag( $tag ); $atts = array(); $recaptcha = WPCF7_RECAPTCHA::get_instance(); $atts['data-sitekey'] = $recaptcha->get_sitekey(); $atts['data-theme'] = $tag->get_option( 'theme', '(dark|light)', true ); $atts['data-type'] = $tag->get_option( 'type', '(audio|image)', true ); $atts['data-size'] = $tag->get_option( 'size', '(compact|normal)', true ); $atts['data-tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $atts['data-callback'] = $tag->get_option( 'callback', '', true ); $atts['data-expired-callback'] = $tag->get_option( 'expired_callback', '', true ); $atts['class'] = $tag->get_class_option( wpcf7_form_controls_class( $tag->type, 'g-recaptcha' ) ); $atts['id'] = $tag->get_id_option(); $html = sprintf( '
', wpcf7_format_atts( $atts ) ); $html .= wpcf7_recaptcha_noscript( array( 'sitekey' => $atts['data-sitekey'] ) ); $html = sprintf( '
%s
', $html ); return $html; } function wpcf7_recaptcha_noscript( $args = '' ) { $args = wp_parse_args( $args, array( 'sitekey' => '' ) ); if ( empty( $args['sitekey'] ) ) { return; } $url = add_query_arg( 'k', $args['sitekey'], 'https://www.google.com/recaptcha/api/fallback' ); ob_start(); ?> scan_form_tags( array( 'type' => 'recaptcha' ) ); if ( empty( $tags ) ) { return $spam; } $recaptcha = WPCF7_RECAPTCHA::get_instance(); if ( ! $recaptcha->is_active() ) { return $spam; } $response_token = wpcf7_recaptcha_response(); $spam = ! $recaptcha->verify( $response_token ); return $spam; } add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_recaptcha', 45 ); function wpcf7_add_tag_generator_recaptcha() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'recaptcha', __( 'reCAPTCHA', 'contact-form-7' ), 'wpcf7_tag_generator_recaptcha', array( 'nameless' => 1 ) ); } function wpcf7_tag_generator_recaptcha( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $recaptcha = WPCF7_RECAPTCHA::get_instance(); if ( ! $recaptcha->is_active() ) { ?>


>!modules/really-simple-captcha.phpnuW+A true ) ); } function wpcf7_captcha_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( 'captchac' == $tag->type && ! class_exists( 'ReallySimpleCaptcha' ) ) { return '' . __( 'To use CAPTCHA, you need Really Simple CAPTCHA plugin installed.', 'contact-form-7' ) . ''; } if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); if ( 'captchac' == $tag->type ) { // CAPTCHA-Challenge (image) $class .= ' wpcf7-captcha-' . $tag->name; $atts = array(); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $op = array( // Default 'img_size' => array( 72, 24 ), 'base' => array( 6, 18 ), 'font_size' => 14, 'font_char_width' => 15 ); $op = array_merge( $op, wpcf7_captchac_options( $tag->options ) ); if ( ! $filename = wpcf7_generate_captcha( $op ) ) { return ''; } if ( ! empty( $op['img_size'] ) ) { if ( isset( $op['img_size'][0] ) ) { $atts['width'] = $op['img_size'][0]; } if ( isset( $op['img_size'][1] ) ) { $atts['height'] = $op['img_size'][1]; } } $atts['alt'] = 'captcha'; $atts['src'] = wpcf7_captcha_url( $filename ); $atts = wpcf7_format_atts( $atts ); $prefix = substr( $filename, 0, strrpos( $filename, '.' ) ); $html = sprintf( '', $tag->name, $prefix, $atts ); return $html; } elseif ( 'captchar' == $tag->type ) { // CAPTCHA-Response (input) if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option( '40' ); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ( $atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength'] ) { unset( $atts['maxlength'], $atts['minlength'] ); } $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $atts['autocomplete'] = 'off'; $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = (string) reset( $tag->values ); if ( wpcf7_is_posted() ) { $value = ''; } if ( $tag->has_option( 'placeholder' ) || $tag->has_option( 'watermark' ) ) { $atts['placeholder'] = $value; $value = ''; } $atts['value'] = $value; $atts['type'] = 'text'; $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%3$s', sanitize_html_class( $tag->name ), $atts, $validation_error ); return $html; } } /* Validation filter */ add_filter( 'wpcf7_validate_captchar', 'wpcf7_captcha_validation_filter', 10, 2 ); function wpcf7_captcha_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $type = $tag->type; $name = $tag->name; $captchac = '_wpcf7_captcha_challenge_' . $name; $prefix = isset( $_POST[$captchac] ) ? (string) $_POST[$captchac] : ''; $response = isset( $_POST[$name] ) ? (string) $_POST[$name] : ''; $response = wpcf7_canonicalize( $response ); if ( 0 == strlen( $prefix ) || ! wpcf7_check_captcha( $prefix, $response ) ) { $result->invalidate( $tag, wpcf7_get_message( 'captcha_not_match' ) ); } if ( 0 != strlen( $prefix ) ) { wpcf7_remove_captcha( $prefix ); } return $result; } /* Ajax echo filter */ add_filter( 'wpcf7_ajax_onload', 'wpcf7_captcha_ajax_refill' ); add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_captcha_ajax_refill' ); function wpcf7_captcha_ajax_refill( $items ) { if ( ! is_array( $items ) ) return $items; $fes = wpcf7_scan_form_tags( array( 'type' => 'captchac' ) ); if ( empty( $fes ) ) return $items; $refill = array(); foreach ( $fes as $fe ) { $name = $fe['name']; $options = $fe['options']; if ( empty( $name ) ) continue; $op = wpcf7_captchac_options( $options ); if ( $filename = wpcf7_generate_captcha( $op ) ) { $captcha_url = wpcf7_captcha_url( $filename ); $refill[$name] = $captcha_url; } } if ( ! empty( $refill ) ) $items['captcha'] = $refill; return $items; } /* Messages */ add_filter( 'wpcf7_messages', 'wpcf7_captcha_messages' ); function wpcf7_captcha_messages( $messages ) { return array_merge( $messages, array( 'captcha_not_match' => array( 'description' => __( "The code that sender entered does not match the CAPTCHA", 'contact-form-7' ), 'default' => __( 'Your entered code is incorrect.', 'contact-form-7' ) ) ) ); } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_captcha', 46 ); function wpcf7_add_tag_generator_captcha() { if ( ! wpcf7_use_really_simple_captcha() ) { return; } $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'captcha', __( 'CAPTCHA (Really Simple CAPTCHA)', 'contact-form-7' ), 'wpcf7_tag_generator_captcha' ); } function wpcf7_tag_generator_captcha( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); if ( ! class_exists( 'ReallySimpleCaptcha' ) ) { ?>
scan_form_tags( array( 'type' => array( 'captchac' ) ) ); if ( ! $has_tags ) { return; } if ( ! class_exists( 'ReallySimpleCaptcha' ) ) { return; } $uploads_dir = wpcf7_captcha_tmp_dir(); wpcf7_init_captcha(); if ( ! is_dir( $uploads_dir ) || ! wp_is_writable( $uploads_dir ) ) { $message = sprintf( __( 'This contact form contains CAPTCHA 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 ); echo '

' . esc_html( $message ) . '

'; } if ( ! function_exists( 'imagecreatetruecolor' ) || ! function_exists( 'imagettftext' ) ) { $message = __( 'This contact form contains CAPTCHA fields, but the necessary libraries (GD and FreeType) are not available on your server.', 'contact-form-7' ); echo '

' . esc_html( $message ) . '

'; } } /* CAPTCHA functions */ function wpcf7_init_captcha() { static $captcha = null; if ( $captcha ) { return $captcha; } if ( class_exists( 'ReallySimpleCaptcha' ) ) { $captcha = new ReallySimpleCaptcha(); } else { return false; } $dir = trailingslashit( wpcf7_captcha_tmp_dir() ); $captcha->tmp_dir = $dir; if ( is_callable( array( $captcha, 'make_tmp_dir' ) ) ) { $result = $captcha->make_tmp_dir(); if ( ! $result ) { return false; } return $captcha; } if ( wp_mkdir_p( $dir ) ) { $htaccess_file = $dir . '.htaccess'; if ( file_exists( $htaccess_file ) ) { return $captcha; } if ( $handle = @fopen( $htaccess_file, 'w' ) ) { fwrite( $handle, 'Order deny,allow' . "\n" ); fwrite( $handle, 'Deny from all' . "\n" ); fwrite( $handle, '' . "\n" ); fwrite( $handle, ' Allow from all' . "\n" ); fwrite( $handle, '' . "\n" ); fclose( $handle ); } } else { return false; } return $captcha; } function wpcf7_captcha_tmp_dir() { if ( defined( 'WPCF7_CAPTCHA_TMP_DIR' ) ) return WPCF7_CAPTCHA_TMP_DIR; else return wpcf7_upload_dir( 'dir' ) . '/wpcf7_captcha'; } function wpcf7_captcha_tmp_url() { if ( defined( 'WPCF7_CAPTCHA_TMP_URL' ) ) return WPCF7_CAPTCHA_TMP_URL; else return wpcf7_upload_dir( 'url' ) . '/wpcf7_captcha'; } function wpcf7_captcha_url( $filename ) { $url = trailingslashit( wpcf7_captcha_tmp_url() ) . $filename; if ( is_ssl() && 'http:' == substr( $url, 0, 5 ) ) { $url = 'https:' . substr( $url, 5 ); } return apply_filters( 'wpcf7_captcha_url', esc_url_raw( $url ) ); } function wpcf7_generate_captcha( $options = null ) { if ( ! $captcha = wpcf7_init_captcha() ) { return false; } if ( ! is_dir( $captcha->tmp_dir ) || ! wp_is_writable( $captcha->tmp_dir ) ) return false; $img_type = imagetypes(); if ( $img_type & IMG_PNG ) $captcha->img_type = 'png'; elseif ( $img_type & IMG_GIF ) $captcha->img_type = 'gif'; elseif ( $img_type & IMG_JPG ) $captcha->img_type = 'jpeg'; else return false; if ( is_array( $options ) ) { if ( isset( $options['img_size'] ) ) $captcha->img_size = $options['img_size']; if ( isset( $options['base'] ) ) $captcha->base = $options['base']; if ( isset( $options['font_size'] ) ) $captcha->font_size = $options['font_size']; if ( isset( $options['font_char_width'] ) ) $captcha->font_char_width = $options['font_char_width']; if ( isset( $options['fg'] ) ) $captcha->fg = $options['fg']; if ( isset( $options['bg'] ) ) $captcha->bg = $options['bg']; } $prefix = wp_rand(); $captcha_word = $captcha->generate_random_word(); return $captcha->generate_image( $prefix, $captcha_word ); } function wpcf7_check_captcha( $prefix, $response ) { if ( ! $captcha = wpcf7_init_captcha() ) { return false; } return $captcha->check( $prefix, $response ); } function wpcf7_remove_captcha( $prefix ) { if ( ! $captcha = wpcf7_init_captcha() ) { return false; } if ( preg_match( '/[^0-9]/', $prefix ) ) // Contact Form 7 generates $prefix with wp_rand() return false; $captcha->remove( $prefix ); } add_action( 'template_redirect', 'wpcf7_cleanup_captcha_files', 20 ); function wpcf7_cleanup_captcha_files() { if ( ! $captcha = wpcf7_init_captcha() ) { return false; } if ( is_callable( array( $captcha, 'cleanup' ) ) ) return $captcha->cleanup(); $dir = trailingslashit( wpcf7_captcha_tmp_dir() ); if ( ! is_dir( $dir ) || ! is_readable( $dir ) || ! wp_is_writable( $dir ) ) return false; if ( $handle = @opendir( $dir ) ) { while ( false !== ( $file = readdir( $handle ) ) ) { if ( ! preg_match( '/^[0-9]+\.(php|txt|png|gif|jpeg)$/', $file ) ) continue; $stat = @stat( $dir . $file ); if ( $stat['mtime'] + 3600 < time() ) // 3600 secs == 1 hour @unlink( $dir . $file ); } closedir( $handle ); } } function wpcf7_captchac_options( $options ) { if ( ! is_array( $options ) ) return array(); $op = array(); $image_size_array = preg_grep( '%^size:[smlSML]$%', $options ); if ( $image_size = array_shift( $image_size_array ) ) { preg_match( '%^size:([smlSML])$%', $image_size, $is_matches ); switch ( strtolower( $is_matches[1] ) ) { case 's': $op['img_size'] = array( 60, 20 ); $op['base'] = array( 6, 15 ); $op['font_size'] = 11; $op['font_char_width'] = 13; break; case 'l': $op['img_size'] = array( 84, 28 ); $op['base'] = array( 6, 20 ); $op['font_size'] = 17; $op['font_char_width'] = 19; break; case 'm': default: $op['img_size'] = array( 72, 24 ); $op['base'] = array( 6, 18 ); $op['font_size'] = 14; $op['font_char_width'] = 15; } } $fg_color_array = preg_grep( '%^fg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $options ); if ( $fg_color = array_shift( $fg_color_array ) ) { preg_match( '%^fg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $fg_color, $fc_matches ); if ( 3 == strlen( $fc_matches[1] ) ) { $r = substr( $fc_matches[1], 0, 1 ); $g = substr( $fc_matches[1], 1, 1 ); $b = substr( $fc_matches[1], 2, 1 ); $op['fg'] = array( hexdec( $r . $r ), hexdec( $g . $g ), hexdec( $b . $b ) ); } elseif ( 6 == strlen( $fc_matches[1] ) ) { $r = substr( $fc_matches[1], 0, 2 ); $g = substr( $fc_matches[1], 2, 2 ); $b = substr( $fc_matches[1], 4, 2 ); $op['fg'] = array( hexdec( $r ), hexdec( $g ), hexdec( $b ) ); } } $bg_color_array = preg_grep( '%^bg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $options ); if ( $bg_color = array_shift( $bg_color_array ) ) { preg_match( '%^bg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $bg_color, $bc_matches ); if ( 3 == strlen( $bc_matches[1] ) ) { $r = substr( $bc_matches[1], 0, 1 ); $g = substr( $bc_matches[1], 1, 1 ); $b = substr( $bc_matches[1], 2, 1 ); $op['bg'] = array( hexdec( $r . $r ), hexdec( $g . $g ), hexdec( $b . $b ) ); } elseif ( 6 == strlen( $bc_matches[1] ) ) { $r = substr( $bc_matches[1], 0, 2 ); $g = substr( $bc_matches[1], 2, 2 ); $b = substr( $bc_matches[1], 4, 2 ); $op['bg'] = array( hexdec( $r ), hexdec( $g ), hexdec( $b ) ); } } return $op; } PKP\Z#]r r modules/number.phpnuW+A true ) ); } function wpcf7_number_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); $class .= ' wpcf7-validates-as-number'; if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $atts['min'] = $tag->get_option( 'min', 'signed_int', true ); $atts['max'] = $tag->get_option( 'max', 'signed_int', true ); $atts['step'] = $tag->get_option( 'step', 'int', true ); if ( $tag->has_option( 'readonly' ) ) { $atts['readonly'] = 'readonly'; } if ( $tag->is_required() ) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = (string) reset( $tag->values ); if ( $tag->has_option( 'placeholder' ) || $tag->has_option( 'watermark' ) ) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option( $value ); $value = wpcf7_get_hangover( $tag->name, $value ); $atts['value'] = $value; if ( wpcf7_support_html5() ) { $atts['type'] = $tag->basetype; } else { $atts['type'] = 'text'; } $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%3$s', sanitize_html_class( $tag->name ), $atts, $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_number', 'wpcf7_number_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_number*', 'wpcf7_number_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_range', 'wpcf7_number_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_range*', 'wpcf7_number_validation_filter', 10, 2 ); function wpcf7_number_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $name = $tag->name; $value = isset( $_POST[$name] ) ? trim( strtr( (string) $_POST[$name], "\n", " " ) ) : ''; $min = $tag->get_option( 'min', 'signed_int', true ); $max = $tag->get_option( 'max', 'signed_int', true ); if ( $tag->is_required() && '' == $value ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } elseif ( '' != $value && ! wpcf7_is_number( $value ) ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_number' ) ); } elseif ( '' != $value && '' != $min && (float) $value < (float) $min ) { $result->invalidate( $tag, wpcf7_get_message( 'number_too_small' ) ); } elseif ( '' != $value && '' != $max && (float) $max < (float) $value ) { $result->invalidate( $tag, wpcf7_get_message( 'number_too_large' ) ); } return $result; } /* Messages */ add_filter( 'wpcf7_messages', 'wpcf7_number_messages' ); function wpcf7_number_messages( $messages ) { return array_merge( $messages, array( 'invalid_number' => array( 'description' => __( "Number format that the sender entered is invalid", 'contact-form-7' ), 'default' => __( "The number format is invalid.", 'contact-form-7' ) ), 'number_too_small' => array( 'description' => __( "Number is smaller than minimum limit", 'contact-form-7' ), 'default' => __( "The number is smaller than the minimum allowed.", 'contact-form-7' ) ), 'number_too_large' => array( 'description' => __( "Number is larger than maximum limit", 'contact-form-7' ), 'default' => __( "The number is larger than the maximum allowed.", 'contact-form-7' ) ) ) ); } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_number', 18 ); function wpcf7_add_tag_generator_number() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'number', __( 'number', 'contact-form-7' ), 'wpcf7_tag_generator_number' ); } function wpcf7_tag_generator_number( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = 'number'; $description = __( "Generate a form-tag for a field for numeric value input. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/number-fields/', 'contact-form-7' ), __( 'Number Fields', 'contact-form-7' ) ); ?>



in_demo_mode() || $contactform->is_true( 'do_not_store' ) ) { return; } $cases = (array) apply_filters( 'wpcf7_flamingo_submit_if', array( 'spam', 'mail_sent', 'mail_failed' ) ); if ( empty( $result['status'] ) || ! in_array( $result['status'], $cases ) ) { return; } $submission = WPCF7_Submission::get_instance(); if ( ! $submission || ! $posted_data = $submission->get_posted_data() ) { return; } $fields_senseless = $contactform->scan_form_tags( array( 'type' => array( 'captchar', 'quiz', 'acceptance' ) ) ); $exclude_names = array(); foreach ( $fields_senseless as $tag ) { $exclude_names[] = $tag['name']; } $exclude_names[] = 'g-recaptcha-response'; foreach ( $posted_data as $key => $value ) { if ( '_' == substr( $key, 0, 1 ) || in_array( $key, $exclude_names ) ) { unset( $posted_data[$key] ); } } $email = wpcf7_flamingo_get_value( 'email', $contactform ); $name = wpcf7_flamingo_get_value( 'name', $contactform ); $subject = wpcf7_flamingo_get_value( 'subject', $contactform ); $meta = array(); $special_mail_tags = array( 'remote_ip', 'user_agent', 'url', 'date', 'time', 'post_id', 'post_name', 'post_title', 'post_url', 'post_author', 'post_author_email' ); foreach ( $special_mail_tags as $smt ) { $meta[$smt] = apply_filters( 'wpcf7_special_mail_tags', '', '_' . $smt, false ); } $akismet = isset( $submission->akismet ) ? (array) $submission->akismet : null; if ( 'mail_sent' == $result['status'] ) { $flamingo_contact = Flamingo_Contact::add( array( 'email' => $email, 'name' => $name ) ); } $channel_id = wpcf7_flamingo_add_channel( $contactform->name(), $contactform->title() ); if ( $channel_id ) { $channel = get_term( $channel_id, Flamingo_Inbound_Message::channel_taxonomy ); if ( ! $channel || is_wp_error( $channel ) ) { $channel = 'contact-form-7'; } else { $channel = $channel->slug; } } else { $channel = 'contact-form-7'; } $args = array( 'channel' => $channel, 'subject' => $subject, 'from' => trim( sprintf( '%s <%s>', $name, $email ) ), 'from_name' => $name, 'from_email' => $email, 'fields' => $posted_data, 'meta' => $meta, 'akismet' => $akismet, 'spam' => ( 'spam' == $result['status'] ) ); $flamingo_inbound = Flamingo_Inbound_Message::add( $args ); $result += array( 'flamingo_contact_id' => empty( $flamingo_contact ) ? 0 : absint( $flamingo_contact->id ), 'flamingo_inbound_id' => empty( $flamingo_inbound ) ? 0 : absint( $flamingo_inbound->id ) ); do_action( 'wpcf7_after_flamingo', $result ); } function wpcf7_flamingo_get_value( $field, $contactform ) { if ( empty( $field ) || empty( $contactform ) ) { return false; } $value = ''; if ( in_array( $field, array( 'email', 'name', 'subject' ) ) ) { $templates = $contactform->additional_setting( 'flamingo_' . $field ); if ( empty( $templates[0] ) ) { $template = sprintf( '[your-%s]', $field ); } else { $template = trim( wpcf7_strip_quote( $templates[0] ) ); } $value = wpcf7_mail_replace_tags( $template ); } $value = apply_filters( 'wpcf7_flamingo_get_value', $value, $field, $contactform ); return $value; } function wpcf7_flamingo_add_channel( $slug, $name = '' ) { if ( ! class_exists( 'Flamingo_Inbound_Message' ) ) { return false; } $parent = term_exists( 'contact-form-7', Flamingo_Inbound_Message::channel_taxonomy ); if ( ! $parent ) { $parent = wp_insert_term( __( 'Contact Form 7', 'contact-form-7' ), Flamingo_Inbound_Message::channel_taxonomy, array( 'slug' => 'contact-form-7' ) ); if ( is_wp_error( $parent ) ) { return false; } } $parent = (int) $parent['term_id']; if ( ! is_taxonomy_hierarchical( Flamingo_Inbound_Message::channel_taxonomy ) ) { // backward compat for Flamingo 1.0.4 and lower return $parent; } if ( empty( $name ) ) { $name = $slug; } $channel = term_exists( $slug, Flamingo_Inbound_Message::channel_taxonomy, $parent ); if ( ! $channel ) { $channel = wp_insert_term( $name, Flamingo_Inbound_Message::channel_taxonomy, array( 'slug' => $slug, 'parent' => $parent ) ); if ( is_wp_error( $channel ) ) { return false; } } return (int) $channel['term_id']; } add_filter( 'wpcf7_special_mail_tags', 'wpcf7_flamingo_serial_number', 10, 3 ); function wpcf7_flamingo_serial_number( $output, $name, $html ) { if ( '_serial_number' != $name ) { return $output; } if ( ! class_exists( 'Flamingo_Inbound_Message' ) || ! method_exists( 'Flamingo_Inbound_Message', 'count' ) ) { return $output; } if ( ! $contact_form = WPCF7_ContactForm::get_current() ) { return $output; } $channel_id = wpcf7_flamingo_add_channel( $contact_form->name(), $contact_form->title() ); if ( $channel_id ) { return 1 + (int) Flamingo_Inbound_Message::count( array( 'channel_id' => $channel_id ) ); } return 0; } PKP\yXmodules/count.phpnuW+A true ) ); } function wpcf7_count_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $targets = wpcf7_scan_form_tags( array( 'name' => $tag->name ) ); $maxlength = $minlength = null; while ( $targets ) { $target = array_shift( $targets ); $target = new WPCF7_FormTag( $target ); if ( 'count' != $target->type ) { $maxlength = $target->get_maxlength_option(); $minlength = $target->get_minlength_option(); break; } } if ( $maxlength && $minlength && $maxlength < $minlength ) { $maxlength = $minlength = null; } if ( $tag->has_option( 'down' ) ) { $value = (int) $maxlength; $class = 'wpcf7-character-count down'; } else { $value = '0'; $class = 'wpcf7-character-count up'; } $atts = array(); $atts['id'] = $tag->get_id_option(); $atts['class'] = $tag->get_class_option( $class ); $atts['data-target-name'] = $tag->name; $atts['data-starting-value'] = $value; $atts['data-current-value'] = $value; $atts['data-maximum-value'] = $maxlength; $atts['data-minimum-value'] = $minlength; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%2$s', $atts, $value ); return $html; } PKP\mf} } modules/submit.phpnuW+Atype ); $atts = array(); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $value = isset( $tag->values[0] ) ? $tag->values[0] : ''; if ( empty( $value ) ) { $value = __( 'Send', 'contact-form-7' ); } $atts['type'] = 'submit'; $atts['value'] = $value; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '', $atts ); return $html; } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_submit', 55 ); function wpcf7_add_tag_generator_submit() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'submit', __( 'submit', 'contact-form-7' ), 'wpcf7_tag_generator_submit', array( 'nameless' => 1 ) ); } function wpcf7_tag_generator_submit( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $description = __( "Generate a form-tag for a submit button. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/submit-button/', 'contact-form-7' ), __( 'Submit Button', 'contact-form-7' ) ); ?>
true ) ); } function wpcf7_hidden_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $atts = array(); $class = wpcf7_form_controls_class( $tag->type ); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $value = (string) reset( $tag->values ); $value = $tag->get_default_option( $value ); $atts['value'] = $value; $atts['type'] = 'hidden'; $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '', $atts ); return $html; } PKP\,-W+W+modules/checkbox.phpnuW+A true, 'selectable-values' => true, 'multiple-controls-container' => true ) ); } function wpcf7_checkbox_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $label_first = $tag->has_option( 'label_first' ); $use_label_element = $tag->has_option( 'use_label_element' ); $exclusive = $tag->has_option( 'exclusive' ); $free_text = $tag->has_option( 'free_text' ); $multiple = false; if ( 'checkbox' == $tag->basetype ) { $multiple = ! $exclusive; } else { // radio $exclusive = false; } if ( $exclusive ) { $class .= ' wpcf7-exclusive-checkbox'; } $atts = array(); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $tabindex = $tag->get_option( 'tabindex', 'int', true ); if ( false !== $tabindex ) { $tabindex = absint( $tabindex ); } $html = ''; $count = 0; $values = (array) $tag->values; $labels = (array) $tag->labels; if ( $data = (array) $tag->get_data_option() ) { if ( $free_text ) { $values = array_merge( array_slice( $values, 0, -1 ), array_values( $data ), array_slice( $values, -1 ) ); $labels = array_merge( array_slice( $labels, 0, -1 ), array_values( $data ), array_slice( $labels, -1 ) ); } else { $values = array_merge( $values, array_values( $data ) ); $labels = array_merge( $labels, array_values( $data ) ); } } $defaults = array(); $default_choice = $tag->get_default_option( null, 'multiple=1' ); foreach ( $default_choice as $value ) { $key = array_search( $value, $values, true ); if ( false !== $key ) { $defaults[] = (int) $key + 1; } } if ( $matches = $tag->get_first_match_option( '/^default:([0-9_]+)$/' ) ) { $defaults = array_merge( $defaults, explode( '_', $matches[1] ) ); } $defaults = array_unique( $defaults ); $hangover = wpcf7_get_hangover( $tag->name, $multiple ? array() : '' ); foreach ( $values as $key => $value ) { $class = 'wpcf7-list-item'; $checked = false; if ( $hangover ) { if ( $multiple ) { $checked = in_array( esc_sql( $value ), (array) $hangover ); } else { $checked = ( $hangover == esc_sql( $value ) ); } } else { $checked = in_array( $key + 1, (array) $defaults ); } if ( isset( $labels[$key] ) ) $label = $labels[$key]; else $label = $value; $item_atts = array( 'type' => $tag->basetype, 'name' => $tag->name . ( $multiple ? '[]' : '' ), 'value' => $value, 'checked' => $checked ? 'checked' : '', 'tabindex' => $tabindex ? $tabindex : '' ); $item_atts = wpcf7_format_atts( $item_atts ); if ( $label_first ) { // put label first, input last $item = sprintf( '%1$s', esc_html( $label ), $item_atts ); } else { $item = sprintf( '%1$s', esc_html( $label ), $item_atts ); } if ( $use_label_element ) $item = ''; if ( false !== $tabindex ) $tabindex += 1; $count += 1; if ( 1 == $count ) { $class .= ' first'; } if ( count( $values ) == $count ) { // last round $class .= ' last'; if ( $free_text ) { $free_text_name = sprintf( '_wpcf7_%1$s_free_text_%2$s', $tag->basetype, $tag->name ); $free_text_atts = array( 'name' => $free_text_name, 'class' => 'wpcf7-free-text', 'tabindex' => $tabindex ? $tabindex : '' ); if ( wpcf7_is_posted() && isset( $_POST[$free_text_name] ) ) { $free_text_atts['value'] = wp_unslash( $_POST[$free_text_name] ); } $free_text_atts = wpcf7_format_atts( $free_text_atts ); $item .= sprintf( ' ', $free_text_atts ); $class .= ' has-free-text'; } } $item = '' . $item . ''; $html .= $item; } $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%3$s%4$s', sanitize_html_class( $tag->name ), $atts, $html, $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_checkbox', 'wpcf7_checkbox_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_checkbox*', 'wpcf7_checkbox_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_radio', 'wpcf7_checkbox_validation_filter', 10, 2 ); function wpcf7_checkbox_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $type = $tag->type; $name = $tag->name; $value = isset( $_POST[$name] ) ? (array) $_POST[$name] : array(); if ( $tag->is_required() && empty( $value ) ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } return $result; } /* Adding free text field */ add_filter( 'wpcf7_posted_data', 'wpcf7_checkbox_posted_data' ); function wpcf7_checkbox_posted_data( $posted_data ) { $tags = wpcf7_scan_form_tags( array( 'type' => array( 'checkbox', 'checkbox*', 'radio' ) ) ); if ( empty( $tags ) ) { return $posted_data; } foreach ( $tags as $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( ! isset( $posted_data[$tag->name] ) ) { continue; } $posted_items = (array) $posted_data[$tag->name]; if ( $tag->has_option( 'free_text' ) ) { if ( WPCF7_USE_PIPE ) { $values = $tag->pipes->collect_afters(); } else { $values = $tag->values; } $last = array_pop( $values ); $last = html_entity_decode( $last, ENT_QUOTES, 'UTF-8' ); if ( in_array( $last, $posted_items ) ) { $posted_items = array_diff( $posted_items, array( $last ) ); $free_text_name = sprintf( '_wpcf7_%1$s_free_text_%2$s', $tag->basetype, $tag->name ); $free_text = $posted_data[$free_text_name]; if ( ! empty( $free_text ) ) { $posted_items[] = trim( $last . ' ' . $free_text ); } else { $posted_items[] = $last; } } } $posted_data[$tag->name] = $posted_items; } return $posted_data; } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_checkbox_and_radio', 30 ); function wpcf7_add_tag_generator_checkbox_and_radio() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'checkbox', __( 'checkboxes', 'contact-form-7' ), 'wpcf7_tag_generator_checkbox' ); $tag_generator->add( 'radio', __( 'radio buttons', 'contact-form-7' ), 'wpcf7_tag_generator_checkbox' ); } function wpcf7_tag_generator_checkbox( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = $args['id']; if ( 'radio' != $type ) { $type = 'checkbox'; } if ( 'checkbox' == $type ) { $description = __( "Generate a form-tag for a group of checkboxes. For more details, see %s.", 'contact-form-7' ); } elseif ( 'radio' == $type ) { $description = __( "Generate a form-tag for a group of radio buttons. For more details, see %s.", 'contact-form-7' ); } $desc_link = wpcf7_link( __( 'https://contactform7.com/checkboxes-radio-buttons-and-menus/', 'contact-form-7' ), __( 'Checkboxes, Radio Buttons and Menus', 'contact-form-7' ) ); ?>




true ) ); } function wpcf7_date_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); $class .= ' wpcf7-validates-as-date'; if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $atts['min'] = $tag->get_date_option( 'min' ); $atts['max'] = $tag->get_date_option( 'max' ); $atts['step'] = $tag->get_option( 'step', 'int', true ); if ( $tag->has_option( 'readonly' ) ) { $atts['readonly'] = 'readonly'; } if ( $tag->is_required() ) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = (string) reset( $tag->values ); if ( $tag->has_option( 'placeholder' ) || $tag->has_option( 'watermark' ) ) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option( $value ); $value = wpcf7_get_hangover( $tag->name, $value ); $atts['value'] = $value; if ( wpcf7_support_html5() ) { $atts['type'] = $tag->basetype; } else { $atts['type'] = 'text'; } $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%3$s', sanitize_html_class( $tag->name ), $atts, $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_date', 'wpcf7_date_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_date*', 'wpcf7_date_validation_filter', 10, 2 ); function wpcf7_date_validation_filter( $result, $tag ) { $tag = new WPCF7_FormTag( $tag ); $name = $tag->name; $min = $tag->get_date_option( 'min' ); $max = $tag->get_date_option( 'max' ); $value = isset( $_POST[$name] ) ? trim( strtr( (string) $_POST[$name], "\n", " " ) ) : ''; if ( $tag->is_required() && '' == $value ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } elseif ( '' != $value && ! wpcf7_is_date( $value ) ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_date' ) ); } elseif ( '' != $value && ! empty( $min ) && $value < $min ) { $result->invalidate( $tag, wpcf7_get_message( 'date_too_early' ) ); } elseif ( '' != $value && ! empty( $max ) && $max < $value ) { $result->invalidate( $tag, wpcf7_get_message( 'date_too_late' ) ); } return $result; } /* Messages */ add_filter( 'wpcf7_messages', 'wpcf7_date_messages' ); function wpcf7_date_messages( $messages ) { return array_merge( $messages, array( 'invalid_date' => array( 'description' => __( "Date format that the sender entered is invalid", 'contact-form-7' ), 'default' => __( "The date format is incorrect.", 'contact-form-7' ) ), 'date_too_early' => array( 'description' => __( "Date is earlier than minimum limit", 'contact-form-7' ), 'default' => __( "The date is before the earliest one allowed.", 'contact-form-7' ) ), 'date_too_late' => array( 'description' => __( "Date is later than maximum limit", 'contact-form-7' ), 'default' => __( "The date is after the latest one allowed.", 'contact-form-7' ) ) ) ); } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_date', 19 ); function wpcf7_add_tag_generator_date() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'date', __( 'date', 'contact-form-7' ), 'wpcf7_tag_generator_date' ); } function wpcf7_tag_generator_date( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = 'date'; $description = __( "Generate a form-tag for a date input field. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/date-field/', 'contact-form-7' ), __( 'Date Field', 'contact-form-7' ) ); ?>


true ) ); } function wpcf7_acceptance_form_tag_handler( $tag ) { $tag = new WPCF7_FormTag( $tag ); if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } if ( $tag->has_option( 'invert' ) ) { $class .= ' wpcf7-invert'; } $atts = array(); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); if ( $tag->has_option( 'default:on' ) ) { $atts['checked'] = 'checked'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $atts['type'] = 'checkbox'; $atts['name'] = $tag->name; $atts['value'] = '1'; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%3$s', sanitize_html_class( $tag->name ), $atts, $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_acceptance', 'wpcf7_acceptance_validation_filter', 10, 2 ); function wpcf7_acceptance_validation_filter( $result, $tag ) { if ( ! wpcf7_acceptance_as_validation() ) { return $result; } $tag = new WPCF7_FormTag( $tag ); $name = $tag->name; $value = ( ! empty( $_POST[$name] ) ? 1 : 0 ); $invert = $tag->has_option( 'invert' ); if ( $invert && $value || ! $invert && ! $value ) { $result->invalidate( $tag, wpcf7_get_message( 'accept_terms' ) ); } return $result; } /* Acceptance filter */ add_filter( 'wpcf7_acceptance', 'wpcf7_acceptance_filter' ); function wpcf7_acceptance_filter( $accepted ) { if ( ! $accepted ) return $accepted; $fes = wpcf7_scan_form_tags( array( 'type' => 'acceptance' ) ); foreach ( $fes as $fe ) { $name = $fe['name']; $options = (array) $fe['options']; if ( empty( $name ) ) continue; $value = ( ! empty( $_POST[$name] ) ? 1 : 0 ); $invert = (bool) preg_grep( '%^invert$%', $options ); if ( $invert && $value || ! $invert && ! $value ) $accepted = false; } return $accepted; } add_filter( 'wpcf7_form_class_attr', 'wpcf7_acceptance_form_class_attr' ); function wpcf7_acceptance_form_class_attr( $class ) { if ( wpcf7_acceptance_as_validation() ) return $class . ' wpcf7-acceptance-as-validation'; return $class; } function wpcf7_acceptance_as_validation() { if ( ! $contact_form = wpcf7_get_current_contact_form() ) return false; return $contact_form->is_true( 'acceptance_as_validation' ); } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_acceptance', 35 ); function wpcf7_add_tag_generator_acceptance() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'acceptance', __( 'acceptance', 'contact-form-7' ), 'wpcf7_tag_generator_acceptance' ); } function wpcf7_tag_generator_acceptance( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = 'acceptance'; $description = __( "Generate a form-tag for an acceptance checkbox. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/acceptance-checkbox/', 'contact-form-7' ), __( 'Acceptance Checkbox', 'contact-form-7' ) ); ?>

-1, 'post_type' => 'wpcf7_contact_form', 'post_status' => 'any', ) ); foreach ( $posts as $post ) { wp_delete_post( $post->ID, true ); } $wpdb->query( sprintf( "DROP TABLE IF EXISTS %s", $wpdb->prefix . 'contact_form_7' ) ); } wpcf7_delete_plugin(); PKP\e4includes/rest-api.phpnuW+A WP_REST_Server::READABLE, 'callback' => 'wpcf7_rest_get_contact_forms', ), array( 'methods' => WP_REST_Server::CREATABLE, 'callback' => 'wpcf7_rest_create_contact_form', ), ) ); register_rest_route( $namespace, '/contact-forms/(?P\d+)', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => 'wpcf7_rest_get_contact_form', ), array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => 'wpcf7_rest_update_contact_form', ), array( 'methods' => WP_REST_Server::DELETABLE, 'callback' => 'wpcf7_rest_delete_contact_form', ), ) ); } function wpcf7_rest_get_contact_forms( WP_REST_Request $request ) { if ( ! current_user_can( 'wpcf7_read_contact_forms' ) ) { return new WP_Error( 'wpcf7_forbidden', __( "You are not allowed to access contact forms.", 'contact-form-7' ), array( 'status' => 403 ) ); } $args = array(); $per_page = $request->get_param( 'per_page' ); if ( null !== $per_page ) { $args['posts_per_page'] = (int) $per_page; } $offset = $request->get_param( 'offset' ); if ( null !== $offset ) { $args['offset'] = (int) $offset; } $order = $request->get_param( 'order' ); if ( null !== $order ) { $args['order'] = (string) $order; } $orderby = $request->get_param( 'orderby' ); if ( null !== $orderby ) { $args['orderby'] = (string) $orderby; } $search = $request->get_param( 'search' ); if ( null !== $search ) { $args['s'] = (string) $search; } $items = WPCF7_ContactForm::find( $args ); $response = array(); foreach ( $items as $item ) { $response[] = array( 'id' => $item->id(), 'slug' => $item->name(), 'title' => $item->title(), 'locale' => $item->locale(), ); } return rest_ensure_response( $response ); } function wpcf7_rest_create_contact_form( WP_REST_Request $request ) { $id = (int) $request->get_param( 'id' ); if ( $id ) { return new WP_Error( 'wpcf7_post_exists', __( "Cannot create existing contact form.", 'contact-form-7' ), array( 'status' => 400 ) ); } if ( ! current_user_can( 'wpcf7_edit_contact_forms' ) ) { return new WP_Error( 'wpcf7_forbidden', __( "You are not allowed to create a contact form.", 'contact-form-7' ), array( 'status' => 403 ) ); } $args = $request->get_params(); $args['id'] = -1; // Create $context = $request->get_param( 'context' ); $item = wpcf7_save_contact_form( $args, $context ); if ( ! $item ) { return new WP_Error( 'wpcf7_cannot_save', __( "There was an error saving the contact form.", 'contact-form-7' ), array( 'status' => 500 ) ); } $response = array( 'id' => $item->id(), 'slug' => $item->name(), 'title' => $item->title(), 'locale' => $item->locale(), 'properties' => $item->get_properties(), 'config_errors' => array(), ); if ( wpcf7_validate_configuration() ) { $config_validator = new WPCF7_ConfigValidator( $item ); $config_validator->validate(); $response['config_errors'] = $config_validator->collect_error_messages(); if ( 'save' == $context ) { $config_validator->save(); } } return rest_ensure_response( $response ); } function wpcf7_rest_get_contact_form( WP_REST_Request $request ) { $id = (int) $request->get_param( 'id' ); $item = wpcf7_contact_form( $id ); if ( ! $item ) { return new WP_Error( 'wpcf7_not_found', __( "The requested contact form was not found.", 'contact-form-7' ), array( 'status' => 404 ) ); } if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) { return new WP_Error( 'wpcf7_forbidden', __( "You are not allowed to access the requested contact form.", 'contact-form-7' ), array( 'status' => 403 ) ); } $response = array( 'id' => $item->id(), 'slug' => $item->name(), 'title' => $item->title(), 'locale' => $item->locale(), 'properties' => $item->get_properties(), ); return rest_ensure_response( $response ); } function wpcf7_rest_update_contact_form( WP_REST_Request $request ) { $id = (int) $request->get_param( 'id' ); $item = wpcf7_contact_form( $id ); if ( ! $item ) { return new WP_Error( 'wpcf7_not_found', __( "The requested contact form was not found.", 'contact-form-7' ), array( 'status' => 404 ) ); } if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) { return new WP_Error( 'wpcf7_forbidden', __( "You are not allowed to access the requested contact form.", 'contact-form-7' ), array( 'status' => 403 ) ); } $args = $request->get_params(); $context = $request->get_param( 'context' ); $item = wpcf7_save_contact_form( $args, $context ); if ( ! $item ) { return new WP_Error( 'wpcf7_cannot_save', __( "There was an error saving the contact form.", 'contact-form-7' ), array( 'status' => 500 ) ); } $response = array( 'id' => $item->id(), 'slug' => $item->name(), 'title' => $item->title(), 'locale' => $item->locale(), 'properties' => $item->get_properties(), 'config_errors' => array(), ); if ( wpcf7_validate_configuration() ) { $config_validator = new WPCF7_ConfigValidator( $item ); $config_validator->validate(); $response['config_errors'] = $config_validator->collect_error_messages(); if ( 'save' == $context ) { $config_validator->save(); } } return rest_ensure_response( $response ); } function wpcf7_rest_delete_contact_form( WP_REST_Request $request ) { $id = (int) $request->get_param( 'id' ); $item = wpcf7_contact_form( $id ); if ( ! $item ) { return new WP_Error( 'wpcf7_not_found', __( "The requested contact form was not found.", 'contact-form-7' ), array( 'status' => 404 ) ); } if ( ! current_user_can( 'wpcf7_delete_contact_form', $id ) ) { return new WP_Error( 'wpcf7_forbidden', __( "You are not allowed to access the requested contact form.", 'contact-form-7' ), array( 'status' => 403 ) ); } $result = $item->delete(); if ( ! $result ) { return new WP_Error( 'wpcf7_cannot_delete', __( "There was an error deleting the contact form.", 'contact-form-7' ), array( 'status' => 500 ) ); } $response = array( 'deleted' => true ); return rest_ensure_response( $response ); } PKP\)includes/form-tag.phpnuW+A $value ) { if ( property_exists( __CLASS__, $key ) ) { $this->{$key} = $value; } } } public function is_required() { return ( '*' == substr( $this->type, -1 ) ); } public function has_option( $opt ) { $pattern = sprintf( '/^%s(:.+)?$/i', preg_quote( $opt, '/' ) ); return (bool) preg_grep( $pattern, $this->options ); } public function get_option( $opt, $pattern = '', $single = false ) { $preset_patterns = array( 'date' => '([0-9]{4}-[0-9]{2}-[0-9]{2}|today(.*))', 'int' => '[0-9]+', 'signed_int' => '-?[0-9]+', 'class' => '[-0-9a-zA-Z_]+', 'id' => '[-0-9a-zA-Z_]+', ); if ( isset( $preset_patterns[$pattern] ) ) { $pattern = $preset_patterns[$pattern]; } if ( '' == $pattern ) { $pattern = '.+'; } $pattern = sprintf( '/^%s:%s$/i', preg_quote( $opt, '/' ), $pattern ); if ( $single ) { $matches = $this->get_first_match_option( $pattern ); if ( ! $matches ) { return false; } return substr( $matches[0], strlen( $opt ) + 1 ); } else { $matches_a = $this->get_all_match_options( $pattern ); if ( ! $matches_a ) { return false; } $results = array(); foreach ( $matches_a as $matches ) { $results[] = substr( $matches[0], strlen( $opt ) + 1 ); } return $results; } } public function get_id_option() { return $this->get_option( 'id', 'id', true ); } public function get_class_option( $default = '' ) { if ( is_string( $default ) ) { $default = explode( ' ', $default ); } $options = array_merge( (array) $default, (array) $this->get_option( 'class', 'class' ) ); $options = array_filter( array_unique( $options ) ); return implode( ' ', $options ); } public function get_size_option( $default = '' ) { $option = $this->get_option( 'size', 'int', true ); if ( $option ) { return $option; } $matches_a = $this->get_all_match_options( '%^([0-9]*)/[0-9]*$%' ); foreach ( (array) $matches_a as $matches ) { if ( isset( $matches[1] ) && '' !== $matches[1] ) { return $matches[1]; } } return $default; } public function get_maxlength_option( $default = '' ) { $option = $this->get_option( 'maxlength', 'int', true ); if ( $option ) { return $option; } $matches_a = $this->get_all_match_options( '%^(?:[0-9]*x?[0-9]*)?/([0-9]+)$%' ); foreach ( (array) $matches_a as $matches ) { if ( isset( $matches[1] ) && '' !== $matches[1] ) { return $matches[1]; } } return $default; } public function get_minlength_option( $default = '' ) { $option = $this->get_option( 'minlength', 'int', true ); if ( $option ) { return $option; } else { return $default; } } public function get_cols_option( $default = '' ) { $option = $this->get_option( 'cols', 'int', true ); if ( $option ) { return $option; } $matches_a = $this->get_all_match_options( '%^([0-9]*)x([0-9]*)(?:/[0-9]+)?$%' ); foreach ( (array) $matches_a as $matches ) { if ( isset( $matches[1] ) && '' !== $matches[1] ) { return $matches[1]; } } return $default; } public function get_rows_option( $default = '' ) { $option = $this->get_option( 'rows', 'int', true ); if ( $option ) { return $option; } $matches_a = $this->get_all_match_options( '%^([0-9]*)x([0-9]*)(?:/[0-9]+)?$%' ); foreach ( (array) $matches_a as $matches ) { if ( isset( $matches[2] ) && '' !== $matches[2] ) { return $matches[2]; } } return $default; } public function get_date_option( $opt ) { $option = $this->get_option( $opt, 'date', true ); if ( preg_match( '/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $option ) ) { return $option; } if ( preg_match( '/^today(?:([+-][0-9]+)([a-z]*))?/', $option, $matches ) ) { $number = isset( $matches[1] ) ? (int) $matches[1] : 0; $unit = isset( $matches[2] ) ? $matches[2] : ''; if ( ! preg_match( '/^(day|month|year|week)s?$/', $unit ) ) { $unit = 'days'; } $date = gmdate( 'Y-m-d', strtotime( sprintf( 'today %1$s %2$s', $number, $unit ) ) ); return $date; } return false; } public function get_default_option( $default = '', $args = '' ) { $args = wp_parse_args( $args, array( 'multiple' => false ) ); $options = (array) $this->get_option( 'default' ); $values = array(); if ( empty( $options ) ) { return $args['multiple'] ? $values : $default; } foreach ( $options as $opt ) { $opt = sanitize_key( $opt ); if ( 'user_' == substr( $opt, 0, 5 ) && is_user_logged_in() ) { $primary_props = array( 'user_login', 'user_email', 'user_url' ); $opt = in_array( $opt, $primary_props ) ? $opt : substr( $opt, 5 ); $user = wp_get_current_user(); $user_prop = $user->get( $opt ); if ( ! empty( $user_prop ) ) { if ( $args['multiple'] ) { $values[] = $user_prop; } else { return $user_prop; } } } elseif ( 'post_meta' == $opt && in_the_loop() ) { if ( $args['multiple'] ) { $values = array_merge( $values, get_post_meta( get_the_ID(), $this->name ) ); } else { $val = (string) get_post_meta( get_the_ID(), $this->name, true ); if ( strlen( $val ) ) { return $val; } } } elseif ( 'get' == $opt && isset( $_GET[$this->name] ) ) { $vals = (array) $_GET[$this->name]; $vals = array_map( 'wpcf7_sanitize_query_var', $vals ); if ( $args['multiple'] ) { $values = array_merge( $values, $vals ); } else { $val = isset( $vals[0] ) ? (string) $vals[0] : ''; if ( strlen( $val ) ) { return $val; } } } elseif ( 'post' == $opt && isset( $_POST[$this->name] ) ) { $vals = (array) $_POST[$this->name]; $vals = array_map( 'wpcf7_sanitize_query_var', $vals ); if ( $args['multiple'] ) { $values = array_merge( $values, $vals ); } else { $val = isset( $vals[0] ) ? (string) $vals[0] : ''; if ( strlen( $val ) ) { return $val; } } } elseif ( 'shortcode_attr' == $opt ) { if ( $contact_form = WPCF7_ContactForm::get_current() ) { $val = $contact_form->shortcode_attr( $this->name ); if ( strlen( $val ) ) { if ( $args['multiple'] ) { $values[] = $val; } else { return $val; } } } } } if ( $args['multiple'] ) { $values = array_unique( $values ); return $values; } else { return $default; } } public function get_data_option( $args = '' ) { $options = (array) $this->get_option( 'data' ); return apply_filters( 'wpcf7_form_tag_data_option', null, $options, $args ); } public function get_first_match_option( $pattern ) { foreach( (array) $this->options as $option ) { if ( preg_match( $pattern, $option, $matches ) ) { return $matches; } } return false; } public function get_all_match_options( $pattern ) { $result = array(); foreach( (array) $this->options as $option ) { if ( preg_match( $pattern, $option, $matches ) ) { $result[] = $matches; } } return $result; } } PKP\ includes/shortcodes.phpnuW+Aget_scanned_tags(); } public function add_shortcode( $tag, $func, $has_name = false ) { wpcf7_deprecated_function( __METHOD__, '4.6', 'WPCF7_FormTagsManager::add' ); return self::$form_tags_manager->add( $tag, $func, $has_name ); } public function remove_shortcode( $tag ) { wpcf7_deprecated_function( __METHOD__, '4.6', 'WPCF7_FormTagsManager::remove' ); return self::$form_tags_manager->remove( $tag ); } public function normalize_shortcode( $content ) { wpcf7_deprecated_function( __METHOD__, '4.6', 'WPCF7_FormTagsManager::normalize' ); return self::$form_tags_manager->normalize( $content ); } public function do_shortcode( $content, $exec = true ) { wpcf7_deprecated_function( __METHOD__, '4.6', 'WPCF7_FormTagsManager::replace_all' ); if ( $exec ) { return self::$form_tags_manager->replace_all( $content ); } else { return self::$form_tags_manager->scan( $content ); } } public function scan_shortcode( $content ) { wpcf7_deprecated_function( __METHOD__, '4.6', 'WPCF7_FormTagsManager::scan' ); return self::$form_tags_manager->scan( $content ); } } class WPCF7_Shortcode extends WPCF7_FormTag { public function __construct( $tag ) { wpcf7_deprecated_function( 'WPCF7_Shortcode', '4.6', 'WPCF7_FormTag' ); parent::__construct( $tag ); } } PKP\__<<includes/config-validator.phpnuW+Acontact_form = $contact_form; } public function contact_form() { return $this->contact_form; } public function is_valid() { return ! $this->count_errors(); } public function count_errors( $args = '' ) { $args = wp_parse_args( $args, array( 'section' => '', 'code' => '', ) ); $count = 0; foreach ( $this->errors as $key => $errors ) { if ( preg_match( '/^mail_[0-9]+\.(.*)$/', $key, $matches ) ) { $key = sprintf( 'mail.%s', $matches[1] ); } if ( $args['section'] && $key != $args['section'] && preg_replace( '/\..*$/', '', $key, 1 ) != $args['section'] ) { continue; } foreach ( $errors as $error ) { if ( empty( $error ) ) { continue; } if ( $args['code'] && $error['code'] != $args['code'] ) { continue; } $count += 1; } } return $count; } public function collect_error_messages() { $error_messages = array(); foreach ( $this->errors as $section => $errors ) { $error_messages[$section] = array(); foreach ( $errors as $error ) { if ( empty( $error['args']['message'] ) ) { $message = $this->get_default_message( $error['code'] ); } elseif ( empty( $error['args']['params'] ) ) { $message = $error['args']['message']; } else { $message = $this->build_message( $error['args']['message'], $error['args']['params'] ); } $link = ''; if ( ! empty( $error['args']['link'] ) ) { $link = $error['args']['link']; } $error_messages[$section][] = array( 'message' => esc_html( $message ), 'link' => esc_url( $link ) ); } } return $error_messages; } public function build_message( $message, $params = '' ) { $params = wp_parse_args( $params, array() ); foreach ( $params as $key => $val ) { if ( ! preg_match( '/^[0-9A-Za-z_]+$/', $key ) ) { // invalid key continue; } $placeholder = '%' . $key . '%'; if ( false !== stripos( $message, $placeholder ) ) { $message = str_ireplace( $placeholder, $val, $message ); } } return $message; } public function get_default_message( $code ) { switch ( $code ) { case self::error_maybe_empty: return __( "There is a possible empty field.", 'contact-form-7' ); case self::error_invalid_mailbox_syntax: return __( "Invalid mailbox syntax is used.", 'contact-form-7' ); case self::error_email_not_in_site_domain: return __( "Sender email address does not belong to the site domain.", 'contact-form-7' ); case self::error_html_in_message: return __( "HTML tags are used in a message.", 'contact-form-7' ); case self::error_multiple_controls_in_label: return __( "Multiple form controls are in a single label element.", 'contact-form-7' ); case self::error_invalid_mail_header: return __( "There are invalid mail header fields.", 'contact-form-7' ); default: return ''; } } public function add_error( $section, $code, $args = '' ) { $args = wp_parse_args( $args, array( 'message' => '', 'params' => array(), ) ); if ( ! isset( $this->errors[$section] ) ) { $this->errors[$section] = array(); } $this->errors[$section][] = array( 'code' => $code, 'args' => $args ); return true; } public function remove_error( $section, $code ) { if ( empty( $this->errors[$section] ) ) { return; } foreach ( (array) $this->errors[$section] as $key => $error ) { if ( isset( $error['code'] ) && $error['code'] == $code ) { unset( $this->errors[$section][$key] ); } } } public function validate() { $this->errors = array(); $this->validate_form(); $this->validate_mail( 'mail' ); $this->validate_mail( 'mail_2' ); $this->validate_messages(); do_action( 'wpcf7_config_validator_validate', $this ); return $this->is_valid(); } public function save() { if ( $this->contact_form->initial() ) { return; } delete_post_meta( $this->contact_form->id(), '_config_errors' ); if ( $this->errors ) { update_post_meta( $this->contact_form->id(), '_config_errors', $this->errors ); } } public function restore() { $config_errors = get_post_meta( $this->contact_form->id(), '_config_errors', true ); foreach ( (array) $config_errors as $section => $errors ) { if ( empty( $errors ) ) { continue; } if ( ! is_array( $errors ) ) { // for back-compat $code = $errors; $this->add_error( $section, $code ); } else { foreach ( (array) $errors as $error ) { if ( ! empty( $error['code'] ) ) { $code = $error['code']; $args = isset( $error['args'] ) ? $error['args'] : ''; $this->add_error( $section, $code, $args ); } } } } } public function replace_mail_tags_with_minimum_input( $matches ) { // allow [[foo]] syntax for escaping a tag if ( $matches[1] == '[' && $matches[4] == ']' ) { return substr( $matches[0], 1, -1 ); } $tag = $matches[0]; $tagname = $matches[2]; $values = $matches[3]; if ( ! empty( $values ) ) { preg_match_all( '/"[^"]*"|\'[^\']*\'/', $values, $matches ); $values = wpcf7_strip_quote_deep( $matches[0] ); } $do_not_heat = false; if ( preg_match( '/^_raw_(.+)$/', $tagname, $matches ) ) { $tagname = trim( $matches[1] ); $do_not_heat = true; } $format = ''; if ( preg_match( '/^_format_(.+)$/', $tagname, $matches ) ) { $tagname = trim( $matches[1] ); $format = $values[0]; } $example_email = 'example@example.com'; $example_text = 'example'; $example_blank = ''; $form_tags = $this->contact_form->scan_form_tags( array( 'name' => $tagname ) ); if ( $form_tags ) { $form_tag = new WPCF7_FormTag( $form_tags[0] ); $is_required = ( $form_tag->is_required() || 'radio' == $form_tag->type ); if ( ! $is_required ) { return $example_blank; } if ( wpcf7_form_tag_supports( $form_tag->type, 'selectable-values' ) ) { if ( $form_tag->pipes instanceof WPCF7_Pipes ) { if ( $do_not_heat ) { $before_pipes = $form_tag->pipes->collect_befores(); $last_item = array_pop( $before_pipes ); } else { $after_pipes = $form_tag->pipes->collect_afters(); $last_item = array_pop( $after_pipes ); } } else { $last_item = array_pop( $form_tag->values ); } if ( $last_item && wpcf7_is_mailbox_list( $last_item ) ) { return $example_email; } else { return $example_text; } } if ( 'email' == $form_tag->basetype ) { return $example_email; } else { return $example_text; } } else { $tagname = preg_replace( '/^wpcf7\./', '_', $tagname ); // for back-compat if ( '_post_author_email' == $tagname ) { return $example_email; } elseif ( '_' == substr( $tagname, 0, 1 ) ) { // maybe special mail tag return $example_text; } } return $tag; } public function validate_form() { $section = 'form.body'; $form = $this->contact_form->prop( 'form' ); $this->detect_multiple_controls_in_label( $section, $form ); $this->detect_unavailable_names( $section, $form ); } public function detect_multiple_controls_in_label( $section, $content ) { $pattern = '%(.+?)%s'; if ( preg_match_all( $pattern, $content, $matches ) ) { $form_tags_manager = WPCF7_FormTagsManager::get_instance(); foreach ( $matches[1] as $insidelabel ) { $tags = $form_tags_manager->scan( $insidelabel ); $fields_count = 0; foreach ( $tags as $tag ) { $tag = new WPCF7_FormTag( $tag ); $is_multiple_controls_container = wpcf7_form_tag_supports( $tag->type, 'multiple-controls-container' ); if ( $is_multiple_controls_container ) { $fields_count += count( $tag->values ); if ( $tag->has_option( 'free_text' ) ) { $fields_count += 1; } } elseif ( ! empty( $tag->name ) ) { $fields_count += 1; } if ( 1 < $fields_count ) { return $this->add_error( $section, self::error_multiple_controls_in_label, array( 'link' => self::get_doc_link( 'multiple_controls_in_label' ), ) ); } } } } return false; } public function detect_unavailable_names( $section, $content ) { $public_query_vars = array( 'm', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' ); $form_tags_manager = WPCF7_FormTagsManager::get_instance(); $ng_named_tags = $form_tags_manager->filter( $content, array( 'name' => $public_query_vars ) ); $ng_names = array(); foreach ( $ng_named_tags as $tag ) { $ng_names[] = $tag['name']; } if ( $ng_names ) { $ng_names = array_unique( $ng_names ); return $this->add_error( $section, self::error_unavailable_names, array( 'message' => __( "Unavailable names (%names%) are used for form controls.", 'contact-form-7' ), 'params' => array( 'names' => implode( ', ', $ng_names ) ), 'link' => self::get_doc_link( 'unavailable_names' ), ) ); } return false; } public function validate_mail( $template = 'mail' ) { $components = (array) $this->contact_form->prop( $template ); if ( ! $components ) { return; } if ( 'mail' != $template && empty( $components['active'] ) ) { return; } $components = wp_parse_args( $components, array( 'subject' => '', 'sender' => '', 'recipient' => '', 'additional_headers' => '', 'body' => '', 'attachments' => '', ) ); $callback = array( $this, 'replace_mail_tags_with_minimum_input' ); $subject = $components['subject']; $subject = new WPCF7_MailTaggedText( $subject, array( 'callback' => $callback ) ); $subject = $subject->replace_tags(); $subject = wpcf7_strip_newline( $subject ); $this->detect_maybe_empty( sprintf( '%s.subject', $template ), $subject ); $sender = $components['sender']; $sender = new WPCF7_MailTaggedText( $sender, array( 'callback' => $callback ) ); $sender = $sender->replace_tags(); $sender = wpcf7_strip_newline( $sender ); if ( ! $this->detect_invalid_mailbox_syntax( sprintf( '%s.sender', $template ), $sender ) && ! wpcf7_is_email_in_site_domain( $sender ) ) { $this->add_error( sprintf( '%s.sender', $template ), self::error_email_not_in_site_domain, array( 'link' => self::get_doc_link( 'email_not_in_site_domain' ), ) ); } $recipient = $components['recipient']; $recipient = new WPCF7_MailTaggedText( $recipient, array( 'callback' => $callback ) ); $recipient = $recipient->replace_tags(); $recipient = wpcf7_strip_newline( $recipient ); $this->detect_invalid_mailbox_syntax( sprintf( '%s.recipient', $template ), $recipient ); $additional_headers = $components['additional_headers']; $additional_headers = new WPCF7_MailTaggedText( $additional_headers, array( 'callback' => $callback ) ); $additional_headers = $additional_headers->replace_tags(); $additional_headers = explode( "\n", $additional_headers ); $mailbox_header_types = array( 'reply-to', 'cc', 'bcc' ); $invalid_mail_header_exists = false; foreach ( $additional_headers as $header ) { $header = trim( $header ); if ( '' === $header ) { continue; } if ( ! preg_match( '/^([0-9A-Za-z-]+):(.+)$/', $header, $matches ) ) { $invalid_mail_header_exists = true; } else { $header_name = $matches[1]; $header_value = $matches[2]; if ( in_array( strtolower( $header_name ), $mailbox_header_types ) ) { $this->detect_invalid_mailbox_syntax( sprintf( '%s.additional_headers', $template ), $header_value, array( 'message' => __( "Invalid mailbox syntax is used in the %name% field.", 'contact-form-7' ), 'params' => array( 'name' => $header_name ) ) ); } } } if ( $invalid_mail_header_exists ) { $this->add_error( sprintf( '%s.additional_headers', $template ), self::error_invalid_mail_header, array( 'link' => self::get_doc_link( 'invalid_mail_header' ), ) ); } $body = $components['body']; $body = new WPCF7_MailTaggedText( $body, array( 'callback' => $callback ) ); $body = $body->replace_tags(); $this->detect_maybe_empty( sprintf( '%s.body', $template ), $body ); if ( '' !== $components['attachments'] ) { foreach ( explode( "\n", $components['attachments'] ) as $line ) { $line = trim( $line ); if ( '' === $line || '[' == substr( $line, 0, 1 ) ) { continue; } $this->detect_file_not_found( sprintf( '%s.attachments', $template ), $line ); } } } public function detect_invalid_mailbox_syntax( $section, $content, $args = '' ) { $args = wp_parse_args( $args, array( 'link' => self::get_doc_link( 'invalid_mailbox_syntax' ), 'message' => '', 'params' => array(), ) ); if ( ! wpcf7_is_mailbox_list( $content ) ) { return $this->add_error( $section, self::error_invalid_mailbox_syntax, $args ); } return false; } public function detect_maybe_empty( $section, $content ) { if ( '' === $content ) { return $this->add_error( $section, self::error_maybe_empty, array( 'link' => self::get_doc_link( 'maybe_empty' ), ) ); } return false; } public function detect_file_not_found( $section, $content ) { $path = path_join( WP_CONTENT_DIR, $content ); if ( ! @is_readable( $path ) || ! @is_file( $path ) ) { return $this->add_error( $section, self::error_file_not_found, array( 'message' => __( "Attachment file does not exist at %path%.", 'contact-form-7' ), 'params' => array( 'path' => $content ), 'link' => self::get_doc_link( 'file_not_found' ), ) ); } return false; } public function validate_messages() { $messages = (array) $this->contact_form->prop( 'messages' ); if ( ! $messages ) { return; } if ( isset( $messages['captcha_not_match'] ) && ! wpcf7_use_really_simple_captcha() ) { unset( $messages['captcha_not_match'] ); } foreach ( $messages as $key => $message ) { $section = sprintf( 'messages.%s', $key ); $this->detect_html_in_message( $section, $message ); } } public function detect_html_in_message( $section, $content ) { $stripped = wp_strip_all_tags( $content ); if ( $stripped != $content ) { return $this->add_error( $section, self::error_html_in_message, array( 'link' => self::get_doc_link( 'html_in_message' ), ) ); } return false; } } PKP\NNincludes/contact-form.phpnuW+A array( 'name' => __( 'Contact Forms', 'contact-form-7' ), 'singular_name' => __( 'Contact Form', 'contact-form-7' ), ), 'rewrite' => false, 'query_var' => false, ) ); } public static function find( $args = '' ) { $defaults = array( 'post_status' => 'any', 'posts_per_page' => -1, 'offset' => 0, 'orderby' => 'ID', 'order' => 'ASC', ); $args = wp_parse_args( $args, $defaults ); $args['post_type'] = self::post_type; $q = new WP_Query(); $posts = $q->query( $args ); self::$found_items = $q->found_posts; $objs = array(); foreach ( (array) $posts as $post ) { $objs[] = new self( $post ); } return $objs; } public static function get_template( $args = '' ) { global $l10n; $defaults = array( 'locale' => null, 'title' => '' ); $args = wp_parse_args( $args, $defaults ); $locale = $args['locale']; $title = $args['title']; if ( $locale ) { $mo_orig = $l10n['contact-form-7']; wpcf7_load_textdomain( $locale ); } self::$current = $contact_form = new self; $contact_form->title = ( $title ? $title : __( 'Untitled', 'contact-form-7' ) ); $contact_form->locale = ( $locale ? $locale : get_locale() ); $properties = $contact_form->get_properties(); foreach ( $properties as $key => $value ) { $properties[$key] = WPCF7_ContactFormTemplate::get_default( $key ); } $contact_form->properties = $properties; $contact_form = apply_filters( 'wpcf7_contact_form_default_pack', $contact_form, $args ); if ( isset( $mo_orig ) ) { $l10n['contact-form-7'] = $mo_orig; } return $contact_form; } public static function get_instance( $post ) { $post = get_post( $post ); if ( ! $post || self::post_type != get_post_type( $post ) ) { return false; } return self::$current = new self( $post ); } private static function get_unit_tag( $id = 0 ) { static $global_count = 0; $global_count += 1; if ( in_the_loop() ) { $unit_tag = sprintf( 'wpcf7-f%1$d-p%2$d-o%3$d', absint( $id ), get_the_ID(), $global_count ); } else { $unit_tag = sprintf( 'wpcf7-f%1$d-o%2$d', absint( $id ), $global_count ); } return $unit_tag; } private function __construct( $post = null ) { $post = get_post( $post ); if ( $post && self::post_type == get_post_type( $post ) ) { $this->id = $post->ID; $this->name = $post->post_name; $this->title = $post->post_title; $this->locale = get_post_meta( $post->ID, '_locale', true ); $properties = $this->get_properties(); foreach ( $properties as $key => $value ) { if ( metadata_exists( 'post', $post->ID, '_' . $key ) ) { $properties[$key] = get_post_meta( $post->ID, '_' . $key, true ); } elseif ( metadata_exists( 'post', $post->ID, $key ) ) { $properties[$key] = get_post_meta( $post->ID, $key, true ); } } $this->properties = $properties; $this->upgrade(); } do_action( 'wpcf7_contact_form', $this ); } public function __get( $name ) { $message = __( '%1$s property of a WPCF7_ContactForm object is no longer accessible. Use %2$s method instead.', 'contact-form-7' ); if ( 'id' == $name ) { if ( WP_DEBUG ) { trigger_error( sprintf( $message, 'id', 'id()' ) ); } return $this->id; } elseif ( 'title' == $name ) { if ( WP_DEBUG ) { trigger_error( sprintf( $message, 'title', 'title()' ) ); } return $this->title; } elseif ( $prop = $this->prop( $name ) ) { if ( WP_DEBUG ) { trigger_error( sprintf( $message, $name, 'prop(\'' . $name . '\')' ) ); } return $prop; } } public function initial() { return empty( $this->id ); } public function prop( $name ) { $props = $this->get_properties(); return isset( $props[$name] ) ? $props[$name] : null; } public function get_properties() { $properties = (array) $this->properties; $properties = wp_parse_args( $properties, array( 'form' => '', 'mail' => array(), 'mail_2' => array(), 'messages' => array(), 'additional_settings' => '', ) ); $properties = (array) apply_filters( 'wpcf7_contact_form_properties', $properties, $this ); return $properties; } public function set_properties( $properties ) { $defaults = $this->get_properties(); $properties = wp_parse_args( $properties, $defaults ); $properties = array_intersect_key( $properties, $defaults ); $this->properties = $properties; } public function id() { return $this->id; } public function name() { return $this->name; } public function title() { return $this->title; } public function set_title( $title ) { $title = strip_tags( $title ); $title = trim( $title ); if ( '' === $title ) { $title = __( 'Untitled', 'contact-form-7' ); } $this->title = $title; } public function locale() { if ( wpcf7_is_valid_locale( $this->locale ) ) { return $this->locale; } else { return ''; } } public function set_locale( $locale ) { $locale = trim( $locale ); if ( wpcf7_is_valid_locale( $locale ) ) { $this->locale = $locale; } else { $this->locale = 'en_US'; } } public function shortcode_attr( $name ) { if ( isset( $this->shortcode_atts[$name] ) ) { return (string) $this->shortcode_atts[$name]; } } // Return true if this form is the same one as currently POSTed. public function is_posted() { if ( ! WPCF7_Submission::get_instance() ) { return false; } if ( empty( $_POST['_wpcf7_unit_tag'] ) ) { return false; } return $this->unit_tag == $_POST['_wpcf7_unit_tag']; } /* Generating Form HTML */ public function form_html( $args = '' ) { $args = wp_parse_args( $args, array( 'html_id' => '', 'html_name' => '', 'html_class' => '', 'output' => 'form', ) ); $this->shortcode_atts = $args; if ( 'raw_form' == $args['output'] ) { return '
'
				. esc_html( $this->prop( 'form' ) ) . '
'; } $this->unit_tag = self::get_unit_tag( $this->id ); $lang_tag = str_replace( '_', '-', $this->locale ); if ( preg_match( '/^([a-z]+-[a-z]+)-/i', $lang_tag, $matches ) ) { $lang_tag = $matches[1]; } $html = sprintf( '
', wpcf7_format_atts( array( 'role' => 'form', 'class' => 'wpcf7', 'id' => $this->unit_tag, ( get_option( 'html_type' ) == 'text/html' ) ? 'lang' : 'xml:lang' => $lang_tag, 'dir' => wpcf7_is_rtl( $this->locale ) ? 'rtl' : 'ltr', ) ) ); $html .= "\n" . $this->screen_reader_response() . "\n"; $url = wpcf7_get_request_uri(); if ( $frag = strstr( $url, '#' ) ) { $url = substr( $url, 0, -strlen( $frag ) ); } $url .= '#' . $this->unit_tag; $url = apply_filters( 'wpcf7_form_action_url', $url ); $id_attr = apply_filters( 'wpcf7_form_id_attr', preg_replace( '/[^A-Za-z0-9:._-]/', '', $args['html_id'] ) ); $name_attr = apply_filters( 'wpcf7_form_name_attr', preg_replace( '/[^A-Za-z0-9:._-]/', '', $args['html_name'] ) ); $class = 'wpcf7-form'; if ( $this->is_posted() ) { $submission = WPCF7_Submission::get_instance(); if ( $submission->is( 'validation_failed' ) ) { $class .= ' invalid'; } elseif ( $submission->is( 'spam' ) ) { $class .= ' spam'; } elseif ( $submission->is( 'mail_sent' ) ) { $class .= ' sent'; } elseif ( $submission->is( 'mail_failed' ) ) { $class .= ' failed'; } } if ( $args['html_class'] ) { $class .= ' ' . $args['html_class']; } if ( $this->in_demo_mode() ) { $class .= ' demo'; } $class = explode( ' ', $class ); $class = array_map( 'sanitize_html_class', $class ); $class = array_filter( $class ); $class = array_unique( $class ); $class = implode( ' ', $class ); $class = apply_filters( 'wpcf7_form_class_attr', $class ); $enctype = apply_filters( 'wpcf7_form_enctype', '' ); $autocomplete = apply_filters( 'wpcf7_form_autocomplete', '' ); $novalidate = apply_filters( 'wpcf7_form_novalidate', wpcf7_support_html5() ); $atts = array( 'action' => esc_url( $url ), 'method' => 'post', 'class' => $class, 'enctype' => wpcf7_enctype_value( $enctype ), 'autocomplete' => $autocomplete, 'novalidate' => $novalidate ? 'novalidate' : '', ); if ( '' !== $id_attr ) { $atts['id'] = $id_attr; } if ( '' !== $name_attr ) { $atts['name'] = $name_attr; } $atts = wpcf7_format_atts( $atts ); $html .= sprintf( '
', $atts ) . "\n"; $html .= $this->form_hidden_fields(); $html .= $this->form_elements(); if ( ! $this->responses_count ) { $html .= $this->form_response_output(); } $html .= '
'; $html .= '
'; return $html; } private function form_hidden_fields() { $hidden_fields = array( '_wpcf7' => $this->id, '_wpcf7_version' => WPCF7_VERSION, '_wpcf7_locale' => $this->locale, '_wpcf7_unit_tag' => $this->unit_tag, ); if ( WPCF7_VERIFY_NONCE ) { $hidden_fields['_wpnonce'] = wpcf7_create_nonce( $this->id ); } $hidden_fields += (array) apply_filters( 'wpcf7_form_hidden_fields', array() ); $content = ''; foreach ( $hidden_fields as $name => $value ) { $content .= sprintf( '', esc_attr( $name ), esc_attr( $value ) ) . "\n"; } return '
' . "\n" . $content . '
' . "\n"; } public function form_response_output() { $class = 'wpcf7-response-output'; $role = ''; $content = ''; if ( $this->is_posted() ) { // Post response output for non-AJAX $role = 'alert'; $submission = WPCF7_Submission::get_instance(); $content = $submission->get_response(); if ( $submission->is( 'validation_failed' ) ) { $class .= ' wpcf7-validation-errors'; } elseif ( $submission->is( 'spam' ) ) { $class .= ' wpcf7-spam-blocked'; } elseif ( $submission->is( 'mail_sent' ) ) { $class .= ' wpcf7-mail-sent-ok'; } elseif ( $submission->is( 'mail_failed' ) ) { $class .= ' wpcf7-mail-sent-ng'; } } else { $class .= ' wpcf7-display-none'; } $atts = array( 'class' => trim( $class ), 'role' => trim( $role ), ); $atts = wpcf7_format_atts( $atts ); $output = sprintf( '
%2$s
', $atts, esc_html( $content ) ); $output = apply_filters( 'wpcf7_form_response_output', $output, $class, $content, $this ); $this->responses_count += 1; return $output; } public function screen_reader_response() { $class = 'screen-reader-response'; $role = ''; $content = ''; if ( $this->is_posted() ) { // Post response output for non-AJAX $role = 'alert'; $submission = WPCF7_Submission::get_instance(); if ( $response = $submission->get_response() ) { $content = esc_html( $response ); } if ( $invalid_fields = $submission->get_invalid_fields() ) { $content .= "\n" . '' . "\n"; } } $atts = array( 'class' => trim( $class ), 'role' => trim( $role ) ); $atts = wpcf7_format_atts( $atts ); $output = sprintf( '
%2$s
', $atts, $content ); return $output; } public function validation_error( $name ) { $error = ''; if ( $this->is_posted() ) { $submission = WPCF7_Submission::get_instance(); if ( $invalid_field = $submission->get_invalid_field( $name ) ) { $error = trim( $invalid_field['reason'] ); } } if ( ! $error ) { return $error; } $error = sprintf( '%s', esc_html( $error ) ); return apply_filters( 'wpcf7_validation_error', $error, $name, $this ); } /* Form Elements */ public function replace_all_form_tags() { $manager = WPCF7_FormTagsManager::get_instance(); $form = $this->prop( 'form' ); if ( WPCF7_AUTOP ) { $form = $manager->normalize( $form ); $form = wpcf7_autop( $form ); } $form = $manager->replace_all( $form ); $this->scanned_form_tags = $manager->get_scanned_tags(); return $form; } public function form_do_shortcode() { wpcf7_deprecated_function( __METHOD__, '4.6', 'WPCF7_ContactForm::replace_all_form_tags' ); return $this->replace_all_form_tags(); } public function scan_form_tags( $cond = null ) { $manager = WPCF7_FormTagsManager::get_instance(); if ( empty( $this->scanned_form_tags ) ) { $this->scanned_form_tags = $manager->scan( $this->prop( 'form' ) ); } $tags = $this->scanned_form_tags; return $manager->filter( $tags, $cond ); } public function form_scan_shortcode( $cond = null ) { wpcf7_deprecated_function( __METHOD__, '4.6', 'WPCF7_ContactForm::scan_form_tags' ); return $this->scan_form_tags( $cond ); } public function form_elements() { return apply_filters( 'wpcf7_form_elements', $this->replace_all_form_tags() ); } public function collect_mail_tags( $args = '' ) { $args = wp_parse_args( $args, array( 'include' => array(), 'exclude' => array( 'acceptance', 'captchac', 'captchar', 'quiz', 'count' ), ) ); $tags = $this->scan_form_tags(); $mailtags = array(); foreach ( (array) $tags as $tag ) { $type = trim( $tag['type'], ' *' ); if ( empty( $type ) ) { continue; } elseif ( ! empty( $args['include'] ) ) { if ( ! in_array( $type, $args['include'] ) ) { continue; } } elseif ( ! empty( $args['exclude'] ) ) { if ( in_array( $type, $args['exclude'] ) ) { continue; } } $mailtags[] = $tag['name']; } $mailtags = array_unique( array_filter( $mailtags ) ); return apply_filters( 'wpcf7_collect_mail_tags', $mailtags ); } public function suggest_mail_tags( $for = 'mail' ) { $mail = wp_parse_args( $this->prop( $for ), array( 'active' => false, 'recipient' => '', 'sender' => '', 'subject' => '', 'body' => '', 'additional_headers' => '', 'attachments' => '', 'use_html' => false, 'exclude_blank' => false, ) ); $mail = array_filter( $mail ); foreach ( (array) $this->collect_mail_tags() as $mail_tag ) { $pattern = sprintf( '/\[(_[a-z]+_)?%s([ \t]+[^]]+)?\]/', preg_quote( $mail_tag, '/' ) ); $used = preg_grep( $pattern, $mail ); echo sprintf( '[%2$s]', 'mailtag code ' . ( $used ? 'used' : 'unused' ), esc_html( $mail_tag ) ); } } public function submit( $ajax = false ) { $submission = WPCF7_Submission::get_instance( $this ); $result = array( 'contact_form_id' => $this->id(), 'status' => $submission->get_status(), 'message' => $submission->get_response(), 'demo_mode' => $this->in_demo_mode(), ); if ( $submission->is( 'validation_failed' ) ) { $result['invalid_fields'] = $submission->get_invalid_fields(); } if ( $submission->is( 'mail_sent' ) ) { if ( $ajax ) { $on_sent_ok = $this->additional_setting( 'on_sent_ok', false ); if ( ! empty( $on_sent_ok ) ) { $result['scripts_on_sent_ok'] = array_map( 'wpcf7_strip_quote', $on_sent_ok ); } } } if ( $ajax ) { $on_submit = $this->additional_setting( 'on_submit', false ); if ( ! empty( $on_submit ) ) { $result['scripts_on_submit'] = array_map( 'wpcf7_strip_quote', $on_submit ); } } do_action( 'wpcf7_submit', $this, $result ); return $result; } /* Message */ public function message( $status, $filter = true ) { $messages = $this->prop( 'messages' ); $message = isset( $messages[$status] ) ? $messages[$status] : ''; if ( $filter ) { $message = wp_strip_all_tags( $message ); $message = wpcf7_mail_replace_tags( $message, array( 'html' => true ) ); $message = apply_filters( 'wpcf7_display_message', $message, $status ); } return $message; } /* Additional settings */ public function additional_setting( $name, $max = 1 ) { $settings = (array) explode( "\n", $this->prop( 'additional_settings' ) ); $pattern = '/^([a-zA-Z0-9_]+)[\t ]*:(.*)$/'; $count = 0; $values = array(); foreach ( $settings as $setting ) { if ( preg_match( $pattern, $setting, $matches ) ) { if ( $matches[1] != $name ) { continue; } if ( ! $max || $count < (int) $max ) { $values[] = trim( $matches[2] ); $count += 1; } } } return $values; } public function is_true( $name ) { $settings = $this->additional_setting( $name, false ); foreach ( $settings as $setting ) { if ( in_array( $setting, array( 'on', 'true', '1' ) ) ) { return true; } } return false; } public function in_demo_mode() { return $this->is_true( 'demo_mode' ); } /* Upgrade */ private function upgrade() { $mail = $this->prop( 'mail' ); if ( is_array( $mail ) && ! isset( $mail['recipient'] ) ) { $mail['recipient'] = get_option( 'admin_email' ); } $this->properties['mail'] = $mail; $messages = $this->prop( 'messages' ); if ( is_array( $messages ) ) { foreach ( wpcf7_messages() as $key => $arr ) { if ( ! isset( $messages[$key] ) ) { $messages[$key] = $arr['default']; } } } $this->properties['messages'] = $messages; } /* Save */ public function save() { $props = $this->get_properties(); $post_content = implode( "\n", wpcf7_array_flatten( $props ) ); if ( $this->initial() ) { $post_id = wp_insert_post( array( 'post_type' => self::post_type, 'post_status' => 'publish', 'post_title' => $this->title, 'post_content' => trim( $post_content ), ) ); } else { $post_id = wp_update_post( array( 'ID' => (int) $this->id, 'post_status' => 'publish', 'post_title' => $this->title, 'post_content' => trim( $post_content ), ) ); } if ( $post_id ) { foreach ( $props as $prop => $value ) { update_post_meta( $post_id, '_' . $prop, wpcf7_normalize_newline_deep( $value ) ); } if ( wpcf7_is_valid_locale( $this->locale ) ) { update_post_meta( $post_id, '_locale', $this->locale ); } if ( $this->initial() ) { $this->id = $post_id; do_action( 'wpcf7_after_create', $this ); } else { do_action( 'wpcf7_after_update', $this ); } do_action( 'wpcf7_after_save', $this ); } return $post_id; } public function copy() { $new = new self; $new->title = $this->title . '_copy'; $new->locale = $this->locale; $new->properties = $this->properties; return apply_filters( 'wpcf7_copy', $new, $this ); } public function delete() { if ( $this->initial() ) { return; } if ( wp_delete_post( $this->id, true ) ) { $this->id = 0; return true; } return false; } public function shortcode( $args = '' ) { $args = wp_parse_args( $args, array( 'use_old_format' => false ) ); $title = str_replace( array( '"', '[', ']' ), '', $this->title ); if ( $args['use_old_format'] ) { $old_unit_id = (int) get_post_meta( $this->id, '_old_cf7_unit_id', true ); if ( $old_unit_id ) { $shortcode = sprintf( '[contact-form %1$d "%2$s"]', $old_unit_id, $title ); } else { $shortcode = ''; } } else { $shortcode = sprintf( '[contact-form-7 id="%1$d" title="%2$s"]', $this->id, $title ); } return apply_filters( 'wpcf7_contact_form_shortcode', $shortcode, $args, $this ); } } PKP\w'includes/form-tags-manager.phpnuW+Aadd( $tag, $func, $features ); } function wpcf7_remove_form_tag( $tag ) { $manager = WPCF7_FormTagsManager::get_instance(); return $manager->remove( $tag ); } function wpcf7_replace_all_form_tags( $content ) { $manager = WPCF7_FormTagsManager::get_instance(); return $manager->replace_all( $content ); } function wpcf7_scan_form_tags( $cond = null ) { $contact_form = WPCF7_ContactForm::get_current(); if ( $contact_form ) { return $contact_form->scan_form_tags( $cond ); } return array(); } function wpcf7_form_tag_supports( $tag, $feature ) { $manager = WPCF7_FormTagsManager::get_instance(); return $manager->tag_type_supports( $tag, $feature ); } class WPCF7_FormTagsManager { private static $instance; private $tag_types = array(); private $scanned_tags = null; // Tags scanned at the last time of scan() private function __construct() {} public static function get_instance() { if ( empty( self::$instance ) ) { self::$instance = new self; } return self::$instance; } public function get_scanned_tags() { return $this->scanned_tags; } public function add( $tag, $func, $features = '' ) { if ( ! is_callable( $func ) ) { return; } if ( true === $features ) { // for back-compat $features = array( 'name-attr' => true ); } $features = wp_parse_args( $features, array() ); $tags = array_filter( array_unique( (array) $tag ) ); foreach ( $tags as $tag ) { $tag = $this->sanitize_tag_type( $tag ); if ( ! $this->tag_type_exists( $tag ) ) { $this->tag_types[$tag] = array( 'function' => $func, 'features' => $features, ); } } } public function tag_type_exists( $tag ) { return isset( $this->tag_types[$tag] ); } public function tag_type_supports( $tag, $feature ) { if ( isset( $this->tag_types[$tag]['features'] ) ) { return ! empty( $this->tag_types[$tag]['features'][$feature] ); } return false; } private function sanitize_tag_type( $tag ) { $tag = preg_replace( '/[^a-zA-Z0-9_*]+/', '_', $tag ); $tag = rtrim( $tag, '_' ); $tag = strtolower( $tag ); return $tag; } public function remove( $tag ) { unset( $this->tag_types[$tag] ); } public function normalize( $content ) { if ( empty( $this->tag_types ) ) { return $content; } $content = preg_replace_callback( '/' . $this->tag_regex() . '/s', array( $this, 'normalize_callback' ), $content ); return $content; } private function normalize_callback( $m ) { // allow [[foo]] syntax for escaping a tag if ( $m[1] == '[' && $m[6] == ']' ) { return $m[0]; } $tag = $m[2]; $attr = trim( preg_replace( '/[\r\n\t ]+/', ' ', $m[3] ) ); $attr = strtr( $attr, array( '<' => '<', '>' => '>' ) ); $content = trim( $m[5] ); $content = str_replace( "\n", '', $content ); $result = $m[1] . '[' . $tag . ( $attr ? ' ' . $attr : '' ) . ( $m[4] ? ' ' . $m[4] : '' ) . ']' . ( $content ? $content . '[/' . $tag . ']' : '' ) . $m[6]; return $result; } public function replace_all( $content ) { return $this->scan( $content, true ); } public function scan( $content, $replace = false ) { $this->scanned_tags = array(); if ( empty( $this->tag_types ) ) { if ( $replace ) { return $content; } else { return $this->scanned_tags; } } if ( $replace ) { $content = preg_replace_callback( '/' . $this->tag_regex() . '/s', array( $this, 'replace_callback' ), $content ); return $content; } else { preg_replace_callback( '/' . $this->tag_regex() . '/s', array( $this, 'scan_callback' ), $content ); return $this->scanned_tags; } } public function filter( $content, $cond ) { if ( is_array( $content ) ) { $tags = $content; } elseif ( is_string( $content ) ) { $tags = $this->scan( $content ); } else { $tags = $this->scanned_tags; } if ( empty( $tags ) ) { return array(); } if ( ! is_array( $cond ) || empty( $cond ) ) { return $tags; } for ( $i = 0, $size = count( $tags ); $i < $size; $i++ ) { if ( isset( $cond['type'] ) ) { if ( is_string( $cond['type'] ) && ! empty( $cond['type'] ) ) { if ( $tags[$i]['type'] != $cond['type'] ) { unset( $tags[$i] ); continue; } } elseif ( is_array( $cond['type'] ) ) { if ( ! in_array( $tags[$i]['type'], $cond['type'] ) ) { unset( $tags[$i] ); continue; } } } if ( isset( $cond['name'] ) ) { if ( is_string( $cond['name'] ) && ! empty( $cond['name'] ) ) { if ( $tags[$i]['name'] != $cond['name'] ) { unset ( $tags[$i] ); continue; } } elseif ( is_array( $cond['name'] ) ) { if ( ! in_array( $tags[$i]['name'], $cond['name'] ) ) { unset( $tags[$i] ); continue; } } } } return array_values( $tags ); } private function tag_regex() { $tagnames = array_keys( $this->tag_types ); $tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) ); return '(\[?)' . '\[(' . $tagregexp . ')(?:[\r\n\t ](.*?))?(?:[\r\n\t ](\/))?\]' . '(?:([^[]*?)\[\/\2\])?' . '(\]?)'; } private function replace_callback( $m ) { return $this->scan_callback( $m, true ); } private function scan_callback( $m, $replace = false ) { // allow [[foo]] syntax for escaping a tag if ( $m[1] == '[' && $m[6] == ']' ) { return substr( $m[0], 1, -1 ); } $tag = $m[2]; $attr = $this->parse_atts( $m[3] ); $scanned_tag = array( 'type' => $tag, 'basetype' => trim( $tag, '*' ), 'name' => '', 'options' => array(), 'raw_values' => array(), 'values' => array(), 'pipes' => null, 'labels' => array(), 'attr' => '', 'content' => '', ); if ( is_array( $attr ) ) { if ( is_array( $attr['options'] ) ) { if ( $this->tag_type_supports( $tag, 'name-attr' ) && ! empty( $attr['options'] ) ) { $scanned_tag['name'] = array_shift( $attr['options'] ); if ( ! wpcf7_is_name( $scanned_tag['name'] ) ) { return $m[0]; // Invalid name is used. Ignore this tag. } } $scanned_tag['options'] = (array) $attr['options']; } $scanned_tag['raw_values'] = (array) $attr['values']; if ( WPCF7_USE_PIPE ) { $pipes = new WPCF7_Pipes( $scanned_tag['raw_values'] ); $scanned_tag['values'] = $pipes->collect_befores(); $scanned_tag['pipes'] = $pipes; } else { $scanned_tag['values'] = $scanned_tag['raw_values']; } $scanned_tag['labels'] = $scanned_tag['values']; } else { $scanned_tag['attr'] = $attr; } $scanned_tag['values'] = array_map( 'trim', $scanned_tag['values'] ); $scanned_tag['labels'] = array_map( 'trim', $scanned_tag['labels'] ); $content = trim( $m[5] ); $content = preg_replace( "/$/m", '', $content ); $scanned_tag['content'] = $content; $scanned_tag = apply_filters( 'wpcf7_form_tag', $scanned_tag, $replace ); $this->scanned_tags[] = $scanned_tag; if ( $replace ) { $func = $this->tag_types[$tag]['function']; return $m[1] . call_user_func( $func, $scanned_tag ) . $m[6]; } else { return $m[0]; } } private function parse_atts( $text ) { $atts = array( 'options' => array(), 'values' => array() ); $text = preg_replace( "/[\x{00a0}\x{200b}]+/u", " ", $text ); $text = stripcslashes( trim( $text ) ); $pattern = '%^([-+*=0-9a-zA-Z:.!?#$&@_/|\%\r\n\t ]*?)((?:[\r\n\t ]*"[^"]*"|[\r\n\t ]*\'[^\']*\')*)$%'; if ( preg_match( $pattern, $text, $match ) ) { if ( ! empty( $match[1] ) ) { $atts['options'] = preg_split( '/[\r\n\t ]+/', trim( $match[1] ) ); } if ( ! empty( $match[2] ) ) { preg_match_all( '/"[^"]*"|\'[^\']*\'/', $match[2], $matched_values ); $atts['values'] = wpcf7_strip_quote_deep( $matched_values[0] ); } } else { $atts = $text; } return $atts; } } PKP\ٵ*includes/functions.phpnuW+A $uploads['basedir'], 'url' => $uploads['baseurl'] ) ); if ( 'dir' == $type ) { return $uploads['dir']; } if ( 'url' == $type ) { return $uploads['url']; } return $uploads; } function wpcf7_verify_nonce( $nonce, $action = -1 ) { if ( substr( wp_hash( $action, 'nonce' ), -12, 10 ) == $nonce ) { return true; } return false; } function wpcf7_create_nonce( $action = -1 ) { return substr( wp_hash( $action, 'nonce' ), -12, 10 ); } function wpcf7_blacklist_check( $target ) { $mod_keys = trim( get_option( 'blacklist_keys' ) ); if ( empty( $mod_keys ) ) { return false; } $words = explode( "\n", $mod_keys ); foreach ( (array) $words as $word ) { $word = trim( $word ); if ( empty( $word ) || 256 < strlen( $word ) ) { continue; } $pattern = sprintf( '#%s#i', preg_quote( $word, '#' ) ); if ( preg_match( $pattern, $target ) ) { return true; } } return false; } function wpcf7_array_flatten( $input ) { if ( ! is_array( $input ) ) { return array( $input ); } $output = array(); foreach ( $input as $value ) { $output = array_merge( $output, wpcf7_array_flatten( $value ) ); } return $output; } function wpcf7_flat_join( $input ) { $input = wpcf7_array_flatten( $input ); $output = array(); foreach ( (array) $input as $value ) { $output[] = trim( (string) $value ); } return implode( ', ', $output ); } function wpcf7_support_html5() { return (bool) apply_filters( 'wpcf7_support_html5', true ); } function wpcf7_support_html5_fallback() { return (bool) apply_filters( 'wpcf7_support_html5_fallback', false ); } function wpcf7_use_really_simple_captcha() { return apply_filters( 'wpcf7_use_really_simple_captcha', WPCF7_USE_REALLY_SIMPLE_CAPTCHA ); } function wpcf7_validate_configuration() { return apply_filters( 'wpcf7_validate_configuration', WPCF7_VALIDATE_CONFIGURATION ); } function wpcf7_load_js() { return apply_filters( 'wpcf7_load_js', WPCF7_LOAD_JS ); } function wpcf7_load_css() { return apply_filters( 'wpcf7_load_css', WPCF7_LOAD_CSS ); } function wpcf7_format_atts( $atts ) { $html = ''; $prioritized_atts = array( 'type', 'name', 'value' ); foreach ( $prioritized_atts as $att ) { if ( isset( $atts[$att] ) ) { $value = trim( $atts[$att] ); $html .= sprintf( ' %s="%s"', $att, esc_attr( $value ) ); unset( $atts[$att] ); } } foreach ( $atts as $key => $value ) { $key = strtolower( trim( $key ) ); if ( ! preg_match( '/^[a-z_:][a-z_:.0-9-]*$/', $key ) ) { continue; } $value = trim( $value ); if ( '' !== $value ) { $html .= sprintf( ' %s="%s"', $key, esc_attr( $value ) ); } } $html = trim( $html ); return $html; } function wpcf7_link( $url, $anchor_text, $args = '' ) { $defaults = array( 'id' => '', 'class' => '', ); $args = wp_parse_args( $args, $defaults ); $args = array_intersect_key( $args, $defaults ); $atts = wpcf7_format_atts( $args ); $link = sprintf( '%2$s', esc_url( $url ), esc_html( $anchor_text ), $atts ? ( ' ' . $atts ) : '' ); return $link; } function wpcf7_get_request_uri() { static $request_uri = ''; if ( empty( $request_uri ) ) { $request_uri = add_query_arg( array() ); } return esc_url_raw( $request_uri ); } function wpcf7_register_post_types() { if ( class_exists( 'WPCF7_ContactForm' ) ) { WPCF7_ContactForm::register_post_type(); return true; } else { return false; } } function wpcf7_version( $args = '' ) { $defaults = array( 'limit' => -1, 'only_major' => false ); $args = wp_parse_args( $args, $defaults ); if ( $args['only_major'] ) { $args['limit'] = 2; } $args['limit'] = (int) $args['limit']; $ver = WPCF7_VERSION; $ver = strtr( $ver, '_-+', '...' ); $ver = preg_replace( '/[^0-9.]+/', ".$0.", $ver ); $ver = preg_replace( '/[.]+/', ".", $ver ); $ver = trim( $ver, '.' ); $ver = explode( '.', $ver ); if ( -1 < $args['limit'] ) { $ver = array_slice( $ver, 0, $args['limit'] ); } $ver = implode( '.', $ver ); return $ver; } function wpcf7_version_grep( $version, array $input ) { $pattern = '/^' . preg_quote( (string) $version, '/' ) . '(?:\.|$)/'; return preg_grep( $pattern, $input ); } function wpcf7_enctype_value( $enctype ) { $enctype = trim( $enctype ); if ( empty( $enctype ) ) { return ''; } $valid_enctypes = array( 'application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain', ); if ( in_array( $enctype, $valid_enctypes ) ) { return $enctype; } $pattern = '%^enctype="(' . implode( '|', $valid_enctypes ) . ')"$%'; if ( preg_match( $pattern, $enctype, $matches ) ) { return $matches[1]; // for back-compat } return ''; } function wpcf7_rmdir_p( $dir ) { if ( is_file( $dir ) ) { if ( ! $result = @unlink( $dir ) ) { $stat = @stat( $dir ); $perms = $stat['mode']; @chmod( $dir, $perms | 0200 ); // add write for owner if ( ! $result = @unlink( $dir ) ) { @chmod( $dir, $perms ); } } return $result; } if ( ! is_dir( $dir ) ) { return false; } if ( $handle = @opendir( $dir ) ) { while ( false !== ( $file = readdir( $handle ) ) ) { if ( $file == "." || $file == ".." ) { continue; } wpcf7_rmdir_p( path_join( $dir, $file ) ); } closedir( $handle ); } return @rmdir( $dir ); } /* From _http_build_query in wp-includes/functions.php */ function wpcf7_build_query( $args, $key = '' ) { $sep = '&'; $ret = array(); foreach ( (array) $args as $k => $v ) { $k = urlencode( $k ); if ( ! empty( $key ) ) { $k = $key . '%5B' . $k . '%5D'; } if ( null === $v ) { continue; } elseif ( false === $v ) { $v = '0'; } if ( is_array( $v ) || is_object( $v ) ) { array_push( $ret, wpcf7_build_query( $v, $k ) ); } else { array_push( $ret, $k . '=' . urlencode( $v ) ); } } return implode( $sep, $ret ); } /** * Returns the number of code units in a string. * * @see http://www.w3.org/TR/html5/infrastructure.html#code-unit-length * * @return int|bool The number of code units, or false if mb_convert_encoding is not available. */ function wpcf7_count_code_units( $string ) { static $use_mb = null; if ( is_null( $use_mb ) ) { $use_mb = function_exists( 'mb_convert_encoding' ); } if ( ! $use_mb ) { return false; } $string = (string) $string; $encoding = mb_detect_encoding( $string, mb_detect_order(), true ); if ( $encoding ) { $string = mb_convert_encoding( $string, 'UTF-16', $encoding ); } else { $string = mb_convert_encoding( $string, 'UTF-16', 'UTF-8' ); } $byte_count = mb_strlen( $string, '8bit' ); return floor( $byte_count / 2 ); } function wpcf7_is_localhost() { $server_name = strtolower( $_SERVER['SERVER_NAME'] ); return in_array( $server_name, array( 'localhost', '127.0.0.1' ) ); } function wpcf7_deprecated_function( $function, $version, $replacement ) { $trigger_error = apply_filters( 'deprecated_function_trigger_error', true ); if ( WP_DEBUG && $trigger_error ) { if ( function_exists( '__' ) ) { trigger_error( sprintf( __( '%1$s is deprecated since Contact Form 7 version %2$s! Use %3$s instead.', 'contact-form-7' ), $function, $version, $replacement ) ); } else { trigger_error( sprintf( '%1$s is deprecated since Contact Form 7 version %2$s! Use %3$s instead.', $function, $version, $replacement ) ); } } } PKP\[G?88includes/pipe.phpnuW+Abefore = $this->after = trim( $text ); } else { $this->before = trim( substr( $text, 0, $pipe_pos ) ); $this->after = trim( substr( $text, $pipe_pos + 1 ) ); } } } class WPCF7_Pipes { private $pipes = array(); public function __construct( array $texts ) { foreach ( $texts as $text ) { $this->add_pipe( $text ); } } private function add_pipe( $text ) { $pipe = new WPCF7_Pipe( $text ); $this->pipes[] = $pipe; } public function do_pipe( $before ) { foreach ( $this->pipes as $pipe ) { if ( $pipe->before == $before ) { return $pipe->after; } } return $before; } public function collect_befores() { $befores = array(); foreach ( $this->pipes as $pipe ) { $befores[] = $pipe->before; } return $befores; } public function collect_afters() { $afters = array(); foreach ( $this->pipes as $pipe ) { $afters[] = $pipe->after; } return $afters; } public function zero() { return empty( $this->pipes ); } public function random_pipe() { if ( $this->zero() ) { return null; } return $this->pipes[array_rand( $this->pipes )]; } } PKP\M3  includes/integration.phpnuW+Aservices[$name] ) ) { return false; } $this->services[$name] = $service; } public function add_category( $name, $title ) { $name = sanitize_key( $name ); if ( empty( $name ) || isset( $this->categories[$name] ) ) { return false; } $this->categories[$name] = $title; } public function service_exists( $name = '' ) { if ( '' == $name ) { return (bool) count( $this->services ); } else { return isset( $this->services[$name] ); } } public function get_service( $name ) { if ( $this->service_exists( $name ) ) { return $this->services[$name]; } else { return false; } } public function list_services( $args = '' ) { $args = wp_parse_args( $args, array( 'include' => array(), ) ); $singular = false; $services = (array) $this->services; if ( ! empty( $args['include'] ) ) { $services = array_intersect_key( $services, array_flip( (array) $args['include'] ) ); if ( 1 == count( $services ) ) { $singular = true; } } if ( empty( $services ) ) { return; } $action = wpcf7_current_action(); foreach ( $services as $name => $service ) { $cats = array_intersect_key( $this->categories, array_flip( $service->get_categories() ) ); ?>
icon(); ?>

get_title() ); ?>


link(); ?>

display( $action ); } else { $service->display(); } ?>
compose(); } private function __construct( $name, $template ) { $this->name = trim( $name ); $this->use_html = ! empty( $template['use_html'] ); $this->exclude_blank = ! empty( $template['exclude_blank'] ); $this->template = wp_parse_args( $template, array( 'subject' => '', 'sender' => '', 'body' => '', 'recipient' => '', 'additional_headers' => '', 'attachments' => '', ) ); } public function name() { return $this->name; } public function get( $component, $replace_tags = false ) { $use_html = ( $this->use_html && 'body' == $component ); $exclude_blank = ( $this->exclude_blank && 'body' == $component ); $template = $this->template; $component = isset( $template[$component] ) ? $template[$component] : ''; if ( $replace_tags ) { $component = $this->replace_tags( $component, array( 'html' => $use_html, 'exclude_blank' => $exclude_blank, ) ); if ( $use_html && ! preg_match( '%\s].*%is', $component ) ) { $component = $this->htmlize( $component ); } } return $component; } private function htmlize( $body ) { $header = apply_filters( 'wpcf7_mail_html_header', ' ' . esc_html( $this->get( 'subject', true ) ) . ' ', $this ); $footer = apply_filters( 'wpcf7_mail_html_footer', ' ', $this ); $html = $header . wpautop( $body ) . $footer; return $html; } private function compose( $send = true ) { $components = array( 'subject' => $this->get( 'subject', true ), 'sender' => $this->get( 'sender', true ), 'body' => $this->get( 'body', true ), 'recipient' => $this->get( 'recipient', true ), 'additional_headers' => $this->get( 'additional_headers', true ), 'attachments' => $this->attachments(), ); $components = apply_filters( 'wpcf7_mail_components', $components, wpcf7_get_current_contact_form(), $this ); if ( ! $send ) { return $components; } $subject = wpcf7_strip_newline( $components['subject'] ); $sender = wpcf7_strip_newline( $components['sender'] ); $recipient = wpcf7_strip_newline( $components['recipient'] ); $body = $components['body']; $additional_headers = trim( $components['additional_headers'] ); $attachments = $components['attachments']; $headers = "From: $sender\n"; if ( $this->use_html ) { $headers .= "Content-Type: text/html\n"; $headers .= "X-WPCF7-Content-Type: text/html\n"; } else { $headers .= "X-WPCF7-Content-Type: text/plain\n"; } if ( $additional_headers ) { $headers .= $additional_headers . "\n"; } return wp_mail( $recipient, $subject, $body, $headers, $attachments ); } public function replace_tags( $content, $args = '' ) { if ( true === $args ) { $args = array( 'html' => true ); } $args = wp_parse_args( $args, array( 'html' => false, 'exclude_blank' => false, ) ); return wpcf7_mail_replace_tags( $content, $args ); } private function attachments( $template = null ) { if ( ! $template ) { $template = $this->get( 'attachments' ); } $attachments = array(); if ( $submission = WPCF7_Submission::get_instance() ) { $uploaded_files = $submission->uploaded_files(); foreach ( (array) $uploaded_files as $name => $path ) { if ( false !== strpos( $template, "[${name}]" ) && ! empty( $path ) ) { $attachments[] = $path; } } } foreach ( explode( "\n", $template ) as $line ) { $line = trim( $line ); if ( '[' == substr( $line, 0, 1 ) ) { continue; } $path = path_join( WP_CONTENT_DIR, $line ); if ( @is_readable( $path ) && @is_file( $path ) ) { $attachments[] = $path; } } return $attachments; } } function wpcf7_mail_replace_tags( $content, $args = '' ) { $args = wp_parse_args( $args, array( 'html' => false, 'exclude_blank' => false, ) ); if ( is_array( $content ) ) { foreach ( $content as $key => $value ) { $content[$key] = wpcf7_mail_replace_tags( $value, $args ); } return $content; } $content = explode( "\n", $content ); foreach ( $content as $num => $line ) { $line = new WPCF7_MailTaggedText( $line, $args ); $replaced = $line->replace_tags(); if ( $args['exclude_blank'] ) { $replaced_tags = $line->get_replaced_tags(); if ( empty( $replaced_tags ) || array_filter( $replaced_tags ) ) { $content[$num] = $replaced; } else { unset( $content[$num] ); // Remove a line. } } else { $content[$num] = $replaced; } } $content = implode( "\n", $content ); return $content; } add_action( 'phpmailer_init', 'wpcf7_phpmailer_init' ); function wpcf7_phpmailer_init( $phpmailer ) { $wpcf7_content_type = false; foreach ( (array) $phpmailer->getCustomHeaders() as $custom_header ) { if ( 'X-WPCF7-Content-Type' == $custom_header[0] ) { $wpcf7_content_type = trim( $custom_header[1] ); break; } } if ( 'text/html' == $wpcf7_content_type ) { $phpmailer->msgHTML( $phpmailer->Body ); } } class WPCF7_MailTaggedText { private $html = false; private $callback = null; private $content = ''; private $replaced_tags = array(); public function __construct( $content, $args = '' ) { $args = wp_parse_args( $args, array( 'html' => false, 'callback' => null, ) ); $this->html = (bool) $args['html']; if ( null !== $args['callback'] && is_callable( $args['callback'] ) ) { $this->callback = $args['callback']; } elseif ( $this->html ) { $this->callback = array( $this, 'replace_tags_callback_html' ); } else { $this->callback = array( $this, 'replace_tags_callback' ); } $this->content = $content; } public function get_replaced_tags() { return $this->replaced_tags; } public function replace_tags() { $regex = '/(\[?)\[[\t ]*' . '([a-zA-Z_][0-9a-zA-Z:._-]*)' // [2] = name . '((?:[\t ]+"[^"]*"|[\t ]+\'[^\']*\')*)' // [3] = values . '[\t ]*\](\]?)/'; return preg_replace_callback( $regex, $this->callback, $this->content ); } private function replace_tags_callback_html( $matches ) { return $this->replace_tags_callback( $matches, true ); } private function replace_tags_callback( $matches, $html = false ) { // allow [[foo]] syntax for escaping a tag if ( $matches[1] == '[' && $matches[4] == ']' ) { return substr( $matches[0], 1, -1 ); } $tag = $matches[0]; $tagname = $matches[2]; $values = $matches[3]; if ( ! empty( $values ) ) { preg_match_all( '/"[^"]*"|\'[^\']*\'/', $values, $matches ); $values = wpcf7_strip_quote_deep( $matches[0] ); } $do_not_heat = false; if ( preg_match( '/^_raw_(.+)$/', $tagname, $matches ) ) { $tagname = trim( $matches[1] ); $do_not_heat = true; } $format = ''; if ( preg_match( '/^_format_(.+)$/', $tagname, $matches ) ) { $tagname = trim( $matches[1] ); $format = $values[0]; } $submission = WPCF7_Submission::get_instance(); $submitted = $submission ? $submission->get_posted_data( $tagname ) : null; if ( null !== $submitted ) { if ( $do_not_heat ) { $submitted = isset( $_POST[$tagname] ) ? $_POST[$tagname] : ''; } $replaced = $submitted; if ( ! empty( $format ) ) { $replaced = $this->format( $replaced, $format ); } $replaced = wpcf7_flat_join( $replaced ); if ( $html ) { $replaced = esc_html( $replaced ); $replaced = wptexturize( $replaced ); } $replaced = apply_filters( 'wpcf7_mail_tag_replaced', $replaced, $submitted, $html ); $replaced = wp_unslash( trim( $replaced ) ); $this->replaced_tags[$tag] = $replaced; return $replaced; } $special = apply_filters( 'wpcf7_special_mail_tags', '', $tagname, $html ); if ( ! empty( $special ) ) { $this->replaced_tags[$tag] = $special; return $special; } return $tag; } public function format( $original, $format ) { $original = (array) $original; foreach ( $original as $key => $value ) { if ( preg_match( '/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $value ) ) { $original[$key] = mysql2date( $format, $value ); } } return $original; } } /* Special Mail Tags */ add_filter( 'wpcf7_special_mail_tags', 'wpcf7_special_mail_tag', 10, 3 ); function wpcf7_special_mail_tag( $output, $name, $html ) { $name = preg_replace( '/^wpcf7\./', '_', $name ); // for back-compat $submission = WPCF7_Submission::get_instance(); if ( ! $submission ) { return $output; } if ( '_remote_ip' == $name ) { if ( $remote_ip = $submission->get_meta( 'remote_ip' ) ) { return $remote_ip; } else { return ''; } } if ( '_user_agent' == $name ) { if ( $user_agent = $submission->get_meta( 'user_agent' ) ) { return $html ? esc_html( $user_agent ) : $user_agent; } else { return ''; } } if ( '_url' == $name ) { if ( $url = $submission->get_meta( 'url' ) ) { return esc_url( $url ); } else { return ''; } } if ( '_date' == $name || '_time' == $name ) { if ( $timestamp = $submission->get_meta( 'timestamp' ) ) { if ( '_date' == $name ) { return date_i18n( get_option( 'date_format' ), $timestamp ); } if ( '_time' == $name ) { return date_i18n( get_option( 'time_format' ), $timestamp ); } } return ''; } if ( '_post_' == substr( $name, 0, 6 ) ) { $unit_tag = $submission->get_meta( 'unit_tag' ); if ( $unit_tag && preg_match( '/^wpcf7-f(\d+)-p(\d+)-o(\d+)$/', $unit_tag, $matches ) ) { $post_id = absint( $matches[2] ); if ( $post = get_post( $post_id ) ) { if ( '_post_id' == $name ) { return (string) $post->ID; } if ( '_post_name' == $name ) { return $post->post_name; } if ( '_post_title' == $name ) { return $html ? esc_html( $post->post_title ) : $post->post_title; } if ( '_post_url' == $name ) { return get_permalink( $post->ID ); } $user = new WP_User( $post->post_author ); if ( '_post_author' == $name ) { return $user->display_name; } if ( '_post_author_email' == $name ) { return $user->user_email; } } } return ''; } return $output; } PKP\includes/css/styles-rtl.cssnuW+Aspan.wpcf7-not-valid-tip { direction: rtl; } .use-floating-validation-tip span.wpcf7-not-valid-tip { left: auto; right: 20%; } span.wpcf7-list-item { margin: 0 1em 0 0; } PKP\S^FFincludes/css/styles.cssnuW+Adiv.wpcf7 { margin: 0; padding: 0; } div.wpcf7-response-output { margin: 2em 0.5em 1em; padding: 0.2em 1em; } div.wpcf7 .screen-reader-response { position: absolute; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); height: 1px; width: 1px; margin: 0; padding: 0; border: 0; } div.wpcf7-mail-sent-ok { border: 2px solid #398f14; } div.wpcf7-mail-sent-ng { border: 2px solid #ff0000; } div.wpcf7-spam-blocked { border: 2px solid #ffa500; } div.wpcf7-validation-errors { border: 2px solid #f7e700; } .wpcf7-form-control-wrap { position: relative; } span.wpcf7-not-valid-tip { color: #f00; font-size: 1em; font-weight: normal; display: block; } .use-floating-validation-tip span.wpcf7-not-valid-tip { position: absolute; top: 20%; left: 20%; z-index: 100; border: 1px solid #ff0000; background: #fff; padding: .2em .8em; } span.wpcf7-list-item { display: inline-block; margin: 0 0 0 1em; } span.wpcf7-list-item-label::before, span.wpcf7-list-item-label::after { content: " "; } .wpcf7-display-none { display: none; } div.wpcf7 .ajax-loader { visibility: hidden; display: inline-block; background-image: url('../../images/ajax-loader.gif'); width: 16px; height: 16px; border: none; padding: 0; margin: 0 0 0 4px; vertical-align: middle; } div.wpcf7 .ajax-loader.is-active { visibility: visible; } div.wpcf7 div.ajax-error { display: none; } div.wpcf7 .placeheld { color: #888; } div.wpcf7 .wpcf7-recaptcha iframe { margin-bottom: 0; } div.wpcf7 input[type="file"] { cursor: pointer; } div.wpcf7 input[type="file"]:disabled { cursor: default; } PKP\7includes/l10n.phpnuW+A 'contact-form-7', 'version' => WPCF7_VERSION, ) ); if ( is_wp_error( $api ) || empty( $api['translations'] ) ) { return $l10n; } foreach ( (array) $api['translations'] as $translation ) { if ( ! empty( $translation['language'] ) && ! empty( $translation['english_name'] ) ) { $l10n[$translation['language']] = $translation['english_name']; } } return $l10n; } function wpcf7_is_valid_locale( $locale ) { $pattern = '/^[a-z]{2,3}(?:_[a-zA-Z_]{2,})?$/'; return (bool) preg_match( $pattern, $locale ); } function wpcf7_is_rtl( $locale = '' ) { static $rtl_locales = array( 'ar' => 'Arabic', 'ary' => 'Moroccan Arabic', 'azb' => 'South Azerbaijani', 'fa_IR' => 'Persian', 'haz' => 'Hazaragi', 'he_IL' => 'Hebrew', 'ps' => 'Pashto', 'ug_CN' => 'Uighur', ); if ( empty( $locale ) && function_exists( 'is_rtl' ) ) { return is_rtl(); } if ( empty( $locale ) ) { $locale = get_locale(); } return isset( $rtl_locales[$locale] ); } function wpcf7_load_textdomain( $locale = null ) { global $l10n; $domain = 'contact-form-7'; if ( get_locale() == $locale ) { $locale = null; } if ( empty( $locale ) ) { if ( is_textdomain_loaded( $domain ) ) { return true; } else { return load_plugin_textdomain( $domain, false, $domain . '/languages' ); } } else { $mo_orig = $l10n[$domain]; unload_textdomain( $domain ); $mofile = $domain . '-' . $locale . '.mo'; $path = WP_PLUGIN_DIR . '/' . $domain . '/languages'; if ( $loaded = load_textdomain( $domain, $path . '/'. $mofile ) ) { return $loaded; } else { $mofile = WP_LANG_DIR . '/plugins/' . $mofile; return load_textdomain( $domain, $mofile ); } $l10n[$domain] = $mo_orig; } return false; } PKP\s;i;i9includes/js/jquery-ui/themes/smoothness/jquery-ui.min.cssnuW+A/*! jQuery UI - v1.10.3 - 2013-05-03 * http://jqueryui.com * Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css * 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 * Copyright 2013 jQuery Foundation and other contributors Licensed MIT */.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-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.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-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.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:700;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;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;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{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:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 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-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.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(images/animated-overlay.gif);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.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-helper{position:absolute;z-index:100;border:1px dotted #000}.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}.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-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;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:0;border-bottom:0;border-right:0}.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 li a{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 a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.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{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}PKP\20Nincludes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.pngnuW+APNG  IHDRG#7vbKGD݊ pHYsHHFk>IDAT(ch`ph4i%tEXtdate:create2013-05-03T09:21:03-07:00%tEXtdate:modify2013-05-03T09:21:03-07:00oCjUIENDB`PKP\1I)OONincludes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.pngnuW+APNG  IHDRAbKGD X pHYsHHFk>IDATH! AblA1{VY0ixxvDK_O9 aՔ}^JaȌ0bvBA$,Q"_44=SqcyEIW IDAT8cX Q(sI. I/ZW%tEXtdate:create2013-05-03T09:21:03-07:00%tEXtdate:modify2013-05-03T09:21:03-07:00oCjUIENDB`PKP\gNincludes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.pngnuW+APNG  IHDRDbKGD1 pHYsHHFk>HIDAT8cx0Fѳg ύax1e&ë8! obަ2fx#3ǵ >QD @$.5o%tEXtdate:create2013-05-03T09:21:03-07:00%tEXtdate:modify2013-05-03T09:21:03-07:00oCjUIENDB`PKP\!_[PPJincludes/js/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.pngnuW+APNG  IHDREr@bKGDE;- pHYsHHFk>mIDATx{leG}?gK$U!>T؈Ji6A"VR%;"*UP) /zRJFQP zBQHVU5sμ9^3ߕ{~7s7<.` cAb/@[VD03AX90N_B &>~> c;abDߎEQz'kMayԉ 6!:u::@RŤByDD'L-f]Sq!f SQ&S7MCr==3dJ{fZS0Ms:0K٦gʿ&HU=mc4i?UĔGU4hcQb]!hLW/  @pxh8~|AQf?ێ1f¸=uQGJHpPϠIw״m췥ԧ>2"WÓP&{nT:sfqH@.cI ~Ss+^|Bn29 dH]v-ˌ-meh>q&تg 9x#cn~!pxh84^/ o #Z@S^4 KZKPd9C@F[,a+]8vKqHlw9ק84KBץ|&#[\C`R!:F zC6)AT1wU.Iҗ!4ig3wE:q7n0uAmPy TK(5ͬlNæbTrwDV]te47 L[C0P&0++  @pxh84Y`OEZj,*-E)e{U, \uoV: `omKet_WOdW3Z Քrv|~^g`jycp*fb]M59.LNq+%ۯ0vccJEM5kk#I<x_ I#0Dw4xh84^/ ^c drDM{wQte{^`br./M:0գ*z`]|SB(e)h͎/Vܮ"aO!o ,u^Љ^=zt`WeCCM Qϱo0q%Uo?<@6HG/uAQ-_u||ִ*2lٍuG@ j !Br qL!*)h.V{3-!w$dP*/P[ t1l3hlyp0bgL} 3$%\/.)TwQ"uK7d+2! @pxh84'aY$mf6lB'.D Рx7SxtIe We}d0RW^ݢ0](U݋Tx|T|@v^Df׹Lb(2H0n8;_QO}D&3{YWw5*e˗?̖G :H iZӖ)/MP(:!/|B[i:Gf L`~:z$aa^ʭ|P- kbݞ<ەL&xJAABȼHvᑢ[ySəwNJuy %pw0_a"zx 3i1|= @%JWAm\ lXm9+()S orro*E`Z1&=ޗg!Rt<bfa?qh'y'ry#\& o+Ԫ|Y%_Hp"k1*ɫU[&x9xAsmfe<_7;y6mi :[)EB7̰8fCH`⾿h)}(%m'& ;(ݚ!{:^R@NKү"*<V敡=oh~q+`6IiI<#Z=^IE\`0]1%DA^a0f,c %[Gxh84^/rdh9M7L)-ӂ-?K(stբh-?:[ڧCr]G(YB3|C| leXW_xV8ƊbbQ7V4J]l!= D ?'a`^aq8:-OYPxۀ֝X5Q"GִW} I>ȓclpVZM_gڰCveG{<_d0՗eN%NyƍȄp~Ú/kn|(G#.s9Jۇl [6ɻ&.X{SDf†< y?O~ƅDP*~bgcos{;'Z9Z.O孁e U~?Ӆ1N3ڶD(1GxxkSHI~ی?Ok,i(ׁۈ{.h_5؋nF70QOS5:'/աJr .KNwuer>n-U$U`Iv%.AUed ;Ә:+a&XĎ y Gс "4pxh84^ @d6((Ԕ{C::[>H, ɴNVNhr.~NZ`3᝼KQ|$%t!Vn%=*7fg(m!f y"kI6Y/eZٳ+zg6W8ɦbQ%y{9Ï*ŕ#7b-tX͕8ynO{]!ټ*\ (p2.Hٙd.^Z(N &l2&k U&ף#~.7658A7}P:BlkU[8)jw0$W !s\ QFn(qRK:'X@=$ x|5:@]2Si.& $` 8tS =&[#߫U3Wҳq ^H{➇Z4"AH#U0+̱1Ɏ;O9"DE C+nU:|a ɔM|?HW1$~=kUџVVl{7 ^;<,t[T"3SU9l˾Hx^&a@)E&<I?U7xG4c *i 5)ñ>wHf5[qO.d&J_~W\`G{ |-e/Чkd E( Niv=C` ̲Z+%m )s!ī6FeiN%O*㪞v,s@%4tS/Ѓ (gX7i&X 5WJ"*V J6s{IwoO_5~YXw(R!m)^'Dɸ5=@+~jyQ`O`$D`H_BT#%].XxDѫOR2E\K"R\T|:mO x*y =2~/?J,+%q Wޛ3?ܕ? ^e +RoҎ5س~oBo l84^/  @!/ONGۮ2t]С8cݮ5z=7ˮg@/aE[y#3#z7L.| (cRcSmQ$6ץ{ Da{T_j84^/  @ñ`/_g "d`ɾ0 { Cj_9jDՋa~? dc[0*a,& 0&+ OB4!1~Ix>8c&G)jI=@5@v&J?QlÇ@Q?^%tEXtdate:create2013-05-03T09:20:13-07:00=vI%tEXtdate:modify2013-02-15T13:17:29-08:00|КtEXtSoftwareAdobe ImageReadyqe<IENDB`PKP\T@I Nincludes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.pngnuW+APNG  IHDR(dObKGD݊ pHYsHHFk>IDAT(c (IUʑ.{%tEXtdate:create2013-05-03T09:21:03-07:00%tEXtdate:modify2013-05-03T09:21:03-07:00oCjUIENDB`PKP\ImJincludes/js/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.pngnuW+APNG  IHDRIJPLTE..........................................................................................oYtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh@^bKGDH pHYsHHFk>dIDATx] c۶H阒]Kd%٫뺮lmw]|pXm-}X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@*aӝ%MFDDDDDDTߖH,ERUn ب\f͹:}4ᦋ{)n[ ̰E K Y Dۇ- +Kl=ӃL`љ|%n a N#5 (4?EDDDD\oWFfq;\E_,W!%zE!F¶. (USHQ0dw)T 8#p,xBK *xXEe K솎%mKX~sFE~tdcaI1Af4dHcGSB`0wev`"{ .GDDDD,dO6k"qkMefS_UKŌ&g~>n H}) LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥  AHBLH@cUq=jcM2sJCLiR NQ0=Yi-|4V ]]B^ޞ_H$<$ a=d@ (ZAp_}~s:N{DC>m^ƒS&, ;N&B} <_AB]HuN(B0{h1IKDs j' M8.ӫ1h3df}mq nU{Lo z \=?@ ((e|=ơ麄Ci1r<|OO; `HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z ̥=U5} 7;b(nP&sk48ͥ01U Wvk18dqTՌE]qH8 GF K'rOrŗ6"fpT^3c"nMم-/W=tJ,X){P Rm|K>mX8v5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee|A=) dQ`}P[KN˂/~)O[dO=3El5'Y$?7mTzզ.\.` WE"""""v)V#]L;zqJr²[\-tҽ5 @ͷϟnT@+;cQhC*TڙAVr?f? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09 S;j5 iQ]7k0UޭGkX3#lY_Цxj޶9`# M [z KuO_z˿Dܭ*kOJ(7n\e ITƨl/U߶uw.~;#r.8 o# 5Lh>1i pVM?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/t R; TӲ]aL|efđ >ۣG|P`P8C1K՛A̍<2ۂKrl@L L 8@E>`nPNԍ,p EƆZF lÎ; F7Ȯ; swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ ES8:v`p~vj:Bp96oys% |@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу| ? +(OǍ+ #ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl%tEXtdate:create2013-05-03T09:20:13-07:00=vI%tEXtdate:modify2013-02-15T13:17:29-08:00|КtEXtSoftwareAdobe ImageReadyqe<IENDB`PKP\'DWWJincludes/js/jquery-ui/themes/smoothness/images/ui-icons_888888_256x240.pngnuW+APNG  IHDREr@bKGDI( pHYsHHFk>tIDATx{le}?g kuJ>DC^QMH*MU h(*$HR*j D])Ż(M6F6!6- xIi- HN8suιgf73ƣ7 x ^/2&v&v^DL l6I-o?cnD Iye#d0+03~0g'LV[RC:B~()$qvXuB@E@`HNG`TA%=]qAwJ)u)9:e9d`V0A{=BS*ڦ SgF A -(DR˷@"g'U,eSwʿj*)l[.HLyϰ9jaI6MR~~ nGٕ3  @pxh84~=@>(mE3a\`~=uQ[f3WAioK}3wէgV,jn2*ߕmM] y=xn"co.L"7]EC:dHzE@W.f+^eƦ6vռE4O`̴.)l :7){_Я~"pxh84^/ / #\@S^T0sZs1J1Pr hwVEgSTQ5[ \BO `+˾>}\6/0kg1[ KhlXʿ_Z^IA^N4vOW=%i^<9tf 2СBHg6!u\ҭZ&蒶 2s U]iT ]Uaq;]A :rG-3<Fn*ݴTݯ 4< ; @pxh84^ysh,ux$\j"Z-moSJ9{ e˹[ \fָұy2LT0K@9ԼŢ=?ХB=c"vT6 Tokza9Ts&6ոv }3':[5),xU!҃@}U kc ꈡY,]`&߬('u*^v Owu?}2&CȖr}ݾ^g[`yc*9s"f_b uuT?Mf  eۏ0evbcJEM%6PolM`n ~Esչdj|z)miO q/{کJqAGpxh84^a+ ʥ5݃F+Y&{˾I z\eXoJ}HȯiW)~nm߮ɞhl*7TP3kXJ7R""NXU}ٔއA/(qW\v6$2 -˶E zdj0u]PT{[:>>LDkZYֺ14ZCWUbd12zBY$i".~Ai=Œ ۪>EAIb\Ϋ c6OSB\ɅJ#" REȰ_'I.aluI YX^/  @=h$i37[d:Qu!ZtwUl~FŻbkK"$-c.3@,y;i-JӉR޽H!ɷjN;LdwEdp fO,jTq+ 򩸹h[@Vef6KVx\b|l}_$U+W!?o[yB(p3 r_5P2ݚla˱ *xGXG$`W~9?r+y -kd.@ <]#U\Z, W4Ig9L1s aRO^.P(>K\c6m^um Qlg"y[өD/[V*3谨Xm@[qX#r,a5 kLK"0񢐻(qAOVPU j(iJlWq li xS T!sXD@s 9ky8\aY"rv֗u- v!H 4<@(B$"PdVZ5Ɯ ߦs0kB5h$=dpϪ_@0+4@"hOtcky5vzK\1@ޒZ]B_.܋ؿ!IXdWpW0Z%y9s9jaK0hsN,lUX!hf!2.)0 6B|Iq/Ӽ0jDF[,5 !m`-$J~1wWQJD#"YO  6hVQ5Ct/7 8-*"_EUy 0x+Cxgh|+`6HiA|]Z=^JE\`20 ~]f 5X`?S0Q^?J1%[Gxh84^/{ S"rؘɛnRZԧ[v-POI'Z~ttONzqgآ4X ԃ,seq9 ,2)^Ķ/(rS?=# (9a:,وK x R. B%f6nϻ V/Σ %O+|!I 63eHWO vXIKOrZ8gg8=C29Ǫ[PB' rAmK"zʻ! m6뱾3y5ܓ"[< JsϏU9Z^8_fD!Zq_\- -`)Dg鲔iqIb.JXTbjk$M1^K6<˿9C_frEM~8]TxXu5_<t_0PA𶀆 @p4O"qGA餦vGbQprzE33U 6+$q?W 1XK<8 [sC!}E~5C~=Cn 1[xLO gUX=̪yhsl(&U'/qgv|^8Sx(o(Bxe\ӑľUs:҅ͅ2k W!BԜi VEOfX6gA5kOد2jS6ۼ[JSjQ:(Z0Ne Z]L2$4@8B,,Nj(t'8.JCLKUi5#Xx#|U:@m??d,^q5L!]MrI4pZ;>g@MFK)(}fU .{]~55>"$c +ן?Qc# mK-6)࿁_YnG+:|a "~ϯٯbq~=+,j?My 9"yDʍng6-z<,+tKxW"'l˾H[yJ&a@~/9"a%$iѣ6.S8ظ+y+*ojom p-k1 u%=-" 4wq-ՐEK |UfG -Ua]Xrx.\˅h:"LFdF5pf覊)nYͣnFh 1{'\<ϫlik)$H 䇙5%yknib /OEOjZ<,bP p+ @<[/ #/Zwp6$5DE |6w^>7{ԇNĭPwf>k7/c͗=cMﴯ߁AE`q:N*NQbUG`ʟƳCᨉ"5w5.&v;.ܱ7e$$yKYE<[y8M nm%U4@[&EC(./bC>Z1_PO^;Ф!Nwcl^]`C1L8GO{ >.|mO9QHN P{;=YJ7'[ɂ-b< Xӌ2@}޺PwaŨM lqG{R\pDxsT3Xؓ @pxh8ѱxe l TZBHaect*ZHFb52iiS[:DHS ))%_rpSeUӮ@ *I3*C 3 =&&5CB`Ê,o]~]3tحjXex0CTA3œy 5{t!k@QV+Vr 3e!̰BːۓOA԰‰ # U4VDчD*Oݕ<:XlBxh8L`pxh84y0؃Jk5#;ǮD"-鞺#tLn3ã|ÁysɩqvA2t>}XJx8c&G)jI}@5V&J? Y!\=jb<hj o%tEXtdate:create2013-05-03T09:20:13-07:00=vI%tEXtdate:modify2013-02-15T13:17:29-08:00|КtEXtSoftwareAdobe ImageReadyqe<IENDB`PKP\Ib|LLNincludes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.pngnuW+APNG  IHDRAbKGD X pHYsHHFk>IDATHϱ a\!VJ#XЋD} .f>>Pկxxqжuɚqf+6[\‡כWT4r6:]V:, (Ŵ8yG-(d H%tEXtdate:create2013-05-03T09:21:03-07:00%tEXtdate:modify2013-05-03T09:21:03-07:00oCjUIENDB`PKP\pNincludes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.pngnuW+APNG  IHDRDbKGD1 pHYsHHFk>HIDAT8cxa"[n{1qcpo"? 3}`xR1s?^^bxuu)뉣hW%R|%tEXtdate:create2013-05-03T09:21:03-07:00%tEXtdate:modify2013-05-03T09:21:03-07:00oCjUIENDB`PKP\\Wincludes/js/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.pngnuW+APNG  IHDRd2bKGD1 pHYsHHFk>ZIDATcx|Nhã 2'IDATx{he}?g{1)]K&qqU4kbiKR(HBP(IvJ_ӮIV@nB5iNiGjq& ~A#QrX'9:ܫ{3E{=yo~3g~Mp& 1Xxh8<#dlЅMx1&$5 ~V c$ױ, ƹiN:Z ߊY>"BH!-Cu8t}8!B *OF.[aͲlB&1h>M]hN4MAb̐!(hE15jձcO<6e7,eS(fo16+3y JR|{^3^{88 ~' pxh8<4 g2n6e̘{QpӀPAiۺߖfS(D'L6=T:sfq羀l.cI ǧ=iM>ڠLN{U&&{uo..4~# pxh8<4 gÛp^i/0TWcQ @)yu}`LUc%Tȥ AR@?P-`BKl bZ}Ш͢uJ%U]K2e tsY@,ee豅rjcܭsMn0 AmPy DK(5,lN&bDmrwYDVte$謷 L[C0O P&0+; g3@ pxh8<4Y`OFZ!x#~ Gk @3K@:>PRMA|e]KgF.BtlOY d!(vVX%m#I[RR`2T HwYu=bYPEcU%&@Ĺ]}qo7*GL eQX5U-³8| _ݟ5\5pVH^\ Fآaa5l14[#boP1EiswMJ'5T06B|I,b`ՈPXkB$[-EOHt |3D(id9N6@x/ؠm(#wjPt/Zobq%[:3^~a55 |E닃^E$L-_s, ߫㕔Ņ& _,# F}&.<4 gOrdh9M7L(5꓂.?M(stզ-?:[ڧCr]'YB2lC| leXSpG0KcI~u L0/yLtrI?R%-wǷh$LJV ͿӢ ,g x_7l4* uM+@x<}ãq><#`i :=*ۿ{)_8hspCWғK`B]H"}_PNtQl1YQh+&?x5: ֘aYҭ=\En.YʸJE%uTj5F'b;[vט4u6]lkw3÷, : %& [|||Yiq`:qXc2+u|~/wrz[j-I># ,9Q:#,25@@%S@@6ÅJ{6{)hW~q]t<+|'0Oa 63UHWl;'Z9Z\oO嵁eeƢ[odarEm&ʧ3m6=g^Sx Hjmi(v ۈ{.h_%8nF7y{OFS5:/աWPH+bGx/9IYy.MtTeە,ѿ- Red ;Ә:9kT5mEG|\Wuǣ@^LE 4 gy ; J'U䐎N׷< p2mӫ.ZZ5< V ,p3w=~3jǿě#ʭ|Sfyk=Cn 1]C'I_O*,J՞D\\I}E\$M(E\߮?ƫw NJEb6tz:-?Bp ?XJ $xQJ}!#Ո2Ht!VɽV\'Y366YuJOAa[5e]p9=7t_y?OS_iT<͛32N묳}jHQ RTȢ nfݮ~+ciQ < Ma=|* $@'ԌǕqUO;5~@eI29w" O~ssk{‰$m>v z^2vow` a4cM Cb>q:o=-p`_2 ng:6KXV,2Ǿ6 g3@ śsaR WWB g-N;F[ՒaAVLF<-m VbMC 7K)XPy s~=<ܒ{x!=ÃqRl]/ 0l)'}#^tX孋t8FCY$)PUBE(~ҞV2^*SLHlS'IA[ Zx-V"ȥJ+ \|5uWnLJkܟ(00JyꞄafg6 g3@Ñg[}ZQk?ҳ=zI$ Т:9FWmx:\(W+eF9,*!GhDL8[vo)AaK5S/)^c(WHNW8Tr=opp]MCO?* D΢Ob/hs0ڜb91C9-oۿԗuQFc|W%@HB29/DxD`U:Ƈgi"`%ᄽ t E`t62k)PEѿO,?k_yh(/=@u g3@v@]<]~WD`.f~oʈNVA߈եM ^yMQ|ߛ^-{o~>wЃ (gXץi&X uDU͕l  ғޥߞkPHHCJ~S@O ׋ѓy7 k {25ofϫo{'!'Z%q*)gC\#\'0 P_WL7&AlJ\ Zp, Yxjc O(6zIV u:גTDO9ׄQ<*y =2~/?J,WJQW>Wu?#G/4"K{㧏',Iҟ综E;|Rݠ~W7i86 pxh8<4 r<}8 kGo;uCPv)A<$ց;{l #`FC!f Ӆ/`7(0R!99z@%!/m]AdhvG3@ pxh8<4{P/ 3@} B&^16{. ߠaQo 2lmt!\%@X?5ճa~ ʠM65wka)TF_ 2$x5_9!VxRd1!}'`$Uԇr? Q `7`.k_VzԄp]]GOLXCk3%tEXtdate:create2013-05-03T09:20:13-07:00=vI%tEXtdate:modify2013-02-15T13:17:29-08:00|КtEXtSoftwareAdobe ImageReadyqe<IENDB`PKP\Cincludes/js/jquery-ui/themes/smoothness/images/animated-overlay.gifnuW+AGIF89a((! NETSCAPE2.0! ,(( z KNY#7)zɭv[3ӵϰxPwEa؁FOfVYeΛ||/X\Wr݅o$m^K0>'$uf6G'Xg5Ȩ5)9):ZiYJyڪY! ,((}Q6Úa_y#ʩijK-|˱K3^Pw&KOә=7IfTzLMYhcdX\1iea }wl5CgGB)'hY9IHyȗ ʹYjZGh'j85P! ,(( mQ6,@o-`u$>Iz/ 69~[ޢՄ^Ot6Ac:vN?cUX|f&6ẍ́哲_~G(b8X%x7IXI9x(I:Y*XYvʚP! ,((oˁ;MZY|ƍ舝([99ږ1`P2!H>oQW^dsc2*Siy x[s^ݶVGWwgǸإx舙Y8IIyIZj)Xf):R! ,((CqMZYm5W(F~٩'-:Õ|ڒ1p?X1dFSLӨqne^ACjTpfԷUp|%ƌn]z~mHXx6X9)Hyi9ƈר)Z *Y! ,((˜CMZ5Yo}6-ʕz㒽h1C&'EfrtF9z&ۭ*V:&Tjeu~_}W5hbG6(iV((x:蹊JYY* P! ,((CMZՅl}'vexVZk 򮯱$bR3ƒHPGkBjymhXklvYvֻf7HXH(((9x3%txiY 9i*ZJzWP! ,((CMZՅl}'vexVZ%;ӨU{ZbQ0G͹SSRƆШ 2kYEV}v]xTpg7gvHX'㖨9)רe&) ji:hIZT;PKP\oJincludes/js/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.pngnuW+APNG  IHDRIJPLTE 4vYtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh@^bKGDH pHYsHHFk>dIDATx] c۶H阒]Kd%٫뺮lmw]|pXm-}X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@*aӝ%MFDDDDDDTߖH,ERUn ب\f͹:}4ᦋ{)n[ ̰E K Y Dۇ- +Kl=ӃL`љ|%n a N#5 (4?EDDDD\oWFfq;\E_,W!%zE!F¶. (USHQ0dw)T 8#p,xBK *xXEe K솎%mKX~sFE~tdcaI1Af4dHcGSB`0wev`"{ .GDDDD,dO6k"qkMefS_UKŌ&g~>n H}) LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥  AHBLH@cUq=jcM2sJCLiR NQ0=Yi-|4V ]]B^ޞ_H$<$ a=d@ (ZAp_}~s:N{DC>m^ƒS&, ;N&B} <_AB]HuN(B0{h1IKDs j' M8.ӫ1h3df}mq nU{Lo z \=?@ ((e|=ơ麄Ci1r<|OO; `HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z ̥=U5} 7;b(nP&sk48ͥ01U Wvk18dqTՌE]qH8 GF K'rOrŗ6"fpT^3c"nMم-/W=tJ,X){P Rm|K>mX8v5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee|A=) dQ`}P[KN˂/~)O[dO=3El5'Y$?7mTzզ.\.` WE"""""v)V#]L;zqJr²[\-tҽ5 @ͷϟnT@+;cQhC*TڙAVr?f? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09 S;j5 iQ]7k0UޭGkX3#lY_Цxj޶9`# M [z KuO_z˿Dܭ*kOJ(7n\e ITƨl/U߶uw.~;#r.8 o# 5Lh>1i pVM?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/t R; TӲ]aL|efđ >ۣG|P`P8C1K՛A̍<2ۂKrl@L L 8@E>`nPNԍ,p EƆZF lÎ; F7Ȯ; swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ ES8:v`p~vj:Bp96oys% |@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу| ? +(OǍ+ #ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl%tEXtdate:create2013-05-03T09:20:13-07:00=vI%tEXtdate:modify2013-02-15T13:17:29-08:00|КtEXtSoftwareAdobe ImageReadyqe<IENDB`PKP\").}.}5includes/js/jquery-ui/themes/smoothness/jquery-ui.cssnuW+A/*! jQuery UI - v1.10.3 - 2013-05-03 * http://jqueryui.com * Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css * 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 * Copyright 2013 jQuery Foundation and other contributors Licensed MIT */ /* Layout helpers ----------------------------------*/ .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; /* support: IE7 */ } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .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-top: 2px; padding: .5em .5em .5em .7em; min-height: 0; /* support: IE7 */ } .ui-accordion .ui-accordion-icons { padding-left: 2.2em; } .ui-accordion .ui-accordion-noicons { padding-left: .7em; } .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; /* removes extra width in IE */ } .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { width: 2.2em; } /* button elements seem to need a little more width */ button.ui-button-icon-only { width: 2.4em; } .ui-button-icons-only { width: 3.4em; } button.ui-button-icons-only { width: 3.7em; } /* button text element */ .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; } /* no icon support for input elements, provide padding by default */ input.ui-button { padding: .4em 1em; } /* button icon element(s) */ .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; } /* button sets */ .ui-buttonset { margin-right: 7px; } .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } /* workarounds */ /* reset extra padding in Firefox, see h5bp.com/l */ 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-year { width: 100%; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 49%; } .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; } /* with multiple calendars */ .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; } /* RTL support */ .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 { 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: 21px; 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-menu { list-style: none; padding: 2px; margin: 0; display: block; outline: none; } .ui-menu .ui-menu { margin-top: -3px; position: absolute; } .ui-menu .ui-menu-item { margin: 0; padding: 0; width: 100%; /* support: IE10, see #8844 */ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); } .ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; min-height: 0; /* support: IE7 */ font-weight: normal; } .ui-menu .ui-menu-item a.ui-state-focus, .ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; } .ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; } .ui-menu .ui-state-disabled a { cursor: default; } /* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; } /* left-aligned */ .ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; } /* right-aligned */ .ui-menu .ui-menu-icon { position: static; float: right; } .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("images/animated-overlay.gif"); 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; } .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-helper { position: absolute; z-index: 100; border: 1px dotted black; } .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; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } /* For IE8 - See #6727 */ .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-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; } /* more specificity required here to overide default borders */ .ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* vertical centre icon */ .ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } .ui-spinner-up { top: 0; } .ui-spinner-down { bottom: 0; } /* TR overrides */ .ui-spinner .ui-icon-triangle-1-s { /* need to fix icons sprite */ background-position: -65px -16px; } .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 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 li a { 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 a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; } .ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { 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; } /* Component containers ----------------------------------*/ .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 #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .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: #555555; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; 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 #999999; 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 { color: #212121; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff 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; } /* Interaction Cues ----------------------------------*/ .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); /* For IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .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); } /* positioning */ .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 is deprecated, use ui-icon-seek-start instead */ .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; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .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; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa 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: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3; filter: Alpha(Opacity=30); border-radius: 8px; } PKP\bBB;includes/js/jquery-ui/themes/smoothness/jquery.ui.theme.cssnuW+A/*! * jQuery UI CSS Framework 1.10.3 * http://jqueryui.com * * Copyright 2013 jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * 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 */ /* Component containers ----------------------------------*/ .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 #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .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: #555555; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; 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 #999999; 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 { color: #212121; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff 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; } /* Interaction Cues ----------------------------------*/ .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); /* For IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .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); } /* positioning */ .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 is deprecated, use ui-icon-seek-start instead */ .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; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .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; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa 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: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3; filter: Alpha(Opacity=30); border-radius: 8px; } PKP\^l5l5includes/js/scripts.jsnuW+A( function( $ ) { 'use strict'; if ( typeof _wpcf7 === 'undefined' || _wpcf7 === null ) { return; } _wpcf7 = $.extend( { cached: 0, inputs: [] }, _wpcf7 ); $.fn.wpcf7InitForm = function() { this.ajaxForm( { beforeSubmit: function( arr, $form, options ) { $form.wpcf7ClearResponseOutput(); $form.find( '[aria-invalid]' ).attr( 'aria-invalid', 'false' ); $form.find( '.ajax-loader' ).addClass( 'is-active' ); return true; }, beforeSerialize: function( $form, options ) { $form.find( '[placeholder].placeheld' ).each( function( i, n ) { $( n ).val( '' ); } ); return true; }, data: { '_wpcf7_is_ajax_call': 1 }, dataType: 'json', success: $.wpcf7AjaxSuccess, error: function( xhr, status, error, $form ) { var e = $( '
' ).text( error.message ); $form.after( e ); } } ); if ( _wpcf7.cached ) { this.wpcf7OnloadRefill(); } this.wpcf7ToggleSubmit(); this.find( '.wpcf7-submit' ).wpcf7AjaxLoader(); this.find( '.wpcf7-acceptance' ).click( function() { $( this ).closest( 'form' ).wpcf7ToggleSubmit(); } ); this.find( '.wpcf7-exclusive-checkbox' ).wpcf7ExclusiveCheckbox(); this.find( '.wpcf7-list-item.has-free-text' ).wpcf7ToggleCheckboxFreetext(); this.find( '[placeholder]' ).wpcf7Placeholder(); if ( _wpcf7.jqueryUi && ! _wpcf7.supportHtml5.date ) { this.find( 'input.wpcf7-date[type="date"]' ).each( function() { $( this ).datepicker( { dateFormat: 'yy-mm-dd', minDate: new Date( $( this ).attr( 'min' ) ), maxDate: new Date( $( this ).attr( 'max' ) ) } ); } ); } if ( _wpcf7.jqueryUi && ! _wpcf7.supportHtml5.number ) { this.find( 'input.wpcf7-number[type="number"]' ).each( function() { $( this ).spinner( { min: $( this ).attr( 'min' ), max: $( this ).attr( 'max' ), step: $( this ).attr( 'step' ) } ); } ); } this.find( '.wpcf7-character-count' ).wpcf7CharacterCount(); this.find( '.wpcf7-validates-as-url' ).change( function() { $( this ).wpcf7NormalizeUrl(); } ); this.find( '.wpcf7-recaptcha' ).wpcf7Recaptcha(); }; $.wpcf7AjaxSuccess = function( data, status, xhr, $form ) { if ( ! $.isPlainObject( data ) || $.isEmptyObject( data ) ) { return; } _wpcf7.inputs = $form.serializeArray(); var $responseOutput = $form.find( 'div.wpcf7-response-output' ); $form.wpcf7ClearResponseOutput(); $form.find( '.wpcf7-form-control' ).removeClass( 'wpcf7-not-valid' ); $form.removeClass( 'invalid spam sent failed' ); if ( data.captcha ) { $form.wpcf7RefillCaptcha( data.captcha ); } if ( data.quiz ) { $form.wpcf7RefillQuiz( data.quiz ); } if ( data.invalids ) { $.each( data.invalids, function( i, n ) { $form.find( n.into ).wpcf7NotValidTip( n.message ); $form.find( n.into ).find( '.wpcf7-form-control' ).addClass( 'wpcf7-not-valid' ); $form.find( n.into ).find( '[aria-invalid]' ).attr( 'aria-invalid', 'true' ); } ); $responseOutput.addClass( 'wpcf7-validation-errors' ); $form.addClass( 'invalid' ); $( data.into ).wpcf7TriggerEvent( 'invalid' ); } else if ( 1 == data.spam ) { $form.find( '[name="g-recaptcha-response"]' ).each( function() { if ( '' == $( this ).val() ) { var $recaptcha = $( this ).closest( '.wpcf7-form-control-wrap' ); $recaptcha.wpcf7NotValidTip( _wpcf7.recaptcha.messages.empty ); } } ); $responseOutput.addClass( 'wpcf7-spam-blocked' ); $form.addClass( 'spam' ); $( data.into ).wpcf7TriggerEvent( 'spam' ); } else if ( 1 == data.mailSent ) { $responseOutput.addClass( 'wpcf7-mail-sent-ok' ); $form.addClass( 'sent' ); if ( data.onSentOk ) { $.each( data.onSentOk, function( i, n ) { eval( n ) } ); } $( data.into ).wpcf7TriggerEvent( 'mailsent' ); } else { $responseOutput.addClass( 'wpcf7-mail-sent-ng' ); $form.addClass( 'failed' ); $( data.into ).wpcf7TriggerEvent( 'mailfailed' ); } if ( data.onSubmit ) { $.each( data.onSubmit, function( i, n ) { eval( n ) } ); } $( data.into ).wpcf7TriggerEvent( 'submit' ); if ( 1 == data.mailSent ) { $form.resetForm(); } $form.find( '[placeholder].placeheld' ).each( function( i, n ) { $( n ).val( $( n ).attr( 'placeholder' ) ); } ); $responseOutput.append( data.message ).slideDown( 'fast' ); $responseOutput.attr( 'role', 'alert' ); $.wpcf7UpdateScreenReaderResponse( $form, data ); }; $.fn.wpcf7TriggerEvent = function( name ) { return this.each( function() { var elmId = this.id; var inputs = _wpcf7.inputs; /* DOM event */ var event = new CustomEvent( 'wpcf7' + name, { bubbles: true, detail: { id: elmId, inputs: inputs } } ); this.dispatchEvent( event ); /* jQuery event */ $( this ).trigger( 'wpcf7:' + name ); $( this ).trigger( name + '.wpcf7' ); // deprecated } ); }; $.fn.wpcf7ExclusiveCheckbox = function() { return this.find( 'input:checkbox' ).click( function() { var name = $( this ).attr( 'name' ); $( this ).closest( 'form' ).find( 'input:checkbox[name="' + name + '"]' ).not( this ).prop( 'checked', false ); } ); }; $.fn.wpcf7Placeholder = function() { if ( _wpcf7.supportHtml5.placeholder ) { return this; } return this.each( function() { $( this ).val( $( this ).attr( 'placeholder' ) ); $( this ).addClass( 'placeheld' ); $( this ).focus( function() { if ( $( this ).hasClass( 'placeheld' ) ) { $( this ).val( '' ).removeClass( 'placeheld' ); } } ); $( this ).blur( function() { if ( '' === $( this ).val() ) { $( this ).val( $( this ).attr( 'placeholder' ) ); $( this ).addClass( 'placeheld' ); } } ); } ); }; $.fn.wpcf7AjaxLoader = function() { return this.each( function() { $( this ).after( '' ); } ); }; $.fn.wpcf7ToggleSubmit = function() { return this.each( function() { var form = $( this ); if ( this.tagName.toLowerCase() != 'form' ) { form = $( this ).find( 'form' ).first(); } if ( form.hasClass( 'wpcf7-acceptance-as-validation' ) ) { return; } var submit = form.find( 'input:submit' ); if ( ! submit.length ) { return; } var acceptances = form.find( 'input:checkbox.wpcf7-acceptance' ); if ( ! acceptances.length ) { return; } submit.removeAttr( 'disabled' ); acceptances.each( function( i, n ) { n = $( n ); if ( n.hasClass( 'wpcf7-invert' ) && n.is( ':checked' ) || ! n.hasClass( 'wpcf7-invert' ) && ! n.is( ':checked' ) ) { submit.attr( 'disabled', 'disabled' ); } } ); } ); }; $.fn.wpcf7ToggleCheckboxFreetext = function() { return this.each( function() { var $wrap = $( this ).closest( '.wpcf7-form-control' ); if ( $( this ).find( ':checkbox, :radio' ).is( ':checked' ) ) { $( this ).find( ':input.wpcf7-free-text' ).prop( 'disabled', false ); } else { $( this ).find( ':input.wpcf7-free-text' ).prop( 'disabled', true ); } $wrap.find( ':checkbox, :radio' ).change( function() { var $cb = $( '.has-free-text', $wrap ).find( ':checkbox, :radio' ); var $freetext = $( ':input.wpcf7-free-text', $wrap ); if ( $cb.is( ':checked' ) ) { $freetext.prop( 'disabled', false ).focus(); } else { $freetext.prop( 'disabled', true ); } } ); } ); }; $.fn.wpcf7CharacterCount = function() { return this.each( function() { var $count = $( this ); var name = $count.attr( 'data-target-name' ); var down = $count.hasClass( 'down' ); var starting = parseInt( $count.attr( 'data-starting-value' ), 10 ); var maximum = parseInt( $count.attr( 'data-maximum-value' ), 10 ); var minimum = parseInt( $count.attr( 'data-minimum-value' ), 10 ); var updateCount = function( $target ) { var length = $target.val().length; var count = down ? starting - length : length; $count.attr( 'data-current-value', count ); $count.text( count ); if ( maximum && maximum < length ) { $count.addClass( 'too-long' ); } else { $count.removeClass( 'too-long' ); } if ( minimum && length < minimum ) { $count.addClass( 'too-short' ); } else { $count.removeClass( 'too-short' ); } }; $count.closest( 'form' ).find( ':input[name="' + name + '"]' ).each( function() { updateCount( $( this ) ); $( this ).keyup( function() { updateCount( $( this ) ); } ); } ); } ); }; $.fn.wpcf7NormalizeUrl = function() { return this.each( function() { var val = $.trim( $( this ).val() ); // check the scheme part if ( val && ! val.match( /^[a-z][a-z0-9.+-]*:/i ) ) { val = val.replace( /^\/+/, '' ); val = 'http://' + val; } $( this ).val( val ); } ); }; $.fn.wpcf7NotValidTip = function( message ) { return this.each( function() { var $into = $( this ); $into.find( 'span.wpcf7-not-valid-tip' ).remove(); $into.append( '' + message + '' ); if ( $into.is( '.use-floating-validation-tip *' ) ) { $( '.wpcf7-not-valid-tip', $into ).mouseover( function() { $( this ).wpcf7FadeOut(); } ); $( ':input', $into ).focus( function() { $( '.wpcf7-not-valid-tip', $into ).not( ':hidden' ).wpcf7FadeOut(); } ); } } ); }; $.fn.wpcf7FadeOut = function() { return this.each( function() { $( this ).animate( { opacity: 0 }, 'fast', function() { $( this ).css( { 'z-index': -100 } ); } ); } ); }; $.fn.wpcf7OnloadRefill = function() { return this.each( function() { var url = $( this ).attr( 'action' ); if ( 0 < url.indexOf( '#' ) ) { url = url.substr( 0, url.indexOf( '#' ) ); } var id = $( this ).find( 'input[name="_wpcf7"]' ).val(); var unitTag = $( this ).find( 'input[name="_wpcf7_unit_tag"]' ).val(); $.getJSON( url, { _wpcf7_is_ajax_call: 1, _wpcf7: id, _wpcf7_request_ver: $.now() }, function( data ) { if ( data && data.captcha ) { $( '#' + unitTag ).wpcf7RefillCaptcha( data.captcha ); } if ( data && data.quiz ) { $( '#' + unitTag ).wpcf7RefillQuiz( data.quiz ); } } ); } ); }; $.fn.wpcf7RefillCaptcha = function( captcha ) { return this.each( function() { var form = $( this ); $.each( captcha, function( i, n ) { form.find( ':input[name="' + i + '"]' ).clearFields(); form.find( 'img.wpcf7-captcha-' + i ).attr( 'src', n ); var match = /([0-9]+)\.(png|gif|jpeg)$/.exec( n ); form.find( 'input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]' ).attr( 'value', match[ 1 ] ); } ); } ); }; $.fn.wpcf7RefillQuiz = function( quiz ) { return this.each( function() { var form = $( this ); $.each( quiz, function( i, n ) { form.find( ':input[name="' + i + '"]' ).clearFields(); form.find( ':input[name="' + i + '"]' ).siblings( 'span.wpcf7-quiz-label' ).text( n[ 0 ] ); form.find( 'input:hidden[name="_wpcf7_quiz_answer_' + i + '"]' ).attr( 'value', n[ 1 ] ); } ); } ); }; $.fn.wpcf7ClearResponseOutput = function() { return this.each( function() { $( this ).find( 'div.wpcf7-response-output' ).hide().empty().removeClass( 'wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked' ).removeAttr( 'role' ); $( this ).find( 'span.wpcf7-not-valid-tip' ).remove(); $( this ).find( '.ajax-loader' ).removeClass( 'is-active' ); } ); }; $.fn.wpcf7Recaptcha = function() { return this.each( function() { var events = 'wpcf7:spam wpcf7:mailsent wpcf7:mailfailed'; $( this ).closest( 'div.wpcf7' ).on( events, function( e ) { if ( recaptchaWidgets && grecaptcha ) { $.each( recaptchaWidgets, function( index, value ) { grecaptcha.reset( value ); } ); } } ); } ); }; $.wpcf7UpdateScreenReaderResponse = function( $form, data ) { $( '.wpcf7 .screen-reader-response' ).html( '' ).attr( 'role', '' ); if ( data.message ) { var $response = $form.siblings( '.screen-reader-response' ).first(); $response.append( data.message ); if ( data.invalids ) { var $invalids = $( '
    ' ); $.each( data.invalids, function( i, n ) { if ( n.idref ) { var $li = $( '
  • ' ).append( $( '' ).attr( 'href', '#' + n.idref ).append( n.message ) ); } else { var $li = $( '
  • ' ).append( n.message ); } $invalids.append( $li ); } ); $response.append( $invalids ); } $response.attr( 'role', 'alert' ).focus(); } }; $.wpcf7SupportHtml5 = function() { var features = {}; var input = document.createElement( 'input' ); features.placeholder = 'placeholder' in input; var inputTypes = [ 'email', 'url', 'tel', 'number', 'range', 'date' ]; $.each( inputTypes, function( index, value ) { input.setAttribute( 'type', value ); features[ value ] = input.type !== 'text'; } ); return features; }; $( function() { _wpcf7.supportHtml5 = $.wpcf7SupportHtml5(); $( 'div.wpcf7 > form' ).wpcf7InitForm(); } ); } )( jQuery ); /* * Polyfill for Internet Explorer * See https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent */ ( function () { if ( typeof window.CustomEvent === "function" ) return false; function CustomEvent ( event, params ) { params = params || { bubbles: false, cancelable: false, detail: undefined }; var evt = document.createEvent( 'CustomEvent' ); evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail ); return evt; } CustomEvent.prototype = window.Event.prototype; window.CustomEvent = CustomEvent; } )(); PKP\ ";;includes/js/jquery.form.min.jsnuW+A/*! * jQuery Form Plugin * version: 3.51.0-2014.06.20 * Requires jQuery v1.5 or later * Copyright (c) 2014 M. Alsup * Examples and documentation at: http://malsup.com/jquery/form/ * Project repository: https://github.com/malsup/form * Dual licensed under the MIT and GPL licenses. * https://github.com/malsup/form#copyright-and-license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("undefined"!=typeof jQuery?jQuery:window.Zepto)}(function(e){"use strict";function t(t){var r=t.data;t.isDefaultPrevented()||(t.preventDefault(),e(t.target).ajaxSubmit(r))}function r(t){var r=t.target,a=e(r);if(!a.is("[type=submit],[type=image]")){var n=a.closest("[type=submit]");if(0===n.length)return;r=n[0]}var i=this;if(i.clk=r,"image"==r.type)if(void 0!==t.offsetX)i.clk_x=t.offsetX,i.clk_y=t.offsetY;else if("function"==typeof e.fn.offset){var o=a.offset();i.clk_x=t.pageX-o.left,i.clk_y=t.pageY-o.top}else i.clk_x=t.pageX-r.offsetLeft,i.clk_y=t.pageY-r.offsetTop;setTimeout(function(){i.clk=i.clk_x=i.clk_y=null},100)}function a(){if(e.fn.ajaxSubmit.debug){var t="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(t):window.opera&&window.opera.postError&&window.opera.postError(t)}}var n={};n.fileapi=void 0!==e("").get(0).files,n.formdata=void 0!==window.FormData;var i=!!e.fn.prop;e.fn.attr2=function(){if(!i)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},e.fn.ajaxSubmit=function(t){function r(r){var a,n,i=e.param(r,t.traditional).split("&"),o=i.length,s=[];for(a=0;o>a;a++)i[a]=i[a].replace(/\+/g," "),n=i[a].split("="),s.push([decodeURIComponent(n[0]),decodeURIComponent(n[1])]);return s}function o(a){for(var n=new FormData,i=0;i').val(m.extraData[d].value).appendTo(w)[0]:e('').val(m.extraData[d]).appendTo(w)[0]);m.iframeTarget||v.appendTo("body"),g.attachEvent?g.attachEvent("onload",s):g.addEventListener("load",s,!1),setTimeout(t,15);try{w.submit()}catch(h){var x=document.createElement("form").submit;x.apply(w)}}finally{w.setAttribute("action",i),w.setAttribute("enctype",c),r?w.setAttribute("target",r):f.removeAttr("target"),e(l).remove()}}function s(t){if(!x.aborted&&!F){if(M=n(g),M||(a("cannot access response document"),t=k),t===D&&x)return x.abort("timeout"),void S.reject(x,"timeout");if(t==k&&x)return x.abort("server abort"),void S.reject(x,"error","server abort");if(M&&M.location.href!=m.iframeSrc||T){g.detachEvent?g.detachEvent("onload",s):g.removeEventListener("load",s,!1);var r,i="success";try{if(T)throw"timeout";var o="xml"==m.dataType||M.XMLDocument||e.isXMLDoc(M);if(a("isXml="+o),!o&&window.opera&&(null===M.body||!M.body.innerHTML)&&--O)return a("requeing onLoad callback, DOM not available"),void setTimeout(s,250);var u=M.body?M.body:M.documentElement;x.responseText=u?u.innerHTML:null,x.responseXML=M.XMLDocument?M.XMLDocument:M,o&&(m.dataType="xml"),x.getResponseHeader=function(e){var t={"content-type":m.dataType};return t[e.toLowerCase()]},u&&(x.status=Number(u.getAttribute("status"))||x.status,x.statusText=u.getAttribute("statusText")||x.statusText);var c=(m.dataType||"").toLowerCase(),l=/(json|script|text)/.test(c);if(l||m.textarea){var f=M.getElementsByTagName("textarea")[0];if(f)x.responseText=f.value,x.status=Number(f.getAttribute("status"))||x.status,x.statusText=f.getAttribute("statusText")||x.statusText;else if(l){var p=M.getElementsByTagName("pre")[0],h=M.getElementsByTagName("body")[0];p?x.responseText=p.textContent?p.textContent:p.innerText:h&&(x.responseText=h.textContent?h.textContent:h.innerText)}}else"xml"==c&&!x.responseXML&&x.responseText&&(x.responseXML=X(x.responseText));try{E=_(x,c,m)}catch(y){i="parsererror",x.error=r=y||i}}catch(y){a("error caught: ",y),i="error",x.error=r=y||i}x.aborted&&(a("upload aborted"),i=null),x.status&&(i=x.status>=200&&x.status<300||304===x.status?"success":"error"),"success"===i?(m.success&&m.success.call(m.context,E,"success",x),S.resolve(x.responseText,"success",x),d&&e.event.trigger("ajaxSuccess",[x,m])):i&&(void 0===r&&(r=x.statusText),m.error&&m.error.call(m.context,x,i,r),S.reject(x,"error",r),d&&e.event.trigger("ajaxError",[x,m,r])),d&&e.event.trigger("ajaxComplete",[x,m]),d&&!--e.active&&e.event.trigger("ajaxStop"),m.complete&&m.complete.call(m.context,x,i),F=!0,m.timeout&&clearTimeout(j),setTimeout(function(){m.iframeTarget?v.attr("src",m.iframeSrc):v.remove(),x.responseXML=null},100)}}}var c,l,m,d,p,v,g,x,y,b,T,j,w=f[0],S=e.Deferred();if(S.abort=function(e){x.abort(e)},r)for(l=0;l'),v.css({position:"absolute",top:"-1000px",left:"-1000px"})),g=v[0],x={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(t){var r="timeout"===t?"timeout":"aborted";a("aborting upload... "+r),this.aborted=1;try{g.contentWindow.document.execCommand&&g.contentWindow.document.execCommand("Stop")}catch(n){}v.attr("src",m.iframeSrc),x.error=r,m.error&&m.error.call(m.context,x,r,t),d&&e.event.trigger("ajaxError",[x,m,r]),m.complete&&m.complete.call(m.context,x,r)}},d=m.global,d&&0===e.active++&&e.event.trigger("ajaxStart"),d&&e.event.trigger("ajaxSend",[x,m]),m.beforeSend&&m.beforeSend.call(m.context,x,m)===!1)return m.global&&e.active--,S.reject(),S;if(x.aborted)return S.reject(),S;y=w.clk,y&&(b=y.name,b&&!y.disabled&&(m.extraData=m.extraData||{},m.extraData[b]=y.value,"image"==y.type&&(m.extraData[b+".x"]=w.clk_x,m.extraData[b+".y"]=w.clk_y)));var D=1,k=2,A=e("meta[name=csrf-token]").attr("content"),L=e("meta[name=csrf-param]").attr("content");L&&A&&(m.extraData=m.extraData||{},m.extraData[L]=A),m.forceSync?o():setTimeout(o,10);var E,M,F,O=50,X=e.parseXML||function(e,t){return window.ActiveXObject?(t=new ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!=t.documentElement.nodeName?t:null},C=e.parseJSON||function(e){return window.eval("("+e+")")},_=function(t,r,a){var n=t.getResponseHeader("content-type")||"",i="xml"===r||!r&&n.indexOf("xml")>=0,o=i?t.responseXML:t.responseText;return i&&"parsererror"===o.documentElement.nodeName&&e.error&&e.error("parsererror"),a&&a.dataFilter&&(o=a.dataFilter(o,r)),"string"==typeof o&&("json"===r||!r&&n.indexOf("json")>=0?o=C(o):("script"===r||!r&&n.indexOf("javascript")>=0)&&e.globalEval(o)),o};return S}if(!this.length)return a("ajaxSubmit: skipping submit process - no element selected"),this;var u,c,l,f=this;"function"==typeof t?t={success:t}:void 0===t&&(t={}),u=t.type||this.attr2("method"),c=t.url||this.attr2("action"),l="string"==typeof c?e.trim(c):"",l=l||window.location.href||"",l&&(l=(l.match(/^([^#]+)/)||[])[1]),t=e.extend(!0,{url:l,success:e.ajaxSettings.success,type:u||e.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},t);var m={};if(this.trigger("form-pre-serialize",[this,t,m]),m.veto)return a("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(t.beforeSerialize&&t.beforeSerialize(this,t)===!1)return a("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var d=t.traditional;void 0===d&&(d=e.ajaxSettings.traditional);var p,h=[],v=this.formToArray(t.semantic,h);if(t.data&&(t.extraData=t.data,p=e.param(t.data,d)),t.beforeSubmit&&t.beforeSubmit(v,this,t)===!1)return a("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[v,this,t,m]),m.veto)return a("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var g=e.param(v,d);p&&(g=g?g+"&"+p:p),"GET"==t.type.toUpperCase()?(t.url+=(t.url.indexOf("?")>=0?"&":"?")+g,t.data=null):t.data=g;var x=[];if(t.resetForm&&x.push(function(){f.resetForm()}),t.clearForm&&x.push(function(){f.clearForm(t.includeHidden)}),!t.dataType&&t.target){var y=t.success||function(){};x.push(function(r){var a=t.replaceTarget?"replaceWith":"html";e(t.target)[a](r).each(y,arguments)})}else t.success&&x.push(t.success);if(t.success=function(e,r,a){for(var n=t.context||this,i=0,o=x.length;o>i;i++)x[i].apply(n,[e,r,a||f,f])},t.error){var b=t.error;t.error=function(e,r,a){var n=t.context||this;b.apply(n,[e,r,a,f])}}if(t.complete){var T=t.complete;t.complete=function(e,r){var a=t.context||this;T.apply(a,[e,r,f])}}var j=e("input[type=file]:enabled",this).filter(function(){return""!==e(this).val()}),w=j.length>0,S="multipart/form-data",D=f.attr("enctype")==S||f.attr("encoding")==S,k=n.fileapi&&n.formdata;a("fileAPI :"+k);var A,L=(w||D)&&!k;t.iframe!==!1&&(t.iframe||L)?t.closeKeepAlive?e.get(t.closeKeepAlive,function(){A=s(v)}):A=s(v):A=(w||D)&&k?o(v):e.ajax(t),f.removeData("jqxhr").data("jqxhr",A);for(var E=0;Ec;c++)if(d=u[c],f=d.name,f&&!d.disabled)if(t&&o.clk&&"image"==d.type)o.clk==d&&(a.push({name:f,value:e(d).val(),type:d.type}),a.push({name:f+".x",value:o.clk_x},{name:f+".y",value:o.clk_y}));else if(m=e.fieldValue(d,!0),m&&m.constructor==Array)for(r&&r.push(d),l=0,h=m.length;h>l;l++)a.push({name:f,value:m[l]});else if(n.fileapi&&"file"==d.type){r&&r.push(d);var v=d.files;if(v.length)for(l=0;li;i++)r.push({name:a,value:n[i]});else null!==n&&"undefined"!=typeof n&&r.push({name:this.name,value:n})}}),e.param(r)},e.fn.fieldValue=function(t){for(var r=[],a=0,n=this.length;n>a;a++){var i=this[a],o=e.fieldValue(i,t);null===o||"undefined"==typeof o||o.constructor==Array&&!o.length||(o.constructor==Array?e.merge(r,o):r.push(o))}return r},e.fieldValue=function(t,r){var a=t.name,n=t.type,i=t.tagName.toLowerCase();if(void 0===r&&(r=!0),r&&(!a||t.disabled||"reset"==n||"button"==n||("checkbox"==n||"radio"==n)&&!t.checked||("submit"==n||"image"==n)&&t.form&&t.form.clk!=t||"select"==i&&-1==t.selectedIndex))return null;if("select"==i){var o=t.selectedIndex;if(0>o)return null;for(var s=[],u=t.options,c="select-one"==n,l=c?o+1:u.length,f=c?o:0;l>f;f++){var m=u[f];if(m.selected){var d=m.value;if(d||(d=m.attributes&&m.attributes.value&&!m.attributes.value.specified?m.text:m.value),c)return d;s.push(d)}}return s}return e(t).val()},e.fn.clearForm=function(t){return this.each(function(){e("input,select,textarea",this).clearFields(t)})},e.fn.clearFields=e.fn.clearInputs=function(t){var r=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var a=this.type,n=this.tagName.toLowerCase();r.test(a)||"textarea"==n?this.value="":"checkbox"==a||"radio"==a?this.checked=!1:"select"==n?this.selectedIndex=-1:"file"==a?/MSIE/.test(navigator.userAgent)?e(this).replaceWith(e(this).clone(!0)):e(this).val(""):t&&(t===!0&&/hidden/.test(a)||"string"==typeof t&&e(this).is(t))&&(this.value="")})},e.fn.resetForm=function(){return this.each(function(){("function"==typeof this.reset||"object"==typeof this.reset&&!this.reset.nodeType)&&this.reset()})},e.fn.enable=function(e){return void 0===e&&(e=!0),this.each(function(){this.disabled=!e})},e.fn.selected=function(t){return void 0===t&&(t=!0),this.each(function(){var r=this.type;if("checkbox"==r||"radio"==r)this.checked=t;else if("option"==this.tagName.toLowerCase()){var a=e(this).parent("select");t&&a[0]&&"select-one"==a[0].type&&a.find("option").selected(!1),this.selected=t}})},e.fn.ajaxSubmit.debug=!1});PKP\jUttincludes/js/jquery.form.jsnuW+A/*! * jQuery Form Plugin * version: 3.51.0-2014.06.20 * Requires jQuery v1.5 or later * Copyright (c) 2014 M. Alsup * Examples and documentation at: http://malsup.com/jquery/form/ * Project repository: https://github.com/malsup/form * Dual licensed under the MIT and GPL licenses. * https://github.com/malsup/form#copyright-and-license */ /*global ActiveXObject */ // AMD support (function (factory) { "use strict"; if (typeof define === 'function' && define.amd) { // using AMD; register as anon module define(['jquery'], factory); } else { // no AMD; invoke directly factory( (typeof(jQuery) != 'undefined') ? jQuery : window.Zepto ); } } (function($) { "use strict"; /* Usage Note: ----------- Do not use both ajaxSubmit and ajaxForm on the same form. These functions are mutually exclusive. Use ajaxSubmit if you want to bind your own submit handler to the form. For example, $(document).ready(function() { $('#myForm').on('submit', function(e) { e.preventDefault(); // <-- important $(this).ajaxSubmit({ target: '#output' }); }); }); Use ajaxForm when you want the plugin to manage all the event binding for you. For example, $(document).ready(function() { $('#myForm').ajaxForm({ target: '#output' }); }); You can also use ajaxForm with delegation (requires jQuery v1.7+), so the form does not have to exist when you invoke ajaxForm: $('#myForm').ajaxForm({ delegation: true, target: '#output' }); When using ajaxForm, the ajaxSubmit function will be invoked for you at the appropriate time. */ /** * Feature detection */ var feature = {}; feature.fileapi = $("").get(0).files !== undefined; feature.formdata = window.FormData !== undefined; var hasProp = !!$.fn.prop; // attr2 uses prop when it can but checks the return type for // an expected string. this accounts for the case where a form // contains inputs with names like "action" or "method"; in those // cases "prop" returns the element $.fn.attr2 = function() { if ( ! hasProp ) { return this.attr.apply(this, arguments); } var val = this.prop.apply(this, arguments); if ( ( val && val.jquery ) || typeof val === 'string' ) { return val; } return this.attr.apply(this, arguments); }; /** * ajaxSubmit() provides a mechanism for immediately submitting * an HTML form using AJAX. */ $.fn.ajaxSubmit = function(options) { /*jshint scripturl:true */ // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) if (!this.length) { log('ajaxSubmit: skipping submit process - no element selected'); return this; } var method, action, url, $form = this; if (typeof options == 'function') { options = { success: options }; } else if ( options === undefined ) { options = {}; } method = options.type || this.attr2('method'); action = options.url || this.attr2('action'); url = (typeof action === 'string') ? $.trim(action) : ''; url = url || window.location.href || ''; if (url) { // clean url (don't include hash vaue) url = (url.match(/^([^#]+)/)||[])[1]; } options = $.extend(true, { url: url, success: $.ajaxSettings.success, type: method || $.ajaxSettings.type, iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' }, options); // hook for manipulating the form data before it is extracted; // convenient for use with rich editors like tinyMCE or FCKEditor var veto = {}; this.trigger('form-pre-serialize', [this, options, veto]); if (veto.veto) { log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); return this; } // provide opportunity to alter form data before it is serialized if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { log('ajaxSubmit: submit aborted via beforeSerialize callback'); return this; } var traditional = options.traditional; if ( traditional === undefined ) { traditional = $.ajaxSettings.traditional; } var elements = []; var qx, a = this.formToArray(options.semantic, elements); if (options.data) { options.extraData = options.data; qx = $.param(options.data, traditional); } // give pre-submit callback an opportunity to abort the submit if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { log('ajaxSubmit: submit aborted via beforeSubmit callback'); return this; } // fire vetoable 'validate' event this.trigger('form-submit-validate', [a, this, options, veto]); if (veto.veto) { log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); return this; } var q = $.param(a, traditional); if (qx) { q = ( q ? (q + '&' + qx) : qx ); } if (options.type.toUpperCase() == 'GET') { options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; options.data = null; // data is null for 'get' } else { options.data = q; // data is the query string for 'post' } var callbacks = []; if (options.resetForm) { callbacks.push(function() { $form.resetForm(); }); } if (options.clearForm) { callbacks.push(function() { $form.clearForm(options.includeHidden); }); } // perform a load on the target only if dataType is not provided if (!options.dataType && options.target) { var oldSuccess = options.success || function(){}; callbacks.push(function(data) { var fn = options.replaceTarget ? 'replaceWith' : 'html'; $(options.target)[fn](data).each(oldSuccess, arguments); }); } else if (options.success) { callbacks.push(options.success); } options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg var context = options.context || this ; // jQuery 1.4+ supports scope context for (var i=0, max=callbacks.length; i < max; i++) { callbacks[i].apply(context, [data, status, xhr || $form, $form]); } }; if (options.error) { var oldError = options.error; options.error = function(xhr, status, error) { var context = options.context || this; oldError.apply(context, [xhr, status, error, $form]); }; } if (options.complete) { var oldComplete = options.complete; options.complete = function(xhr, status) { var context = options.context || this; oldComplete.apply(context, [xhr, status, $form]); }; } // are there files to upload? // [value] (issue #113), also see comment: // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219 var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; }); var hasFileInputs = fileInputs.length > 0; var mp = 'multipart/form-data'; var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); var fileAPI = feature.fileapi && feature.formdata; log("fileAPI :" + fileAPI); var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI; var jqxhr; // options.iframe allows user to force iframe mode // 06-NOV-09: now defaulting to iframe mode if file input is detected if (options.iframe !== false && (options.iframe || shouldUseFrame)) { // hack to fix Safari hang (thanks to Tim Molendijk for this) // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d if (options.closeKeepAlive) { $.get(options.closeKeepAlive, function() { jqxhr = fileUploadIframe(a); }); } else { jqxhr = fileUploadIframe(a); } } else if ((hasFileInputs || multipart) && fileAPI) { jqxhr = fileUploadXhr(a); } else { jqxhr = $.ajax(options); } $form.removeData('jqxhr').data('jqxhr', jqxhr); // clear element array for (var k=0; k < elements.length; k++) { elements[k] = null; } // fire 'notify' event this.trigger('form-submit-notify', [this, options]); return this; // utility fn for deep serialization function deepSerialize(extraData){ var serialized = $.param(extraData, options.traditional).split('&'); var len = serialized.length; var result = []; var i, part; for (i=0; i < len; i++) { // #252; undo param space replacement serialized[i] = serialized[i].replace(/\+/g,' '); part = serialized[i].split('='); // #278; use array instead of object storage, favoring array serializations result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]); } return result; } // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz) function fileUploadXhr(a) { var formdata = new FormData(); for (var i=0; i < a.length; i++) { formdata.append(a[i].name, a[i].value); } if (options.extraData) { var serializedData = deepSerialize(options.extraData); for (i=0; i < serializedData.length; i++) { if (serializedData[i]) { formdata.append(serializedData[i][0], serializedData[i][1]); } } } options.data = null; var s = $.extend(true, {}, $.ajaxSettings, options, { contentType: false, processData: false, cache: false, type: method || 'POST' }); if (options.uploadProgress) { // workaround because jqXHR does not expose upload property s.xhr = function() { var xhr = $.ajaxSettings.xhr(); if (xhr.upload) { xhr.upload.addEventListener('progress', function(event) { var percent = 0; var position = event.loaded || event.position; /*event.position is deprecated*/ var total = event.total; if (event.lengthComputable) { percent = Math.ceil(position / total * 100); } options.uploadProgress(event, position, total, percent); }, false); } return xhr; }; } s.data = null; var beforeSend = s.beforeSend; s.beforeSend = function(xhr, o) { //Send FormData() provided by user if (options.formData) { o.data = options.formData; } else { o.data = formdata; } if(beforeSend) { beforeSend.call(this, xhr, o); } }; return $.ajax(s); } // private function for handling file uploads (hat tip to YAHOO!) function fileUploadIframe(a) { var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; var deferred = $.Deferred(); // #341 deferred.abort = function(status) { xhr.abort(status); }; if (a) { // ensure that every serialized input is still enabled for (i=0; i < elements.length; i++) { el = $(elements[i]); if ( hasProp ) { el.prop('disabled', false); } else { el.removeAttr('disabled'); } } } s = $.extend(true, {}, $.ajaxSettings, options); s.context = s.context || s; id = 'jqFormIO' + (new Date().getTime()); if (s.iframeTarget) { $io = $(s.iframeTarget); n = $io.attr2('name'); if (!n) { $io.attr2('name', id); } else { id = n; } } else { $io = $('