name = esc_html__( 'Sidebar', 'et_builder' ); $this->slug = 'et_pb_sidebar'; $this->fb_support = true; $this->whitelisted_fields = array( 'orientation', 'area', 'background_layout', 'admin_label', 'module_id', 'module_class', 'show_border', ); $this->fields_defaults = array( 'orientation' => array( 'left' ), 'background_layout' => array( 'light' ), 'show_border' => array( 'on' ), ); $this->main_css_element = '%%order_class%%.et_pb_widget_area'; $this->options_toggles = array( 'general' => array( 'toggles' => array( 'main_content' => esc_html__( 'Content', 'et_builder' ), ), ), 'advanced' => array( 'toggles' => array( 'layout' => esc_html__( 'Layout', 'et_builder' ), 'text' => array( 'title' => esc_html__( 'Text', 'et_builder' ), 'priority' => 49, ), ), ), ); $this->advanced_options = array( 'fonts' => array( 'header' => array( 'label' => esc_html__( 'Title', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} h3:first-of-type, {$this->main_css_element} h4:first-of-type, {$this->main_css_element} h5:first-of-type, {$this->main_css_element} h6:first-of-type, {$this->main_css_element} h2:first-of-type, {$this->main_css_element} h1:first-of-type, {$this->main_css_element} .widget-title, {$this->main_css_element} .widgettitle", ), ), 'body' => array( 'label' => esc_html__( 'Body', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element}, {$this->main_css_element} li, {$this->main_css_element} li:before, {$this->main_css_element} a", 'line_height' => "{$this->main_css_element} p", ), ), ), 'background' => array(), 'custom_margin_padding' => array( 'css' => array( 'main' => '%%order_class%%', 'important' => array( 'custom_margin' ), // needed to overwrite last module margin-bottom styling ), ), 'max_width' => array(), 'text' => array(), 'filters' => array(), ); $this->custom_css_options = array( 'widget' => array( 'label' => esc_html__( 'Widget', 'et_builder' ), 'selector' => '.et_pb_widget', ), 'title' => array( 'label' => esc_html__( 'Title', 'et_builder' ), 'selector' => 'h4.widgettitle', ), ); } function get_fields() { $fields = array( 'orientation' => array( 'label' => esc_html__( 'Orientation', 'et_builder' ), 'type' => 'select', 'option_category' => 'layout', 'options' => array( 'left' => esc_html__( 'Left', 'et_builder' ), 'right' => esc_html__( 'Right', 'et_builder' ), ), 'tab_slug' => 'advanced', 'toggle_slug' => 'layout', 'description' => esc_html__( 'Choose which side of the page your sidebar will be on. This setting controls text orientation and border position.', 'et_builder' ), ), 'area' => array( 'label' => esc_html__( 'Widget Area', 'et_builder' ), 'renderer' => 'et_builder_get_widget_areas', 'option_category' => 'basic_option', 'description' => esc_html__( 'Select a widget-area that you would like to display. You can create new widget areas within the Appearances > Widgets tab.', 'et_builder' ), 'toggle_slug' => 'main_content', 'computed_affects' => array( '__sidebars', ), ), 'background_layout' => array( 'label' => esc_html__( 'Text Color', 'et_builder' ), 'type' => 'select', 'option_category' => 'color_option', 'options' => array( 'light' => esc_html__( 'Dark', 'et_builder' ), 'dark' => esc_html__( 'Light', 'et_builder' ), ), 'tab_slug' => 'advanced', 'toggle_slug' => 'text', 'description' => esc_html__( 'Here you can choose whether your text should be light or dark. If you are working with a dark background, then your text should be light. If your background is light, then your text should be set to dark.', 'et_builder' ), ), 'show_border' => array( 'label' => esc_html__( 'Show Border Separator', 'et_builder' ), 'type' => 'yes_no_button', 'option_category' => 'layout', 'options' => array( 'on' => esc_html__( 'Yes', 'et_builder' ), 'off' => esc_html__( 'No', 'et_builder' ), ), 'tab_slug' => 'advanced', 'toggle_slug' => 'layout', ), 'disabled_on' => array( 'label' => esc_html__( 'Disable on', 'et_builder' ), 'type' => 'multiple_checkboxes', 'options' => array( 'phone' => esc_html__( 'Phone', 'et_builder' ), 'tablet' => esc_html__( 'Tablet', 'et_builder' ), 'desktop' => esc_html__( 'Desktop', 'et_builder' ), ), 'additional_att' => 'disable_on', 'option_category' => 'configuration', 'description' => esc_html__( 'This will disable the module on selected devices', 'et_builder' ), 'tab_slug' => 'custom_css', 'toggle_slug' => 'visibility', ), 'admin_label' => array( 'label' => esc_html__( 'Admin Label', 'et_builder' ), 'type' => 'text', 'description' => esc_html__( 'This will change the label of the module in the builder for easy identification.', 'et_builder' ), 'toggle_slug' => 'admin_label', ), 'module_id' => array( 'label' => esc_html__( 'CSS ID', 'et_builder' ), 'type' => 'text', 'option_category' => 'configuration', 'tab_slug' => 'custom_css', 'toggle_slug' => 'classes', 'option_class' => 'et_pb_custom_css_regular', ), 'module_class' => array( 'label' => esc_html__( 'CSS Class', 'et_builder' ), 'type' => 'text', 'option_category' => 'configuration', 'tab_slug' => 'custom_css', 'toggle_slug' => 'classes', 'option_class' => 'et_pb_custom_css_regular', ), '__sidebars' => array( 'type' => 'computed', 'computed_callback' => array( 'ET_Builder_Module_Sidebar', 'get_sidebar' ), 'computed_depends_on' => array( 'area', ), ), ); return $fields; } static function get_default_area() { global $wp_registered_sidebars; if ( ! empty( $wp_registered_sidebars ) ) { // Pluck sidebar ids $sidebar_ids = wp_list_pluck( $wp_registered_sidebars, 'id' ); // Return first sidebar id return array_shift( $sidebar_ids ); } return ""; } /** * Get sidebar data for sidebar module * * @param string comma separated gallery ID * @param string on|off to determine grid / slider layout * @param array passed current page params * * @return string JSON encoded array of attachments data */ static function get_sidebar( $args = array(), $conditional_tags = array(), $current_page = array() ) { $defaults = array( 'area' => '', ); $args = wp_parse_args( $args, $defaults ); // Get any available widget areas so it isn't empty if ( '' === $args['area'] ) { $args['area'] = self::get_default_area(); } // Outputs sidebar $widgets = ''; ob_start(); if ( is_active_sidebar( $args['area'] ) ) { dynamic_sidebar( $args['area'] ); } $widgets = ob_get_contents(); ob_end_clean(); return $widgets; } function shortcode_callback( $atts, $content = null, $function_name ) { $module_id = $this->shortcode_atts['module_id']; $module_class = $this->shortcode_atts['module_class']; $orientation = $this->shortcode_atts['orientation']; $area = "" === $this->shortcode_atts['area'] ? self::get_default_area() : $this->shortcode_atts['area']; $background_layout = $this->shortcode_atts['background_layout']; $show_border = $this->shortcode_atts['show_border']; $module_class = ET_Builder_Element::add_module_order_class( $module_class, $function_name ); $video_background = $this->video_background(); $parallax_image_background = $this->get_parallax_image_background(); $widgets = ''; ob_start(); if ( 'on' !== $show_border ) { $module_class = rtrim( $module_class ) . ' et_pb_sidebar_no_border'; } if ( is_active_sidebar( $area ) ) dynamic_sidebar( $area ); $widgets = ob_get_contents(); ob_end_clean(); $class = " et_pb_module et_pb_bg_layout_{$background_layout}"; $output = sprintf( ' %9$s %7$s %1$s ', $widgets, esc_attr( "et_pb_widget_area_{$orientation}" ), esc_attr( $class ), ( '' !== $module_id ? sprintf( ' id="%1$s"', esc_attr( $module_id ) ) : '' ), ( '' !== $module_class ? sprintf( ' %1$s', esc_attr( $module_class ) ) : '' ), '' !== $video_background ? ' et_pb_section_video et_pb_preload' : '', $video_background, '' !== $parallax_image_background ? ' et_pb_section_parallax' : '', $parallax_image_background, $this->get_text_orientation_classname() ); return $output; } } new ET_Builder_Module_Sidebar;