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,
our @EXPORT = qw(
read_field
+ add_field
update_field
copy_field
copy_and_replace_field
}
}
+=head2 add_field
+
+ add_field({
+ record => $record,
+ field => $fieldName,
+ subfield => $subfieldName,
+ values => \@values,
+ field_numbers => $field_numbers,
+ });
+
+ Adds a new field/subfield with supplied value(s).
+ This function always add a new field as opposed to 'update_field' which will
+ either update if field exists and add if it does not.
+
+=cut
+
+
+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 );
+ $record->append_fields( $field );
+ }
+ } else {
+ foreach my $value ( @values ) {
+ my $field = MARC::Field->new( $fieldName, $value );
+ $record->append_fields( $field );
+ }
+ }
+}
+
sub _update_field {
my ( $params ) = @_;
my $record = $params->{record};
<td>[% ActionsLoo.ordering %]</td>
<td>
[% IF ( ActionsLoo.action_delete_field ) %] Delete [% END %]
- [% IF ( ActionsLoo.action_update_field ) %] Update [% END %]
+ [% IF ( ActionsLoo.action_add_field ) %] Add new [% END %]
+ [% IF ( ActionsLoo.action_update_field ) %] Update existing or add new [% END %]
[% IF ( ActionsLoo.action_move_field ) %] Move [% END %]
[% IF ( ActionsLoo.action_copy_field ) %] Copy [% END %]
[% IF ( ActionsLoo.action_copy_and_replace_field ) %] Copy and replace [% END %]
<select name="action" id="action" onchange="onActionChange(this);">
<option value="delete_field">Delete</option>
- <option value="update_field">Add/Update</option>
+ <option value="add_field">Add new</option>
+ <option value="update_field">Update existing or add new</option>
<option value="move_field">Move</option>
<option value="copy_field">Copy</option>
<option value="copy_and_replace_field">Copy and replace</option>
hide('to_field_block');
break;
+ case 'add_field':
+ hide('field_number_block');
+ show('with_value_block');
+ hide('to_field_block');
+ break;
+
case 'update_field':
hide('field_number_block');
show('with_value_block');
my @actions = GetModificationTemplateActions( $template_id );
foreach my $action ( @actions ) {
$action->{'action_delete_field'} = ( $action->{'action'} eq 'delete_field' );
+ $action->{'action_add_field'} = ( $action->{'action'} eq 'add_field' );
$action->{'action_update_field'} = ( $action->{'action'} eq 'update_field' );
$action->{'action_move_field'} = ( $action->{'action'} eq 'move_field' );
$action->{'action_copy_field'} = ( $action->{'action'} eq 'copy_field' );