').addClass('jolisearch-item no-results-found')
.append(
$('
').addClass("jolisearch-additionnal " + item.type)
.append(message));
return {
value: '',
data: item,
label: dummy.html()
};
}
},
filterClosure = function(term) {
var matcher = new RegExp("(" + matchAccents($.ui.autocomplete.escapeRegex(term.trim())) + ")", "gi");
return function(data) {
if (data)
return data.replace(matcher, '
$1');
return '';
}
},
filterHtmlClosure = function(term) {
var matcher = new RegExp("(" + matchAccents($.ui.autocomplete.escapeRegex(term.trim())) + ")", "gi");
return function(data) {
if (data) {
var $data = $(data);
$data.find('.product-name, .product-category, .product-manufacturer, .product-supplier, .category-name, .manufacturer-name, .supplier-name').each(function(idx, elt) {
$(elt).html($(elt).text().replace(matcher, '
$1'));
});
return $('
').append($data).html();
}
return '';
}
},
sourceClosure = function(that) {
return function(request, response) {
var filter = filterClosure(request.term),
filterHtml = filterHtmlClosure(request.term);
$.ajax({
url: that.attr('data-autocomplete'),
dataType: "json",
data: {
s: request.term,
//ajaxSearch: 1,
ajax: true,
id_lang: that.attr('data-lang'),
maxRows: that.attr('data-autocomplete-max') || 10
},
success: function(data) {
var lastType = undefined;
if (data && data.use_rendered_products) {
response([filterHtml(data.rendered_products)]);
} else {
response($.map(data.products, function(item) {
item.type = item.type.replace(/\_/gi, '-');
var firstOfItsKind = (lastType !== item.type);
lastType = item.type;
if (item.type == "no-results-found") {
if (that.attr('data-ga-acc') != 0) {
_gaq.push(["_setAccount", that.attr('data-ga-acc')]);
_gaq.push(['_trackPageview', '/notfound?search_query=' + request.term + '&fast_search=fs']);
}
}
return builder[item.type](item, filter, (firstOfItsKind ? that.attr('data-' + item.type) : false));
}));
}
},
error: function(xhr, textStatus, errorThrown) {
console.log("error: " + errorThrown);
}
});
}
};
$('document').ready(function() {
if (typeof(jolisearch) != 'undefined') {
joli_settings.display_manufacturer = jolisearch.display_manufacturer;
joli_settings.display_category = jolisearch.display_category;
joli_settings.display_supplier = jolisearch.display_supplier;
input = $('.jolisearch').find('input')
if(input.length == 0){
input = $('input[name=s]');
}
if(input.length == 0){
input = $('input[name=search_query]');
}
input
.attr('data-autocomplete-mode', jolisearch['use_autocomplete'])
.attr('data-autocomplete', jolisearch['amb_joli_search_action'])
.attr('data-lang', jolisearch['id_lang'])
.attr('data-manufacturer', jolisearch['l_manufacturers'])
.attr('data-supplier', jolisearch['l_suppliers'])
.attr('data-product', jolisearch['l_products'])
.attr('data-category', jolisearch['l_categories'])
.attr('data-minwordlen', jolisearch['minwordlen'])
.attr('data-no-results-found', jolisearch['l_no_results_found'])
.attr('data-more-results', jolisearch['l_more_results'])
.attr('autocomplete', 'off');
input
.closest('form').attr('action', jolisearch['amb_joli_search_action']);
$form = input.closest('form');
$controller = input.closest('form').find('input[name=controller]');
if ($controller.val() != 'jolisearch') {
// remove previous search bar configuration
$controller.remove();
$form.find('input[name=fc]').remove();
$form.closest('form').find('input[name=module]').remove();
}
if (jolisearch['amb_joli_search_action'].indexOf('fc=') >= 0) {
// friendly url Off...
request = jolisearch['amb_joli_search_action'].split('?');
parameters = $.each(request[1].split('&'), function(i, value) {
param = value.split('=');
$form.append($('
').attr('type', 'hidden').attr('name', param[0]).val(param[1]));
$form.attr('method', 'post');
});
$form.attr('action', request[0]);
}
$('#search_widget').attr('data-search-controller-url', '');
if (jolisearch.theme) {
$('body').addClass('jolisearch-theme-' + jolisearch.theme);
}
/*
if (typeof $.fn.psBlockSearchAutocomplete !== 'undefined'){
$('#search_widget').find('input[type=text]').psBlockSearchAutocomplete('destroy');
}
if (typeof prestashop.psBlockSearchAutocomplete !== 'undefined'){
$('#search_widget').find('input[type=text]').psBlockSearchAutocomplete('destroy');
}
*/
if ($.fn.version >= '2') {
var searchbarAutocomplete = $('*:data(prestashop-psBlockSearchAutocomplete)');
if (searchbarAutocomplete.length) {
searchbarAutocomplete.off('.psBlockSearchAutocomplete0');
searchbarAutocomplete.off('.psBlockSearchAutocomplete2');
searchbarAutocomplete.psBlockSearchAutocomplete('destroy');
}
// add support for warehouse theme and its child themes
var scAutocomplete = $('input[name=s]:data(sc)');
if (scAutocomplete.length && typeof $.fn.autoComplete !== 'undefined') {
scAutocomplete.autoComplete('destroy');
}
} else {
var searchbarAutocomplete = $('input[name=s]');
searchbarAutocomplete.each(function(i, elt) {
var e = $(elt);
if (e.data('prestashop-psBlockSearchAutocomplete') || e.data('prestashopPsBlockSearchAutocomplete')) {
e.off('.psBlockSearchAutocomplete0');
e.off('.psBlockSearchAutocomplete2');
e.psBlockSearchAutocomplete('destroy');
}
// add support for warehouse theme and its child themes
if (e.data('sc') && typeof $.fn.autoComplete !== 'undefined') {
e.autoComplete('destroy');
}
});
}
}
var responders = $('*:input[type=text][data-autocomplete], *:input[type=search][data-autocomplete]');
customizeRender();
responders.each(function() {
var that = $(this);
var mode = that.data('autocomplete-mode');
if (mode == 2 || (mode == 1 && window.matchMedia("(min-width: 767px)").matches)) {
var default_options = {
source: sourceClosure(that),
minLength: that.data('minwordlen'),
max: 10,
width: 500,
delay: 500,
selectFirst: false,
scroll: false,
html: true,
customRender: true,
classes: { 'ui-autocomplete' : ('ui-jolisearch' + ' ' + jolisearch['classes']) },
position: (that.data('position') !== undefined ? that.data('position') : jolisearch['position']),
select: function(e, ui) {
if (ui.item.data)
document.location.href = ui.item.data.link;
else
return false;
},
search: function(event, ui) {
$('.ui-autocomplete.ui-jolisearch').css('width', 'auto');
var position = (that.data('position') !== undefined ? that.data('position') : jolisearch['position']);
if (window.matchMedia("(max-width: 576px)").matches)
that.ambSearchAutocomplete("option", "position", {my: 'center top', at: 'center bottom'});
else
that.ambSearchAutocomplete("option", "position", position);
return true;
},
focus: function(event, ui) {
return false;
},
open: function(event, ui) {
$('body').addClass('jolisearch-on');
},
close: function(event, ui) {
$('body').removeClass('jolisearch-on');
}
};
var autocomplete_options = default_options;
if (jolisearch && jolisearch.autocomplete_target) {
autocomplete_options = $.extend(autocomplete_options, {
appendTo: jolisearch.autocomplete_target
})
}
that.ambSearchAutocomplete(autocomplete_options);
that.on('focus', function() {
that.ambSearchAutocomplete('search', that.val())
});
}
});
})
})(compat_jQ);
})(jQuery);