From bc79ea23e14e7dc83f44d10994e1d7f07901ac2f Mon Sep 17 00:00:00 2001 From: tonnesen Date: Fri, 8 Nov 2002 20:15:39 +0000 Subject: [PATCH] Fixes bugs with characters in search strings that require escaping in the URL (space, =, &, etc.). Also uses the same set up as the opac search results templates now. ie the FORMINPUTS template variable is sent as variable and value pairs so that the value can be url escaped by HTML::Template --- .../default/en/catalogue/searchresults.tmpl | 10 +- .../default/en/catalogue/subject.tmpl | 10 +- search.pl | 107 ++++-------------- 3 files changed, 30 insertions(+), 97 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/default/en/catalogue/searchresults.tmpl b/koha-tmpl/intranet-tmpl/default/en/catalogue/searchresults.tmpl index 52a02554a7..7cb1354345 100644 --- a/koha-tmpl/intranet-tmpl/default/en/catalogue/searchresults.tmpl +++ b/koha-tmpl/intranet-tmpl/default/en/catalogue/searchresults.tmpl @@ -21,7 +21,7 @@ - &&> + &=> @@ -29,11 +29,11 @@ -highlight.gif> - &&>.gif border=0> + &=>.gif border=0> - &&> + &=> @@ -73,13 +73,13 @@
- &&>Previous Records + &=>Previous Records   - &&>Next Records + &=>Next Records   diff --git a/koha-tmpl/intranet-tmpl/default/en/catalogue/subject.tmpl b/koha-tmpl/intranet-tmpl/default/en/catalogue/subject.tmpl index 88eea62e9b..8973d53481 100644 --- a/koha-tmpl/intranet-tmpl/default/en/catalogue/subject.tmpl +++ b/koha-tmpl/intranet-tmpl/default/en/catalogue/subject.tmpl @@ -10,7 +10,7 @@ - &&> + &=> @@ -18,11 +18,11 @@ -highlight.gif> - &&>.gif border=0> + &=>.gif border=0> - &&> + &=> @@ -42,7 +42,7 @@
- &&>Previous Records + &=>Previous Records   @@ -50,7 +50,7 @@ - &&>Next Records + &=>Next Records   diff --git a/search.pl b/search.pl index 1191814311..f86c79f037 100755 --- a/search.pl +++ b/search.pl @@ -10,9 +10,8 @@ use C4::Output; # no contains gettemplate my $query=new CGI; my $type=$query->param('type'); -(-e "opac") && ($type='opac'); -my ($loggedinuser, $cookie, $sessionID) = checkauth($query, ($type eq 'opac') ? (1) : (0)); +my ($loggedinuser, $cookie, $sessionID) = checkauth($query); @@ -35,54 +34,28 @@ $env->{itemcount}=1; # get all the search variables # we assume that C4::Search will validate these values for us my %search; -my $keyword=$query->param('keyword'); -$search{'keyword'}=$keyword; -$search{'subject'}=$subject; -my $author=$query->param('author'); -$search{'author'}=$author; -$search{'authoresc'}=$author; -#$search{'authorhtmlescaped'}=~s/ /%20/g; -my $illustrator=$query->param('illustrator'); -$search{'illustrator'}=$illustrator; -my $itemnumber=$query->param('itemnumber'); -$search{'itemnumber'}=$itemnumber; -my $isbn=$query->param('isbn'); -$search{'isbn'}=$isbn; -my $datebefore=$query->param('date-before'); -$search{'date-before'}=$datebefore; -my $class=$query->param('class'); -$search{'class'}=$class; -my $dewey=$query->param('dewey'); -$search{'dewey'}=$dewey; -my $branch=$query->param('branch'); -$search{'branch'}=$branch; -my $title=$query->param('title'); -$search{'title'}=$title; -my $abstract=$query->param('abstract'); -$search{'abstract'}=$abstract; -my $publisher=$query->param('publisher'); -$search{'publisher'}=$publisher; - -my $ttype=$query->param('ttype'); -$search{'ttype'}=$ttype; +my @fields = ('keyword', 'subject', 'author', 'illustrator', 'itemnumber', 'isbn', 'date-before', 'date-after', 'class', 'dewey', 'class', 'branch', 'title', 'abstract', 'publisher'); my $forminputs; -($keyword) && (push @$forminputs, { line => "keyword=$keyword"}); -($subject) && (push @$forminputs, { line => "subject=$subject"}); -($author) && (push @$forminputs, { line => "author=$author"}); -($illustrator) && (push @$forminputs, { line => "illustrator=$illustrator"}); -($itemnumber) && (push @$forminputs, { line => "itemnumber=$itemnumber"}); -($isbn) && (push @$forminputs, { line => "isbn=$isbn"}); -($datebefore) && (push @$forminputs, { line => "date-before=$datebefore"}); -($class) && (push @$forminputs, { line => "class=$class"}); -($dewey) && (push @$forminputs, { line => "dewey=$dewey"}); -($branch) && (push @$forminputs, { line => "branch=$branch"}); -($title) && (push @$forminputs, { line => "title=$title"}); -($ttype) && (push @$forminputs, { line => "ttype=$ttype"}); -($abstract) && (push @$forminputs, { line => "abstract=$abstract"}); -($publisher) && (push @$forminputs, { line => "publisher=$publisher"}); +my $searchdesc = ''; +foreach my $field (@fields) { + $search{$field} = $query->param($field); + if ($search{$field}) { + push @$forminputs, {field => $field, value => $search{$field}}; + $searchdesc .= "$field = $search{$field}, "; + } +} +$search{'ttype'} = $query->param('ttype'); +push @$forminputs, {field => 'ttype', value => $search{'ttype'}}; + +if (my $subjectitems=$query->param('subjectitems')){ + $search{'subject'} = $subjectitems; + $searchdesc.="subject = $subjectitems, "; +} + ($forminputs) || (@$forminputs=()); + $template->param(FORMINPUTS => $forminputs); # whats this for? # I think it is (or was) a search from the "front" page... [st] @@ -106,43 +79,11 @@ foreach my $result (@results) { $result->{'authorhtmlescaped'}=$result->{'author'}; $result->{'authorhtmlescaped'}=~s/ /%20/g; ($result->{'copyrightdate'}==0) && ($result->{'copyrightdate'}=''); - ($type eq 'opac') ? ($result->{'opac'}=1) : ($result->{'opac'}=0); push (@$resultsarray, $result); } ($resultsarray) || (@$resultsarray=()); my $search="num=20"; -my $searchdesc=''; -if ($keyword){ - $search=$search."&keyword=$keyword"; - $searchdesc.="keyword $keyword, "; -} -if (my $subjectitems=$query->param('subjectitems')){ - $search=$search."&subjectitems=$subjectitems"; - $searchdesc.="subject $subjectitems, "; -} -if ($subject){ - $search=$search."&subject=$subject"; - $searchdesc.="subject $subject, "; -} -if ($author){ - $search=$search."&author=$author"; - $searchdesc.="author $author, "; -} -if ($class){ - $search=$search."&class=$class"; - $searchdesc.="class $class, "; -} -if ($title){ - $search=$search."&title=$title"; - $searchdesc.="title $title, "; -} -if ($dewey){ - $search=$search."&dewey=$dewey"; - $searchdesc.="dewey $dewey, "; -} -$search.="&ttype=$ttype"; -$search=~ s/ /%20/g; $template->param(startfrom => $startfrom+1); ($startfrom+$num<=$count) ? ($template->param(endat => $startfrom+$num)) : ($template->param(endat => $count)); $template->param(numrecords => $count); @@ -155,7 +96,6 @@ my $displayprev=0; ($prevstartfrom==-1) ? ($displayprev=0) : ($displayprev=1); $template->param(displaynext => $displaynext); $template->param(displayprev => $displayprev); -($type eq 'opac') ? ($template->param(opac => 1)) : ($template->param(opac => 0)); $template->param(prevstartfrom => $prevstartfrom); $template->param(search => $search); $template->param(searchdesc => $searchdesc); @@ -168,16 +108,9 @@ my $numbers; if ($count>10) { for (my $i=1; $i<$count/10+1; $i++) { if ($i<16) { - ($title) && (push @$forminputs, { line => "title=$title"}); my $highlight=0; ($startfrom==($i-1)*10) && ($highlight=1); - my $formelements=''; - foreach (@$forminputs) { - my $line=$_->{line}; - $formelements.="$line&"; - } - $formelements=~s/ /+/g; - push @$numbers, { number => $i, highlight => $highlight , FORMELEMENTS => $formelements, FORMINPUTS => $forminputs, startfrom => ($i-1)*10, opac => (($type eq 'opac') ? (1) : (0))}; + push @$numbers, { number => $i, highlight => $highlight , FORMINPUTS => $forminputs, startfrom => ($i-1)*10}; } } }