X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=cataloguing%2Faddbiblio.pl;h=c4ed49da871b13b749af074b088a21e07263a850;hb=3f7b2fa41898f59ce39d1725f8dfe6001095f796;hp=e9ff81ea1d721433042c19b71639a075694a94d6;hpb=df97814f3034a3d5015546c4eca21f08ae951e37;p=koha.git diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl index e9ff81ea1d..c4ed49da87 100755 --- a/cataloguing/addbiblio.pl +++ b/cataloguing/addbiblio.pl @@ -19,8 +19,8 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -#use warnings; FIXME - Bug 2505 +use Modern::Perl; + use CGI q(-utf8); use C4::Output; use C4::Auth; @@ -37,8 +37,11 @@ use C4::Charset; use Koha::BiblioFrameworks; use Koha::DateUtils; +use Koha::ItemTypes; use Koha::Libraries; +use Koha::BiblioFrameworks; + use Date::Calc qw(Today); use MARC::File::USMARC; use MARC::File::XML; @@ -104,7 +107,6 @@ sub MARCfindbreeding { { my ( $tag, $subfield ) = GetMarcFromKohaField("biblio.author", ''); - # my $summary = C4::Context->preference("z3950authortemplate"); my $auth_fields = C4::Context->preference("z3950AuthorAuthFields"); my @auth_fields = split /,/, $auth_fields; @@ -113,7 +115,6 @@ sub MARCfindbreeding { if ( $record->field($tag) ) { foreach my $tmpfield ( $record->field($tag)->subfields ) { - # foreach my $subfieldcode ($tmpfield->subfields){ my $subfieldcode = shift @$tmpfield; my $subfieldvalue = shift @$tmpfield; if ($field) { @@ -137,16 +138,12 @@ sub MARCfindbreeding { my $title = $record->field($fieldtag)->subfield('c'); my $number = $record->field($fieldtag)->subfield('d'); if ($title) { - -# $field->add_subfields("$subfield"=>"[ ".ucfirst($title).ucfirst($firstname)." ".$number." ]"); $field->add_subfields( "$subfield" => ucfirst($title) . " " . ucfirst($firstname) . " " . $number ); } else { - -# $field->add_subfields("$subfield"=>"[ ".ucfirst($firstname).", ".ucfirst($lastname)." ]"); $field->add_subfields( "$subfield" => ucfirst($firstname) . ", " . ucfirst($lastname) ); @@ -181,21 +178,18 @@ sub build_authorized_values_list { } } elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes" ) { - push @authorised_values, "" - unless ( $tagslib->{$tag}->{$subfield}->{mandatory} - && ( $value || $tagslib->{$tag}->{$subfield}->{defaultvalue} ) ); + push @authorised_values, ""; my $itemtype; - my $itemtypes = GetItemTypes( style => 'array' ); - for my $itemtype ( @$itemtypes ) { - push @authorised_values, $itemtype->{itemtype}; - $authorised_lib{$itemtype->{itemtype}} = $itemtype->{translated_description}; + my $itemtypes = Koha::ItemTypes->search_with_localization; + while ( $itemtype = $itemtypes->next ) { + push @authorised_values, $itemtype->itemtype; + $authorised_lib{$itemtype->itemtype} = $itemtype->translated_description; } $value = $itemtype unless ($value); } elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "cn_source" ) { - push @authorised_values, "" - unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); + push @authorised_values, ""; my $class_sources = GetClassSources(); @@ -217,9 +211,7 @@ sub build_authorized_values_list { $branch_limit ? $branch_limit : (), ); - push @authorised_values, "" - unless ( $tagslib->{$tag}->{$subfield}->{mandatory} - && ( $value || $tagslib->{$tag}->{$subfield}->{defaultvalue} ) ); + push @authorised_values, ""; while ( my ( $value, $lib ) = $authorised_values_sth->fetchrow_array ) { push @authorised_values, $value; @@ -250,7 +242,7 @@ sub CreateKey { =head2 GetMandatoryFieldZ3950 - This function return an hashref which containts all mandatory field + This function returns a hashref which contains all mandatory field to search with z3950 server. =cut @@ -283,17 +275,15 @@ sub create_input { my $index_subfield = CreateKey(); # create a specifique key for each subfield - $value =~ s/"/"/g; - # if there is no value provided but a default value in parameters, get it if ( $value eq '' ) { - $value = $tagslib->{$tag}->{$subfield}->{defaultvalue}; + $value = $tagslib->{$tag}->{$subfield}->{defaultvalue} // q{}; # get today date & replace <>, <>, <
> if provided in the default value my $today_dt = dt_from_string; - my $year = $today_dt->year; - my $month = $today_dt->month; - my $day = $today_dt->day; + my $year = $today_dt->strftime('%Y'); + my $month = $today_dt->strftime('%m'); + my $day = $today_dt->strftime('%d'); $value =~ s/<>/$year/g; $value =~ s/<>/$month/g; $value =~ s/<
>/$day/g; @@ -660,8 +650,8 @@ sub build_tabs { tag_lib => $tagslib->{$tag}->{lib}, repeatable => $tagslib->{$tag}->{repeatable}, mandatory => $tagslib->{$tag}->{mandatory}, - indicator1 => $indicator1, - indicator2 => $indicator2, + indicator1 => ( $indicator1 || $tagslib->{$tag}->{ind1_defaultvalue} ), #if not set, try to load the default value + indicator2 => ( $indicator2 || $tagslib->{$tag}->{ind2_defaultvalue} ), #use short-circuit operator for efficiency subfield_loop => \@subfields_data, tagfirstsubfield => $subfields_data[0], fixedfield => $tag < 10?1:0, @@ -691,7 +681,7 @@ my $biblionumber = $input->param('biblionumber'); # if biblionumber exists, it' my $parentbiblio = $input->param('parentbiblionumber'); my $breedingid = $input->param('breedingid'); my $z3950 = $input->param('z3950'); -my $op = $input->param('op'); +my $op = $input->param('op') // q{}; my $mode = $input->param('mode'); my $frameworkcode = $input->param('frameworkcode'); my $redirect = $input->param('redirect'); @@ -708,9 +698,9 @@ my $fa_duedatespec = $input->param('duedatespec'); my $userflags = 'edit_catalogue'; -my $changed_framework = $input->param('changed_framework'); +my $changed_framework = $input->param('changed_framework') // q{}; $frameworkcode = &GetFrameworkCode($biblionumber) - if ( $biblionumber and not($frameworkcode) and $op ne 'addbiblio' ); + if ( $biblionumber and not( defined $frameworkcode) and $op ne 'addbiblio' ); if ($frameworkcode eq 'FA'){ $userflags = 'fast_cataloging'; @@ -727,6 +717,14 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); +if ($biblionumber){ + my $does_bib_exist = Koha::Biblios->find($biblionumber); + if (!defined $does_bib_exist){ + $biblionumber = undef; + $template->param( bib_doesnt_exist => 1 ); + } +} + if ($frameworkcode eq 'FA'){ # We need to grab and set some variables in the template for use on the additems screen $template->param( @@ -736,16 +734,19 @@ if ($frameworkcode eq 'FA'){ 'stickyduedate' => $fa_stickyduedate, 'duedatespec' => $fa_duedatespec, ); -} elsif ( C4::Context->preference('EnableAdvancedCatalogingEditor') && $input->cookie( 'catalogue_editor_' . $loggedinuser ) eq 'advanced' && !$breedingid ) { +} elsif ( $op ne "delete" && C4::Context->preference('EnableAdvancedCatalogingEditor') && $input->cookie( 'catalogue_editor_' . $loggedinuser ) eq 'advanced' && !$breedingid ) { # Only use the advanced editor for non-fast-cataloging. # breedingid is not handled because those would only come off a Z39.50 # search initiated by the basic editor. print $input->redirect( '/cgi-bin/koha/cataloguing/editor.pl' . ( $biblionumber ? ( '#catalog/' . $biblionumber ) : '' ) ); + exit; } -my $frameworkcodeloop = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] }); -$template->param( frameworkcodeloop => $frameworkcodeloop , - breedingid => $breedingid ); +my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] }); +$template->param( + frameworks => $frameworks, + breedingid => $breedingid, +); # ++ Global $tagslib = &GetMarcStructure( 1, $frameworkcode ); @@ -764,7 +765,7 @@ my ( ); if (($biblionumber) && !($breedingid)){ - $record = GetMarcBiblio($biblionumber); + $record = GetMarcBiblio({ biblionumber => $biblionumber }); } if ($breedingid) { ( $record, $encoding ) = MARCfindbreeding( $breedingid ) ; @@ -792,7 +793,7 @@ if ($parentbiblio) { } $is_a_modif = 0; - + if ($biblionumber) { $is_a_modif = 1; my $title = C4::Context->preference('marcflavour') eq "UNIMARC" ? $record->subfield('200', 'a') : $record->title; @@ -828,11 +829,7 @@ if ( $op eq "addbiblio" ) { # it is not a duplicate (determined either by Koha itself or by user checking it's not a duplicate) if ( !$duplicatebiblionumber or $confirm_not_duplicate ) { my $oldbibitemnum; - if (C4::Context->preference("BiblioAddsAuthorities")){ - BiblioAutoLink( $record, $frameworkcode ); - } if ( $is_a_modif ) { - ModBiblioframework( $biblionumber, $frameworkcode ); ModBiblio( $record, $biblionumber, $frameworkcode ); } else {