From: Dan Scott Date: Thu, 20 Jun 2013 16:55:30 +0000 (-0400) Subject: Quick delete UI X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=20cf6419db684ae4a96b59e456b929704f9971cc;p=contrib%2FConifer.git Quick delete UI For mass deletion efforts, go to http://hostname/eg/cat/moveto/delete in a web browser and start scanning barcodes. Each barcode will be deleted immediately. Note that call numbers and bib records will not be deleted if the copy was the last one, but the records will no longer show up in search results for regular patrons... and one could always follow up with a clean up SQL job to delete call numbers and records where appropriate. Signed-off-by: Dan Scott --- diff --git a/Open-ILS/src/templates/cat/moveto/delete.tt2 b/Open-ILS/src/templates/cat/moveto/delete.tt2 new file mode 100644 index 0000000000..373ec8ad83 --- /dev/null +++ b/Open-ILS/src/templates/cat/moveto/delete.tt2 @@ -0,0 +1,30 @@ +[% ctx.page_title = 'Delete item' %] +[% WRAPPER base.tt2 %] + + + + +

Delete item

+ +
+ + + + + +
+
+ +
+ +[% END %] + + diff --git a/Open-ILS/web/js/ui/default/cat/moveto/delete.js b/Open-ILS/web/js/ui/default/cat/moveto/delete.js new file mode 100644 index 0000000000..205352ab7b --- /dev/null +++ b/Open-ILS/web/js/ui/default/cat/moveto/delete.js @@ -0,0 +1,90 @@ +dojo.require('fieldmapper.IDL'); +dojo.require('openils.PermaCrud'); +dojo.require('dojo.date'); +dojo.require('openils.CGI'); +dojo.require('openils.XUL'); + +var pcrud; +var pcrudReader; +var staff; +var copy; +var volume; +var record; +var rmsr; +var tbody; +var cgi; + +if(!window.xulG) var xulG = null; + +function load() { + staff = new openils.User().user; + pcrud = new openils.PermaCrud(); + pcrudReader = new openils.PermaCrud(); + cgi = new openils.CGI(); + var barcode = cgi.param('barcode'); + + if(xulG) { + if(xulG.ses) openils.User.authtoken = xulG.ses; + if(xulG.usr !== null) userId = xulG.usr + if(xulG.params) { + var parms = xulG.params; + if(parms.ses) + openils.User.authtoken = parms.ses; + if(parms.usr !== null) + userId = parms.usr + } + } + + dojo.byId("barcode").focus(); + moveCopy(barcode); +} + +function moveCopy(barcode) { + if (!barcode) { + // Just display the barcode entry form + return; + } +/* + copy = fieldmapper.standardRequest( + ['open-ils.search', 'open-ils.search.asset.copy.find_by_barcode'], + {params: [barcode]} + ); +*/ + /* Get rid of non-numeric barcode characters - probably need to configure the cheapo scanner */ + barcode = barcode.replace(/[^0-9]/g, ''); + copy = pcrud.search('acp', {"barcode":barcode}); + // There can be only one copy + copy = copy[0]; + if (!copy.location) { + dojo.place('
Barcode [' + barcode + '] was not found!
', 'resultsDiv', 'only'); + return; + } + copy.deleted(true); + copy.ischanged(true); + copy.isdeleted(true); + pcrud.update(copy); + + volume = pcrudReader.retrieve("acn", copy.call_number()); + record = pcrudReader.retrieve("bre", volume.record()); + dojo.place("
" + copy.barcode() + "
", 'resultsDiv', 'only'); + dojo.place("
" + volume.label() + "
", 'resultsDiv', 'last'); + dojo.place("
" + record.marc() + "
", dojo.body(), 'last'); + dojo.place("
", 'resultsDiv', 'last'); + dojo.query("datafield[tag='245'] subfield").forEach(function(node, index, arr) { + dojo.place("" + node.innerHTML + " ", 'titleDiv', 'last'); + }); +} + +function moveCopyRefresh() { + var usr = cgi.param('barcode'); + var href = location.href.replace(/\?.*/, ''); + href += ((usr) ? '?barcode=' + barcode : ''); + location.href = href; +} + +function moveCopyRefreshXUL(newuser) { + if (window.xulG && typeof window.xulG.on_save == 'function') + window.xulG.on_save(newuser); +} + +openils.Util.addOnLoad(load);