PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.6.3
ShopBuilder – WooCommerce Builder For Elementor v2.6.3
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/Elementor/Render/GeneralAddons.php +22 -155 3.4.22.6.3 View file →
@@ -299,19 +299,15 @@
299 299 *
300 300 * @return void
301 301 */
302 302 private function slider_wrapper_start() {
303 - if ( 'rtsb-hero-slider' === $this->unique_name ) {
304 - $slider_data = self::get_hero_slider_data( $this->settings );
305 - } else {
306 - $slider_data = $this->get_slider_data();
307 - $slider_options = $slider_data['data'] ?? '';
308 - $slider_classes = $slider_data['class'] ?? '';
309 - $slider_data = [
310 - 'class' => 'rtsb-carousel-slider swiper ' . $slider_classes,
311 - 'data' => $slider_options,
312 - ];
313 - }
303 + $slider_data = $this->get_slider_data();
304 + $slider_options = $slider_data['data'] ?? '';
305 + $slider_classes = $slider_data['class'] ?? '';
306 + $slider_data = [
307 + 'class' => 'rtsb-carousel-slider swiper ' . $slider_classes,
308 + 'data' => $slider_options,
309 + ];
314 310
315 311 // Adding slider attributes.
316 312 $this->add_attribute(
317 313 'rtsb_slider_attr_' . $this->id,
@@ -346,29 +342,16 @@
346 342 $metas = $this->get_slider_meta_dataset( $this->settings, $this->template_name, $this->settings );
347 343
348 344 return RenderHelpers::slider_data( (array) $metas, $this->settings );
349 345 }
350 -
351 346 /**
352 - * Prepares and returns slider configuration dataset for rendering in Elementor or frontend use.
347 + * Gets slider data for the carousel.
353 348 *
354 - * This method collects various slider-related metadata settings, normalizes them using helper
355 - * functions, and returns a structured dataset used to initialize and render a responsive slider.
356 - *
357 - * @since 1.0.0
358 - *
359 - * @param array $meta Metadata array containing configuration values for the slider.
360 - * Example keys: 'cols', 'cols_tablet', 'slider_loop', etc.
361 - * @param string $template The template identifier or slug used for rendering slider content.
362 - * @param array $raw_settings Raw settings passed directly from Elementor widget settings or similar source.
363 - *
364 - * @return array|null Returns an array of slider settings suitable for frontend use,
365 - * optionally modified by the 'rtsb/elementor/render/slider_dataset_final' filter.
349 + * @return string
366 350 */
367 351 protected function get_slider_meta_dataset( array $meta, $template = '', $raw_settings = [] ) {
368 352 $data = [
369 353 'widget' => 'custom',
370 - 'widget_name' => $this->unique_name,
371 354 'template' => RenderHelpers::get_data( $template, '', '' ),
372 355 'raw_settings' => $raw_settings,
373 356 'd_cols' => RenderHelpers::get_data( $meta, 'cols', 0 ),
374 357 't_cols' => RenderHelpers::get_data( $meta, 'cols_tablet', 2 ),
@@ -387,9 +370,9 @@
387 370 'auto_height' => ! empty( $meta['slider_auto_height'] ),
388 371 'speed' => RenderHelpers::get_data( $meta, 'slide_speed', 2000 ),
389 372 'space_between' => isset( $meta['grid_gap']['size'] ) && strlen( $meta['grid_gap']['size'] ) ? $meta['grid_gap']['size'] : 30,
390 373 'auto_play_timeout' => RenderHelpers::get_data( $meta, 'autoplay_timeout', 5000 ),
391 - 'nav_position' => RenderHelpers::get_data( $meta, 'slider_nav_position', 'standard' ),
374 + 'nav_position' => RenderHelpers::get_data( $meta, 'slider_nav_position', 'top' ),
392 375 'left_arrow_icon' => RenderHelpers::get_data( $meta, 'slider_left_arrow_icon', [] ),
393 376 'right_arrow_icon' => RenderHelpers::get_data( $meta, 'slider_right_arrow_icon', [] ),
394 377 ];
395 378 if ( ! empty( $meta['cols_widescreen'] ) ) {
@@ -406,122 +389,22 @@
406 389
407 390 if ( ! empty( $meta['cols_mobile_extra'] ) ) {
408 391 $data['me_cols'] = $meta['cols_mobile_extra'];
409 392 }
410 -
411 393 return apply_filters( 'rtsb/elementor/render/slider_dataset_final', $data, $meta, $raw_settings );
412 394 }
413 395
414 - /**
415 - * Generates the configuration and CSS class for the hero slider carousel.
416 - *
417 - * Prepares Swiper-compatible slider options and associated class names based on
418 - * the provided metadata. This includes autoplay settings, pagination type,
419 - * lazy loading, effects (e.g., parallax, fade), and responsive breakpoints.
420 - *
421 - * @since 1.0.0
422 - *
423 - * @param array $meta Metadata array for the slider settings, including keys like
424 - * 'slide_speed', 'slider_loop', 'slider_pagi_type', etc.
425 - *
426 - * @return array Returns an associative array containing:
427 - * - 'data' (string): JSON-encoded slider options for Swiper.
428 - * - 'class' (string): Additional CSS class names for the carousel container.
429 - */
430 - protected function get_hero_slider_data( array $meta ) {
431 - $has_dots = $meta['slider_pagi'] ? ' has-dot' : ' no-dot';
432 - $has_dots .= $meta['slider_nav'] ? ' has-nav' : ' no-nav';
433 - $has_dynamic_dots = $meta['slider_dynamic_pagi'] ? true : false;
434 - $breakpoints = [
435 - 0 => [
436 - 'slidesPerView' => 1,
437 - 'slidesPerGroup' => 1,
438 - 'pagination' => [
439 - 'dynamicBullets' => $has_dynamic_dots,
440 - 'type' => RenderHelpers::get_data( $meta, 'slider_pagi_type', 'bullet' ),
441 - ],
442 - ],
443 - 768 => [
444 - 'slidesPerView' => 1,
445 - 'slidesPerGroup' => 1,
446 - 'pagination' => [
447 - 'dynamicBullets' => $has_dynamic_dots,
448 - 'type' => RenderHelpers::get_data( $meta, 'slider_pagi_type', 'bullet' ),
449 - ],
450 - ],
451 - 1025 => [
452 - 'slidesPerView' => 1,
453 - 'slidesPerGroup' => 1,
454 - 'pagination' => [
455 - 'dynamicBullets' => $has_dynamic_dots,
456 - 'type' => RenderHelpers::get_data( $meta, 'slider_pagi_type', 'bullet' ),
457 - ],
458 - ],
459 - ];
460 - $slider_options = [
461 - 'slidesPerView' => 1,
462 - 'slidesPerGroup' => 1,
463 - 'speed' => absint( RenderHelpers::get_data( $meta, 'slide_speed', 2000 ) ),
464 - 'loop' => ! empty( $meta['slider_loop'] ),
465 - 'autoHeight' => ! empty( $meta['slider_auto_height'] ),
466 - 'preloadImages' => ! empty( $meta['slider_lazy_load'] ),
467 - 'lazy' => ! empty( $meta['slider_lazy_load'] ),
468 - 'breakpoints' => $breakpoints,
469 - ];
470 - if ( $meta['slide_autoplay'] ) {
471 - $slider_options['autoplay'] = [
472 - 'delay' => absint( RenderHelpers::get_data( $meta, 'autoplay_timeout', 5000 ) ),
473 - 'pauseOnMouseEnter' => ! empty( $meta['pause_hover'] ),
474 - 'disableOnInteraction' => false,
475 - ];
476 - }
477 - if ( 'fraction' === $meta['slider_pagi_type'] ) {
478 - unset( $slider_options['pagination']['dynamicBullets'] );
479 - }
480 - if ( 'parallax' === $meta['slider_effect'] ) {
481 - $slider_options['parallax'] = true;
482 - } else {
483 - $slider_options['effect'] = $meta['slider_effect'];
484 - }
485 - if ( 'fade' === $meta['slider_effect'] ) {
486 - $slider_options['crossFade'] = true;
487 - }
488 396
489 - $slider_options = apply_filters( 'rtsb/elementor/render/hero_slider_dataset', $slider_options, $this->settings );
490 - $carouselClass = 'rtsb-hero-carousel-slider slider-loading rtsb-pos-s ' . $has_dots;
491 - return [
492 - 'data' => esc_js( wp_json_encode( $slider_options ) ),
493 - 'class' => $carouselClass,
494 - ];
495 - }
496 -
497 -
498 397 /**
499 - * Renders the carousel slider navigation arrows and pagination markup.
398 + * Renders the carousel slider buttons.
500 399 *
501 - * This method returns HTML for Swiper navigation buttons (left/right arrows)
502 - * and optional pagination dots, depending on the provided slider settings.
503 - *
504 - * @since 1.0.0
505 - *
506 - * @param array $settings Slider configuration options. Expected keys:
507 - * - 'slider_left_arrow_icon' (string) Icon for the left arrow.
508 - * - 'slider_right_arrow_icon' (string) Icon for the right arrow.
509 - * - 'slider_nav' (bool) Whether to show navigation arrows.
510 - * - 'slider_pagi' (bool) Whether to show pagination.
511 - * - 'slider_pagi_type' (string) (Optional) Pagination style (e.g., 'bullets', 'fraction').
512 - *
513 - * @return string HTML markup for the slider navigation and pagination.
400 + * @return string
514 401 */
515 402 protected function slider_buttons( $settings ) {
516 - $html = '';
517 - $pagination_type = '';
518 - $left_icon = $settings['slider_left_arrow_icon'] ?? '';
519 - $right_icon = $settings['slider_right_arrow_icon'] ?? '';
520 - $is_hero_carousel = 'rtsb-hero-slider' === $this->unique_name;
521 - if ( $is_hero_carousel && ! empty( $settings['slider_pagi_type'] ) ) {
522 - $pagination_type = $settings['slider_pagi_type'];
523 - }
403 + $html = '';
404 + $left_icon = $settings['slider_left_arrow_icon'];
405 + $right_icon = $settings['slider_right_arrow_icon'];
406 +
524 407 if ( ! empty( $settings['slider_nav'] ) ) {
525 408 $html .=
526 409 '<div class="swiper-nav">
527 410 <div class="swiper-arrow swiper-button-next">
@@ -532,18 +415,11 @@
532 415 </div>
533 416 </div>';
534 417 }
535 418
536 - $html .= ! empty( $settings['slider_pagi'] ) ? '<div class="swiper-pagination rtsb-pos-s ' . esc_attr( $pagination_type ) . '"></div>' : '';
419 + $html .= ! empty( $settings['slider_pagi'] ) ? '<div class="swiper-pagination rtsb-pos-s"></div>' : '';
537 420
538 - /**
539 - * Filters the slider navigation + pagination markup.
540 - *
541 - * @param string $html Slider buttons (arrows + pagination) HTML.
542 - * @param array $settings Widget settings.
543 - * @param GeneralAddons $instance Current render instance (exposes unique_name, id, etc.).
544 - */
545 - return apply_filters( 'rtsb/general/slider_buttons/html', $html, $settings, $this );
421 + return $html;
546 422 }
547 423 /**
548 424 * Preloader.
549 425 *
@@ -549,11 +425,8 @@
549 425 *
550 426 * @return string
551 427 */
552 428 public function pre_loader() {
553 - if ( ! Fns::enable_loader() ) {
554 - return '';
555 - }
556 429 if ( $this->is_carousel ) {
557 430 return '<div class="rtsb-elements-loading rtsb-ball-clip-rotate"><div></div></div>';
558 431 }
559 432 return '';
@@ -659,20 +532,14 @@
659 532 </a>
660 533 <?php
661 534 }
662 535 /**
663 - * Renders an icon HTML markup based on position match.
536 + * Function to render icon.
664 537 *
665 - * Compares the desired icon position with the configured position
666 - * and renders the icon HTML if they match.
538 + * @param string $position icon position ('left' or 'right').
539 + * @param array $icon Position of the separator in settings.
667 540 *
668 - * @since 1.0.0
669 - *
670 - * @param string $position Desired position to render the icon ('left' or 'right').
671 - * @param string $icon Icon identifier or SVG markup.
672 - * @param string $icon_position Actual position set in the settings ('left' or 'right').
673 - *
674 - * @return string Icon HTML if position matches; otherwise, an empty string.
541 + * @return string
675 542 */
676 543 public static function render_button_icon( $position, $icon, $icon_position ) {
677 544 $html = '';
678 545