1jQuery(function ($) { 2 var $button = $('.search-loadmore'); 3 if (!$button.length) return; 4 5 var $form = $('#tx_indexedsearch'); 6 var $pointer = $form.find('#tx_indexedsearch_pointer'); 7 var $resultsList = $('.search-results-list'); 8 if (!$form.length || !$pointer.length || !$resultsList.length) return; 9 10 $button.on('click', function (e) { 11 e.preventDefault(); 12 if ($button.prop('disabled')) return; 13 14 var currentPointer = parseInt($button.data('current-pointer'), 10) || 0; 15 var perPage = parseInt($button.data('results-per-page'), 10) || 10; 16 var total = parseInt($button.data('total-count'), 10) || 0; 17 var nextPointer = currentPointer + 1; 18 19 $pointer.val(nextPointer); 20 $button.prop('disabled', true).addClass('loading'); 21 22 $.ajax({ 23 url: $form.attr('action') || window.location.href, 24 method: ($form.attr('method') || 'post').toUpperCase(), 25 data: $form.serialize(), 26 dataType: 'html' 27 }).done(function (html) { 28 var $doc = $('<div>').append($.parseHTML(html)); 29 var $newRows = $doc.find('.search-results-list').children(); 30 if ($newRows.length) { 31 $resultsList.append($newRows); 32 } 33 34 var shown = (nextPointer + 1) * perPage; 35 if (shown >= total || !$newRows.length) { 36 $button.closest('.search-loadmore-wrapper').remove(); 37 } else { 38 $button.data('current-pointer', nextPointer) 39 .prop('disabled', false) 40 .removeClass('loading'); 41 } 42 }).fail(function () { 43 $button.prop('disabled', false).removeClass('loading'); 44 }); 45 }); 46});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.