Bug 3134: add ability to selelct multiple reports to delete at once
authorOwen Leonard <oleonard@myacpl.org>
Wed, 3 Jul 2013 14:05:55 +0000 (10:05 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 21 Aug 2013 14:24:33 +0000 (14:24 +0000)
This patch adds the option to select multiple saved reports for
deletion.

To test you must have two or more saved reports to delete. Deletion
should work properly when:

- Selecting one report for deletion by checking the box.
- Selecting more than one report for deletion by checking boxes.
- Clicking the old "Delete" link

Clicking the delete button should prompt you to confirm. Clicking cancel
should cancel.

Clicking the delete button when no boxes are checked should trigger an
alert asking you to select reports for deletion.

Signed-off-by: Liz Rea <wizzyrea@gmail.com>
Functional tests pass, template tests pass.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
C4/Reports/Guided.pm
koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt
reports/guided_reports.pl

index f0db7a3..9447c71 100644 (file)
@@ -609,13 +609,13 @@ sub format_results {
 }      
 
 sub delete_report {
-    my ($id)  = @_;
-    my $dbh   = C4::Context->dbh();
-    my $query = "DELETE FROM saved_sql WHERE id = ?";
-    my $sth   = $dbh->prepare($query);
-    $sth->execute($id);
-}      
-
+    my (@ids) = @_;
+        my $dbh = C4::Context->dbh;
+        my $query = 'DELETE FROM saved_sql WHERE id IN (' . join( ',', ('?') x @ids ) . ')';
+        my $sth = $dbh->prepare($query);
+        $sth->execute(@ids);
+        $sth->finish;
+}
 
 my $SAVED_REPORTS_BASE_QRY = <<EOQ;
 SELECT s.*, r.report, r.date_run, $AREA_NAME_SQL_SNIPPET, av_g.lib AS groupname, av_sg.lib AS subgroupname,
index 0138086..9f35e08 100644 (file)
@@ -122,6 +122,15 @@ $(document).ready(function(){
             rtable.fnSetColumnVis(4, true);
         }
     });
+
+    $("#reports_form").submit(function(){
+        var checkedItems = $("input[name=ids]:checked");
+        if ($(checkedItems).size() == 0) {
+            alert(_("You must select one or more reports to delete"));
+            return false;
+        }
+        return confirm(_("Are you sure you want to delete the selected reports?"));
+    });
 [% END %]
 
 [% IF ( showsql ) %]
@@ -132,7 +141,7 @@ $(document).ready(function(){
 [% IF ( saved1 ) %]
     $(".confirmdelete").click(function(){
         $(this).parents('tr').attr("class","warn");
-        if(confirm("Are you sure you want to "+$(this).attr("title")+"?")){
+        if(confirm(_("Are you sure you want to delete this saved report?"))){
             return true;
         } else {
             $(this).parents('tr').attr("class","");
@@ -273,6 +282,8 @@ canned reports and writing custom SQL reports.</p>
                 <option value="">All</option>
             </select>
         </div>
+<form action="/cgi-bin/koha/reports/guided_reports.pl" id="reports_form" method="post">
+<input type="hidden" name="phase" value="Delete Multiple" />
         <table id="table_reports">
             <thead>
                 <tr>
@@ -293,7 +304,7 @@ canned reports and writing custom SQL reports.</p>
             <tbody>
                 [% FOREACH savedreport IN savedreports %]
                     [% UNLESS ( loop.odd ) %]<tr class="odd">[% ELSE %]<tr>[% END %]
-                        <td>[% savedreport.id %]</td>
+                        <td><label>[% savedreport.id %] <input type="checkbox" name="ids" value="[% savedreport.id %]" /></label></td>
                         <td>
                             [% IF ( savedreport.report_name ) %]
                                 [% savedreport.report_name %]
@@ -338,6 +349,10 @@ canned reports and writing custom SQL reports.</p>
                 [% END %]
             </tbody>
         </table>
+        <fieldset class="action">
+            <input type="submit" value="Delete selected" />
+        </fieldset>
+    </form>
     </div>
 </div>
 [% ELSE %]<div class="dialog message">
index 929feea..b9c49ad 100755 (executable)
@@ -108,11 +108,18 @@ elsif ( $phase eq 'Build new' ) {
     );
 }
 
+elsif ( $phase eq 'Delete Multiple') {
+    my @ids = $input->param('ids');
+    delete_report( @ids );
+    print $input->redirect("/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved");
+    exit;
+}
+
 elsif ( $phase eq 'Delete Saved') {
        
        # delete a report from the saved reports list
-       my $id = $input->param('reports');
-       delete_report($id);
+    my $ids = $input->param('reports');
+    delete_report($ids);
     print $input->redirect("/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved");
        exit;
 }