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/

Reply via email to