- $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};
-
- # get today date & replace YYYY, MM, DD if provided in the default value
- my ( $year, $month, $day ) = Today();
- $month = sprintf( "%02d", $month );
- $day = sprintf( "%02d", $day );
- $value =~ s/YYYY/$year/g;
- $value =~ s/MM/$month/g;
- $value =~ s/DD/$day/g;
- my $username=(C4::Context->userenv?C4::Context->userenv->{'surname'}:"superlibrarian");
- $value=~s/user/$username/g;
-
+ # Apply optional framework default value when it is a new record,
+ # or when editing as new (duplicating a record),
+ # or when changing a record's framework,
+ # or when importing a record,
+ # based on the ApplyFrameworkDefaults setting.
+ # Substitute date parts, user name
+ my $applydefaults = C4::Context->preference('ApplyFrameworkDefaults');
+ if ( $value eq '' && (
+ ( $applydefaults =~ /new/ && !$cgi->param('biblionumber') ) ||
+ ( $applydefaults =~ /duplicate/ && $cgi->param('op') eq 'duplicate' ) ||
+ ( $applydefaults =~ /changed/ && $cgi->param('changed_framework') ) ||
+ ( $applydefaults =~ /imported/ && $cgi->param('breedingid') )
+ ) ) {
+ $value = $tagslib->{$tag}->{$subfield}->{defaultvalue} // q{};
+
+ # get today date & replace <<YYYY>>, <<YY>>, <<MM>>, <<DD>> if provided in the default value
+ my $today_dt = dt_from_string;
+ my $year = $today_dt->strftime('%Y');
+ my $shortyear = $today_dt->strftime('%y');
+ my $month = $today_dt->strftime('%m');
+ my $day = $today_dt->strftime('%d');
+ $value =~ s/<<YYYY>>/$year/g;
+ $value =~ s/<<YY>>/$shortyear/g;
+ $value =~ s/<<MM>>/$month/g;
+ $value =~ s/<<DD>>/$day/g;
+ # And <<USER>> with surname (?)
+ my $username=(C4::Context->userenv?C4::Context->userenv->{'surname'}:"superlibrarian");
+ $value=~s/<<USER>>/$username/g;