芝麻web文件管理V1.00
编辑当前文件:/home/ephorei/www/wp-content/plugins/sureforms/inc/frontend-assets.php
*/ public static $js_assets = [ 'form-submit' => 'formSubmit', 'frontend' => 'frontend', ]; /** * CSS Assets. * * @since 0.0.11 * @var array
*/ public static $css_assets = [ 'frontend-default' => 'blocks/default/frontend', 'common' => 'common', 'form' => 'frontend/form', 'single' => 'single', ]; /** * External CSS Assets. * * @since 0.0.11 * @var array
*/ public static $css_external_assets = [ 'tom-select' => 'tom-select', 'intl-tel-input' => 'intl/intlTelInput.min', ]; /** * Constructor * * @since 0.0.1 */ public function __construct() { add_filter( 'template_include', [ $this, 'page_template' ], PHP_INT_MAX ); add_action( 'wp_enqueue_scripts', [ $this, 'register_scripts' ] ); add_filter( 'render_block', [ $this, 'generate_render_script' ], 10, 2 ); } /** * Enqueue Script. * * @return void * @since 0.0.1 */ public function register_scripts() { $file_prefix = defined( 'SRFM_DEBUG' ) && SRFM_DEBUG ? '' : '.min'; $dir_name = defined( 'SRFM_DEBUG' ) && SRFM_DEBUG ? 'unminified' : 'minified'; $js_uri = SRFM_URL . 'assets/js/' . $dir_name . '/'; $css_uri = SRFM_URL . 'assets/css/' . $dir_name . '/'; $css_vendor = SRFM_URL . 'assets/css/minified/deps/'; $is_rtl = is_rtl(); $rtl = $is_rtl ? '-rtl' : ''; $security_setting_options = get_option( 'srfm_security_settings_options' ); $is_set_v2_site_key = false; if ( is_array( $security_setting_options ) && isset( $security_setting_options['srfm_v2_invisible_site_key'] ) && ! empty( $security_setting_options['srfm_v2_invisible_site_key'] ) ) { $is_set_v2_site_key = true; } // Styles based on meta style. foreach ( self::$css_assets as $handle => $path ) { wp_register_style( SRFM_SLUG . '-' . $handle, $css_uri . $path . $file_prefix . $rtl . '.css', [], SRFM_VER ); } // External styles. foreach ( self::$css_external_assets as $handle => $path ) { wp_register_style( SRFM_SLUG . '-' . $handle, $css_vendor . $path . '.css', [], SRFM_VER ); } // Scripts. foreach ( self::$js_assets as $handle => $name ) { if ( 'form-submit' === $handle ) { wp_register_script( SRFM_SLUG . '-' . $handle, SRFM_URL . 'assets/build/' . $name . '.js', [ 'wp-api-fetch' ], SRFM_VER, true ); } else { wp_register_script( SRFM_SLUG . '-' . $handle, $js_uri . $name . $file_prefix . '.js', [], SRFM_VER, true ); } } wp_localize_script( SRFM_SLUG . '-form-submit', SRFM_SLUG . '_submit', [ 'site_url' => site_url(), 'nonce' => wp_create_nonce( 'wp_rest' ), 'messages' => Translatable::get_frontend_validation_messages(), 'is_rtl' => $is_rtl, ] ); } /** * Enqueue scripts and styles. * * @return void * @since 0.0.11 */ public static function enqueue_scripts_and_styles() { // Load the styles. foreach ( self::$css_assets as $handle => $path ) { // Skip single form styles if not on single form page. if ( 'single' === $handle && ! is_singular( SRFM_FORMS_POST_TYPE ) ) { continue; } wp_enqueue_style( SRFM_SLUG . '-' . $handle ); } // Load the external styles. Like Phone and Tom Select. foreach ( self::$css_external_assets as $handle => $path ) { wp_enqueue_style( SRFM_SLUG . '-' . $handle ); } // Load the scripts. foreach ( self::$js_assets as $handle => $path ) { wp_enqueue_script( SRFM_SLUG . '-' . $handle ); } } /** * Enqueue block scripts * * @param string $block_type block name. * @since 0.0.1 * @return void */ public function enqueue_srfm_script( $block_type ) { $block_name = str_replace( 'srfm/', '', $block_type ); // associative array to keep the count of block that requires scripts to work. $script_dep_blocks = [ 'dropdown' => 0, 'multi-choice' => 0, 'number' => 0, 'textarea' => 0, 'url' => 0, 'phone' => 0, 'input' => 0, ]; $file_prefix = defined( 'SRFM_DEBUG' ) && SRFM_DEBUG ? '' : '.min'; $dir_name = defined( 'SRFM_DEBUG' ) && SRFM_DEBUG ? 'unminified' : 'minified'; // Check if block is in the array and check if block is already enqueued. if ( in_array( $block_name, array_keys( $script_dep_blocks ), true ) && 0 === $script_dep_blocks[ $block_name ] ) { $script_dep_blocks[ $block_name ] += 1; $js_uri = SRFM_URL . 'assets/js/' . $dir_name . '/blocks/'; $js_vendor_uri = SRFM_URL . 'assets/js/minified/deps/'; if ( 'phone' === $block_name ) { wp_enqueue_script( SRFM_SLUG . "-{$block_name}-intl-input-deps", $js_vendor_uri . 'intl/intTelInputWithUtils.min.js', [], SRFM_VER, true ); } if ( 'dropdown' === $block_name ) { // if the dropdown / address-compact block is after any other block, then we need to dequeue the srfm-form-submit script and enqueue it again and load it with tom-select dependency. wp_dequeue_script( SRFM_SLUG . '-form-submit' ); wp_enqueue_script( SRFM_SLUG . '-dropdown', $js_uri . 'dropdown' . $file_prefix . '.js', [ 'wp-a11y' ], SRFM_VER, true ); wp_enqueue_script( SRFM_SLUG . '-tom-select', $js_vendor_uri . 'tom-select.min.js', [], SRFM_VER, true ); // frontend utils using dropdown dependency. wp_enqueue_script( SRFM_SLUG . '-form-submit', SRFM_URL . 'assets/build/formSubmit.js', [ 'srfm-tom-select', 'srfm-dropdown', 'wp-api-fetch', ], SRFM_VER, true ); } if ( 'dropdown' !== $block_name ) { wp_enqueue_script( SRFM_SLUG . "-{$block_name}", $js_uri . $block_name . $file_prefix . '.js', [], SRFM_VER, true ); } if ( 'input' === $block_name ) { // Input mask JS. wp_enqueue_script( SRFM_SLUG . '-inputmask', $js_vendor_uri . 'inputmask.min.js', [], SRFM_VER, true ); } } } /** * Render function. * * @param string $block_content Entire Block Content. * @param array
$block Block Properties As An Array. * @return string */ public function generate_render_script( $block_content, $block ) { if ( isset( $block['blockName'] ) ) { self::enqueue_srfm_script( $block['blockName'] ); } return $block_content; } /** * Form Template filter. * * @param string $template Template. * @return string Template. * @since 0.0.1 */ public function page_template( $template ) { if ( ! is_singular( SRFM_FORMS_POST_TYPE ) ) { // Bail if not SureForms post type. return $template; } $file_name = 'single-form.php'; $template = locate_template( $file_name ); /** * Hook: srfm_form_template filter. * * @since 0.0.1 */ return apply_filters( 'srfm_form_template', $template ? $template : SRFM_DIR . '/templates/' . $file_name ); } }