materio_search_api_ajax.min.js 7.3 KB

12345678910111213
  1. (function($){MaterioSearchApiAjax=function(){var _isloadingresults=false;var _$content=$('#content');function init(){initSearchAjax();initViewMode();};function initSearchAjax(){trace('initSearchAjax');$('#materio-search-api-search-form').bind('submit',function(event){setTimeout(function(){loadResults(getSearchKeys());},10);return false;});$('#materio-search-api-advanced-search-form').bind('submit',function(event){event.preventDefault();setTimeout(function(){loadResults(getSearchFilters(),'advanced');},10);return false;});$("#edit-searchfield").bind('autocompleteSelect',function(event){setTimeout(function(){loadResults(getSearchKeys(),"taxonomy");},10);}).bind('focus',function(event){$(this).select();});$(document).bind('theme-ready',onThemeReady).bind('init-scroller-pager',onInitScrollerPager).bind('load-scroller-pager',onLoadScrollerPager).bind('view-mode-changed',onViewModeChanged).bind('history-state-change',onHistoryStateChange);};function onThemeReady(event){if(isActuality()||isExplore()){$.event.trigger({type:'resultschanged',container:isActuality()?'#content .actuality-items':'#content .search-results'});}};function getSearchKeys(){return $('#materio-search-api-search-form').find('input[name*="searchfield"]').val();};function getSearchFilters(){var keys=[];$('#materio-search-api-advanced-search-form').find('.filter-line').each(function(i,line){var $selects=$($('.form-item.form-type-select select',line).get().reverse()).slice(0,-1);$selects.each(function(j,select){if($(select).val()!==""){keys.push($(select).val());return false;}});});trace("getSearchFilters :: keys",keys);return keys.join("+");};function loadResults(keys,searchmode){trace('loadResults keys',keys);if(keys!==undefined&&keys!==''&&keys.length>=2){keys=keys.replace('/',' ');searchmode=searchmode||"fulltext";var types={},stringTypes=[];$('#edit-bundles-filter','#materio-search-api-search-form').find('input[type*="checkbox"]').each(function(i){$this=$(this);if($this.attr('checked'))
  2. stringTypes.push($this.val());types[$this.val()]=$this.attr('checked');});if(!_isloadingresults){$.event.trigger('loading-content');_isloadingresults=true;$('#materio-search-api-search-form').addClass('loading');$.getJSON(Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/search/',{'types':types,'current_path':document.location.href,'keys':keys,'searchmode':searchmode},function(json){$.event.trigger({type:"record-stat",categorie:'Search',action:keys,label:'filters : '+stringTypes.join(' ,'),value:json.count});if(json.redirect){window.location=json.redirect;}else{$.event.trigger('loaded-content');_isloadingresults=false;$('#materio-search-api-search-form').removeClass('loading');changeContent(json);}});}}};function loadActuality(){if(!_isloadingresults){$.event.trigger('loading-content');_isloadingresults=true;$('#materio-search-api-search-form').addClass('loading');var url=Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/actuality';$.getJSON(url,function(json){$.event.trigger('loaded-content');_isloadingresults=false;$('#materio-search-api-search-form').removeClass('loading');changeContent(json);});}};function changeContent(json){if(json.returned){$.event.trigger('loaded-content');$('.inner-content',_$content).html(json.returned).find('ul.pager').hide();triggerContentChanged();}else{}
  3. $.event.trigger({type:'new-history-page',path:Drupal.settings.basePath+Drupal.settings.pathPrefix+json.path,title:json.title,content:json.returned});for(language in Drupal.settings.materio_search_api_ajax.languages){var l=Drupal.settings.materio_search_api_ajax.languages[language];$('#block-locale-language li.'+language+' a').attr('href',Drupal.settings.basePath+l.prefix+'/'+json.search_path+'/'+json.keys)};};function triggerContentChanged(){$.event.trigger({type:'resultschanged',container:'#content .search-results, #content .actuality-items'});};function onInitScrollerPager(event){if(isActuality()||isExplore())
  4. event.pager.hide();};function onLoadScrollerPager(event){if(!_isloadingresults){if(isExplore())
  5. loadNextResultsPage(event.href);if(isActuality())
  6. loadNextActualityPage(event.href);}};function loadNextResultsPage(href){trace('loadNextResultsPage',href);var searchmode=href.match(/explore\/filters\//)?'advanced':'fulltext';trace("searchmode",searchmode);if(searchmode=='advanced'){var keys=href.match(/explore\/filters\/([^\/|\?]+)/);}else{var keys=href.match(/explore\/([^\/|\?]+)/);}
  7. var page=href.match(/\?page=([0-9]+)/);var url=Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/search/'+page[1];loadNextPage(url,keys[1],$('.materiobase-results',_$content),'.search-results',searchmode);};function loadNextActualityPage(href){var page=href.match(/\?page=([0-9]+)/);var url=Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/actuality/'+page[1];loadNextPage(url,'',$('.materiobase-actuality',_$content),'.actuality-items');};function loadNextPage(url,keys,$container,target,searchmode){searchmode=searchmode||"fulltext";_isloadingresults=true;$container.addClass('loading');$.getJSON(url,{'keys':keys,'searchmode':searchmode},function(json){$container.removeClass('loading');addNextpage(json,target);});};function addNextpage(json,container_class){if(json){var $newcontent=$(json.returned),$newitems=$(container_class,$newcontent).children('article'),$newpager=$('ul.pager',$newcontent);$(container_class,_$content).append($newitems);$('ul.pager',_$content).replaceWith($newpager.hide());$(container_class,_$content).children('.just-added').each(function(i){var $this=$(this);setTimeout(function(){$this.removeClass('just-added');},150*i);});$.event.trigger({type:'resultscompleted',container:$(container_class,_$content)});}
  8. _isloadingresults=false;};function addNextpageItemByItem($newcontent,container_class){$('ul.pager',_$content).remove();$(container_class,_$content).append($(container_class,$newcontent).children('article').eq(0));if($(container_class,$newcontent).children('article').length){setTimeout(function(){addNextpageItemByItem($newcontent,container_class);},200);}else{_isloadingresults=false;$('ul.pager',_$content).replaceWith($('ul.pager',$newcontent).hide());$.event.trigger({type:'resultscompleted',container:$(container_class,_$content)});}};function initViewMode(){$('.viewmode-link').click(function(event){event.preventDefault();if(!$(this).is('.active')){$(this).trigger({type:'vm-clicked'});changeViewMode($(this).attr('rel'),$(this));}else{$(this).trigger({type:'vm-clicked-active'});}
  9. return false;});};function changeViewMode(vm,$btn){if(!_isloadingresults){_isloadingresults=true;$.getJSON(Drupal.settings.basePath+'materio_search_api_ajax/viewmode/change/'+vm,function(json){_isloadingresults=false;if(json.statut=="saved"){$.event.trigger({type:"record-stat",categorie:'Viewmode',action:vm,label:isActuality()?'Actualities':'Search results'});$.event.trigger('view-mode-changed');$('.viewmode-link, .viewmode-link i').removeClass('active');$btn.addClass('active').find('i').addClass('active');}});}};function onViewModeChanged(event){if(isExplore())
  10. loadResults(getSearchKeys());if(isActuality())
  11. loadActuality();};function onHistoryStateChange(event){if(isExplore()||isActuality())
  12. triggerContentChanged();};function isExplore(){return $('.search-results','#content').length;};function isActuality(){return $('.actuality-items','#content').length;};init();};$(document).ready(function(){var materiosearchapiajax=new MaterioSearchApiAjax();});})(jQuery);