/**
* Theme Customizer enhancements for a better user experience.
*
* Contains handlers to make Theme Customizer preview reload changes asynchronously.
* Things like site title, description, and background color changes
* @package Customizr
* @since Customizr 1.0
*/
( function( $, _ ) {
var api = wp.customize,
$_body = $( 'body' ),
$_brand = $( '.brand' ),
$_header = $( '.tc-header' ),
$_bmenu = $_header.find('.btn-toggle-nav'),
$_sidenav = $( '#tc-sn' ),
_wp_sets = ['blogname', 'blogdescription', 'background_color'],
_preview_cbs = {},
fireCzrPrev = function(){
_.map( _preview_cbs, function( _cb, _setId ) {
if ( ! api.has( _build_setId(_setId) ) )
return;
api( _build_setId(_setId) ).bind( _preview_cbs[_setId] );
} );
};
//Patch for wp versions before 4.1 => preview-ready signal isn't triggered
if ( TCPreviewParams && ! TCPreviewParams.preview_ready_event_exists )
$(document).ready(fireCzrPrev);
else
api.bind( 'preview-ready', fireCzrPrev );
/******************************************
* GLOBAL SETTINGS
******************************************/
$.extend( _preview_cbs, {
blogname : function(to) {
$( 'a.site-title' ).html( to );
},
blogdescription : function(to) {
$( 'h2.site-description' ).html( to );
},
background_color : function( to ) {
if ( '#ffffff' == to || '#fff' == to )
$_body.addClass( 'custom-background-white' );
else if ( '' === to )
$_body.addClass( 'custom-background-empty' );
else
$_body.removeClass( 'custom-background-empty custom-background-white' );
},
tc_skin : function( to ) {
if ( TCPreviewParams && TCPreviewParams.themeFolder ) {
//add a new link to the live stylesheet instead of replacing the actual skin link => avoid the flash of unstyle content during the skin load
var $skin_style_element = ( 0 === $('#live-skin-css').length ) ? $('' , { id : 'live-skin-css' , rel : 'stylesheet'}) : $('#live-skin-css'),
skinName = to.replace('.css' , '.min.css'),
skinURL = [ TCPreviewParams.themeFolder , '/inc/assets/css/' , skinName ].join('');
//check if the customSkin param is filtered
if ( TCPreviewParams.customSkin && TCPreviewParams.customSkin.skinName && TCPreviewParams.customSkin.fullPath )
skinURL = to == TCPreviewParams.customSkin.skinName ? TCPreviewParams.customSkin.fullPath : skinURL;
$skin_style_element.attr('href' , skinURL );
if ( 0 === $('#live-skin-css').length )
$('head').append($skin_style_element);
}
},
tc_fonts : function( to ) {
var font_groups = TCPreviewParams.fontPairs;
$.each( font_groups , function( key, group ) {
if ( group.list[to]) {
if ( -1 != to.indexOf('_g_') )
_addGfontLink( group.list[to][1] );
_toStyle( group.list[to][1] );
}
});
},
tc_body_font_size : function( to ) {
var fontSelectors = TCPreviewParams.fontSelectors;
$( fontSelectors.body ).not('.social-icon').css( {
'font-size' : to + 'px',
'line-height' : Number((to * 19 / 14).toFixed()) + 'px'
});
},
tc_link_hover_effect : function( to ) {
if ( false === to )
$_body.removeClass('tc-fade-hover-links');
else
$_body.addClass('tc-fade-hover-links');
},
tc_ext_link_style : function( to ) {
if ( false !== to ) {
$('a' , '.entry-content').each( function() {
var _thisHref = $.trim( $(this).attr('href'));
if( _is_external( _thisHref ) && 'IMG' != $(this).children().first().prop("tagName") ) {
$(this).after('');
}
});
} else {
$( '.tc-external' , '.entry-content' ).remove();
}
},
tc_ext_link_target : function( to ) {
if ( false !== to ) {
$('a' , '.entry-content').each( function() {
var _thisHref = $.trim( $(this).attr('href'));
if( _is_external( _thisHref ) && 'IMG' != $(this).children().first().prop("tagName") ) {
$(this).attr('target' , '_blank');
}
});
} else {
$(this).removeAttr('target');
}
},
//All icons
tc_show_title_icon : function( to ) {
if ( false === to ) {
$('.entry-title').add('h1').add('h2').removeClass('format-icon');
$('.tc-sidebar').add('.footer-widgets').addClass('no-widget-icons');
}
else {
$('.entry-title').add('h1').add('h2').addClass('format-icon');
$('.tc-sidebar').add('.footer-widgets').removeClass('no-widget-icons');
}
},
tc_show_page_title_icon : function( to ) {
//disable if grid customizer on
if ( $('.tc-gc').length )
return;
if ( false === to ) {
$('.entry-title' , '.page').removeClass('format-icon');
}
else {
$('.entry-title' , '.page').addClass('format-icon');
}
},
tc_show_post_title_icon : function( to ) {
if ( false === to ) {
$('.entry-title' , '.single').removeClass('format-icon');
}
else {
$('.entry-title' , '.single').addClass('format-icon');
}
},
tc_show_archive_title_icon : function( to ) {
//disable if grid customizer on
if ( $('.tc-gc').length )
return;
if ( false === to ) {
$('archive h1.entry-title, .blog h1.entry-title, .search h1, .author h1').removeClass('format-icon');
}
else {
$('archive h1.entry-title, .blog h1.entry-title, .search h1, .author h1').addClass('format-icon');
}
},
tc_show_post_list_title_icon : function( to ) {
//disable if grid customizer on
if ( $('.tc-gc').length )
return;
if ( false === to ) {
$('.archive article .entry-title, .blog article .entry-title, .search article .entry-title, .author article .entry-title').removeClass('format-icon');
}
else {
$('.archive article .entry-title, .blog article .entry-title, .search article .entry-title, .author article .entry-title').addClass('format-icon');
}
},
tc_show_sidebar_widget_icon : function( to ) {
if ( false === to )
$('.tc-sidebar').addClass('no-widget-icons');
else
$('.tc-sidebar').removeClass('no-widget-icons');
},
tc_show_footer_widget_icon : function( to ) {
if ( false === to )
$('.footer-widgets').addClass('no-widget-icons');
else
$('.footer-widgets').removeClass('no-widget-icons');
},
//Smooth Scroll
tc_smoothscroll : function(to) {
if ( false === to )
smoothScroll._cleanUp();
else
smoothScroll._maybeFire();
}
});//$.extend()
/******************************************
* HEADER
******************************************/
$.extend( _preview_cbs, {
tc_show_tagline : function( to ) {
if ( false === to ) {
$('.site-description').hide('slow');
$(window).trigger('resize');
}
else {
$('.site-description').show('fast');
$(window).trigger('resize');
}
},
tc_display_boxed_navbar : function( to ) {
if ( false === to )
$_body.addClass('no-navbar');
else
$_body.removeClass('no-navbar');
},
tc_header_layout : function( to ) {
var _current_header_class = $_header.attr('class').match(/logo-(left|right|centered)/),
_current_bmenu_class, _current_brand_class;
if ( ! ( _current_header_class && _current_header_class[0] ) )
return;
_current_header_class = _current_header_class[0];
_current_bmenu_class = 'logo-right' == _current_header_class ? 'pull-left' : 'pull-right';
$_header.removeClass( _current_header_class ).addClass( 'logo-' + to );
$_bmenu.removeClass( _current_bmenu_class ).addClass( 'right' == to ? 'pull-left' : 'pull-right');
if ( "centered" != to ){
_current_brand_class = 'logo-right' == _current_header_class ? 'pull-right' : 'pull-left';
$_brand.removeClass( _current_brand_class ).addClass( 'pull' + to );
}
setTimeout( function() {
$('.brand').trigger('resize');
} , 400);
},
tc_menu_position : function( to ) {
if ( 'aside' != api( _build_setId('tc_menu_style') ).get() ) {
if ( 'pull-menu-left' == to )
$('.navbar-wrapper').addClass(to).removeClass('pull-menu-right');
else
$('.navbar-wrapper').addClass(to).removeClass('pull-menu-left');
}
//sidenav
/*
* move the sidenav from the current position to the new one,
* this means change the sidenav class sn-left|right(-eventual_effect)
* If already open, before the replacement takes place, we close the sidenav,
* and simulate a click(touchstart) to re-open it afterwards
*/
if ( $_sidenav.length > 0 ){
var _refresh = false,
_current_class = $_body.attr('class').match(/sn-(left|right)(-\w+|$|\s)/);
if ( ! ( _current_class && _current_class.length > 2 ) )
return;
if ( $_body.hasClass('tc-sn-visible') ) {
$_body.removeClass('tc-sn-visible');
_refresh = true;
}
$_body.removeClass( _current_class[0] ).
addClass( _current_class[0].replace( _current_class[1] , to.substr(10) ) ); // 10 = length of 'pull-menu-'
if ( _refresh ) {
setTimeout( function(){
$_bmenu.trigger('click').trigger('touchstart');
}, 200);
}
}
},
tc_second_menu_position : function(to) {
if ( 'pull-menu-left' == to )
$('.navbar-wrapper').addClass(to).removeClass('pull-menu-right');
else
$('.navbar-wrapper').addClass(to).removeClass('pull-menu-left');
},
tc_menu_submenu_fade_effect : function( to ) {
if ( false !== to )
$('.navbar-wrapper').addClass('tc-submenu-fade');
else
$('.navbar-wrapper').removeClass('tc-submenu-fade');
},
tc_menu_submenu_item_move_effect : function( to ) {
if ( false !== to )
$('.navbar-wrapper').addClass('tc-submenu-move');
else
$('.navbar-wrapper').removeClass('tc-submenu-move');
},
tc_sticky_header : function( to ) {
if ( false !== to ) {
$_body.addClass('tc-sticky-header').trigger('resize');
//$('#tc-reset-margin-top').css('margin-top' , '');
}
else {
$_body.removeClass('tc-sticky-header').trigger('resize');
$('#tc-reset-margin-top').css('margin-top' , '' );
}
},
tc_sticky_show_tagline : function( to ) {
if ( false !== to )
$_header.addClass('tc-tagline-on').removeClass('tc-tagline-off').trigger('resize');
else
$_header.addClass('tc-tagline-off').removeClass('tc-tagline-on').trigger('resize');
},
tc_sticky_show_title_logo : function( to ) {
if ( false !== to ) {
$_header.addClass('tc-title-logo-on').removeClass('tc-title-logo-off').trigger('resize');
}
else {
$_header.addClass('tc-title-logo-off').removeClass('tc-title-logo-on').trigger('resize');
}
},
tc_sticky_shrink_title_logo : function( to ) {
if ( false !== to )
$_header.addClass('tc-shrink-on').removeClass('tc-shrink-off').trigger('resize');
else
$_header.addClass('tc-shrink-off').removeClass('tc-shrink-on').trigger('resize');
},
tc_sticky_show_menu : function( to ) {
if ( false !== to )
$_header.addClass('tc-menu-on').removeClass('tc-menu-off').trigger('resize');
else
$_header.addClass('tc-menu-off').removeClass('tc-menu-on').trigger('resize');
},
tc_sticky_z_index : function( to ) {
$('.tc-no-sticky-header .tc-header, .tc-sticky-header .tc-header').css('z-index' , to);
},
tc_sticky_transparent_on_scroll : function( to ) {
if ( false !== to ) {
$_body.addClass('tc-transparent-on-scroll');
$_body.removeClass('tc-solid-color-on-scroll');
}
else {
$_body.removeClass('tc-transparent-on-scroll');
$_body.addClass('tc-solid-color-on-scroll');
}
},
tc_woocommerce_header_cart_sticky : function( to ) {
if ( false !== to )
$_header.addClass('tc-wccart-on').removeClass('tc-wccart-off').trigger('resize');
else
$_header.addClass('tc-wccart-off').removeClass('tc-wccart-on').trigger('resize');
}
} );//$.extend()
/******************************************
* SLIDER
******************************************/
$.extend( _preview_cbs, {
tc_slider_default_height : function( to ) {
$('#customizr-slider').addClass('custom-slider-height');
$('.carousel .item').css('line-height' , to + 'px').css('max-height', to + 'px').css('min-height', to + 'px').trigger('resize');
$('.tc-slider-controls').css('line-height' , to + 'px').css('max-height', to + 'px').trigger('resize');
}
} );//$.extend()
/******************************************
* FEATURED PAGES
******************************************/
$.extend( _preview_cbs, {
tc_featured_text_one : function( to ) {
$( '.widget-front p.fp-text-one' ).html( to );
},
tc_featured_text_two : function( to ) {
$( '.widget-front p.fp-text-two' ).html( to );
},
tc_featured_text_three : function( to ) {
$( '.widget-front p.fp-text-three' ).html( to );
},
tc_featured_page_button_text : function( to ) {
if ( to )
$( '.fp-button' ).html( to ).removeClass( 'hidden');
else
$( '.fp-button' ).addClass( 'hidden' );
}
});//$.extend()
/******************************************
* POST METAS
******************************************/
var _post_metas_context = [
{ _context : 'home', _container : '.home' },
{ _context : 'single_post', _container: '.single'},
{ _context : 'post_lists', _container: 'body:not(.single, .home)'}
];
$.extend( _preview_cbs, {
tc_show_post_metas : function( to ) {
var $_entry_meta = $('.entry-header .entry-meta', '.article-container');
if ( false === to )
$_entry_meta.hide('slow');
else if (! $_body.hasClass('hide-post-metas') ){
$_entry_meta.show('fast');
$_body.removeClass('hide-all-post-metas');
}
},
tc_post_metas_update_notice_text : function( to ) {
$( '.tc-update-notice' ).html( to );
},
tc_post_metas_update_notice_format : function( to ) {
$( '.tc-update-notice').each( function() {
var classes = $(this).attr('class').split(' ');
for (var key in classes) {
if ( -1 !== (classes[key]).indexOf('label-') ) {
classes.splice(key, 1);
}
}
//rebuild the class attr
$(this).attr('class' , classes.join(' ') );
});
$( '.tc-update-notice' ).addClass( to );
}
} );//$.extend()
//add callbacks dynamically
$.each( _post_metas_context, function() {
var $_post_metas = $('.entry-header .entry-meta', this._container + ' .article-container' );
if ( false === $_post_metas.length > 0 )
return;
_preview_cbs['tc_show_post_metas_' + this._context] = function( to ) {
if ( false === to ){
$_post_metas.hide('slow');
$_body.addClass('hide-post-metas');
}else{
$_post_metas.show('fast');
$_body.removeClass('hide-post-metas');
}
};//fn
return false;
}); /* end contextual post metas*/
/******************************************
* POST NAVIGATION
******************************************/
$.extend( _preview_cbs, {
tc_show_post_navigation : function( to ) {
var $_post_nav = $( '#nav-below' );
if ( false === to )
$_post_nav.hide('slow');
else if ( ! $_post_nav.hasClass('hide-post-navigation') )
$_post_nav.removeClass('hide-all-post-navigation').show('fast');
}
} );//$.extend()
var _post_nav_context = [
{ _context : 'page', _container : 'body.page' },
{ _context : 'home', _container : 'body.blog.home' },
{ _context : 'single', _container: 'body.single' },
{ _context : 'archive', _container: 'body.archive' }
];
//add callbacks dynamically
$.each( _post_nav_context, function() {
var $_post_nav = $('#nav-below', this._container );
if ( false === $_post_nav.length > 0 )
return;
_preview_cbs[ 'tc_show_post_navigation_' + this._context ] = function( to ) {
if ( false === to )
$_post_nav.hide('slow').addClass('hide-post-navigation');
else
$_post_nav.show('fast').removeClass('hide-post-navigation');
};//fn
return false;
});
/******************************************
* POST THUMBNAILS
******************************************/
$.extend( _preview_cbs, {
tc_post_list_thumb_height : function( to ) {
$('.tc-rectangular-thumb').css('max-height' , to + 'px');
if ( 0 !== $('.tc-rectangular-thumb').find('img').length )
$('.tc-rectangular-thumb').find('img').trigger('refresh-height');//listened by the jsimgcentering $ plugin
},
tc_single_post_thumb_height : function( to ) {
$('.tc-rectangular-thumb').css('height' , to + 'px').css('max-height' , to + 'px').trigger('refresh-height');
}
} );
/******************************************
* SOCIALS
******************************************/
$.extend( _preview_cbs, {
tc_social_in_header : function( to ) {
if ( false === to ) {
$('.tc-header .social-block').hide('slow');
$(window).trigger('resize');
}
else {
$('.tc-header .social-block').show('fast');
$(window).trigger('resize');
}
},
tc_social_in_footer : function( to ) {
if ( false === to ) {
$('.tc-footer-social-links-wrapper' , '#footer').hide('slow');
$(window).trigger('resize');
}
else {
$('.tc-footer-social-links-wrapper' , '#footer').show('fast');
$(window).trigger('resize');
}
},
'tc_social_in_left-sidebar' : function( to ) {
if ( false === to ) {
$('#left .social-block' , '.tc-sidebar').hide('slow');
$(window).trigger('resize');
}
else {
$('#left .social-block' , '.tc-sidebar').show('fast');
$(window).trigger('resize');
}
},
'tc_social_in_right-sidebar' : function( to ) {
if ( false === to ) {
$('#right .social-block' , '.tc-sidebar').hide('slow');
$(window).trigger('resize');
}
else {
$('#right .social-block' , '.tc-sidebar').show('fast');
$(window).trigger('resize');
}
},
tc_social_in_sidebar_title : function( to ) {
$( '.social-block .widget-title' , '.tc-sidebar' ).html( to );
if ( ! to )
$('.social-block' , '.tc-sidebar').hide('slow');
else
$('.social-block' , '.tc-sidebar').show('fast');
}
} );//$.extend()
/******************************************
* GRID
******************************************/
$.extend( _preview_cbs, {
tc_grid_shadow : function( to ) {
if ( false !== to )
$('.article-container').addClass('tc-grid-shadow');
else
$('.article-container').removeClass('tc-grid-shadow');
},
tc_grid_bottom_border : function( to ) {
if ( false !== to )
$('.article-container').addClass('tc-grid-border');
else
$('.article-container').removeClass('tc-grid-border');
},
tc_grid_icons : function( to ) {
if ( false === to )
$('.tc-grid-icon').each( function() { $(this).fadeOut(); } );
else
$('.tc-grid-icon').each( function() { $(this).fadeIn(); } );
}
} );//$.extend()
/******************************************
* GALLERY
******************************************/
$.extend( _preview_cbs, {
tc_gallery_style : function( to ) {
if ( false !== to )
$('.article-container').addClass('tc-gallery-style');
else
$('.article-container').removeClass('tc-gallery-style');
}
} );
/******************************************
* COMMENTS
******************************************/
$.extend( _preview_cbs, {
tc_comment_bubble_color : function( to ) {
$('#custom-bubble-color').remove();
var $style_element = $('