bugfix
This commit is contained in:
parent
5f26b3e160
commit
9bfbd861ca
@ -742,7 +742,7 @@ function materio_search_api_search_form_submit($form, &$form_state){
|
|||||||
* materio_search_api_advanced_search_form()
|
* materio_search_api_advanced_search_form()
|
||||||
*/
|
*/
|
||||||
function materio_search_api_advanced_search_form($form, &$form_state){
|
function materio_search_api_advanced_search_form($form, &$form_state){
|
||||||
// dsm($form_state, 'form_state');
|
dsm($form_state, 'form_state');
|
||||||
// dsm($form, 'form');
|
// dsm($form, 'form');
|
||||||
// global $user;
|
// global $user;
|
||||||
// $form = array();
|
// $form = array();
|
||||||
@ -754,18 +754,22 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
// dsm($voc, "voc");
|
// dsm($voc, "voc");
|
||||||
|
|
||||||
$values = isset($form_state['values']) ? $form_state['values'] : null;
|
$values = isset($form_state['values']) ? $form_state['values'] : null;
|
||||||
|
// dsm($values, "values");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$args = arg();
|
$args = arg();
|
||||||
// dsm($args, 'args');
|
// dsm($args, 'args');
|
||||||
|
|
||||||
|
// get the first elemt of url args
|
||||||
$path = array_shift($args);
|
$path = array_shift($args);
|
||||||
|
|
||||||
// get the keywords from args and reconstruct the filter lines with default values
|
// get the keywords from args and reconstruct the filter lines with default values
|
||||||
$args_values = array();
|
$args_values = array();
|
||||||
if($path == 'explore' && $args[0] !== "ajax"){
|
if($path == 'explore' && $args[0] !== "ajax"){
|
||||||
$keywords = explode("+", $args[0]);
|
$keywords = explode("+", $args[0]);
|
||||||
|
// TODO: what if a keyword contains a +
|
||||||
// dsm($keywords, 'keywords');
|
// dsm($keywords, 'keywords');
|
||||||
|
|
||||||
foreach ($keywords as $key => $value) {
|
foreach ($keywords as $key => $value) {
|
||||||
$name = str_replace('"', '', $value);
|
$name = str_replace('"', '', $value);
|
||||||
//Get the term
|
//Get the term
|
||||||
@ -782,8 +786,10 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// dsm($args_values, 'default_values');
|
|
||||||
}
|
}
|
||||||
|
// dsm($args_values, 'args_values');
|
||||||
|
// TODO: show result count live
|
||||||
|
// TODO: filter next select form item
|
||||||
|
|
||||||
// define number of lines,
|
// define number of lines,
|
||||||
// 1 by default
|
// 1 by default
|
||||||
@ -824,16 +830,14 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
if(strpos($trigger['#name'], 'rm-filter-') === 0){
|
if(strpos($trigger['#name'], 'rm-filter-') === 0){
|
||||||
// $form_state['filterlines'] = $form_state['filterlines']+1;
|
// $form_state['filterlines'] = $form_state['filterlines']+1;
|
||||||
$rmline = $trigger['#return_value'];
|
$rmline = $trigger['#return_value'];
|
||||||
|
dsm($rmline, "rmline");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: show result count live
|
|
||||||
// TODO: filter next select form item
|
|
||||||
|
|
||||||
// build first level taxonomy tree and select options
|
// build first level taxonomy tree and select options
|
||||||
$taxotree = taxonomy_get_tree($vid, 0, 1, false);
|
$taxotree = taxonomy_get_tree($vid, 0, 1, false);
|
||||||
$level_0_ops = array(0=>t("Choose a filter"));
|
|
||||||
foreach ($taxotree as $index => $term) {
|
foreach ($taxotree as $index => $term) {
|
||||||
|
// TODO: get translated tag name
|
||||||
$level_0_ops[$term->tid] = t($term->name);
|
$level_0_ops[$term->tid] = t($term->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -841,7 +845,7 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
for ($l=0; $l < $form_state['filterlines']; $l++) {
|
for ($l=0; $l < $form_state['filterlines']; $l++) {
|
||||||
|
|
||||||
// if rmline this line,
|
// if rmline this line,
|
||||||
// continue the loop withour creating the line
|
// continue the loop without creating the line
|
||||||
if($l === $rmline){
|
if($l === $rmline){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -849,12 +853,12 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
// create a second counter ($ll) to keep a continuous order for form items
|
// create a second counter ($ll) to keep a continuous order for form items
|
||||||
// and keep the current counter ($l) to retrieve de current values
|
// and keep the current counter ($l) to retrieve de current values
|
||||||
// if before removed line or no removed line at all, $l = $ll
|
// if before removed line or no removed line at all, $l = $ll
|
||||||
if($rmline !== false && $l > $rmline){
|
if($rmline !== false && $l >= $rmline){
|
||||||
$ll = $l-1;
|
$ll = $l-1;
|
||||||
}else{
|
}else{
|
||||||
$ll = $l;
|
$ll = $l;
|
||||||
}
|
}
|
||||||
// dsm("l : ".$l." | ll : ".$ll);
|
dsm("l : ".$l." | ll : ".$ll);
|
||||||
|
|
||||||
$form['filters']['filterline-'.$ll] = array(
|
$form['filters']['filterline-'.$ll] = array(
|
||||||
'#type' => 'container',
|
'#type' => 'container',
|
||||||
@ -867,33 +871,38 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
// from from_state values if ajax
|
// from from_state values if ajax
|
||||||
// or from url args
|
// or from url args
|
||||||
// or 0
|
// or 0
|
||||||
|
$default0 = null;
|
||||||
if(isset($values['filter-'.$l.'-0']) && $values['filter-'.$l.'-0']){
|
if(isset($values['filter-'.$l.'-0']) && $values['filter-'.$l.'-0']){
|
||||||
$default = $values['filter-'.$l.'-0'];
|
$default0 = $values['filter-'.$l.'-0'];
|
||||||
}else{
|
}elseif(isset($args_values[$l][0])){
|
||||||
$default = isset($args_values[$l][0]) ? $args_values[$l][0] : 0;
|
$default0 = $args_values[$l][0];
|
||||||
}
|
}
|
||||||
|
dsm($default0, "default 0");
|
||||||
|
|
||||||
// form select element for first level
|
// form select element for first level
|
||||||
$form['filters']['filterline-'.$ll]['filter-'.$ll.'-0'] = array(
|
$form['filters']['filterline-'.$ll]['filter-'.$ll.'-0'] = array(
|
||||||
'#type' => 'select',
|
'#type' => 'select',
|
||||||
'#options' => $level_0_ops,
|
'#options' => $level_0_ops,
|
||||||
'#name' => 'filter-'.$ll.'-0',
|
'#name' => 'filter-'.$ll.'-0',
|
||||||
'#default_value' => $default,
|
'#empty_option' => t("Choose a filter"),
|
||||||
|
// '#empty_values' => 0,
|
||||||
|
'#default_value' => $default0,
|
||||||
'#ajax' => array(
|
'#ajax' => array(
|
||||||
'callback' => 'materio_search_api_advanced_search_select_callback',
|
'callback' => 'materio_search_api_advanced_search_select_callback',
|
||||||
'wrapper' => 'advancedsearch-filters',
|
'wrapper' => 'advancedsearch-filters',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
// without this line, form api will mess with default values
|
||||||
|
$form_state["input"]['filter-'.$ll.'-0'] = $default0;
|
||||||
|
|
||||||
// add level 1 filter if level 0 chosen
|
// add level 1 filter if level 0 chosen
|
||||||
if($default){
|
if($default0){
|
||||||
// $default = $values['filter-'.$l.'-0'];
|
|
||||||
// $form['filters']['filterline-'.$ll]['filter-'.$ll.'-0']['#default_value'] = $default;
|
|
||||||
|
|
||||||
// build second level taxonomy tree and select options
|
// build second level taxonomy tree and select options
|
||||||
$taxotree1 = taxonomy_get_tree($vid, $default, 1, false);
|
$taxotree1 = taxonomy_get_tree($vid, $default0, 1, false);
|
||||||
$level_1_ops = array(0=>t("Choose a filter"));
|
$level_1_ops = array();
|
||||||
foreach ($taxotree1 as $index => $term) {
|
foreach ($taxotree1 as $index => $term) {
|
||||||
|
// TODO: get translated tag name
|
||||||
$level_1_ops[$term->tid] = t($term->name);
|
$level_1_ops[$term->tid] = t($term->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -901,38 +910,48 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
// from from_state values if ajax
|
// from from_state values if ajax
|
||||||
// or from url args
|
// or from url args
|
||||||
// or 0
|
// or 0
|
||||||
|
$default1 = null;
|
||||||
if(isset($values['filter-'.$l.'-1']) && $values['filter-'.$l.'-1']){
|
if(isset($values['filter-'.$l.'-1']) && $values['filter-'.$l.'-1']){
|
||||||
$default = $values['filter-'.$l.'-1'];
|
$default1 = $values['filter-'.$l.'-1'];
|
||||||
}else{
|
}elseif(isset($args_values[$l][1])){
|
||||||
$default = isset($args_values[$l][1]) ? $args_values[$l][1] : 0;
|
$default1 = $args_values[$l][1];
|
||||||
}
|
}
|
||||||
// dsm($default, "default 1");
|
dsm($default1, "default 1");
|
||||||
|
|
||||||
// form select element for second level
|
// form select element for second level
|
||||||
$form['filters']['filterline-'.$ll]['filter-'.$ll.'-1'] = array(
|
$form['filters']['filterline-'.$ll]['filter-'.$ll.'-1'] = array(
|
||||||
'#type' => 'select',
|
'#type' => 'select',
|
||||||
'#options' => $level_1_ops,
|
'#options' => $level_1_ops,
|
||||||
'#name' => 'filter-'.$ll.'-1',
|
'#name' => 'filter-'.$ll.'-1',
|
||||||
'#default_value' => $default,
|
'#empty_option' => t("Choose a filter"),
|
||||||
|
// '#empty_values' => 0,
|
||||||
|
'#default_value' => $default1,
|
||||||
'#ajax' => array(
|
'#ajax' => array(
|
||||||
'callback' => 'materio_search_api_advanced_search_select_callback',
|
'callback' => 'materio_search_api_advanced_search_select_callback',
|
||||||
'wrapper' => 'advancedsearch-filters',
|
'wrapper' => 'advancedsearch-filters',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
// without this line, form api will mess with default values
|
||||||
|
$form_state["input"]['filter-'.$ll.'-1'] = $default1;
|
||||||
|
|
||||||
// add level 2 filter if level 1 chosen
|
// add level 2 filter if level 1 chosen
|
||||||
if($default){
|
if($default1){
|
||||||
// $default = $values['filter-'.$l.'-1'];
|
|
||||||
// $form['filters']['filterline-'.$ll]['filter-'.$ll.'-1']['#default_value'] = $default;
|
|
||||||
|
|
||||||
// build second level taxonomy tree and select options
|
// build second level taxonomy tree and select options
|
||||||
$taxotree2 = taxonomy_get_tree($vid, $default, 1, false);
|
$taxotree2 = taxonomy_get_tree($vid, $default1, 1, false);
|
||||||
if(count($taxotree2)){
|
if(count($taxotree2)){
|
||||||
$default = isset($args_values[$l][2]) ? $args_values[$l][2] : 0;
|
// $default2 = isset($args_values[$l][2]) ? $args_values[$l][2] : 0;
|
||||||
// dsm($default, "default 2");
|
$default2 = null;
|
||||||
|
if(isset($values['filter-'.$l.'-2']) && $values['filter-'.$l.'-2']){
|
||||||
|
$default2 = $values['filter-'.$l.'-2'];
|
||||||
|
}elseif(isset($args_values[$l][2])){
|
||||||
|
$default2 = $args_values[$l][2];
|
||||||
|
}
|
||||||
|
dsm($default2, "default 2");
|
||||||
|
|
||||||
$level_2_ops = array(0=>t("Choose a filter"));
|
$level_2_ops = array();
|
||||||
foreach ($taxotree2 as $index => $term) {
|
foreach ($taxotree2 as $index => $term) {
|
||||||
|
// TODO: get translated tag name
|
||||||
$level_2_ops[$term->tid] = t($term->name);
|
$level_2_ops[$term->tid] = t($term->name);
|
||||||
}
|
}
|
||||||
// form select element for third level
|
// form select element for third level
|
||||||
@ -940,8 +959,12 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
'#type' => 'select',
|
'#type' => 'select',
|
||||||
'#options' => $level_2_ops,
|
'#options' => $level_2_ops,
|
||||||
'#name' => 'filter-'.$ll.'-2',
|
'#name' => 'filter-'.$ll.'-2',
|
||||||
'#default_value' => $default,
|
'#empty_option' => t("Choose a filter"),
|
||||||
|
// '#empty_values' => 0,
|
||||||
|
'#default_value' => $default2,
|
||||||
);
|
);
|
||||||
|
// without this line, form api will mess with default values
|
||||||
|
$form_state["input"]['filter-'.$ll.'-2'] = $default2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1010,6 +1033,7 @@ function materio_search_api_advanced_search_form($form, &$form_state){
|
|||||||
'#return_value' => "search",
|
'#return_value' => "search",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
dsm($form, 'form');
|
||||||
return $form;
|
return $form;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user