File: /var/www/html/triad-infosec/wp-content/themes/Avada/includes/options/layout.php
<?php
/**
* Avada Options.
*
* @author ThemeFusion
* @copyright (c) Copyright by ThemeFusion
* @link https://avada.com
* @package Avada
* @subpackage Core
* @since 4.0.0
*/
// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
exit( 'Direct script access denied.' );
}
/**
* Layout
*
* @param array $sections An array of our sections.
* @return array
*/
function avada_options_section_layout( $sections ) {
$settings = get_option( Avada::get_option_name(), [] );
$language = Fusion_Multilingual::get_active_language();
$avada_510_site_width_calc_option_name = 'avada_510_site_width_calc';
$display_site_width_warning = false;
if ( '' !== $language && 'en' !== $language ) {
$avada_510_site_width_calc_option_name .= $language;
}
if ( get_option( $avada_510_site_width_calc_option_name, false ) ) {
if ( isset( $settings['site_width'] ) && false !== strpos( $settings['site_width'], 'calc' ) ) {
$display_site_width_warning = true;
}
}
$sections['layout'] = [
'label' => esc_html__( 'Layout', 'Avada' ),
'id' => 'heading_layout',
'priority' => 1,
'icon' => 'el-icon-website',
'alt_icon' => 'fusiona-browser',
'fields' => [
'layout' => [
'label' => esc_html__( 'Layout', 'Avada' ),
'description' => esc_html__( 'Controls the site layout.', 'Avada' ),
'id' => 'layout',
'default' => 'wide',
'type' => 'radio-buttonset',
'choices' => [
'boxed' => esc_html__( 'Boxed', 'Avada' ),
'wide' => esc_html__( 'Wide', 'Avada' ),
],
'output' => [
// Toggle <html> classes.
[
'element' => 'html',
'function' => 'attr',
'attr' => 'class',
'toLowerCase' => true,
'value_pattern' => 'avada-html-layout-$',
'remove_attrs' => [ 'avada-html-layout-boxed', 'avada-html-layout-wide' ],
],
// Toggle <body> classes.
[
'element' => 'body',
'function' => 'attr',
'attr' => 'class',
'toLowerCase' => true,
'value_pattern' => 'layout-$-mode',
'remove_attrs' => [ 'layout-boxed-mode', 'layout-wide-mode' ],
],
// avadaMenuVars.site_layout.
[
'element' => 'helperElement',
'property' => 'bottom',
'js_callback' => [
'fusionGlobalScriptSet',
[
'globalVar' => 'avadaMenuVars',
'id' => 'site_layout',
'trigger' => [ 'fusionPositionSubmenus' ],
],
],
'sanitize_callback' => '__return_empty_string',
],
// avadaHeaderVars.layout_mode.
[
'element' => 'helperElement',
'property' => 'bottom',
'js_callback' => [
'fusionGlobalScriptSet',
[
'globalVar' => 'avadaHeaderVars',
'id' => 'layout_mode',
'trigger' => [ 'fusionSliderReTrigger', 'fusion-reinit-sticky-header' ],
],
],
'sanitize_callback' => '__return_empty_string',
],
],
],
'site_width' => [
'label' => esc_html__( 'Site Width', 'Avada' ),
'description' => esc_html__( 'Controls the overall site width.', 'Avada' ),
'id' => 'site_width',
'default' => '1200px',
'type' => 'dimension',
'choices' => [ 'px', '%' ],
'desc' => ( $display_site_width_warning ) ? esc_html__( 'The value was changed in Avada 5.1 to include both the site-width & side-header width, ex: calc(90% + 300px). Leave this as is, or update it with a single percentage, ex: 95%', 'Avada' ) : '',
'css_vars' => [
[
'name' => '--site_width',
],
[
'name' => '--site_width-int',
'callback' => [ 'convert_font_size_to_px', '' ],
],
],
'output' => [
[
'element' => 'helperElement',
'property' => 'dummy',
'callback' => [
'toggle_class',
[
'condition' => [ '%', 'contains' ],
'element' => 'html',
'className' => 'avada-has-site-width-percent',
],
],
'sanitize_callback' => '__return_empty_string',
],
[
'element' => 'helperElement',
'property' => 'dummy',
'callback' => [
'toggle_class',
[
'condition' => [ '100%', '===' ],
'element' => 'html',
'className' => 'avada-has-site-width-100-percent',
],
],
'sanitize_callback' => '__return_empty_string',
],
// fusionTypographyVars.site_width.
[
'element' => 'helperElement',
'property' => 'bottom',
'js_callback' => [
'fusionGlobalScriptSet',
[
'globalVar' => 'fusionTypographyVars',
'id' => 'site_width',
'trigger' => [ 'fusionInitTypography' ],
],
],
'sanitize_callback' => '__return_empty_string',
],
// Trigger events.
[
'element' => 'helperElement',
'property' => 'bottom',
'js_callback' => [
'fusionGlobalScriptSet',
[
'globalVar' => 'dummy',
'id' => 'dummy',
'trigger' => [ 'fusion-reinit-sticky-header' ],
],
],
'sanitize_callback' => '__return_empty_string',
],
],
// Partial refresh for the header.
'partial_refresh' => [
'site_width_header_remove_before_hook' => [
'selector' => '.avada-hook-before-header-wrapper',
'container_inclusive' => true,
'render_callback' => '__return_null',
],
'site_width_header_remove_after_hook' => [
'selector' => '.avada-hook-after-header-wrapper',
'container_inclusive' => true,
'render_callback' => '__return_null',
],
'site_width_header' => [
'selector' => '.fusion-header-wrapper',
'container_inclusive' => true,
'render_callback' => [ 'Avada_Partial_Refresh_Callbacks', 'header' ],
'success_trigger_event' => 'header-rendered',
],
],
],
'margin_offset' => [
'label' => esc_html__( 'Boxed Mode Top/Bottom Offset', 'Avada' ),
'description' => esc_html__( 'Controls the top/bottom offset of the boxed background.', 'Avada' ),
'id' => 'margin_offset',
'choices' => [
'top' => true,
'bottom' => true,
],
'default' => [
'top' => '0px',
'bottom' => '0px',
],
'type' => 'spacing',
'required' => [
[
'setting' => 'layout',
'operator' => '==',
'value' => 'boxed',
],
],
'css_vars' => [
[
'name' => '--margin_offset-top',
'choice' => 'top',
],
[
'name' => '--margin_offset-bottom',
'choice' => 'bottom',
],
[
'name' => '--margin_offset-top-no-percent',
'choice' => 'top',
'callback' => [ 'string_replace', [ '%', 'vh' ] ],
],
[
'name' => '--margin_offset-bottom-no-percent',
'choice' => 'bottom',
'callback' => [ 'string_replace', [ '%', 'vh' ] ],
],
],
'output' => [
[
'element' => 'helperElement',
'property' => 'dummy',
'choice' => 'top',
'callback' => [
'toggle_class',
[
'condition' => [ '', 'is-zero-or-empty' ],
'element' => 'body',
'className' => 'avada-has-zero-margin-offset-top',
],
],
'sanitize_callback' => '__return_empty_string',
],
// Trigger events.
[
'element' => 'helperElement',
'property' => 'bottom',
'js_callback' => [
'fusionGlobalScriptSet',
[
'globalVar' => 'dummy',
'id' => 'dummy',
'trigger' => [ 'fusion-reinit-sticky-header' ],
],
],
'sanitize_callback' => '__return_empty_string',
],
],
],
'scroll_offset' => [
'label' => esc_html__( 'Boxed Mode Offset Scroll Mode', 'Avada' ),
'description' => esc_html__( 'Choose how the page will scroll. Framed scrolling will keep the offset in place, while Full scrolling removes the offset when scrolling the page.', 'Avada' ),
'id' => 'scroll_offset',
'type' => 'radio-buttonset',
'choices' => [
'framed' => esc_html__( 'Framed Scrolling', 'Avada' ),
'full' => esc_html__( 'Full Scrolling', 'Avada' ),
],
'default' => 'full',
'required' => [
[
'setting' => 'layout',
'operator' => '==',
'value' => 'boxed',
],
],
'output' => [
[
'element' => 'helperElement',
'property' => 'dummy',
'callback' => [
'toggle_class',
[
'condition' => [ '===', 'framed' ],
'element' => 'html',
'className' => 'avada-html-layout-framed',
],
],
'sanitize_callback' => '__return_empty_string',
],
[
'element' => 'body',
'function' => 'attr',
'attr' => 'class',
'toLowerCase' => true,
'value_pattern' => 'layout-scroll-offset-$',
'remove_attrs' => [ 'layout-scroll-offset-framed', 'layout-scroll-offset-full' ],
],
// Change avadaHeaderVars.scroll_offset.
[
'element' => 'helperElement',
'property' => 'bottom',
'js_callback' => [
'fusionGlobalScriptSet',
[
'globalVar' => 'avadaHeaderVars',
'id' => 'scroll_offset',
'trigger' => [ 'scroll' ],
],
],
'sanitize_callback' => '__return_empty_string',
],
],
],
'boxed_modal_shadow' => [
'label' => esc_html__( 'Boxed Mode Shadow Type', 'Avada' ),
'description' => esc_html__( 'Controls the type of shadow your boxed mode displays.', 'Avada' ),
'id' => 'boxed_modal_shadow',
'default' => 'none',
'type' => 'select',
'choices' => [
'none' => esc_html__( 'No Shadow', 'Avada' ),
'light' => esc_html__( 'Light Shadow', 'Avada' ),
'medium' => esc_html__( 'Medium Shadow', 'Avada' ),
'hard' => esc_html__( 'Hard Shadow', 'Avada' ),
],
'required' => [
[
'setting' => 'layout',
'operator' => '==',
'value' => 'boxed',
],
],
'output' => [
[
'element' => 'body',
'function' => 'attr',
'attr' => 'class',
'value_pattern' => 'avada-has-boxed-modal-shadow-$',
'remove_attrs' => [ 'avada-has-boxed-modal-shadow-none', 'avada-has-boxed-modal-shadow-light', 'avada-has-boxed-modal-shadow-medium', 'avada-has-boxed-modal-shadow-hard' ],
],
// Trigger events.
[
'element' => 'helperElement',
'property' => 'bottom',
'js_callback' => [
'fusionGlobalScriptSet',
[
'globalVar' => 'dummy',
'id' => 'dummy',
'trigger' => [ 'fusion-reinit-sticky-header' ],
],
],
'sanitize_callback' => '__return_empty_string',
],
],
],
'main_padding' => [
'label' => esc_html__( 'Page Content Padding', 'Avada' ),
'description' => esc_html__( 'Controls the top/bottom padding for page content.', 'Avada' ),
'id' => 'main_padding',
'choices' => [
'top' => true,
'bottom' => true,
],
'default' => [
'top' => '60px',
'bottom' => '60px',
],
'type' => 'spacing',
'css_vars' => [
[
'name' => '--main_padding-top',
'choice' => 'top',
],
[
'name' => '--main_padding-top-or-55px',
'choice' => 'top',
'callback' => [ 'fallback_to_value_if_empty', '55px' ],
],
[
'name' => '--main_padding-bottom',
'choice' => 'bottom',
],
],
],
'page_template' => [
'label' => esc_html__( 'Default Page Template', 'Avada' ),
'description' => esc_html__( 'Choose the default page template.', 'Avada' ),
'id' => 'page_template',
'default' => '100_width',
'type' => 'radio-buttonset',
'choices' => [
'100_width' => esc_html__( '100% Width', 'Avada' ),
'site_width' => esc_html__( 'Site Width', 'Avada' ),
],
// No need to refresh the page.
'transport' => 'postMessage',
],
'hundredp_padding' => [
'label' => esc_html__( '100% Width Padding', 'Avada' ),
'description' => esc_html__( 'Controls the left and right padding for page content when using 100% site width, 100% width page template or 100% width post option. This does not affect Avada Builder containers.', 'Avada' ),
'id' => 'hundredp_padding',
'default' => '30px',
'type' => 'dimension',
'choices' => [ 'px', '%' ],
'css_vars' => [
[
'name' => '--hundredp_padding',
],
[
'name' => '--hundredp_padding-fallback_to_zero',
'callback' => 'fallback_to_zero',
],
[
'name' => '--hundredp_padding-fallback_to_zero_px',
'callback' => [ 'fallback_to_value_if_empty', '0px' ],
],
[
'name' => '--hundredp_padding-hundred_percent_negative_margin',
'callback' => [ 'hundred_percent_negative_margin', '' ],
],
],
],
],
];
return $sections;
}