UI: if a volume deletion request results in VOLUME_NOT_EMPTY, then offer to delete...
authorJason Etheridge <jason@esilibrary.com>
Thu, 9 Jun 2011 20:07:20 +0000 (16:07 -0400)
committerJason Etheridge <jason@esilibrary.com>
Thu, 9 Jun 2011 20:07:20 +0000 (16:07 -0400)
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Open-ILS/xul/staff_client/server/cat/copy_browser.js
Open-ILS/xul/staff_client/server/circ/copy_status.js
Open-ILS/xul/staff_client/server/locale/en-US/cat.properties
Open-ILS/xul/staff_client/server/locale/en-US/circ.properties

index 5f2ee1d..b4f4d63 100644 (file)
@@ -676,27 +676,42 @@ cat.copy_browser.prototype = {
                                             document.getElementById('commonStrings').getString('common.confirm')
                                     );
 
-                                    if (r == 0) {
+                                    if (r == 0) { // delete vols
                                         for (var i = 0; i < list.length; i++) {
                                             list[i].isdeleted('1');
                                         }
-                                        var robj = obj.network.simple_request(
-                                            'FM_ACN_TREE_UPDATE', 
-                                            [ ses(), list, true ],
-                                            null,
-                                            {
-                                                'title' : document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.override'),
-                                                'overridable_events' : [
-                                                ]
-                                            }
-                                        );
-                                        if (robj == null) throw(robj);
-                                        if (typeof robj.ilsevent != 'undefined') {
-                                            if (robj.ilsevent == 1206 /* VOLUME_NOT_EMPTY */) {
-                                                alert(document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.copies_remain'));
-                                                return;
+                                        var params = {};
+                                        loop: while(true) {
+                                            var robj = obj.network.simple_request(
+                                                'FM_ACN_TREE_UPDATE', 
+                                                [ ses(), list, true, params ],
+                                                null,
+                                                {
+                                                    'title' : document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.override'),
+                                                    'overridable_events' : [
+                                                    ]
+                                                }
+                                            );
+                                            if (robj == null) throw(robj);
+                                            if (typeof robj.ilsevent != 'undefined') {
+                                                if (robj.ilsevent == 1206 /* VOLUME_NOT_EMPTY */) {
+                                                    var r2 = obj.error.yns_alert(
+                                                        document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.copies_remain'),
+                                                        document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.title'),
+                                                        document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.copies_remain.confirm'),
+                                                        document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.copies_remain.cancel'),
+                                                        null,
+                                                        document.getElementById('commonStrings').getString('common.confirm')
+                                                    );
+                                                    if (r2 == 0) { // delete vols and copies
+                                                        params.force_delete_copies = true;
+                                                        continue loop;
+                                                    }
+                                                } else {
+                                                    if (robj.ilsevent != 0) throw(robj);
+                                                }
                                             }
-                                            if (robj.ilsevent != 0) throw(robj);
+                                            break loop;
                                         }
                                         obj.refresh_list();
                                     }
index 9ff0201..f2816c1 100644 (file)
@@ -802,23 +802,38 @@ circ.copy_status.prototype = {
                                     for (var i = 0; i < list.length; i++) {
                                         list[i].isdeleted('1');
                                     }
-                                    var robj = obj.network.simple_request(
-                                        'FM_ACN_TREE_UPDATE', 
-                                        [ ses(), list, true ],
-                                        null,
-                                        {
-                                            'title' : document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.override'),
-                                            'overridable_events' : [
-                                            ]
-                                        }
-                                    );
-                                    if (robj == null) throw(robj);
-                                    if (typeof robj.ilsevent != 'undefined') {
-                                        if (robj.ilsevent == 1206 /* VOLUME_NOT_EMPTY */) {
-                                            alert(document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.delete_copies'));
-                                            return;
+                                    var params = {};
+                                    loop: while(true) {
+                                        var robj = obj.network.simple_request(
+                                            'FM_ACN_TREE_UPDATE', 
+                                            [ ses(), list, true, params ],
+                                            null,
+                                            {
+                                                'title' : document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.override'),
+                                                'overridable_events' : [
+                                                ]
+                                            }
+                                        );
+                                        if (robj == null) throw(robj);
+                                        if (typeof robj.ilsevent != 'undefined') {
+                                            if (robj.ilsevent == 1206 /* VOLUME_NOT_EMPTY */) {
+                                                var r2 = obj.error.yns_alert(
+                                                    document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.delete_copies'),
+                                                    document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.title'),
+                                                    document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.delete_copies.confirm'),
+                                                    document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.delete_copies.cancel'),
+                                                    null,
+                                                    document.getElementById('commonStrings').getString('common.confirm')
+                                                );
+                                                if (r2 == 0) { // delete vols and copies
+                                                    params.force_delete_copies = true;
+                                                    continue loop;
+                                                }
+                                            } else {
+                                                if (robj.ilsevent != 0) { throw(robj); }
+                                            }
                                         }
-                                        if (robj.ilsevent != 0) { throw(robj); }
+                                        break loop;
                                     }
                                     alert(document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.success'));
                                 }
index 4cde2ae..94a8f9b 100644 (file)
@@ -56,7 +56,9 @@ staff.cat.copy_browser.delete_volume.title=Delete Volumes?
 staff.cat.copy_browser.delete_volume.delete=Delete
 staff.cat.copy_browser.delete_volume.cancel=Cancel
 staff.cat.copy_browser.delete_volume.override=Override Delete Failure?
-staff.cat.copy_browser.delete_volume.copies_remain=You must delete all the copies on the volume before you may delete the volume itself.
+staff.cat.copy_browser.delete_volume.copies_remain=You must delete all the items on the volume before you may delete the volume itself.
+staff.cat.copy_browser.delete_volume.copies_remain.confirm=Delete Volume and Items
+staff.cat.copy_browser.delete_volume.copies_remain.cancel=Cancel Delete
 staff.cat.copy_browser.delete_volume.exception=copy browser -> delete volumes
 staff.cat.copy_browser.mark_library.alert=Library + Record marked as Volume Transfer Destination
 staff.cat.copy_browser.mark_library.prompt=Choose just one Library to mark as Volume Transfer Destination
index 66ed6a3..15f4d37 100644 (file)
@@ -134,7 +134,9 @@ staff.circ.copy_status.delete_volumes.title=Delete Volumes?
 staff.circ.copy_status.delete_volumes.delete=Delete
 staff.circ.copy_status.delete_volumes.cancel=Cancel
 staff.circ.copy_status.delete_volumes.override=Override Delete Failure?
-staff.circ.copy_status.delete_volumes.delete_copies=You must delete all the copies on the volume before you may delete the volume itself.
+staff.circ.copy_status.delete_volumes.delete_copies=You must delete all the items on the volume before you may delete the volume itself.
+staff.circ.copy_status.delete_volumes.delete_copies.confirm=Delete Volume and Items
+staff.circ.copy_status.delete_volumes.delete_copies.cancel=Cancel Delete
 staff.circ.copy_status.delete_volumes.success=Volumes deleted.
 staff.circ.copy_status.mark_volume.status=Volume marked as Item Transfer Destination
 staff.circ.copy_status.mark_volume.prompt=Choose just one Volume to mark as Item Transfer Destination