name = esc_html__( 'Circle Counter', 'et_builder' ); $this->slug = 'et_pb_circle_counter'; $this->fb_support = true; $this->whitelisted_fields = array( 'title', 'number', 'percent_sign', 'background_layout', 'bar_bg_color', 'admin_label', 'module_id', 'module_class', 'circle_color', 'circle_color_alpha', ); $this->fields_defaults = array( 'number' => array( '0' ), 'percent_sign' => array( 'on' ), 'background_layout' => array( 'light' ), 'bar_bg_color' => array( et_builder_accent_color(), 'add_default_setting' ), 'text_orientation' => array( 'center' ), ); $this->main_css_element = '%%order_class%%.et_pb_circle_counter'; $this->options_toggles = array( 'general' => array( 'toggles' => array( 'main_content' => esc_html__( 'Text', 'et_builder' ), 'elements' => esc_html__( 'Elements', 'et_builder' ), 'background' => esc_html__( 'Background', 'et_builder' ), ), ), 'advanced' => array( 'toggles' => array( 'circle' => esc_html__( 'Circle', 'et_builder' ), 'text' => array( 'title' => esc_html__( 'Text', 'et_builder' ), 'priority' => 49, ), ), ), ); $this->advanced_options = array( 'fonts' => array( 'title' => array( 'label' => esc_html__( 'Title', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} h3, {$this->main_css_element} h1.et_pb_module_header, {$this->main_css_element} h2.et_pb_module_header, {$this->main_css_element} h4.et_pb_module_header, {$this->main_css_element} h5.et_pb_module_header, {$this->main_css_element} h6.et_pb_module_header", 'important' => 'plugin_only', ), 'header_level' => array( 'default' => 'h3', ), ), 'number' => array( 'label' => esc_html__( 'Number', 'et_builder' ), 'hide_line_height' => true, 'css' => array( 'main' => "{$this->main_css_element} .percent p", ), ), ), 'background' => array(), 'custom_margin_padding' => array( 'css' => array( 'important' => array( 'custom_margin' ), ), ), 'max_width' => array( 'options' => array( 'max_width' => array( 'default' => '225px', 'range_settings' => array( 'min' => '0', 'max' => '450', 'step' => '1', ), ), 'module_alignment' => array( 'depends_show_if_not' => array( '', '225px', ), ), ), ), 'text' => array(), 'filters' => array( 'css' => array( 'main' => '%%order_class%%', ), ), ); $this->custom_css_options = array( 'percent' => array( 'label' => esc_html__( 'Percent Container', 'et_builder' ), 'selector' => '.percent', ), 'circle_counter_title' => array( 'label' => esc_html__( 'Circle Counter Title', 'et_builder' ), 'selector' => 'h3', ), 'percent_text' => array( 'label' => esc_html__( 'Percent Text', 'et_builder' ), 'selector' => '.percent p', ), ); } function get_fields() { $fields = array( 'title' => array( 'label' => esc_html__( 'Title', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'description' => esc_html__( 'Input a title for the circle counter.', 'et_builder' ), 'toggle_slug' => 'main_content', ), 'number' => array( 'label' => esc_html__( 'Number', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'number_validation' => true, 'value_type' => 'int', 'value_min' => 0, 'value_max' => 100, 'description' => et_get_safe_localization( __( "Define a number for the circle counter. (Don't include the percentage sign, use the option below.). Note: You can use only natural numbers from 0 to 100", 'et_builder' ) ), 'toggle_slug' => 'main_content', ), 'percent_sign' => array( 'label' => esc_html__( 'Percent Sign', 'et_builder' ), 'type' => 'yes_no_button', 'option_category' => 'configuration', 'options' => array( 'on' => esc_html__( 'On', 'et_builder' ), 'off' => esc_html__( 'Off', 'et_builder' ), ), 'toggle_slug' => 'elements', 'description' => esc_html__( 'Here you can choose whether the percent sign should be added after the number set above.', 'et_builder' ), ), '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' ), ), 'bar_bg_color' => array( 'label' => esc_html__( 'Bar Background Color', 'et_builder' ), 'type' => 'color-alpha', 'tab_slug' => 'advanced', 'toggle_slug' => 'circle', 'description' => esc_html__( 'This will change the fill color for the bar.', 'et_builder' ), ), 'circle_color' => array( 'label' => esc_html__( 'Circle Color', 'et_builder' ), 'type' => 'color-alpha', 'custom_color' => true, 'tab_slug' => 'advanced', 'toggle_slug' => 'circle', ), 'circle_color_alpha' => array( 'label' => esc_html__( 'Circle Color Opacity', 'et_builder' ), 'type' => 'range', 'option_category' => 'configuration', 'range_settings' => array( 'min' => '0.1', 'max' => '1.0', 'step' => '0.05', ), 'tab_slug' => 'advanced', 'toggle_slug' => 'circle', 'validate_unit' => false, ), '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', ), ); return $fields; } function shortcode_callback( $atts, $content = null, $function_name ) { wp_enqueue_script( 'easypiechart' ); $number = $this->shortcode_atts['number']; $percent_sign = $this->shortcode_atts['percent_sign']; $title = $this->shortcode_atts['title']; $module_id = $this->shortcode_atts['module_id']; $module_class = $this->shortcode_atts['module_class']; $background_layout = $this->shortcode_atts['background_layout']; $bar_bg_color = $this->shortcode_atts['bar_bg_color']; $circle_color = $this->shortcode_atts['circle_color']; $circle_color_alpha = $this->shortcode_atts['circle_color_alpha']; $custom_padding = $this->shortcode_atts['custom_padding']; $custom_padding_tablet = $this->shortcode_atts['custom_padding_tablet']; $custom_padding_phone = $this->shortcode_atts['custom_padding_phone']; $header_level = $this->shortcode_atts['title_level']; if ( '' !== $custom_padding ) { ET_Builder_Element::set_style( $function_name, array( 'selector' => '%%order_class%% canvas', 'declaration' => sprintf( 'top: %1$s; left: %2$s;', esc_attr( et_pb_get_spacing( $custom_padding, 'top' ) ), esc_attr( et_pb_get_spacing( $custom_padding, 'left' ) ) ), ) ); } if ( '' !== $custom_padding_tablet ) { ET_Builder_Element::set_style( $function_name, array( 'selector' => '%%order_class%% canvas', 'declaration' => sprintf( 'top: %1$s; left: %2$s;', esc_attr( et_pb_get_spacing( $custom_padding_tablet, 'top' ) ), esc_attr( et_pb_get_spacing( $custom_padding_tablet, 'left' ) ) ), 'media_query' => ET_Builder_Element::get_media_query( 'max_width_980' ), ) ); } if ( '' !== $custom_padding_phone ) { ET_Builder_Element::set_style( $function_name, array( 'selector' => '%%order_class%% canvas', 'declaration' => sprintf( 'top: %1$s; left: %2$s;', esc_attr( et_pb_get_spacing( $custom_padding_phone, 'top' ) ), esc_attr( et_pb_get_spacing( $custom_padding_phone, 'left' ) ) ), 'media_query' => ET_Builder_Element::get_media_query( 'max_width_767' ), ) ); } $module_class = ET_Builder_Element::add_module_order_class( $module_class, $function_name ); $number = str_ireplace( '%', '', $number ); $video_background = $this->video_background(); $parallax_image_background = $this->get_parallax_image_background(); $class = " et_pb_module et_pb_bg_layout_{$background_layout}"; $circle_color_data = '' !== $circle_color ? sprintf( ' data-color="%1$s"', esc_attr( $circle_color ) ) : ''; $circle_color_alpha_data = '' !== $circle_color_alpha ? sprintf( ' data-alpha="%1$s"', esc_attr( $circle_color_alpha ) ) : ''; $output = sprintf( ' %13$s %11$s

%6$s

%7$s ', ( '' !== $module_id ? sprintf( ' id="%1$s"', esc_attr( $module_id ) ) : '' ), esc_attr( $class ), ( '' !== $module_class ? sprintf( ' %1$s', esc_attr( $module_class ) ) : '' ), esc_attr( $number ), esc_attr( $bar_bg_color ), ( 'on' == $percent_sign ? '%' : ''), ( '' !== $title ? sprintf( '<%1$s class="et_pb_module_header">%2$s', et_pb_process_header_level( $header_level, 'h3' ), esc_html( $title ) ) : '' ), $circle_color_data, $circle_color_alpha_data, '' !== $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(), '' !== $title ? ' et_pb_with_title' : '' ); return $output; } } new ET_Builder_Module_Circle_Counter;