Bachir Soussi Chiadmi 6 years ago
parent
commit
5f26b3e160
1 changed files with 53 additions and 33 deletions
  1. 53 33
      sites/all/modules/gui/materiobasemod/materio_search_api.module

+ 53 - 33
sites/all/modules/gui/materiobasemod/materio_search_api.module

@@ -601,6 +601,11 @@ function materio_search_api_node_view($node, $view_mode, $langcode) {
 }
 
 
+//    _____                      __       ______
+//   / ___/___  ____ ___________/ /_     / ____/___  _________ ___
+//   \__ \/ _ \/ __ `/ ___/ ___/ __ \   / /_  / __ \/ ___/ __ `__ \
+//  ___/ /  __/ /_/ / /  / /__/ / / /  / __/ / /_/ / /  / / / / / /
+// /____/\___/\__,_/_/   \___/_/ /_/  /_/    \____/_/  /_/ /_/ /_/
 /**
  * materiobase_search_form()
  */
@@ -728,6 +733,11 @@ function materio_search_api_search_form_submit($form, &$form_state){
 }
 
 
+//     ___       __                                __   _____                      __
+//    /   | ____/ /   ______ _____  ________  ____/ /  / ___/___  ____ ___________/ /_
+//   / /| |/ __  / | / / __ `/ __ \/ ___/ _ \/ __  /   \__ \/ _ \/ __ `/ ___/ ___/ __ \
+//  / ___ / /_/ /| |/ / /_/ / / / / /__/  __/ /_/ /   ___/ /  __/ /_/ / /  / /__/ / / /
+// /_/  |_\__,_/ |___/\__,_/_/ /_/\___/\___/\__,_/   /____/\___/\__,_/_/   \___/_/ /_/
 /**
  * materio_search_api_advanced_search_form()
  */
@@ -743,43 +753,50 @@ function materio_search_api_advanced_search_form($form, &$form_state){
   $voc_machinename = $voc->machine_name;
   // dsm($voc, "voc");
 
-  $values = $form_state['values'];
+  $values = isset($form_state['values']) ? $form_state['values'] : null;
 
   $args = arg();
+  // dsm($args, 'args');
+
   $path = array_shift($args);
 
-  // TODO: get the keywords from args and reconstruct the filter lines with default values
-  // dsm($args, "args");
-  $keywords = explode("+", $args[0]);
-  // dsm($keywords, 'keywords');
-
-  $default_values = array();
-  foreach ($keywords as $key => $value) {
-    $name = str_replace('"', '', $value);
-    //Get the term
-    $terms = taxonomy_get_term_by_name($name, $voc_machinename);
-    $term = array_shift($terms);
-    // dsm($term, $term->tid.' : '.$term->name);
-    // get parents
-    if(isset($term->tid)){
-      $parents = taxonomy_get_parents_all($term->tid);
-      // dsm($parents, 'parents');
-      // build default values
-      for ($p=count($parents)-1; $p >=0 ; $p--) {
-        $default_values[$key][] = $parents[$p]->tid;
+  // get the keywords from args and reconstruct the filter lines with default values
+  $args_values = array();
+  if($path == 'explore' && $args[0] !== "ajax"){
+    $keywords = explode("+", $args[0]);
+    // dsm($keywords, 'keywords');
+
+    foreach ($keywords as $key => $value) {
+      $name = str_replace('"', '', $value);
+      //Get the term
+      $terms = taxonomy_get_term_by_name($name, $voc_machinename);
+      $term = array_shift($terms);
+      // dsm($term, $term->tid.' : '.$term->name);
+      // get parents
+      if(isset($term->tid)){
+        $parents = taxonomy_get_parents_all($term->tid);
+        // dsm($parents, 'parents');
+        // build default values
+        for ($p=count($parents)-1; $p >=0 ; $p--) {
+          $args_values[$key][] = $parents[$p]->tid;
+        }
       }
     }
+    // dsm($args_values, 'default_values');
   }
-  // dsm($default_values, 'default_values');
-
 
-  // define default number of lines, 1 or more if some were already added
-  $form_state['filterlines'] =
-    isset($form_state['filterlines'])
-    ? $form_state['filterlines']
-    : count($default_values)
-      ? count($default_values)
-      : 1;
+  // define number of lines,
+  // 1 by default
+  // or from url arguments
+  // or let it as it is if already chanched by ajax
+  if(!isset($form_state['filterlines'])){
+    if(count($args_values)){
+      $form_state['filterlines'] = count($args_values);
+    }else{
+      $form_state['filterlines'] = 1;
+    }
+  }
+  // dsm($form_state['filterlines'], "form_state['filterlines']");
 
   // filters form container
   $form['filters'] = array(
@@ -853,7 +870,7 @@ function materio_search_api_advanced_search_form($form, &$form_state){
     if(isset($values['filter-'.$l.'-0']) && $values['filter-'.$l.'-0']){
       $default = $values['filter-'.$l.'-0'];
     }else{
-      $default = isset($default_values[$l][0]) ? $default_values[$l][0] : 0;
+      $default = isset($args_values[$l][0]) ? $args_values[$l][0] : 0;
     }
 
     // form select element for first level
@@ -880,10 +897,14 @@ function materio_search_api_advanced_search_form($form, &$form_state){
           $level_1_ops[$term->tid] = t($term->name);
         }
 
+        // get the default value
+        // from from_state values if ajax
+        // or from url args
+        // or 0
         if(isset($values['filter-'.$l.'-1']) && $values['filter-'.$l.'-1']){
           $default = $values['filter-'.$l.'-1'];
         }else{
-          $default = isset($default_values[$l][1]) ? $default_values[$l][1] : 0;
+          $default = isset($args_values[$l][1]) ? $args_values[$l][1] : 0;
         }
         // dsm($default, "default 1");
 
@@ -904,11 +925,10 @@ function materio_search_api_advanced_search_form($form, &$form_state){
             // $default = $values['filter-'.$l.'-1'];
             // $form['filters']['filterline-'.$ll]['filter-'.$ll.'-1']['#default_value'] = $default;
 
-
             // build second level taxonomy tree and select options
             $taxotree2 = taxonomy_get_tree($vid, $default, 1, false);
             if(count($taxotree2)){
-              $default = isset($default_values[$l][2]) ? $default_values[$l][2] : 0;
+              $default = isset($args_values[$l][2]) ? $args_values[$l][2] : 0;
               // dsm($default, "default 2");
 
               $level_2_ops = array(0=>t("Choose a filter"));