/** * Display the HTML code to display the query fields * * @param prefs: array of parameters used for the current query * @param advsrch,pv: HTTP get variables * * @return string * */ function displayQueryFields($prefs, $advsrch, $pv) { global $ath, $Language; $hp = Codendi_HTMLPurifier::instance(); $html_select = ''; // // Loop through the list of used fields to define label and fields/boxes // used as search criteria // $query_fields = $this->getQueryFields(); //the width has been removed to correct the display of the Query Form (related to the fix of STTab theme) $html_select .= "<table>"; $labels = ''; $boxes = ''; // Number of search criteria (boxes) displayed in one row $this->fields_per_line = 5; $ib = 0; $is = 0; $load_cal = false; while (list($key, $field) = each($query_fields)) { $field_html = new ArtifactFieldHtml($field); //echo $field->getName()."-".$field->display_type."-".$field->data_type."-".$field->dump()."<br>"; // beginning of a new row if ($ib % $this->fields_per_line == 0) { $align = "left"; $labels .= "\n" . '<TR align="' . $align . '" valign="top">'; $boxes .= "\n" . '<TR align="' . $align . '" valign="top">'; } // Need to build help button argument. // Concatenate 3 args in one string $group_id = $ath->Group->getID(); $help_args = $group_id . '|' . $this->group_artifact_id . '|' . $field->getName(); $labels .= '<td class="small"><b>' . $hp->purify(SimpleSanitizer::unsanitize($field->getLabel()), CODENDI_PURIFIER_CONVERT_HTML) . ' ' . help_button('browse_tracker_query_field', $help_args) . '</b></td>'; $boxes .= '<TD><FONT SIZE="-1">'; if ($field->isSelectBox()) { // Check for advanced search if you have the field in the $prefs (HTTP parameters) if ($advsrch) { if (isset($prefs[$field->getName()]) && $prefs[$field->getName()]) { if (is_array($prefs[$field->getName()])) { $values = $prefs[$field->getName()]; } else { $values[] = $prefs[$field->getName()]; } } else { $values[] = 0; } } else { if (isset($prefs[$field->getName()][0])) { $values = $prefs[$field->getName()][0]; } else { $values = ""; } } $boxes .= $field_html->display($this->group_artifact_id, $values, false, false, $pv != 0 ? true : false, false, true, $Language->getText('global', 'none'), true, $Language->getText('global', 'any')); } else { if ($field->isMultiSelectBox()) { $boxes .= $field_html->display($this->group_artifact_id, $prefs[$field->getName()], false, false, $pv != 0 ? true : false, false, true, $Language->getText('global', 'none'), true, $Language->getText('global', 'any')); } else { if ($field->isDateField()) { $load_cal = true; // We need to load the Javascript Calendar if ($advsrch) { $date_begin = isset($prefs[$field->getName()][0]) ? $prefs[$field->getName()][0] : ''; $date_end = isset($prefs[$field->getName() . '_end'][0]) ? $prefs[$field->getName() . '_end'][0] : ''; $boxes .= $field_html->multipleFieldDate($date_begin, $date_end, 0, 0, $pv); } else { $val_op = isset($prefs[$field->getName() . '_op'][0]) ? $prefs[$field->getName() . '_op'][0] : ''; $val = isset($prefs[$field->getName()][0]) ? $prefs[$field->getName()][0] : ''; $boxes .= $field_html->fieldDateOperator($val_op, $pv) . $field_html->fieldDate($val, $pv); } } else { if ($field->isTextField() || $field->isTextArea()) { $val = isset($prefs[$field->getName()][0]) ? $prefs[$field->getName()][0] : ""; $boxes .= $pv != 0 ? $val : $field_html->fieldText(stripslashes($val), 15, 80); } } } } $boxes .= "</TD>\n"; $ib++; // end of this row if ($ib % $this->fields_per_line == 0) { $html_select .= $labels . '</TR>' . $boxes . '</TR>'; $labels = $boxes = ''; } } // Make sure the last few cells are in the table if ($labels) { $html_select .= $labels . '</TR>' . $boxes . '</TR>'; } $html_select .= "</table>"; return $html_select; }