File "front-articles-pagination.js"

Full Path: /var/www/bvnghean.vn/wp-content/plugins/sneeit-framework/js/front-articles-pagination.js
File size: 11.9 KB
MIME-type: text/plain
Charset: utf-8

if (typeof(Sneeit_Articles_Pagination['block_args']) == 'undefined') {
	Sneeit_Articles_Pagination['block_args'] = new Object();
}
var Site_Args = Sneeit_Articles_Pagination['site_args'];
var Block_Args = Sneeit_Articles_Pagination['block_args'];
var Ajax_Url = Sneeit_Articles_Pagination['ajax_url'];
var Infinite = false;
var Master_Class = 'sneeit-articles-pagination';

// BUILD PAGINATION BUTTON HTML
// initialization for static blocks
jQuery.each(Block_Args, function(block_id, block_args){
	if (typeof(block_args['args']['count']) == 'undefined' || 
		!block_args['args']['count']) {
		return;
	}		
	sneeit_articles_pagination_html(block_id, block_args);
});

// init for menu mega content
jQuery( document ).ajaxComplete(function( event, request, settings) {	
	if ( ( 'data' in settings ) && ( settings.data.indexOf( 'action=sneeit_compact_menu_mega_content' ) != -1 ) ) {
		Block_Args = Sneeit_Articles_Pagination['block_args'];

		jQuery.each(Block_Args, function(block_id, block_args){
			// check if we processed this before or not
			if ( ! ( 'args' in block_args ) ||
				 ! ( 'menu_item_id' in block_args['args'] ) || 
				 block_args['args']['menu_item_id'] == -1 ) {
				return;
			}				
			Sneeit_Articles_Pagination['block_args'][block_id]['args']['menu_item_id'] = -1;
			sneeit_articles_pagination_html(block_id, block_args);
		});
	}
});

// show button html
function sneeit_articles_pagination_html(block_id, block_args) {	
	var args = block_args['args'];		
	var found_posts = Number(block_args['found_posts']);		
	var count = Number(args['count']);
	var html = '';		
	var href = ' href="javascript:void(0)"';
	var st_class = ' class="'+Master_Class;		
	
	if (typeof(args['paged']) == 'undefined') {
		var cur_page = 1;
	} else {	
		var cur_page = Number(args['paged']);
	}

	var cur_total = count * cur_page;
	if (cur_total > found_posts) {
		cur_total = found_posts;
	}
	var max_page = Math.ceil(found_posts / count);
	
	if ( 1 == max_page ) {
		return;
	}

	// DESIGN
	var loading_text = '';
	var end_text = '';
	var status_text = '';
	var older_text = '';
	var newer_text = '';

	// HTML for specific type of pagination
	switch (args['pagination']) {
		///////////////////
		case 'number-ajax':
		case 'number-reload':
			// newer button
			if (typeof(Site_Args['number']) != 'undefined' && 
				typeof(Site_Args['number']['newer_text']) != 'undefined') {
				newer_text = Site_Args['number']['newer_text'];
			}				

			// number buttons
			for (var i = 1; i <= max_page; i++) {
				var active = '';
				if (i == cur_page) {
					active = ' active';
				}
				if (i != 1 && i != max_page && i != cur_page &&
					i != cur_page - 1 && i != cur_page - 2 &&
					i != cur_page + 1 && i != cur_page + 2) {
					continue;
				}
				html += '<a'+href+st_class+'-page'+active+'" data-paged="'+i+'" data-block_id="'+block_id+'">'+i+'</a>';

				if (i == 1 && cur_page - 3 > 1 ||
					i == cur_page + 2 && cur_page + 3 < max_page) {
					html += '<span'+st_class+'-sep">...</span>';
				}
			}

			// older buttton
			if (typeof(Site_Args['number']) != 'undefined' && 
				typeof(Site_Args['number']['newer_text']) != 'undefined') {
				older_text = Site_Args['number']['older_text'];
			}

			// pagination status
			if (typeof(Site_Args['number']) != 'undefined' && 
				typeof(Site_Args['number']['status_text']) != 'undefined') {
				status_text = Site_Args['number']['status_text'];
			}
			if (typeof(Site_Args['number']) != 'undefined' && 
				typeof(Site_Args['number']['loading_text']) != 'undefined') {
				loading_text = Site_Args['number']['loading_text'];					
			}

			break;

		////////////////
		case 'loadmore':
			if (typeof(Site_Args['loadmore']) != 'undefined' && 
				typeof(Site_Args['loadmore']['button_text']) != 'undefined' &&
				cur_page < max_page) {
				var button_text = Site_Args['loadmore']['button_text'];
				if (button_text) {
					html += '<a'+href+st_class+'-more" data-paged="'+(cur_page+1)+'" data-block_id="'+block_id+'">'+
						button_text+
						'</a>';						
				}
			}
			if (typeof(Site_Args['loadmore']) != 'undefined' && 
				typeof(Site_Args['loadmore']['loading_text']) != 'undefined') {
				loading_text = Site_Args['loadmore']['loading_text'];					
			}
			if (typeof(Site_Args['loadmore']) != 'undefined' && 
				typeof(Site_Args['loadmore']['end_text']) != 'undefined') {
				end_text = Site_Args['loadmore']['end_text'];
			}
			break;

		////////////////
		case 'infinite':
			if (cur_page < max_page) {
				Infinite = true;
				html += '<div'+st_class+'-anchor" data-paged="'+(cur_page+1)+'" data-block_id="'+block_id+'"></div>';
			}				

			if (typeof(Site_Args['infinite']) != 'undefined' && 
			typeof(Site_Args['infinite']['end_text']) != 'undefined') {
				end_text = Site_Args['loadmore']['end_text'];						
			}

			if (html && typeof(Site_Args['infinite']) != 'undefined' && 
				typeof(Site_Args['infinite']['loading_text']) != 'undefined') {
				loading_text = Site_Args['infinite']['loading_text'];							
			}				
			break;

		////////////////////
		case 'nextprev-ajax':
		case 'nextprev-reload':
			if (typeof(Site_Args['nextprev']) != 'undefined' && 
				typeof(Site_Args['nextprev']['newer_text']) != 'undefined') {
				newer_text = Site_Args['nextprev']['newer_text'];
			}
			if (typeof(Site_Args['nextprev']) != 'undefined' && 
				typeof(Site_Args['nextprev']['newer_text']) != 'undefined') {
				older_text = Site_Args['nextprev']['older_text'];
			}
			if (typeof(Site_Args['nextprev']) != 'undefined' && 
				typeof(Site_Args['nextprev']['status_text']) != 'undefined') {
				status_text = Site_Args['nextprev']['status_text'];
			}
			if (typeof(Site_Args['nextprev']) != 'undefined' && 
				typeof(Site_Args['nextprev']['loading_text']) != 'undefined') {
				loading_text = Site_Args['nextprev']['loading_text'];					
			}
			break;

		////////////////////
		case 'number-reload':
			break;

		//////////////////////
		case 'nextprev-reload':
			break;
	} // end switch pagination type

	// we need to display with inactive or active instead of hide		
	if (newer_text) {
		if (cur_page != 1) {
			var active = '';				
		} else {
			var active = ' active';
		}			
		html = '<a'+href+st_class+'-newer'+active+'" data-paged="'+(cur_page-1)+'" data-block_id="'+block_id+'">'+
				newer_text+
				'</a>' + html;
	}
	// we need to display with inactive or active instead of hide
	if (older_text) {
		if (cur_page != max_page) {
			var active = '';
		} else {				
			var active = ' active';
		}
		html += '<a'+href+st_class+'-older'+active+'" data-paged="'+(cur_page+1)+'" data-block_id="'+block_id+'">'+
				older_text+
				'</a>';
	}
	if (status_text) {
		status_text = status_text.replace('%1$s', cur_total).replace('%2$s', found_posts);
		html += '<span'+st_class+'-status">'+status_text+'</span>';
	}
	if (html) {
		html = '<div'+st_class+'-content">'+html+'</div>';
	}
	if (end_text && cur_total == found_posts) {
		html += '<div'+st_class+'-end">'+end_text+'</div>';
	}
	if (loading_text) {
		html += '<div'+st_class+'-loading" style="display:none">'+loading_text+'</div>';
	}	
	html = '<div'+st_class+' '+Master_Class+'-'+args['pagination']+'">'+html+'</div>';		

	jQuery('#'+block_id).find(Site_Args['pagination_container']).html(html);
} // end function of pagination html
function sneeit_articles_pagination_redirect(paged) {
	var url = document.location.href;
	    
	paged = encodeURI(paged);
	
	// if this is custom paged url
	if (url.indexOf('/page/') != -1) {		
		var redirect_url = url.split('/page/');
		redirect_url[1] = redirect_url[1].split('/');
		
		// that's it
		if (!isNaN(redirect_url[1][0])) {
			redirect_url[1][0] = paged;
			redirect_url[1] = redirect_url[1].join('/');
			document.location.href = redirect_url.join('/page/');			
			return;
		}
	}
	
	if (url.indexOf('#') != -1) {
		url = url.split('#');
		url = url[0];
	}
	
	// the search has no any key
	if (url.indexOf('?') == -1) {
		document.location.href = (url + '?paged=' + paged);
		return;
	}
	
	url = url.split('?');
	url[1] = '&'+url[1];
		
	// the search has no this key
	if (url[1].indexOf('&paged=') == -1) {
		url[1] = url[1].replace('&', '');
		document.location.href = (url.join('?') + '&paged=' + paged);
		return;
	}
	
	// the search has this key
	url[1] = url[1].split('&paged=');
	url[1][1] = url[1][1].split('&');
	url[1][1][0] = paged;
	url[1][1] = url[1][1].join('&');
	url[1] = url[1].join('&paged=');
	url[1] = url[1].replace('&', '');
	document.location.href = url.join('?');
}

function sneeit_articles_pagination_load(e) {	
	if (e.is('.active')) {
		return;
	}

	// get args
	var paged = Number(e.attr('data-paged'));	
	var block_id = e.attr('data-block_id');
	var args = Block_Args[block_id]['args'];				
	var block = jQuery('#'+block_id);		
	var par = block.find('.'+Master_Class);		
	var content = block.find(Site_Args['content_container']);		
	var p_type = args['pagination'];		
	
	// if this is default query, we will redirect
	if (typeof(args['sneeit_query_vars']) != 'undefined' && p_type.indexOf('-reload') > 0) {
		sneeit_articles_pagination_redirect(paged);
		return;
	}
	
	// process args		
	args['paged'] = paged;
	if (p_type != 'loadmore' && p_type != 'infinite') {
		args['index'] = 0;
	}
	args['post__not_in'] = Block_Args[block_id]['loaded_posts']

	// update current page 
	Block_Args[block_id]['paged'] = paged;
	
	// if reload is required,
	// we will just need to use our action
	// to get the redirect links
	if (p_type.indexOf('-reload') > 0) {
		var p_action = 'sneeit_articles_pagination_redirect';
	} else {
		var p_action = 'sneeit_articles_pagination';
	}
	
	// in case mega menu
	var block_par = block.parent();
	if (block.parents('.sneeit-menu-mega-content').length) {
		block_par = block.parents('.sneeit-menu-mega-content').first();			
	}
	if (block_par.is('.sneeit-menu-mega-content')) {
		block_par.css('height', block_par.height() + 'px');
	}		

	// animated
	par.find('.'+Master_Class+'-loading').show();
	par.find('.'+Master_Class+'-content').remove();		
	
	jQuery.post(Ajax_Url, {
		action: p_action, 
		args: JSON.stringify(args),
		callback: Site_Args['ajax_handler']
	}).done(function( data ) {

		// data modifer before ajax
		if (typeof(Site_Args['ajax_function_before']) != 'undefined' && Site_Args['ajax_function_before']) {
			var func = window[Site_Args['ajax_function_before']];
			if (typeof(func) == 'function') {
				data = func(block_id, args, data);
			}				
		}
		
		// append data
		if (p_type.indexOf('-reload') > 0) {
			window.location.href = data;		
			return;
		}
				
		if ('loadmore' == p_type || 'infinite' == p_type) {
			content.append(data);
		} else {
			content.html(data);						
		}

		// regenerate pagination
		var block_args = Block_Args[block_id];
		sneeit_articles_pagination_html(block_id, block_args);		

		// action after ajax
		if (typeof(Site_Args['ajax_function_after']) != 'undefined' && Site_Args['ajax_function_after']) {
			var func = window[Site_Args['ajax_function_after']];
			if (typeof(func) == 'function') {
				func(block_id, args, data);
			}
		}
		if (block_par.is('.sneeit-menu-mega-content')) {
			block_par.css('height', '');
		}

	}); // end ajax event
}

// when click pagination link
jQuery(document).on('click', '.'+Master_Class+'-page, .'+Master_Class+'-newer, .'+Master_Class+'-older, .'+Master_Class+'-more', function () {
	sneeit_articles_pagination_load(jQuery(this));
});	

// when scroll for infinite
var Sneeit_Articles_Pagination_Prev_Win_Top = -1;

if (Infinite) {
	jQuery(window).scroll(function() {
		// find if we have anchor or not
		var anchor = jQuery(document).find('.'+Master_Class+'-anchor');
		if (anchor.length == 0) {		
			return;
		}
		
		
		// if scroll up, we don't need to take action
		var w_top = jQuery(window).scrollTop();
		if (w_top <= Sneeit_Articles_Pagination_Prev_Win_Top) {				
			return;
		}
		Sneeit_Articles_Pagination_Prev_Win_Top = w_top;

		// find if the window bot > anchor top
		var w_bot = w_top + jQuery(window).height();
		anchor.each(function(){				
			var a_top = jQuery(this).offset().top;

			// we don't need to take action
			if (a_top > w_bot) {
				return;
			}

			sneeit_articles_pagination_load(jQuery(this));
		});
	});
}