my @itemtypesloop;
my $selected=1;
my $cnt;
-my $imgdir = getitemtypeimagesrc('intranet');
my $advanced_search_types = C4::Context->preference("AdvancedSearchTypes");
if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') { foreach my $thisitemtype ( sort {$itemtypes->{$a}->{'description'} cmp $itemtypes->{$b}->{'description'} } keys %$itemtypes ) {
my %row =( number=>$cnt++,
- imageurl=> $itemtypes->{$thisitemtype}->{'imageurl'}?($imgdir."/".$itemtypes->{$thisitemtype}->{'imageurl'}):"",
ccl => $itype_or_itemtype,
code => $thisitemtype,
selected => $selected,
description => $itemtypes->{$thisitemtype}->{'description'},
count5 => $cnt % 4,
+ imageurl=> getitemtypeimagelocation( 'intranet', $itemtypes->{$thisitemtype}->{'imageurl'} ),
);
$selected = 0 if ($selected) ;
push @itemtypesloop, \%row;
for my $thisitemtype (@$advsearchtypes) {
my %row =(
number=>$cnt++,
- imageurl=> $imgdir."/".$thisitemtype->{'imageurl'},
ccl => $advanced_search_types,
code => $thisitemtype->{authorised_value},
selected => $selected,
description => $thisitemtype->{'lib'},
count5 => $cnt % 4,
+ imageurl=> getitemtypeimagelocation( 'intranet', $thisitemtype->{'imageurl'} ),
);
push @itemtypesloop, \%row;
}
my $secondary_servers_loop;# = displaySecondaryServers();
$template->param(outer_sup_servers_loop => $secondary_servers_loop,);
-
+
+ # set the default sorting
+ my $default_sort_by = C4::Context->preference('defaultSortField')."_".C4::Context->preference('defaultSortOrder')
+ if (C4::Context->preference('OPACdefaultSortField') && C4::Context->preference('OPACdefaultSortOrder'));
+ $template->param($default_sort_by => 1);
+
# determine what to display next to the search boxes (ie, boolean option
# shouldn't appear on the first one, scan indexes should, adding a new
# box should only appear on the last, etc.
my @indexes;
@indexes = split("\0",$params->{'idx'});
+# if a simple index (only one) display the index used in the top search box
+if ($indexes[0] && !$indexes[1]) {
+ $template->param("ms_".$indexes[0] => 1);}
+
+
# an operand can be a single term, a phrase, or a complete ccl query
my @operands;
@operands = split("\0",$params->{'q'}) if $params->{'q'};
#FIXME: Should return a error to the user, incorect date format specified
}
+# convert indexes and operands to corresponding parameter names for the z3950 search
+# $ %z3950p will be a hash ref if the indexes are present (advacned search), otherwise undef
+my $z3950par;
+my $indexes2z3950 = {
+ kw=>'title', au=>'author', 'au,phr'=>'author', nb=>'isbn', ns=>'issn',
+ 'lcn,phr'=>'dewey', su=>'subject', 'su,phr'=>'subject',
+ ti=>'title', 'ti,phr'=>'title', se=>'title'
+};
+for (my $ii = 0; $ii < @operands; ++$ii)
+{
+ my $name = $indexes2z3950->{$indexes[$ii]};
+ if (defined $name && defined $operands[$ii])
+ {
+ $z3950par ||= {};
+ $z3950par->{$name} = $operands[$ii] if !exists $z3950par->{$name};
+ }
+}
+
+
# Params that can only have one value
my $scan = $params->{'scan'};
my $count = C4::Context->preference('numSearchResults') || 20;
## parse the query_cgi string and put it into a form suitable for <input>s
my @query_inputs;
+my $scan_index_to_use;
+
for my $this_cgi ( split('&',$query_cgi) ) {
next unless $this_cgi;
$this_cgi =~ m/(.*=)(.*)/;
my $input_value = $2;
$input_name =~ s/=$//;
push @query_inputs, { input_name => $input_name, input_value => $input_value };
+ if ($input_name eq 'idx') {
+ $scan_index_to_use = $input_value; # unless $scan_index_to_use;
+ }
}
-$template->param ( QUERY_INPUTS => \@query_inputs );
+$template->param ( QUERY_INPUTS => \@query_inputs,
+ scan_index_to_use => $scan_index_to_use );
## parse the limit_cgi string and put it into a form suitable for <input>s
my @limit_inputs;
exit;
}
-# FIXME: This belongs in tools/ not in the primary search results page
-my $op=$cgi->param("operation");
-if ($op eq "bulkedit"){
- my ($countchanged,$listunchanged)=
- ModBiblios($results_hashref->{'biblioserver'}->{"RECORDS"},
- $params->{"tagsubfield"},
- $params->{"inputvalue"},
- $params->{"targetvalue"},
- $params->{"test"}
- );
- $template->param(bulkeditresults=>1,
- tagsubfield=>$params->{"tagsubfield"},
- inputvalue=>$params->{"inputvalue"},
- targetvalue=>$params->{"targetvalue"},
- countchanged=>$countchanged,
- countunchanged=>scalar(@$listunchanged),
- listunchanged=>$listunchanged);
-
- if (C4::Context->userenv->{'flags'}==1 ||(C4::Context->userenv->{'flags'} & ( 2**9 ) )){
- #Edit Catalogue Permissions
- my $editable_subfields = GetManagedTagSubfields();
- # change '--' to '—' to avoid escaping issues
- for (my $i = 0; $i <= $#{$editable_subfields}; $i++) {
- $editable_subfields->[$i]->{subfielddesc} =~ s/--/—/g;
- $editable_subfields->[$i]->{tagdesc} =~ s/--/—/g;
- }
- $template->param(bulkedit => 1);
- $template->param(tagsubfields=>$editable_subfields);
- }
-}
-
# At this point, each server has given us a result set
# now we build that set for template display
my @sup_results_array;
if ($server =~/biblioserver/) { # this is the local bibliographic server
$hits = $results_hashref->{$server}->{"hits"};
my $page = $cgi->param('page') || 0;
- my @newresults = searchResults( $query_desc,$hits,$results_per_page,$offset,@{$results_hashref->{$server}->{"RECORDS"}});
+ my @newresults = searchResults( $query_desc,$hits,$results_per_page,$offset,$scan,@{$results_hashref->{$server}->{"RECORDS"}});
$total = $total + $results_hashref->{$server}->{"hits"};
## If there's just one result, redirect to the detail page
if ($total == 1) {
my $biblionumber=@newresults[0]->{biblionumber};
- if (C4::Context->preference('IntranetBiblioDefaultView') eq 'isbd') {
+ my $defaultview = C4::Context->preference('IntranetBiblioDefaultView');
+ my $views = { C4::Search::enabled_staff_search_views };
+ if ($defaultview eq 'isbd' && $views->{can_view_ISBD}) {
print $cgi->redirect("/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=$biblionumber");
- } elsif (C4::Context->preference('IntranetBiblioDefaultView') eq 'marc') {
+ } elsif ($defaultview eq 'marc' && $views->{can_view_MARC}) {
print $cgi->redirect("/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=$biblionumber");
+ } elsif ($defaultview eq 'labeled_marc' && $views->{can_view_labeledMARC}) {
+ print $cgi->redirect("/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=$biblionumber");
} else {
print $cgi->redirect("/cgi-bin/koha/catalogue/detail.pl?biblionumber=$biblionumber");
}
exit;
}
+
+
+
if ($hits) {
$template->param(total => $hits);
my $limit_cgi_not_availablity = $limit_cgi;
$template->param(query_cgi => $query_cgi);
$template->param(query_desc => $query_desc);
$template->param(limit_desc => $limit_desc);
+ $template->param (z3950_search_params => C4::Search::z3950_search_args($query_desc));
if ($query_desc || $limit_desc) {
$template->param(searchdesc => 1);
}
}
}
+
+
+
# now, show twenty pages, with the current one smack in the middle
else {
for (my $i=$current_page_number; $i<=($current_page_number + 20 );$i++) {
previous_page_offset => $previous_page_offset) unless $pages < 2;
$template->param( next_page_offset => $next_page_offset) unless $pages eq $current_page_number;
}
+
+
+
+
+
# no hits
else {
$template->param(searchdesc => 1,query_desc => $query_desc,limit_desc => $limit_desc);
+ $template->param (z3950_search_params => C4::Search::z3950_search_args($z3950par || $query_desc));
}
+
+
+
+
+
} # end of the if local
# asynchronously search the authority server