615 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			615 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			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';
 | 
						|
}
 |