2020-04-07 13:03:04 +00:00
< ? php
2020-08-13 14:53:39 +00:00
/**
* This file handles the Spacing module functionality .
*
* @ package GP Premium
*/
if ( ! defined ( 'ABSPATH' ) ) {
exit ; // No direct access, please.
}
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
// Add any necessary functions.
2020-04-07 13:03:04 +00:00
require_once plugin_dir_path ( __FILE__ ) . 'migration.php' ;
require_once plugin_dir_path ( __FILE__ ) . 'customizer/secondary-nav-spacing.php' ;
if ( ! function_exists ( 'generate_spacing_customize_register' ) ) {
add_action ( 'customize_register' , 'generate_spacing_customize_register' , 99 );
2020-08-13 14:53:39 +00:00
/**
2020-04-07 13:03:04 +00:00
* Add our spacing Customizer options
2020-08-13 14:53:39 +00:00
*
2020-04-07 13:03:04 +00:00
* @ since 0.1
2020-08-13 14:53:39 +00:00
* @ param object $wp_customize The Customizer object .
2020-04-07 13:03:04 +00:00
*/
function generate_spacing_customize_register ( $wp_customize ) {
2020-08-13 14:53:39 +00:00
// Bail if we don't have our defaults.
2020-04-07 13:03:04 +00:00
if ( ! function_exists ( 'generate_spacing_get_defaults' ) ) {
return ;
}
require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php' ;
$defaults = generate_spacing_get_defaults ();
2020-08-13 14:53:39 +00:00
// Register our custom control types.
if ( method_exists ( $wp_customize , 'register_control_type' ) ) {
2020-04-07 13:03:04 +00:00
$wp_customize -> register_control_type ( 'GeneratePress_Pro_Range_Slider_Control' );
$wp_customize -> register_control_type ( 'GeneratePress_Spacing_Control' );
}
2020-08-13 14:53:39 +00:00
// Add our Spacing panel.
// This is only used if the Layout panel in the free theme doesn't exist.
2020-04-07 13:03:04 +00:00
if ( class_exists ( 'WP_Customize_Panel' ) ) {
if ( ! $wp_customize -> get_panel ( 'generate_spacing_panel' ) ) {
2020-08-13 14:53:39 +00:00
$wp_customize -> add_panel (
'generate_spacing_panel' ,
array (
'capability' => 'edit_theme_options' ,
'theme_supports' => '' ,
'title' => __ ( 'Spacing' , 'gp-premium' ),
'description' => __ ( 'Change the spacing for various elements using pixels.' , 'gp-premium' ),
'priority' => 35 ,
)
);
2020-04-07 13:03:04 +00:00
}
}
require_once plugin_dir_path ( __FILE__ ) . 'customizer/top-bar-spacing.php' ;
require_once plugin_dir_path ( __FILE__ ) . 'customizer/header-spacing.php' ;
require_once plugin_dir_path ( __FILE__ ) . 'customizer/content-spacing.php' ;
require_once plugin_dir_path ( __FILE__ ) . 'customizer/sidebar-spacing.php' ;
require_once plugin_dir_path ( __FILE__ ) . 'customizer/navigation-spacing.php' ;
require_once plugin_dir_path ( __FILE__ ) . 'customizer/footer-spacing.php' ;
}
}
if ( ! function_exists ( 'generate_right_sidebar_width' ) ) {
add_filter ( 'generate_right_sidebar_width' , 'generate_right_sidebar_width' );
2020-08-13 14:53:39 +00:00
/**
* Set our right sidebar width .
*
* @ param int $width The sidebar width .
2020-04-07 13:03:04 +00:00
*/
function generate_right_sidebar_width ( $width ) {
2020-08-13 14:53:39 +00:00
// Bail if we don't have our defaults.
2020-04-07 13:03:04 +00:00
if ( ! function_exists ( 'generate_spacing_get_defaults' ) ) {
return $width ;
}
$spacing_settings = wp_parse_args (
get_option ( 'generate_spacing_settings' , array () ),
generate_spacing_get_defaults ()
);
return absint ( $spacing_settings [ 'right_sidebar_width' ] );
}
}
if ( ! function_exists ( 'generate_left_sidebar_width' ) ) {
add_filter ( 'generate_left_sidebar_width' , 'generate_left_sidebar_width' );
2020-08-13 14:53:39 +00:00
/**
* Set our left sidebar width .
*
* @ param int $width The sidebar width .
2020-04-07 13:03:04 +00:00
*/
function generate_left_sidebar_width ( $width ) {
2020-08-13 14:53:39 +00:00
// Bail if we don't have our defaults.
2020-04-07 13:03:04 +00:00
if ( ! function_exists ( 'generate_spacing_get_defaults' ) ) {
return $width ;
}
$spacing_settings = wp_parse_args (
get_option ( 'generate_spacing_settings' , array () ),
generate_spacing_get_defaults ()
);
return absint ( $spacing_settings [ 'left_sidebar_width' ] );
}
}
if ( ! function_exists ( 'generate_spacing_customizer_live_preview' ) ) {
add_action ( 'customize_preview_init' , 'generate_spacing_customizer_live_preview' );
2020-08-13 14:53:39 +00:00
/**
2020-04-07 13:03:04 +00:00
* Add our live preview JS
*/
function generate_spacing_customizer_live_preview () {
wp_enqueue_script (
2020-08-13 14:53:39 +00:00
'generate-spacing-customizer' ,
trailingslashit ( plugin_dir_url ( __FILE__ ) ) . 'customizer/js/customizer.js' ,
array ( 'jquery' , 'customize-preview' ),
GENERATE_SPACING_VERSION ,
true
2020-04-07 13:03:04 +00:00
);
2020-08-13 14:53:39 +00:00
wp_localize_script (
'generate-spacing-customizer' ,
'gp_spacing' ,
array (
'mobile' => generate_premium_get_media_query ( 'mobile' ),
'tablet' => generate_premium_get_media_query ( 'tablet' ),
'desktop' => generate_premium_get_media_query ( 'desktop' ),
'isFlex' => function_exists ( 'generate_is_using_flexbox' ) && generate_is_using_flexbox (),
)
);
2020-04-07 13:03:04 +00:00
}
}
if ( ! function_exists ( 'generate_include_spacing_defaults' ) ) {
/**
2020-08-13 14:53:39 +00:00
* Check if we should include our default . css file .
*
2020-04-07 13:03:04 +00:00
* @ since 1.3 . 42
*/
function generate_include_spacing_defaults () {
return true ;
}
}
if ( ! function_exists ( 'generate_spacing_premium_defaults' ) ) {
add_filter ( 'generate_spacing_option_defaults' , 'generate_spacing_premium_defaults' );
/**
2020-08-13 14:53:39 +00:00
* Add premium spacing defaults .
2020-04-07 13:03:04 +00:00
*
* @ since 1.3
2020-08-13 14:53:39 +00:00
* @ param array $defaults The existing defaults .
2020-04-07 13:03:04 +00:00
*/
function generate_spacing_premium_defaults ( $defaults ) {
$defaults [ 'mobile_menu_item' ] = '' ;
$defaults [ 'mobile_menu_item_height' ] = '' ;
$defaults [ 'sticky_menu_item_height' ] = '' ;
$defaults [ 'off_canvas_menu_item_height' ] = '' ;
2020-08-13 14:53:39 +00:00
$defaults [ 'content_element_separator' ] = '2' ; // em.
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
// These defaults were added to GeneratePress (free) in 3.0.0.
if ( defined ( 'GENERATE_VERSION' ) && version_compare ( GENERATE_VERSION , '3.0.0-alpha.1' , '<' ) ) {
$defaults [ 'mobile_header_top' ] = '' ;
$defaults [ 'mobile_header_right' ] = '' ;
$defaults [ 'mobile_header_bottom' ] = '' ;
$defaults [ 'mobile_header_left' ] = '' ;
$defaults [ 'mobile_widget_top' ] = '' ;
$defaults [ 'mobile_widget_right' ] = '' ;
$defaults [ 'mobile_widget_bottom' ] = '' ;
$defaults [ 'mobile_widget_left' ] = '' ;
$defaults [ 'mobile_footer_widget_container_top' ] = '' ;
$defaults [ 'mobile_footer_widget_container_right' ] = '' ;
$defaults [ 'mobile_footer_widget_container_bottom' ] = '' ;
$defaults [ 'mobile_footer_widget_container_left' ] = '' ;
}
2020-04-07 13:03:04 +00:00
return $defaults ;
}
}
2020-08-13 14:53:39 +00:00
/**
* Build our premium CSS .
*/
function generate_spacing_do_premium_css () {
// Bail if we don't have our defaults.
if ( ! function_exists ( 'generate_spacing_get_defaults' ) ) {
return ;
}
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
$spacing_settings = wp_parse_args (
get_option ( 'generate_spacing_settings' , array () ),
generate_spacing_get_defaults ()
);
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
require_once GP_LIBRARY_DIRECTORY . 'class-make-css.php' ;
$premium_css = new GeneratePress_Pro_CSS ();
$css_output = '' ;
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
// Mobile spacing.
$premium_css -> start_media_query ( generate_premium_get_media_query ( 'mobile-menu' ) );
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
if ( '' !== $spacing_settings [ 'mobile_menu_item' ] ) {
$premium_css -> set_selector ( '.main-navigation .menu-toggle,.main-navigation .mobile-bar-items a,.main-navigation .menu-bar-item > a' );
$premium_css -> add_property ( 'padding-left' , absint ( $spacing_settings [ 'mobile_menu_item' ] ), false , 'px' );
$premium_css -> add_property ( 'padding-right' , absint ( $spacing_settings [ 'mobile_menu_item' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
if ( '' !== $spacing_settings [ 'mobile_menu_item_height' ] ) {
$premium_css -> set_selector ( '.main-navigation .main-nav ul li a,.main-navigation .menu-toggle,.main-navigation .mobile-bar-items a,.main-navigation .menu-bar-item > a' );
$premium_css -> add_property ( 'line-height' , absint ( $spacing_settings [ 'mobile_menu_item_height' ] ), false , 'px' );
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
$premium_css -> set_selector ( '.main-navigation .site-logo.navigation-logo img, .mobile-header-navigation .site-logo.mobile-header-logo img, .navigation-search input[type="search"]' );
2020-08-13 14:53:39 +00:00
$premium_css -> add_property ( 'height' , absint ( $spacing_settings [ 'mobile_menu_item_height' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
$premium_css -> stop_media_query ();
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
// This CSS was added to GeneratePress (free) in 3.0.0.
if ( defined ( 'GENERATE_VERSION' ) && version_compare ( GENERATE_VERSION , '3.0.0-alpha.1' , '<' ) ) {
$premium_css -> start_media_query ( generate_premium_get_media_query ( 'mobile' ) );
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
$premium_css -> set_selector ( '.inside-header' );
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_header_top' ] ) {
$premium_css -> add_property ( 'padding-top' , absint ( $spacing_settings [ 'mobile_header_top' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_header_right' ] ) {
$premium_css -> add_property ( 'padding-right' , absint ( $spacing_settings [ 'mobile_header_right' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_header_bottom' ] ) {
$premium_css -> add_property ( 'padding-bottom' , absint ( $spacing_settings [ 'mobile_header_bottom' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_header_left' ] ) {
$premium_css -> add_property ( 'padding-left' , absint ( $spacing_settings [ 'mobile_header_left' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
$premium_css -> set_selector ( '.widget-area .widget' );
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_widget_top' ] ) {
$premium_css -> add_property ( 'padding-top' , absint ( $spacing_settings [ 'mobile_widget_top' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_widget_right' ] ) {
$premium_css -> add_property ( 'padding-right' , absint ( $spacing_settings [ 'mobile_widget_right' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_widget_bottom' ] ) {
$premium_css -> add_property ( 'padding-bottom' , absint ( $spacing_settings [ 'mobile_widget_bottom' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_widget_left' ] ) {
$premium_css -> add_property ( 'padding-left' , absint ( $spacing_settings [ 'mobile_widget_left' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
$premium_css -> set_selector ( '.footer-widgets' );
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_footer_widget_container_top' ] ) {
$premium_css -> add_property ( 'padding-top' , absint ( $spacing_settings [ 'mobile_footer_widget_container_top' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_footer_widget_container_right' ] ) {
$premium_css -> add_property ( 'padding-right' , absint ( $spacing_settings [ 'mobile_footer_widget_container_right' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_footer_widget_container_bottom' ] ) {
$premium_css -> add_property ( 'padding-bottom' , absint ( $spacing_settings [ 'mobile_footer_widget_container_bottom' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
if ( '' !== $spacing_settings [ 'mobile_footer_widget_container_left' ] ) {
$premium_css -> add_property ( 'padding-left' , absint ( $spacing_settings [ 'mobile_footer_widget_container_left' ] ), false , 'px' );
}
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
$premium_css -> stop_media_query ();
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
$premium_css -> set_selector ( '.post-image, .page-content, .entry-content, .entry-summary, footer.entry-meta' );
$premium_css -> add_property ( 'margin-top' , floatval ( $spacing_settings [ 'content_element_separator' ] ), '2' , 'em' );
} else {
$premium_css -> set_selector ( '.post-image:not(:first-child), .page-content:not(:first-child), .entry-content:not(:first-child), .entry-summary:not(:first-child), footer.entry-meta' );
$premium_css -> add_property ( 'margin-top' , floatval ( $spacing_settings [ 'content_element_separator' ] ), '2' , 'em' );
}
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
$premium_css -> set_selector ( '.post-image-above-header .inside-article div.featured-image, .post-image-above-header .inside-article div.post-image' );
$premium_css -> add_property ( 'margin-bottom' , floatval ( $spacing_settings [ 'content_element_separator' ] ), '2' , 'em' );
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
if ( function_exists ( 'generate_menu_plus_get_defaults' ) ) {
$menu_plus = wp_parse_args (
get_option ( 'generate_menu_plus_settings' , array () ),
generate_menu_plus_get_defaults ()
);
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
if ( 'false' !== $menu_plus [ 'sticky_menu' ] && '' !== $spacing_settings [ 'sticky_menu_item_height' ] ) {
$premium_css -> start_media_query ( generate_premium_get_media_query ( 'tablet' ) . ',' . generate_premium_get_media_query ( 'desktop' ) );
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
$premium_css -> set_selector ( '.main-navigation.sticky-navigation-transition .main-nav > ul > li > a,.sticky-navigation-transition .menu-toggle,.main-navigation.sticky-navigation-transition .mobile-bar-items a, .sticky-navigation-transition .navigation-branding .main-title' );
$premium_css -> add_property ( 'line-height' , absint ( $spacing_settings [ 'sticky_menu_item_height' ] ), false , 'px' );
2020-04-07 13:03:04 +00:00
2020-10-20 15:16:06 +00:00
$premium_css -> set_selector ( '.main-navigation.sticky-navigation-transition .site-logo img, .main-navigation.sticky-navigation-transition .navigation-search input[type="search"], .main-navigation.sticky-navigation-transition .navigation-branding img' );
2020-08-13 14:53:39 +00:00
$premium_css -> add_property ( 'height' , absint ( $spacing_settings [ 'sticky_menu_item_height' ] ), false , 'px' );
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
$premium_css -> stop_media_query ();
}
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
if ( 'false' !== $menu_plus [ 'slideout_menu' ] ) {
$premium_css -> set_selector ( '.main-navigation.slideout-navigation .main-nav > ul > li > a' );
if ( '' !== $spacing_settings [ 'off_canvas_menu_item_height' ] ) {
$premium_css -> add_property ( 'line-height' , absint ( $spacing_settings [ 'off_canvas_menu_item_height' ] ), false , 'px' );
2020-04-07 13:03:04 +00:00
}
}
2020-08-13 14:53:39 +00:00
}
if ( '' !== $premium_css -> css_output () ) {
$css_output = $premium_css -> css_output ();
}
return $css_output ;
}
2020-04-07 13:03:04 +00:00
2020-08-13 14:53:39 +00:00
if ( ! function_exists ( 'generate_spacing_premium_css' ) ) {
add_action ( 'wp_enqueue_scripts' , 'generate_spacing_premium_css' , 105 );
/**
* Add premium spacing CSS
*
* @ since 1.3
*/
function generate_spacing_premium_css () {
$css = generate_spacing_do_premium_css ();
if ( 'inline' === generate_get_css_print_method () && $css ) {
wp_add_inline_style ( 'generate-style' , $css );
2020-04-07 13:03:04 +00:00
}
}
}
2020-08-13 14:53:39 +00:00
add_filter ( 'generate_external_dynamic_css_output' , 'generate_spacing_add_to_external_stylesheet' );
/**
* Add CSS to the external stylesheet .
*
* @ since 1.11 . 0
* @ param string $css Existing CSS .
*/
function generate_spacing_add_to_external_stylesheet ( $css ) {
if ( 'inline' === generate_get_css_print_method () ) {
return $css ;
}
$css .= generate_spacing_do_premium_css ();
return $css ;
}