PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.2.0
ShopBuilder – WooCommerce Builder For Elementor v3.2.0
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
← All changes | app/Controllers/AssetsController.php +238 -81 2.0.13.2.0 View file →
@@ -1,11 +1,17 @@
1 1 <?php
2 +/**
3 + * Assets Controller Class
4 + *
5 + * @package RadiusTheme\SB
6 + */
2 7
3 8 namespace RadiusTheme\SB\Controllers;
4 9
5 -use RadiusTheme\SB\Helpers\BuilderFns;
10 +use RadiusTheme\SB\AI\AIFns;
6 11 use RadiusTheme\SB\Helpers\Fns;
7 12 use RadiusTheme\SB\Models\Settings;
13 +use RadiusTheme\SB\Helpers\BuilderFns;
8 14 use RadiusTheme\SB\Traits\SingletonTrait;
9 15
10 16 // Do not allow directly accessing this file.
11 17 if ( ! defined( 'ABSPATH' ) ) {
@@ -11,8 +17,11 @@
11 17 if ( ! defined( 'ABSPATH' ) ) {
12 18 exit( 'This script cannot be accessed directly.' );
13 19 }
14 20
21 +/**
22 + * Assets Controller Class
23 + */
15 24 class AssetsController {
16 25
17 26 use SingletonTrait;
18 27
@@ -44,19 +53,27 @@
44 53 */
45 54 private $scripts = [];
46 55
47 56 /**
57 + * Cached bundled assets.
58 + *
59 + * @var array|null
60 + */
61 + private $cached_bundled_assets = null;
62 +
63 + /**
48 64 * Class Constructor
49 65 */
50 66 public function __construct() {
51 67 $this->version = ( defined( 'WP_DEBUG' ) && WP_DEBUG ) ? time() : RTSB_VERSION;
52 68
69 + // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
53 70 if ( in_array( 'sitepress-multilingual-cms/sitepress.php', get_option( 'active_plugins' ) ) ) {
54 71 self::$ajaxurl = admin_url( 'admin-ajax.php?lang=' . ICL_LANGUAGE_CODE );
55 72 } else {
56 73 self::$ajaxurl = admin_url( 'admin-ajax.php' );
57 74 }
58 -
75 + add_filter( 'rtsb/optimizer/scripts/deps', [ $this, 'extend_shared_dependencies' ], 99 );
59 76 /**
60 77 * Admin scripts.
61 78 */
62 79 add_action( 'admin_enqueue_scripts', [ $this, 'register_backend_assets' ], 1 );
@@ -64,16 +81,28 @@
64 81
65 82 /**
66 83 * Public scripts.
67 84 */
68 - add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_public_scripts' ], 15 );
85 + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_public_scripts' ], 25 );
69 86 /**
70 87 * General scripts.
71 88 */
72 89 add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_general_public_scripts' ], 30 );
73 90 }
74 -
75 91 /**
92 + * Shared dependencies.
93 + *
94 + * @param array $deps Dependencies.
95 + *
96 + * @return array
97 + */
98 + public function extend_shared_dependencies( $deps ) {
99 + if ( Fns::is_elementor_widget_active( 'products_slider' ) ) {
100 + $deps[] = 'swiper';
101 + }
102 + return array_unique( $deps );
103 + }
104 + /**
76 105 * Get all frontend scripts.
77 106 *
78 107 * @return void
79 108 */
@@ -87,13 +116,19 @@
87 116 * @return object
88 117 */
89 118 private function get_public_styles() {
90 119 $rtl_suffix = is_rtl() ? '-rtl' : '';
120 + $rtl_dir = is_rtl() ? trailingslashit( 'rtl' ) : trailingslashit( 'css' );
121 +
91 122 $this->styles[] = [
123 + 'handle' => 'rtsb-odometer',
124 + 'src' => rtsb()->get_assets_uri( 'vendor/odometer/css/odometer.min.css' ),
125 + ];
126 +
127 + $this->styles[] = [
92 128 'handle' => 'rtsb-fonts',
93 129 'src' => rtsb()->get_assets_uri( 'css/frontend/rtsb-fonts.css' ),
94 130 ];
95 -
96 131 if ( rtsb()->has_pro() ) {
97 132 $this->styles[] = [
98 133 'handle' => 'rtsb-noui-slider',
99 134 'src' => rtsbpro()->get_assets_uri( 'vendors/nouislider/nouislider.min.css' ),
@@ -99,18 +134,25 @@
99 134 'src' => rtsbpro()->get_assets_uri( 'vendors/nouislider/nouislider.min.css' ),
100 135 ];
101 136 }
102 137
103 - $this->styles[] = [
104 - 'handle' => 'rtsb-frontend',
105 - 'src' => rtsb()->get_assets_uri( 'css/frontend/frontend' . $rtl_suffix . '.css' ),
106 - ];
138 + $pro_version = defined( 'RTSBPRO_VERSION' ) ? RTSBPRO_VERSION : '0';
139 + $addon_condition = version_compare( $pro_version, '1.9.0', '<' );
107 140
108 - $this->styles[] = [
109 - 'handle' => 'swiper',
110 - 'src' => rtsb()->get_assets_uri( 'vendor/swiper/css/swiper-bundle.min.css' ),
111 - ];
112 -
141 + if ( ! rtsb()->has_pro() && Fns::is_optimization_enabled() ) {
142 + $this->styles[] = AssetRegistry::instance()->load_optimized_assets();
143 + } else {
144 + if ( $addon_condition ) {
145 + $this->styles[] = [
146 + 'handle' => 'rtsb-general-addons',
147 + 'src' => rtsb()->get_assets_uri( $rtl_dir . 'frontend/general-addons' . $rtl_suffix . '.css' ),
148 + ];
149 + }
150 + $this->styles[] = [
151 + 'handle' => 'rtsb-frontend',
152 + 'src' => rtsb()->get_assets_uri( $rtl_dir . 'frontend/frontend' . $rtl_suffix . '.css' ),
153 + ];
154 + }
113 155 if ( BuilderFns::is_builder_preview() && 'elementor' == Fns::page_edit_with( get_the_ID() ) ) {
114 156 $this->styles[] = [
115 157 'handle' => 'photoswipe',
116 158 'src' => plugins_url( 'assets/css/photoswipe/photoswipe.min.css', WC_PLUGIN_FILE ),
@@ -138,19 +180,24 @@
138 180 */
139 181 private function get_public_scripts() {
140 182 $this->scripts[] = [
141 183 'handle' => 'swiper',
142 - 'src' => rtsb()->get_assets_uri( 'vendor/swiper/js/swiper-bundle.min.js' ),
184 + 'src' => esc_url( $this->get_swiper_url() ),
143 185 'deps' => [ 'jquery' ],
144 186 'footer' => true,
145 187 ];
146 -
147 188 $this->scripts[] = [
148 - 'handle' => 'rtsb-imagesloaded',
149 - 'src' => rtsb()->get_assets_uri( 'vendor/isotope/imagesloaded.pkgd.min.js' ),
189 + 'handle' => 'rtsb-waypoints',
190 + 'src' => rtsb()->get_assets_uri( 'vendor/waypoints/js/jquery.waypoints.min.js' ),
150 191 'deps' => [ 'jquery' ],
151 192 'footer' => true,
152 193 ];
194 + $this->scripts[] = [
195 + 'handle' => 'rtsb-odometer',
196 + 'src' => rtsb()->get_assets_uri( 'vendor/odometer/js/odometer.min.js' ),
197 + 'deps' => [ 'jquery' ],
198 + 'footer' => true,
199 + ];
153 200
154 201 $this->scripts[] = [
155 202 'handle' => 'rtsb-tipsy',
156 203 'src' => rtsb()->get_assets_uri( 'vendor/tipsy/tipsy.min.js' ),
@@ -159,9 +206,9 @@
159 206 ];
160 207
161 208 if ( BuilderFns::is_builder_preview() && 'elementor' == Fns::page_edit_with( get_the_ID() ) ) {
162 209 $this->scripts[] = [
163 - 'handle' => 'flexslider',
210 + 'handle' => 'wc-flexslider',
164 211 'src' => plugins_url( 'assets/js/flexslider/jquery.flexslider.js', WC_PLUGIN_FILE ),
165 212 'deps' => [ 'jquery' ],
166 213 'footer' => true,
167 214 ];
@@ -173,9 +220,9 @@
173 220 'footer' => true,
174 221 ];
175 222
176 223 $this->scripts[] = [
177 - 'handle' => 'zoom',
224 + 'handle' => 'wc-zoom',
178 225 'src' => plugins_url( 'assets/js/zoom/jquery.zoom.js', WC_PLUGIN_FILE ),
179 226 'deps' => [ 'jquery' ],
180 227 'footer' => true,
181 228 ];
@@ -180,9 +227,9 @@
180 227 'footer' => true,
181 228 ];
182 229
183 230 $this->scripts[] = [
184 - 'handle' => 'photoswipe-ui-default',
231 + 'handle' => 'wc-photoswipe-ui-default',
185 232 'src' => plugins_url( 'assets/js/photoswipe/photoswipe-ui-default.js', WC_PLUGIN_FILE ),
186 233 'deps' => [ 'jquery', 'photoswipe' ],
187 234 'footer' => true,
188 235 ];
@@ -189,9 +236,9 @@
189 236
190 237 $this->scripts[] = [
191 238 'handle' => 'wc-single-product',
192 239 'src' => plugins_url( 'assets/js/frontend/single-product.js', WC_PLUGIN_FILE ),
193 - 'deps' => [ 'jquery', 'flexslider', 'photoswipe', 'photoswipe-ui-default', 'zoom' ],
240 + 'deps' => [ 'jquery', 'wc-flexslider', 'photoswipe', 'wc-photoswipe-ui-default', 'wc-zoom' ],
194 241 'footer' => true,
195 242 ];
196 243
197 244 }
@@ -209,16 +256,34 @@
209 256 'src' => rtsbpro()->get_assets_uri( 'vendors/sticky-sidebar/sticky-sidebar.min.js' ),
210 257 'deps' => [ 'jquery' ],
211 258 'footer' => true,
212 259 ];
260 +
261 + $this->scripts[] = [
262 + 'handle' => 'rtsb-popper',
263 + 'src' => rtsbpro()->get_assets_uri( 'vendors/tippy/popper.min.js' ),
264 + 'deps' => [ 'jquery' ],
265 + 'footer' => true,
266 + ];
267 +
268 + $this->scripts[] = [
269 + 'handle' => 'rtsb-tippy',
270 + 'src' => rtsbpro()->get_assets_uri( 'vendors/tippy/tippy.min.js' ),
271 + 'deps' => [ 'jquery', 'rtsb-popper' ],
272 + 'footer' => true,
273 + ];
213 274 }
214 275
215 - $this->scripts[] = [
216 - 'handle' => 'rtsb-public',
217 - 'src' => rtsb()->get_assets_uri( 'js/frontend/frontend.js' ),
218 - 'deps' => [ 'jquery', 'rtsb-imagesloaded', 'swiper' ],
219 - 'footer' => true,
220 - ];
276 + if ( ! rtsb()->has_pro() && Fns::is_optimization_enabled() ) {
277 + $this->scripts[] = AssetRegistry::instance()->load_optimized_assets( 'js' );
278 + } else {
279 + $this->scripts[] = [
280 + 'handle' => 'rtsb-public',
281 + 'src' => rtsb()->get_assets_uri( 'js/frontend/frontend.js' ),
282 + 'deps' => [ 'jquery', 'imagesloaded', 'swiper' ],
283 + 'footer' => true,
284 + ];
285 + }
221 286
222 287 return $this;
223 288 }
224 289
@@ -228,8 +293,10 @@
228 293 * @return void
229 294 */
230 295 public function register_public_scripts() {
231 296 $this->get_public_assets();
297 + $this->styles = array_filter( $this->styles );
298 + $this->scripts = array_filter( $this->scripts );
232 299
233 300 // Register public styles.
234 301 foreach ( $this->styles as $style ) {
235 302 wp_register_style( $style['handle'], $style['src'], '', $this->version );
@@ -250,8 +317,9 @@
250 317 /**
251 318 * Register scripts.
252 319 */
253 320 $this->register_public_scripts();
321 +
254 322 /**
255 323 * Enqueue scripts.
256 324 */
257 325 if ( BuilderFns::is_builder_preview() && 'elementor' === Fns::page_edit_with( get_the_ID() ) ) {
@@ -257,9 +325,8 @@
257 325 if ( BuilderFns::is_builder_preview() && 'elementor' === Fns::page_edit_with( get_the_ID() ) ) {
258 326 /**
259 327 * Styles.
260 328 */
261 - wp_enqueue_style( 'swiper' );
262 329 wp_enqueue_style( 'photoswipe' );
263 330 wp_enqueue_style( 'photoswipe-default-skin' );
264 331 wp_enqueue_style( 'elementor-editor-style-fix' );
265 332 wp_enqueue_style( 'woocommerce-general' );
@@ -266,27 +333,31 @@
266 333
267 334 /**
268 335 * Scripts.
269 336 */
270 - wp_enqueue_script( 'flexslider' );
337 + $handle = Fns::optimized_handle( 'rtsb-public' );
338 +
339 + wp_enqueue_script( 'wc-flexslider' );
271 340 wp_enqueue_script( 'wc-single-product' );
272 - wp_dequeue_script( 'rtsb-public' );
341 + wp_dequeue_script( $handle );
273 342 wp_enqueue_script( 'swiper' );
274 - wp_enqueue_script( 'rtsb-public' );
343 +
344 + if ( Fns::is_optimization_enabled() ) {
345 + Fns::enqueue_optimized_assets();
346 + } else {
347 + wp_enqueue_script( $handle );
348 + }
275 349 }
276 350
277 - /**
278 - * Styles.
279 - */
280 - wp_enqueue_style( 'rtsb-fonts' );
281 - wp_enqueue_style( 'rtsb-frontend' );
351 + wp_enqueue_script( 'rtsb-tipsy' );
282 352
283 - /**
284 - * Scripts.
285 - */
286 - wp_enqueue_script( 'rtsb-imagesloaded' );
287 - wp_enqueue_script( 'rtsb-tipsy' );
288 - wp_enqueue_script( 'rtsb-public' );
353 + if ( Fns::is_optimization_enabled() ) {
354 + Fns::enqueue_optimized_assets();
355 + } else {
356 + wp_enqueue_style( 'rtsb-fonts' );
357 + wp_enqueue_style( 'rtsb-frontend' );
358 + wp_enqueue_script( 'rtsb-public' );
359 + }
289 360
290 361 /**
291 362 * Localize script.
292 363 */
@@ -299,22 +370,29 @@
299 370 * @static
300 371 * @return void
301 372 */
302 373 public static function localizeData() {
374 + $handle = Fns::optimized_handle( 'rtsb-public' );
375 + $ai_data = AIFns::activated_ai_data();
303 376 wp_localize_script(
304 - 'rtsb-public',
377 + $handle,
305 378 'rtsbPublicParams',
306 379 [
307 - 'ajaxUrl' => esc_url( self::$ajaxurl ),
308 - 'homeurl' => home_url(),
309 - 'wcCartUrl' => wc_get_cart_url(),
310 - 'addedToCartText' => esc_html__( 'Product Added', 'shopbuilder' ),
311 - 'browseCartText' => esc_html__( 'Browse Cart', 'shopbuilder' ),
312 - 'noProductsText' => apply_filters( 'rtsb/global/no_products_text', esc_html__( 'No more products to load', 'shopbuilder' ) ),
313 - 'notice' => [
380 + 'ajaxUrl' => esc_url( self::$ajaxurl ),
381 + 'aiActivated' => ! empty( $ai_data ),
382 + 'homeurl' => home_url(),
383 + 'wcCartUrl' => wc_get_cart_url(),
384 + 'addedToCartText' => esc_html__( 'Product Added', 'shopbuilder' ),
385 + 'singleCartToastrText' => esc_html__( 'Successfully Added', 'shopbuilder' ),
386 + 'singleCartBtnText' => apply_filters( 'rtsb/global/single_add_to_cart_success', esc_html__( 'Added to Cart', 'shopbuilder' ) ),
387 + 'browseCartText' => esc_html__( 'Browse Cart', 'shopbuilder' ),
388 + 'noProductsText' => apply_filters( 'rtsb/global/no_products_text', esc_html__( 'No more products to load', 'shopbuilder' ) ),
389 + 'isOptimizationEnabled' => Fns::is_optimization_enabled(),
390 + 'isLoaderEnabled' => Fns::enable_loader(),
391 + 'notice' => [
314 392 'position' => Fns::get_option( 'general', 'notification', 'notification_position', 'center-center' ),
315 393 ],
316 - rtsb()->nonceId => wp_create_nonce( rtsb()->nonceText ),
394 + rtsb()->nonceId => wp_create_nonce( rtsb()->nonceText ),
317 395 ]
318 396 );
319 397 }
320 398
@@ -327,9 +405,20 @@
327 405 /**
328 406 * Styles.
329 407 */
330 408 wp_register_style( 'rtsb-admin-app', rtsb()->get_assets_uri( 'css/backend/admin-settings.css' ), '', $this->version );
331 - wp_register_style( 'rtsb-admin-global', rtsb()->get_assets_uri( 'css/backend/admin-global.css' ), '', $this->version );
409 + wp_register_style( 'rtsb-fonts', rtsb()->get_assets_uri( 'css/frontend/rtsb-fonts.css' ), '', $this->version );
410 +
411 + $current_screen = get_current_screen();
412 +
413 + if ( 'edit-rtsb_builder' === $current_screen->id ) {
414 + if ( ! function_exists( 'woocommerce_get_asset_url' ) ) {
415 + include_once WC_ABSPATH . 'includes/wc-template-functions.php';
416 + }
417 +
418 + wp_deregister_style( 'select2' );
419 + wp_register_style( 'select2', plugins_url( 'assets/css/select2.css', WC_PLUGIN_FILE ) ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
420 + }
332 421 wp_register_style( 'rtsb-templatebuilder', rtsb()->get_assets_uri( 'css/backend/template-builder.css' ), '', $this->version );
333 422
334 423 /**
335 424 * Scripts.
@@ -335,25 +424,84 @@
335 424 * Scripts.
336 425 */
337 426 wp_register_script( 'rtsb-admin-app', rtsb()->get_assets_uri( 'js/backend/admin-settings.js' ), '', $this->version, true );
338 427 wp_register_script( 'rtsb-templatebuilder', rtsb()->get_assets_uri( 'js/backend/template-builder.js' ), '', $this->version, true );
339 -
428 + wp_localize_script(
429 + 'rtsb-admin-app',
430 + 'rtsbParams',
431 + [
432 + 'ajaxurl' => esc_url( self::$ajaxurl ),
433 + 'homeurl' => home_url(),
434 + 'adminLogo' => rtsb()->get_assets_uri( 'images/icon/ShopBuilder-Logo.svg' ),
435 + 'blackFriday' => rtsb()->get_assets_uri( 'images/black-friday-ribbon.svg' ),
436 + 'restApiUrl' => esc_url_raw( rest_url() ),
437 + 'rest_nonce' => wp_create_nonce( 'wp_rest' ),
438 + 'nonce' => wp_create_nonce( rtsb()->nonceText ),
439 + 'pages' => Fns::get_pages(),
440 + 'hasPro' => rtsb()->has_pro() ? 'yes' : 'no',
441 + 'proVersion' => defined( 'RTSBPRO_VERSION' ) ? RTSBPRO_VERSION : '0',
442 + 'updateRates' => esc_html__( 'Update All Rates', 'shopbuilder' ),
443 + 'sections' => Settings::instance()->get_sections(),
444 + 'userRoles' => Fns::get_all_user_roles(),
445 + 'hasElementor' => defined( 'ELEMENTOR_VERSION' ),
446 + 'loadElementor' => Fns::should_load_elementor_scripts(),
447 + 'isOptimizationEnabled' => Fns::is_optimization_enabled(),
448 + ]
449 + );
450 + wp_localize_script(
451 + 'rtsb-admin-app',
452 + 'rtsbCaAbandonment',
453 + [
454 + 'mainTitle' => esc_html__( 'Abandoned Carts Follow Up', 'shopbuilder' ),
455 + 'followUpColumnTitle' => [
456 + 'UserName' => esc_html__( 'Name', 'shopbuilder' ),
457 + 'EmailTo' => esc_html__( 'Email To', 'shopbuilder' ),
458 + 'CartTotal' => esc_html__( 'Cart Total', 'shopbuilder' ),
459 + 'OrderStatus' => esc_html__( 'Order Status', 'shopbuilder' ),
460 + 'DateTime' => esc_html__( 'Date / Time', 'shopbuilder' ),
461 + 'Action' => esc_html__( 'Action', 'shopbuilder' ),
462 + ],
463 + ]
464 + );
340 465 }
341 466
342 467 /**
343 468 * Enqueues admin scripts.
344 469 *
345 - * @param string $hook Hooks.
346 - *
347 470 * @return void
348 471 */
349 - public function enqueue_backend_scripts( $hook ) {
472 + public function enqueue_backend_scripts() {
473 + ob_start(); ?>
474 + #adminmenu .toplevel_page_rtsb .wp-menu-image img {
475 + width: auto;
476 + height: 22px;
477 + padding: 4px 0;
478 + box-sizing: content-box;
479 + }
480 + .post-type-rtsb_builder li#wp-admin-bar-WPML_ALS_all,
481 + .post-type-rtsb_builder li.language_all{
482 + display: none;
483 + }
350 484
351 - wp_enqueue_style( 'rtsb-admin-global' );
485 + <?php
486 + $admin_global_style = ob_get_clean();
487 + // Speed Optimization.
488 + wp_add_inline_style( 'admin-menu', $admin_global_style );
352 489
353 490 global $pagenow;
354 491
355 - if ( 'admin.php' === $pagenow && ! empty( $_GET['page'] ) && 'rtsb-settings' === $_GET['page'] ) {
492 + $whitelisted_pages = [ 'rtsb-settings', 'rtsb-get-help', 'rtsb-themes' ];
493 + $current_page = ! empty( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
494 +
495 + if ( 'admin.php' === $pagenow && ! empty( $_GET['page'] ) && in_array( $current_page, $whitelisted_pages, true ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
496 + /**
497 + * Styles.
498 + */
499 + wp_enqueue_style( 'rtsb-admin-app' );
500 + wp_enqueue_style( 'rtsb-fonts' );
501 + }
502 +
503 + if ( 'admin.php' === $pagenow && ! empty( $_GET['page'] ) && 'rtsb-settings' === $_GET['page'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
356 504 // Elementor Console Error Fixed For "rtsb-settings" Page.
357 505 wp_dequeue_script( 'elementor-admin-top-bar' );
358 506 wp_dequeue_script( 'elementor-common' );
359 507 wp_dequeue_script( 'elementor-dev-tools' );
@@ -360,8 +508,9 @@
360 508 wp_dequeue_script( 'elementor-web-cli' );
361 509 wp_dequeue_script( 'elementor-import-export-admin' );
362 510 wp_dequeue_script( 'elementor-app-loader' );
363 511 wp_dequeue_script( 'elementor-admin-modules' );
512 + wp_dequeue_script( 'elementor-ai-media-library' );
364 513 wp_dequeue_script( 'elementor-admin' );
365 514
366 515 wp_dequeue_style( 'elementor-admin-top-bar' );
367 516 wp_dequeue_style( 'elementor-admin' );
@@ -368,31 +517,13 @@
368 517 wp_dequeue_style( 'e-theme-ui-light' );
369 518 wp_dequeue_style( 'elementor-common' );
370 519
371 520 /**
372 - * Styles.
373 - */
374 - wp_enqueue_style( 'rtsb-admin-app' );
375 -
376 - /**
377 521 * Scripts.
378 522 */
523 + wp_enqueue_media();
379 524 wp_enqueue_script( 'updates' );
380 525 wp_enqueue_script( 'rtsb-admin-app' );
381 - wp_localize_script(
382 - 'rtsb-admin-app',
383 - 'rtsbParams',
384 - [
385 - 'ajaxurl' => esc_url( self::$ajaxurl ),
386 - 'homeurl' => home_url(),
387 - 'restApiUrl' => esc_url_raw( rest_url() ),
388 - 'rest_nonce' => wp_create_nonce( 'wp_rest' ),
389 - 'nonce' => wp_create_nonce( rtsb()->nonceText ),
390 - 'sections' => Settings::instance()->get_sections(),
391 - 'pages' => Fns::get_pages(),
392 - 'hasPro' => rtsb()->has_pro() ? 'yes' : 'no'
393 - ]
394 - );
395 526 } else {
396 527 $current_screen = get_current_screen();
397 528
398 529 if ( 'edit-rtsb_builder' === $current_screen->id ) {
@@ -403,9 +534,9 @@
403 534 * Styles.
404 535 */
405 536 wp_enqueue_style( 'rtsb-templatebuilder' );
406 537
407 - wp_enqueue_style( 'select2', plugins_url( 'assets/css/select2.css', WC_PLUGIN_FILE ) );
538 + wp_enqueue_style( 'select2', plugins_url( 'assets/css/select2.css', WC_PLUGIN_FILE ) ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
408 539
409 540 wp_enqueue_script( 'selectWoo' );
410 541 /**
411 542 * Scripts.
@@ -418,9 +549,9 @@
418 549 [
419 550 'ajaxurl' => esc_url( self::$ajaxurl ),
420 551 'homeurl' => home_url(),
421 552 rtsb()->nonceId => wp_create_nonce( rtsb()->nonceText ),
422 - 'hasPro' => rtsb()->has_pro() ? 'yes' : 'no'
553 + 'hasPro' => rtsb()->has_pro() ? 'yes' : 'no',
423 554 ]
424 555 );
425 556 }
426 557 }
@@ -440,8 +571,9 @@
440 571
441 572 if ( ! empty( $notification_color ) ) {
442 573 $dynamic_css .= ".rtsb-shopbuilder-plugin #toast-container .toast-success{color:{$notification_color}}";
443 574 $dynamic_css .= ".rtsb-shopbuilder-plugin #toast-container .toast-success:before{background-color:{$notification_color}}";
575 + $dynamic_css .= ".rtsb-shopbuilder-plugin #toast-container .toast-close-button{color:{$notification_color}}";
444 576 }
445 577
446 578 if ( ! empty( $notification_bgcolor ) ) {
447 579 $dynamic_css .= ".rtsb-shopbuilder-plugin #toast-container .toast-success{background-color:{$notification_bgcolor}}";
@@ -451,8 +583,33 @@
451 583 $dynamic_css .= ".rtsb-shopbuilder-plugin #toast-container .toast-success a{color:{$notification_button_color}}";
452 584 }
453 585
454 586 if ( ! empty( $dynamic_css ) ) {
455 - wp_add_inline_style( 'rtsb-frontend', $dynamic_css );
587 + wp_add_inline_style( Fns::optimized_handle( 'rtsb-frontend' ), $dynamic_css );
456 588 }
589 + }
590 +
591 + /**
592 + * Get the appropriate Swiper JS file URL.
593 + *
594 + * @return string
595 + */
596 + private function get_swiper_url() {
597 + $default_swiper_url = rtsb()->get_assets_uri( 'vendor/swiper/js/swiper-bundle.min.js' );
598 +
599 + if ( defined( 'ELEMENTOR_ASSETS_PATH' ) && defined( 'ELEMENTOR_ASSETS_URL' ) ) {
600 + $experiment = get_option( 'elementor_experiment-e_swiper_latest' );
601 +
602 + $el_relative_path = ( 'active' === $experiment || 'default' === $experiment )
603 + ? 'lib/swiper/v8/swiper.min.js'
604 + : 'lib/swiper/swiper.min.js';
605 +
606 + $el_full_path = ELEMENTOR_ASSETS_PATH . $el_relative_path;
607 +
608 + if ( file_exists( $el_full_path ) ) {
609 + return ELEMENTOR_ASSETS_URL . $el_relative_path;
610 + }
611 + }
612 +
613 + return $default_swiper_url;
457 614 }
458 615 }