name = esc_html__( 'Pricing Table', 'et_builder' ); $this->slug = 'et_pb_pricing_table'; $this->fb_support = true; $this->main_css_element = '%%order_class%%.et_pb_pricing'; $this->type = 'child'; $this->child_title_var = 'title'; $this->whitelisted_fields = array( 'featured', 'title', 'subtitle', 'currency', 'per', 'sum', 'button_url', 'button_text', 'content_new', 'pricing_item_excluded_color', ); $this->fields_defaults = array( 'featured' => array( 'off' ), ); $this->advanced_setting_title_text = esc_html__( 'New Pricing Table', 'et_builder' ); $this->settings_text = esc_html__( 'Pricing Table Settings', 'et_builder' ); $this->main_css_element = '%%order_class%%'; $this->options_toggles = array( 'general' => array( 'toggles' => array( 'main_content' => esc_html__( 'Text', 'et_builder' ), 'link' => esc_html__( 'Link', 'et_builder' ), 'elements' => esc_html__( 'Elements', 'et_builder' ), ), ), 'advanced' => array( 'toggles' => array( 'layout' => esc_html__( 'Layout', 'et_builder' ), 'bullet' => esc_html__( 'Bullet', 'et_builder' ), 'excluded' => esc_html__( 'Excluded Item', 'et_builder' ), ), ), ); $this->advanced_options = array( 'border' => array( 'css' => array( 'main' => array( 'border_radii' => ".et_pb_pricing .et_pb_pricing_table%%order_class%%", 'border_styles' => ".et_pb_pricing .et_pb_pricing_table%%order_class%%", ), ), 'defaults' => array( 'border_radii' => 'on|0px|0px|0px|0px', 'border_styles' => array( 'width' => '1px', 'color' => '#bebebe', 'style' => 'solid', ), ), ), 'fonts' => array( 'header' => array( 'label' => esc_html__( 'Title', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} .et_pb_pricing_heading h2, {$this->main_css_element} .et_pb_pricing_heading h1.et_pb_pricing_title, {$this->main_css_element} .et_pb_pricing_heading h3.et_pb_pricing_title, {$this->main_css_element} .et_pb_pricing_heading h4.et_pb_pricing_title, {$this->main_css_element} .et_pb_pricing_heading h5.et_pb_pricing_title, {$this->main_css_element} .et_pb_pricing_heading h6.et_pb_pricing_title", 'important' => 'all', ), 'line_height' => array( 'range_settings' => array( 'min' => '1', 'max' => '100', 'step' => '1', ), ), 'header_level' => array( 'default' => 'h2', ), ), 'body' => array( 'label' => esc_html__( 'Body', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} .et_pb_pricing li", 'plugin_main' => "{$this->main_css_element} .et_pb_pricing li, {$this->main_css_element} .et_pb_pricing li span, {$this->main_css_element} .et_pb_pricing li a", ), 'line_height' => array( 'range_settings' => array( 'min' => '1', 'max' => '100', 'step' => '1', ), ), ), 'subheader' => array( 'label' => esc_html__( 'Subheader', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} .et_pb_best_value", ), 'line_height' => array( 'range_settings' => array( 'min' => '1', 'max' => '100', 'step' => '1', ), ), ), 'currency_frequency' => array( 'label' => esc_html__( 'Currency & Frequency', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} .et_pb_dollar_sign, {$this->main_css_element} .et_pb_frequency", ), 'hide_text_align' => true, ), 'price' => array( 'label' => esc_html__( 'Price', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} .et_pb_sum", 'text_align' => "{$this->main_css_element} .et_pb_pricing_content_top", ), 'line_height' => array( 'range_settings' => array( 'min' => '1', 'max' => '100', 'step' => '1', ), ), ), ), 'background' => array( 'css' => array( 'main' => "{$this->main_css_element}.et_pb_pricing_table", ), 'settings' => array( 'color' => 'alpha', ), ), 'button' => array( 'button' => array( 'label' => esc_html__( 'Button', 'et_builder' ), 'css' => array( 'main' => ".et_pb_pricing {$this->main_css_element} .et_pb_button", 'plugin_main' => ".et_pb_pricing {$this->main_css_element} .et_pb_pricing_table_button.et_pb_button", 'alignment' => ".et_pb_pricing {$this->main_css_element} .et_pb_button_wrapper" ), 'use_alignment' => true, ), ), 'custom_margin_padding' => array( 'use_margin' => false, 'css' => array( 'important' => 'all', // Need to overwrite pricing table's styling 'main' => '.et_pb_pricing %%order_class%% .et_pb_pricing_heading, .et_pb_pricing %%order_class%% .et_pb_pricing_content_top, .et_pb_pricing %%order_class%% .et_pb_pricing_content', 'padding-right' => '%%order_class%% .et_pb_button_wrapper', 'padding-bottom' => '.et_pb_pricing %%order_class%%', 'padding-left' => '%%order_class%% .et_pb_button_wrapper', ), ), 'text' => array( 'css' => array( 'text_orientation' => '%%order_class%%.et_pb_pricing_table, %%order_class%% .et_pb_pricing_content', 'text_shadow' => '%%order_class%% .et_pb_pricing_heading, %%order_class%% .et_pb_pricing_content_top, %%order_class%% .et_pb_pricing_content', ), ), 'filters' => array(), ); $this->custom_css_options = array( 'pricing_heading' => array( 'label' => esc_html__( 'Pricing Heading', 'et_builder' ), 'selector' => '.et_pb_pricing_heading', ), 'pricing_title' => array( 'label' => esc_html__( 'Pricing Title', 'et_builder' ), 'selector' => '.et_pb_pricing_heading h2', ), 'pricing_subtitle' => array( 'label' => esc_html__( 'Pricing Subtitle', 'et_builder' ), 'selector' => '.et_pb_pricing_heading .et_pb_best_value', ), 'pricing_top' => array( 'label' => esc_html__( 'Pricing Top', 'et_builder' ), 'selector' => '.et_pb_pricing_content_top', ), 'price' => array( 'label' => esc_html__( 'Price', 'et_builder' ), 'selector' => '.et_pb_et_price', ), 'currency' => array( 'label' => esc_html__( 'Currency', 'et_builder' ), 'selector' => '.et_pb_dollar_sign', ), 'frequency' => array( 'label' => esc_html__( 'Frequency', 'et_builder' ), 'selector' => '.et_pb_frequency', ), 'pricing_content' => array( 'label' => esc_html__( 'Pricing Content', 'et_builder' ), 'selector' => '.et_pb_pricing_content', ), 'pricing_item' => array( 'label' => esc_html__( 'Pricing Item', 'et_builder' ), 'selector' => 'ul.et_pb_pricing li', ), 'pricing_item_excluded' => array( 'label' => esc_html__( 'Excluded Item', 'et_builder' ), 'selector' => 'ul.et_pb_pricing li.et_pb_not_available', ), 'pricing_button' => array( 'label' => esc_html__( 'Pricing Button', 'et_builder' ), 'selector' => '.et_pb_pricing_table_button', ), ); } function get_fields() { $fields = array( 'featured' => array( 'label' => esc_html__( 'Make This Table Featured', 'et_builder' ), 'type' => 'yes_no_button', 'option_category' => 'basic_option', 'options' => array( 'off' => esc_html__( 'No', 'et_builder' ), 'on' => esc_html__( 'Yes', 'et_builder' ), ), 'tab_slug' => 'advanced', 'toggle_slug' => 'layout', 'description' => esc_html__( 'Featuring a table will make it stand out from the rest.', 'et_builder' ), ), 'title' => array( 'label' => esc_html__( 'Title', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'description' => esc_html__( 'Define a title for the pricing table.', 'et_builder' ), 'toggle_slug' => 'main_content', ), 'subtitle' => array( 'label' => esc_html__( 'Subtitle', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'description' => esc_html__( 'Define a sub title for the table if desired.', 'et_builder' ), 'toggle_slug' => 'main_content', ), 'currency' => array( 'label' => esc_html__( 'Currency', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'description' => esc_html__( 'Input your desired currency symbol here.', 'et_builder' ), 'toggle_slug' => 'main_content', ), 'per' => array( 'label' => esc_html__( 'Per', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'description' => esc_html__( 'If your pricing is subscription based, input the subscription payment cycle here.', 'et_builder' ), 'toggle_slug' => 'main_content', ), 'sum' => array( 'label' => esc_html__( 'Price', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'description' => esc_html__( 'Input the value of the product here.', 'et_builder' ), 'toggle_slug' => 'main_content', ), 'button_url' => array( 'label' => esc_html__( 'Button URL', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'description' => esc_html__( 'Input the destination URL for the signup button.', 'et_builder' ), 'toggle_slug' => 'link', ), 'button_text' => array( 'label' => esc_html__( 'Button Text', 'et_builder' ), 'type' => 'text', 'option_category' => 'basic_option', 'description' => esc_html__( 'Adjust the text used from the signup button.', 'et_builder' ), 'toggle_slug' => 'main_content', ), 'content_new' => array( 'label' => esc_html__( 'Content', 'et_builder' ), 'type' => 'tiny_mce', 'option_category' => 'basic_option', 'description' => sprintf( '%1$s
+ %2$s
- %3$s', esc_html__( 'Input a list of features that are/are not included in the product. Separate items on a new line, and begin with either a + or - symbol: ', 'et_builder' ), esc_html__( 'Included option', 'et_builder' ), esc_html__( 'Excluded option', 'et_builder' ) ), 'toggle_slug' => 'main_content', ), 'pricing_item_excluded_color' => array( 'label' => esc_html__( 'Excluded Item Color', 'et_builder' ), 'type' => 'color-alpha', 'custom_color' => true, 'tab_slug' => 'advanced', 'toggle_slug' => 'excluded', 'priority' => 22, ), ); return $fields; } function shortcode_callback( $atts, $content = null, $function_name ) { global $et_pb_pricing_tables_num, $et_pb_pricing_tables_icon, $et_pb_pricing_tables_button_rel, $et_pb_pricing_tables_header_level; $featured = $this->shortcode_atts['featured']; $title = $this->shortcode_atts['title']; $subtitle = $this->shortcode_atts['subtitle']; $currency = $this->shortcode_atts['currency']; $per = $this->shortcode_atts['per']; $sum = $this->shortcode_atts['sum']; $button_url = $this->shortcode_atts['button_url']; $button_rel = $this->shortcode_atts['button_rel']; $button_text = $this->shortcode_atts['button_text']; $button_custom = $this->shortcode_atts['custom_button']; $custom_icon = $this->shortcode_atts['button_icon']; $header_level = $this->shortcode_atts['header_level']; $pricing_item_excluded_color = $this->shortcode_atts['pricing_item_excluded_color']; // Overwrite button rel with pricin tables' button_rel if needed if ( in_array( $button_rel, array( '', 'off|off|off|off|off' ) ) && '' !== $et_pb_pricing_tables_button_rel ) { $button_rel = $et_pb_pricing_tables_button_rel; } $et_pb_pricing_tables_num++; $module_class = ET_Builder_Element::add_module_order_class( '', $function_name ); $custom_table_icon = 'on' === $button_custom && '' !== $custom_icon ? $custom_icon : $et_pb_pricing_tables_icon; if ( '' !== $pricing_item_excluded_color ) { $pricing_item_excluded_color_selector = et_is_builder_plugin_active() ? '%%order_class%% ul.et_pb_pricing li.et_pb_not_available, %%order_class%% ul.et_pb_pricing li.et_pb_not_available span, %%order_class%% ul.et_pb_pricing li.et_pb_not_available a' : '%%order_class%% ul.et_pb_pricing li.et_pb_not_available'; ET_Builder_Element::set_style( $function_name, array( 'selector' => $pricing_item_excluded_color_selector, 'declaration' => sprintf( 'color: %1$s !important;', esc_html( $pricing_item_excluded_color ) ), ) ); } $button_url = trim( $button_url ); if ( '' !== $button_url && '' !== $button_text ) { $button_text = sprintf( '
%2$s
', esc_url( $button_url ), esc_html( $button_text ), '' !== $custom_table_icon ? sprintf( ' data-icon="%1$s"', esc_attr( et_pb_process_font_icon( $custom_table_icon ) ) ) : '', '' !== $custom_table_icon ? ' et_pb_custom_button_icon' : '', $this->get_rel_attributes( $button_rel ) ); } $video_background = $this->video_background(); $parallax_image_background = $this->get_parallax_image_background(); // inherit header level from parent settings $header_level = '' === $header_level && '' !== $et_pb_pricing_tables_header_level ? $et_pb_pricing_tables_header_level : $header_level; $output = sprintf( '
%13$s %11$s
%2$s %3$s
%6$s%7$s%8$s
%5$s
', ( 'off' !== $featured ? ' et_pb_featured_table' : '' ), ( '' !== $title ? sprintf( '<%2$s class="et_pb_pricing_title">%1$s', esc_html( $title ), et_pb_process_header_level( $header_level, 'h2' ) ) : '' ), ( '' !== $subtitle ? sprintf( '%1$s', esc_html( $subtitle ) ) : '' ), do_shortcode( et_pb_fix_shortcodes( et_pb_extract_items( $content ) ) ), $button_text, ( '' !== $currency ? sprintf( '%1$s', esc_html( $currency ) ) : '' ), ( '' !== $sum ? sprintf( '%1$s', esc_html( $sum ) ) : '' ), ( '' !== $per ? sprintf( '/%1$s', esc_html( $per ) ) : '' ), 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 ); return $output; } function process_box_shadow( $function_name ) { $boxShadow = ET_Builder_Module_Fields_Factory::get( 'BoxShadow' ); if ( isset( $this->shortcode_atts['custom_button'] ) && $this->shortcode_atts['custom_button'] === 'on' ) { self::set_style( $function_name, array( 'selector' => '%%order_class%% .et_pb_button.et_pb_pricing_table_button', 'declaration' => $boxShadow->get_value( $this->shortcode_atts, array( 'suffix' => '_button' ) ) ) ); } self::set_style( $function_name, $boxShadow->get_style( '.' . self::get_module_order_class( $function_name ), $this->shortcode_atts ) ); } } new ET_Builder_Module_Pricing_Tables_Item;