File: /home/henzergrouphenz/public_html/wp-content/themes/metro/inc/scripts.php
<?php
/**
* @author RadiusTheme
* @since 1.0
* @version 1.1.1
*/
namespace radiustheme\Metro;
use Elementor\Plugin;
class Scripts {
use Script_Trait;
public $version;
protected static $instance = null;
public function __construct() {
$this->version = Constants::$theme_version;
add_action( 'wp_enqueue_scripts', array( $this, 'register_scripts' ), 12 );
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 15 );
add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ), 15 );
add_action( 'enqueue_block_editor_assets', array( $this, 'gutenberg_scripts' ) );
}
public static function instance() {
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
public function register_scripts(){
/* Deregister */
wp_deregister_style( 'font-awesome' );
wp_deregister_style( 'layerslider-font-awesome' );
wp_deregister_style( 'yith-wcwl-font-awesome' );
wp_deregister_style( 'rtwpvg-slider' );
/* Slick */
wp_register_style( 'slick', Helper::get_vendor_assets( 'slick/slick.css' ), array(), $this->version );
wp_register_style( 'slick-theme', Helper::get_vendor_assets( 'slick/slick-theme.css' ), array(), $this->version );
wp_register_script( 'slick', Helper::get_vendor_assets( 'slick/slick.min.js' ), array( 'jquery' ), $this->version, true );
/*CSS*/
// Owl carousel
wp_register_style( 'owl-carousel', Helper::get_css( 'owl.carousel.min' ), array(), $this->version );
wp_register_style( 'owl-theme-default', Helper::get_css( 'owl.theme.default.min' ), array(), $this->version );
// Google fonts
wp_register_style( 'metro-gfonts', $this->fonts_url(), array(), $this->version );
// Font-awesome
wp_register_style( 'font-awesome', Helper::get_css( 'font-awesome.min' ), array(), $this->version );
// Bootstrap
wp_register_style( 'bootstrap', Helper::get_css( 'bootstrap.min' ), array(), $this->version );
// Magnific popup
wp_register_style( 'magnific-popup', Helper::get_css( 'magnific-popup.min' ), array(), $this->version );
// Main Theme Style
wp_register_style( 'metro-style', Helper::get_css( 'style' ), array(), $this->version );
// WooCommerce Style
wp_register_style( 'metro-wc', Helper::get_css( 'woocommerce' ), array(), $this->version );
// Elementor
wp_register_style( 'metro-elementor', Helper::get_css( 'elementor' ), array(), $this->version );
/*JS*/
// Owl Carousel
wp_register_script( 'owl-carousel', Helper::get_js( 'owl.carousel.min' ), array( 'jquery' ), $this->version, true );
// bootstrap js
wp_register_script( 'bootstrap', Helper::get_js( 'bootstrap.bundle.min' ), array( 'jquery' ), $this->version, true );
// Meanmenu js
wp_register_script( 'jquery-meanmenu', Helper::get_js( 'jquery.meanmenu.min' ), array( 'jquery' ), $this->version, true );
// Isotope
wp_register_script( 'images-loaded', Helper::get_js( 'imagesloaded.pkgd.min' ), array( 'jquery' ), $this->version, true );
wp_register_script( 'isotope', Helper::get_js( 'isotope.pkgd.min' ), array( 'jquery' ), $this->version, true );
// Countdown
wp_register_script( 'jquery-countdown', Helper::get_js( 'jquery.countdown.min' ), array( 'jquery' ), $this->version, true );
// Magnific Popup
wp_register_script( 'jquery-magnific-popup', Helper::get_js( 'jquery.magnific-popup.min' ), array( 'jquery' ), $this->version, true );
// Ripples
wp_register_script( 'jquery-ripples', Helper::get_js( 'jquery.ripples.min' ), array( 'jquery' ), $this->version, true );
// Sticky Sidebar
wp_register_script( 'jquery-sticky-sidebar', Helper::get_js( 'jquery.sticky-sidebar.min' ), array( 'jquery' ), $this->version, true );
// Main js
wp_register_script( 'metro-main', Helper::get_js( 'main' ), array( 'jquery' ), $this->version, true );
}
public function enqueue_scripts() {
/*CSS*/
wp_enqueue_style( 'metro-gfonts' );
wp_enqueue_style( 'bootstrap' );
wp_enqueue_style( 'font-awesome' );
wp_enqueue_style( 'slick' );
wp_enqueue_style( 'slick-theme' );
$this->elementor_scripts(); // Elementor Scripts in preview mode
$this->conditional_scripts(); // Conditional Scripts
wp_enqueue_style( 'metro-style' );
wp_enqueue_style( 'metro-wc' );
wp_enqueue_style( 'metro-elementor' );
$this->dynamic_style();// Dynamic style
/*JS*/
wp_enqueue_script( 'bootstrap' );
wp_enqueue_script( 'jquery-meanmenu' );
wp_enqueue_script( 'slick' );
wp_enqueue_script( 'jquery-ui-autocomplete' );
wp_enqueue_script( 'metro-main' );
$this->localized_scripts(); // Localization
}
public function elementor_scripts() {
if ( !did_action( 'elementor/loaded' ) ) {
return;
}
if ( Plugin::$instance->preview->is_preview_mode() ) {
wp_enqueue_style( 'owl-carousel' );
wp_enqueue_style( 'owl-theme-default' );
wp_enqueue_script( 'owl-carousel' );
wp_enqueue_script( 'jquery-sticky' );
wp_enqueue_script( 'images-loaded' );
wp_enqueue_script( 'isotope' );
wp_enqueue_script( 'jquery-countdown' );
wp_enqueue_script( 'jquery-magnific-popup' );
wp_enqueue_script( 'jquery-ripples' );
wp_enqueue_script( 'slick' );
}
}
public function admin_scripts(){
wp_enqueue_style( 'metro-admin', Helper::get_css( 'admin' ), array(), $this->version );
}
public function gutenberg_scripts() {
wp_enqueue_style( 'metro-gfonts', $this->fonts_url(), array(), $this->version );
wp_enqueue_style( 'metro-gutenberg', Helper::get_css( 'gutenberg' ), array(), $this->version );
ob_start();
Helper::requires( 'dynamic-styles/common.php' );
$dynamic_css = ob_get_clean();
$css = $this->add_prefix_to_css( $dynamic_css, '.wp-block.editor-block-list__block' );
$css = str_replace( 'gtnbg_root' , '', $css );
$css = $this->output_css( $css );
wp_add_inline_style( 'metro-gutenberg', $css );
}
private function fonts_url(){
$fonts_url = '';
if ( 'off' !== _x( 'on', 'Google fonts - Roboto and Josefin Sans : on or off', 'metro' ) ) {
$fonts_url = add_query_arg( 'family', urlencode( 'Roboto:400,500,700|Josefin Sans:400,600,700&subset=latin,latin-ext' ), "//fonts.googleapis.com/css" );
}
return $fonts_url;
}
private function localized_scripts(){
$logo = empty( RDTheme::$options['logo']['url'] ) ? Helper::get_img( 'logo-dark.png' ) : RDTheme::$options['logo']['url'];
$icon_html = Helper::get_template_content( 'template-parts/header/icon-area-mobile' );
$appendHtml = Helper::get_template_content( 'template-parts/header/header-top-mobile' );
$localize_data = array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'hasAdminBar' => is_admin_bar_showing() ? 1 : 0,
'hasStickyMenu' => RDTheme::$options['sticky_menu'] ? 1 : 0,
'meanWidth' => RDTheme::$options['resmenu_width'],
'siteLogo' => '<div class="mean-logo-area"><a href="' . esc_url( home_url( '/' ) ) . '" alt="' . esc_attr( get_bloginfo( 'title' ) ) . '"><img class="logo-small" src="'. esc_url( $logo ).'" /></a></div>' . $icon_html,
'appendHtml' => $appendHtml,
'rtl' => is_rtl() ? 'yes' : 'no',
'day' => esc_html__('Day' , 'metro'),
'hour' => esc_html__('Hour' , 'metro'),
'minute' => esc_html__('Minute' , 'metro'),
'second' => esc_html__('Second' , 'metro'),
);
wp_localize_script( 'metro-main', 'MetroObj', $localize_data );
}
private function conditional_scripts(){
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
if ( ( is_home() || is_archive() ) && RDTheme::$options['blog_style'] == '2' ) {
wp_enqueue_script( 'images-loaded' );
wp_enqueue_script( 'isotope' );
}
if ( is_singular( 'product' ) && RDTheme::$options['wc_single_product_layout'] == '2' ) {
wp_enqueue_script( 'jquery-sticky-sidebar' );
}
}
private function template_style(){
$css = '';
$logo_height = RDTheme::$options['logo_height'] . 'px';
$css .= ".main-header a.logo img{max-height:{$logo_height}}";
if ( RDTheme::$bgtype == 'bgcolor' ) {
$bgcolor = RDTheme::$bgcolor;
$banner_style = "background-color:{$bgcolor};";
}
else {
$bgimg = RDTheme::$bgimg;
$banner_style = "background:url({$bgimg}) no-repeat scroll center center / cover;";
}
$css .= ".banner{{$banner_style}}";
if ( RDTheme::$bgtype == 'bgimg' ) {
$opacity = RDTheme::$options['bgopacity']/100;
$css .= ".header-bgimg .banner:before{background-color:rgba(0,0,0,{$opacity});}";
}
return $css;
}
private function dynamic_style(){
$dynamic_css = $this->template_style();
ob_start();
Helper::requires( 'dynamic-styles/frontend.php' );
Helper::requires( 'dynamic-styles/elementor.php' );
$dynamic_css .= ob_get_clean();
$dynamic_css = $this->output_css( $dynamic_css );
wp_register_style( 'metro-dynamic', false );
wp_enqueue_style( 'metro-dynamic' );
wp_add_inline_style( 'metro-dynamic', $dynamic_css );
}
}
Scripts::instance();