Correcting path to template
[koha.git] / thesaurus_popup.pl
index 3038b67..62518ba 100755 (executable)
@@ -29,30 +29,40 @@ use HTML::Template;
 use C4::Search;
 use C4::Output;
 use C4::Authorities;
+use C4::Interface::CGI::Output;
 # get all the data ....
 my %env;
 
 my $input = new CGI;
 my $result = $input->param('result');
 my $search_string= $input->param('search_string');
+$search_string = $result unless ($search_string);
 my $op = $input->param('op');
 my $id = $input->param('id');
 my $category = $input->param('category');
 my $index= $input->param('index');
 my $insert = $input->param('insert');
-
+my $nohierarchy = $input->param('nohierarchy'); # if 1, just show the last part of entry (Marseille). If 0, show everything (Europe -- France --Marseille)
 my $dbh = C4::Context->dbh;
 
 # make the page ...
 #print $input->header;
 if ($op eq "select") {
-       my $sti = $dbh->prepare("select stdlib from bibliothesaurus where id=?");
+       my $sti = $dbh->prepare("select father,stdlib from bibliothesaurus where id=?");
        $sti->execute($id);
-       my ($freelib_text) = $sti->fetchrow_array;
+       my ($father,$freelib_text) = $sti->fetchrow_array;
        if (length($result)>0) {
-               $result .= "|$freelib_text";
+               if ($nohierarchy) {
+                       $result .= "|$freelib_text";
+               } else {
+                       $result .= "|$father $freelib_text";
+               }
        } else {
-               $result = $freelib_text;
+               if ($nohierarchy) {
+                       $result = "$freelib_text";
+               } else {
+                       $result = "$father $freelib_text";
+               }
        }
 }
 if ($op eq "add") {
@@ -73,10 +83,14 @@ my %stdlib;
 my $select_list;
 if ($search_string) {
 #      my $sti=$dbh->prepare("select id,freelib from bibliothesaurus where freelib like '".$search_string."%' and category ='$category'");
-       my $sti=$dbh->prepare("select id,freelib from bibliothesaurus where match (category,freelib) AGAINST ('$search_string') and category ='$category'");
-               $sti->execute;
+       my $sti=$dbh->prepare("select id,freelib,father from bibliothesaurus where match (category,freelib) AGAINST (?) and category =?");
+       $sti->execute($search_string,$category);
        while (my $line=$sti->fetchrow_hashref) {
-               $stdlib{$line->{'id'}} = "$line->{'freelib'}";
+               if ($nohierarchy) {
+                       $stdlib{$line->{'id'}} = "$line->{'freelib'}";
+               } else {
+                       $stdlib{$line->{'id'}} = "$line->{'father'} $line->{'freelib'}";
+               }
                push(@freelib,$line->{'id'});
        }
        $select_list= CGI::scrolling_list( -name=>'id',
@@ -87,12 +101,26 @@ if ($search_string) {
                        -labels=> \%stdlib
                        );
 }
+my @x = SearchDeeper('',$category,$search_string);
+#my @son;
+#foreach (my $value @$x) {
+#      warn \@$x[$value]->{'stdlib'};
+#}
+my $dig_list= CGI::scrolling_list( -name=>'search_string',
+               -values=> \@x,
+               -default=> "",
+               -size=>1,
+               -multiple=>0,
+               );
+
 $template->param(select_list => $select_list,
                                                search_string => $search_string,
+                                               dig_list => $dig_list,
                                                result => $result,
                                                category => $category,
-                                               index => $index
+                                               index => $index,
+                                               nohierarchy => $nohierarchy,
                                                );
-print $input->header(-cookie => $cookie),$template->output;
+output_html_with_http_headers $input, $cookie, $template->output;