@@ -, +, @@
---
C4/MarcModificationTemplates.pm | 9 +++
Koha/SimpleMARC.pm | 25 ++++++++
installer/data/mysql/atomicupdate/bug13560.perl | 6 ++
.../modules/tools/marc_modification_templates.tt | 4 +-
.../prog/js/marc_modification_templates.js | 6 ++
t/db_dependent/MarcModificationTemplates.t | 75 ++++++++++++++++++----
tools/marc_modification_templates.pl | 1 +
7 files changed, 114 insertions(+), 12 deletions(-)
create mode 100644 installer/data/mysql/atomicupdate/bug13560.perl
--- a/C4/MarcModificationTemplates.pm
+++ a/C4/MarcModificationTemplates.pm
@@ -626,6 +626,15 @@ sub ModifyRecordWithTemplate {
field_numbers => $field_numbers,
});
}
+ elsif ( $action eq 'add_field' ) {
+ add_field({
+ record => $record,
+ field => $from_field,
+ subfield => $from_subfield,
+ values => [ $field_value ],
+ field_numbers => $field_numbers,
+ });
+ }
elsif ( $action eq 'update_field' ) {
update_field({
record => $record,
--- a/Koha/SimpleMARC.pm
+++ a/Koha/SimpleMARC.pm
@@ -17,6 +17,7 @@ our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw(
read_field
+ add_field
update_field
copy_field
copy_and_replace_field
@@ -172,6 +173,30 @@ sub update_field {
}
}
+sub add_field {
+ my ( $params ) = @_;
+ my $record = $params->{record};
+ my $fieldName = $params->{field};
+ my $subfieldName = $params->{subfield};
+ my @values = @{ $params->{values} };
+ my $field_numbers = $params->{field_numbers} // [];
+
+ if ( ! ( $record && $fieldName ) ) { return; }
+ if ( $fieldName > 10 ) {
+ foreach my $value ( @values ) {
+ my $field = MARC::Field->new( $fieldName, '', '', "$subfieldName" => $value );
+ warn Data::Dumper::Dumper( $field );
+ $record->append_fields( $field );
+ }
+ } else {
+ foreach my $value ( @values ) {
+ my $field = MARC::Field->new( $fieldName, $value );
+ warn Data::Dumper::Dumper( $field );
+ $record->append_fields( $field );
+ }
+ }
+}
+
sub _update_field {
my ( $params ) = @_;
my $record = $params->{record};
--- a/installer/data/mysql/atomicupdate/bug13560.perl
+++ a/installer/data/mysql/atomicupdate/bug13560.perl
@@ -0,0 +1,6 @@
+$DBversion = 'XXX'; # will be replaced by the RM
+if( CheckVersion( $DBversion ) ) {
+ $dbh->do( "ALTER TABLE marc_modification_template_actions CHANGE action action ENUM('delete_field','add_field','update_field','move_field','copy_field','copy_and_replace_field')" );
+ SetVersion( $DBversion );
+ print "Upgrade to $DBversion done (Bug 13560 - need an add option in marc modification templates)\n";
+}
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/marc_modification_templates.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/marc_modification_templates.tt
@@ -132,6 +132,7 @@
[% ActionsLoo.ordering %] |
[% IF ( ActionsLoo.action_delete_field ) %] Delete [% END %]
+ [% IF ( ActionsLoo.action_add_field ) %] Add [% END %]
[% IF ( ActionsLoo.action_update_field ) %] Update [% END %]
[% IF ( ActionsLoo.action_move_field ) %] Move [% END %]
[% IF ( ActionsLoo.action_copy_field ) %] Copy [% END %]
@@ -218,7 +219,8 @@
|