<?php /** * PowerPack Elements Common Widget. * * @package PowerPack Elements */ namespace PowerpackElements\Base; use Elementor\Widget_Base; use PowerpackElements\Classes\PP_Helper; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * Common Widget * * @since 0.0.1 */ abstract class Powerpack_Widget extends Widget_Base { /** * Get categories * * @since 0.0.1 */ public function get_categories() { return [ 'powerpack-elements' ]; } public function get_woo_categories() { return [ 'powerpack-woocommerce' ]; } /** * Get widget name * * @param string $slug Module class. * @since 1.4.13.1 */ public function get_widget_name( $slug = '' ) { return PP_Helper::get_widget_name( $slug ); } /** * Get widget title * * @param string $slug Module class. * @since 1.4.13.1 */ public function get_widget_title( $slug = '' ) { return PP_Helper::get_widget_title( $slug ); } /** * Get widget title * * @param string $slug Module class. * @since 1.4.13.1 */ public function get_widget_categories( $slug = '' ) { return PP_Helper::get_widget_categories( $slug ); } /** * Get widget title * * @param string $slug Module class. * @since 1.4.13.1 */ public function get_widget_icon( $slug = '' ) { return PP_Helper::get_widget_icon( $slug ); } /** * Get widget title * * @param string $slug Module class. * @since 1.4.13.1 */ public function get_widget_keywords( $slug = '' ) { return PP_Helper::get_widget_keywords( $slug ); } /** * Add a placeholder for the widget in the elementor editor * * @access public * @since 1.3.11 * * @return void */ public function render_editor_placeholder( $args = array() ) { if ( ! \Elementor\Plugin::instance()->editor->is_edit_mode() ) { return; } $defaults = [ 'title' => $this->get_title() . ' - ' . __( 'ID', 'powerpack' ) . ' ' . $this->get_id(), 'body' => __( 'This is a placeholder for this widget and is visible only in the editor.', 'powerpack' ), ]; $args = wp_parse_args( $args, $defaults ); $this->add_render_attribute([ 'placeholder' => [ 'class' => 'pp-editor-placeholder', ], 'placeholder-title' => [ 'class' => 'pp-editor-placeholder-title', ], 'placeholder-content' => [ 'class' => 'pp-editor-placeholder-content', ], ]); ?><div <?php echo wp_kses_post( $this->get_render_attribute_string( 'placeholder' ) ); ?>> <h4 <?php echo wp_kses_post( $this->get_render_attribute_string( 'placeholder-title' ) ); ?>> <?php echo wp_kses_post( $args['title'] ); ?> </h4> <div <?php echo wp_kses_post( $this->get_render_attribute_string( 'placeholder-content' ) ); ?>> <?php echo wp_kses_post( $args['body'] ); ?> </div> </div><?php } /** * Get swiper slider settings * * @access public * @since 1.4.13.1 */ public function get_swiper_slider_settings( $settings, $new = true ) { $pagination = ( $new ) ? $settings['pagination'] : $settings['dots']; $effect = ( isset( $settings['carousel_effect'] ) && ( $settings['carousel_effect'] ) ) ? $settings['carousel_effect'] : 'slide'; $slider_options = [ 'direction' => 'horizontal', 'effect' => $effect, 'speed' => ( '' !== $settings['slider_speed']['size'] ) ? $settings['slider_speed']['size'] : 400, 'slidesPerView' => ( '' !== $settings['items']['size'] ) ? absint( $settings['items']['size'] ) : 3, 'spaceBetween' => ( '' !== $settings['margin']['size'] ) ? absint( $settings['margin']['size'] ) : 10, 'grabCursor' => ( 'yes' === $settings['grab_cursor'] ), 'autoHeight' => true, 'loop' => ( 'yes' === $settings['infinite_loop'] ), ]; $autoplay_speed = 999999; if ( 'yes' === $settings['autoplay'] ) { if ( isset( $settings['autoplay_speed']['size'] ) ) { $autoplay_speed = $settings['autoplay_speed']['size']; } elseif ( $settings['autoplay_speed'] ) { $autoplay_speed = $settings['autoplay_speed']; } } $slider_options['autoplay'] = [ 'delay' => $autoplay_speed, 'disableOnInteraction' => ( 'yes' === $settings['pause_on_interaction'] ), ]; if ( 'yes' === $pagination ) { $slider_options['pagination'] = [ 'el' => '.swiper-pagination-' . esc_attr( $this->get_id() ), 'type' => $settings['pagination_type'], 'clickable' => true, ]; } if ( 'yes' === $settings['arrows'] ) { $slider_options['navigation'] = [ 'nextEl' => '.swiper-button-next-' . esc_attr( $this->get_id() ), 'prevEl' => '.swiper-button-prev-' . esc_attr( $this->get_id() ), ]; } $elementor_bp_lg = get_option( 'elementor_viewport_lg' ); $elementor_bp_md = get_option( 'elementor_viewport_md' ); $bp_desktop = ! empty( $elementor_bp_lg ) ? $elementor_bp_lg : 1025; $bp_tablet = ! empty( $elementor_bp_md ) ? $elementor_bp_md : 768; $bp_mobile = 320; $slider_options['breakpoints'] = [ $bp_desktop => [ 'slidesPerView' => ( '' !== $settings['items']['size'] ) ? absint( $settings['items']['size'] ) : 3, 'spaceBetween' => ( '' !== $settings['margin']['size'] ) ? absint( $settings['margin']['size'] ) : 10, ], $bp_tablet => [ 'slidesPerView' => ( '' !== $settings['items_tablet']['size'] ) ? absint( $settings['items_tablet']['size'] ) : 2, 'spaceBetween' => ( '' !== $settings['margin_tablet']['size'] ) ? absint( $settings['margin_tablet']['size'] ) : 10, ], $bp_mobile => [ 'slidesPerView' => ( '' !== $settings['items_mobile']['size'] ) ? absint( $settings['items_mobile']['size'] ) : 1, 'spaceBetween' => ( '' !== $settings['margin_mobile']['size'] ) ? absint( $settings['margin_mobile']['size'] ) : 10, ], ]; return $slider_options; } /** * Get swiper slider settings for _content_template function * * @access public * @since 1.4.13.1 */ public function get_swiper_slider_settings_js() { $elementor_bp_tablet = get_option( 'elementor_viewport_lg' ); $elementor_bp_mobile = get_option( 'elementor_viewport_md' ); $elementor_bp_lg = get_option( 'elementor_viewport_lg' ); $elementor_bp_md = get_option( 'elementor_viewport_md' ); $bp_desktop = ! empty( $elementor_bp_lg ) ? $elementor_bp_lg : 1025; $bp_tablet = ! empty( $elementor_bp_md ) ? $elementor_bp_md : 768; $bp_mobile = 320; ?> <# function get_slider_settings( settings ) { if (typeof settings.effect !== 'undefined') { var $effect = settings.effect; } else { var $effect = 'slide'; } var $items = ( settings.items.size !== '' || settings.items.size !== undefined ) ? settings.items.size : 3, $items_tablet = ( settings.items_tablet.size !== '' || settings.items_tablet.size !== undefined ) ? settings.items_tablet.size : 2, $items_mobile = ( settings.items_mobile.size !== '' || settings.items_mobile.size !== undefined ) ? settings.items_mobile.size : 1, $margin = ( settings.margin.size !== '' || settings.margin.size !== undefined ) ? settings.margin.size : 10, $margin_tablet = ( settings.margin_tablet.size !== '' || settings.margin_tablet.size !== undefined ) ? settings.margin_tablet.size : 10, $margin_mobile = ( settings.margin_mobile.size !== '' || settings.margin_mobile.size !== undefined ) ? settings.margin_mobile.size : 10, $autoplay = ( settings.autoplay == 'yes' && settings.autoplay_speed.size != '' ) ? settings.autoplay_speed.size : 999999; return { direction: "horizontal", speed: ( settings.slider_speed.size !== '' || settings.slider_speed.size !== undefined ) ? settings.slider_speed.size : 400, effect: $effect, slidesPerView: $items, spaceBetween: $margin, grabCursor: ( settings.grab_cursor === 'yes' ) ? true : false, autoHeight: true, loop: ( settings.infinite_loop === 'yes' ), autoplay: { delay: $autoplay, disableOnInteraction: ( settings.disableOnInteraction === 'yes' ), }, pagination: { el: '.swiper-pagination', type: settings.pagination_type, clickable: true, }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, breakpoints: { <?php echo esc_attr( $bp_desktop ); ?>: { slidesPerView: $items, spaceBetween: $margin }, <?php echo esc_attr( $bp_tablet ); ?>: { slidesPerView: $items_tablet, spaceBetween: $margin_tablet }, <?php echo esc_attr( $bp_mobile ); ?>: { slidesPerView: $items_mobile, spaceBetween: $margin_mobile } } }; }; #> <?php } }