Finishing ti up?
authorJason Stephenson <jason@sigio.com>
Sun, 21 Oct 2018 22:30:49 +0000 (18:30 -0400)
committerJason Stephenson <jason@sigio.com>
Fri, 26 Oct 2018 23:04:56 +0000 (19:04 -0400)
Open-ILS/src/templates/staff/circ/share/circ_strings.tt2
Open-ILS/web/js/ui/default/staff/circ/services/circ.js

index d760d64..fc5d57c 100644 (file)
@@ -33,6 +33,8 @@ s.MARK_ITEM_IN_TRANSIT = '[% l("Item {{barcode}} is in transit.") %]';
 s.MARK_ITEM_RESTRICT_DELETE = '[% l("Item {{barcode}} is in a status with a copy delete warning.") %]';
 s.MARK_ITEM_LAST_HOLD_COPY = '[% l("Item {{barcode}} is the last item to fill a hold.") %]';
 s.MARK_ITEM_CONTINUE = '[% l("Do you wish to continue marking it {{status}}?") %]';
+s.MARK_ITEM_CHECKIN_CONTINUE = '[% l("Do you wish to check it in and continue marking it {{status}}?") %]';
+s.MARK_ITEM_ABORT_CONTINUE = '[% l("Do you wish to abort the transit and continue marking it {{status}}?"]';
 s.ABORT_TRANSIT_CONFIRM = '[% l("Cancel {{num_transits}} transits?") %]';
 s.ROUTE_TO_HOLDS_SHELF = '[% l("Holds Shelf") %]';
 s.ROUTE_TO_CATALOGING = '[% l("Cataloging") %]';
index 7d18f28..c135a4c 100644 (file)
@@ -1376,10 +1376,59 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
 
     service.mark_item = function(copy, markstatus, args) {
         if (!copy) return $q.when();
-        var req;
+
+        // Used later  handle events from the back end call.
+        function handle_event(copy, status, args, event) {
+            var dlogTitle, dlogMessage;
+            switch (event.textcode) {
+            case 'ITEM_TO_MARK_CHECKED_OUT':
+                dlogTitle = egcore.strings.MARK_ITEM_CHECKED_OUT;
+                dlogMessage = egCore.strings.MARK_ITEM_CHECKIN_CONTINUE;
+                args.handle_checkin = 1;
+                break;
+            case 'ITEM_TO_MARK_IN_TRANSIT':
+                dlogTitle = egCore.strings.MARK_ITEM_TRANSIT;
+                dlogMessage = egCore.strings.MARK_ITEM_ABORT_CONTINUE;
+                args.handle_transit = 1;
+                break;
+            case 'ITEM_TO_MARK_LAST_HOLD_COPY':
+                dlogTitle = egCore.strings.MARK_ITEM_LAST_HOLD_COPY;
+                dlogMessage = egCore.strings.MARK_ITEM_CONTINUE;
+                args.handle_last_hold_copy = 1;
+                break;
+            case 'COPY_DELETE_WARNING':
+                dlogTitle = egCore.strings.MARK_ITEM_RESTRICT_DELETE;
+                dlogMessage = egCore.strings.MARK_ITEM_CONTINUE;
+                args.handle_copy_delete_warning = 1;
+                break;
+            case 'PERM_FAILURE':
+                return service.exit_alert(egCore.strings.PERMISSION_DENIED,
+                                          event.ilsperm);
+                break;
+            default:
+                // TODO: Report failure to user.
+                console.error('Mark item ' + status.name() + ' for ' + copy.barcode + ' failed: ' +
+                              event);
+                return $q.reject();
+                break;
+            }
+            return egConfirmDialog.open(
+                dlogTitle, dlogMessage,
+                {
+                    barcode : copy.barcode,
+                    status : status.name(),
+                    ok : function () {},
+                    cancel : function () {}
+                }
+            ).result.then(function() {
+                return service.mark_item(copy, status, args);
+            });
+        }
+
         // If any new back end mark_item calls are added, also add
         // them here to use them from the staff client.
         // TODO: I didn't find any JS constants for copy status.
+        var req;
         switch (markstatus.id()) {
         case 2:
             // Not implemented in the staff client, yet.
@@ -1419,10 +1468,8 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
             copy.id,
             args
         ).then(function(resp) {
-            if (resp == 1) {
-                console.debug(req + ' succeeded for ' + copy.barcode);
-            } else if (evt = egCore.evt.parse(resp)) {
-                console.error(req + ' failed for ' + copy.barcode + ': ' + resp.textcode);
+            if (evt = egCore.evt.parse(resp)) {
+                return handle_event(copy, markstatus, args, evt);
             }
         });
     }