Current File : /home/tekstore/public_html/wp-content/themes/cerato/core/public/functions/pagination.php
<?php
/**
 * Pagination functionality
 */

/**
 * Default pagination
 */
if (!function_exists('zoo_ajax_pagination'))
{
    function zoo_ajax_pagination(WP_Query $query = null, array $args = array())
    {
        $query = $query ? : $GLOBALS['wp_query'];

        if (1 >= $query->max_num_pages) {
            return;
        }

        $paged = !empty($query->query_vars['paged']) ? intval($query->query_vars['paged']) : 1;

        $args = array(
            'type'                 => !empty($args['type']) ? $args['type'] : 'infinity',
            'delay'                => !empty($args['delay']) ? $args['delay'] : 500,
            'container_selector'   => !empty($args['container_selector']) ? $args['container_selector'] : '.zoo-container',
            'item_selector'        => !empty($args['item_selector']) ? $args['item_selector'] : '.post',
            'layout_mode'          => !empty($args['layout_mode']) ? $args['layout_mode'] : 'vertical',
            'images_loaded'        => !empty($args['images_loaded']) ? $args['images_loaded'] : false,
            'prev_text'            => !empty($args['prev_text']) ? $args['prev_text'] : esc_html__('Prev Posts', 'cerato'),
            'next_text'            => !empty($args['next_text']) ? $args['next_text'] : esc_html__('Next Posts', 'cerato'),
            'horizontal_alignment' => '',
            'gutter'               => '',
            'column_width'         => '',
            'more_text'            => !empty($args['more_text']) ? $args['more_text'] : apply_filters('zoo_ajax_pagination_more_text', esc_html__('Load More', 'cerato')),
            'no_more_text'         => !empty($args['no_more_text']) ? $args['no_more_text'] : apply_filters('zoo_ajax_pagination_no_more_text', esc_html__('No More Posts', 'cerato')),
        );

        $uid = crc32(serialize($args));

        $prev_link = get_pagenum_link($paged - 1);
        $next_link = get_pagenum_link($paged + 1);

        echo '<div id="spinner-'.esc_attr($uid).'" class="align-center hidden">' . apply_filters('zoo_ajax_pagination_spinner', '<img aria-hidden="true" role="presentation" src="'.ZOO_THEME_URI.'core/assets/icons/spinner.svg'.'" width="48" height="48">') . '</div>';

        ?><div id="zoo-pagination-<?php echo esc_attr($uid) ?>" class="zoo-pagination"><?php
            if ($paged > 1 && $paged <= $query->max_num_pages) {
                echo '<a id="prev-page-link-'.esc_attr($uid).'" class="prev-page-link" href="'.esc_url($prev_link).'">' . $args['prev_text'] . '</a>';
            }
            if ($paged < $query->max_num_pages) {
                echo '<a id="next-page-link-'.esc_attr($uid).'" class="next-page-link" href="'.esc_url($next_link).'">' . $args['next_text'] . '</a>';
            }
        ?></div><?php

        $layout_mode_options = '';

        if ('masonry' === $args['layout_mode']) {
            $layout_mode_options .= !empty($args['gutter']) ? 'gutter:'.$args['gutter'] : 'gutter:20';
            $layout_mode_options .= !empty($args['column_width']) ? ',columnWidth:'.$args['column_width'] : ',columnWidth:'.$args['item_selector'];
        } elseif ('fitRows' === $args['layout_mode']) {
            $layout_mode_options .= !empty($args['gutter']) ? 'gutter:'.$args['gutter'] : 'gutter:20';
        } elseif ('vertical' === $args['layout_mode']) {
            $layout_mode_options .= !empty($args['horizontal_alignment']) ? 'horizontalAlignment:'.$args['horizontal_alignment'] : 'horizontalAlignment:0';
        }

        $inline_scripts = 'jQuery(document).ready( function($) {
    		var spinner = $("#spinner-'.esc_attr($uid).'");
    		var container = $("'.$args['container_selector'].'");
    		var ias = $.ias({
                container:  "'.$args['container_selector'].'",
                item:       "'.$args['item_selector'].'",
                pagination: "#zoo-pagination-'.esc_attr($uid).'",
                next:       "#next-page-link-'.esc_attr($uid).'",
                delay:      '.$args['delay'].'
            });

            var iso_init = container.data("isotope");
            if ( !iso_init ) {
              var iso = container.isotope({
          			percentPosition: true,
          			itemSelector: "'.$args['item_selector'].'",
          			layoutMode: "'.$args['layout_mode'].'",
          			'.$args['layout_mode'].': {'.$layout_mode_options.'}
          		});';

              if ($args['images_loaded']) {
                  if (!wp_script_is('imagesloaded', 'enqueued')) {
                      $inline_scripts .= '
                      iso.imagesLoaded().progress(function(){
                          iso.isotope("layout");
                      });
                      ';
                      wp_enqueue_script('imagesloaded');
                  }
              }
            $inline_scripts .= '}';

            $inline_scripts .= '
            ias.on("load", function(e) {
    			spinner.show();
    		});

	    ias.on("render", function(items) {
	      	$(items).css({
	            opacity: 0
	        });
	    });

	    ias.on("rendered", function(items) {
			    spinner.hide();
          container.isotope("appended", $(items));
	    });

  		ias.on("noneLeft", function(){
  			spinner.empty().append("<span>'. $args['no_more_text'] .'</span>").show();
  		});';

        if ('ajaxload' === $args['type']) {
            $inline_scripts .= '
            ias.extension(new IASTriggerExtension({
                text: "'. $args['more_text'] .'",
                offset: 1
            }));';
        }

        $inline_scripts .= '});';

        if (!wp_script_is('jquery-ias', 'enqueued')) {
            wp_add_inline_script('jquery-ias', $inline_scripts);
            wp_enqueue_script('jquery-ias');
        }
    }
}