• File: customizer.js
  • Full Path: /home/blwgracecity/jesusexp.org/wp-content/plugins/wordpress-seo/src/deprecated/src/customizer.js
  • File size: 16 KB
  • MIME-type: text/plain
  • Charset: utf-8
var pagelayer_fontHtmlArray = {};

(function($) {
	var api = wp.customize;
	
	api.bind( 'ready', function() {

		var controls = api.settings.controls;
		
		for(var control in controls){
			if( !('show_filter' in controls[control]) ){
				continue;
			}			
			
			var filter = controls[control]['show_filter'];
			for(var showParam in filter){
				var except = showParam.substr(0, 1) == '!' ? true : false;
				showParam = except ? showParam.substr(1) : showParam;
				
				// Show and Hide Controls 
				api( showParam, function( setting ){
					api.control( control, function( _control ) {
						var visibility = function() {
							var _filter = _control.params['show_filter'];
							for(var _showParam in _filter){
								var reqval = _filter[_showParam];
								var val = setting.get();
								
								var toShow = false;
								
								if(typeof reqval == 'string' && reqval == val){
									toShow = true;
								}
								
								// Its an array and a value is found, then dont show
								if(typeof reqval != 'string' && reqval.indexOf(val) > -1){
									toShow = true;
								}
								
								if(except && !toShow || !except && toShow  ){
									_control.container.show();
									return
								}
								
								_control.container.hide();
							}
							
						};

						visibility();
						setting.bind( visibility );
					});
				});
			}
		}
		
		// Expand pagelayer setting handler
		api.section('pagelayer_global_fonts_sec', function( section ){
			section.expanded.bind(function( isExpanding ){
				
				// Set default value
				section.container.find('select[data-font-key]').each(function(){
					var ref = jQuery(this),
						name = ref.attr('data-font-key'),
						value = ref.attr('data-default-value');
					
					ref.html(pagelayer_fontHtmlArray[name]).val(value);
					ref.removeAttr('data-font-key');
				});
			});
		});
		
		
	});
	
})(jQuery);

/**
 * Initialization trigger.
 */
jQuery(document).ready( function(){
	
	// Create color setting 
	pagelayer_alpha_color_control_init();
	
	var option = function(val, lang){
		var lang = lang || 'Default';
		return '<option value="'+val+'">'+lang+'</option>';
	}
	
	// Create font setting list
	for(var sk in pagelayer_global_font_settings){
		var sval = pagelayer_global_font_settings[sk];			
		if('choices' in sval){
			var fontHtml = '';
			for(  var value in sval['choices'] ) {
				
				if(typeof sval['choices'][value] !== 'object'){
					fontHtml += option(value, sval['choices'][value]);
					continue;
				}
				
				if(value != 'default'){
					fontHtml += '<optgroup label="'+value+'">';
				}
				
				for (x in sval['choices'][value]){
					fontHtml += option((jQuery.isNumeric(x) ? sval['choices'][value][x] : x), sval['choices'][value][x]);
				}
			}
			
			pagelayer_fontHtmlArray[sk] = fontHtml;
		}
	}
	
	// Show hide typography
	jQuery(document).on('click.pagelayer-typo-icon', function (e){
		var target = jQuery(e.target);
		var isTypo = target.closest('.pagelayer-control-typo');
		var isIcon = target.closest('.pagelayer-control-typo-icon');
		var typoHolder = isIcon.closest('.pagelayer-control-typo-holder');

		if(isTypo.length > 0){
			return;
		}
		
		if(isIcon.length > 0){
			
			// Set default value
			typoHolder.find('select[data-font-key]').each(function(){
				var ref = jQuery(this),
					name = ref.attr('data-font-key'),
					value = ref.attr('data-default-value');
				
				ref.html(pagelayer_fontHtmlArray[name]).val(value);
				ref.removeAttr('data-font-key');
			});
			
			var globalInput = typoHolder.find('.pagelayer-global-font-input');
			
			if(!pagelayer_empty(globalInput)){
				// Show the global values if is not customize
				typoHolder.find('.pagelayer-control-typo-fields').attr('pagelayer-set-global', 1);
				typoHolder.find('select, input').each(function(){
					var sEle = jQuery(this);
					var val = sEle.val();
					
					if(pagelayer_empty(val)){
						return true;
					}
					
					sEle.closest('.pagelayer-control-typo-fields').removeAttr('pagelayer-set-global');
				});
				
				typoHolder.find('[pagelayer-set-global="1"] .pagelayer-typo-global-default').trigger('click');
			}
			
			typoHolder.find('.pagelayer-control-typo').slideToggle(100);
			return;
		}
		
		jQuery('.pagelayer-control-typo').slideUp(100);
	});
	
	// Show hide global color option
	jQuery(document).on('click.pagelayer-global-color-icon', function (e){
		var target = jQuery(e.target);
		var isGcolor = target.closest('.pagelayer-global-color-list');
		var isGIcon = target.closest('.pagelayer-control-global-color-icon');
		
		if(isGcolor.length > 0){
			return;
		}
		
		if(isGIcon.length > 0){
			var listEle = isGIcon.closest('li').find('.pagelayer-global-color-list');
			jQuery('.pagelayer-global-color-list').not(listEle).slideUp(100);
			listEle.slideToggle(100);
			return;
		}
		
		jQuery('.pagelayer-global-color-list').slideUp(100);
	});
	
	// Hide global color option
	jQuery(document).on('focus', '.wp-color-result', function(e){
		jQuery('.pagelayer-global-color-list').slideUp(100);
	});
	
	// Show hide global fonts option
	jQuery('#customize-theme-controls').on('click.pagelayer-global-typo-icon', function (e){
		var target = jQuery(e.target);
		var isGcolor = target.closest('.pagelayer-global-font-list');
		var isGIcon = target.closest('.pagelayer-control-global-typo-icon');
		var typoHolder = isGIcon.closest('.pagelayer-control-typo-holder');
			
		if(isGcolor.length > 0){
			return;
		}
		
		if(isGIcon.length > 0){
			typoHolder.find('.pagelayer-global-font-list').slideToggle(100);
			return;
		}
		
		jQuery('.pagelayer-global-font-list').slideUp(100);
	});
	
	// Device handler
	jQuery('#customize-theme-controls').on('click', '.pagelayer-devices button', function(e){
		
		e.stopPropagation();
		
		var device = jQuery(this).data('device');
		var devices = {'desktop' : 'tablet', 'tablet' : 'mobile', 'mobile' : 'desktop'};
		jQuery('.devices-wrapper .devices [data-device="'+devices[device]+'"]').click();
	});
	
	// Add attr to detect device
	jQuery('#customize-theme-controls').attr('data-device-detector', 'desktop');
	
	// Device handler
	jQuery('.devices-wrapper .devices button[data-device]').on('click', function(e){
		
		e.stopPropagation();
		
		var device = jQuery(this).data('device');
		
		jQuery('.pagelayer-devices .active-device').removeClass('active-device');
		jQuery('.pagelayer-devices [data-device="'+device+'"]').addClass('active-device');
		
		jQuery('[data-device-detector]').attr('data-device-detector', device);
		
	});
	
	// Units handler
	jQuery('.pagelayer-units').each(function(){
		var units = jQuery(this);
		var uList = units.find('[data-unit]');
		var input = units.find('.pagelayer-unit-input');
		var uActive = units.find('[data-unit="'+input.val()+'"]');
		
		units.find('[data-unit]').on('click', function(){
			var uEle = jQuery(this);
			uList.removeClass('active');
			uEle.addClass('active');
			input.val(uEle.data('unit')).trigger('input');
		});
		
		if(uActive.length > 0){
			uActive.click();
			return;
		}
		
		//uList.first().click();
		
	});
	
	// Accordion Tab handlers
	jQuery('.pagelayer-accordion-tab').on('click', function(){
		var toggle = jQuery(this);
		var allToggle = toggle.closest('ul').find('.pagelayer-accordion-tab').not(toggle);
		
		allToggle.nextUntil('.pagelayer-accordion-tab').slideUp();
		allToggle.removeClass('pagelayer-active-accordion-tab')
		toggle.nextUntil('.pagelayer-accordion-tab').slideToggle();
		
		toggle.toggleClass('pagelayer-active-accordion-tab');
		
		var dash = toggle.find('.pagelayer-customize-heading .dashicons');
		var allDash = toggle.closest('ul').find('.pagelayer-accordion-tab .pagelayer-customize-heading .dashicons');
		
		allDash.addClass('dashicons-arrow-right-alt2');
		allDash.removeClass('dashicons-arrow-down-alt2');
		
		if(toggle.hasClass('pagelayer-active-accordion-tab')){
			dash.addClass('dashicons-arrow-down-alt2');
			dash.removeClass('dashicons-arrow-right-alt2');
		}
    
	});
	
	// Close all accordion tabs
	jQuery('.pagelayer-accordion-tab').nextUntil('.pagelayer-accordion-tab').hide();
	
	// Link padding control field handler
	jQuery('.pagelayer-control-padding').each(function(){
		pagelayer_control_padding_handler(jQuery(this));
	});

	// Link Global Color Palette
	jQuery('.pagelayer-global-setting-color .dashicons').click(function(){
		jQuery('#accordion-section-pagelayer_global_colors_sec .accordion-section-title').click();
	});

	// Link Global Font Palette
	jQuery('.pagelayer-global-setting-font .dashicons-admin-generic').click(function(){
		jQuery('#accordion-section-pagelayer_global_fonts_sec .accordion-section-title').click();
	});
	
	// Color Palette Custom Control
	pagelayer_color_palette_control_handler();
	
	// Color Palette Custom Control
	pagelayer_font_palette_control_handler();
	
	// Global color list handler
	pagelayer_global_color_list_handler();
	
	// Global font list handler
	pagelayer_global_font_list_handler();
	
	// Slider handler
	pagelayer_control_slider_handler();
	
});

// Global font list handler
function pagelayer_global_font_list_handler(){
	
	var font_list = '';
	
	// Create global font list
	for(var font in pagelayer_global_fonts){
		font_list += '<div class="pagelayer-global-font-list-item" data-global-id="'+font+'">'+
				'<span class="pagelayer-global-font-title">'+ pagelayer_global_fonts[font]['title'] +'</span>'+
			'</div>';
	}
	
	jQuery('.customize-control-pagelayer-typo-control .pagelayer-control-typo-holder').each(function(){
		var fHolder = jQuery(this);
		var fList = fHolder.find('.pagelayer-global-font-list');
		
		if(fList.length < 1){
			return;
		}
		
		// Add list of font list
		fList.append(font_list);
		
		var globalInput = fHolder.find('.pagelayer-global-font-input');
		var selectfont = globalInput.data('key');
		
		// Restore global value
		fHolder.find('.pagelayer-typo-global-default').on('click', function(e){
			e.preventDefault();
			e.stopPropagation();
			
			var sEle = jQuery(this);
			var fieldHolder = sEle.closest('.pagelayer-control-typo-fields');
			var globalID = globalInput.val();
			
			if(pagelayer_empty(globalID) || pagelayer_empty(pagelayer_global_fonts[globalID])){
				return;
			}
			
			var allInput = fieldHolder.find('select, input');
			var name = allInput.first().attr('name');
			var setFonts = pagelayer_global_fonts[globalID]['value'];
			
			// Set default
			var modes = {desktop: '', tablet: '_tablet', mobile: '_mobile'};
			var val = '';
			
			fieldHolder.attr('pagelayer-set-global', 1);
			allInput.val(val).trigger('change');
			
			if(name in setFonts){
				val = setFonts[name];
			}
					
			if(typeof val == 'object'){
				
				for(var mode in modes){
					var _val = '';
					if(mode in val){
						_val = val[mode];
					}
					
					fieldHolder.find('[name="'+name+modes[mode]+'"]').val(_val);
				}
				
				return;
			}
			
			allInput.val(val);
		});
		
		if(fList.find('[data-global-id="'+selectfont+'"]').length > 0){
			fList.find('[data-global-id="'+selectfont+'"]').addClass('pagelayer-global-selected');
			
			// Set active
			fHolder.find('.pagelayer-control-global-typo-icon').addClass('pagelayer-active-global');
		}
		
		// On change any field we need to handle for the global
		fHolder.find('select, input').on('input', function(){
			var sEle = jQuery(this);
			var fieldHolder = sEle.closest('.pagelayer-control-typo-fields');
			
			if(fieldHolder.attr('pagelayer-set-global') == '1'){
				fieldHolder.removeAttr('pagelayer-set-global');
				fieldHolder.find('select, input').trigger('change');
			}
		});
		
	});
	
	jQuery('#customize-theme-controls').on('click', '.pagelayer-global-font-list-item', function(){
		var listItem = jQuery(this);
		var globalID = listItem.data('global-id');
		var listHolder = listItem.closest('.pagelayer-global-font-list');
		var holder = listItem.closest('.pagelayer-control-typo-holder');
		var allInputs = holder.find('select, input');
		
		// Remove global font
		if(listItem.hasClass('pagelayer-global-selected')){
			listItem.removeClass('pagelayer-global-selected');
			holder.find('.pagelayer-control-global-typo-icon').removeClass('pagelayer-active-global');
			holder.find('.pagelayer-global-font-input').val('');
			holder.removeClass('pagelayer-global-on');
			allInputs.trigger('input');
			allInputs.closest('.pagelayer-control-typo-fields').removeAttr('pagelayer-set-global');
			listHolder.hide();
			return;
		}
		
		// Remove previous selecttion
		listHolder.find('.pagelayer-global-selected').removeClass('pagelayer-global-selected')
		listHolder.hide();
		
		listItem.addClass('pagelayer-global-selected');
		
		var key = holder.find( '.pagelayer-global-font-input' ).attr( 'data-customize-setting-link' );
		
		// Empty all the typo
		allInputs.val('').trigger('input');
		allInputs.closest('.pagelayer-control-typo-fields').attr('pagelayer-set-global', 1);
		holder.addClass('pagelayer-global-on');
		
		// Set the actual option value to empty string.
		wp.customize( key, function( obj ) {
			obj.set(globalID);
		});
		
		// Apply all global values
		holder.find('.pagelayer-typo-global-default').click();
		holder.find('.pagelayer-control-global-typo-icon').addClass('pagelayer-active-global');
	});
}

// Global color list handler
function pagelayer_global_color_list_handler(){	
	
	jQuery(document).on('click', '.pagelayer-global-color-list-item', function(e, skip_update){
		
		skip_update = skip_update || false;
		
		var listItem = jQuery(this);
		var globalID = listItem.data('global-id');
		var listHolder = listItem.closest('.pagelayer-global-color-list');
		
		// Remove previous selecttion
		listHolder.find('.pagelayer-global-selected').removeClass('pagelayer-global-selected');
		listItem.addClass('pagelayer-global-selected');
		listHolder.hide();
		
		var input = listItem.closest('li').find( '.pagelayer-alpha-color-control' )
		var code = '$'+globalID;
		var color = pagelayer_global_colors[globalID]['value'];
		
		input.unbind('change.pagelayer_global input.pagelayer_global color_change.pagelayer_global');
		
		if(!skip_update){
			var key = input.attr( 'data-customize-setting-link' );

			// Set the actual option value to empty string.
			wp.customize( key, function( obj ) {
				obj.set(code);
			});
		}
			
		// Set the actual option value to empty string.
		input.val( color );
		input.closest('.wp-picker-container').find('.wp-color-result').css({'background-color': color});
		
		input.on('change.pagelayer_global input.pagelayer_global color_change.pagelayer_global', function(){
			var colorCode = jQuery(this).val();
			if(jQuery.trim(colorCode) == color){
				return;
			}
			listItem.closest('li').find('.pagelayer-control-global-color-icon').removeClass('pagelayer-active-global');
			listHolder.find('.pagelayer-global-selected').removeClass('pagelayer-global-selected');
		});

		listItem.closest('li').find('.pagelayer-control-global-color-icon').addClass('pagelayer-active-global');
	});
	
	jQuery('.pagelayer-global-color-list-item.pagelayer-global-selected').trigger('click', [true]);
}

var pagelayer_global_colors_timmer = {};
// Color palette Custom Control
function pagelayer_color_palette_control_handler(){
	
	var global_palette = jQuery('#customize-control-pagelayer_global_colors');
		
	// Get the values from the repeater input fields and add to our hidden field
	var pagelayerGetAllInputs = function() {
		
		var pagelayer_colors_palette = {};
		
		global_palette.find('.pagelayer-alpha-color-control').each(function(){
			var cEle = jQuery(this);
			var id = cEle.data('id');

			pagelayer_colors_palette[id] = {
				'title' : cEle.closest('.pagelayer-color-holder').find('.pagelayer-color-title').text(),
				'value' : cEle.val(),
			}
		});
		
		var inputValues = JSON.stringify(pagelayer_colors_palette);
		
		// Add all the values from our repeater fields to the hidden field (which is the one th