| @@ -3,136 +3,157 @@ | ||
| 3 | 3 | * Enqueue Assets |
| 4 | 4 | * @package GutSliderBlocks |
| 5 | 5 | */ |
| 6 | 6 | |
| 7 | - if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly. | |
| 7 | +if (!defined('ABSPATH')) exit; | |
| 8 | 8 | |
| 9 | - if( ! class_exists( 'GutSlider_Assets' ) ) { | |
| 9 | +class GutSlider_Assets { | |
| 10 | 10 | |
| 11 | - class GutSlider_Assets { | |
| 12 | - | |
| 13 | - /** | |
| 14 | - * Constructor | |
| 15 | - * return void | |
| 16 | - */ | |
| 17 | - public function __construct() { | |
| 18 | - add_action( 'enqueue_block_editor_assets', [ $this, 'enqueue_editor_assets' ], 1 ); | |
| 19 | - add_action( 'enqueue_block_assets', [ $this, 'enqueue_assets' ] ); | |
| 20 | - } | |
| 11 | + /** | |
| 12 | + * Preview images for blocks | |
| 13 | + * @var array | |
| 14 | + */ | |
| 15 | + private const PREVIEW_IMAGES = [ | |
| 16 | + 'content' => 'content.svg', | |
| 17 | + 'photo_carousel' => 'photo.svg', | |
| 18 | + 'testimonial_slider' => 'testimonial.svg', | |
| 19 | + 'before_after' => 'ba.svg', | |
| 20 | + 'placeholder' => 'placeholder.svg', | |
| 21 | + ]; | |
| 21 | 22 | |
| 22 | - /** | |
| 23 | - * Enqueue Block Assets [ Editor Only ] | |
| 24 | - * return void | |
| 25 | - */ | |
| 26 | - public function enqueue_editor_assets(){ | |
| 27 | - if( file_exists( trailingslashit( GUTSLIDER_DIR_PATH ) . './build/global/global.asset.php' ) ){ | |
| 28 | - $dependency_file = include_once trailingslashit( GUTSLIDER_DIR_PATH ) . './build/global/global.asset.php'; | |
| 29 | - } | |
| 30 | - | |
| 31 | - if( is_array( $dependency_file ) && ! empty( $dependency_file ) ) { | |
| 32 | - wp_enqueue_script( | |
| 33 | - 'gutslider-blocks-global-script', | |
| 34 | - trailingslashit( GUTSLIDER_URL ) . './build/global/global.js', | |
| 35 | - isset( $dependency_file['dependencies'] ) ? $dependency_file['dependencies'] : [], | |
| 36 | - isset( $dependency_file['version'] ) ? $dependency_file['version'] : GUTSLIDER_VERSION, | |
| 37 | - true | |
| 38 | - ); | |
| 39 | - } | |
| 40 | - | |
| 41 | - wp_enqueue_style( | |
| 42 | - 'gutslider-blocks-global-style', | |
| 43 | - trailingslashit( GUTSLIDER_URL ) . './build/global/global.css', | |
| 44 | - [], | |
| 45 | - GUTSLIDER_VERSION | |
| 46 | - ); | |
| 47 | 23 | |
| 48 | - // modules | |
| 49 | - if( file_exists( trailingslashit( GUTSLIDER_DIR_PATH ) . './build/modules/modules.asset.php' ) ) { | |
| 50 | - $modules_dependency_file = include_once trailingslashit( GUTSLIDER_DIR_PATH ) . './build/modules/modules.asset.php'; | |
| 51 | - } | |
| 24 | + /** | |
| 25 | + * Constructor | |
| 26 | + * return void | |
| 27 | + */ | |
| 28 | + public function __construct() { | |
| 29 | + add_action('enqueue_block_editor_assets', [$this, 'enqueue_editor_assets'], 2); | |
| 30 | + add_action('enqueue_block_assets', [$this, 'enqueue_assets']); | |
| 31 | + } | |
| 52 | 32 | |
| 53 | - if( is_array( $modules_dependency_file ) && ! empty( $modules_dependency_file ) ) { | |
| 54 | - wp_enqueue_script( | |
| 55 | - 'gutslider-blocks-modules-script', | |
| 56 | - trailingslashit( GUTSLIDER_URL ) . './build/modules/modules.js', | |
| 57 | - isset( $modules_dependency_file['dependencies'] ) ? $modules_dependency_file['dependencies'] : [], | |
| 58 | - isset( $modules_dependency_file['version'] ) ? $modules_dependency_file['version'] : GUTSLIDER_VERSION, | |
| 59 | - false | |
| 60 | - ); | |
| 61 | - } | |
| 33 | + /** | |
| 34 | + * Enqueue editor assets | |
| 35 | + * return void | |
| 36 | + */ | |
| 37 | + public function enqueue_editor_assets() { | |
| 38 | + $this->enqueue_asset('global', true, true); | |
| 39 | + $this->enqueue_asset('modules', false); | |
| 40 | + $this->localize_preview_images(); | |
| 41 | + } | |
| 62 | 42 | |
| 63 | - // wp localize script | |
| 64 | - wp_localize_script( | |
| 65 | - 'gutslider-blocks-modules-script', | |
| 66 | - 'gutslider_preview', | |
| 67 | - [ | |
| 68 | - 'fixed_content' => trailingslashit( GUTSLIDER_URL ) . 'assets/images/content-slider.svg', | |
| 69 | - 'any_content' => trailingslashit( GUTSLIDER_URL ) . 'assets/images/any-content.svg', | |
| 70 | - 'photo_carousel' => trailingslashit( GUTSLIDER_URL ) . 'assets/images/photo-carousel.svg', | |
| 71 | - 'testimonial_slider' => trailingslashit( GUTSLIDER_URL ) . 'assets/images/testimonial-slider.svg', | |
| 72 | - 'post_slider' => trailingslashit( GUTSLIDER_URL ) . 'assets/images/post-slider.svg', | |
| 73 | - ] | |
| 43 | + /** | |
| 44 | + * Enqueue assets | |
| 45 | + * return void | |
| 46 | + */ | |
| 47 | + public function enqueue_assets() { | |
| 48 | + | |
| 49 | + wp_register_style( | |
| 50 | + 'gutslider-swiper-style', | |
| 51 | + GUTSLIDER_URL . 'assets/css/swiper-bundle.min.css', | |
| 52 | + [], | |
| 53 | + GUTSLIDER_VERSION | |
| 54 | + ); | |
| 55 | + | |
| 56 | + wp_register_script( | |
| 57 | + 'gutslider-swiper-script', | |
| 58 | + GUTSLIDER_URL . 'assets/js/swiper-bundle.min.js', | |
| 59 | + [], | |
| 60 | + GUTSLIDER_VERSION, | |
| 61 | + true | |
| 62 | + ); | |
| 63 | + | |
| 64 | + wp_localize_script( | |
| 65 | + 'gutslider-swiper-script', | |
| 66 | + 'gutslider_swiper', | |
| 67 | + [ | |
| 68 | + 'placeholder' => GUTSLIDER_URL . 'assets/images/placeholder.svg' | |
| 69 | + ] | |
| 70 | + ); | |
| 71 | + | |
| 72 | + if(!is_admin()) { | |
| 73 | + wp_register_script( | |
| 74 | + 'gutslider-fslightbox', | |
| 75 | + GUTSLIDER_URL . 'assets/js/fslightbox.js', | |
| 76 | + [], | |
| 77 | + GUTSLIDER_VERSION, | |
| 78 | + true | |
| 74 | 79 | ); |
| 75 | 80 | } |
| 81 | + } | |
| 76 | 82 | |
| 77 | - /** | |
| 78 | - * Enqueue Block Assets [ Editor + Frontend ] | |
| 79 | - * return void | |
| 80 | - */ | |
| 81 | - public function enqueue_assets() { | |
| 83 | + /** | |
| 84 | + * Enqueue asset | |
| 85 | + * @param string $name | |
| 86 | + * @param bool $enqueue_style | |
| 87 | + * return void | |
| 88 | + */ | |
| 89 | + private function enqueue_asset($name, $enqueue_style = true, $register_mode = false) { | |
| 90 | + $asset_path = GUTSLIDER_DIR_PATH . "build/{$name}/{$name}.asset.php"; | |
| 91 | + | |
| 92 | + if (file_exists($asset_path)) { | |
| 93 | + $dependency_file = include $asset_path; | |
| 94 | + if (is_array($dependency_file) && !empty($dependency_file)) { | |
| 95 | + if($register_mode) { | |
| 96 | + wp_register_script( | |
| 97 | + "gutslider-blocks-{$name}-script", | |
| 98 | + GUTSLIDER_URL . "build/{$name}/{$name}.js", | |
| 99 | + $dependency_file['dependencies'] ?? [], | |
| 100 | + $dependency_file['version'] ?? GUTSLIDER_VERSION, | |
| 101 | + $name === 'global' | |
| 102 | + ); | |
| 103 | + } else { | |
| 104 | + wp_enqueue_script( | |
| 105 | + "gutslider-blocks-{$name}-script", | |
| 106 | + GUTSLIDER_URL . "build/{$name}/{$name}.js", | |
| 107 | + $dependency_file['dependencies'] ?? [], | |
| 108 | + $dependency_file['version'] ?? GUTSLIDER_VERSION, | |
| 109 | + $name === 'global' | |
| 110 | + ); | |
| 111 | + } | |
| 112 | + } | |
| 113 | + } | |
| 82 | 114 | |
| 83 | - if( is_admin() ) { | |
| 84 | - // swiper style | |
| 85 | - wp_enqueue_style( | |
| 86 | - 'swiper-style', | |
| 87 | - trailingslashit( GUTSLIDER_URL ) . 'assets/css/swiper-bundle.min.css', | |
| 115 | + if ($enqueue_style) { | |
| 116 | + if($register_mode) { | |
| 117 | + wp_register_style( | |
| 118 | + "gutslider-blocks-{$name}-style", | |
| 119 | + GUTSLIDER_URL . "build/{$name}/{$name}.css", | |
| 88 | 120 | [], |
| 89 | 121 | GUTSLIDER_VERSION |
| 90 | 122 | ); |
| 91 | - | |
| 92 | - // swiper script | |
| 93 | - wp_enqueue_script( | |
| 94 | - 'swiper-script', | |
| 95 | - trailingslashit( GUTSLIDER_URL ) . 'assets/js/swiper-bundle.min.js', | |
| 96 | - [], | |
| 97 | - GUTSLIDER_VERSION, | |
| 98 | - true | |
| 99 | - ); | |
| 100 | - } | |
| 101 | - | |
| 102 | - // enqueue frontend scripts | |
| 103 | - $swiper_scripts = get_option( 'swiper_scripts', true ); | |
| 104 | - if( ! is_admin() && $swiper_scripts && ( has_block( 'gutsliders/content-slider' ) || has_block( 'gutsliders/any-content' ) || has_block( 'gutsliders/testimonial-slider' ) || has_block( 'gutsliders/post-slider' ) || has_block( 'gutsliders/photo-carousel' ) || has_block( 'gutsliders/logo-carousel' ) )) { | |
| 105 | - // swiper style | |
| 123 | + } else { | |
| 106 | 124 | wp_enqueue_style( |
| 107 | - 'swiper-style', | |
| 108 | - trailingslashit( GUTSLIDER_URL ) . 'assets/css/swiper-bundle.min.css', | |
| 125 | + "gutslider-blocks-{$name}-style", | |
| 126 | + GUTSLIDER_URL . "build/{$name}/{$name}.css", | |
| 109 | 127 | [], |
| 110 | 128 | GUTSLIDER_VERSION |
| 111 | 129 | ); |
| 130 | + } | |
| 131 | + } | |
| 132 | + } | |
| 112 | 133 | |
| 113 | - // swiper script | |
| 114 | - wp_enqueue_script( | |
| 115 | - 'swiper-script', | |
| 116 | - trailingslashit( GUTSLIDER_URL ) . 'assets/js/swiper-bundle.min.js', | |
| 117 | - [], | |
| 118 | - GUTSLIDER_VERSION, | |
| 119 | - true | |
| 120 | - ); | |
| 121 | - } | |
| 122 | - if( ! is_admin() && ( has_block( 'gutsliders/photo-carousel' ) )) { | |
| 123 | - // lightbox | |
| 124 | - wp_enqueue_script( | |
| 125 | - 'gutslider-fslightbox', | |
| 126 | - trailingslashit( GUTSLIDER_URL ) . 'assets/js/fslightbox.js', | |
| 127 | - [], | |
| 128 | - GUTSLIDER_VERSION, | |
| 129 | - true | |
| 130 | - ); | |
| 131 | - } | |
| 134 | + /** | |
| 135 | + * Localize preview images | |
| 136 | + * return void | |
| 137 | + */ | |
| 138 | + private function localize_preview_images() { | |
| 139 | + $preview_urls = []; | |
| 140 | + foreach (self::PREVIEW_IMAGES as $key => $image) { | |
| 141 | + $preview_urls[$key] = GUTSLIDER_URL . "assets/images/{$image}"; | |
| 132 | 142 | } |
| 143 | + | |
| 144 | + // is Gutslider Pro active | |
| 145 | + $is_pro_active = defined('GUTSLIDER_PRO_VERSION'); | |
| 133 | 146 | |
| 147 | + // add to the preview urls | |
| 148 | + $preview_urls['is_pro'] = $is_pro_active; | |
| 149 | + | |
| 150 | + wp_localize_script( | |
| 151 | + 'gutslider-blocks-modules-script', | |
| 152 | + 'gutslider_preview', | |
| 153 | + $preview_urls | |
| 154 | + ); | |
| 134 | 155 | } |
| 156 | + | |
| 157 | +} | |
| 135 | 158 | |
| 136 | - } | |
| 137 | - | |
| 138 | - new GutSlider_Assets(); // Initialize the class | |
| 159 | +new GutSlider_Assets(); | |