From 5f26b3e1607d5fd2407417088571db1858d242ac Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Wed, 11 Oct 2017 14:44:55 +0200 Subject: [PATCH] bugfix --- .../materiobasemod/materio_search_api.module | 84 ++++++++++++------- 1 file changed, 52 insertions(+), 32 deletions(-) diff --git a/sites/all/modules/gui/materiobasemod/materio_search_api.module b/sites/all/modules/gui/materiobasemod/materio_search_api.module index d28e6e9a..1458e631 100755 --- a/sites/all/modules/gui/materiobasemod/materio_search_api.module +++ b/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'); + // 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'); - $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; + 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"));