Bugzilla – Attachment 3561 Details for
Bug 6018
Batch modifitcation of items Enchancements
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Proposed Patch
0001-Bug-6018-MT3269-BatchMod-Feature-blanking-subfields.patch (text/plain), 8.84 KB, created by
Chris Cormack
on 2011-03-31 02:14:26 UTC
(
hide
)
Description:
Proposed Patch
Filename:
MIME Type:
Creator:
Chris Cormack
Created:
2011-03-31 02:14:26 UTC
Size:
8.84 KB
patch
obsolete
>From 2261cc0986ccef8e2d4d7d93f75a1af9c3ebeb9a Mon Sep 17 00:00:00 2001 >From: Henri-Damien LAURENT <henridamien.laurent@biblibre.com> >Date: Thu, 8 Apr 2010 23:15:56 +0200 >Subject: [PATCH 1/2] Bug 6018 : MT3269 : BatchMod Feature blanking subfields > >there is now a checkbox after each label that you can check >in order to wipe out the corresponding subfield in all the items >--- > .../prog/en/modules/tools/batchMod-edit.tmpl | 14 ++- > tools/batchMod.pl | 121 ++++++++++++-------- > 2 files changed, 80 insertions(+), 55 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tmpl >index 1d6216a..0b426ee 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tmpl >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tmpl >@@ -117,15 +117,17 @@ for( x=0; x<allColumns.length; x++ ){ > > <div id="cataloguing_additem_newitem"> > <h2>Edit Items</h2> >- <fieldset class="rows"> >- <ol> >+ <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> > <!-- TMPL_LOOP NAME="item" --> > <li><div class="subfield_line" style="<!-- TMPL_VAR NAME='visibility' -->" id="subfield<!-- TMPL_VAR NAME='tag' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->"> > <label><!-- TMPL_VAR NAME="subfield" --> - >- <!-- TMPL_IF name="mandatory" --><b><!-- /TMPL_IF --> >- <!-- TMPL_VAR NAME="marc_lib" --> >- <!-- TMPL_IF name="mandatory" --> *</b><!-- /TMPL_IF --> >- </label> >+ <!-- TMPL_IF name="mandatory" --><b><!-- /TMPL_IF --> >+ <!-- TMPL_VAR NAME="marc_lib" --> >+ <!-- TMPL_IF name="mandatory" --> *</b><!-- /TMPL_IF --> >+ </label> >+ <input type="checkbox" title="check to delete subfield <!-- TMPL_VAR NAME="subfield" -->" name="disable_input"> > <!-- TMPL_VAR NAME="marc_value" --> > <input type="hidden" name="tag" value="<!-- TMPL_VAR NAME="tag" -->" /> > <input type="hidden" name="subfield" value="<!-- TMPL_VAR NAME="subfield" -->" /> >diff --git a/tools/batchMod.pl b/tools/batchMod.pl >index d9a0b76..358125a 100755 >--- a/tools/batchMod.pl >+++ b/tools/batchMod.pl >@@ -89,71 +89,89 @@ 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) { >- # If we have a reasonable amount of items, we display them >- if (scalar(@itemnumbers) <= 1000) { >- $items_display_hashref=BuildItemsData(@itemnumbers); >- } else { >- # Else, we only display the barcode >- my @simple_items_display = map {{ itemnumber => $_, barcode => (GetBarcodeFromItemnumber($_) or ""), biblionumber => (GetBiblionumberFromItemnumber($_) or "") }} @itemnumbers; >- $template->param("simple_items_display" => \@simple_items_display); >- } >+ # If we have a reasonable amount of items, we display them >+ if (scalar(@itemnumbers) <= 1000) { >+ $items_display_hashref=BuildItemsData(@itemnumbers); >+ } else { >+ # Else, we only display the barcode >+ my @simple_items_display = map {{ itemnumber => $_, barcode => (GetBarcodeFromItemnumber($_) or ""), biblionumber => (GetBiblionumberFromItemnumber($_) or "") }} @itemnumbers; >+ $template->param("simple_items_display" => \@simple_items_display); >+ } > >- # Setting the job as done >- my $job = C4::BackgroundJob->fetch($sessionID, $completedJobID); >+ # Setting the job as done >+ my $job = C4::BackgroundJob->fetch($sessionID, $completedJobID); > >- # Calling the template >- add_saved_job_results_to_template($template, $completedJobID); >+ # 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); >- my $job = undef; >- my $callback = sub {}; >+ my $job_size = scalar(@itemnumbers); >+ my $job = undef; >+ $dbh->{AutoCommit} = 0; >+ my $callback = sub {}; > > # If we asked for background processing >- if ($runinbackground) { >- $job = put_in_background($job_size); >- $callback = progress_callback($job, $dbh); >- } >+ if ($runinbackground) { >+ $job = put_in_background($job_size); >+ $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){ >- >- $job->progress($i) if $runinbackground; >- my $itemdata=GetItem($itemnumber); >- if ($input->param("del")){ >- my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'}); >- if ($return == 1) { >- $deleted_items++; >- } else { >- $not_deleted_items++; >- 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)}; >- } >- } >- $i++; >- } >+ my $i = 1; >+ foreach my $itemnumber(@itemnumbers){ >+ >+ $job->progress($i) if $runinbackground; >+ my $itemdata=GetItem($itemnumber); >+ if ($input->param("del")){ >+ my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'}); >+ if ($return == 1) { >+ $deleted_items++; >+ } else { >+ $not_deleted_items++; >+ push @not_deleted, { biblionumber => $itemdata->{'biblionumber'}, itemnumber => $itemdata->{'itemnumber'}, barcode => $itemdata->{'barcode'}, title => $itemdata->{'title'}, $return => 1 }; >+ } >+ } else { >+ 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++; >+ } > } > } > # >@@ -504,9 +522,14 @@ sub UpdateMarcWith { > my $fieldfrom=$marcfrom->field($itemtag); > 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'); >- } >+ foreach my $field_to_update (@fields_to){ >+ if ($subfield->[1] ne ""){ >+ $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.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 6018
:
3561
|
3562