get( 'header_title' ), array( 'fancy', 'slideshow' ) ) && 'transparent' === $config->get( 'header_background' ) && ( presscore_mixed_header_with_top_line() || ! presscore_header_layout_is_side() ) ) { $transparent_bg_color = dt_stylesheet_color_hex2rgba( $config->get( 'header.transparent.background.color' ), $config->get( 'header.transparent.background.opacity' ) ); echo ' style="background-color: ' . esc_attr( $transparent_bg_color ) . ';"'; } } endif; if ( ! function_exists( 'presscore_header_class' ) ) : /** * Display the classes for the header. * * @since 1.0.0 * @param string|array $class One or more classes to add to the class list. */ function presscore_header_class( $class = '' ) { echo 'class="' . implode( ' ', presscore_get_header_class( $class ) ) . '"'; } endif; if ( ! function_exists( 'presscore_get_header_class' ) ) : /** * Retrieve the classes for the top bar as an array. * * @since 3.0.0 * @param string|array $class * @return array */ function presscore_get_header_class( $class = '' ) { $classes = presscore_split_classes( $class ); $config = presscore_config(); switch ( $config->get( 'header.menu.position' ) ) { case 'left': $classes[] = 'left'; break; case 'right': $classes[] = 'right'; break; case 'center': $classes[] = 'center'; break; case 'justify': $classes[] = 'justify'; break; case 'inside': $classes[] = 'inside'; break; case 'fully_inside': $classes[] = 'fully-inside'; break; case 'outside': $classes[] = 'outside'; break; case 'v_bottom': $classes[] = 'v-bottom'; break; case 'v_center': $classes[] = 'v-center'; break; } switch ( $config->get( 'header.content.position' ) ) { case 'left': $classes[] = 'content-left'; break; case 'right': $classes[] = 'content-right'; break; case 'center': $classes[] = 'content-center'; break; } switch ( $config->get( 'header.menu.background.style' ) ) { case 'content_line': $classes[] = 'content-width-line'; break; case 'fullwidth_line': $classes[] = 'full-width-line'; break; case 'solid': $classes[] = 'bg-behind-menu'; break; } $classes[] = presscore_array_value( $config->get( 'header.logo.position' ), array( 'center' => 'logo-center', 'fully_inside' => 'fully-inside', ) ); if ( $config->get( 'header.elements.enabled' ) && $config->get( 'header.elements' ) ) { $classes[] = 'widgets'; } if ( 'none' !== $config->get( 'header.menu.decoration.style' ) && $config->get_bool( 'header.menu.decoration.style.other.links.is_justified' ) ) { $classes[] = 'full-height'; } if ( $config->get( 'header.is_fullwidth' ) ) { $classes[] = 'full-width'; } if ( 'center' === $config->get( 'header.menu.items.alignment' ) ) { $classes[] = 'h-center'; } if ( 'fullwidth' === $config->get( 'header.menu.items.link' ) ) { $classes[] = 'h-justify'; } if ( $config->get( 'header.menu.dividers.enabled' ) ) { $classes[] = 'dividers'; } if ( $config->get( 'header.menu.dividers.surround' ) ) { $classes[] = 'surround'; } $classes[] = presscore_header_get_decoration_class( $config->get( 'header.decoration' ) ); if ( in_array( $config->get( 'header.layout' ), array( 'side', 'slide_out', 'overlay' ) ) ) { $classes[] = presscore_array_value( $config->get( 'header.layout.side.menu.submenu.position' ), array( 'side' => 'sub-sideways', 'down' => 'sub-downwards', ) ); } if ( $config->get( 'header.menu.submenu.parent_clickable' ) ) { $classes[] = 'dt-parent-menu-clickable'; } $classes = apply_filters( 'presscore_header_class', $classes, $class ); return presscore_sanitize_classes( $classes ); } endif; if ( ! function_exists( 'presscore_get_header_elements_list' ) ) : /** * Get header elements list based on current header layout and $field_name. * * @param string $field_name Field name * @return array Elements list like array( 'element1', 'element2', ... ) */ function presscore_get_header_elements_list( $field_name ) { $header_layout = of_get_option( 'header-layout', 'inline' ); $elements = array(); if ( dt_sanitize_flag( of_get_option( "header-{$header_layout}-show_elements", false ) ) ) { $fields = of_get_option( "header-{$header_layout}-elements", array() ); if ( ! empty( $fields[ $field_name ] ) && is_array( $fields[ $field_name ] ) ) { $elements = $fields[ $field_name ]; } } $elements = apply_filters( "presscore_get_header_elements_list-{$field_name}", $elements ); $elements = apply_filters( 'presscore_get_header_elements_list', $elements ); return $elements; } endif; if ( ! function_exists( 'presscore_render_header_elements' ) ) : /** * Renders header elements for $field_name header field. * * @param string $field_name Field name */ function presscore_render_header_elements( $field_name, $class = '' ) { $field_elements = presscore_get_header_elements_list( $field_name ); if ( $field_elements ) { $classes = presscore_split_classes( $class ); $classes[] = 'mini-widgets'; // wrap open echo '
'; // render elements foreach ( $field_elements as $element ) { switch ( $element ) { case 'search': presscore_top_bar_search_element(); break; case 'social_icons': echo presscore_get_topbar_social_icons(); break; case 'custom_menu': presscore_top_bar_menu_element(); break; case 'login': pressocore_render_login_form(); break; case 'text_area': presscore_top_bar_text_element(); break; case 'text2_area': presscore_top_bar_text2_element(); break; case 'text3_area': presscore_top_bar_text3_element(); break; case 'skype': presscore_top_bar_contact_element('skype'); break; case 'email': presscore_top_bar_contact_element('email'); break; case 'address': presscore_top_bar_contact_element('address'); break; case 'phone': presscore_top_bar_contact_element('phone'); break; case 'working_hours': presscore_top_bar_contact_element('clock'); break; case 'info': presscore_top_bar_contact_element('info'); break; } do_action( "presscore_render_header_element-{$element}" ); } // wrap clos echo '
'; } } endif; if ( ! function_exists( 'presscore_get_topbar_bg_mode_class' ) ) : /** * Return proper class accordingly to $topbar_bg_mode. * * @uses presscore_get_menu_bg_mode_class * @param string $topbar_bg_mode Font size f.e. solid * @return string Class */ function presscore_get_topbar_bg_mode_class( $topbar_bg_mode = '' ) { return presscore_get_menu_bg_mode_class( $topbar_bg_mode ); } endif; if ( ! function_exists( 'presscore_top_bar_class' ) ) : /** * Display the classes for the top bar. * * @since 1.0.0 * @param string|array $class One or more classes to add to the class list. */ function presscore_top_bar_class( $class = '' ) { echo 'class="' . implode( ' ', presscore_get_top_bar_class( $class ) ) . '"'; } endif; if ( ! function_exists( 'presscore_get_top_bar_class()' ) ) : /** * Retrieve the classes for the top bar as an array. * * @since 1.0.0 * @param string|array $class One or more classes to add to the class list. * @return array Array of classes */ function presscore_get_top_bar_class( $class = '' ) { $classes = presscore_split_classes( $class ); $config = presscore_config(); $classes[] = presscore_get_topbar_bg_mode_class( $config->get( 'header.top_bar.background.mode' ) ); $classes = apply_filters( 'presscore_top_bar_class', $classes, $class ); return presscore_sanitize_classes( $classes ); } endif; if ( ! function_exists( 'presscore_top_bar_menu_element' ) ) : /** * Render custom menu microwidget. * * @since 3.1.2 */ function presscore_top_bar_menu_element() { $classes = presscore_get_mini_widget_class( 'header-elements-menu' ); $classes[] = ( 'list' == of_get_option( 'header-elements-menu-style' ) ? 'list-type-menu' : 'select-type-menu' ); presscore_nav_menu_list( 'top', $classes ); } endif; if ( ! function_exists( 'presscore_top_bar_contact_element' ) ) : /** * Render contact information element. * * @since 1.0.0 */ function presscore_top_bar_contact_element( $el ) { $el_id = 'header-elements-contact-' . $el; $caption = of_get_option( $el_id . '-caption' ); if ( $caption ) { $class = array( 'mini-contacts ' . $el ); if ( ! of_get_option( $el_id . '-icon', true ) ) { $class[] = 'icon-off'; } $class = presscore_get_mini_widget_class( $el_id, $class ); echo '' . $caption . ''; } } endif; if ( ! function_exists( 'presscore_top_bar_text_element' ) ) : /** * Render header text mini widget. * * @since 3.0.0 * * @param string $opt_id */ function presscore_top_bar_text_element( $opt_id = 'header-elements-text' ) { $top_text = of_get_option( $opt_id ); if ( $top_text ) { $classes = presscore_get_mini_widget_class( $opt_id, 'text-area' ); echo '
' . wpautop( do_shortcode( $top_text ) ) . '
'; } } endif; if ( ! function_exists( 'presscore_top_bar_text2_element' ) ) : /** * Render header text2 mini widget. * * @since 3.0.0 */ function presscore_top_bar_text2_element() { presscore_top_bar_text_element( 'header-elements-text-2' ); } endif; if ( ! function_exists( 'presscore_top_bar_text3_element' ) ) : /** * Render header text3 mini widget. * * @since 3.0.0 */ function presscore_top_bar_text3_element() { presscore_top_bar_text_element( 'header-elements-text-3' ); } endif; if ( ! function_exists( 'presscore_top_bar_search_element' ) ) : /** * Render header search mini widget. * * @since 3.0.0 */ function presscore_top_bar_search_element() { $classes = presscore_get_mini_widget_class( 'header-elements-search', 'mini-search' ); echo '
'; presscore_get_template_part( 'theme', 'header/searchform' ); echo '
'; } endif; if ( ! function_exists( 'presscore_get_mini_widget_class' ) ) : /** * Return common mini widgets classes. * * @param string $opt_id * @param array $class * @return array */ function presscore_get_mini_widget_class( $opt_id, $class = array() ) { $classes = presscore_split_classes( $class ); $classes[] = presscore_array_value( of_get_option( $opt_id . '-on-desktops', 'show' ), array( 'show' => 'show-on-desktop', 'hide' => 'hide-on-desktop', ) ); $classes[] = presscore_array_value( of_get_option( $opt_id . '-first-header-switch', 'near_logo' ), array( 'in_menu' => 'in-menu-first-switch', 'near_logo' => 'near-logo-first-switch', 'hidden' => 'hide-on-first-switch', ) ); $classes[] = presscore_array_value( of_get_option( $opt_id . '-second-header-switch', 'in_menu' ), array( 'in_menu' => 'in-menu-second-switch', 'near_logo' => 'near-logo-second-switch', 'hidden' => 'hide-on-second-switch', ) ); $classes = apply_filters( 'presscore_mini_widget_class', $classes, $class ); return presscore_sanitize_classes( $classes ); } endif; if ( ! function_exists( 'presscore_get_topbar_social_icons' ) ) : /** * Return topbar social icons. Data grabbed from theme options. * * @since 1.0.0 * @return string */ function presscore_get_topbar_social_icons() { $opt_id = 'header-elements-soc_icons'; $saved_icons = of_get_option( $opt_id ); if ( ! $saved_icons || ! is_array( $saved_icons ) ) { return ''; } $icons_data = presscore_get_social_icons_data(); $icons_white_list = array_keys( $icons_data ); $clean_icons = array(); foreach ( $saved_icons as $saved_icon ) { if ( ! is_array( $saved_icon ) || empty( $saved_icon['url'] ) || empty( $saved_icon['icon'] ) || ! in_array( $saved_icon['icon'], $icons_white_list ) ) { continue; } $icon = $saved_icon['icon']; $clean_icons[] = array( 'icon' => $icon, 'title' => $icons_data[ $icon ], 'link' => $saved_icon['url'] ); } if ( ! $clean_icons ) { return ''; } $classes = presscore_get_mini_widget_class( $opt_id, 'soc-ico' ); $classes[] = presscore_array_value( of_get_option( "{$opt_id}-bg" ), array( 'gradient' => 'gradient-bg', 'outline' => 'outline-style', 'accent' => 'accent-bg', 'color' => 'custom-bg', 'disabled' => 'disabled-bg', ) ); $classes[] = presscore_array_value( of_get_option( "{$opt_id}-hover-bg" ), array( 'gradient' => 'hover-gradient-bg', 'outline' => 'outline-style-hover', 'accent' => 'hover-accent-bg', 'color' => 'hover-custom-bg', 'disabled' => 'hover-disabled-bg', ) ); return '
' . presscore_get_social_icons( $clean_icons ) . '
'; } endif; if ( ! function_exists( 'pressocore_render_login_form' ) ) : /** * Dispay login form. * * @since 3.0.0 */ function pressocore_render_login_form() { $config = presscore_config(); if ( is_user_logged_in() ) { $caption = $config->get( 'header.elements.logout.caption' ); $login_link = wp_logout_url(); } else { $caption = $config->get( 'header.elements.login.caption' ); $login_link = esc_url( $config->get( 'header.elements.login.url' ) ); if ( ! $login_link ) { $login_link = wp_login_url(); } } $class = array( 'submit' ); if ( ! $config->get( 'header.elements.login.icon.enabled' ) ) { $class[] = 'icon-off'; } else if ( ! $caption ) { $class[] = 'text-disable'; } if ( ! $caption ) { $caption = ' '; } $classes = presscore_get_mini_widget_class( 'header-elements-login', 'mini-login' ); echo '
' . esc_html( $caption ) . '
'; } endif; if ( ! function_exists( 'presscore_mixed_header_class' ) ) : /** * Display mixed header class. * * @since 3.0.0 * @param string|array $class */ function presscore_mixed_header_class( $class = '' ) { echo 'class="' . implode( ' ', presscore_get_mixed_header_class( $class ) ) . '"'; } endif; if ( ! function_exists( 'presscore_get_mixed_header_class' ) ) : /** * Returns mixed header classes as array. * * @since 3.0.0 * @param string|array $class * @return array */ function presscore_get_mixed_header_class( $class = '' ) { $classes = presscore_split_classes( $class ); $config = presscore_config(); switch ( $config->get( 'header.mixed.view' ) ) { case 'side_line': $classes[] = 'side-header-v-stroke'; break; case 'top_line': $classes[] = 'side-header-h-stroke'; if ( dt_sanitize_flag( $config->get( 'header.mixed.view.top_line.is_fullwidth' ) ) ) { $classes[] = 'full-width'; } $logo_pos = $config->get( 'header.mixed.view.top_line.logo.position' ); if ( 'center' == $logo_pos ) { $classes[] = 'logo-center'; } else if ( 'left' == $logo_pos ) { $classes[] = 'logo-left'; } else if ( 'right' == $logo_pos ) { $classes[] = 'logo-right'; } break; case 'menu_icon': default: $classes[] = 'side-header-menu-icon'; if ( dt_sanitize_flag( $config->get( 'header.mixed.view.menu_icon.floating_logo.enabled' ) ) ) { $classes[] = 'floating-logo'; } break; } $classes[] = presscore_header_get_decoration_class( $config->get( 'header.mixed.decoration' ) ); $classes = apply_filters( 'presscore_mixed_header_class', $classes, $class ); return presscore_sanitize_classes( $classes ); } endif; if ( ! function_exists( 'presscore_header_add_mobile_logo_classe_filter' ) ) : /** * Add mobile logo classes to $classes array. * * @since 3.0.0 * @param array $classes * @return array */ function presscore_header_add_mobile_logo_classe_filter( $classes = array() ) { // Do not add mobile logo classes to main header for layouts with mixed header if ( presscore_header_layout_is_mixed() && 'presscore_header_class' === current_filter() ) { return $classes; } if ( 'mobile' === presscore_config()->get( 'header.mobile.logo.first_switch' ) ) { $classes[] = 'show-device-logo'; } if ( 'mobile' === presscore_config()->get( 'header.mobile.logo.second_switch' ) ) { $classes[] = 'show-mobile-logo'; } return $classes; } add_filter( 'presscore_header_class', 'presscore_header_add_mobile_logo_classe_filter' ); add_filter( 'presscore_mixed_header_class', 'presscore_header_add_mobile_logo_classe_filter' ); endif; if ( ! function_exists( 'presscore_header_get_decoration_class' ) ) : /** * Return decoration class based on $style. * * @param string $style * @return string */ function presscore_header_get_decoration_class( $style ) { switch ( $style ) { case 'shadow': return 'shadow-decoration'; case 'line': return 'line-decoration'; } return ''; } endif; if ( ! function_exists( 'presscore_header_menu_icon' ) ) : /** * Display mobile menu icon. * * @since 3.0.0 */ function presscore_header_menu_icon() { echo ''; } endif; if ( ! function_exists( 'presscore_get_mixed_header_layout' ) ) : /** * Return mixed header layout string based on 'header.mixed.view'. * * @since 3.0.0 * @return string */ function presscore_get_mixed_header_layout() { return str_replace( '_', '-', strtolower( presscore_config()->get( 'header.mixed.view' ) ) ); } endif; if ( ! function_exists( 'presscore_header_with_bg' ) ) : /** * Determine has header background or not. * * @since 3.0.0 * @return boolean */ function presscore_header_with_bg() { $config = presscore_config(); switch ( $config->get( 'header_title' ) ) { case 'slideshow': case 'fancy': return true; case 'enabled': return in_array( $config->get( 'page_title.background.mode' ), array( 'background', 'gradient' ) ); } return false; } endif; if ( ! function_exists( 'presscore_header_is_transparent' ) ) : /** * Determine is header transparent. * * @since 3.0.0 * @return boolean */ function presscore_header_is_transparent() { return presscore_header_with_bg() && 'transparent' === presscore_config()->get( 'header_background' ); } endif; if ( ! function_exists( 'presscore_header_layout_is_side' ) ) : /** * Determine that header layout is side or slide_out or overlay. * * @since 3.0.0 * @return boolean */ function presscore_header_layout_is_side() { return in_array( presscore_config()->get( 'header.layout' ), array( 'side', 'slide_out', 'overlay' ) ); } endif; if ( ! function_exists( 'presscore_mixed_header_with_top_line' ) ) : /** * Determine that header with the top_line. * * @since 3.0.0 * @return boolean */ function presscore_mixed_header_with_top_line() { return 'top_line' === presscore_config()->get( 'header.mixed.view' ); } endif; if ( ! function_exists( 'presscore_header_layout_is_mixed' ) ) : /** * Determine that the header is mixed. * * @since 3.0.0 * @return boolean */ function presscore_header_layout_is_mixed() { return in_array( presscore_config()->get( 'header.layout' ), array( 'slide_out', 'overlay' ) ); } endif;