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