From: Alex Arnaud <[email protected]>
Signed-off-by: Nicole C. Engard <[email protected]> --- .../prog/en/modules/tools/batchMod-edit.tt | 23 +++++++++ tools/batchMod.pl | 51 +++++++++++++++---- 2 files changed, 63 insertions(+), 11 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt index 67cd6e0..540b141 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt @@ -16,6 +16,27 @@ console.log(allColumns); for( x=0; x<allColumns.length; x++ ){ allColumns[x] = Number(allColumns[x]) + 2; } +$("#itemst").tablesorter({ widgets : ['zebra'], headers: {0:{sorter: false}} }); +$("#selectallbutton").click(function() { + $("#itemst").find("input:checkbox").each(function() { + $(this).attr("checked", true); + }); +}); +$("#clearallbutton").click(function() { + $("#itemst").find("input:checkbox").each(function() { + $(this).attr("checked", false); + }); +}); +$("input[name='disable_input']").click(function() { + if ($(this).is(":checked")){ + $(this).val($(this).siblings("[name='subfield']").val()); + $(this).siblings().attr('disabled',true); + } + else { + $(this).siblings().removeAttr('disabled'); + } +}); + //]]> </script> <script type="text/javascript" src="[% themelang %]/js/pages/batchMod.js"></script> @@ -118,6 +139,7 @@ for( x=0; x<allColumns.length; x++ ){ <div id="cataloguing_additem_newitem"> <h2>Edit Items</h2> + <div class="hint">Checking the box right next the subfield label will disable the entry and delete the values of that subfield on all selected items</div> <fieldset class="rows"> <ol> [% FOREACH ite IN item %] @@ -127,6 +149,7 @@ for( x=0; x<allColumns.length; x++ ){ [% ite.marc_lib %] [% IF ( ite.mandatory ) %] *</b>[% END %] </label> + <input type="checkbox" title="check to delete subfield [% ite.subfield %]" name="disable_input" value="[% ite.subfield %]" /> [% ite.marc_value %] <input type="hidden" name="tag" value="[% ite.tag %]" /> <input type="hidden" name="subfield" value="[% ite.subfield %]" /> diff --git a/tools/batchMod.pl b/tools/batchMod.pl index 4910dbd..9d4431b 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -89,13 +89,16 @@ if ($op eq "action") { my @tags = $input->param('tag'); my @subfields = $input->param('subfield'); my @values = $input->param('field_value'); + my @disabled = $input->param('disable_input'); # build indicator hash. my @ind_tag = $input->param('ind_tag'); my @indicator = $input->param('indicator'); # Is there something to modify ? # TODO : We shall use this var to warn the user in case no modification was done to the items - my $something_to_modify = scalar(grep {!/^$/} @values); + my $values_to_modify = scalar(grep {!/^$/} @values); + my $values_to_blank = scalar(@disabled); + my $marcitem; # Once the job is done if ($completedJobID) { @@ -114,8 +117,8 @@ if ($op eq "action") { # Calling the template add_saved_job_results_to_template($template, $completedJobID); - # While the job is getting done } else { + # While the job is getting done # Job size is the number of items we have to process my $job_size = scalar(@itemnumbers); @@ -128,6 +131,24 @@ if ($op eq "action") { $callback = progress_callback($job, $dbh); } + #initializing values for updates + my ( $itemtagfield, $itemtagsubfield) = &GetMarcFromKohaField("items.itemnumber", ""); + if ($values_to_modify){ + my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM'); + $marcitem = MARC::Record::new_from_xml($xml, 'UTF-8'); + } + if ($values_to_blank){ + foreach my $disabledsubf (@disabled){ + if ($marcitem && $marcitem->field($itemtagfield)){ + $marcitem->field($itemtagfield)->update( $disabledsubf => "" ); + } + else { + $marcitem = MARC::Record->new(); + $marcitem->append_fields( MARC::Field->new( $itemtagfield, '', '', $disabledsubf => "" ) ); + } + } + } + # For each item my $i = 1; foreach my $itemnumber(@itemnumbers){ @@ -140,16 +161,19 @@ if ($op eq "action") { $deleted_items++; } else { $not_deleted_items++; - push @not_deleted, { biblionumber => $itemdata->{'biblionumber'}, itemnumber => $itemdata->{'itemnumber'}, barcode => $itemdata->{'barcode'}, title => $itemdata->{'title'}, $return => 1 }; + push @not_deleted, + { biblionumber => $itemdata->{'biblionumber'}, + itemnumber => $itemdata->{'itemnumber'}, + barcode => $itemdata->{'barcode'}, + title => $itemdata->{'title'}, + $return => 1 + }; } } else { - if ($something_to_modify) { - my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM'); - my $marcitem = MARC::Record::new_from_xml($xml, 'UTF-8'); - my $localitem = TransformMarcToKoha( $dbh, $marcitem, "", 'items' ); - my $localmarcitem=Item2Marc($itemdata); - UpdateMarcWith($marcitem,$localmarcitem); - eval{my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItemFromMarc($localmarcitem,$itemdata->{biblionumber},$itemnumber)}; + if ($values_to_modify || $values_to_blank) { + my $localmarcitem = Item2Marc($itemdata); + UpdateMarcWith( $marcitem, $localmarcitem ); + eval{ my ( $oldbiblionumber, $oldbibnum, $oldbibitemnum ) = ModItemFromMarc( $localmarcitem, $itemdata->{biblionumber}, $itemnumber ) }; } } $i++; @@ -505,7 +529,12 @@ sub UpdateMarcWith { my @fields_to=$marcto->field($itemtag); foreach my $subfield ($fieldfrom->subfields()){ foreach my $field_to_update (@fields_to){ - $field_to_update->update($$subfield[0]=>$$subfield[1]) if ($$subfield[1] != '' or $$subfield[1] == '0'); + if ($subfield->[1]){ + $field_to_update->update($subfield->[0]=>$subfield->[1]); + } + else { + $field_to_update->delete_subfield(code=> $subfield->[0]); + } } } #warn "TO edited:",$marcto->as_formatted; -- 1.7.2.3 _______________________________________________ Koha-patches mailing list [email protected] http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
