[Koha-patches] [PATCH] bug 4169: fix item batch modification for MARC21

Galen Charlton gmcharlt at gmail.com
Fri Feb 12 14:57:23 CET 2010


The MARC21 framework uses $0 for the item withdrawn status.  Because
of how the tool had marked the barcode and stocknumber as being
uneditable, this resulted in an off-by-one error, causing the wrong
item fields to be updated.

Fixed by simply not including the uneditable fields in list
of item fields that can be edited - if you can't change the barcode,
there's no point in displaying it in the list of fields.

Also fixed how the bib title/author/ISBN got displayed so that the
withdrawn column gets displayed after an item update.

Signed-off-by: Galen Charlton <gmcharlt at gmail.com>
---
 .../prog/en/modules/tools/batchMod-edit.tmpl       |    8 ++-
 tools/batchMod.pl                                  |   41 ++++++-------------
 2 files changed, 18 insertions(+), 31 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 34cb7eb..40640cc 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
@@ -55,6 +55,7 @@
 	    <thead>
 		<tr>
 		    <th>&nbsp;</th>
+		    <th>&nbsp;</th>
 		    <!-- TMPL_LOOP NAME="item_header_loop" --> 
 		    <th> <!-- TMPL_VAR NAME="header_value" --> </th>
 		    <!-- /TMPL_LOOP --> 
@@ -62,6 +63,7 @@
 	    </thead>
 	    <tbody>
             <!-- TMPL_LOOP NAME="item_loop" --> <tr> <!-- TMPL_IF Name="nomod"--> <td class="error">Cannot Edit</td><!--TMPL_ELSE--><td><input type="checkbox" name="itemnumber" value="<!--TMPL_VAR Name="itemnumber"-->" id="row<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" /></td><!--/TMPL_IF-->
+                <td><!-- TMPL_VAR ESCAPE="HTML" NAME="bibinfo" --></td>
                 <!-- TMPL_LOOP NAME="item_value" --> <td><!-- TMPL_VAR ESCAPE="HTML" NAME="field" --></td> 
 				<!-- /TMPL_LOOP --> </tr>
             <!-- /TMPL_LOOP -->
@@ -83,9 +85,9 @@
 		      <!-- TMPL_IF name="mandatory" --> *</b><!-- /TMPL_IF -->
 	       </label>
                 <!-- TMPL_VAR NAME="marc_value" -->
-                <!-- TMPL_IF NAME="tag" --><input type="hidden" name="tag"       value="<!-- TMPL_VAR NAME="tag" -->" /><!-- /TMPL_IF -->
-                <!-- TMPL_IF NAME="subfield" --><input type="hidden" name="subfield"       value="<!-- TMPL_VAR NAME="subfield" -->" /><!-- /TMPL_IF -->
-                <!-- TMPL_IF NAME="mandatory" --><input type="hidden" name="mandatory"       value="<!-- TMPL_VAR NAME="mandatory" -->" /><!-- /TMPL_IF -->
+                <input type="hidden" name="tag"       value="<!-- TMPL_VAR NAME="tag" -->" />
+                <input type="hidden" name="subfield"       value="<!-- TMPL_VAR NAME="subfield" -->" />
+                <input type="hidden" name="mandatory"       value="<!-- TMPL_VAR NAME="mandatory" -->" />
                 <!-- TMPL_IF NAME="repeatable" -->
                     <span class="buttonPlus" onclick="CloneSubfield('subfield<!-- TMPL_VAR NAME='tag' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->')">+</span>
                 <!-- /TMPL_IF -->
diff --git a/tools/batchMod.pl b/tools/batchMod.pl
index 84236ea..12e7eea 100755
--- a/tools/batchMod.pl
+++ b/tools/batchMod.pl
@@ -176,6 +176,9 @@ foreach my $tag (sort keys %{$tagslib}) {
     foreach my $subfield (sort keys %{$tagslib->{$tag}}) {
      	next if subfield_is_koha_internal_p($subfield);
     	next if ($tagslib->{$tag}->{$subfield}->{'tab'} ne "10");
+        # barcode and stocknumber are not meant to be batch-modified
+    	next if $tagslib->{$tag}->{$subfield}->{'kohafield'} eq 'items.barcode';
+    	next if $tagslib->{$tag}->{$subfield}->{'kohafield'} eq 'items.stocknumber';
 	my %subfield_data;
  
 	my $index_subfield = int(rand(1000000)); 
@@ -204,31 +207,8 @@ foreach my $tag (sort keys %{$tagslib}) {
 	$subfield_data{visibility} = "display:none;" if (($tagslib->{$tag}->{$subfield}->{hidden} > 4) || ($tagslib->{$tag}->{$subfield}->{hidden} < -4));
 	# testing branch value if IndependantBranches.
 
-	my $attributes_no_value;
-	my $not_editable = 0;
-	# Disable barcode and stock numbers batch editing
-	my @not_editable_koha_fields = ( 'items.barcode', 'items.stocknumber' );
-	foreach (@not_editable_koha_fields) {
-	    my ($bctag, $bcsubfield) = GetMarcFromKohaField($_, $frameworkcode);
-    	    if (($bctag eq $subfield_data{tag}) && ($bcsubfield eq $subfield_data{subfield})) {
-		$not_editable = 1;
-	    }
-
-	}
-
-	my $attributes;
-	# If a field is found to be non-editable,
-	if ($not_editable) {
-		# We mark it as disabled, so the user won't be able to edit it
-     		$attributes_no_value = qq(disabled="disabled"); 
-		$attributes = $attributes_no_value;
-		# We also remove it's data, so it won't be modified
-		undef($subfield_data{tag});
-		undef($subfield_data{subfield});
-	} else {
-	    $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" );
-	    $attributes          = qq($attributes_no_value value="$value" );
-	}
+	my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" );
+	my $attributes          = qq($attributes_no_value value="$value" );
 
 	if ( $tagslib->{$tag}->{$subfield}->{authorised_value} ) {
 	my @authorised_values;
@@ -387,7 +367,6 @@ sub BuildItemsData{
 		foreach my $itemnumber (@itemnumbers){
 			my $itemdata=GetItem($itemnumber);
 			my $itemmarc=Item2Marc($itemdata);
-			my $biblio=GetBiblioData($$itemdata{biblionumber});
 			my %this_row;
 			foreach my $field (grep {$_->tag() eq $itemtagfield} $itemmarc->fields()) {
 				# loop through each subfield
@@ -415,8 +394,12 @@ sub BuildItemsData{
 					$this_row{itemnumber} = $subfvalue if ($tag eq $itemtagfield && $subfcode eq $itemtagsubfield);
 				}
 			}
-			$this_row{0}=join("\n",@$biblio{qw(title author ISBN)});
-			$witness{0}="&nbsp;";
+
+            # grab title, author, and ISBN to identify bib that the item
+            # belongs to in the display
+			my $biblio=GetBiblioData($$itemdata{biblionumber});
+            $this_row{bibinfo} = join("\n", @$biblio{qw(title author ISBN)});
+
 			if (%this_row) {
 				push(@big_array, \%this_row);
 			}
@@ -434,9 +417,11 @@ sub BuildItemsData{
 			$row_data{itemnumber} = $row->{itemnumber};
 			#reporting this_row values
 			$row_data{'nomod'} = $row->{'nomod'};
+            $row_data{bibinfo} = $row->{bibinfo};
 			push(@item_value_loop,\%row_data);
 		}
 		my @header_loop=map { { header_value=> $witness{$_}} } @witnesscodessorted;
+
 	return { item_loop        => \@item_value_loop, item_header_loop => \@header_loop };
 }
 
-- 
1.6.3.3




More information about the Koha-patches mailing list