Plugin Directory

Changeset 3486563


Ignore:
Timestamp:
03/19/2026 02:29:34 PM (2 weeks ago)
Author:
bestwebsoft
Message:

"V4.3.6 - * The compatibility with new WordPress version updated. "

Location:
contact-form-plugin
Files:
323 added
3 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • contact-form-plugin/trunk/bws_menu/bws_functions.php

    r3356051 r3486563  
    785785        $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
    786786
    787         wp_enqueue_style( 'bws-admin-css', bws_menu_url( 'css/general_style.css' ), array(), '2.4.2' );
     787        wp_enqueue_style( 'bws-admin-css', bws_menu_url( 'css/general_style.css' ), array(), '2.4.4' );
    788788        wp_enqueue_script( 'bws-admin-scripts', bws_menu_url( 'js/general_script.js' ), array( 'jquery', 'jquery-ui-tooltip' ) );
    789789
  • contact-form-plugin/trunk/bws_menu/class-bws-settings.php

    r3154597 r3486563  
    388388                }
    389389                /* check demo data */
     390            } elseif ( isset( $_POST['bws_pro_reset_custom_code'] ) && check_admin_referer( $this->plugin_basename, 'bws_nonce_name' ) ) {
     391                $this->get_custom_code( true );
    390392            } else {
    391393                $demo_result = ! empty( $this->demo_data ) ? $this->demo_data->bws_handle_demo_data() : false;
     
    478480         * @access private
    479481         */
    480         private function get_custom_code() {
     482        private function get_custom_code( $flag_remove = false ) {
    481483            global $bstwbsftwppdtplgns_options, $wp_filesystem;
    482484
     
    509511                $real_file = $folder . '/' . $file;
    510512
     513                if ( true === $flag_remove && $wp_filesystem->exists( $real_file ) ) {
     514                    $wp_filesystem->delete( $real_file, false, 'f' );
     515                }
     516
    511517                if ( $wp_filesystem->exists( $real_file ) ) {
    512518                    update_recently_edited( $real_file );
     
    522528                    $this->custom_code_args[ "{$extension}_writeable" ] = true;
    523529                    if ( 'php' === $extension ) {
    524                         $this->custom_code_args[ "content_{$extension}" ] = '<?php' . "\n" . "if ( ! defined( 'ABSPATH' ) ) exit;" . "\n" . "if ( ! defined( 'BWS_GLOBAL' ) ) exit;" . "\n\n" . '/* Start your code here */' . "\n";
     530                        $this->custom_code_args[ "content_{$extension}" ] = '<?php' . PHP_EOL . "if ( ! defined( 'ABSPATH' ) || ! defined( 'BWS_GLOBAL' ) ) exit;" . PHP_EOL . PHP_EOL . '/* Start your code here */' . PHP_EOL;
    525531                    }
    526532                }
     
    553559                            <?php
    554560                            if ( ! current_user_can( 'edit_plugins' ) ) {
    555                                 echo '<p>' . esc_html__( 'You do not have sufficient permissions to edit plugins for this site.', 'bestwebsoft' ) . '</p>';
     561                                echo '<p>' . esc_html__( 'You do not have sufficient permissions to edit plugins for this site.', 'bestwebsoft' ) . '</p></div></div></div>';
    556562                                return;
    557563                            }
     
    616622                        <div class="clear"></div>
    617623                    </div>
     624                </div>
     625                <div class="inline" style="margin-top: 15px;">
     626                    <input type="submit" class="button button-primary" name="bws_pro_reset_custom_code" value="<?php esc_html_e( 'Erase all custom code', 'bestwebsoft' ); ?>" onclick="return confirm( '<?php esc_html_e( 'Are you sure you want to delete all custom code?', 'bestwebsoft' ); ?>' );" />
    618627                </div>
    619628                <?php
  • contact-form-plugin/trunk/bws_menu/css/general_style.css

    r3356051 r3486563  
    5555    margin-top: 6px;
    5656}
     57#adminmenu #toplevel_page_adblock-detector-by-bestwebsoft .wp-menu-image:before {
     58    content: "\e994";
     59    font-family: 'bwsicons' !important;
     60}
    5761/* general styles */
    5862.bws_info {
     
    7478    border-right: 4px solid #ffba00;
    7579}
     80@media screen and (max-width: 1600px) {
     81    .bws_info {
     82      max-width: 400px;
     83      display: inline-block;
     84      vertical-align: middle;
     85    }
     86    .form-table td {
     87      vertical-align: top;
     88    }
     89}
     90@media screen and (max-width: 1350px) {
     91    label > .bws_info  {
     92        display: block;
     93    }
     94    .bws_info {
     95        vertical-align: text-top;
     96    }
     97}
     98
    7699/*
    77100* styles for rate-support div on the settings page
  • contact-form-plugin/trunk/bws_menu/fonts/bwsicons.svg

    r3356051 r3486563  
    66<![CDATA[
    77{
    8     "fontFamily": "icomoon",
     8    "fontFamily": "bwsicons",
    99    "majorVersion": 1,
    1010    "minorVersion": 0,
    1111    "version": "Version 1.0",
    12     "fontId": "icomoon",
    13     "psName": "icomoon",
     12    "fontId": "bwsicons",
     13    "psName": "bwsicons",
    1414    "subFamily": "Regular",
    15     "fullName": "icomoon",
     15    "fullName": "bwsicons",
    1616    "description": "Font generated by IcoMoon."
    1717}
     
    2020</metadata>
    2121<defs>
    22 <font id="icomoon" horiz-adv-x="1024">
     22<font id="bwsicons" horiz-adv-x="1024">
    2323<font-face units-per-em="1024" ascent="960" descent="-64" />
    2424<missing-glyph horiz-adv-x="1024" />
     
    8686<glyph unicode="&#xe992;" glyph-name="Columns" data-tags="Columns" d="M249.6 817.2v-738.4h-128v738.4h128zM467.2 817.2v-738.4h-128v738.4h128zM684.8 817.2v-738.4h-128v738.4h128zM902.4 817.2v-738.4h-128v738.4h128z" />
    8787<glyph unicode="&#xe993;" glyph-name="GPTAi" data-tags="GPT Ai" d="M409.919 184.994l329.81-142.572h-659.627l329.81 142.572zM409.919 737.754l400.483-702.805-400.483 173.731-400.483-173.731 400.483 702.805zM809.819 784.196l102.953 103.537 101.792-102.365-102.953-103.537-101.792 102.365zM810.403 753.518l102.088-97.994 102.088 97.994v-718.601h-204.17v718.601z" />
     88<glyph unicode="&#xe994;" glyph-name="AdBock-Detector" data-tags="AdBock Detector" d="M463.97 833.512c-12.177-12.091-17.25-21.663-17.25-32.747v-15.114l-25.368 3.023c-28.92 3.527-45.156-4.534-60.884-30.228-9.133-14.61-10.148-25.693-10.148-118.392v-102.774l-17.25 10.58c-23.847 14.61-41.605 13.602-59.362-4.534l-15.221-15.114 1.522-134.514c2.537-151.641 4.566-163.731 39.068-216.631 23.846-36.779 60.884-67.007 100.459-82.621 26.89-10.583 39.068-12.094 137.499-13.605 105.532-1.511 108.067-1.511 134.452 10.578 30.949 14.107 55.808 37.282 71.029 65.998 11.165 20.152 11.165 25.192 12.686 272.553 1.014 165.246 0 257.944-3.554 270.035-3.042 9.572-11.16 23.175-18.77 30.228-10.653 10.076-17.756 12.091-42.62 11.587l-29.428-0.504-2.535 25.189c-2.028 20.656-5.075 28.213-18.775 40.304-15.221 13.602-19.277 14.61-44.648 12.595-26.887-2.519-29.428-1.511-45.155 14.61-14.714 14.61-20.291 16.625-42.615 16.625-22.834 0-27.907-2.015-43.129-17.129zM524.855 814.871l13.193-10.076 1.014-152.146 1.521-152.146h25.366l2.54 138.543c1.521 76.073 4.563 141.567 6.596 145.093 7.103 10.076 43.127 7.557 49.212-3.527 3.047-6.046 5.075-63.982 5.075-153.657 0-78.592 1.521-146.604 3.042-151.139 3.554-8.564 19.789-11.084 24.864-3.526 1.521 2.519 3.042 46.349 3.042 97.232 0 97.233 4.061 133.506 15.221 140.559 13.193 8.565 37.038 3.023 43.634-10.58 8.117-15.618 9.639-486.162 1.521-513.87-6.596-23.681-31.963-53.402-56.822-65.998-18.775-9.574-27.399-10.076-127.354-8.565-97.92 1.511-109.589 3.022-131.914 12.596-52.259 24.183-95.386 79.599-110.099 142.068-7.103 28.717-9.133 246.861-2.537 256.937 8.625 14.61 37.546-4.030 52.766-33.25 3.044-6.046 5.581-37.279 5.581-73.049 0-65.496 3.044-76.576 18.265-73.554 9.133 1.511 9.64 11.080 12.177 202.021 2.537 191.442 3.044 201.014 12.177 208.067 12.684 9.068 28.92 9.068 41.604 0 9.133-6.549 9.64-15.114 11.162-136.529 1.522-111.842 2.537-129.475 9.64-131.994 19.28-7.557 21.31 8.564 21.817 168.771 0 84.134 1.522 155.673 3.044 158.192 3.044 4.534 20.297 13.099 27.907 13.603 2.028 0.504 9.131-4.030 16.742-10.076zM463.761 714.725c-100.293-22.541-179.13-97.678-204.578-195.356-9.98-39.071-9.48-108.7 0.499-143.263 8.981-30.556 28.94-72.629 40.916-86.155 6.986-8.013 6.986-9.519 0-16.528-6.486-6.512-9.98-7.014-18.961-2.003-10.479 5.508-17.464 0-109.275-92.17l-97.798-98.18v-25.043c0-21.539 2.495-27.051 16.466-41.074 13.971-14.028 19.46-16.533 40.916-16.533h24.948l97.798 98.18c86.821 87.159 97.299 99.179 92.31 108.196-3.992 7.516-3.493 12.522 1.497 19.536 6.486 8.515 7.983 9.017 16.466 1.501 13.472-12.522 55.385-32.559 85.823-41.571 34.429-10.021 103.788-10.523 142.705-0.502 94.805 25.043 171.147 104.692 194.6 203.368 45.404 194.355-129.735 371.177-324.332 327.598zM585.012 682.667c45.404-12.022 76.343-30.055 110.771-65.62 59.874-61.111 81.831-140.756 62.37-224.909-20.455-87.159-91.812-159.292-179.627-181.333-13.471-3.504-43.411-5.006-71.854-3.504-42.911 2.003-52.89 4.509-86.321 20.54-51.893 25.043-91.811 65.118-116.759 117.213-17.464 35.562-18.961 43.078-20.957 91.663-1.497 44.583-0.499 57.607 8.982 85.157 41.913 125.228 167.155 194.354 293.396 160.793zM326.045 243.364c-2.994-3.504-7.485-5.508-10.478-4.007-2.495 1.506-1.996 6.010 1.497 10.021 2.994 3.504 7.485 5.508 10.479 4.007 2.494-1.506 1.996-6.010-1.497-10.021zM323.525 914.532h391.863l277.216-273.236v-386.593l-277.216-273.234h-391.863l-277.215 273.234v386.593l277.215 273.236zM333.716 889.677l-262.551-258.782v-365.794l262.55-258.779h371.483l262.552 258.779v365.794l-262.552 258.782h-371.482z" />
    8889</font></defs></svg>
  • contact-form-plugin/trunk/bws_menu/product_list.php

    r3356051 r3486563  
    2222
    2323$bws_plugins = array(
     24    'adblock-detector-by-bestwebsoft/adblock-detector-by-bestwebsoft.php'                       => array(
     25        'category'     => array( 'ecommerce' ),
     26        'name'         => 'Adblocker Detector',
     27        'description'  => __( 'Detects adblocks and displays a non-closable popup banner asking users to turn off their adblocker.', 'bestwebsoft' ),
     28        'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/adblock-detector/?k=04387cfc31fc8b9553e4741392762231&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
     29        'settings'     => 'admin.php?page=adblock-detector-by-bestwebsoft.php',
     30        'pro_version'  => 'adblock-detector-pro/adblock-detector-pro.php',
     31        'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/adblock-detector/buy/?k=9b3222b005340035eaead38a7a495a0d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
     32        'pro_settings' => 'admin.php?page=adblock-detector-pro.php',
     33        'icon'         => bws_menu_url( 'icons/plugins/' ) . 'adblock-detector-by-bestwebsoft.png',
     34        'install_url'  => 'https://bestwebsoft.com/products/wordpress/plugins/adblock-detector/',
     35    ),
    2436    'bike-rental/bike-rental.php'                       => array(
    2537        'category'     => array( 'ecommerce' ),
  • contact-form-plugin/trunk/contact_form.php

    r3427184 r3486563  
    77Text Domain: contact-form-plugin
    88Domain Path: /languages
    9 Version: 4.3.6
     9Version: 4.3.7
    1010Author URI: https://bestwebsoft.com/
    1111License: GPLv2 or later
     
    9494
    9595        $form_submited = isset( $_POST['cntctfrm_form_submited'] ) ? sanitize_key( $_POST['cntctfrm_form_submited'] ) : 0;
    96         if ( true === $cntctfrm_result && $cntctfrm_form_count === $form_submited ) {
     96        if ( $form_submited > 0 && true === $cntctfrm_result && $cntctfrm_form_count === $form_submited ) {
    9797            setcookie( 'cntctfrm_send_mail', true, time() + 60, COOKIEPATH, COOKIE_DOMAIN );
    9898        }
    99         if ( true !== $cntctfrm_result || $cntctfrm_form_count !== $form_submited ) {
     99        if ( $form_submited > 0 && ( true !== $cntctfrm_result || $cntctfrm_form_count !== $form_submited ) ) {
    100100            setcookie( 'cntctfrm_send_mail', false, time() - 60, COOKIEPATH, COOKIE_DOMAIN );
    101101        }
     
    666666            'required_dropdown'       => 0,
    667667            'display_esign'           => 0,
    668             'required_esign'          => 0
     668            'required_esign'          => 0,
     669            'display_popup'           => 0,
     670            'popup_timer'             => 30,
     671            'subject_pattern'         => array(),
    669672        );
    670673        $option_defaults = apply_filters( 'cntctfrm_get_additional_options_default', $option_defaults );
     
    10201023        if ( ! wp_script_is( 'cntctfrm_frontend_script', 'registered' ) ) {
    10211024            wp_register_script( 'cntctfrm_frontend_script', plugins_url( 'js/cntctfrm.js', __FILE__ ), array( 'jquery' ), $cntctfrm_plugin_info['Version'], true );
     1025            wp_localize_script( 'cntctfrm_frontend_script', 'cntctfrm_object',
     1026                array(
     1027                    'display_popup'   => $cntctfrm_options['display_popup'],
     1028                    'popup_timer'     => $cntctfrm_options['popup_timer'],
     1029                    'cntctfrm_result' => isset( $cntctfrm_result ) ? 1 : -1
     1030                )
     1031            );
    10221032        }
    10231033
     
    11591169                                }
    11601170                                $content .= '<div class="cntctfrm_input cntctfrm_input_address">
    1161                                     <input class="text" type="text" size="40" pattern="([\p{L}\p{M}\s0-9]){1,120}" title="' . __( 'Please enter only letters and numbers at least 3 characters, words seperated by spaces', 'contact-form-plugin' ) . '" value="' . esc_html( $address ) . '" name="cntctfrm_contact_address" id="cntctfrm_contact_address' . $form_countid . '" />';
     1171                                    <input class="text" type="text" size="40" pattern="([\p{L}\p{M}\s0-9]){3,120}" title="' . __( 'Please enter only letters and numbers at least 3 characters, words seperated by spaces', 'contact-form-plugin' ) . '" value="' . esc_html( $address ) . '" name="cntctfrm_contact_address" id="cntctfrm_contact_address' . $form_countid . '" />';
    11621172                                $content .= '</div>';
    11631173                                $content .= '</div>';
     
    12001210                                $content .= '<div class="cntctfrm_error_text">' . $cntctfrm_error_message['error_subject'] . '</div>';
    12011211                            }
     1212                            $pattern = '^\p{L}{1,}([\p{L}\s';
     1213                            $pattern_text = __( 'letters', 'contact-form-plugin' );
     1214                            if ( isset( $cntctfrm_options['subject_pattern'] ) && ! empty( $cntctfrm_options['subject_pattern'] ) ) {
     1215                                $pattern_text .= ' (' . __( 'first of all', 'contact-form-plugin' ) . ')';
     1216                                foreach( $cntctfrm_options['subject_pattern'] as $subject_pattern ) {
     1217                                    switch ( $subject_pattern ) {
     1218                                        case 'numbers':
     1219                                            $pattern .= '0-9';
     1220                                            $pattern_text .= ', ' . __( 'numbers', 'contact-form-plugin' );
     1221                                            break;
     1222                                        case 'symbols':
     1223                                            $pattern .= '!№;%:\?\*\-#';
     1224                                            $pattern_text .= ', '.  __( 'symbols', 'contact-form-plugin' ) . ' !№;%:?*-#';
     1225                                            break;
     1226                                        default:
     1227                                            break;
     1228                                    }
     1229                                }
     1230                            }
     1231                            $pattern .= ']){2,}';
    12021232                            $content .= '<div class="cntctfrm_input cntctfrm_input_subject">
    1203                                 <input ' . apply_filters( 'cntctfrm_readonly', 'subject' ) . ' pattern="^([\p{M}\p{L}]{1,}(\s\p{M}*\p{L}+-*)*){3,}" title="' . __( 'Please enter only letters at least 3 characters, words seperated by spaces', 'contact-form-plugin' ) . '" class="text" type="text" size="40" value="' . esc_html( $subject ) . '" name="cntctfrm_contact_subject" id="cntctfrm_contact_subject' . $form_countid . '" />';
     1233                                <input ' . apply_filters( 'cntctfrm_readonly', 'subject' ) . ' pattern="' . $pattern . '" title="' . sprintf( __( 'Please enter only %s at least 3 characters, words seperated by spaces', 'contact-form-plugin' ), $pattern_text ) . '" class="text" type="text" size="40" value="' . esc_html( $subject ) . '" name="cntctfrm_contact_subject" id="cntctfrm_contact_subject' . $form_countid . '" />';
    12041234                            $content .= '</div>';
    12051235                            $content .= '</div>';
     
    16421672            unset( $cntctfrm_error_message['error_name'] );
    16431673        }
    1644         if ( 1 === absint( $cntctfrm_options['display_address_field'] ) && 1 === absint( $cntctfrm_options['required_address_field'] ) && '' !== $address ) {
     1674        if ( 1 === absint( $cntctfrm_options['display_address_field'] ) && 1 === absint( $cntctfrm_options['required_address_field'] ) && '' !== $address && 3 <= strlen( $address )  ) {
    16451675            unset( $cntctfrm_error_message['error_address'] );
    16461676        }
     
    24172447            }
    24182448
    2419             wp_enqueue_script( 'cntctfrm_script', plugins_url( 'js/script.js', __FILE__ ), array( 'jquery', 'jquery-ui-sortable' ), $cntctfrm_plugin_info['Version'], true );
     2449            wp_enqueue_script( 'cntctfrm_script', plugins_url( 'js/script.js', __FILE__ ), array( 'jquery', 'jquery-ui-sortable' ), $cntctfrm_plugin_info['Version'] . '.1', true );
    24202450            wp_localize_script( 'cntctfrm_script', 'cntctfrm_ajax', $script_vars );
    24212451            do_action( 'cntctfrm_custom_enqueue_script' );
     
    24842514     */
    24852515    function cntctfrm_wp_footer() {
    2486         global $cntctfrm_form_count, $cntctfrm_stile_options, $cntctfrm_plugin_info;
     2516        global $cntctfrm_form_count, $cntctfrm_stile_options, $cntctfrm_plugin_info, $cntctfrm_options, $cntctfrm_result;
     2517
     2518        if ( 1 === $cntctfrm_options['display_popup'] ) {
     2519            $display = ' style="display: none;"';
     2520            if ( 0 === $cntctfrm_options['popup_timer'] || true === $cntctfrm_result || false === $cntctfrm_result ) {
     2521                $display = '';
     2522            }
     2523            echo '<div class="cntctfrm-popup-overflow"' . $display . '><div class="cntctfrm-popup-wrapper">' . cntctfrm_display_form() . '<div class="cntctfrm-popup-close"><svg class="ays_pb_material_close_icon" xmlns="https://www.w3.org/2000/svg" height="36px" viewBox="0 0 24 24" width="36px" fill="#000000" alt="Pop-up Close"><path d="M0 0h24v24H0z" fill="none"></path><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg></div></div></div>';
     2524        }
    24872525
    24882526        if ( wp_script_is( 'cntctfrm_frontend_script', 'registered' ) ) {
     
    25032541            }
    25042542        }
     2543
    25052544    }
    25062545}
     
    25142553        $is_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX;
    25152554
     2555        if ( ! current_user_can( 'manage_options' ) ) {
     2556            return false;
     2557        }
     2558
    25162559        if ( $is_ajax ) {
    25172560            check_ajax_referer( plugin_basename( __FILE__ ), 'cntctfrm_ajax_nonce_field' );
     
    25752618    function cntctfrm_remove_language() {
    25762619        $is_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX;
     2620
     2621        if ( ! current_user_can( 'manage_options' ) ) {
     2622            return false;
     2623        }
     2624
    25772625        if ( $is_ajax ) {
    25782626            check_ajax_referer( plugin_basename( __FILE__ ), 'cntctfrm_ajax_nonce_field' );
  • contact-form-plugin/trunk/css/form_style.css

    r3427184 r3486563  
    153153    width: 49%;
    154154}
     155.cntctfrm_one_column .cntctfrm_column {
     156    width: 100%;
     157}
    155158.cntctfrm_ltr.cntctfrm_two_columns.cntctfrm_width_default #cntctfrm_first_column,
    156159.cntctfrm_ltr.cntctfrm_two_columns.cntctfrm_width_default #cntctfrm_submit_first_column {
     
    194197    font-size: 25px;
    195198}
     199
     200.cntctfrm-popup-overflow {
     201    position: fixed;
     202    top: 0;
     203    left: 0;
     204    right: 0;
     205    bottom: 0;
     206    background-color: rgba( 0, 0, 0, 0.4 );
     207    display: flex;
     208    justify-content: center;
     209    align-items: center;
     210}
     211.cntctfrm-popup-wrapper {
     212    background-color: white;
     213    padding: 20px;
     214    position: relative;
     215    border-radius: 15px;
     216}
     217.cntctfrm-popup-close {
     218    width: 36px;
     219    height: 36px;
     220    cursor: pointer;
     221    position: absolute;
     222    top: -18px;
     223    right: -36px;
     224    color: white;
     225}
  • contact-form-plugin/trunk/includes/class-cntctfrm-settings.php

    r3427184 r3486563  
    160160                }
    161161
     162                $this->options['display_popup'] = isset( $_POST['cntctfrm_display_popup'] ) ? 1 : 0;
     163                $this->options['popup_timer']   = isset( $_POST['cntctfrm_popup_timer'] ) ? absint( $_POST['cntctfrm_popup_timer'] ) : 30;
     164
    162165                $this->options['layout'] = ( isset( $_POST['cntctfrm_layout'] ) ) ? absint( $_POST['cntctfrm_layout'] ) : 1;
    163166
     
    293296                    $this->options['display_user_agent']  = 1;
    294297                }
     298               
     299                $this->options['subject_pattern'] = array();
     300                if ( isset( $_POST['cntctfrm_subject_pattern'] ) ) {
     301                    $cntctfrm_subject_pattern = array_map( 'sanitize_text_field', array_map( 'wp_unslash', $_POST['cntctfrm_subject_pattern'] ) );
     302                    foreach ( $cntctfrm_subject_pattern as $pattern ) {
     303                        if ( true === in_array( $pattern, array( 'numbers', 'symbols' ) ) ) {
     304                            $this->options['subject_pattern'][] = $pattern;
     305                        }
     306                    }
     307                }               
    295308
    296309                $this->options['change_label']            = isset( $_POST['cntctfrm_change_label'] ) ? 1 : 0;
     
    11571170            <?php } ?>
    11581171            <table class="form-table" style="width:auto;">
     1172                <tr valign="top">
     1173                    <th scope="row"><?php esc_html_e( 'Subject character pattern', 'contact-form-plugin' ); ?></th>
     1174                    <td colspan="3">
     1175                        <fieldset>
     1176                            <label>
     1177                                <input type='checkbox' <?php checked( true ); ?> <?php disabled( true ); ?> />
     1178                                <?php esc_html_e( 'Letters', 'contact-form-plugin' ); ?>
     1179                            </label>
     1180                            <br />
     1181                            <label>
     1182                                <input type='checkbox' name='cntctfrm_subject_pattern[]' value='numbers' <?php checked( in_array( 'numbers', $this->options['subject_pattern'] ) ); ?> />
     1183                                <?php esc_html_e( 'Numbers', 'contact-form-plugin' ); ?>
     1184                            </label>
     1185                            <br />
     1186                            <label>
     1187                                <input type='checkbox' name='cntctfrm_subject_pattern[]' value='symbols' <?php checked( in_array( 'symbols', $this->options['subject_pattern'] ) ); ?> />
     1188                                <?php esc_html_e( 'Symbols', 'contact-form-plugin' ); ?>
     1189                                <div class="bws_info" style="padding-left: 20px;"><?php esc_html_e( 'Visitor can use this symbols', 'contact-form-plugin' ); ?>: <code>!№;%:?*-</code></div>
     1190                            </label>
     1191                        </fieldset>
     1192                    </td>
     1193                </tr>
    11591194                <tr valign="top">
    11601195                    <th scope="row"><?php esc_html_e( 'Add to the form', 'contact-form-plugin' ); ?></th>
     
    16781713                                    </td>
    16791714                                </tr>
     1715                                <tr valign="top" id="cntctfrm_popup">
     1716                                    <th scope="row"><?php esc_html_e( 'Display in popup', 'contact-form-plugin' ); ?></th>
     1717                                    <td colspan="2">
     1718                                        <label>
     1719                                            <input type="checkbox" name="cntctfrm_display_popup" id="cntctfrm_display_popup" value="1" <?php checked( $this->options['display_popup'] ); ?> />
     1720                                        </label>
     1721                                    </td>
     1722                                </tr>
     1723                                <tr valign="top" class="cntctfrm_popup_timer">
     1724                                    <th scope="row"><?php esc_html_e( 'Timer for popup', 'contact-form-plugin' ); ?></th>
     1725                                    <td colspan="2">
     1726                                        <label>
     1727                                            <input type="number" name="cntctfrm_popup_timer" value="<?php echo esc_attr( $this->options['popup_timer'] ); ?>" min="0" max="180" /> <?php esc_html_e( 'seconds', 'contact-form-plugin' ); ?><br />
     1728                                            <span class="bws_info"><?php esc_html_e( 'Time before contact form popup shows', 'contact-form-plugin' ); ?></span>
     1729                                        </label>
     1730                                    </td>
     1731                                </tr>
    16801732                            </table>
    1681                             <!-- pls -->
    16821733                            <?php if ( ! $this->hide_pro_tabs ) { ?>
    16831734                                <div class="bws_pro_version_bloc">
     
    19251976                                </div>
    19261977                            <?php } ?>
    1927                             <!-- end pls -->
    19281978                        </div>
    19291979                        <div id="<?php echo is_rtl() ? 'cntctfrm_left_table' : 'cntctfrm_right_table'; ?>">
     
    22522302                                                        break;
    22532303                                                    case 'cntctfrm_contact_esign':
    2254                                                         ?>
    2255                                                         <li class="cntctfrm_field_wrap">
    2256                                                             <div class="cntctfrm_label cntctfrm_label_esign">
    2257                                                                 <label for="cntctfrm_contact_esign">
    2258                                                                 <?php
    2259                                                                 echo esc_html( $this->options['esign_label']['default'] );
    2260                                                                 if ( 1 === absint( $this->options['required_esign'] ) ) {
    2261                                                                     echo '<span class="required"> ' . esc_attr( $this->options['required_symbol'] ) . '</span>';
    2262                                                                 }
    2263                                                                 ?>
    2264                                                                 </label>
    2265                                                             </div>
    2266                                                             <div class="cntctfrm_error_text hidden"><?php echo esc_html( $this->options['esign_error']['default'] ); ?></div>
    2267                                                             <div class="cntctfrm_input cntctfrm_input_esign">
    2268                                                                 <div class="cntctfrm_drag_wrap"></div>
    2269                                                                 <div class="bws_no_bind_notice" id="cntctfrm_contact_esign"><input type="hidden" name="cntctfrm_contact_esign" /></div>
    2270                                                             </div>
    2271                                                         </li>
    2272                                                         <?php
     2304                                                        if ( 1 === absint( $this->options['display_esign'] ) ) {
     2305                                                            ?>
     2306                                                            <li class="cntctfrm_field_wrap">
     2307                                                                <div class="cntctfrm_label cntctfrm_label_esign">
     2308                                                                    <label for="cntctfrm_contact_esign">
     2309                                                                    <?php
     2310                                                                    echo esc_html( $this->options['esign_label']['default'] );
     2311                                                                    if ( 1 === absint( $this->options['required_esign'] ) ) {
     2312                                                                        echo '<span class="required"> ' . esc_attr( $this->options['required_symbol'] ) . '</span>';
     2313                                                                    }
     2314                                                                    ?>
     2315                                                                    </label>
     2316                                                                </div>
     2317                                                                <div class="cntctfrm_error_text hidden"><?php echo esc_html( $this->options['esign_error']['default'] ); ?></div>
     2318                                                                <div class="cntctfrm_input cntctfrm_input_esign">
     2319                                                                    <div class="cntctfrm_drag_wrap"></div>
     2320                                                                    <div class="bws_no_bind_notice" id="cntctfrm_contact_esign"><input type="hidden" name="cntctfrm_contact_esign" /></div>
     2321                                                                </div>
     2322                                                            </li>
     2323                                                            <?php
     2324                                                        }
    22732325                                                        break;
    22742326                                                    default:
  • contact-form-plugin/trunk/js/cntctfrm.js

    r1690576 r3486563  
    1919            });
    2020        }).trigger( 'resize' );
     21        if ( 1 == parseInt( cntctfrm_object.display_popup ) && 0 < parseInt( cntctfrm_object.popup_timer ) && '1' != cntctfrm_object.cntctfrm_result ) {
     22            setTimeout( function(){
     23                $( '.cntctfrm-popup-overflow' ).show();
     24            }, parseInt( cntctfrm_object.popup_timer ) * 1000 );           
     25        }
     26        $( '.cntctfrm-popup-close' ).on( 'click touch', function(){
     27            $( '.cntctfrm-popup-overflow' ).hide();
     28        });
    2129    });
    2230})(jQuery);
  • contact-form-plugin/trunk/js/script.js

    r3014821 r3486563  
    66            } else {
    77                $( '#cntctfrm_gdpr_link_options' ).hide();
     8            }
     9        } ).trigger( 'change' );
     10
     11        $( '#cntctfrm_display_popup' ).on( 'change', function() {
     12            if( $( this).is( ':checked' ) ) {
     13                $( '.cntctfrm_popup_timer' ).show();
     14            } else {
     15                $( '.cntctfrm_popup_timer' ).hide();
    816            }
    917        } ).trigger( 'change' );
  • contact-form-plugin/trunk/readme.txt

    r3427184 r3486563  
    55Requires at least: 6.5
    66Tested up to: 6.9
    7 Stable tag: 4.3.6
     7Stable tag: 4.3.7
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    7878* E-sign Form Field - Enable sign form element
    7979* Two-Column Layout Option - Create professional multi-column forms
     80* Contact Form display in popup
    8081* Custom Form Width - Adjust form width to match your design
    8182* Drag & Drop Field Order - Easily reorganize form fields
     
    117118>     * Complete alignment control
    118119>     * Custom submit button design
     120> * Enable animation for popup
    119121> * Enhanced User Experience - Customizable tooltips and placeholders
    120122> * Priority Support - Get answers within one business day ([Support Policy](https://bestwebsoft.com/support-policy/))
     
    332334== Changelog ==
    333335
     336= V4.3.7 - 19.03.2026 =
     337* Update : All functionality was updated for WordPress 6.9.1.
     338* NEW : Display in popup has been added.
     339* PRO : Popup animation and display popup on scroll has been added.
     340
    334341= V4.3.6 - 25.12.2025 =
    335342* Update : All functionality was updated for WordPress 6.9.
     
    754761* The compatibility with new WordPress version updated.
    755762* New features added.
     763* Bugs fixed.
     764
     765= V4.3.6 =
     766* The compatibility with new WordPress version updated.
     767* New features added.
    756768
    757769= V4.3.5 =
Note: See TracChangeset for help on using the changeset viewer.