Explorar el Código

conjunction OR ++

ajax : keys aren't args any more, because of a+b+c

Signed-off-by: bachy <git@g-u-i.net>
bachy hace 12 años
padre
commit
bcf209570a

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
js/materio_flag-ck.js


+ 68 - 42
js/materio_flag.js

@@ -9,7 +9,7 @@ MaterioFlag = function(){
   * init()
   */
   function init(){
-    trace('MaterioFlag :: init MaterioFlag');
+    //trace('MaterioFlag :: init MaterioFlag');
 
     buildBlocks();
 
@@ -32,36 +32,60 @@ MaterioFlag = function(){
   };
 
   function onFlaging(event){
-    trace('MaterioFlag :: onFlaging', event);
+    //trace('MaterioFlag :: onFlaging', event);
     refreshBlocks();
   };
 
   function onResultsUpdated(event){
-    trace('MaterioFlag :: onResultsUpdated', event);
+    //trace('MaterioFlag :: onResultsUpdated', event);
     ajaxifyLinks(event.container);
   };
 
   function buildBlocks(activename){
-    trace('MaterioFlag :: buildBlocks', activename);
-    // nav block
-    $('a.open-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists-nav').each(function(index){
-      $this = $(this)
-        .bind('click', onClickOpenLink)
-        .addClass('ajax-processed');
-
-      var name = $this.attr('class').match(/flag_lists_[^_]+_[0-9]+/);
-      // trace('MaterioFlag :: name', name);
-      $('<span class="preview"><i class="icon-eye-open"></i></span>').attr('name', name).insertAfter($this).bind('click', onClickShowPreview);
-    });
+    //trace('MaterioFlag :: buildBlocks', activename);
+
+    if($('#block-materio-flag-materio-flag-mybookmarks').length){
+      var type = 'bookmarks';
+      var block = '#block-materio-flag-materio-flag-mybookmarks';
+    }else if($('#block-materio-flag-materio-flag-mylists').length){
+      var type = 'lists';
+      var block = '#block-materio-flag-materio-flag-mylists';
+    }
+
+    if(type == 'lists'){
+
+      // nav block
+      $('a.open-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists-nav').each(function(index){
+        $this = $(this)
+          .bind('click', onClickOpenLink)
+          .addClass('ajax-processed');
+
+        var name = $this.attr('class').match(/flag_lists_[^_]+_[0-9]+/);
+        // trace('MaterioFlag :: name', name);
+        $('<span class="preview"><i class="icon-eye-open"></i></span>').attr('name', name).insertAfter($this).bind('click', onClickShowPreview);
+      });
+        
+      // preview block
+      $('section.flag-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists').each(function(index){
+        var name = $(this).attr('class').match(/flag_lists_[^_]+_[0-9]+/);
+        $('<i class="icon-remove"></i>').appendTo($('h2.listname', this)).attr('name', name).bind('click', onClickClosePreview);
+
+        $('a.open-list',  this).bind('click', onClickOpenLink);
+      
+      }).addClass('ajax-processed');
+
+      // trigger refresh block event for enabling lazyload images
+      setTimeout(function(){
+        $.event.trigger({
+          type : 'my'+type+'-block-builded',
+          block : block,
+          name : name
+        });  
+      },10);
       
-    // preview block
-    $('section.flag-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists').each(function(index){
-      var name = $(this).attr('class').match(/flag_lists_[^_]+_[0-9]+/);
-      $('<i class="icon-remove"></i>').appendTo($('h2.listname', this)).attr('name', name).bind('click', onClickClosePreview);
+    }
 
-      $('a.open-list',  this).bind('click', onClickOpenLink);
     
-    }).addClass('ajax-processed');
 
     // trace('MaterioFlag :: activename', activename);
     if(activename == undefined)
@@ -70,10 +94,12 @@ MaterioFlag = function(){
     // trace('MaterioFlag :: activename', activename);
     if(activename)
       showPreview(activename);
+
+    
   };
 
   function refreshBlocks(name){
-    trace('MaterioFlag :: refreshBlocks | name', name);
+    //trace('MaterioFlag :: refreshBlocks | name', name);
     if($('#block-materio-flag-materio-flag-mybookmarks').length){
       var type = 'bookmarks';
     }else if($('#block-materio-flag-materio-flag-mylists').length){
@@ -84,7 +110,7 @@ MaterioFlag = function(){
       var id = '#block-materio-flag-materio-flag-my'+type;
       var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/refresh/block/'+type;
       $.getJSON(url, function(json){
-        trace('MaterioFlag :: block refreshed '+type, json);
+        //trace('MaterioFlag :: block refreshed '+type, json);
         
         $(id).replaceWith(json.block);
         $('#block-materio-flag-materio-flag-mylists-nav').replaceWith(json.block_nav);
@@ -102,7 +128,7 @@ MaterioFlag = function(){
   };
 
   function ajaxifyLinks(container){
-    trace('MaterioFlag :: ajaxifyLinks', container);
+    //trace('MaterioFlag :: ajaxifyLinks', container);
 
     container = ((container != null) ? container : 'body');
  
@@ -123,12 +149,12 @@ MaterioFlag = function(){
   * show hide preview
   */
   function onClickShowPreview(event){
-    trace('MaterioFlag :: onClickShowPreview', event);
+    //trace('MaterioFlag :: onClickShowPreview', event);
     showPreview($(this).attr('name'));
   };
 
   function showPreview(name){
-    trace('MaterioFlag :: showPreview', name);
+    //trace('MaterioFlag :: showPreview', name);
     $('section.'+name, '#block-materio-flag-materio-flag-mylists').addClass('active')
       .siblings('section').removeClass('active');
 
@@ -138,7 +164,7 @@ MaterioFlag = function(){
   };
 
   function onClickClosePreview(event){
-    trace('MaterioFlag :: onClickClosePreview', event);
+    //trace('MaterioFlag :: onClickClosePreview', event);
     eraseCookie('materiomyflaglistsopened');
     $(this).parents('section.flag-list').removeClass('active');
 
@@ -163,7 +189,7 @@ MaterioFlag = function(){
     $.event.trigger('loading-content');
 
     $.getJSON(url, {'current_path':document.location.href},function(json){
-      trace('MaterioFlag :: json', json);
+      //trace('MaterioFlag :: json', json);
       if(json.redirect){
         window.location = json.redirect;
       }else{
@@ -200,7 +226,7 @@ MaterioFlag = function(){
       triggerContentChanged();
 
     }else{
-      trace('MaterioFlag :: no results');
+      //trace('MaterioFlag :: no results');
     }
   };
 
@@ -222,7 +248,7 @@ MaterioFlag = function(){
     var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/createlist/form/'+type[0];
 
     $.getJSON(url, function(json){
-      trace('MaterioFlag :: creat list : json', json);
+      //trace('MaterioFlag :: creat list : json', json);
       showCreateListForm(json, $link);
     });
     return false;
@@ -250,7 +276,7 @@ MaterioFlag = function(){
         event.preventDefault();
         switch($(this).attr('name')){
           case 'cancel':
-            trace('MaterioFlag :: cancel',event);
+            //trace('MaterioFlag :: cancel',event);
             $(this).parents('#modal').remove();
             
             // google analytics
@@ -262,7 +288,7 @@ MaterioFlag = function(){
 
             break;
           case 'create':
-            trace('MaterioFlag :: create',event);
+            //trace('MaterioFlag :: create',event);
             var title = $(this).parents('form').find('input[name*="flag-lists-name"]').val();
             var type = $(this).parents('form').find('input[name*="type"]').val();
 
@@ -288,13 +314,13 @@ MaterioFlag = function(){
     var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'flag-lists/add/'+type+'/js';
     $.getJSON(url, {name:title}, function(data) {
       if (data.error) {
-        trace(data.error);
+        //trace(data.error);
       }
       else {
         // select.append('<option value="'+data.flag.fid+'">'+data.flag.title+'</option>');
         // $('input.name', $(this)).val('');
         // dialog.dialog('close');
-        trace('MaterioFlag :: created list : data', data);
+        //trace('MaterioFlag :: created list : data', data);
 
         flagEntityWithList(data.flag.name, $link.attr('nid'), $link.attr('token'));
         $modal.remove();
@@ -311,7 +337,7 @@ MaterioFlag = function(){
       data: { js: true, token: token },
       dataType: 'json',
       success: function (data2) {
-        trace('MaterioFlag :: node taged with newly created list : data2', data2)
+        //trace('MaterioFlag :: node taged with newly created list : data2', data2)
         if (data2.status) {
           
           // google analytics
@@ -379,7 +405,7 @@ MaterioFlag = function(){
     var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/editlistform/'+type+'/'+lid[0];
 
     $.getJSON(url, function(json){
-      trace('MaterioFlag :: editlist : json', json);
+      //trace('MaterioFlag :: editlist : json', json);
       showEditListForm(json, $link);
     });
     return false;
@@ -413,7 +439,7 @@ MaterioFlag = function(){
 
         switch($(this).attr('name')){
           case 'cancel':
-            trace('MaterioFlag :: cancel',event);
+            //trace('MaterioFlag :: cancel',event);
             $(this).parents('#modal').remove();
             
             // google analytics
@@ -421,7 +447,7 @@ MaterioFlag = function(){
 
             break;
           case 'save':
-            trace('MaterioFlag :: create',event);
+            //trace('MaterioFlag :: create',event);
             
             // google analytics
             var action = "submit edit form";
@@ -429,7 +455,7 @@ MaterioFlag = function(){
             editList($modal, fid, name, title);
             break;
           case 'delete':
-            trace('MaterioFlag :: delete',event);
+            //trace('MaterioFlag :: delete',event);
 
             if(confirm('Do you realy want to delete the folder '+title+'?')){
               var action = "submit delete form";
@@ -463,7 +489,7 @@ MaterioFlag = function(){
           alert(data.message);
       }
       else {
-        trace('MaterioFlag :: saved list : data', data);
+        //trace('MaterioFlag :: saved list : data', data);
         
         $.event.trigger({
           type : 'list-edited',
@@ -489,7 +515,7 @@ MaterioFlag = function(){
           alert(data.message);
       }
       else {
-        trace('MaterioFlag :: deleted list : data', data);
+        //trace('MaterioFlag :: deleted list : data', data);
 
         refreshBlocks();
         refreshNodeLinks();
@@ -527,11 +553,11 @@ MaterioFlag = function(){
   };
 
   function loadNextPage(url, $container, target){
-    trace('MaterioFlag :: loadNextPage');
+    //trace('MaterioFlag :: loadNextPage');
     _isLoadingList = true;
     $container.addClass('loading');
     $.getJSON(url, function(json){
-      trace('json', json);
+      //trace('json', json);
       _isLoadingList = false;
       $container.removeClass('loading');
       addNextpage(json, target);

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 4
js/materio_search_api_ajax-ck.js


+ 25 - 28
js/materio_search_api_ajax.js

@@ -10,7 +10,7 @@ MaterioSearchApiAjax = function(){
   * init()
   */
   function init(){
-    trace('init MaterioSearchApiAjax');
+    //trace('init MaterioSearchApiAjax');
 
     initSearchAjax();
     initViewMode();
@@ -49,7 +49,7 @@ MaterioSearchApiAjax = function(){
     // trigger updated event for direct html loading
     if( isActuality() || isExplore() ){
       setTimeout(function(){
-        trace('MaterioSearchApiAjax :: initSearchAjax :: triggering resultschanged')
+        //trace('MaterioSearchApiAjax :: initSearchAjax :: triggering resultschanged')
         $.event.trigger({
           type : 'resultschanged',
           container : isActuality() ? '#content .actuality-items' : '#content .search-results'
@@ -63,8 +63,8 @@ MaterioSearchApiAjax = function(){
   };
 
   function loadResults(keys){
-    // trace('keys', keys);
-    if(keys !== undefined){
+    trace('keys', keys);
+    if(keys !== undefined && keys !== ''  && keys.length >= 2){
       keys = keys.replace('/', ' ');
 
       var types = {}, stringTypes = [];
@@ -74,7 +74,7 @@ MaterioSearchApiAjax = function(){
           stringTypes.push($this.val());
         types[$this.val()] = $this.attr('checked');
       });
-      trace('types', types);
+      //trace('types', types);
 
 
       if(!_isloadingresults){
@@ -83,14 +83,11 @@ MaterioSearchApiAjax = function(){
         $('#materio-search-api-search-form').addClass('loading');
         // trace('window.location.href',window.location.href);
         // TODO:  record ajax path in a variable from materio_search_api_ajax_init
-        $.getJSON(Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/search/'+keys, 
-          {'types':types,'current_path':document.location.href},
+        $.getJSON(Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/search/', 
+          {'types':types,'current_path':document.location.href, keys:keys},
           function(json){
-            trace('json', json);
-            $.event.trigger('loaded-content');      
-            _isloadingresults = false;
-            $('#materio-search-api-search-form').removeClass('loading');
-
+            //trace('json', json);
+            
             // google analytics
             $.event.trigger({
               type : "record-stat",
@@ -99,9 +96,13 @@ MaterioSearchApiAjax = function(){
               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);  
             }
             
@@ -119,7 +120,7 @@ MaterioSearchApiAjax = function(){
       var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/actuality';
       $.getJSON(url, 
         function(json){
-          trace('json', json);
+          //trace('json', json);
           $.event.trigger('resultsloaded');      
           _isloadingresults = false;
           $('#materio-search-api-search-form').removeClass('loading');
@@ -136,7 +137,7 @@ MaterioSearchApiAjax = function(){
       $('.inner-content',_$content).html(json.return).find('ul.pager').hide();
       triggerContentChanged();
     }else{
-      trace('no results');
+      //trace('no results');
     }
 
     $.event.trigger({
@@ -153,7 +154,7 @@ MaterioSearchApiAjax = function(){
   };
 
   function triggerContentChanged(){
-    trace('MaterioSearchApiAjax :: triggerContentChanged');
+    //trace('MaterioSearchApiAjax :: triggerContentChanged');
     $.event.trigger({
       type : 'resultschanged',
       container : '#content .search-results, #content .actuality-items'
@@ -179,9 +180,9 @@ MaterioSearchApiAjax = function(){
     // trace('loadNextResultsPage');
     var keys = href.match(/explore\/([^\/|\?]+)/);
     var page = href.match(/\?page=([0-9]+)/);
-    var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/search/'+keys[1]+'/'+page[1];
+    var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/search/'+page[1];
     
-    loadNextPage(url, $('.materiobase-results', _$content), '.search-results');
+    loadNextPage(url, keys[1], $('.materiobase-results', _$content), '.search-results');
   };
 
   function loadNextActualityPage(href){
@@ -189,15 +190,15 @@ MaterioSearchApiAjax = function(){
     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');
+    loadNextPage(url, '', $('.materiobase-actuality', _$content), '.actuality-items');
   };
 
-  function loadNextPage(url, $container, target){
-    trace('MaterioSearchApiAjax :: loadNextPage()');
+  function loadNextPage(url, keys, $container, target){
+    //trace('MaterioSearchApiAjax :: loadNextPage()');
     _isloadingresults = true;
     $container.addClass('loading');
-    $.getJSON(url, function(json){
-      trace('json', json);
+    $.getJSON(url, {'keys':keys}, function(json){
+      //trace('json', json);
       $container.removeClass('loading');
       addNextpage(json, target);
       // addNextpageItemByItem($(json.return), target);
@@ -229,7 +230,7 @@ MaterioSearchApiAjax = function(){
 
   // TEST not used 
   function addNextpageItemByItem($newcontent, container_class){
-    trace('MaterioSearchApiAjax :: addNextpageItemByItem()');
+    //trace('MaterioSearchApiAjax :: addNextpageItemByItem()');
     $('ul.pager', _$content).remove();
     $(container_class, _$content).append($(container_class, $newcontent).children('article').eq(0));
 
@@ -265,7 +266,7 @@ MaterioSearchApiAjax = function(){
     if(!_isloadingresults){
       _isloadingresults = true;
       $.getJSON(Drupal.settings.basePath+'materio_search_api_ajax/viewmode/change/'+vm, function(json){
-        trace('viewmode json', json);
+        //trace('viewmode json', json);
       _isloadingresults = false;
         if (json.statut == "saved"){
           
@@ -314,11 +315,7 @@ MaterioSearchApiAjax = function(){
     return $('.actuality-items', '#content').length;
   };
     
-
-
   init();
-
-
 };
 
   var materiosearchapiajax = new MaterioSearchApiAjax();

+ 3 - 3
materio_flag.module

@@ -343,12 +343,12 @@ function materio_flag_get_entity_links($entity, $type, $view_mode = null){
 
     #create new list
     $link = l(
-      '<span>' . t('New @name', array('@name' => variable_get('flag_lists_name', t('list')))) . '</span>&nbsp;<i class="icon-plus"></i>', 
+      '<i class="icon-plus"></i>&nbsp;<span>' . t('New @name', array('@name' => t(variable_get('flag_lists_name', 'list')))) . '</span>', 
       'flag-lists/add/' . $entity->type,
       array(
         'attributes' => array(
           'class' => array('flag-lists-create'),
-          'title' => t('create a new @name and use it.', array('@name'=>variable_get('flag_lists_name', t('list')))),
+          'title' => t('create a new @name and use it.', array('@name'=>t(variable_get('flag_lists_name', 'list')))),
           'nid' => $entity->nid,
           'token' => flag_get_token($entity->nid),
         ),
@@ -481,7 +481,7 @@ function template_preprocess_materio_flag_mylists_list(&$vars) {
     '@name @title contains 1 item.', // in @sec seconds
     '@name @title contains @count items.', // in @sec seconds
     array(
-      '@name' => $vars['name'],
+      '@name' => t($vars['name']),
       '@title' => $vars['title'],
     )
   );

+ 2 - 1
materio_search_api.module

@@ -519,7 +519,8 @@ function template_preprocess_materio_search_api_results(array &$variables) {
 function template_preprocess_materio_search_api_actuality(&$vars){
   // dsm($vars, 'template_preprocess_materio_search_api_actuality | vars');
 
-  $vars['actualities_infos'] = t('Actualities by materiO\'');
+  // $vars['actualities_infos'] = t('Actualities by materiO\'');
+  $vars['actualities_infos'] = t('');
 }
 
 /**

+ 22 - 16
materio_search_api.pages.inc

@@ -78,10 +78,13 @@ function materio_search_api_autocomplete_searchapi($typed = ''){
     // build the query
     $index_machine_name = variable_get('autocompletesearchindex', -1);
     $query = search_api_query($index_machine_name);
-    $query_filter = $query->createFilter();
-    $query_filter->condition('name', $tosearch);
+    
+    // $query_filter = $query->createFilter();
+    // $query_filter->condition('name', $tosearch);
     // $query_filter->condition('type', 'article');
-    $query->filter($query_filter);
+    // $query->filter($query_filter);
+    $query->keys($tosearch);
+
     $tags_return = $query->execute();
     // dsm($tags_return, '$tags_return');
 
@@ -90,7 +93,7 @@ function materio_search_api_autocomplete_searchapi($typed = ''){
       $index = search_api_index_load($index_machine_name);
       $delta = 0;
       foreach ($index->loadItems(array_keys($tags_return['results'])) as $item) {
-        // dsm($item, '$item');
+        //dsm($item, '$item');
         //$term_matches[$item->tid] = check_plain($item->name);
         // $term_matches[check_plain($item->name)] = check_plain($item->name);
         // TODO:  leave tags with nodes  
@@ -125,7 +128,8 @@ function materio_search_api_results_search(){
   //dsm("materio_search_api_results_search");
   $args = func_get_args();
   $typed = implode('/', $args);
-  
+  // dsm($typed, 'typed');
+
   preg_match_all('/\?page=([0-9]+)/', $typed, $pages);
   //dsm($pages, '$pages');
   if($pages[0]){
@@ -140,12 +144,17 @@ function materio_search_api_results_search(){
   preg_match_all('/\s?[^\s]+\s?/', $typed, $words);
   // dsm($words, "words");
 
-  // $escaper = array("+", "-", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", '"', "~", "*", "?", ":", '\\');
+  
+  // $match = array('\\', '+', '-', '&', '|', '!', '(', ')', '{', '}', '[', ']', '^', '~', '*', '?', ':', '"', ';', ' ');
+  // $replace = array('\\\\', '\\+', '\\-', '\\&', '\\|', '\\!', '\\(', '\\)', '\\{', '\\}', '\\[', '\\]', '\\^', '\\~', '\\*', '\\?', '\\:', '\\"', '\\;', '\\ ');
   foreach ($words[0] as $word) {
-    // $word = preg_replace('/\b-/', '\-', trim($word));
     // dsm($word);
-    $keys[] = trim($word);
+    $word = trim($word);
+    // $word = str_replace($match, $replace, $word);
+    // dsm($word, 'word');
+    $keys[] = $word;
   }
+  // dsm($keys, 'keys');
 
   $index_machine_name = variable_get('mainsearchindex', -1);
   $index = search_api_index_load($index_machine_name);
@@ -160,11 +169,12 @@ function materio_search_api_results_search(){
   $viewmode = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full');
 
   if ($keys) {
+    // TODO:  cache the results with cache graceful : http://drupal.org/project/cache_graceful  
     try {
       $limit = variable_get($viewmode.'_limite', '10');
       $offset = pager_find_page() * $limit; //$page*$limit;//
 
-      $query = search_api_query($index_machine_name, array('parse mode'=>'direct'))
+      $query = search_api_query($index_machine_name, array('conjunction'=>'OR', 'parse mode'=>'direct'))
         ->keys(implode(' ', $keys))
         ->range($offset, $limit);
 
@@ -174,10 +184,6 @@ function materio_search_api_results_search(){
       }
       // dsm($filter, 'filter');
       $query->filter($filter);
-      
-      // $bundle_query_filter = $query->createFilter();
-      // $bundle_query_filter->condition('type', 'materiau');//$bundles_filter);
-      // $query->filter($bundle_query_filter);
 
       $results = $query->execute();
     }
@@ -314,7 +320,8 @@ function materio_search_api_actuality(){
     }
   }
 
-  drupal_set_title(t('Actualities'));
+  // drupal_set_title(t('Actualities'));
+  drupal_set_title(t(''));
 
   return theme('materio_search_api_actuality', array(
     'items' => $items,
@@ -326,12 +333,11 @@ function materio_search_api_actuality(){
 
 
 function materio_search_api_viewmode_change($vm){
-  dsm($vm, 'materio_search_api_viewmode_change');
+  //dsm($vm, 'materio_search_api_viewmode_change');
   $rep = _materio_search_api_change_viewmode($vm);
 
   //return 'debug mode for materio_search_api_viewmode_change';
   // drupal_json_output($rep);
 
   drupal_goto();
-
 }

+ 2 - 3
materio_search_api_ajax.module

@@ -24,7 +24,6 @@ function materio_search_api_ajax_init() {
     // ),
     'languages' => isset($languages) ? $languages[1] : array(),
   )), 'setting');
-
   drupal_add_js(drupal_get_path('module', 'materio_search_api_ajax').'/js/materio_search_api_ajax-ck.js');
 }
 
@@ -40,10 +39,10 @@ function materio_search_api_ajax_menu() {
     'access arguments' => array('use materio search api'),
   );
 
-  $items['materio_search_api_ajax/search/%'] = $base+array(
+  $items['materio_search_api_ajax/search'] = $base+array(
     'title' => 'Matrio base ajax',
     'page callback' => 'materio_search_api_ajax_search',
-    'page arguments' => array(2,3),
+    'page arguments' => array(2),
     'access callback' => TRUE,
   );
 

+ 17 - 6
materio_search_api_ajax.pages.inc

@@ -1,7 +1,7 @@
 <?php
 
 
-function materio_search_api_ajax_search($keys, $page = 0){
+function materio_search_api_ajax_search($page = 0){
   $debug = false;
   global $user, $base_url;
   // TODO:  set research path configurable  
@@ -10,8 +10,15 @@ function materio_search_api_ajax_search($keys, $page = 0){
   # execute search
   $_GET['page'] = $page;
 
-  $path = $search_path . '/' . $keys ;//. ($page ? '?page='.$page : '');
-  // dsm($menuhandler, 'menuhandler');
+  $keys = $_GET['keys'];
+
+  foreach(explode(' ', $keys) as $word){
+    $words[] = rawurlencode($word);
+  }
+  $keys_encoded = implode(' ', $words);
+  // dsm($words, 'words');
+
+  $path = $search_path . '/' . $keys;//. ($page ? '?page='.$page : '');
 
   // check if request is ajax, if not rediret to search_api_page page with right keys
   if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) {
@@ -19,6 +26,8 @@ function materio_search_api_ajax_search($keys, $page = 0){
     exit ;
   }
 
+  // TODO:  if no permission, redirect to home  
+
   # content type filter s
   // $types = $_GET['types'];
   if(isset($_GET['types'])){
@@ -64,6 +73,7 @@ function materio_search_api_ajax_search($keys, $page = 0){
     }
   }
 
+  // dsm($path, 'path');
   // get results
   menu_set_active_item($path);
   $return = menu_execute_active_handler($path, FALSE);
@@ -91,8 +101,9 @@ function materio_search_api_ajax_search($keys, $page = 0){
     }
       
     $rep = array(
-      'path'=>$path,
+      'path'=>$search_path.'/'.$keys_encoded,
       'keys'=>$keys,
+      'keys_encoded'=>$keys_encoded,
       'search_path'=>$search_path,
       'return'=>$return,
       'active_types'=>$active_types,
@@ -103,7 +114,7 @@ function materio_search_api_ajax_search($keys, $page = 0){
       $rep['count'] = $count;
     
     if ($debug) {
-      dsm($rep, 'rep');
+      //dsm($rep, 'rep');
       return "debug display";
     }else{
       drupal_json_output($rep);  
@@ -202,7 +213,7 @@ function materio_search_api_ajax_actuality($page = 0){
     );
     
     if ($debug) {
-      dsm($rep, 'rep');
+      //dsm($rep, 'rep');
       return "debug display";
     }else{
       drupal_json_output($rep);  

+ 3 - 0
templates/materio-search-api-results.tpl.php

@@ -42,6 +42,9 @@
       <?php //print render($spellcheck); ?>
       <div class="search-results">
         <?php //dsm($items, '$items'); ?>
+        <?php 
+        // TODO: use cache system to gain in speed, view http://drupal.org/node/930760
+        ?>
         <?php print render(entity_view($index->item_type, $items, $variables['view_mode'])); ?>
       </div>
       <?php print $pager; ?>

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio