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.
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);
}
});
}