use Koha::Libraries;
use Koha::BiblioFrameworks;
+use Koha::Patrons;
use MARC::File::USMARC;
use MARC::File::XML;
=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
# 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
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},
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} = {
push(
@subfields_data,
&create_input(
- $tag, $subfield, $value, $index_tag, $tabloop, $record,
+ $tag, $subfield, $value, $index_tag, $record,
$authorised_values_sth,$input
)
);
push(
@subfields_data,
&create_input(
- $tag, $subfield, $value, $index_tag, $tabloop,
+ $tag, $subfield, $value, $index_tag,
$record, $authorised_values_sth,$input
)
);
}
# 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 );
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
)
);
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
)
);
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 );
$template->param(
biblionumberdata => $biblionumber,
op => $op,
+ z3950 => $z3950
);
if ( $op eq "duplicate" ) {
$biblionumber = "";