You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
228 lines
5.6 KiB
PHP
228 lines
5.6 KiB
PHP
<?php
|
|
/**
|
|
* Heading Module Definition.
|
|
*
|
|
* @since 4.22.0
|
|
*
|
|
* @package Divi Builder
|
|
*/
|
|
|
|
/**
|
|
* Class ET_Builder_Module_Heading
|
|
*/
|
|
class ET_Builder_Module_Heading extends ET_Builder_Module {
|
|
/**
|
|
* Init the module.
|
|
*
|
|
* @inherit
|
|
*
|
|
* @return void
|
|
*/
|
|
public function init() {
|
|
$this->name = esc_html__( 'Heading', 'et_builder' );
|
|
$this->plural = esc_html__( 'Headings', 'et_builder' );
|
|
$this->slug = 'et_pb_heading';
|
|
$this->vb_support = 'on';
|
|
|
|
$this->settings_modal_toggles = array(
|
|
'general' => array(
|
|
'toggles' => array(
|
|
'main_content' => et_builder_i18n( 'Text' ),
|
|
),
|
|
),
|
|
'custom_css' => array(
|
|
'toggles' => array(
|
|
'attributes' => array(
|
|
'title' => esc_html__( 'Attributes', 'et_builder' ),
|
|
'priority' => 95,
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
$this->advanced_fields = array(
|
|
'fonts' => array(
|
|
'title' => array(
|
|
'label' => et_builder_i18n( 'Heading' ),
|
|
'css' => array(
|
|
'main' => [
|
|
'%%order_class%% .et_pb_heading_container h1',
|
|
'%%order_class%% .et_pb_heading_container h2',
|
|
'%%order_class%% .et_pb_heading_container h3',
|
|
'%%order_class%% .et_pb_heading_container h4',
|
|
'%%order_class%% .et_pb_heading_container h5',
|
|
'%%order_class%% .et_pb_heading_container h6',
|
|
],
|
|
),
|
|
'font_size' => array(
|
|
'default' => '30px',
|
|
),
|
|
'line_height' => array(
|
|
'default' => '1em',
|
|
),
|
|
'letter_spacing' => array(
|
|
'default' => '0px',
|
|
),
|
|
'header_level' => array(
|
|
'default' => 'h1',
|
|
'label' => esc_html__( 'Heading Level', 'et_builder' ),
|
|
),
|
|
),
|
|
),
|
|
'background' => array(
|
|
'options' => array(
|
|
'parallax_method' => array(
|
|
'default' => 'off',
|
|
),
|
|
),
|
|
),
|
|
'margin_padding' => array(
|
|
'css' => array(
|
|
'important' => 'all',
|
|
),
|
|
),
|
|
'max_width' => array(
|
|
'css' => array(
|
|
'important' => 'all',
|
|
),
|
|
),
|
|
'text' => array(
|
|
'use_text_orientation' => false,
|
|
'use_background_layout' => false,
|
|
'css' => array(
|
|
'main' => [
|
|
'%%order_class%% h1',
|
|
'%%order_class%% h2',
|
|
'%%order_class%% h3',
|
|
'%%order_class%% h4',
|
|
'%%order_class%% h5',
|
|
'%%order_class%% h6',
|
|
],
|
|
),
|
|
),
|
|
'box_shadow' => array(
|
|
'default' => array(),
|
|
),
|
|
'position_fields' => array(
|
|
'default' => 'relative',
|
|
),
|
|
'link_options' => false,
|
|
'filters' => false,
|
|
);
|
|
|
|
$this->custom_css_fields = array(
|
|
'main_element' => [
|
|
'label' => et_builder_i18n( 'Main Element' ),
|
|
'selector' => implode(
|
|
',',
|
|
[
|
|
'%%order_class%% h1',
|
|
'%%order_class%% h2',
|
|
'%%order_class%% h3',
|
|
'%%order_class%% h4',
|
|
'%%order_class%% h5',
|
|
'%%order_class%% h6',
|
|
]
|
|
),
|
|
],
|
|
'heading_container' => array(
|
|
'label' => esc_html__( 'Heading Container', 'et_builder' ),
|
|
'selector' => '.et_pb_heading_container',
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Fields definition.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function get_fields() {
|
|
$fields = array(
|
|
'title' => array(
|
|
'label' => et_builder_i18n( 'Heading' ),
|
|
'type' => 'text',
|
|
'option_category' => 'basic_option',
|
|
'description' => esc_html__( 'Enter your page title here.', 'et_builder' ),
|
|
'toggle_slug' => 'main_content',
|
|
'dynamic_content' => 'text',
|
|
'mobile_options' => true,
|
|
'hover' => 'tabs',
|
|
),
|
|
);
|
|
|
|
return $fields;
|
|
}
|
|
|
|
/**
|
|
* 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 );
|
|
// Allowing full html for backwards compatibility.
|
|
$title = $this->_esc_attr( 'title', 'full' );
|
|
$header_level = $this->props['title_level'];
|
|
$video_background = $this->video_background();
|
|
|
|
$title = $multi_view->render_element(
|
|
array(
|
|
'tag' => et_pb_process_header_level( $header_level, 'h1' ),
|
|
'content' => '{{title}}',
|
|
'attrs' => array(
|
|
'class' => 'et_pb_module_heading',
|
|
),
|
|
)
|
|
);
|
|
|
|
// 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 );
|
|
|
|
$video_background = $this->video_background();
|
|
$parallax_image_background = $this->get_parallax_image_background();
|
|
|
|
// Background layout data attributes.
|
|
$data_background_layout = et_pb_background_layout_options()->get_background_layout_attrs( $this->props );
|
|
|
|
$content = $multi_view->render_element(
|
|
array(
|
|
'tag' => 'div',
|
|
'content' => $title,
|
|
'attrs' => array(
|
|
'class' => 'et_pb_heading_container',
|
|
),
|
|
)
|
|
);
|
|
|
|
$output = sprintf(
|
|
'<div%3$s class="%2$s"%6$s>
|
|
%5$s
|
|
%4$s
|
|
%7$s
|
|
%8$s
|
|
%1$s
|
|
</div>',
|
|
/* 01 */ $content,
|
|
/* 02 */ $this->module_classname( $render_slug ),
|
|
/* 03 */ $this->module_id(),
|
|
/* 04 */ $video_background,
|
|
/* 05 */ $parallax_image_background,
|
|
/* 06 */ et_core_esc_previously( $data_background_layout ),
|
|
/* 07 */ et_core_esc_previously( $this->background_pattern() ),
|
|
/* 08 */ et_core_esc_previously( $this->background_mask() )
|
|
);
|
|
|
|
return $output;
|
|
}
|
|
}
|
|
|
|
if ( et_builder_should_load_all_module_data() ) {
|
|
new ET_Builder_Module_Heading();
|
|
}
|