Bug 15496: Delete Bib After Moving Item
authorKyle M Hall <kyle@bywatersolutions.com>
Fri, 12 Apr 2019 17:50:32 +0000 (13:50 -0400)
committerNick Clemens <nick@bywatersolutions.com>
Fri, 26 Apr 2019 11:53:53 +0000 (11:53 +0000)
Librarians have requested the ability to delete records with no items
quickly and easily from the "Attach item" results page as items are
moved from one record to another.

Test Plan:
1) Apply this patch
2) Create 2 records with 2 items each
3) Move one item from record A to record B
4) You should see no change from pre-patch behavior
5) Move the second item from record A to record B
6) You should now see a "Delete record" button
7) Click the button
8) Note the record in question has been deleted

Signed-off-by: Liz Rea <wizzyrea@gmail.com>

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Koha/Biblio.pm
cataloguing/moveitem.pl
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/moveitem.tt

index b535649..688edc8 100644 (file)
@@ -350,11 +350,9 @@ sub article_requests_finished {
 
 =head3 items
 
-my @items = $biblio->items();
 my $items = $biblio->items();
 
-Returns the related Koha::Items object for this biblio in scalar context,
-or list of Koha::Item objects in list context.
+Returns the related Koha::Items object for this biblio
 
 =cut
 
@@ -363,10 +361,7 @@ sub items {
 
     my $items_rs = $self->_result->items;
 
-    return
-        wantarray
-        ? Koha::Items->_new_from_dbic($items_rs)->as_list
-        : Koha::Items->_new_from_dbic($items_rs);
+    return Koha::Items->_new_from_dbic( $items_rs );
 }
 
 =head3 itemtype
index 49641f4..697057e 100755 (executable)
@@ -77,7 +77,10 @@ if ( $barcode && $biblionumber ) {
 
         my $moveresult = MoveItemFromBiblio( $itemnumber, $frombiblionumber, $biblionumber );
         if ($moveresult) {
-            $template->param( success => 1 );
+            $template->param(
+                success => 1,
+                from_biblio => scalar Koha::Biblios->find($frombiblionumber),
+            );
         }
         else {
             $template->param(
index b5470f4..cc163c0 100644 (file)
@@ -1,3 +1,4 @@
+[% SET footerjs = 1 %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Cataloging &rsaquo; Attach an item to [% bibliotitle | html %]</title>
 [% INCLUDE 'doc-head-close.inc' %]
 
        [% ELSE %]
            [% IF ( success ) %]
+            [% IF from_biblio.items.count == 0 %]
+                <div class="dialog alert">
+                    The record <em>[% from_biblio.title | html %]</em> has [% from_biblio.items.count | html %] attached items.
+                    <p>
+                        <button id="delete-biblio-btn" data-biblionumber="[% from_biblio.id | html %]"><i id="del-bib-spn" class="fa fa-spinner fa-pulse fa-fw" style="display:none"></i><i class="fa fa-fw fa-trash"></i> Delete record
+                        </button>
+                        <span id="del-bib-success" style="display:none">Record deleted</span>
+                        <span id="del-bib-failure" style="display:none">Attempt to delete record failed.</span>
+                    </p>
+                </div>
+                <br/>
+            [% END %]
+
             <div class="dialog message">The item has successfully been attached to [% INCLUDE 'biblio-default-view.inc' %]<i>[% bibliotitle | html %]</i></a>.
                        <p>
                        [% INCLUDE actions %]
@@ -62,6 +76,7 @@
                                 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
                         </form>
                        </p>
+
                        </div>
     [% ELSE %]
        [% IF ( missingparameter ) %]
     </div>
 </div>
 
+[% MACRO jsinclude BLOCK %]
+    <script type="text/javascript">
+        $("#delete-biblio-btn").on("click", function(){
+            if ( confirm(_("Are you sure you want to delete this record?")) ) {
+                let btn = $(this);
+                $("#del-bib-spn").show();
+                let biblionumber = $(this).data('biblionumber');
+                $.ajax({
+                    url: '/api/v1/biblios/' + biblionumber,
+                    type: 'DELETE',
+                    success: function(result) {
+                        btn.hide();
+                        $('#del-bib-success').show();
+                    },
+                    error: function(result) {
+                        btn.hide();
+                        $('#del-bib-failure').show();
+                    }
+                });
+            }
+        });
+    </script>
+[% END %]
+
 [% INCLUDE 'intranet-bottom.inc' %]