|
@@ -29,8 +29,8 @@ function search_widget_prepare(&$htmlHeadXtra) {
|
|
|
|
|
|
* Get one term html select
|
|
|
*/
|
|
|
-function format_one_specific_field_select($prefix, $sf_term_array, $op) {
|
|
|
- $multiple_select .= '<select multiple="multiple" size="7" class="sf-select-multiple" name="sf_'. $prefix .'[]">';
|
|
|
+function format_one_specific_field_select($prefix, $sf_term_array, $op, $extra_select_attr='size="7" class="sf-select-multiple"') {
|
|
|
+ $multiple_select .= '<select '. $extra_select_attr .' title="'. $prefix .'" id="sf-'. $prefix .'" name="sf_'. $prefix .'[]">';
|
|
|
|
|
|
$all_selected = '';
|
|
|
if (!empty($_REQUEST['sf_'. $prefix]) ) {
|
|
@@ -62,12 +62,13 @@ function format_one_specific_field_select($prefix, $sf_term_array, $op) {
|
|
|
|
|
|
* Get terms html selects
|
|
|
*/
|
|
|
-function format_specific_fields_selects($sf_terms, $op) {
|
|
|
+function format_specific_fields_selects($sf_terms, $op, $prefilter_prefix='') {
|
|
|
|
|
|
$i = 0;
|
|
|
$max = count($sf_terms);
|
|
|
$multiple_selects .='';
|
|
|
foreach ($sf_terms as $prefix => $sf_term_array) {
|
|
|
+ if ($prefix == $prefilter_prefix) continue;
|
|
|
$multiple_select = '';
|
|
|
if ($i>0) {
|
|
|
|
|
@@ -88,7 +89,7 @@ function format_specific_fields_selects($sf_terms, $op) {
|
|
|
$sf_value = get_specific_field_list(array( 'code' => "'$prefix'" ));
|
|
|
$sf_value = array_shift($sf_value);
|
|
|
$multiple_select .= '<td><label class="sf-select-multiple-title" for="sf_'. $prefix .'[]">'.$icons_for_search_terms[$prefix].' '.$sf_value['name'].'</label><br />';
|
|
|
- $multiple_select .= format_one_specific_field_select($prefix, $sf_term_array, $op);
|
|
|
+ $multiple_select .= format_one_specific_field_select($prefix, $sf_term_array, $op, 'multiple="multiple" size="7" class="sf-select-multiple"');
|
|
|
$multiple_select .= '</td>';
|
|
|
$multiple_selects .= $multiple_select;
|
|
|
$i++;
|
|
@@ -97,25 +98,28 @@ function format_specific_fields_selects($sf_terms, $op) {
|
|
|
}
|
|
|
|
|
|
|
|
|
- * Show search form
|
|
|
+ * Build the normal form.
|
|
|
+ *
|
|
|
+ * First, natural way.
|
|
|
*/
|
|
|
-function display_search_form($action, $show_thesaurus, $sf_terms, $op) {
|
|
|
+function search_widget_normal_form($action, $show_thesaurus, $sf_terms, $op) {
|
|
|
$thesaurus_icon = Display::return_icon('thesaurus.gif', get_lang('SearchAdvancedOptions'), array('id'=>'thesaurus-icon'));
|
|
|
$advanced_options = '<a id="tags-toggle" href="#">'. get_lang('SearchAdvancedOptions') .'</a>';
|
|
|
$display_thesaurus = ($show_thesaurus==true? 'block': 'none');
|
|
|
$help = '<h3>'. get_lang('SearchKeywordsHelpTitle') .'</h3>'. get_lang('SearchKeywordsHelpComment');
|
|
|
$mode = (!empty($_REQUEST['mode'])? htmlentities($_REQUEST['mode']): 'gallery');
|
|
|
$type = (!empty($_REQUEST['type'])? htmlentities($_REQUEST['type']): 'normal');
|
|
|
+
|
|
|
|
|
|
* POST avoid long urls, but we are using GET because
|
|
|
* SortableTableFromArray pagination is done with simple links, so now we
|
|
|
* could not send a form in pagination
|
|
|
*/
|
|
|
$form = '
|
|
|
- <form id="dokeos_search" action="'. $action .'?mode='. $mode .'" method="get">
|
|
|
+ <form id="dokeos_search" action="'. $action .'" method="GET">
|
|
|
+ <input type="text" id="query" name="query" size="40" />
|
|
|
<input type="hidden" name="mode" value="'. $mode .'"/>
|
|
|
<input type="hidden" name="type" value="'. $type .'"/>
|
|
|
- <input type="text" id="query" name="query" size="40" />
|
|
|
<input type="hidden" name="tablename_page_nr" value="1" />
|
|
|
<input type="submit" id="submit" value="'. get_lang("Search") .'" />
|
|
|
<br /><br />
|
|
@@ -152,7 +156,110 @@ function display_search_form($action, $show_thesaurus, $sf_terms, $op) {
|
|
|
</div>
|
|
|
</form>
|
|
|
<br style="clear: both;"/>
|
|
|
- ';
|
|
|
+ ';
|
|
|
+ return $form;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ * Build the prefilter form.
|
|
|
+ *
|
|
|
+ * This type allow filter all other multiple select terms by one term in a dinamic way
|
|
|
+ */
|
|
|
+function search_widget_prefilter_form($action, $show_thesaurus, $sf_terms, $op, $prefilter_prefix=NULL) {
|
|
|
+ $thesaurus_icon = Display::return_icon('thesaurus.gif', get_lang('SearchAdvancedOptions'), array('id'=>'thesaurus-icon'));
|
|
|
+ $advanced_options = '<a id="tags-toggle" href="#">'. get_lang('SearchAdvancedOptions') .'</a>';
|
|
|
+ $display_thesaurus = ($show_thesaurus==true? 'block': 'none');
|
|
|
+ $help = '<h3>'. get_lang('SearchKeywordsHelpTitle') .'</h3>'. get_lang('SearchKeywordsHelpComment');
|
|
|
+ $mode = (!empty($_REQUEST['mode'])? htmlentities($_REQUEST['mode']): 'gallery');
|
|
|
+ $type = (!empty($_REQUEST['type'])? htmlentities($_REQUEST['type']): 'normal');
|
|
|
+
|
|
|
+
|
|
|
+ * POST avoid long urls, but we are using GET because
|
|
|
+ * SortableTableFromArray pagination is done with simple links, so now we
|
|
|
+ * could not send a form in pagination
|
|
|
+ */
|
|
|
+ $form = '
|
|
|
+ <form id="dokeos_search" action="'. $action .'" method="GET">
|
|
|
+ <input type="text" id="query" name="query" size="40" />
|
|
|
+ <input type="hidden" name="mode" value="'. $mode .'"/>
|
|
|
+ <input type="hidden" name="type" value="'. $type .'"/>
|
|
|
+ <input type="hidden" name="tablename_page_nr" value="1" />
|
|
|
+ <input type="submit" id="submit" value="'. get_lang("Search") .'" />
|
|
|
+ <br /><br />
|
|
|
+ <span class="search-links-box">'. $thesaurus_icon . $advanced_options .' </span>
|
|
|
+ <div id="tags" class="tags" style="display:'. $display_thesaurus .';">
|
|
|
+ <div class="search-help-box">'. $help .'</div>
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ ';
|
|
|
+
|
|
|
+ if (!is_null($prefilter_prefix)) {
|
|
|
+
|
|
|
+ $temp = array();
|
|
|
+ foreach ($sf_terms[$prefilter_prefix] as $key => $value) {
|
|
|
+ $temp[trim(stripslashes($value['name']))] = $key;
|
|
|
+ }
|
|
|
+ $temp = array_flip($temp);
|
|
|
+ unset($sf_term_array);
|
|
|
+ natcasesort($temp);
|
|
|
+ $sf_term_array = $temp;
|
|
|
+
|
|
|
+
|
|
|
+ $sf_value = get_specific_field_list(array( 'code' => "'$prefilter_prefix'" ));
|
|
|
+ $sf_value = array_shift($sf_value);
|
|
|
+ $form .= '<label class="sf-select-multiple-title" for="sf_'. $prefix .'[]">'.$icons_for_search_terms[$prefix].' '.$sf_value['name'].'</label><br />';
|
|
|
+
|
|
|
+ $form .= format_one_specific_field_select($prefilter_prefix, $sf_term_array, $op, 'id="prefilter"');
|
|
|
+ $form .= format_specific_fields_selects($sf_terms, $op, $prefilter_prefix);
|
|
|
+ } else {
|
|
|
+ $form .= format_specific_fields_selects($sf_terms, $op);
|
|
|
+ }
|
|
|
+ $or_checked = '';
|
|
|
+ $and_checked = '';
|
|
|
+ if ($op == 'or') {
|
|
|
+ $or_checked = 'checked="checked"';
|
|
|
+ } else if ($op == 'and') {
|
|
|
+ $and_checked = 'checked="checked"';
|
|
|
+ }
|
|
|
+ $form .= '
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td id="operator-select">
|
|
|
+ '. get_lang('SearchCombineSearchWith') .':<br />
|
|
|
+ <input type="radio" class="search-operator" name="operator" value="or" '. $or_checked .'>'. strtoupper(get_lang('Or')) .'</input>
|
|
|
+ <input type="radio" class="search-operator" name="operator" value="and" '. $and_checked .'>'. strtoupper(get_lang('And')) .'</input>
|
|
|
+ </td>
|
|
|
+ <td></td>
|
|
|
+ <td>
|
|
|
+ <br />
|
|
|
+ <input class="lower-submit" type="submit" value="'. get_lang('Search') .'" />
|
|
|
+ <input type="submit" id="tags-clean" value="'. get_lang('SearchResetKeywords') .'" />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <br style="clear: both;"/>
|
|
|
+ ';
|
|
|
+ return $form;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ * Show search form
|
|
|
+ */
|
|
|
+function display_search_form($action, $show_thesaurus, $sf_terms, $op) {
|
|
|
+ $type = (!empty($_REQUEST['type'])? htmlentities($_REQUEST['type']): 'normal');
|
|
|
+ switch ($type) {
|
|
|
+ case 'prefilter':
|
|
|
+ $prefilter_prefix = 'E';
|
|
|
+ $form = search_widget_prefilter_form($action, $show_thesaurus, $sf_terms, $op, $prefilter_prefix);
|
|
|
+ break;
|
|
|
+ case 'normal':
|
|
|
+ default:
|
|
|
+ $form = search_widget_normal_form($action, $show_thesaurus, $sf_terms, $op);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
echo $form;
|
|
|
}
|
|
|
|