From 101d1c604e98ad1b2ad8d45c5fad2ba22abd4669 Mon Sep 17 00:00:00 2001 From: tonnesen Date: Wed, 15 May 2002 04:12:24 +0000 Subject: [PATCH] Fixed search.pl so that next and previous buttons work... had to pass form parameters in to the templates Didn't make any changes to bulkmarcimport.pl recently, so I'm probably squashing somebody else's changes. Will have to fix that... --- acqui.simple/bulkmarcimport.pl | 6 +- search.pl | 419 +++++++++------------------------ 2 files changed, 118 insertions(+), 307 deletions(-) diff --git a/acqui.simple/bulkmarcimport.pl b/acqui.simple/bulkmarcimport.pl index af18ed46b1..c537d6d6ca 100755 --- a/acqui.simple/bulkmarcimport.pl +++ b/acqui.simple/bulkmarcimport.pl @@ -13,6 +13,8 @@ $file=$ARGV[0]; +$branchname='MAIN'; + unless ($file) { print "USAGE: ./bulkmarcimport.pl filename\n"; exit; @@ -471,7 +473,7 @@ RECORD: } } my $q_barcode=$dbh->quote($barcode); - my $q_homebranch="'MAIN'"; + my $q_homebranch="'$branchname'"; my $q_notes="''"; #my $replacementprice=0; my $sth=$dbh->prepare("select max(itemnumber) from items"); @@ -492,7 +494,7 @@ BARCODE: $replacementprice=~s/^p//; ($replacementprice) || ($replacementprice=0); $replacementprice=~s/\$//; - $task="insert into items (itemnumber, biblionumber, biblioitemnumber, barcode, itemnotes, homebranch, holdingbranch, dateaccessioned, replacementprice) values ($itemnumber, $biblionumber, $biblioitemnumber, $q_barcode, $q_notes, $q_homebranch, 'MAIN', '$date', $replacementprice)"; + $task="insert into items (itemnumber, biblionumber, biblioitemnumber, barcode, itemnotes, homebranch, holdingbranch, dateaccessioned, replacementprice) values ($itemnumber, $biblionumber, $biblioitemnumber, $q_barcode, $q_notes, $q_homebranch, '$branchname', '$date', $replacementprice)"; $sth=$dbh->prepare($task); print "$task\n"; $sth->execute; diff --git a/search.pl b/search.pl index 4aba806db7..736f670fbd 100755 --- a/search.pl +++ b/search.pl @@ -1,330 +1,139 @@ #!/usr/bin/perl -#script to provide intranet (librarian) advanced search facility - +use HTML::Template; use strict; -use C4::Search; +require Exporter; +use C4::Database; use CGI; -use C4::Output; - -my $env; -my $input = new CGI; -print $input->header; -#print $input->dump; - -#whether it is called from the opac or the intranet -my $type=$input->param('type');if ($type eq ''){ - $type = 'intra'; +use C4::Search; +use C4::Output; # no contains picktemplate + +my $query=new CGI; + + +my $language='french'; + + +my %configfile; +open (KC, "/etc/koha.conf"); +while () { + chomp; + (next) if (/^\s*#/); + if (/(.*)\s*=\s*(.*)/) { + my $variable=$1; + my $value=$2; + # Clean up white space at beginning and end + $variable=~s/^\s*//g; + $variable=~s/\s*$//g; + $value=~s/^\s*//g; + $value=~s/\s*$//g; + $configfile{$variable}=$value; + } +} +#print $query->header; + +my $includes=$configfile{'includes'}; +($includes) || ($includes="/usr/local/www/hdl/htdocs/includes"); +my $templatebase="catalogue/searchresults.tmpl"; +my $startfrom=$query->param('startfrom'); +($startfrom) || ($startfrom=0); +my $theme=picktemplate($includes, $templatebase); + +my $subject=$query->param('subject'); +# if its a subject we need to use the subject.tmpl +if ($subject) { + $templatebase=~ s/searchresults\.tmpl/subject\.tmpl/; + $theme=picktemplate($includes, $templatebase); } -my $ttype=$input->param('ttype'); - -#setup colours -my $main; -my $secondary; +my $template = HTML::Template->new(filename => "$includes/templates/$theme/$templatebase", die_on_bad_params => 0, path => [$includes]); -if ($type eq 'opac'){ - $main='#99cccc'; - $secondary='#efe5ef'; -} else { - $main='#cccc99'; - $secondary='#ffffcc'; -} +my $env; +$env->{itemcount}=1; -#print $input->Dump; -my $blah; +# get all the search variables +# we assume that C4::Search will validate these values for us my %search; - -#build hash of users input -my $title=validate($input->param('title')); -$search{'title'}=$title; - -my $keyword=validate($input->param('keyword')); +my $keyword=$query->param('keyword'); $search{'keyword'}=$keyword; -$search{'front'}=validate($input->param('front')); - -my $author=validate($input->param('author')); -$search{'author'}=$author; - -my $illustrator=validate($input->param('illustrator')); -$search{'illustrator'}=$illustrator; - -my $subject=validate($input->param('subject')); $search{'subject'}=$subject; - -my $itemnumber=validate($input->param('item')); -$search{'item'}=$itemnumber; - -my $isbn=validate($input->param('isbn')); +my $author=$query->param('author'); +$search{'author'}=$author; +my $illustrator=$query->param('illustrator'); +$search{'param'}=$illustrator; +my $itemnumber=$query->param('itemnumber'); +$search{'itemnumber'}=$itemnumber; +my $isbn=$query->param('isbn'); $search{'isbn'}=$isbn; - -my $datebefore=validate($input->param('date-before')); -$search{'date-before'}; - -my $class=$input->param('class'); +my $datebefore=$query->param('date-before'); +$search{'date-before'}=$datebefore; +my $class=$query->param('class'); $search{'class'}=$class; - -$search{'ttype'}=$ttype; - -my $dewey=validate($input->param('dewey')); -$search{'dewey'}=$dewey; - -my $branch=validate($input->param('branch')); +my $dewey=$query->param('dewey'); +$search{'dewey'}; +my $branch=$query->param('branch'); $search{'branch'}=$branch; +my $title=$query->param('title'); +$search{'title'}=$title; +my $ttype=$query->param('ttype'); +$search{'ttype'}=$ttype; -my @results; -my $offset=$input->param('offset'); -if ($offset eq ''){ - $offset=0; +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"}); +$template->param(FORMINPUTS => $forminputs); +# whats this for? +# I think it is (or was) a search from the "front" page... [st] +$search{'front'}=$query->param('front'); + +my $num=20; +my ($count,@results)=catalogsearch($env,'',\%search,$num,$startfrom); + +my $resultsarray=\@results; + +my $search="num=20"; +if ($keyword){ + $search=$search."&keyword=$keyword"; } -my $num=$input->param('num'); -if ($num eq ''){ - $num=10; +if ($subject){ + $search=$search."&subject=$subject"; } -print startpage(); -print startmenu($type); -#print $type; -#print $search{'ttype'}; -if ($type eq 'intra'){ - print mkheadr(1,'Catalogue Search Results'); -} elsif ($type eq 'catmain'){ - print mkheadr(1,'Catalogue Maintenance'); -} else { - print mkheadr(1,'Opac Search Results'); +if ($author){ + $search=$search."&author=$author"; } -print center(); -my $count; -my @results; -if ($itemnumber ne '' || $isbn ne ''){ - ($count,@results)=&CatSearch(\$blah,'precise',\%search,$num,$offset); -} else { - if ($subject ne ''){ - ($count,@results)=&CatSearch(\$blah,'subject',\%search,$num,$offset); - } else { - if ($keyword ne ''){ - ($count,@results)=&KeywordSearch(\$blah,'intra',\%search,$num,$offset); - }elsif ($title ne '' || $author ne '' || $illustrator ne '' || $dewey ne '' || $class ne '') { - ($count,@results)=&CatSearch(\$blah,'loose',\%search,$num,$offset); - } - } +if ($class){ + $search=$search."&class=$class"; } -print "You searched on "; -while ( my ($key, $value) = each %search) { - if ($value ne '' && $key ne 'ttype'){ - $value=~ s/\\//g; - print bold("$key $value,"); - } +if ($title){ + $search=$search."&title=$title"; } -print " $count results found"; -my $offset2=$num+$offset; -my $dispnum=$offset+1; -print "
Results $dispnum to $offset2 displayed"; -print mktablehdr; -if ($type ne 'opac'){ - if ($subject ne ''){ - print mktablerow(1,$main,'SUBJECT','/images/background-mem.gif'); - } elsif ($illustrator ne '') { - print mktablerow(7,$main,'TITLE','AUTHOR', 'ILLUSTRATOR', bold('©'),'COUNT',bold('LOCATION'),'','/images/background-mem.gif'); - } else { - print mktablerow(6,$main,'TITLE','AUTHOR',bold('©'),'COUNT',bold('LOCATION'),'','/images/background-mem.gif'); - } -} else { - if ($subject ne ''){ - print mktablerow(6,$main,'SUBJECT','   ','   '); - } elsif ($illustrator ne '') { - print mktablerow(7,$main,'TITLE','AUTHOR','ILLUSTRATOR', bold('©'),'COUNT',bold('BRANCH'),''); - } else { - print mktablerow(6,$main,'TITLE','AUTHOR',bold('©'),'COUNT',bold('BRANCH'),''); - } +if ($dewey){ + $search=$search."&dewey=$dewey"; } -my $count2=@results; -if ($keyword ne '' && $offset > 0){ - $count2=$count-$offset; - if ($count2 > 10){ - $count2=10; - } -} -#print $count2; -my $i=0; -my $colour=1; -while ($i < $count2){ -# print $results[$i]."\n"; -# my @stuff=split('\t',$results[$i]); - my $result=$results[$i]; - $result->{'title'}=~ s/\`/\\\'/g; - my $title2=$result->{'title'}; - $title2=~ s/ /%20/g; - my $location=''; - my $itemcount; - if ($subject eq ''){ - $result->{'title'}=mklink("/cgi-bin/koha/detail.pl?type=$type&bib=$result->{'biblionumber'}&title=$title2",$result->{'title'}); - my $word=$result->{'author'}; - $word=~ s/([a-z]) +([a-z])/$1%20$2/ig; - $word=~ s/ //g; - $word=~ s/ /%20/g; - $word=~ s/\,/\,%20/g; - $word=~ s/\n//g; - my $url="/cgi-bin/koha/search.pl?author=$word&type=$type"; - $result->{'author'}=mklink($url,$result->{'author'}); - my ($count,$lcount,$nacount,$fcount,$scount,$lostcount,$mending,$transit,$ocount)=itemcount($env,$result->{'biblionumber'},$type); - $itemcount=$count; - #### - # Fix this chunk below, remove all hardcoded branch references - # need to fix itemcount as well - ### - if ($nacount > 0){ - $location=$location."On Loan"; - if ($nacount >1 ){ - $location=$location." ($nacount)"; - } - $location.=" "; - } - if ($lcount > 0){ - $location=$location."Levin"; - if ($lcount >1 ){ - $location=$location." ($lcount)"; - } - $location.=" "; - } - if ($fcount > 0){ - $location=$location."Foxton"; - if ($fcount >1 ){ - $location=$location." ($fcount)"; - } - $location.=" "; - } - if ($scount > 0){ - $location=$location."Shannon"; - if ($scount >1 ){ - $location=$location." ($scount)"; - } - $location.=" "; - } - if ($lostcount > 0){ - $location=$location."Lost"; - if ($lostcount >1 ){ - $location=$location." ($lostcount)"; - } - $location.=" "; - } - if ($mending > 0){ - $location=$location."Mending"; - if ($mending >1 ){ - $location=$location." ($mending)"; - } - $location.=" "; - } - if ($transit > 0){ - $location=$location."In Transiit"; - if ($transit >1 ){ - $location=$location." ($transit)"; - } - $location.=" "; - } - if ($ocount > 0){ - $location=$location."On Order"; - if ($ocount >1 ){ - $location=$location." ($ocount)"; - } - $location.=" "; - } - -# if ($type ne 'opac'){ -# $result->{'request'}=mklink("/cgi-bin/koha/request.pl?bib=$stuff[2]","Request"); -# } - } else { - my $word=$result->{'subject'}; - $word=~ s/ /%20/g; - - $result->{'title'}=mklink("/cgi-bin/koha/subjectsearch.pl?subject=$word&type=$type",$result->{'subject'}); +$search.="&ttype=$ttype"; - } +$search=~ s/ /%20/g; +$template->param(startfrom => $startfrom+1); +$template->param(endat => $startfrom+20); +$template->param(numrecords => $count); +my $nextstartfrom=($startfrom+20<$count-20) ? ($startfrom+20) : ($count-20); +my $prevstartfrom=($startfrom-20>0) ? ($startfrom-20) : (0); +$template->param(nextstartfrom => $nextstartfrom); +$template->param(prevstartfrom => $prevstartfrom); +$template->param(search => $search); +$template->param(SEARCH_RESULTS => $resultsarray); +$template->param(includesdir => $includes); - if ($colour == 1){ - if ($illustrator) { - print mktablerow(7,$secondary,$result->{'title'},$result->{'author'},$result->{'illus'},$result->{'copyrightdate'},$itemcount,$location); - } else { - print mktablerow(6,$secondary,$result->{'title'},$result->{'author'},$result->{'copyrightdate'},$itemcount,$location); - } - $colour=0; - } else { - if ($illustrator) { - print mktablerow(7,'white',$result->{'title'},$result->{'author'},$result->{'illus'},$result->{'copyrightdate'},$itemcount,$location); - } else { - print mktablerow(6,'white',$result->{'title'},$result->{'author'},$result->{'copyrightdate'},$itemcount,$location); - } - $colour=1; - } - $i++; -} -$offset=$num+$offset; -if ($type ne 'opac'){ - if ($illustrator) { - print mktablerow(7,$main,'   ','   ','  ','  ','','','','/images/background-mem.gif'); - } else { - print mktablerow(6,$main,'   ','   ','  ','  ','','','/images/background-mem.gif'); - } -} else { - if ($illustrator) { - print mktablerow(7,$main,'   ','   ','  ','   ','', '',''); - } else { - print mktablerow(6,$main,'   ','   ','  ','   ','',''); - } -} -print mktableft(); -my $search; - $search="num=$num&offset=$offset&type=$type"; - if ($subject ne ''){ - $subject=~ s/ /%20/g; - $search=$search."&subject=$subject"; - } - if ($title ne ''){ - $title=~ s/ /%20/g; - $search=$search."&title=$title"; - } - if ($author ne ''){ - $author=~ s/ /%20/g; - $search=$search."&author=$author"; - } - if ($keyword ne ''){ - $keyword=~ s/ /%20/g; - $search=$search."&keyword=$keyword"; - } - if ($class ne ''){ - $keyword=~ s/ /%20/g; - $search=$search."&class=$class"; - } - if ($dewey ne ''){ - $search=$search."&dewey=$dewey"; - } - $search.="&ttype=$ttype"; -if ($offset < $count){ - my $stuff=mklink("/cgi-bin/koha/search.pl?$search",'Next'); - print $stuff; -} -print "
"; -my $pages=$count/10; -$pages++; -for (my $i=1;$i<$pages;$i++){ - my $temp=$i*10; - $temp=$temp-10; - $search=~ s/offset=[0-9]+/offset=$temp/; - my $stuff=mklink("/cgi-bin/koha/search.pl?$search",$i); - print "$stuff "; -} - -print endcenter(); -print endmenu($type); -print endpage(); +print "Content-Type: text/html\n\n", $template->output; - -sub validate { - my ($input)=@_; - $input=~ s/\<[a-z]+\>//gi; - $input=~ s/\<\/[a-z]+\>//gi; - $input=~ s/\//g; - $input=~ s/^%//g; - return($input); -} -- 2.39.2