# Suite 330, Boston, MA 02111-1307 USA
use strict;
-require Exporter;
use CGI;
use C4::Auth;
-use HTML::Template;
use C4::Context;
-use C4::Search;
-use C4::Auth;
-use C4::Output;
use C4::Interface::CGI::Output;
use C4::AuthoritiesMarc;
-use C4::Acquisition;
use C4::Koha; # XXX subfield_is_koha_internal_p
use C4::Biblio;
+
my $query=new CGI;
my $op = $query->param('op');
my $authtypecode = $query->param('authtypecode');
my $dbh = C4::Context->dbh;
-
+my $mergefrom=$query->param('mergefrom');
+my $mergeto=$query->param('mergeto');
+my $startfrom=$query->param('startfrom');
my $authid=$query->param('authid');
+$startfrom=0 if(!defined $startfrom);
my ($template, $loggedinuser, $cookie);
+my $resultsperpage;
my $authtypes = getauthtypes;
my @authtypesloop;
foreach my $thisauthtype (sort { $authtypes->{$a} <=> $authtypes->{$b} } keys %$authtypes) {
my $selected = 1 if $thisauthtype eq $authtypecode;
my %row =(value => $thisauthtype,
- selected => $selected,
+ selected => $selected,
authtypetext => $authtypes->{$thisauthtype}{'authtypetext'},
);
push @authtypesloop, \%row;
}
+
if ($op eq "do_search") {
my @marclist = $query->param('marclist');
- my @and_or = $query->param('and_or');
- my @excluding = $query->param('excluding');
+
my @operator = $query->param('operator');
my @value = $query->param('value');
- my $startfrom = $query->param('startfrom') || 1;
- my $resultsperpage = $query->param('resultsperpage') || 19;
-
- my ($results,$total) = authoritysearch(
- $dbh,
- \@marclist,
- \@and_or,
- \@excluding,
- \@operator,
- \@value,
- ($startfrom - 1)*$resultsperpage,
- $resultsperpage,
- $authtypecode
- );
-
+ $resultsperpage= $query->param('resultsperpage');
+ $resultsperpage = 10 unless $resultsperpage;
+ my @tags;
+ my ($results,$total) = authoritysearch($dbh, \@marclist, \@operator, \@value,$startfrom*$resultsperpage, $resultsperpage,$authtypecode) ;
($template, $loggedinuser, $cookie)
- = get_template_and_user({
- template_name => "authorities/searchresultlist.tmpl",
- query => $query,
- type => 'intranet',
- authnotrequired => 0,
- flagsrequired => {borrowers => 1},
- flagsrequired => {catalogue => 1},
- debug => 1,
- });
+ = get_template_and_user({template_name => "authorities/searchresultlist.tmpl",
+ query => $query,
+ type => 'intranet',
+ authnotrequired => 0,
+ authtypecode=> $authtypecode,
+ flagsrequired => {borrowers => 1},
+ flagsrequired => {catalogue => 1},
+ debug => 1,
+ });
+
+ # multi page display gestion
+ my $displaynext=0;
+ my $displayprev=$startfrom;
+ if(($total - (($startfrom+1)*($resultsperpage))) > 0 ){
+ $displaynext = 1;
+ }
my @field_data = ();
- # we must get parameters once again. Because if there is a mainentry, it
- # has been replaced by something else during the search, thus the links
- # next/previous would not work anymore
+ # we must get parameters once again. Because if there is a mainentry, it has been replaced by something else during the search, thus the links next/previous would not work anymore
my @marclist_ini = $query->param('marclist');
for(my $i = 0 ; $i <= $#marclist ; $i++)
{
- push @field_data, { term => "marclist" , val=>$marclist_ini[$i] };
- push @field_data, { term => "and_or" , val=>$and_or[$i] };
- push @field_data, { term => "excluding" , val=>$excluding[$i] };
- push @field_data, { term => "operator" , val=>$operator[$i] };
- push @field_data, { term => "value" , val=>$value[$i] };
+ push @field_data, { term => "marclist", val=>$marclist_ini[$i] };
+ push @field_data, { term => "operator", val=>$operator[$i] };
+ push @field_data, { term => "value", val=>$value[$i] };
}
- # construction of the url of each page
- my $base_url =
- 'authorities-home.pl?'
- .join(
- '&',
- map { $_->{term}.'='.$_->{val} } @field_data
- )
- .'&'
- .join(
- '&',
- map { $_->{term}.'='.$_->{val} } (
- {term => 'resultsperpage', val => $resultsperpage},
- {term => 'type' , val => 'intranet'},
- {term => 'op' , val => 'do_search'},
- {term => 'authtypecode' , val => $authtypecode}
- )
- )
- ;
+ my @numbers = ();
+
+ if ($total>$resultsperpage)
+ {
+ for (my $i=1; $i<$total/$resultsperpage+1; $i++)
+ {
+ if ($i<31)
+ {
+ my $highlight=0;
+ ($startfrom==($i-1)) && ($highlight=1);
+ push @numbers, { number => $i,
+ highlight => $highlight ,
+ searchdata=> \@field_data,
+ startfrom => ($i-1)};
+ }
+ }
+ }
- my $from = ($startfrom - 1) * $resultsperpage + 1;
+ my $from = $startfrom*$resultsperpage+1;
my $to;
- if ($total < $startfrom * $resultsperpage) {
+ if($total < (($startfrom+1)*$resultsperpage))
+ {
$to = $total;
+ } else {
+ $to = (($startfrom+1)*$resultsperpage);
}
- else {
- $to = $startfrom * $resultsperpage;
- }
-
$template->param(result => $results) if $results;
-
$template->param(
- pagination_bar => pagination_bar(
- $base_url,
- int($total/$resultsperpage)+1,
- $startfrom,
- 'startfrom'
- ),
- total=>$total,
- from=>$from,
- to=>$to,
- isEDITORS => $authtypecode eq 'EDITORS',
- );
+ startfrom=> $startfrom,
+ displaynext=> $displaynext,
+ displayprev=> $displayprev,
+ resultsperpage => $resultsperpage,
+ startfromnext => $startfrom+1,
+ startfromprev => $startfrom-1,
+ searchdata=>\@field_data,
+ total=>$total,
+ from=>$from,
+ to=>$to,
+ numbers=>\@numbers,
+ authtypecode=>$authtypecode,
+ );
} elsif ($op eq "delete") {
- &AUTHdelauthority($dbh,$authid, 1);
+ &AUTHdelauthority($dbh,$authid);
($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "authorities/authorities-home.tmpl",
flagsrequired => {catalogue => 1},
debug => 1,
});
-# $template->param("statements" => \@statements,
-# "nbstatements" => $nbstatements);
-}
-elsif ($op eq "AddStatement") {
+
+}elsif ($op eq "merge") {
+
+
+ my $MARCfrom = XMLgetauthorityhash($dbh,$mergefrom);
+ my $MARCto = XMLgetauthorityhash($dbh,$mergeto);
+ merge($dbh,$mergefrom,$MARCfrom,$mergeto,$MARCto);
($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "authorities/authorities-home.tmpl",
query => $query,
flagsrequired => {catalogue => 1},
debug => 1,
});
-
- # Gets the entered information
- my @marcfields = $query->param('marclist');
- my @and_or = $query->param('and_or');
- my @excluding = $query->param('excluding');
- my @operator = $query->param('operator');
- my @value = $query->param('value');
-
- my @statements = ();
-
- # List of the marc tags to display
- my $marcarray = create_marclist();
-
- my $nbstatements = $query->param('nbstatements');
- $nbstatements = 1 if(!defined $nbstatements);
-
- for(my $i = 0 ; $i < $nbstatements ; $i++)
- {
- my %fields = ();
-
- # Recreates the old scrolling lists with the previously selected values
- my $marclist = create_scrolling_list({name=>"marclist",
- values=> $marcarray,
- size=> 1,
- -tabindex=>'',
- default=>$marcfields[$i],
- onChange => "sql_update()"}
- );
-
- $fields{'marclist'} = $marclist;
- $fields{'first'} = 1 if($i == 0);
-
- # Restores the and/or parameters (no need to test the 'and' for activation because it's the default value)
- $fields{'or'} = 1 if($and_or[$i] eq "or");
-
- #Restores the "not" parameters
- $fields{'not'} = 1 if($excluding[$i]);
-
- #Restores the operators (most common operators first);
- if($operator[$i] eq "=") { $fields{'eq'} = 1; }
- elsif($operator[$i] eq "contains") { $fields{'contains'} = 1; }
- elsif($operator[$i] eq "start") { $fields{'start'} = 1; }
- elsif($operator[$i] eq ">") { $fields{'gt'} = 1; } #greater than
- elsif($operator[$i] eq ">=") { $fields{'ge'} = 1; } #greater or equal
- elsif($operator[$i] eq "<") { $fields{'lt'} = 1; } #lower than
- elsif($operator[$i] eq "<=") { $fields{'le'} = 1; } #lower or equal
-
- #Restores the value
- $fields{'value'} = $value[$i];
-
- push @statements, \%fields;
- }
- $nbstatements++;
-
- # The new scrolling list
- my $marclist = create_scrolling_list({name=>"marclist",
- values=> $marcarray,
- size=>1,
- -tabindex=>'',
- onChange => "sql_update()"});
- push @statements, {"marclist" => $marclist };
-
- $template->param("statements" => \@statements,
- "nbstatements" => $nbstatements);
-
-}
-else {
+}else {
($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "authorities/authorities-home.tmpl",
query => $query,
}
-$template->param(authtypesloop => \@authtypesloop,
- intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"),
- intranetstylesheet => C4::Context->preference("intranetstylesheet"),
- IntranetNav => C4::Context->preference("IntranetNav"),
- );
+
+
+$template->param(authtypesloop => \@authtypesloop);
# Print the page
output_html_with_http_headers $query, $cookie, $template->output;