This tool allows catalogers to delete a list (csv) of items identified by thier 
barcode. Batch deletion is seen as a special case of batch modification. So I 
reused the code of BatchMod.pl (see bug #3000).
---
 .../data/mysql/en/mandatory/userpermissions.sql    |    4 ++-
 installer/data/mysql/updatedatabase.pl             |    7 ++++
 .../prog/en/modules/tools/batchMod.tmpl            |   18 ++++++++-
 .../prog/en/modules/tools/tools-home.tmpl          |   10 +++++-
 tools/batchMod.pl                                  |   39 +++++++++++---------
 5 files changed, 57 insertions(+), 21 deletions(-)

diff --git a/installer/data/mysql/en/mandatory/userpermissions.sql 
b/installer/data/mysql/en/mandatory/userpermissions.sql
index 29b3b05..527655c 100644
--- a/installer/data/mysql/en/mandatory/userpermissions.sql
+++ b/installer/data/mysql/en/mandatory/userpermissions.sql
@@ -15,5 +15,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    (13, 'import_patrons', 'Import patron data'),
    (13, 'delete_anonymize_patrons', 'Delete old borrowers and anonymize 
circulation history (deletes borrower reading history)'),
    (13, 'batch_upload_patron_images', 'Upload patron images in batch or one at 
a time'),
-   (13, 'schedule_tasks', 'Schedule tasks to run')
+   (13, 'schedule_tasks', 'Schedule tasks to run'),
+   (13, 'batchmod', 'Perform batch modification of items'),
+   (13, 'batchdel', 'Perform batch deletion of items')
 ;
diff --git a/installer/data/mysql/updatedatabase.pl 
b/installer/data/mysql/updatedatabase.pl
index cd89ab8..883d2a6 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -2509,6 +2509,13 @@ if (C4::Context->preference("Version") < 
TransformToNum($DBversion)) {
     print "Upgrade to $DBversion done (Moving max allowed reserves from system 
preference to issuingrule)\n";
 }
 
+$DBversion = "3.01.00.041";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 
13, 'batchmod', 'Perform batch modification of items')");
+    $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 
13, 'batchdel', 'Perform batch deletion of items')");
+    print "Upgrade to $DBversion done (added permissions for batch 
modification and deletion)\n";
+}
+
 =item DropAllForeignKeys($table)
 
   Drop all foreign keys of the table $table
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod.tmpl 
b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod.tmpl
index 78314d0..138b81e 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod.tmpl
@@ -7,13 +7,21 @@
 <!-- TMPL_INCLUDE NAME="header.inc" -->
 <!-- TMPL_INCLUDE NAME="cat-search.inc"-->
 
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a 
href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo; <a 
href="/cgi-bin/koha/tools/batchMod.pl">Modify batches of notices</a></div>
+<div id="breadcrumbs">
+       <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
+       <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo;
+       <!-- TMPL_IF name="del" -->
+       <a href="/cgi-bin/koha/tools/batchMod.pl?del=1">Delete batches of 
notices</a>
+       <!-- TMPL_ELSE -->
+       <a href="/cgi-bin/koha/tools/batchMod.pl">Modify batches of notices</a>
+       <!-- /TMPL_IF -->
+</div>
 
 <div id="doc3" class="yui-t2">
     <div id="bd">
         <div id="yui-main">
             <div class="yui-b">
-                <h1>Batch modification</h1>
+                <h1>Batch <!-- TMPL_IF name="del" -->deletion<!-- TMPL_ELSE 
-->modification<!-- /TMPL_IF --></h1>
                 <!-- TMPL_UNLESS name="op" -->
                     <div class="yui-g">
                         <form method="post" enctype="multipart/form-data" 
action="/cgi-bin/koha/tools/batchMod.pl">
@@ -33,6 +41,7 @@
                                 </ol>
                             </fieldset>
                             <input type="hidden" name="op" value="barcodes" />
+                            <!-- TMPL_IF name="del" --><input type="hidden" 
name="del" value="1" /><!-- /TMPL_IF -->
                             <fieldset class="action">
                                 <input type="submit" value="Continue" 
class="button" />
                             </fieldset>
@@ -68,6 +77,10 @@
                             <!-- /TMPL_LOOP -->
                         </table>
                         <form method="post" 
action="/cgi-bin/koha/tools/batchMod.pl">
+                            <!-- TMPL_IF name="del" -->
+                            <p>This will delete the selected items.</p>
+                            <input type="hidden" name="del" value="1" />
+                            <!-- TMPL_ELSE -->
                             <fieldset class="rows">
                                 <legend>Change items' properties</legend>
                                 <ol>
@@ -116,6 +129,7 @@
                                     </li>
                                 </ol>
                             </fieldset>
+                            <!-- /TMPL_IF -->
                             <input type="hidden" name="itemslst" value="<!-- 
TMPL_VAR name="itemslst" -->"/>
                             <fieldset class="action">
                                 <input type="submit" value="Go" class="button" 
/>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl 
b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl
index 25603ab..cc2bdb5 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl
@@ -61,9 +61,17 @@
     <dt><a 
href="/cgi-bin/koha/tools/inventory.pl">Inventory/stocktaking</a></dt>
     <dd>Perform inventory (stocktaking) of your catalog</dd>
     <!-- /TMPL_IF -->
-       
+
+    <!-- TMPL_IF NAME="CAN_user_tools_batchmod" -->
     <dt><a href="/cgi-bin/koha/tools/batchMod.pl">Modify a queryset of 
items</a></dt>
     <dd>Perform batch modification of items</dd>
+    <!-- /TMPL_IF -->
+
+    <!-- TMPL_IF NAME="CAN_user_tools_batchdel" -->
+    <dt><a href="/cgi-bin/koha/tools/batchMod.pl?del=1">Delete a queryset of 
items</a></dt>
+    <dd>Perform batch deletion of items</dd>
+    <!-- /TMPL_IF -->
+
        </dl>
 </div>
 <div class="yui-u">
diff --git a/tools/batchMod.pl b/tools/batchMod.pl
index 402047e..dd3c6af 100755
--- a/tools/batchMod.pl
+++ b/tools/batchMod.pl
@@ -31,7 +31,7 @@ use C4::Context;
 use C4::Output;
 use C4::Branch qw(GetBranches);
 use C4::Koha qw(GetAuthorisedValues GetAuthValCode);
-use C4::Items qw(GetItemnumberFromBarcode GetItem ModItem);
+use C4::Items qw(GetItemnumberFromBarcode GetItem ModItem DelItemCheck);
 use C4::Biblio qw(GetBiblioData);
 use C4::Koha qw(GetItemTypes);
 
@@ -41,7 +41,7 @@ my ($template, $borrowernumber, $cookie)
                 query => $input,
                 type => "intranet",
                 authnotrequired => 0,
-                flagsrequired => {tools => 'inventory'},       #FIXME: add a 
new permission?
+                flagsrequired => {tools => 'batchmod'},
                 debug => 1,
                 });
 
@@ -156,21 +156,26 @@ if ( $invars->{op} && $invars->{op} eq 'barcodes'){
                                       );
 } elsif ( $invars->{'itemslst'} ) {
     for my $itemno ( split(',', $invars->{itemslst}) ) {
-      my $item = GetItem($itemno);
-      for my $auth (@$authvals){
-          my ($authfieldname, $description, $hashfdname) = @$auth;
-          my $authcode = GetAuthValCode($authfieldname);
-          if ($invars->{$authcode} && $invars->{$authcode} ne '0'){
-              $item->{$hashfdname}=$invars->{$authcode};
-          }
-      }
-      if ($invars->{holdingbranch} && $invars->{holdingbranch} ne '0'){
-          $item->{holdingbranch} = $invars->{holdingbranch};
-      }
-      if ($invars->{homebranch} && $invars->{homebranch} ne '0'){
-          $item->{homebranch} = $invars->{homebranch};
-      }
-      ModItem($item, $item->{biblionumber}, $item->{itemnumber});
+               my $item = GetItem($itemno);
+               if ( $invars->{'del'} ) {
+                       DelItemCheck(C4::Context->dbh, $item->{'biblionumber'}, 
$item->{'itemnumber'})
+               } else {
+                       for my $auth (@$authvals){
+                               my ($authfieldname, $description, $hashfdname) 
= @$auth;
+                               my $authcode = GetAuthValCode($authfieldname);
+                               if ($invars->{$authcode} && 
$invars->{$authcode} ne '0'){
+                                       
$item->{$hashfdname}=$invars->{$authcode};
+                               }
+                       }
+                       if ($invars->{holdingbranch} && 
$invars->{holdingbranch} ne '0'){
+                               $item->{holdingbranch} = 
$invars->{holdingbranch};
+                       }
+                       if ($invars->{homebranch} && $invars->{homebranch} ne 
'0'){
+                               $item->{homebranch} = $invars->{homebranch};
+                       }
+                       ModItem($item, $item->{biblionumber}, 
$item->{itemnumber});
+               }
     }
 }
+$template->param('del' => $input->param('del'));
 output_html_with_http_headers $input, $cookie, $template->output;
-- 
1.6.0.4

_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha.org/mailman/listinfo/koha-patches

Reply via email to