File manager - Edit - /home/matthif/www/wp-content/themes/neve/inc/customizer/options/base_layout_single.php
Back
<?php /** * Common functionalities for pages and posts. * * @package Neve\Customizer\Options */ namespace Neve\Customizer\Options; use Neve\Customizer\Base_Customizer; use Neve\Customizer\Defaults\Layout; use Neve\Customizer\Defaults\Single_Post; use Neve\Customizer\Types\Control; use Neve\Customizer\Types\Section; use Neve\Core\Settings\Config; /** * Class Base_Layout_Single * * @package Neve\Customizer\Options */ abstract class Base_Layout_Single extends Base_Customizer { use Single_Post; use Layout; /** * Post type slug * * @var string */ private $post_type; /** * Controls section * * @var string */ public $section; /** * Cover selector * * @var string */ private $cover_selector; /** * Get the value for the $post_type. * * @return mixed */ abstract public function get_post_type(); /** * Get the value for the $post_type. * * @return mixed */ abstract public function get_cover_selector(); /** * Base_Layout_Single constructor. */ public function __construct() { $this->post_type = $this->get_post_type(); $this->cover_selector = $this->get_cover_selector(); $this->section = 'neve_single_' . $this->post_type . '_layout'; } /** * Get the label for sections. */ private function get_section_label() { $labels = [ 'post' => esc_html__( 'Single Post', 'neve' ), 'page' => esc_html__( 'Page', 'neve' ), ]; if ( array_key_exists( $this->post_type, $labels ) ) { return $labels[ $this->post_type ]; } return ''; } /** * Function that should be extended to add customizer controls. * * @return void */ public function add_controls() { $this->create_section(); $this->add_header_layout_subsection(); $this->add_header_layout_controls(); $this->content_vspacing(); } /** * Create the section */ private function create_section() { $this->add_section( new Section( 'neve_single_' . $this->post_type . '_layout', [ 'priority' => 40, 'title' => $this->get_section_label(), 'panel' => 'neve_layout', ] ) ); } /** * Add header layout accordion. */ private function add_header_layout_subsection() { $this->add_control( new Control( 'neve_' . $this->post_type . '_header_layout_heading', [ 'sanitize_callback' => 'sanitize_text_field', ], [ 'label' => esc_html__( 'Header Layout', 'neve' ), 'section' => $this->section, 'priority' => 5, 'class' => 'header_layout-accordion', 'expanded' => true, 'accordion' => true, 'controls_to_wrap' => 15, ], 'Neve\Customizer\Controls\Heading' ) ); } /** * Add controls for header layout. */ private function add_header_layout_controls() { $this->add_control( new Control( 'neve_' . $this->post_type . '_header_layout', [ 'sanitize_callback' => 'wp_filter_nohtml_kses', 'default' => 'normal', ], [ 'section' => $this->section, 'priority' => 10, 'choices' => [ 'normal' => [ 'name' => esc_html__( 'Normal', 'neve' ), 'image' => 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODUiIGhlaWdodD0iMTE4IiB2aWV3Qm94PSIwIDAgODUgMTE4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHJlY3QgeD0iMi4yNSIgeT0iMi40NjM4NyIgd2lkdGg9IjgwIiBoZWlnaHQ9IjExMyIgZmlsbD0id2hpdGUiLz4KICAgIDxyZWN0IHg9IjE3LjI1IiB5PSIxNC42MDQ1IiB3aWR0aD0iNTAiIGhlaWdodD0iMzQuNTUzNyIgZmlsbD0iIzc4QjZGRiIgZmlsbC1vcGFjaXR5PSIwLjQiLz4KICAgIDxsaW5lIHgxPSIxNy4yNSIgeTE9IjYyLjY5MjQiIHgyPSI2Ny4wNzkyIiB5Mj0iNjIuNjkyNCIgc3Ryb2tlPSIjQzRDNEM0IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgIDxsaW5lIHgxPSIxNy4yNSIgeTE9IjY3Ljc2OTUiIHgyPSIyNS4yNSIgeTI9IjY3Ljc2OTUiIHN0cm9rZT0iI0M0QzRDNCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8bGluZSB4MT0iMTcuMjUiIHkxPSI1Ny40OTcxIiB4Mj0iNTEuMDA1MyIgeTI9IjU3LjQ5NzEiIHN0cm9rZT0iI0M0QzRDNCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8bGluZSB4MT0iMTcuMjUiIHkxPSI4Ny4zODA5IiB4Mj0iNjcuMDc5MiIgeTI9Ijg3LjM4MDkiIHN0cm9rZT0iI0M0QzRDNCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8bGluZSB4MT0iMTcuMjUiIHkxPSI5Mi41NzYyIiB4Mj0iNjcuMDc5MiIgeTI9IjkyLjU3NjIiIHN0cm9rZT0iI0M0QzRDNCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8bGluZSB4MT0iMTcuMjUiIHkxPSI5OC4wNjE1IiB4Mj0iNjcuMDc5MiIgeTI9Ijk4LjA2MTUiIHN0cm9rZT0iI0M0QzRDNCIgc3Ryb2tlLXdpZHRoPSIyIi8+Cjwvc3ZnPgo=', ], 'cover' => [ 'name' => esc_html__( 'Cover', 'neve' ), 'image' => 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgODYgMTIwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHJlY3QgeD0iMyIgeT0iMy40NjM4NyIgd2lkdGg9IjgwIiBoZWlnaHQ9IjExMyIgZmlsbD0id2hpdGUiLz4KICAgIDxyZWN0IHg9IjMiIHk9IjMuNDYzODciIHdpZHRoPSI4MCIgaGVpZ2h0PSI1MS4zNjM2IiBmaWxsPSIjNzhCNkZGIiBmaWxsLW9wYWNpdHk9IjAuNCIvPgogICAgPGxpbmUgeDE9IjE5IiB5MT0iNjcuNDI4NyIgeDI9IjY4LjgyOTIiIHkyPSI2Ny40Mjg3IiBzdHJva2U9IiNDNEM0QzQiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgPGxpbmUgeDE9IjE5IiB5MT0iODMuNzExOSIgeDI9IjY4LjgyOTIiIHkyPSI4My43MTE5IiBzdHJva2U9IiNDNEM0QzQiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgPGxpbmUgeDE9IjE5IiB5MT0iNzIuNjI0IiB4Mj0iNjguODI5MiIgeTI9IjcyLjYyNCIgc3Ryb2tlPSIjQzRDNEM0IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgIDxsaW5lIHgxPSIxOSIgeTE9Ijg4LjkwNzIiIHgyPSI2OC44MjkyIiB5Mj0iODguOTA3MiIgc3Ryb2tlPSIjQzRDNEM0IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgIDxsaW5lIHgxPSIxOSIgeTE9Ijc4LjEwODQiIHgyPSI2OC44MjkyIiB5Mj0iNzguMTA4NCIgc3Ryb2tlPSIjQzRDNEM0IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgIDxsaW5lIHgxPSIxOSIgeTE9Ijk0LjM5MjYiIHgyPSI2OC44MjkyIiB5Mj0iOTQuMzkyNiIgc3Ryb2tlPSIjQzRDNEM0IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgIDxsaW5lIHgxPSIxOSIgeTE9IjgzLjcxMTkiIHgyPSI0OCIgeTI9IjgzLjcxMTkiIHN0cm9rZT0iI0M0QzRDNCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8bGluZSB4MT0iMTkiIHkxPSI5OS45OTYxIiB4Mj0iNDgiIHkyPSI5OS45OTYxIiBzdHJva2U9IiNDNEM0QzQiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgPGxpbmUgeDE9IjE5IiB5MT0iNDQuNDg5MyIgeDI9IjUyLjc1NTMiIHkyPSI0NC40ODkzIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiLz4KICAgIDxsaW5lIHgxPSIxOSIgeTE9IjM4Ljg4NTciIHgyPSI2OSIgeTI9IjM4Ljg4NTciIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgPHJlY3QgeD0iMS41IiB5PSIxLjk2Mzg3IiB3aWR0aD0iODMiIGhlaWdodD0iMTE2IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjMiLz4KPC9zdmc+Cg==', ], ], ], '\Neve\Customizer\Controls\React\Radio_Image' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_cover_height', [ 'sanitize_callback' => 'neve_sanitize_range_value', 'transport' => $this->selective_refresh, 'default' => '{ "mobile": 250, "tablet": 320, "desktop": 400 }', ], [ 'label' => esc_html__( 'Cover height', 'neve' ), 'section' => $this->section, 'type' => 'neve_responsive_range_control', 'input_attrs' => [ 'max' => 700, 'units' => [ 'px', 'vh', 'em', 'rem' ], 'defaultVal' => [ 'mobile' => 250, 'tablet' => 320, 'desktop' => 400, 'suffix' => [ 'mobile' => 'px', 'tablet' => 'px', 'desktop' => 'px', ], ], ], 'priority' => 15, 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => [ 'responsive' => true, 'vars' => '--height', 'selector' => $this->cover_selector, 'suffix' => 'px', ], ], 'active_callback' => [ $this, 'is_cover_layout' ], ], '\Neve\Customizer\Controls\React\Responsive_Range' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_cover_padding', [ 'sanitize_callback' => [ $this, 'sanitize_spacing_array' ], 'transport' => $this->selective_refresh, 'default' => $this->padding_default( 'cover' ), ], [ 'label' => esc_html__( 'Cover padding', 'neve' ), 'section' => $this->section, 'input_attrs' => [ 'units' => [ 'px', 'em', 'rem' ], 'min' => 0, ], 'default' => $this->padding_default( 'cover' ), 'priority' => 20, 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => array( 'vars' => '--padding', 'selector' => $this->cover_selector, 'responsive' => true, ), ], 'active_callback' => [ $this, 'is_cover_layout' ], ], '\Neve\Customizer\Controls\React\Spacing' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_title_alignment', [ 'sanitize_callback' => 'neve_sanitize_alignment', 'transport' => $this->selective_refresh, 'default' => self::post_title_alignment(), ], [ 'label' => esc_html__( 'Title Alignment', 'neve' ), 'section' => $this->section, 'priority' => 30, 'choices' => [ 'left' => [ 'tooltip' => esc_html__( 'Left', 'neve' ), 'icon' => 'editor-alignleft', ], 'center' => [ 'tooltip' => esc_html__( 'Center', 'neve' ), 'icon' => 'editor-aligncenter', ], 'right' => [ 'tooltip' => esc_html__( 'Right', 'neve' ), 'icon' => 'editor-alignright', ], ], 'show_labels' => true, 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => [ 'vars' => [ '--textalign', '--justify', ], 'valueRemap' => [ '--justify' => [ 'left' => 'flex-start', 'center' => 'center', 'right' => 'flex-end', ], ], 'responsive' => true, 'selector' => $this->cover_selector . ',' . $this->cover_selector . ' .container, ' . ( $this->post_type === 'post' ? '.entry-header' : '.nv-page-title-wrap' ), ], ], 'active_callback' => $this->post_type === 'post' ? '__return_true' : function() { return ! get_theme_mod( 'neve_page_hide_title', false ); }, ], '\Neve\Customizer\Controls\React\Responsive_Radio_Buttons' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_title_position', [ 'sanitize_callback' => 'neve_sanitize_position', 'transport' => $this->selective_refresh, 'default' => [ 'mobile' => 'center', 'tablet' => 'center', 'desktop' => 'center', ], ], [ 'label' => esc_html__( 'Title Position', 'neve' ), 'section' => $this->section, 'priority' => 35, 'choices' => [ 'flex-start' => [ 'tooltip' => esc_html__( 'Top', 'neve' ), 'icon' => 'arrow-up', ], 'center' => [ 'tooltip' => esc_html__( 'Middle', 'neve' ), 'icon' => 'sort', ], 'flex-end' => [ 'tooltip' => esc_html__( 'Bottom', 'neve' ), 'icon' => 'arrow-down', ], ], 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => [ 'vars' => '--valign', 'responsive' => true, 'selector' => $this->cover_selector, ], ], 'show_labels' => true, 'active_callback' => function() { return $this->post_type === 'post' ? $this->is_cover_layout() : $this->is_cover_layout() && ! get_theme_mod( 'neve_page_hide_title', false ); }, ], '\Neve\Customizer\Controls\React\Responsive_Radio_Buttons' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_cover_background_color', [ 'sanitize_callback' => 'neve_sanitize_colors', 'default' => 'var(--nv-dark-bg)', 'transport' => $this->selective_refresh, ], [ 'label' => esc_html__( 'Overlay color', 'neve' ), 'section' => $this->section, 'priority' => 45, 'input_attrs' => [ 'allow_gradient' => true, ], 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => array( 'vars' => '--bgcolor', 'selector' => $this->cover_selector . ' .nv-overlay', ), ], 'active_callback' => [ $this, 'is_cover_layout' ], ], 'Neve\Customizer\Controls\React\Color' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_cover_text_color', [ 'sanitize_callback' => 'neve_sanitize_colors', 'default' => 'var(--nv-text-dark-bg)', 'transport' => $this->selective_refresh, ], [ 'label' => esc_html__( 'Text color', 'neve' ), 'section' => $this->section, 'priority' => 50, 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => [ 'vars' => '--color', 'selector' => $this->cover_selector . ' .nv-title-meta-wrap', ], ], 'active_callback' => function() { return $this->post_type === 'post' ? $this->is_cover_layout() : $this->is_cover_layout() && ! get_theme_mod( 'neve_page_hide_title', false ); }, ], 'Neve\Customizer\Controls\React\Color' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_cover_overlay_opacity', [ 'sanitize_callback' => 'neve_sanitize_range_value', 'transport' => $this->selective_refresh, 'default' => 50, ], [ 'label' => esc_html__( 'Overlay opacity', 'neve' ) . '(%)', 'section' => $this->section, 'input_attrs' => [ 'min' => 0, 'max' => 100, 'step' => 1, 'defaultVal' => 50, ], 'priority' => 55, 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => [ 'vars' => '--opacity', 'selector' => $this->cover_selector . ' .nv-overlay', ], ], 'active_callback' => [ $this, 'is_cover_layout' ], ], 'Neve\Customizer\Controls\React\Range' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_cover_hide_thumbnail', [ 'sanitize_callback' => 'neve_sanitize_checkbox', 'default' => false, ], [ 'label' => esc_html__( 'Hide featured image', 'neve' ), 'section' => $this->section, 'type' => 'neve_toggle_control', 'priority' => 60, 'active_callback' => [ $this, 'is_cover_layout' ], ], 'Neve\Customizer\Controls\Checkbox' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_cover_blend_mode', [ 'default' => 'normal', 'sanitize_callback' => 'neve_sanitize_blend_mode', 'transport' => $this->selective_refresh, ], [ 'label' => esc_html__( 'Blend mode', 'neve' ), 'section' => $this->section, 'priority' => 65, 'type' => 'select', 'choices' => [ 'normal' => esc_html__( 'Normal', 'neve' ), 'multiply' => esc_html__( 'Multiply', 'neve' ), 'screen' => esc_html__( 'Screen', 'neve' ), 'overlay' => esc_html__( 'Overlay', 'neve' ), 'darken' => esc_html__( 'Darken', 'neve' ), 'lighten' => esc_html__( 'Lighten', 'neve' ), 'color-dodge' => esc_html__( 'Color Dodge', 'neve' ), 'saturation' => esc_html__( 'Saturation', 'neve' ), 'color' => esc_html__( 'Color', 'neve' ), 'difference' => esc_html__( 'Difference', 'neve' ), 'exclusion' => esc_html__( 'Exclusion', 'neve' ), 'hue' => esc_html__( 'Hue', 'neve' ), 'luminosity' => esc_html__( 'Luminosity', 'neve' ), ], 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => [ 'vars' => '--blendmode', 'selector' => $this->cover_selector . ' .nv-overlay', ], ], 'active_callback' => [ $this, 'is_cover_layout' ], ] ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_cover_container', [ 'default' => 'contained', 'sanitize_callback' => 'neve_sanitize_container_layout', ], [ 'label' => esc_html__( 'Cover container', 'neve' ), 'section' => $this->section, 'priority' => 70, 'type' => 'select', 'choices' => [ 'contained' => esc_html__( 'Contained', 'neve' ), 'full-width' => esc_html__( 'Full width', 'neve' ), ], 'active_callback' => function() { return $this->post_type === 'post' ? $this->is_cover_layout() : $this->is_cover_layout() && ! get_theme_mod( 'neve_page_hide_title', false ); }, ] ) ); $this->add_boxed_layout_controls( $this->post_type . '_cover_title', [ 'priority' => 75, 'section' => $this->section, 'has_text_color' => false, 'padding_default' => $this->padding_default( 'cover' ), 'background_default' => 'var(--nv-dark-bg)', 'boxed_selector' => $this->cover_selector . ' .nv-is-boxed.nv-title-meta-wrap', 'toggle_active_callback' => function() { return $this->post_type === 'post' ? $this->is_cover_layout() : $this->is_cover_layout() && ! get_theme_mod( 'neve_page_hide_title', false ); }, 'active_callback' => function() { $is_cover = $this->post_type === 'post' ? $this->is_cover_layout() : $this->is_cover_layout() && ! get_theme_mod( 'neve_page_hide_title', false ); return $is_cover && get_theme_mod( 'neve_' . $this->post_type . '_cover_title_boxed_layout', false ); }, ] ); } /** * Add content spacing control. */ private function content_vspacing() { $this->add_control( new Control( 'neve_' . $this->post_type . '_page_settings_heading', [ 'sanitize_callback' => 'sanitize_text_field', ], [ 'label' => esc_html__( 'Page', 'neve' ) . ' ' . esc_html__( 'Settings', 'neve' ), 'section' => $this->section, 'priority' => 90, 'class' => 'page-settings-accordion', 'expanded' => false, 'accordion' => true, 'controls_to_wrap' => 2, ], 'Neve\Customizer\Controls\Heading' ) ); $this->add_control( new Control( 'neve_' . $this->post_type . '_inherit_vspacing', [ 'sanitize_callback' => 'neve_sanitize_vspace_type', 'default' => 'inherit', ], [ 'label' => esc_html__( 'Content Vertical Spacing', 'neve' ), 'section' => $this->section, 'priority' => 95, 'choices' => [ 'inherit' => [ 'tooltip' => esc_html__( 'Inherit', 'neve' ), 'icon' => 'text', ], 'specific' => [ 'tooltip' => esc_html__( 'Custom', 'neve' ), 'icon' => 'text', ], ], 'footer_description' => [ 'inherit' => [ 'template' => esc_html__( 'Customize the default vertical spacing <ctaButton>here</ctaButton>.', 'neve' ), 'control_to_focus' => Config::MODS_CONTENT_VSPACING, ], ], ], '\Neve\Customizer\Controls\React\Radio_Buttons' ) ); $default_value = get_theme_mod( Config::MODS_CONTENT_VSPACING, $this->content_vspacing_default() ); $this->add_control( new Control( 'neve_' . $this->post_type . '_content_vspacing', [ 'default' => $default_value, 'transport' => $this->selective_refresh, ], [ 'label' => __( 'Custom Value', 'neve' ), 'sanitize_callback' => [ $this, 'sanitize_spacing_array' ], 'section' => $this->section, 'input_attrs' => [ 'units' => [ 'px', 'vh' ], 'axis' => 'vertical', 'dependsOn' => [ 'neve_' . $this->post_type . '_inherit_vspacing' => 'specific' ], ], 'default' => $default_value, 'priority' => 100, 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => [ 'vars' => '--c-vspace', 'selector' => 'body.' . $this->post_type . ' .neve-main', 'responsive' => true, 'fallback' => '', ], 'directional' => true, ], ], '\Neve\Customizer\Controls\React\Spacing' ) ); } /** * Fuction used for active_callback control property. * * @return bool */ abstract public static function is_cover_layout(); }
| ver. 1.4 |
Github
|
.
| PHP 5.4.45 | Generation time: 0 |
proxy
|
phpinfo
|
Settings