[ 'path' => 'inc/js/frontend.js', 'dep' => [ 'jquery' ], 'in_footer' => true, ], ]; return $js_files; } /** * Returns Script array. * * @return array() * @since 1.3.0 */ public static function get_widget_list() { $widget_list = [ 'retina', 'copyright', 'copyright-shortcode', 'navigation-menu', 'menu-walker', 'site-title', 'page-title', 'site-tagline', 'site-logo', 'cart', 'search-button', ]; return $widget_list; } /** * Include Widgets files * * Load widgets files * * @since 1.2.0 * @access public */ public function include_widgets_files() { $js_files = $this->get_widget_script(); $widget_list = $this->get_widget_list(); if ( ! empty( $widget_list ) ) { foreach ( $widget_list as $handle => $data ) { require_once HFE_DIR . '/inc/widgets-manager/widgets/class-' . $data . '.php'; } } if ( ! empty( $js_files ) ) { foreach ( $js_files as $handle => $data ) { wp_register_script( $handle, HFE_URL . $data['path'], $data['dep'], HFE_VER, $data['in_footer'] ); } } $tag_validation = [ 'article', 'aside', 'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'main', 'nav', 'p', 'section', 'span' ]; wp_localize_script( 'elementor-editor', 'HfeWidgetsData', [ 'allowed_tags' => $tag_validation, ] ); // Emqueue the widgets style. wp_enqueue_style( 'hfe-widgets-style', HFE_URL . 'inc/widgets-css/frontend.css', [], HFE_VER ); } /** * Provide the SVG support for Retina Logo widget. * * @param array $mimes which return mime type. * * @since 1.2.0 * @return $mimes. */ public function hfe_svg_mime_types( $mimes ) { // New allowed mime types. $mimes['svg'] = 'image/svg+xml'; return $mimes; } /** * Register Category * * @since 1.2.0 * @param object $this_cat class. */ public function register_widget_category( $this_cat ) { $category = __( 'Elementor Header & Footer Builder', 'header-footer-elementor' ); $this_cat->add_category( 'hfe-widgets', [ 'title' => $category, 'icon' => 'eicon-font', ] ); return $this_cat; } /** * Register Widgets * * Register new Elementor widgets. * * @since 1.2.0 * @access public */ public function register_widgets() { // Its is now safe to include Widgets files. $this->include_widgets_files(); // Register Widgets. Plugin::instance()->widgets_manager->register( new Widgets\Retina() ); Plugin::instance()->widgets_manager->register( new Widgets\Copyright() ); Plugin::instance()->widgets_manager->register( new Widgets\Navigation_Menu() ); Plugin::instance()->widgets_manager->register( new Widgets\Page_Title() ); Plugin::instance()->widgets_manager->register( new Widgets\Site_Title() ); Plugin::instance()->widgets_manager->register( new Widgets\Site_Tagline() ); Plugin::instance()->widgets_manager->register( new Widgets\Site_Logo() ); Plugin::instance()->widgets_manager->register( new Widgets\Search_Button() ); if ( class_exists( 'woocommerce' ) ) { Plugin::instance()->widgets_manager->register( new Widgets\Cart() ); } } /** * Cart Fragments. * * Refresh the cart fragments. * * @since 1.5.0 * @param array $fragments Array of fragments. * @access public */ public function wc_refresh_mini_cart_count( $fragments ) { $has_cart = is_a( WC()->cart, 'WC_Cart' ); if ( ! $has_cart ) { return $fragments; } $cart_badge_count = ( null !== WC()->cart ) ? WC()->cart->get_cart_contents_count() : ''; if ( null !== WC()->cart ) { $fragments['span.hfe-cart-count'] = '' . WC()->cart->get_cart_contents_count() . ''; $fragments['span.elementor-button-text.hfe-subtotal'] = '' . WC()->cart->get_cart_subtotal() . ''; } $fragments['span.elementor-button-icon[data-counter]'] = '' . __( 'Cart', 'header-footer-elementor' ) . ''; return $fragments; } /** * Validate an HTML tag against a safe allowed list. * * @since 1.5.8 * @param string $tag specifies the HTML Tag. * @access public */ public static function validate_html_tag( $tag ) { // Check if Elementor method exists, else we will run custom validation code. if ( method_exists( 'Elementor\Utils', 'validate_html_tag' ) ) { return Utils::validate_html_tag( $tag ); } else { $allowed_tags = [ 'article', 'aside', 'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'main', 'nav', 'p', 'section', 'span' ]; return in_array( strtolower( $tag ), $allowed_tags ) ? $tag : 'div'; } } } /** * Initiate the class. */ Widgets_Loader::instance();