Bugzilla – Attachment 4911 Details for
Bug 6068
New feature: capability to blanking subfields in BatchMod
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
proposed patch (passed QA)
0001-Bug-6068-New-feature-capability-to-blanking-subfield.patch (text/plain), 6.39 KB, created by
Paul Poulain
on 2011-08-09 16:12:17 UTC
(
hide
)
Description:
proposed patch (passed QA)
Filename:
MIME Type:
Creator:
Paul Poulain
Created:
2011-08-09 16:12:17 UTC
Size:
6.39 KB
patch
obsolete
>From 9fdc3bd5db11d3020fb5f0747115a0aa1bde98fc Mon Sep 17 00:00:00 2001 >From: Alex Arnaud <alex.arnaud@biblibre.com> >Date: Wed, 6 Apr 2011 11:19:57 +0200 >Subject: [PATCH] Bug #6068 - New feature: capability to blanking subfields in BatchMod > > >Signed-off-by: Paul Poulain <paul.poulain@biblibre.com> >--- > .../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.4.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 6068
:
3727
|
4250
| 4911