Bug 29999: Replace the use of jQueryUI tabs on authorized values administration page
[koha-ffzg.git] / cataloguing / addbiblio.pl
index 138fcea..0367644 100755 (executable)
@@ -51,6 +51,7 @@ use Koha::ItemTypes;
 use Koha::Libraries;
 
 use Koha::BiblioFrameworks;
+use Koha::Patrons;
 
 use MARC::File::USMARC;
 use MARC::File::XML;
@@ -283,12 +284,13 @@ sub GetMandatoryFieldZ3950 {
 =cut
 
 sub create_input {
-    my ( $tag, $subfield, $value, $index_tag, $tabloop, $rec, $authorised_values_sth,$cgi ) = @_;
+    my ( $tag, $subfield, $value, $index_tag, $rec, $authorised_values_sth,$cgi ) = @_;
     
     my $index_subfield = CreateKey(); # create a specifique key for each subfield
 
-    # if there is no value provided but a default value in parameters, get it
-    if ( $value eq '' ) {
+    # Apply optional framework default value when it is a new record
+    # Substitute date parts, user name
+    if ( $value eq '' && !$cgi->param('biblionumber') ) {
         $value = $tagslib->{$tag}->{$subfield}->{defaultvalue} // q{};
 
         # get today date & replace <<YYYY>>, <<YY>>, <<MM>>, <<DD>> if provided in the default value
@@ -304,8 +306,8 @@ sub create_input {
         # And <<USER>> with surname (?)
         my $username=(C4::Context->userenv?C4::Context->userenv->{'surname'}:"superlibrarian");
         $value=~s/<<USER>>/$username/g;
-    
     }
+
     my $dbh = C4::Context->dbh;
 
     # map '@' as "subfield" label for fixed fields
@@ -352,13 +354,14 @@ sub create_input {
           build_authorized_values_list( $tag, $subfield, $value, $dbh,
             $authorised_values_sth,$index_tag,$index_subfield );
 
-    # it's a subfield $9 linking to an authority record - see bug 2206
+    # it's a subfield $9 linking to an authority record - see bug 2206 and 28022
     }
     elsif ($subfield eq "9" and
            exists($tagslib->{$tag}->{'a'}->{authtypecode}) and
            defined($tagslib->{$tag}->{'a'}->{authtypecode}) and
-           $tagslib->{$tag}->{'a'}->{authtypecode} ne '') {
-
+           $tagslib->{$tag}->{'a'}->{authtypecode} ne '' and
+           $tagslib->{$tag}->{'a'}->{hidden} > -4 and
+           $tagslib->{$tag}->{'a'}->{hidden} < 5) {
         $subfield_data{marc_value} = {
             type      => 'text',
             id        => $subfield_data{id},
@@ -393,7 +396,7 @@ sub create_input {
             name => $tagslib->{$tag}->{$subfield}->{'value_builder'},
         });
         my $pars= { dbh => $dbh, record => $rec, tagslib => $tagslib,
-            id => $subfield_data{id}, tabloop => $tabloop };
+            id => $subfield_data{id} };
         $plugin->build( $pars );
         if( !$plugin->errstr ) {
             $subfield_data{marc_value} = {
@@ -566,7 +569,7 @@ sub build_tabs {
                         push(
                             @subfields_data,
                             &create_input(
-                                $tag, $subfield, $value, $index_tag, $tabloop, $record,
+                                $tag, $subfield, $value, $index_tag, $record,
                                 $authorised_values_sth,$input
                             )
                         );
@@ -581,7 +584,7 @@ sub build_tabs {
                             push(
                                 @subfields_data,
                                 &create_input(
-                                    $tag, $subfield, $value, $index_tag, $tabloop,
+                                    $tag, $subfield, $value, $index_tag,
                                     $record, $authorised_values_sth,$input
                                 )
                             );
@@ -589,7 +592,7 @@ sub build_tabs {
                     }
 
                     # now, loop again to add parameter subfield that are not in the MARC::Record
-                    foreach my $subfield ( keys %{ $tagslib->{$tag} } )
+                    foreach my $subfield ( sort( keys %{ $tagslib->{$tag} } ) )
                     {
                         next if ( length $subfield != 1 );
                         next if ( $tagslib->{$tag}->{$subfield}->{tab} ne $tabloop );
@@ -600,16 +603,18 @@ sub build_tabs {
                             and not ( $subfield eq "9" and
                                       exists($tagslib->{$tag}->{'a'}->{authtypecode}) and
                                       defined($tagslib->{$tag}->{'a'}->{authtypecode}) and
-                                      $tagslib->{$tag}->{'a'}->{authtypecode} ne ""
+                                      $tagslib->{$tag}->{'a'}->{authtypecode} ne "" and
+                                      $tagslib->{$tag}->{'a'}->{hidden} > -4 and
+                                      $tagslib->{$tag}->{'a'}->{hidden} < 5
                                     )
                           ;    #check for visibility flag
                                # if subfield is $9 in a field whose $a is authority-controlled,
-                               # always include in the form regardless of the hidden setting - bug 2206
+                               # always include in the form regardless of the hidden setting - bug 2206 and 28022
                         next if ( defined( $field->subfield($subfield) ) );
                         push(
                             @subfields_data,
                             &create_input(
-                                $tag, $subfield, '', $index_tag, $tabloop, $record,
+                                $tag, $subfield, '', $index_tag, $record,
                                 $authorised_values_sth,$input
                             )
                         );
@@ -653,17 +658,19 @@ sub build_tabs {
                       and not ( $subfield->{subfield} eq "9" and
                                 exists($tagslib->{$tag}->{'a'}->{authtypecode}) and
                                 defined($tagslib->{$tag}->{'a'}->{authtypecode}) and
-                                $tagslib->{$tag}->{'a'}->{authtypecode} ne ""
+                                $tagslib->{$tag}->{'a'}->{authtypecode} ne "" and
+                                $tagslib->{$tag}->{'a'}->{hidden} > -4 and
+                                $tagslib->{$tag}->{'a'}->{hidden} < 5
                               )
                       ;    #check for visibility flag
                            # if subfield is $9 in a field whose $a is authority-controlled,
-                           # always include in the form regardless of the hidden setting - bug 2206
+                           # always include in the form regardless of the hidden setting - bug 2206 and 28022
                     next
                       if ( $subfield->{tab} ne $tabloop );
                        push(
                         @subfields_data,
                         &create_input(
-                            $tag, $subfield->{subfield}, '', $index_tag, $tabloop, $record,
+                            $tag, $subfield->{subfield}, '', $index_tag, $record,
                             $authorised_values_sth,$input
                         )
                     );
@@ -859,7 +866,19 @@ if ( $op eq "addbiblio" ) {
     if ( !$duplicatebiblionumber or $confirm_not_duplicate ) {
         my $oldbibitemnum;
         if ( $is_a_modif ) {
-            ModBiblio( $record, $biblionumber, $frameworkcode );
+            my $member = Koha::Patrons->find($loggedinuser);
+            ModBiblio(
+                $record,
+                $biblionumber,
+                $frameworkcode,
+                {
+                    overlay_context => {
+                        source       => $z3950 ? 'z39.50' : 'intranet',
+                        categorycode => $member->categorycode,
+                        userid       => $member->userid
+                    }
+                }
+            );
         }
         else {
             ( $biblionumber, $oldbibitemnum ) = AddBiblio( $record, $frameworkcode );
@@ -952,6 +971,7 @@ elsif ( $op eq "delete" ) {
     $template->param(
         biblionumberdata => $biblionumber,
         op               => $op,
+        z3950            => $z3950
     );
     if ( $op eq "duplicate" ) {
         $biblionumber = "";