X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui.simple%2Faddbiblio.pl;h=e1769dcf0a29d935eecc9a20e3e1b40a2cb508d7;hb=9773b0bec17f29336a748e7b5c29cc630811bc19;hp=66c9d9b46068bbef60c2da8d69676736cd6d35eb;hpb=ef66fec140bf1d0380db4c03c9b0af3e5c7e20d6;p=koha.git diff --git a/acqui.simple/addbiblio.pl b/acqui.simple/addbiblio.pl index 66c9d9b460..e1769dcf0a 100755 --- a/acqui.simple/addbiblio.pl +++ b/acqui.simple/addbiblio.pl @@ -19,8 +19,9 @@ # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA -use CGI; use strict; +use CGI; +use C4::Auth; use C4::Output; use C4::Biblio; use C4::Context; @@ -45,9 +46,9 @@ sub find_value { } sub MARCfindbreeding { - my ($dbh,$isbn) = @_; - my $sth = $dbh->prepare("select file,marc from marc_breeding where isbn=?"); - $sth->execute($isbn); + my ($dbh,$id) = @_; + my $sth = $dbh->prepare("select file,marc from marc_breeding where id=?"); + $sth->execute($id); my ($file,$marc) = $sth->fetchrow; if ($marc) { my $record = MARC::File::USMARC::decode($marc); @@ -58,12 +59,13 @@ sub MARCfindbreeding { } } return -1; - } + + my $input = new CGI; my $error = $input->param('error'); my $oldbiblionumber=$input->param('oldbiblionumber'); # if bib exists, it's a modif, not a new biblio. -my $isbn = $input->param('isbn'); +my $breedingid = $input->param('breedingid'); my $op = $input->param('op'); my $dbh = C4::Context->dbh; my $bibid; @@ -72,15 +74,32 @@ if ($oldbiblionumber) { }else { $bibid = $input->param('bibid'); } -my $template; +my ($template, $loggedinuser, $cookie) + = get_template_and_user({template_name => "acqui.simple/addbiblio.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {catalogue => 1}, + debug => 1, + }); my $tagslib = &MARCgettagslib($dbh,1); my $record=-1; $record = MARCgetbiblio($dbh,$bibid) if ($bibid); -$record = MARCfindbreeding($dbh,$isbn) if ($isbn); +#warn "1= ".$record->as_formatted; +$record = MARCfindbreeding($dbh,$breedingid) if ($breedingid); my $is_a_modif=0; +my ($oldbiblionumtagfield,$oldbiblionumtagsubfield); +my ($oldbiblioitemnumtagfield,$oldbiblioitemnumtagsubfield,$bibitem,$oldbiblioitemnumber); if ($bibid) { $is_a_modif=1; + # if it's a modif, retrieve old biblio and bibitem numbers for the future modification of old-DB. + ($oldbiblionumtagfield,$oldbiblionumtagsubfield) = &MARCfind_marc_from_kohafield($dbh,"biblio.biblionumber"); + ($oldbiblioitemnumtagfield,$oldbiblioitemnumtagsubfield) = &MARCfind_marc_from_kohafield($dbh,"biblioitems.biblioitemnumber"); + # search biblioitems value + my $sth=$dbh->prepare("select biblioitemnumber from biblioitems where biblionumber=?"); + $sth->execute($oldbiblionumber); + ($oldbiblioitemnumber) = $sth->fetchrow; } #------------------------------------------------------------------------------------------------------------------------------ if ($op eq "addbiblio") { @@ -101,7 +120,7 @@ if ($op eq "addbiblio") { my $oldbibnum; my $oldbibitemnum; if ($is_a_modif) { - ($bibid,$oldbibnum,$oldbibitemnum) = NEWmodbiblio($dbh,$record,$bibid); + NEWmodbiblio($dbh,$record,$bibid); } else { ($bibid,$oldbibnum,$oldbibitemnum) = NEWnewbiblio($dbh,$record); } @@ -111,12 +130,11 @@ if ($op eq "addbiblio") { #------------------------------------------------------------------------------------------------------------------------------ } else { #------------------------------------------------------------------------------------------------------------------------------ - $template = gettemplate("acqui.simple/addbiblio.tmpl"); # fill arrays my @loop_data =(); my $tag; my $i=0; - my $authorised_values_sth = $dbh->prepare("select authorised_value from authorised_values where category=?"); + my $authorised_values_sth = $dbh->prepare("select authorised_value,lib from authorised_values where category=? order by authorised_value"); # loop through each tab 0 through 9 for (my $tabloop = 0; $tabloop<=9;$tabloop++) { # my @fields = $record->fields(); @@ -139,9 +157,11 @@ if ($op eq "addbiblio") { # if breeding is not empty if ($record ne -1) { my ($x,$value) = find_value($tag,$subfield,$record); + $value=char_decode($value) unless ($is_a_modif); $indicator = $x if $x; if ($tagslib->{$tag}->{$subfield}->{authorised_value}) { my @authorised_values; + my %authorised_lib; # builds list, depending on authorised value... #---- branch if ($tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) { @@ -150,6 +170,7 @@ if ($op eq "addbiblio") { push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory}); while (my ($branchcode,$branchname) = $sth->fetchrow_array) { push @authorised_values, $branchcode; + $authorised_lib{$branchcode}=$branchname; } #----- itemtypes } elsif ($tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes") { @@ -158,28 +179,32 @@ if ($op eq "addbiblio") { push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory}); while (my ($itemtype,$description) = $sth->fetchrow_array) { push @authorised_values, $itemtype; + $authorised_lib{$itemtype}=$description; } #---- "true" authorised value } else { $authorised_values_sth->execute($tagslib->{$tag}->{$subfield}->{authorised_value}); push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory}); - while ((my $value) = $authorised_values_sth->fetchrow_array) { + while (my ($value,$lib) = $authorised_values_sth->fetchrow_array) { push @authorised_values, $value; + $authorised_lib{$value}=$lib; } } $subfield_data{marc_value}= CGI::scrolling_list(-name=>'field_value', -values=> \@authorised_values, -default=>"$value", + -labels => \%authorised_lib, -size=>1, -multiple=>0, ); } elsif ($tagslib->{$tag}->{$subfield}->{thesaurus_category}) { - $subfield_data{marc_value}=" {$tag}->{$subfield}->{thesaurus_category}&index=$i',$i)\">..."; #" + $subfield_data{marc_value}=" {$tag}->{$subfield}->{thesaurus_category}&index=$i',$i)\">..."; #" } elsif ($tagslib->{$tag}->{$subfield}->{'value_builder'}) { my $plugin="../value_builder/".$tagslib->{$tag}->{$subfield}->{'value_builder'}; require $plugin; my $extended_param = plugin_parameters($dbh,$record,$tagslib,$i,$tabloop); - $subfield_data{marc_value}=" {$tag}->{$subfield}->{value_builder}&index=$i$extended_param',$i)\">..."; + my ($function_name,$javascript) = plugin_javascript($dbh,$record,$tagslib,$i,$tabloop); + $subfield_data{marc_value}=" ... $javascript"; } else { $subfield_data{marc_value}=""; } @@ -187,36 +212,42 @@ if ($op eq "addbiblio") { } else { my ($x,$value); ($x,$value) = find_value($tag,$subfield,$record) if ($record ne -1); + $value=char_decode($value) unless ($is_a_modif); if ($tagslib->{$tag}->{$subfield}->{authorised_value}) { my @authorised_values; + my %authorised_lib; # builds list, depending on authorised value... #---- branch if ($tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) { - my $sth=$dbh->prepare("select branchcode,branchname from branches"); + my $sth=$dbh->prepare("select branchcode,branchname from branches order by branchcode"); $sth->execute; push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory}); while (my ($branchcode,$branchname) = $sth->fetchrow_array) { push @authorised_values, $branchcode; + $authorised_lib{$branchcode}=$branchname; } #----- itemtypes } elsif ($tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes") { - my $sth=$dbh->prepare("select itemtype,description from itemtypes"); + my $sth=$dbh->prepare("select itemtype,description from itemtypes order by itemtype"); $sth->execute; push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory}); while (my ($itemtype,$description) = $sth->fetchrow_array) { push @authorised_values, $itemtype; + $authorised_lib{$itemtype}=$description; } #---- "true" authorised value } else { $authorised_values_sth->execute($tagslib->{$tag}->{$subfield}->{authorised_value}); push @authorised_values, "" unless ($tagslib->{$tag}->{$subfield}->{mandatory}); - while ((my $value) = $authorised_values_sth->fetchrow_array) { + while (my ($value,$lib) = $authorised_values_sth->fetchrow_array) { push @authorised_values, $value; + $authorised_lib{$value}=$lib; } } $subfield_data{marc_value}= CGI::scrolling_list(-name=>'field_value', -values=> \@authorised_values, -default=>"$value", + -labels => \%authorised_lib, -size=>1, -multiple=>0, ); @@ -226,7 +257,8 @@ if ($op eq "addbiblio") { my $plugin="../value_builder/".$tagslib->{$tag}->{$subfield}->{'value_builder'}; require $plugin; my $extended_param = plugin_parameters($dbh,$record,$tagslib,$i,$tabloop); - $subfield_data{marc_value}=" {$tag}->{$subfield}->{value_builder}&index=$i$extended_param',$i)\">..."; + my ($function_name,$javascript) = plugin_javascript($dbh,$record,$tagslib,$i,$tabloop); + $subfield_data{marc_value}=" ... $javascript"; } else { $subfield_data{marc_value}=""; } @@ -266,6 +298,11 @@ if ($op eq "addbiblio") { } $template->param( oldbiblionumber => $oldbiblionumber, - bibid => $bibid); + bibid => $bibid, + oldbiblionumtagfield => $oldbiblionumtagfield, + oldbiblionumtagsubfield => $oldbiblionumtagsubfield, + oldbiblioitemnumtagfield => $oldbiblioitemnumtagfield, + oldbiblioitemnumtagsubfield => $oldbiblioitemnumtagsubfield, + oldbiblioitemnumber => $oldbiblioitemnumber); } -print "Content-Type: text/html\n\n", $template->output; +print $input->header(-cookie => $cookie),$template->output;