Current File : /home/pacjaorg/wpt.pacja.org/wp-content/themes/betheme/functions/modules/class-mfn-sidemenu.php |
<?php
defined( 'ABSPATH' ) || exit;
/*error_reporting(E_ALL);
ini_set("display_errors", 1);*/
class MfnSideMenu {
public $id = false;
public $classes = array();
public $datatags = array();
public $align = false;
public $visibility = false;
public $blur = false;
public $entrance = false;
public $overlay = false;
public function __construct( $id ){
$this->id = $id;
$this->datatags[] = 'data-id="'.$id.'"';
$this->align = !empty( get_post_meta( $this->id, 'sidemenu_position', true) ) ? 'right' : 'left';
$this->visibility = !empty( get_post_meta( $this->id, 'mfn_sidemenu_visibility', true) ) ? get_post_meta( $this->id, 'mfn_sidemenu_visibility', true) : '';
$this->blur = !empty( get_post_meta( $this->id, 'sidemenu_overlay_blur', true) ) ? get_post_meta( $this->id, 'sidemenu_overlay_blur', true) : false;
$this->overlay = !empty( get_post_meta( $this->id, 'sidemenu_overlay_background', true) ) ? get_post_meta( $this->id, 'sidemenu_overlay_background', true) : false;
$this->entrance = !empty( get_post_meta( $this->id, 'sidemenu_entrance_animation', true) ) ? get_post_meta( $this->id, 'sidemenu_entrance_animation', true) : 'default';
// align class
$this->classes[] = 'mfn-sidemenu-align-'.$this->align;
$this->datatags[] = 'data-align="'.$this->align.'"';
// entrance
$this->datatags[] = 'data-entrance="'.$this->entrance.'"';
// close button
$this->classes[] = !empty( get_post_meta( $this->id, 'sidemenu_close_button_active', true) ) ? 'mfn-sidemenu-closebutton-active' : 'mfn-sidemenu-closebutton-hidden';
// close button align
$this->classes[] = !empty( get_post_meta( $this->id, 'sidemenu_close_button_align', true) ) ? 'mfn-sidemenu-close-button-left' : 'mfn-sidemenu-close-button-right';
// close on overlay click
$this->classes[] = !empty( get_post_meta( $this->id, 'sidemenu_close_on_overlay_click', true) ) ? 'mfn-sidemenu-close-on-overlay-click' : '';
// body scroll
$this->datatags[] = !empty( get_post_meta( $this->id, 'sidemenu_body_scroll', true) ) ? 'data-bodyscroll="enabled"' : 'data-bodyscroll="disabled"';
if( !empty($this->visibility) ) $this->classes[] = 'mfn-sidemenu-'.$this->visibility;
}
public function classes() {
return $this->classes;
}
public function render( $css = true ) {
echo '<div id="mfn-sidemenu-tmpl-'.$this->id.'" class="mfn-sidemenu-tmpl '.implode(' ', $this->classes).'" '.implode(' ', $this->datatags).'>';
$mfn_footer_builder = new Mfn_Builder_Front( $this->id );
$mfn_footer_builder->show( false );
echo '</div>';
if( $css ) $this->css();
}
public function css(){
$tablet_styles = array();
$mobile_styles = array();
$laptop_styles = array();
$get_styles = get_post_meta($this->id, 'mfn-page-options-style', true);
/*echo '<pre>';
print_r($get_styles);
echo '</pre>';*/
$avdw = false;
$avtw = false;
$avmw = false;
echo '<style class="mfn-sidemenu-tmpl-local-styles">';
if( !empty($this->visibility) ) {
echo '@media(min-width: 1240px) { #mfn-sidemenu-tmpl-'.$this->id.'{display: block; opacity:1; '.$this->align.': 0;} }';
if( !empty( get_post_meta($this->id, 'mfn_sidemenu_visibility_header', true) ) ) echo '@media(min-width: 1240px) { #mfn-header-template{display: none !important;} }';
}
echo '.mfn-sidemenu-'.$this->id.'-active #Wrapper{transition: 0.5s; pointer-events: none;}';
echo '.mfn-sidemenu-'.$this->id.'-active body.mobile-side-slide{overflow-x: hidden;}';
if( $this->blur ) echo '.mfn-sidemenu-'.$this->id.'-active #Wrapper{filter: blur('.$this->blur.'px); overflow: hidden;}';
if( $this->overlay ) echo '.mfn-sidemenu-'.$this->id.'-active body:before{content: ""; position: fixed; top: 0; left: 0; z-index: 200; display: block; width: 100%; height: 100%; background-color: '.$this->overlay.'; transition: 0.5s;}';
if( $this->entrance == 'move-content' ) {
$entrance_offset = $this->align == 'left' ? '200px' : '-200px';
echo '.mfn-sidemenu-'.$this->id.'-active #Wrapper{ transform:translateX('.$entrance_offset.'); }';
echo '.mfn-closing-sidemenu-'.$this->id.' #Wrapper{ transition: 0.4s; transform:translateX(0)}';
}
if( $get_styles ){
$styles = $get_styles;
foreach($styles as $s=>$style) {
$s = str_replace('postid', $this->id, $s);
echo $s.'{';
foreach ($style as $st => $value) {
if( strpos($st, '_tablet') === false && strpos($st, '_mobile') === false && strpos($st, '_laptop') === false ) {
if( is_array($value) ){
foreach ($value as $v => $val) {
if( !empty($val) ) echo $st.'-'.$v.':'.$val.';';
}
}else{
if( !empty($value) ) echo $st.':'.$value.';';
if( !empty($this->visibility) && $this->visibility == 'always-visible' && $st == '--mfn-sidemenu-width' ) $avdw = $value;
}
}else{
if( strpos($st, '_tablet') !== false ) {
$tablet_styles[$s][str_replace('_tablet', '', $st)] = $value;
}else if( strpos($st, '_mobile') !== false ) {
$mobile_styles[$s][str_replace('_mobile', '', $st)] = $value;
}else if( strpos($st, '_laptop') !== false ) {
$laptop_styles[$s][str_replace('_laptop', '', $st)] = $value;
}
}
}
echo '}';
}
if( count($laptop_styles) > 0 ) {
echo '@media(max-width: 1240px) {';
foreach($laptop_styles as $s=>$style) {
echo $s.'{';
foreach($style as $st=>$value){
if( is_array($value) && is_iterable($value) ){
foreach ($value as $v => $val) {
if( !empty($val) ) echo $st.'-'.$v.':'.$val.';';
}
}else{
if( !empty($value) ) echo $st.':'.$value.';';
}
}
echo '}';
}
echo '}';
}
if( count($tablet_styles) > 0 ) {
echo '@media(max-width: 959px) {';
foreach($tablet_styles as $s=>$style) {
echo $s.'{';
foreach($style as $st=>$value){
if( is_array($value) && is_iterable($value) ){
foreach ($value as $v => $val) {
if( !empty($val) ) echo $st.'-'.$v.':'.$val.';';
}
}else{
if( !empty($value) ) echo $st.':'.$value.';';
}
}
echo '}';
}
echo '}';
}
if( count($mobile_styles) > 0 ) {
echo '@media(max-width: 767px) {';
foreach($mobile_styles as $s=>$style) {
echo $s.'{';
foreach($style as $st=>$value){
if( is_array($value) && is_iterable($value) ){
foreach ($value as $v => $val) {
if( !empty($val) ) echo $st.'-'.$v.':'.$val.';';
}
}else{
if( !empty($value) ) echo $st.':'.$value.';';
}
}
echo '}';
}
echo '}';
}
if( $avdw ) echo 'body{ --mfn-sidemenu-always-visible-offset: '.$avdw .' }';
}
echo '</style>';
}
}