File Editor
Directories:
.. (Back)
field
helpers
settings
type
woocommerce
Files:
Accordion.php
AccordionItem.php
Audio.php
BarCounters.php
BarCountersItem.php
Blog.php
Blurb.php
Button.php
CircleCounter.php
Code.php
Comments.php
ContactForm.php
ContactFormItem.php
CountdownTimer.php
Cta.php
Divider.php
FilterablePortfolio.php
FullwidthCode.php
FullwidthHeader.php
FullwidthImage.php
FullwidthMap.php
FullwidthMenu.php
FullwidthPortfolio.php
FullwidthPostContent.php
FullwidthPostSlider.php
FullwidthPostTitle.php
FullwidthSlider.php
Gallery.php
Icon.php
Image.php
Login.php
Map.php
MapItem.php
Menu.php
NumberCounter.php
Portfolio.php
PostContent.php
PostSlider.php
PostTitle.php
PostsNavigation.php
PricingTables.php
PricingTablesItem.php
Search.php
Sidebar.php
Signup.php
SignupItem.php
Slider.php
SliderItem.php
SocialMediaFollow.php
SocialMediaFollowItem.php
Tabs.php
TabsItem.php
TeamMember.php
Testimonial.php
Text.php
Toggle.php
Video.php
VideoSlider.php
VideoSliderItem.php
Create New File
Create
Edit File: Comments.php
<?php class ET_Builder_Module_Comments extends ET_Builder_Module { function init() { $this->name = esc_html__( 'Comments', 'et_builder' ); $this->plural = esc_html__( 'Comments', 'et_builder' ); $this->slug = 'et_pb_comments'; $this->vb_support = 'on'; $this->main_css_element = '%%order_class%%'; $this->settings_modal_toggles = array( 'general' => array( 'toggles' => array( 'elements' => et_builder_i18n( 'Elements' ), ), ), 'advanced' => array( 'toggles' => array( 'image' => array( 'title' => et_builder_i18n( 'Image' ), 'priority' => 30, ), 'text' => array( 'title' => et_builder_i18n( 'Text' ), 'priority' => 49, ), ), ), ); $this->advanced_fields = array( 'box_shadow' => array( 'default' => array(), 'image' => array( 'label' => esc_html__( 'Image Box Shadow', 'et_builder' ), 'option_category' => 'layout', 'tab_slug' => 'advanced', 'toggle_slug' => 'image', 'css' => array( 'main' => "{$this->main_css_element} .commentlist img.avatar", ), ), ), 'borders' => array( 'default' => array( 'css' => array( 'main' => array( 'border_radii' => "{$this->main_css_element}", 'border_styles' => "{$this->main_css_element}", ), 'important' => 'all', ), ), 'image' => array( 'css' => array( 'main' => array( 'border_radii' => '%%order_class%%.et_pb_comments_module .commentlist li img.avatar', 'border_styles' => '%%order_class%%.et_pb_comments_module .commentlist li img.avatar', ), ), 'label_prefix' => et_builder_i18n( 'Image' ), 'tab_slug' => 'advanced', 'toggle_slug' => 'image', ), ), 'margin_padding' => array( 'css' => array( 'important' => 'all', ), ), 'fonts' => array( 'header' => array( 'label' => esc_html__( 'Comment Count', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} h1.page_title, {$this->main_css_element} h2.page_title, {$this->main_css_element} h3.page_title, {$this->main_css_element} h4.page_title, {$this->main_css_element} h5.page_title, {$this->main_css_element} h6.page_title", ), 'header_level' => array( 'default' => 'h1', ), ), 'title' => array( 'label' => esc_html__( 'Form Title', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} .comment-reply-title", ), 'line_height' => array( 'default' => '1em', ), 'font_size' => array( 'default' => '22px', ), 'letter_spacing' => array( 'default' => '0px', ), 'header_level' => array( 'default' => 'h3', ), ), 'meta' => array( 'label' => esc_html__( 'Meta', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} .comment_postinfo span", 'important' => 'all', 'text_align' => "{$this->main_css_element} .comment_postinfo", ), 'line_height' => array( 'default' => '1em', ), 'font_size' => array( 'default' => '14px', ), 'letter_spacing' => array( 'default' => '0px', ), ), 'body' => array( 'label' => esc_html__( 'Comment', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} .comment-content p", ), 'line_height' => array( 'default' => '1em', ), 'font_size' => array( 'default' => '14px', ), 'letter_spacing' => array( 'default' => '0px', ), ), ), 'button' => array( 'button' => array( 'label' => et_builder_i18n( 'Button' ), 'css' => array( 'main' => "{$this->main_css_element}.et_pb_comments_module .et_pb_button", 'limited_main' => "{$this->main_css_element}.et_pb_comments_module .et_pb_button", 'alignment' => "{$this->main_css_element} .form-submit", ), 'no_rel_attr' => true, 'use_alignment' => true, 'box_shadow' => array( 'css' => array( 'main' => "{$this->main_css_element} .et_pb_button", ), ), 'margin_padding' => array( 'css' => array( 'important' => 'all', ), ), ), ), 'text' => array( 'use_background_layout' => true, 'css' => array( 'main' => '%%order_class%% p, %%order_class%% .comment_postinfo *, %%order_class%% .page_title, %%order_class%% .comment-reply-title', 'text_shadow' => '%%order_class%% p, %%order_class%% .comment_postinfo, %%order_class%% .page_title, %%order_class%% .comment-reply-title', ), 'options' => array( 'background_layout' => array( 'default_on_front' => 'light', 'hover' => 'tabs', ), ), ), 'form_field' => array( 'form_field' => array( 'label' => esc_html__( 'Fields', 'et_builder' ), 'css' => array( 'main' => "{$this->main_css_element} #commentform textarea, {$this->main_css_element} #commentform input[type='text'], {$this->main_css_element} #commentform input[type='email'], {$this->main_css_element} #commentform input[type='url']", 'hover' => "{$this->main_css_element} #commentform textarea:hover, {$this->main_css_element} #commentform input[type='text']:hover, {$this->main_css_element} #commentform input[type='email']:hover, {$this->main_css_element} #commentform input[type='url']:hover", 'focus' => "{$this->main_css_element} #commentform textarea:focus, {$this->main_css_element} #commentform input[type='text']:focus, {$this->main_css_element} #commentform input[type='email']:focus, {$this->main_css_element} #commentform input[type='url']:focus", 'focus_hover' => "{$this->main_css_element} #commentform textarea:focus:hover, {$this->main_css_element} #commentform input[type='text']:focus:hover, {$this->main_css_element} #commentform input[type='email']:focus:hover, {$this->main_css_element} #commentform input[type='url']:focus:hover", 'placeholder' => "{$this->main_css_element} #commentform textarea::-webkit-input-placeholder, {$this->main_css_element} #commentform textarea::-moz-placeholder, {$this->main_css_element} #commentform textarea:-ms-input-placeholder, {$this->main_css_element} #commentform input::-webkit-input-placeholder, {$this->main_css_element} #commentform input::-moz-placeholder, {$this->main_css_element} #commentform input:-ms-input-placeholder", 'placeholder_focus' => "{$this->main_css_element} #commentform textarea:focus::-webkit-input-placeholder, {$this->main_css_element} #commentform textarea:focus::-moz-placeholder, {$this->main_css_element} #commentform textarea:focus:-ms-input-placeholder, {$this->main_css_element} #commentform input:focus::-webkit-input-placeholder, {$this->main_css_element} #commentform input:focus::-moz-placeholder, {$this->main_css_element} #commentform input:focus:-ms-input-placeholder", 'margin' => "{$this->main_css_element} #commentform .comment-form-comment, {$this->main_css_element} #commentform .comment-form-author, {$this->main_css_element} #commentform .comment-form-email, {$this->main_css_element} #commentform .comment-form-url", ), 'box_shadow' => array( 'name' => 'fields', 'css' => array( 'main' => "{$this->main_css_element} #commentform textarea, {$this->main_css_element} #commentform input[type='text'], {$this->main_css_element} #commentform input[type='email'], {$this->main_css_element} #commentform input[type='url']", ), ), 'border_styles' => array( 'form_field' => array( 'name' => 'fields', 'css' => array( 'main' => array( 'border_radii' => "{$this->main_css_element} #commentform textarea, {$this->main_css_element} #commentform input[type='text'], {$this->main_css_element} #commentform input[type='email'], {$this->main_css_element} #commentform input[type='url']", 'border_styles' => "{$this->main_css_element} #commentform textarea, {$this->main_css_element} #commentform input[type='text'], {$this->main_css_element} #commentform input[type='email'], {$this->main_css_element} #commentform input[type='url']", ), 'important' => 'all', ), 'label_prefix' => esc_html__( 'Fields', 'et_builder' ), ), 'form_field_focus' => array( 'name' => 'fields_focus', 'css' => array( 'main' => array( 'border_radii' => "{$this->main_css_element} #commentform textarea:focus, {$this->main_css_element} #commentform input[type='text']:focus, {$this->main_css_element} #commentform input[type='email']:focus, {$this->main_css_element} #commentform input[type='url']:focus", 'border_styles' => "{$this->main_css_element} #commentform textarea:focus, {$this->main_css_element} #commentform input[type='text']:focus, {$this->main_css_element} #commentform input[type='email']:focus, {$this->main_css_element} #commentform input[type='url']:focus", ), ), 'label_prefix' => esc_html__( 'Fields Focus', 'et_builder' ), ), ), 'font_field' => array( 'css' => array( 'main' => "{$this->main_css_element} #commentform textarea, {$this->main_css_element} #commentform input[type='text'], {$this->main_css_element} #commentform input[type='email'], {$this->main_css_element} #commentform input[type='url'], {$this->main_css_element} #commentform label", 'important' => 'all', ), 'line_height' => array( 'default' => '1em', ), 'font_size' => array( 'default' => '18px', ), 'letter_spacing' => array( 'default' => '0px', ), ), ), ), 'filters' => array( 'child_filters_target' => array( 'tab_slug' => 'advanced', 'toggle_slug' => 'image', ), ), 'image' => array( 'css' => array( 'main' => "{$this->main_css_element} .commentlist img.avatar", ), ), ); $this->custom_css_fields = array( 'main_header' => array( 'label' => esc_html__( 'Comments Count', 'et_builder' ), 'selector' => 'h1#comments', ), 'comment_body' => array( 'label' => esc_html__( 'Comment Body', 'et_builder' ), 'selector' => '.comment-body', ), 'comment_meta' => array( 'label' => esc_html__( 'Comment Meta', 'et_builder' ), 'selector' => '.comment_postinfo', ), 'comment_content' => array( 'label' => esc_html__( 'Comment Content', 'et_builder' ), 'selector' => '.comment_area .comment-content', ), 'comment_avatar' => array( 'label' => esc_html__( 'Comment Avatar', 'et_builder' ), 'selector' => '.comment_avatar', ), 'reply_button' => array( 'label' => esc_html__( 'Reply Button', 'et_builder' ), 'selector' => '.comment-reply-link.et_pb_button', ), 'new_title' => array( 'label' => esc_html__( 'New Comment Title', 'et_builder' ), 'selector' => 'h3#reply-title', ), 'message_field' => array( 'label' => esc_html__( 'Message Field', 'et_builder' ), 'selector' => '.comment-form-comment textarea#comment', ), 'name_field' => array( 'label' => esc_html__( 'Name Field', 'et_builder' ), 'selector' => '.comment-form-author input', ), 'email_field' => array( 'label' => esc_html__( 'Email Field', 'et_builder' ), 'selector' => '.comment-form-email input', ), 'website_field' => array( 'label' => esc_html__( 'Website Field', 'et_builder' ), 'selector' => '.comment-form-url input', ), 'submit_button' => array( 'label' => esc_html__( 'Submit Button', 'et_builder' ), 'selector' => '.form-submit .et_pb_button#et_pb_submit', ), ); $this->help_videos = array( array( 'id' => 'k6vskmOxM4U', 'name' => esc_html__( 'An introduction to the Comments module', 'et_builder' ), ), ); } function get_fields() { $fields = array( 'show_avatar' => array( 'label' => esc_html__( 'Show Author Avatar', 'et_builder' ), 'description' => esc_html__( 'Disabling the author avatar will remove the profile picture from the module.', 'et_builder' ), 'type' => 'yes_no_button', 'option_category' => 'configuration', 'options' => array( 'on' => et_builder_i18n( 'Yes' ), 'off' => et_builder_i18n( 'No' ), ), 'toggle_slug' => 'elements', 'default_on_front' => 'on', 'mobile_options' => true, 'hover' => 'tabs', ), 'show_reply' => array( 'label' => esc_html__( 'Show Reply Button', 'et_builder' ), 'description' => esc_html__( 'Disabling the reply button will prevent visitors from creating threaded comments.', 'et_builder' ), 'type' => 'yes_no_button', 'option_category' => 'configuration', 'options' => array( 'on' => et_builder_i18n( 'Yes' ), 'off' => et_builder_i18n( 'No' ), ), 'toggle_slug' => 'elements', 'default_on_front' => 'on', 'mobile_options' => true, 'hover' => 'tabs', ), 'show_count' => array( 'label' => esc_html__( 'Show Comment Count', 'et_builder' ), 'description' => esc_html__( 'Disabling the comment count will remove the number of comments from the top of the module.', 'et_builder' ), 'type' => 'yes_no_button', 'option_category' => 'configuration', 'options' => array( 'on' => et_builder_i18n( 'Yes' ), 'off' => et_builder_i18n( 'No' ), ), 'toggle_slug' => 'elements', 'default_on_front' => 'on', 'mobile_options' => true, 'hover' => 'tabs', ), 'show_meta' => array( 'label' => esc_html__( 'Show Meta', 'et_builder' ), 'type' => 'yes_no_button', 'option_category' => 'configuration', 'options' => array( 'on' => esc_html__( 'Yes', 'et_builder' ), 'off' => esc_html__( 'No', 'et_builder' ), ), 'default_on_front' => 'on', 'toggle_slug' => 'elements', 'description' => esc_html__( 'Turn meta on or off.', 'et_builder' ), 'mobile_options' => true, 'hover' => 'tabs', ), ); return $fields; } /** * Get comments markup for comments module * * @since 4.0.9 Add custom form title heading level. * * @param {string} $header_level * @param {string} $form_title_level * * @return string of comment section markup */ static function get_comments( $header_level, $form_title_level ) { global $et_pb_comments_print, $et_comments_header_level, $et_comments_form_title_level; // Globally flag that comment module is being printed $et_pb_comments_print = true; // set custom header level for comments form $et_comments_header_level = $header_level; $et_comments_form_title_level = $form_title_level; // remove filters to make sure comments module rendered correctly if the below filters were applied earlier. remove_filter( 'get_comments_number', '__return_zero' ); remove_filter( 'comments_open', '__return_false' ); remove_filter( 'comments_array', '__return_empty_array' ); // Custom action before calling comments_template. do_action( 'et_fb_before_comments_template' ); ob_start(); comments_template( '', true ); $comments_content = ob_get_contents(); ob_end_clean(); // Custom action after calling comments_template. do_action( 'et_fb_after_comments_template' ); // Globally flag that comment module has been printed $et_pb_comments_print = false; $et_comments_header_level = ''; return $comments_content; } /** * Action and filter hooks that are called before comment content rendering. These are * abstracted into method so module which extends comment module can modify these * * @since 3.29 */ function before_comments_content() { // Modify the comments request to make sure it's unique. // Otherwise WP generates SQL error and doesn't allow multiple comments sections on single page add_action( 'pre_get_comments', array( $this, 'et_pb_modify_comments_request' ), 1 ); // include custom comments_template to display the comment section with Divi style add_filter( 'comments_template', array( $this, 'et_pb_comments_template' ) ); // Modify submit button to be advanced button style ready add_filter( 'comment_form_submit_button', array( $this, 'et_pb_comments_submit_button' ) ); } /** * Comment content rendering. These are abstracted into method so module which extends comment * module can modify these * * @since 3.29 * @since 4.0.9 Add form title heading level. */ function get_comments_content() { $header_level = et_()->array_get( $this->props, 'header_level' ); $form_title_level = et_()->array_get( $this->props, 'title_level' ); $header_level_processed = et_pb_process_header_level( $header_level, 'h1' ); $form_title_level_processed = et_pb_process_header_level( $form_title_level, 'h3' ); return self::get_comments( $header_level_processed, $form_title_level_processed ); } /** * Action and filter hooks that are called after comment content rendering. These are * abstracted into method so module which extends comment module can modify these */ function after_comments_content() { // remove all the actions and filters to not break the default comments section from theme remove_filter( 'comments_template', array( $this, 'et_pb_comments_template' ) ); remove_action( 'pre_get_comments', array( $this, 'et_pb_modify_comments_request' ), 1 ); } function et_pb_comments_template() { return realpath( dirname( __FILE__ ) . '/..' ) . '/comments_template.php'; } function et_pb_comments_submit_button( $submit_button ) { return sprintf( '<button name="%1$s" type="submit" id="%2$s" class="%3$s">%4$s</button>', esc_attr( 'submit' ), esc_attr( 'et_pb_submit' ), esc_attr( 'submit' ), esc_html__( 'Submit Comment', 'et_builder' ) ); } function et_pb_modify_comments_request( $params ) { // modify the request parameters the way it doesn't change the result just to make request with unique parameters $params->query_vars['type__not_in'] = 'et_pb_comments_random_type_' . $this->et_pb_unique_comments_module_class; } /** * Renders the module output. * * @param array $attrs List of attributes. * @param string $content Content being processed. * @param string $render_slug Slug of module that is used for rendering output. * * @return string */ public function render( $attrs, $content, $render_slug ) { $multi_view = et_pb_multi_view_options( $this ); $button_custom = $this->props['custom_button']; $show_avatar = $this->props['show_avatar']; $show_reply = $this->props['show_reply']; $show_count = $this->props['show_count']; $show_meta = $this->props['show_meta']; $show_rating = et_()->array_get( $this->props, 'show_rating', '' ); $header_level = $this->props['header_level']; $video_background = $this->video_background(); $parallax_image_background = $this->get_parallax_image_background(); $custom_icon_values = et_pb_responsive_options()->get_property_values( $this->props, 'button_icon' ); $custom_icon = isset( $custom_icon_values['desktop'] ) ? $custom_icon_values['desktop'] : ''; $custom_icon_tablet = isset( $custom_icon_values['tablet'] ) ? $custom_icon_values['tablet'] : ''; $custom_icon_phone = isset( $custom_icon_values['phone'] ) ? $custom_icon_values['phone'] : ''; $this->et_pb_unique_comments_module_class = ET_Builder_Element::get_module_order_class( $render_slug ); // use this variable to make the comments request unique for each module instance // Action & filter hooks before comment content rendering $this->before_comments_content(); // Comment content rendering $comments_content = $this->get_comments_content(); // Action & filter hooks after comment content rendering $this->after_comments_content(); // Image - CSS Filters. if ( et_()->array_get( $this->advanced_fields, 'image.css', false ) ) { $this->add_classname( $this->generate_css_filters( $this->slug, 'child_', et_()->array_get( $this->advanced_fields['image']['css'], 'main', '%%order_class%%' ) ) ); } $comments_custom_icon = 'on' === $button_custom ? $custom_icon : ''; $comments_custom_icon_tablet = 'on' === $button_custom ? $custom_icon_tablet : ''; $comments_custom_icon_phone = 'on' === $button_custom ? $custom_icon_phone : ''; // Background layout data attributes. $data_background_layout = et_pb_background_layout_options()->get_background_layout_attrs( $this->props ); // Module classname $this->add_classname( array( 'et_pb_comments_module', $this->get_text_orientation_classname(), ) ); // Background layout class names. $background_layout_class_names = et_pb_background_layout_options()->get_background_layout_class( $this->props ); $this->add_classname( $background_layout_class_names ); if ( 'off' === $show_avatar ) { $this->add_classname( 'et_pb_no_avatar' ); } if ( 'off' === $show_reply ) { $this->add_classname( 'et_pb_no_reply_button' ); } if ( 'off' === $show_count ) { $this->add_classname( 'et_pb_no_comments_count' ); } if ( 'off' === $show_meta ) { $this->add_classname( 'et_pb_no_comments_meta' ); } if ( 'off' === $show_rating ) { $this->add_classname( 'et_pb_no_comments_rating' ); } // Removed automatically added classname $this->remove_classname( $render_slug ); $multi_view_data_attr = $multi_view->render_attrs( array( 'classes' => array( 'et_pb_no_avatar' => array( 'show_avatar' => 'off', ), 'et_pb_no_reply_button' => array( 'show_reply' => 'off', ), 'et_pb_no_comments_count' => array( 'show_count' => 'off', ), 'et_pb_no_comments_meta' => array( 'show_meta' => 'off', ), /* WooCommerce Reviews Module uses the following class. */ 'et_pb_no_comments_rating' => array( 'show_rating' => 'off', ), ), ) ); $output = sprintf( '<div%3$s class="%2$s"%4$s%7$s%8$s%9$s%10$s> %5$s %11$s %12$s %6$s %1$s </div>', $comments_content, $this->module_classname( $render_slug ), $this->module_id(), '' !== $comments_custom_icon ? sprintf( ' data-icon="%1$s"', esc_attr( et_pb_process_font_icon( $comments_custom_icon ) ) ) : '', $video_background, // #5 $parallax_image_background, et_core_esc_previously( $data_background_layout ), '' !== $comments_custom_icon_tablet ? sprintf( ' data-icon-tablet="%1$s"', esc_attr( et_pb_process_font_icon( $comments_custom_icon_tablet ) ) ) : '', '' !== $comments_custom_icon_phone ? sprintf( ' data-icon-phone="%1$s"', esc_attr( et_pb_process_font_icon( $comments_custom_icon_phone ) ) ) : '', $multi_view_data_attr, // #10 et_core_esc_previously( $this->background_pattern() ), // #11 et_core_esc_previously( $this->background_mask() ) // #12 ); return $output; } } if ( et_builder_should_load_all_module_data() ) { new ET_Builder_Module_Comments(); } if ( et_is_woocommerce_plugin_active() && defined( 'ET_BUILDER_DIR' ) ) { // Use separate files for better organization. require_once ET_BUILDER_DIR . 'module/woocommerce/Reviews.php'; }
Save Changes
Rename File
Rename