name = esc_html__( 'DeveloperSD Logo Slider', 'developersd-logo-slider' ); $this->icon = 'C'; $this->main_css_element = '%%order_class%%'; } /** * Register the module's Divi settings fields. * * @return array */ public function get_fields() { $options = array( '' => esc_html__( '— Select a slider —', 'developersd-logo-slider' ) ); foreach ( DeveloperSD_LS_Slider::get_all() as $post ) { $options[ $post->ID ] = $post->post_title; } return array( 'slider_id' => array( 'label' => esc_html__( 'Select Slider', 'developersd-logo-slider' ), 'type' => 'select', 'options' => $options, 'default' => '', 'toggle_slug' => 'main_content', 'description' => esc_html__( 'Choose a DeveloperSD Logo Slider to display.', 'developersd-logo-slider' ), ), 'desktop_slides' => array( 'label' => esc_html__( 'Desktop Slides', 'developersd-logo-slider' ), 'type' => 'text', 'option_category' => 'basic_option', 'toggle_slug' => 'settings', 'description' => esc_html__( 'Leave blank to use the slider\'s own setting.', 'developersd-logo-slider' ), ), 'tablet_slides' => array( 'label' => esc_html__( 'Tablet Slides', 'developersd-logo-slider' ), 'type' => 'text', 'option_category' => 'basic_option', 'toggle_slug' => 'settings', ), 'mobile_slides' => array( 'label' => esc_html__( 'Mobile Slides', 'developersd-logo-slider' ), 'type' => 'text', 'option_category' => 'basic_option', 'toggle_slug' => 'settings', ), 'gap' => array( 'label' => esc_html__( 'Gap (px)', 'developersd-logo-slider' ), 'type' => 'text', 'option_category' => 'basic_option', 'toggle_slug' => 'settings', ), 'navigation' => array( 'label' => esc_html__( 'Navigation Arrows', 'developersd-logo-slider' ), 'type' => 'select', 'options' => array( 'default' => esc_html__( 'Use Slider Setting', 'developersd-logo-slider' ), 'on' => esc_html__( 'Show', 'developersd-logo-slider' ), 'off' => esc_html__( 'Hide', 'developersd-logo-slider' ), ), 'default' => 'default', 'toggle_slug' => 'settings', ), 'pagination' => array( 'label' => esc_html__( 'Pagination Dots', 'developersd-logo-slider' ), 'type' => 'select', 'options' => array( 'default' => esc_html__( 'Use Slider Setting', 'developersd-logo-slider' ), 'on' => esc_html__( 'Show', 'developersd-logo-slider' ), 'off' => esc_html__( 'Hide', 'developersd-logo-slider' ), ), 'default' => 'default', 'toggle_slug' => 'settings', ), 'autoplay' => array( 'label' => esc_html__( 'Autoplay', 'developersd-logo-slider' ), 'type' => 'select', 'options' => array( 'default' => esc_html__( 'Use Slider Setting', 'developersd-logo-slider' ), 'on' => esc_html__( 'Yes', 'developersd-logo-slider' ), 'off' => esc_html__( 'No', 'developersd-logo-slider' ), ), 'default' => 'default', 'toggle_slug' => 'settings', ), ); } /** * Render the module output. * * @param array $unprocessed_props Raw props. * @param string $content Inner content (unused). * @param string $render_slug Module slug. * @return string */ public function render( $unprocessed_props, $content, $render_slug ) { $slider_id = isset( $this->props['slider_id'] ) ? absint( $this->props['slider_id'] ) : 0; if ( ! $slider_id ) { return $this->builder_notice( __( 'Select a Logo Slider in the module settings.', 'developersd-logo-slider' ) ); } $overrides = array(); foreach ( array( 'desktop_slides' => 'slides_desktop', 'tablet_slides' => 'slides_tablet', 'mobile_slides' => 'slides_mobile', 'gap' => 'gap' ) as $prop => $setting_key ) { if ( ! empty( $this->props[ $prop ] ) ) { $overrides[ $setting_key ] = absint( $this->props[ $prop ] ); } } foreach ( array( 'navigation' => 'nav_show', 'pagination' => 'dots_show', 'autoplay' => 'autoplay' ) as $prop => $setting_key ) { if ( isset( $this->props[ $prop ] ) && 'default' !== $this->props[ $prop ] ) { $overrides[ $setting_key ] = 'on' === $this->props[ $prop ]; } } $output = DeveloperSD_LS_Frontend::render( $slider_id, $overrides ); if ( '' === $output ) { $slider = new DeveloperSD_LS_Slider( $slider_id ); $message = $slider->exists() && ! $slider->is_active() ? __( 'This Logo Slider is inactive. Activate it to display it.', 'developersd-logo-slider' ) : __( 'This Logo Slider has no usable logos or is unavailable.', 'developersd-logo-slider' ); return $this->builder_notice( $message ); } return DeveloperSD_LS_Frontend::escape_slider_html( $output ); } /** * Return a notice only while Divi is rendering the builder preview. * Frontend visitors should never see configuration notices. * * @param string $message Notice text. * @return string */ protected function builder_notice( $message ) { $is_builder = ( function_exists( 'et_fb_is_enabled' ) && et_fb_is_enabled() ) || ( function_exists( 'et_core_is_fb_enabled' ) && et_core_is_fb_enabled() ); if ( ! $is_builder ) { return ''; } return '
' . esc_html( $message ) . '
'; } }